Boost logo

Boost-Commit :

From: john_at_[hidden]
Date: 2007-10-09 13:25:34


Author: johnmaddock
Date: 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
New Revision: 39852
URL: http://svn.boost.org/trac/boost/changeset/39852

Log:
Added refactored docs for existing Boost.Math libraries.
Added:
   trunk/libs/math/doc/octonion/
   trunk/libs/math/doc/octonion/Jamfile.v2 (contents, props changed)
   trunk/libs/math/doc/octonion/html/
   trunk/libs/math/doc/octonion/html/boost_octonions/
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/history.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html (contents, props changed)
   trunk/libs/math/doc/octonion/html/index.html (contents, props changed)
   trunk/libs/math/doc/octonion/math-octonion.qbk (contents, props changed)
   trunk/libs/math/doc/quaternion/
   trunk/libs/math/doc/quaternion/Jamfile.v2 (contents, props changed)
   trunk/libs/math/doc/quaternion/html/
   trunk/libs/math/doc/quaternion/html/boost_quaternions/
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html (contents, props changed)
   trunk/libs/math/doc/quaternion/html/index.html (contents, props changed)
   trunk/libs/math/doc/quaternion/math-quaternion.qbk (contents, props changed)
   trunk/libs/math/doc/svg-admon/
      - copied from r39833, /trunk/libs/math/doc/sf_and_dist/svg-admon/
Removed:
   trunk/libs/math/doc/sf_and_dist/svg-admon/
Text files modified:
   trunk/libs/math/doc/sf_and_dist/Jamfile.v2 | 3 ++-
   1 files changed, 2 insertions(+), 1 deletions(-)

Added: trunk/libs/math/doc/octonion/Jamfile.v2
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/Jamfile.v2 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,74 @@
+
+# Copyright John Maddock 2005. Use, modification, and distribution are
+# subject to 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)
+
+using quickbook ;
+
+path-constant images_location : html ;
+
+xml octonion : math-octonion.qbk ;
+boostbook standalone
+ :
+ octonion
+ :
+ # Path for links to Boost:
+ <xsl:param>boost.root=../../../../..
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../../../libs/libraries.htm
+ # Use the main Boost stylesheet:
+ <xsl:param>html.stylesheet=../../../../../doc/html/boostbook.css
+
+ # Some general style settings:
+ <xsl:param>table.footnote.number.format=1
+ <xsl:param>footnote.number.format=1
+
+ # HTML options first:
+ # Use graphics not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=10
+ # Don't put the first section on the same page as the TOC:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=10
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=4
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+ #<xsl:param>root.filename="sf_dist_and_tools"
+
+ # PDF Options:
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ # <xsl:param>fop1.extensions=1
+ <format>pdf:<xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <format>pdf:<xsl:param>fop.extensions=0
+ # No indent on body text:
+ <format>pdf:<xsl:param>body.start.indent=0pt
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.outer=0.5in
+ # Paper type = A4
+ <format>pdf:<xsl:param>paper.type=A4
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/
+ <format>pdf:<xsl:param>admon.graphics.path=$(images_location)/../../svg-admon/
+ ;
+
+
+
+
+
+
+
+
+

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonions</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Boost.Octonions">
+<link rel="up" href="../index.html" title="Boost.Octonions">
+<link rel="prev" href="../index.html" title="Boost.Octonions">
+<link rel="next" href="octonions/overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonions/overview.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_octonions.octonions"></a>Octonions
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section"><a href="octonions/template_class_octonion.html">Template
+ Class octonion</a></span></dt>
+<dt><span class="section"><a href="octonions/octonion_specializations.html">Octonion
+ Specializations</a></span></dt>
+<dt><span class="section"><a href="octonions/octonion_member_typedefs.html">Octonion
+ Member Typedefs</a></span></dt>
+<dt><span class="section"><a href="octonions/octonion_member_functions.html">Octonion
+ Member Functions</a></span></dt>
+<dt><span class="section"><a href="octonions/non_mem.html"> Octonion Non-Member
+ Operators</a></span></dt>
+<dt><span class="section"><a href="octonions/octonion_value_operations.html">Octonion
+ Value Operations</a></span></dt>
+<dt><span class="section"><a href="octonions/oct_create.html"> Octonion Creation
+ Functions</a></span></dt>
+<dt><span class="section"><a href="octonions/octonions_transcendentals.html">Octonions
+ Transcendentals</a></span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonions/overview.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="test_program.html" title="Test Program">
+<link rel="next" href="history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test_program.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.acknowledgements"></a>Acknowledgements
+</h3></div></div></div>
+<p>
+ The mathematical text has been typeset with <a href="http://www.nisus-soft.com/" target="_top">Nisus
+ Writer</a>. Jens Maurer has helped with portability and standard adherence,
+ and was the Review Manager for this library. More acknowledgements in the
+ History section. Thank you to all who contributed to the discussion about
+ this library.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test_program.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header File</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="overview.html" title="Overview">
+<link rel="next" href="synopsis.html" title="Synopsis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.header_file"></a>Header File
+</h3></div></div></div>
+<p>
+ The interface and implementation are both supplied by the header file octonion.hpp.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/history.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/history.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>History</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
+<link rel="next" href="to_do.html" title="To Do">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_do.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.history"></a>History
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+ </li>
+<li>
+ 1.5.7 - 25/02/2003: transitionned to the unit test framework; &lt;boost/config.hpp&gt;
+ now included by the library header (rather than the test files), via &lt;boost/math/quaternion.hpp&gt;.
+ </li>
+<li>
+ 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis
+ Evlogimenos (alkis_at_[hidden]).
+ </li>
+<li>
+ 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens
+ (michael_at_[hidden]); requires the /Za compiler option.
+ </li>
+<li>
+ 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different
+ translation units); attempt at an improved compatibility with Microsoft
+ compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist;
+ other compatibility fixes.
+ </li>
+<li>
+ 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor
+ (gregod_at_[hidden]).
+ </li>
+<li>
+ 1.5.2 - 07/07/2001: introduced namespace math.
+ </li>
+<li>
+ 1.5.1 - 07/06/2001: (end of Boost review) now includes &lt;boost/math/special_functions/sinc.hpp&gt;
+ and &lt;boost/math/special_functions/sinhc.hpp&gt; instead of &lt;boost/special_functions.hpp&gt;;
+ corrected bug in sin (Daryle Walker); removed check for self-assignment
+ (Gary Powel); made converting functions explicit (Gary Powel); added overflow
+ guards for division operators and abs (Peter Schmitteckert); added sup
+ and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+ </li>
+<li>
+ 1.5.0 - 23/03/2001: boostification, inlining of all operators except input,
+ output and pow, fixed exception safety of some members (template version).
+ </li>
+<li>
+ 1.4.0 - 09/01/2001: added tan and tanh.
+ </li>
+<li>
+ 1.3.1 - 08/01/2001: cosmetic fixes.
+ </li>
+<li>
+ 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden])
+ algorithm.
+ </li>
+<li>
+ 1.2.0 - 25/05/2000: fixed the division operators and output; changed many
+ signatures.
+ </li>
+<li>
+ 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+ </li>
+<li>
+ 1.0.0 - 10/08/1999: first public version.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_do.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,228 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Non-Member Operators</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="octonion_member_functions.html" title="Octonion Member Functions">
+<link rel="next" href="octonion_value_operations.html" title="Octonion Value Operations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_member_functions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_value_operations.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.non_mem"></a><a href="non_mem.html" title="Octonion Non-Member Operators"> Octonion Non-Member
+ Operators</a>
+</h3></div></div></div>
+<a name="boost_octonions.octonions.non_mem.unary_plus_and_minus_operators"></a><h5>
+<a name="id523231"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.unary_plus_and_minus_operators">Unary
+ Plus and Minus Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator simply returns o.
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator returns the opposite of o.
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_addition_operators"></a><h5>
+<a name="id523503"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_addition_operators">Binary
+ Addition Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="speci
al">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_subtraction_operators"></a><h5>
+<a name="id524723"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_subtraction_operators">Binary
+ Subtraction Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="speci
al">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">-=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_multiplication_operators"></a><h5>
+<a name="id525943"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_multiplication_operators">Binary
+ Multiplication Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="speci
al">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">*=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_division_operators"></a><h5>
+<a name="id527164"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_division_operators">Binary
+ Division Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special
">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="speci
al">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">/=</span>
+ <span class="identifier">rhs</span></code>. It is of course still an error
+ to divide by zero...
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_equality_operators"></a><h5>
+<a name="id528383"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_equality_operators">Binary
+ Equality Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);
</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if the four components of <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span></code> are
+ equal to their counterparts in <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">)</span></code>. As
+ with any floating-type entity, this is essentially meaningless.
+ </p>
+<a name="boost_octonions.octonions.non_mem.binary_inequality_operators"></a><h5>
+<a name="id529521"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_inequality_operators">Binary
+ Inequality Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);
</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if <code class="computeroutput"><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">)</span></code> is
+ false. As with any floating-type entity, this is essentially meaningless.
+ </p>
+<a name="boost_octonions.octonions.non_mem.stream_extractor"></a><h5>
+<a name="id530662"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.stream_extractor">Stream
+ Extractor</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&gt;&gt;</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span c
lass="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Extracts an octonion <code class="computeroutput"><span class="identifier">o</span></code>. We
+ accept any format which seems reasonable. However, since this leads to a
+ great many ambiguities, decisions were made to lift these. In case of doubt,
+ stick to lists of reals.
+ </p>
+<p>
+ The input values must be convertible to T. If bad input is encountered, calls
+ <code class="computeroutput"><span class="identifier">is</span><span class="special">.</span><span class="identifier">setstate</span><span class="special">(</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failbit</span><span class="special">)</span></code> (which may throw <code class="computeroutput"><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failure</span></code>
+ (27.4.5.3)).
+ </p>
+<p>
+ Returns <code class="computeroutput"><span class="identifier">is</span></code>.
+ </p>
+<a name="boost_octonions.octonions.non_mem.stream_inserter"></a><h5>
+<a name="id531028"></a>
+ <a href="non_mem.html#boost_octonions.octonions.non_mem.stream_inserter">Stream
+ Inserter</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span c
lass="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Inserts the octonion <code class="computeroutput"><span class="identifier">o</span></code> onto
+ the stream <code class="computeroutput"><span class="identifier">os</span></code> as if it were
+ implemented as follows:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostringstream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="identifier">s</span><span class="special">;</span>
+
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">flags</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">getloc</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">());</span>
+
+ <span class="identifier">s</span> <span class="special">&lt;&lt;</span> <span class="char">'('</span> <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_2</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_3</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_5</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_6</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_7</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">')'</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="identifier">os</span> <span class="special">&lt;&lt;</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_member_functions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_value_operations.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Creation Functions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="octonion_value_operations.html" title="Octonion Value Operations">
+<link rel="next" href="octonions_transcendentals.html" title="Octonions Transcendentals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_value_operations.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonions_transcendentals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.oct_create"></a><a href="oct_create.html" title="Octonion Creation Functions"> Octonion Creation
+ Functions</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">spherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identi
fier">phi2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi6</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">multipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="ide
ntifier">theta2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta4</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cylindrical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifi
er">h2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h6</span><span class="special">);</span>
+</pre>
+<p>
+ These build octonions in a way similar to the way polar builds complex numbers,
+ as there is no strict equivalent to polar coordinates for octonions.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">spherical</span></code> is a simple transposition
+ of <code class="computeroutput"><span class="identifier">polar</span></code>, it takes as inputs
+ a (positive) magnitude and a point on the hypersphere, given by three angles.
+ The first of these, <span class="emphasis"><em>theta</em></span> has a natural range of -pi
+ to +pi, and the other two have natural ranges of -pi/2 to +pi/2 (as is the
+ case with the usual spherical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>).
+ Due to the many symmetries and periodicities, nothing untoward happens if
+ the magnitude is negative or the angles are outside their natural ranges.
+ The expected degeneracies (a magnitude of zero ignores the angles settings...)
+ do happen however.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">cylindrical</span></code> is likewise a
+ simple transposition of the usual cylindrical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>, which in turn is another derivative of
+ planar polar coordinates. The first two inputs are the polar coordinates
+ of the first <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> component
+ of the octonion. The third and fourth inputs are placed into the third and
+ fourth <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span> components
+ of the octonion, respectively.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">multipolar</span></code> is yet another
+ simple generalization of polar coordinates. This time, both <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> components of the octonion are given
+ in polar coordinates.
+ </p>
+<p>
+ In this version of our implementation of octonions, there is no analogue
+ of the complex value operation arg as the situation is somewhat more complicated.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_value_operations.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonions_transcendentals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,269 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Member Functions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="octonion_member_typedefs.html" title="Octonion Member Typedefs">
+<link rel="next" href="non_mem.html" title="Octonion Non-Member Operators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_member_typedefs.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_mem.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.octonion_member_functions"></a><a href="octonion_member_functions.html" title="Octonion Member Functions">Octonion
+ Member Functions</a>
+</h3></div></div></div>
+<a name="boost_octonions.octonions.octonion_member_functions.constructors"></a><h4>
+<a name="id515499"></a>
+ Constructors
+ </h4>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span>
 <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="identifier">T</span><span cla
ss="special">());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</sp
an><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span>
<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier"
>boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <spa
n class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">)
;</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float<
/span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z3</span> <span class="special">=</
span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identifie
r">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <sp
an class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">)
;</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">doub
le</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z3</span> <span class="specia
l">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <span class="special">=</span> <span class="special">::</span><span class="identif
ier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span cla
ss="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special"
>,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span>
<span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;
</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <span class="s
pecial">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">octonion</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ A default constructor is provided for each form, which initializes each component
+ to the default values for their type (i.e. zero for floating numbers). This
+ constructor can also accept one to eight base type arguments. A constructor
+ is also provided to build octonions from one to four complex numbers sharing
+ the same base type, and another taking one or two quaternions sharing the
+ same base type. The unspecialized template also sports a templarized copy
+ constructor, while the specialized forms have copy constructors from the
+ other two specializations, which are explicit when a risk of precision loss
+ exists. For the unspecialized form, the base type's constructors must not
+ throw.
+ </p>
+<p>
+ Destructors and untemplated copy constructors (from the same type) are provided
+ by the compiler. Converting copy constructors make use of a templated helper
+ function in a "detail" subnamespace.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.other_member_functions"></a><h4>
+<a name="id519857"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.other_member_functions">Other
+ member functions</a>
+ </h4>
+<a name="boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts"></a><h5>
+<a name="id519882"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts">Real
+ and Unreal Parts</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">T</span> <span class="identifier">real</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">unreal</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Like complex number, octonions do have a meaningful notion of "real
+ part", but unlike them there is no meaningful notion of "imaginary
+ part". Instead there is an "unreal part" which itself is a
+ octonion, and usually nothing simpler (as opposed to the complex number case).
+ These are returned by the first two functions.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.individual_real_components"></a><h5>
+<a name="id519990"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_real_components">Individual
+ Real Components</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">T</span> <span class="identifier">R_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_5</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_6</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_7</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_8</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A octonion having eight real components, these are returned by these eight
+ functions. Hence real and R_component_1 return the same value.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.individual_complex_components"></a><h5>
+<a name="id520256"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_complex_components">Individual
+ Complex Components</a>
+ </h5>
+<pre class="programlisting">
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A octonion likewise has four complex components. Actually, octonions are
+ indeed a (left) vector field over the complexes, but beware, as for any octonion
+ <span class="emphasis"><em><code class="literal">o = &#945; + &#946;i + &#947;j + &#948;k + &#949;e' + &#950;i' + &#951;j' + &#952;k'</code></em></span> we also have <span class="emphasis"><em><code class="literal">o
+ = (&#945; + &#946;i) + (&#947; + &#948;i)j + (&#949; + &#950;i)e' + (&#951; - &#952;i)j'</code></em></span> (note the <span class="bold"><strong>minus</strong></span>
+ sign in the last factor). What the C_component_n functions return, however,
+ are the complexes which could be used to build the octonion using the constructor,
+ and <span class="bold"><strong>not</strong></span> the components of the octonion on
+ the basis <span class="emphasis"><em><code class="literal">(1, j, e', j')</code></em></span>.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.individual_quaternion_components"></a><h5>
+<a name="id520567"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_quaternion_components">Individual
+ Quaternion Components</a>
+ </h5>
+<pre class="programlisting">
+<span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">H_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">H_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Likewise, for any octonion <span class="emphasis"><em><code class="literal">o = &#945; + &#946;i + &#947;j + &#948;k + &#949;e' + &#950;i' + &#951;j' + &#952;k'</code></em></span> we
+ also have <span class="emphasis"><em><code class="literal">o = (&#945; + &#946;i + &#947;j + &#948;k) + (&#949; + &#950;i + &#951;j - &#952;j)e'</code></em></span>, though there is
+ no meaningful vector-space-like structure based on the quaternions. What
+ the H_component_n functions return are the quaternions which could be used
+ to build the octonion using the constructor.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.octonion_member_operators"></a><h4>
+<a name="id520761"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.octonion_member_operators">Octonion
+ Member Operators</a>
+ </h4>
+<a name="boost_octonions.octonions.octonion_member_functions.assignment_operators"></a><h5>
+<a name="id520786"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.assignment_operators">Assignment
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the expected assignment, with type modification if necessary
+ (for instance, assigning from a base type will set the real part to that
+ value, and all other components to zero). For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<a name="boost_octonions.octonions.octonion_member_functions.other_member_operators"></a><h5>
+<a name="id521317"></a>
+ <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.other_member_operators">Other
+ Member Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)+</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms
+ do not, so as to insure exception safety. For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<pre class="programlisting">
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)-</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms
+ do not, so as to insure exception safety. For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<pre class="programlisting">
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">rhs</span></code>
+ in this order (order is important as multiplication is not commutative for
+ octonions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception
+ guards, which the specialized forms do not, so as to insure exception safety.
+ For the unspecialized form, the base type's assignment operators must not
+ throw. Also, for clarity's sake, you should always group the factors in a
+ multiplication by groups of two, as the multiplication is not even associative
+ on the octonions (though there are of course cases where this does not matter,
+ it usually does).
+ </p>
+<pre class="programlisting">
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">inverse_of</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>
+ in this order (order is important as multiplication is not commutative for
+ octonions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The unspecialized form has exception
+ guards, which the specialized forms do not, so as to insure exception safety.
+ For the unspecialized form, the base type's assignment operators must not
+ throw. As for the multiplication, remember to group any two factors using
+ parenthesis.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_member_typedefs.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_mem.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Member Typedefs</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="octonion_specializations.html" title="Octonion Specializations">
+<link rel="next" href="octonion_member_functions.html" title="Octonion Member Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_specializations.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_member_functions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.octonion_member_typedefs"></a><a href="octonion_member_typedefs.html" title="Octonion Member Typedefs">Octonion
+ Member Typedefs</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>value_type</strong></span>
+ </p>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ These provide easy acces to the type the template is built upon.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonion_specializations.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_member_functions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,243 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Specializations</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="template_class_octonion.html" title="Template Class octonion">
+<link rel="next" href="octonion_member_typedefs.html" title="Octonion Member Typedefs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="template_class_octonion.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_member_typedefs.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.octonion_specializations"></a><a href="octonion_specializations.html" title="Octonion Specializations">Octonion
+ Specializations</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span
> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span
 class="special">=</span> <span class="number">0.0f</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identi
fier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="s
pecial">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <sp
an class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">float</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">float</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_5<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_6<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_7<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_8<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> H_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> H_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="boost_octonions.octonion_double"></a><p>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</spa
n> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <spa
n class="special">=</span> <span class="number">0.0</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="iden
tifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span cl
ass="special">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <
span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">double</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">double</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_5<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_6<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_7<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_8<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> H_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> H_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="boost_octonions.octonion_long_double"></a><p>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</spa
n> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <s
pan class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="sp
ecial">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="s
pecial">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span c
lass="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_5<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_6<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_7<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_8<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> H_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> H_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="template_class_octonion.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_member_typedefs.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonion Value Operations</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="non_mem.html" title="Octonion Non-Member Operators">
+<link rel="next" href="oct_create.html" title="Octonion Creation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_mem.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="oct_create.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.octonion_value_operations"></a><a href="octonion_value_operations.html" title="Octonion Value Operations">Octonion
+ Value Operations</a>
+</h3></div></div></div>
+<a name="boost_octonions.octonions.octonion_value_operations.real_and_unreal"></a><h5>
+<a name="id532168"></a>
+ <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.real_and_unreal">Real
+ and Unreal</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">real</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">unreal</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ These return <code class="computeroutput"><span class="identifier">o</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">o</span><span class="special">.</span><span class="identifier">unreal</span><span class="special">()</span></code>
+ respectively.
+ </p>
+<a name="boost_octonions.octonions.octonion_value_operations.conj"></a><h5>
+<a name="id532450"></a>
+ conj
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This returns the conjugate of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonion_value_operations.sup"></a><h5>
+<a name="id532590"></a>
+ sup
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">sup</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">()))</span></code> of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonion_value_operations.l1"></a><h5>
+<a name="id532780"></a>
+ l1
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the l1 norm (<code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">())</span></code>) of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonion_value_operations.abs"></a><h5>
+<a name="id532969"></a>
+ abs
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the magnitude (Euclidian norm) of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonion_value_operations.norm"></a><h5>
+<a name="id533091"></a>
+ norm
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ This return the (Cayley) norm of the octonion. The term "norm"
+ might be confusing, as most people associate it with the Euclidian norm (and
+ quadratic functionals). For this version of (the mathematical objects known
+ as) octonions, the Euclidian norm (also known as magnitude) is the square
+ root of the Cayley norm.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_mem.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="oct_create.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,153 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Octonions Transcendentals</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="oct_create.html" title="Octonion Creation Functions">
+<link rel="next" href="test_program.html" title="Test Program">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="oct_create.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test_program.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.octonions_transcendentals"></a><a href="octonions_transcendentals.html" title="Octonions Transcendentals">Octonions
+ Transcendentals</a>
+</h3></div></div></div>
+<p>
+ There is no <code class="computeroutput"><span class="identifier">log</span></code> or <code class="computeroutput"><span class="identifier">sqrt</span></code> provided for octonions in this implementation,
+ and <code class="computeroutput"><span class="identifier">pow</span></code> is likewise restricted
+ to integral powers of the exponent. There are several reasons to this: on
+ the one hand, the equivalent of analytic continuation for octonions ("branch
+ cuts") remains to be investigated thoroughly (by me, at any rate...),
+ and we wish to avoid the nonsense introduced in the standard by exponentiations
+ of complexes by complexes (which is well defined, but not in the standard...).
+ Talking of nonsense, saying that <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span></code> is "implementation
+ defined" is just plain brain-dead...
+ </p>
+<p>
+ We do, however provide several transcendentals, chief among which is the
+ exponential. That it allows for a "closed formula" is a result
+ of the author (the existence and definition of the exponential, on the octonions
+ among others, on the other hand, is a few centuries old). Basically, any
+ converging power series with real coefficients which allows for a closed
+ formula in <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> can be
+ transposed to <span class="emphasis"><em><span class="bold"><strong>O</strong></span></em></span>. More
+ transcendentals of this type could be added in a further revision upon request.
+ It should be noted that it is these functions which force the dependency
+ upon the boost/math/special_functions/sinc.hpp
+ and the boost/math/special_functions/sinhc.hpp
+ headers.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.exp"></a><h5>
+<a name="id534408"></a>
+ exp
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the exponential of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.cos"></a><h5>
+<a name="id534546"></a>
+ cos
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cos</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the cosine of the octonion
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.sin"></a><h5>
+<a name="id534685"></a>
+ sin
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the sine of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.tan"></a><h5>
+<a name="id534824"></a>
+ tan
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the tangent of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.cosh"></a><h5>
+<a name="id534961"></a>
+ cosh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cosh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic cosine of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.sinh"></a><h5>
+<a name="id535101"></a>
+ sinh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic sine of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.tanh"></a><h5>
+<a name="id535241"></a>
+ tanh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tanh</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic tangent of the octonion.
+ </p>
+<a name="boost_octonions.octonions.octonions_transcendentals.pow"></a><h5>
+<a name="id535382"></a>
+ pow
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the n-th power of the octonion q.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="oct_create.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test_program.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Overview</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="../octonions.html" title="Octonions">
+<link rel="next" href="header_file.html" title="Header File">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../octonions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="header_file.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.overview"></a>Overview
+</h3></div></div></div>
+<p>
+ Octonions, like quaternions,
+ are a relative of complex numbers.
+ </p>
+<p>
+ Octonions see some use in theoretical physics.
+ </p>
+<p>
+ In practical terms, an octonion is simply an octuple of real numbers (&#945;,&#946;,&#947;,&#948;,&#949;,&#950;,&#951;,&#952;),
+ which we can write in the form <span class="emphasis"><em><code class="literal">o = &#945; + &#946;i + &#947;j + &#948;k + &#949;e' + &#950;i' + &#951;j' + &#952;k'</code></em></span>,
+ where <span class="emphasis"><em><code class="literal">i</code></em></span>, <span class="emphasis"><em><code class="literal">j</code></em></span>
+ and <span class="emphasis"><em><code class="literal">k</code></em></span> are the same objects as for
+ quaternions, and <span class="emphasis"><em><code class="literal">e'</code></em></span>, <span class="emphasis"><em><code class="literal">i'</code></em></span>,
+ <span class="emphasis"><em><code class="literal">j'</code></em></span> and <span class="emphasis"><em><code class="literal">k'</code></em></span>
+ are distinct objects which play essentially the same kind of role as <span class="emphasis"><em><code class="literal">i</code></em></span>
+ (or <span class="emphasis"><em><code class="literal">j</code></em></span> or <span class="emphasis"><em><code class="literal">k</code></em></span>).
+ </p>
+<p>
+ Addition and a multiplication is defined on the set of octonions, which generalize
+ their quaternionic counterparts. The main novelty this time is that <span class="bold"><strong>the multiplication is not only not commutative, is now not even
+ associative</strong></span> (i.e. there are quaternions <span class="emphasis"><em><code class="literal">x</code></em></span>,
+ <span class="emphasis"><em><code class="literal">y</code></em></span> and <span class="emphasis"><em><code class="literal">z</code></em></span>
+ such that <span class="emphasis"><em><code class="literal">x(yz) &#8800; (xy)z</code></em></span>). A way of
+ remembering things is by using the following multiplication table:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../../octonion/graphics/octonion_blurb17.jpeg" alt="octonion_blurb17"></span>
+ </p>
+<p>
+ Octonions (and their kin) are described in far more details in this other
+ document (with <a href="../../../../../quaternion/TQE_EA.pdf" target="_top">errata
+ and addenda</a>).
+ </p>
+<p>
+ Some traditional constructs, such as the exponential, carry over without
+ too much change into the realms of octonions, but other, such as taking a
+ square root, do not (the fact that the exponential has a closed form is a
+ result of the author, but the fact that the exponential exists at all for
+ octonions is known since quite a long time ago).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../octonions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="header_file.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,135 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Synopsis</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="header_file.html" title="Header File">
+<link rel="next" href="template_class_octonion.html" title="Template Class octonion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="header_file.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="template_class_octonion.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.synopsis"></a>Synopsis
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> octonion<span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> octonion<float><span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> octonion<double><span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> octonion<long double><span class="special">;</span>
+
+<span class="comment">// operators
+</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</spa
n> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</s
pan> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier
">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</
span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword"
>const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;
</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identif
ier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp
;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keywo
rd">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&
gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r
hs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</spa
n> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">co
nst</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</s
pan> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);
</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</
span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">
);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs
</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator >> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">
&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator << <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">c
onst</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="comment">// values
+</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> real<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> unreal<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> sup<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> l1<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> abs<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> norm<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> conj<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> spherical<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special
">&amp;</span> <span class="identifier">phi2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi6</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> multipolar<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="spec
ial">&amp;</span> <span class="identifier">theta2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta4</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cylindrical<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">
&amp;</span> <span class="identifier">h2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h3</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h4</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h5</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h6</span><span class="special">);</span>
+
+<span class="comment">// transcendentals
+</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> exp<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cos<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> sin<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> tan<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cosh<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> sinh<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> tanh<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> pow<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="header_file.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="template_class_octonion.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Template Class octonion</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="synopsis.html" title="Synopsis">
+<link rel="next" href="octonion_specializations.html" title="Octonion Specializations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synopsis.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_specializations.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.template_class_octonion"></a><a href="template_class_octonion.html" title="Template Class octonion">Template
+ Class octonion</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">octonion</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;<
/span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_e</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_f</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_g</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_h
</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifi
er">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z2</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(),</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special
">&amp;</span> <span class="identifier">z3</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q1</span> <span
 class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> octonion<span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="identifier">T</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">T</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_5<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_6<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_7<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_8<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> H_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> H_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator = <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator += <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator -= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator *= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> operator /= <span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespaces
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synopsis.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="octonion_specializations.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test Program</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="octonions_transcendentals.html" title="Octonions Transcendentals">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonions_transcendentals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.test_program"></a>Test Program
+</h3></div></div></div>
+<p>
+ The octonion_test.cpp
+ test program tests octonions specialisations for float, double and long double
+ (sample output).
+ </p>
+<p>
+ If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional
+ output (verbose output);
+ this will only be helpfull if you enable message output at the same time,
+ of course (by uncommenting the relevant line in the test or by adding --log_level=messages
+ to your command line,...). In that case, and if you are running interactively,
+ you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR
+ to interactively test the input operator with input of your choice from the
+ standard input (instead of hard-coding it in the test).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="octonions_transcendentals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>To Do</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Octonions">
+<link rel="up" href="../octonions.html" title="Octonions">
+<link rel="prev" href="history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_octonions.octonions.to_do"></a>To Do
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Improve testing.
+ </li>
+<li>
+ Rewrite input operatore using Spirit (creates a dependency).
+ </li>
+<li>
+ Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../octonions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/html/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/html/index.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,78 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.Octonions</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="index.html" title="Boost.Octonions">
+<link rel="next" href="boost_octonions/octonions.html" title="Octonions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_octonions/octonions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="article" lang="en">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="boost_octonions"></a>Boost.Octonions</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Hubert</span> <span class="surname">Holin</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2001 -2003 Hubert Holin</p></div>
+<div><div class="legalnotice">
+<a name="id489767"></a><p>
+ 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)
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Octonions</span></dt>
+<dd><dl>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/template_class_octonion.html">Template
+ Class octonion</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/octonion_specializations.html">Octonion
+ Specializations</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/octonion_member_typedefs.html">Octonion
+ Member Typedefs</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/octonion_member_functions.html">Octonion
+ Member Functions</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/non_mem.html"> Octonion Non-Member
+ Operators</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/octonion_value_operations.html">Octonion
+ Value Operations</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/oct_create.html"> Octonion Creation
+ Functions</a></span></dt>
+<dt><span class="section"><a href="boost_octonions/octonions/octonions_transcendentals.html">Octonions
+ Transcendentals</a></span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 29, 2006 at 11:08:32 +0000</small></p></td>
+<td align="right"><small></small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_octonions/octonions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: trunk/libs/math/doc/octonion/math-octonion.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/octonion/math-octonion.qbk 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,1005 @@
+[article Boost.Octonions
+ [quickbook 1.3]
+ [copyright 2001-2003 Hubert Holin]
+ [purpose Octonions]
+ [license
+ 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 http://www.boost.org/LICENSE_1_0.txt])
+ ]
+ [authors [Holin, Hubert]]
+ [category math]
+ [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $]
+]
+
+[def __R ['[*R]]]
+[def __C ['[*C]]]
+[def __H ['[*H]]]
+[def __O ['[*O]]]
+[def __R3 ['[*'''R<superscript>3</superscript>''']]]
+[def __R4 ['[*'''R<superscript>4</superscript>''']]]
+[def __octulple ('''&#x03B1;,&#x03B2;,&#x03B3;,&#x03B4;,&#x03B5;,&#x03B6;,&#x03B7;,&#x03B8;''')]
+[def __oct_formula ['[^o = '''&#x03B1; + &#x03B2;i + &#x03B3;j + &#x03B4;k + &#x03B5;e' + &#x03B6;i' + &#x03B7;j' + &#x03B8;k' ''']]]
+[def __oct_complex_formula ['[^o = ('''&#x03B1; + &#x03B2;i) + (&#x03B3; + &#x03B4;i)j + (&#x03B5; + &#x03B6;i)e' + (&#x03B7; - &#x03B8;i)j' ''']]]
+[def __oct_quat_formula ['[^o = ('''&#x03B1; + &#x03B2;i + &#x03B3;j + &#x03B4;k) + (&#x03B5; + &#x03B6;i + &#x03B7;j - &#x03B8;j)e' ''']]]
+[def __oct_not_equal ['[^x(yz) '''&#x2260;''' (xy)z]]]
+
+[def __asinh [link boost_quaternions.math_special_functions.asinh asinh]]
+[def __acosh [link boost_quaternions.math_special_functions.acosh acosh]]
+[def __atanh [link boost_quaternions.math_special_functions.atanh atanh]]
+[def __sinc_pi [link boost_quaternions.math_special_functions.sinc_pi sinc_pi]]
+[def __sinhc_pi [link boost_quaternions.math_special_functions.sinhc_pi sinhc_pi]]
+
+[def __log1p [link boost_quaternions.math_special_functions.log1p log1p]]
+[def __expm1 [link boost_quaternions.math_special_functions.expm1 expm1]]
+[def __hypot [link boost_quaternions.math_special_functions.hypot hypot]]
+
+[section Octonions]
+
+[section Overview]
+
+Octonions, like [@../../quaternions/html/index.html quaternions], are a relative of complex numbers.
+
+Octonions see some use in theoretical physics.
+
+In practical terms, an octonion is simply an octuple of real numbers __octulple,
+which we can write in the form __oct_formula, where ['[^i]], ['[^j]] and ['[^k]]
+are the same objects as for quaternions, and ['[^e']], ['[^i']], ['[^j']] and ['[^k']]
+are distinct objects which play essentially the same kind of role as ['[^i]] (or ['[^j]] or ['[^k]]).
+
+Addition and a multiplication is defined on the set of octonions,
+which generalize their quaternionic counterparts. The main novelty this time
+is that [*the multiplication is not only not commutative, is now not even
+associative] (i.e. there are quaternions ['[^x]], ['[^y]] and ['[^z]] such that __oct_not_equal).
+A way of remembering things is by using the following multiplication table:
+
+[$../../../octonion/graphics/octonion_blurb17.jpeg]
+
+Octonions (and their kin) are described in far more details in this other
+[@../../../quaternion/TQE.pdf document]
+(with [@../../../quaternion/TQE_EA.pdf errata and addenda]).
+
+Some traditional constructs, such as the exponential, carry over without too
+much change into the realms of octonions, but other, such as taking a square root,
+do not (the fact that the exponential has a closed form is a result of the
+author, but the fact that the exponential exists at all for octonions is known
+since quite a long time ago).
+
+[endsect]
+
+[section Header File]
+
+The interface and implementation are both supplied by the header file
+[@../../../../../boost/math/octonion.hpp octonion.hpp].
+
+[endsect]
+
+[section Synopsis]
+
+ namespace boost{ namespace math{
+
+ template<typename T> class ``[link boost_octonions.octonions.template_class_octonion octonion]``;
+ template<> class ``[link boost_octonions.octonions.octonion_specializations octonion<float>]``;
+ template<> class ``[link boost_octonions.octonion_double octonion<double>]``;
+ template<> class ``[link boost_octonions.octonion_long_double octonion<long double>]``;
+
+ // operators
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator +]`` (octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator -]`` (octonion<T> const & o);
+
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (T const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, T const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, octonion<T> const & rhs);
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_istream<charT,traits> & ``[link boost_octonions.octonions.non_mem.stream_extractor operator >>]`` (::std::basic_istream<charT,traits> & is, octonion<T> & o);
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits> & ``[link boost_octonions.octonions.non_mem.stream_inserter operator <<]`` (::std::basic_ostream<charT,traits> & os, octonion<T> const & o);
+
+ // values
+
+ template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal real]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal unreal]``(octonion<T> const & o);
+
+ template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.sup sup]``(octonion<T> const & o);
+ template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.l1 l1]``(octonion<T>const & o);
+ template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.abs abs]``(octonion<T> const & o);
+ template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.norm norm]``(octonion<T>const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.conj conj]``(octonion<T> const & o);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.oct_create spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.oct_create multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.oct_create cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6);
+
+ // transcendentals
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.exp exp]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.cos cos]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.sin sin]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.tan tan]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.cosh cosh]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.sinh sinh]``(octonion<T> const & o);
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.tanh tanh]``(octonion<T> const & o);
+
+ template<typename T> octonion<T> ``[link boost_octonions.octonions.octonions_transcendentals.pow pow]``(octonion<T> const & o, int n);
+
+ } } // namespaces
+
+[endsect]
+
+[section Template Class octonion]
+
+ namespace boost{ namespace math {
+
+ template<typename T>
+ class octonion
+ {
+ public:
+ typedef T value_type;
+
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());
+ template<typename X>
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<X> const & a_recopier);
+
+ T ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;
+ octonion<T> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;
+
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;
+ T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;
+
+ ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;
+ ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;
+ ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;
+ ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;
+
+ ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;
+ ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;
+
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<T> const & a_affecter);
+ template<typename X>
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<X> const & a_affecter);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (T const & a_affecter);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<T> const & a_affecter);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<T> const & a_affecter);
+
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (T const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<T> const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs);
+
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (T const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<T> const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs);
+
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (T const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<T> const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs);
+
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (T const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<T> const & rhs);
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion<X> const & rhs);
+ };
+
+ } } // namespaces
+
+[endsect]
+
+[section Octonion Specializations]
+
+ namespace boost{ namespace math{
+
+ template<>
+ class octonion<float>
+ {
+ public:
+ typedef float value_type;
+
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier);
+
+ float ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;
+ octonion<float> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;
+
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;
+ float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;
+
+ ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;
+ ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;
+ ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;
+ ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;
+
+ ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;
+ ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;
+
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<float> const & a_affecter);
+ template<typename X>
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<X> const & a_affecter);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (float const & a_affecter);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<float> const & a_affecter);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<float> const & a_affecter);
+
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (float const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<float> const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<float> const & rhs);
+ template<typename X>
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs);
+
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (float const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<float> const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<float> const & rhs);
+ template<typename X>
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs);
+
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (float const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<float> const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<float> const & rhs);
+ template<typename X>
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs);
+
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (float const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<float> const & rhs);
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<float> const & rhs);
+ template<typename X>
+ octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion<X> const & rhs);
+ };
+
+[#boost_octonions.octonion_double]
+
+ template<>
+ class octonion<double>
+ {
+ public:
+ typedef double value_type;
+
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier);
+
+ double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;
+ octonion<double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;
+
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;
+ double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;
+
+ ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;
+ ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;
+ ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;
+ ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;
+
+ ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;
+ ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;
+
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<double> const & a_affecter);
+ template<typename X>
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<X> const & a_affecter);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (double const & a_affecter);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<double> const & a_affecter);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<double> const & a_affecter);
+
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (double const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<double> const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<double> const & rhs);
+ template<typename X>
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs);
+
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (double const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<double> const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<double> const & rhs);
+ template<typename X>
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs);
+
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (double const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<double> const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<double> const & rhs);
+ template<typename X>
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs);
+
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (double const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<double> const & rhs);
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<double> const & rhs);
+ template<typename X>
+ octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion<X> const & rhs);
+ };
+
+[#boost_octonions.octonion_long_double]
+
+ template<>
+ class octonion<long double>
+ {
+ public:
+ typedef long double value_type;
+
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & z1 = ::boost::math::quaternion<long double>());
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier);
+ explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier);
+
+ long double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;
+ octonion<long double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;
+
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;
+ long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;
+
+ ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;
+ ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;
+ ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;
+ ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;
+
+ ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;
+ ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;
+
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<long double> const & a_affecter);
+ template<typename X>
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<X> const & a_affecter);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (long double const & a_affecter);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<long double> const & a_affecter);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<long double> const & a_affecter);
+
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (long double const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<long double> const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<long double> const & rhs);
+ template<typename X>
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs);
+
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (long double const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<long double> const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<long double> const & rhs);
+ template<typename X>
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs);
+
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (long double const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<long double> const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<long double> const & rhs);
+ template<typename X>
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs);
+
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (long double const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<long double> const & rhs);
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<long double> const & rhs);
+ template<typename X>
+ octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion<X> const & rhs);
+ };
+
+ } } // namespaces
+
+[endsect]
+
+[section Octonion Member Typedefs]
+
+[*value_type]
+
+Template version:
+
+ typedef T value_type;
+
+Float specialization version:
+
+ typedef float value_type;
+
+Double specialization version:
+
+ typedef double value_type;
+
+Long double specialization version:
+
+ typedef long double value_type;
+
+These provide easy acces to the type the template is built upon.
+
+[endsect]
+
+[section Octonion Member Functions]
+
+[h3 Constructors]
+
+Template version:
+
+ explicit octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());
+ explicit octonion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());
+ explicit octonion(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());
+ template<typename X>
+ explicit octonion(octonion<X> const & a_recopier);
+
+Float specialization version:
+
+ explicit octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);
+ explicit octonion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());
+ explicit octonion(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());
+ explicit octonion(octonion<double> const & a_recopier);
+ explicit octonion(octonion<long double> const & a_recopier);
+
+Double specialization version:
+
+ explicit octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);
+ explicit octonion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());
+ explicit octonion(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());
+ explicit octonion(octonion<float> const & a_recopier);
+ explicit octonion(octonion<long double> const & a_recopier);
+
+Long double specialization version:
+
+ explicit octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);
+ explicit octonion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());
+ explicit octonion(::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & q1 = ::boost::math::quaternion<long double>());
+ explicit octonion(octonion<float> const & a_recopier);
+ explicit octonion(octonion<double> const & a_recopier);
+
+A default constructor is provided for each form, which initializes each component
+to the default values for their type (i.e. zero for floating numbers).
+This constructor can also accept one to eight base type arguments.
+A constructor is also provided to build octonions from one to four complex numbers
+sharing the same base type, and another taking one or two quaternions
+sharing the same base type. The unspecialized template also sports a
+templarized copy constructor, while the specialized forms have copy
+constructors from the other two specializations, which are explicit
+when a risk of precision loss exists. For the unspecialized form,
+the base type's constructors must not throw.
+
+Destructors and untemplated copy constructors (from the same type)
+are provided by the compiler. Converting copy constructors make use
+of a templated helper function in a "detail" subnamespace.
+
+[h3 Other member functions]
+
+[h4 Real and Unreal Parts]
+
+ T real() const;
+ octonion<T> unreal() const;
+
+Like complex number, octonions do have a meaningful notion of "real part",
+but unlike them there is no meaningful notion of "imaginary part".
+Instead there is an "unreal part" which itself is a octonion,
+and usually nothing simpler (as opposed to the complex number case).
+These are returned by the first two functions.
+
+[h4 Individual Real Components]
+
+ T R_component_1() const;
+ T R_component_2() const;
+ T R_component_3() const;
+ T R_component_4() const;
+ T R_component_5() const;
+ T R_component_6() const;
+ T R_component_7() const;
+ T R_component_8() const;
+
+A octonion having eight real components, these are returned by
+these eight functions. Hence real and R_component_1 return the same value.
+
+[h4 Individual Complex Components]
+
+ ::std::complex<T> C_component_1() const;
+ ::std::complex<T> C_component_2() const;
+ ::std::complex<T> C_component_3() const;
+ ::std::complex<T> C_component_4() const;
+
+A octonion likewise has four complex components. Actually, octonions
+are indeed a (left) vector field over the complexes, but beware, as
+for any octonion __oct_formula we also have __oct_complex_formula
+(note the [*minus] sign in the last factor).
+What the C_component_n functions return, however, are the complexes
+which could be used to build the octonion using the constructor, and
+[*not] the components of the octonion on the basis ['[^(1, j, e', j')]].
+
+[h4 Individual Quaternion Components]
+
+ ::boost::math::quaternion<T> H_component_1() const;
+ ::boost::math::quaternion<T> H_component_2() const;
+
+Likewise, for any octonion __oct_formula we also have __oct_quat_formula, though there
+is no meaningful vector-space-like structure based on the quaternions.
+What the H_component_n functions return are the quaternions which
+could be used to build the octonion using the constructor.
+
+[h3 Octonion Member Operators]
+[h4 Assignment Operators]
+
+ octonion<T> & operator = (octonion<T> const & a_affecter);
+ template<typename X>
+ octonion<T> & operator = (octonion<X> const & a_affecter);
+ octonion<T> & operator = (T const & a_affecter);
+ octonion<T> & operator = (::std::complex<T> const & a_affecter);
+ octonion<T> & operator = (::boost::math::quaternion<T> const & a_affecter);
+
+These perform the expected assignment, with type modification if
+necessary (for instance, assigning from a base type will set the
+real part to that value, and all other components to zero).
+For the unspecialized form, the base type's assignment operators must not throw.
+
+[h4 Other Member Operators]
+
+ octonion<T> & operator += (T const & rhs)
+ octonion<T> & operator += (::std::complex<T> const & rhs);
+ octonion<T> & operator += (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & operator += (octonion<X> const & rhs);
+
+These perform the mathematical operation `(*this)+rhs` and store the result in
+`*this`. The unspecialized form has exception guards, which the specialized
+forms do not, so as to insure exception safety. For the unspecialized form,
+the base type's assignment operators must not throw.
+
+ octonion<T> & operator -= (T const & rhs)
+ octonion<T> & operator -= (::std::complex<T> const & rhs);
+ octonion<T> & operator -= (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & operator -= (octonion<X> const & rhs);
+
+These perform the mathematical operation `(*this)-rhs` and store the result
+in `*this`. The unspecialized form has exception guards, which the
+specialized forms do not, so as to insure exception safety.
+For the unspecialized form, the base type's assignment operators must not throw.
+
+ octonion<T> & operator *= (T const & rhs)
+ octonion<T> & operator *= (::std::complex<T> const & rhs);
+ octonion<T> & operator *= (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & operator *= (octonion<X> const & rhs);
+
+These perform the mathematical operation `(*this)*rhs` in this order
+(order is important as multiplication is not commutative for octonions)
+and store the result in `*this`. The unspecialized form has exception guards,
+which the specialized forms do not, so as to insure exception safety.
+For the unspecialized form, the base type's assignment operators must
+not throw. Also, for clarity's sake, you should always group the
+factors in a multiplication by groups of two, as the multiplication is
+not even associative on the octonions (though there are of course cases
+where this does not matter, it usually does).
+
+ octonion<T> & operator /= (T const & rhs)
+ octonion<T> & operator /= (::std::complex<T> const & rhs);
+ octonion<T> & operator /= (::boost::math::quaternion<T> const & rhs);
+ template<typename X>
+ octonion<T> & operator /= (octonion<X> const & rhs);
+
+These perform the mathematical operation `(*this)*inverse_of(rhs)`
+in this order (order is important as multiplication is not commutative
+for octonions) and store the result in `*this`. The unspecialized form
+has exception guards, which the specialized forms do not, so as to
+insure exception safety. For the unspecialized form, the base
+type's assignment operators must not throw. As for the multiplication,
+remember to group any two factors using parenthesis.
+
+[endsect]
+
+[section:non_mem Octonion Non-Member Operators]
+
+[h4 Unary Plus and Minus Operators]
+
+ template<typename T> octonion<T> operator + (octonion<T> const & o);
+
+This unary operator simply returns o.
+
+ template<typename T> octonion<T> operator - (octonion<T> const & o);
+
+This unary operator returns the opposite of o.
+
+[h4 Binary Addition Operators]
+
+ template<typename T> octonion<T> operator + (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator + (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> operator + (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> operator + (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> operator + (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These operators return `octonion<T>(lhs) += rhs`.
+
+[h4 Binary Subtraction Operators]
+
+ template<typename T> octonion<T> operator - (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator - (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> operator - (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> operator - (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> operator - (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These operators return `octonion<T>(lhs) -= rhs`.
+
+[h4 Binary Multiplication Operators]
+
+ template<typename T> octonion<T> operator * (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator * (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> operator * (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> operator * (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> operator * (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These operators return `octonion<T>(lhs) *= rhs`.
+
+[h4 Binary Division Operators]
+
+ template<typename T> octonion<T> operator / (T const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator / (octonion<T> const & lhs, T const & rhs);
+ template<typename T> octonion<T> operator / (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> octonion<T> operator / (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> octonion<T> operator / (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These operators return `octonion<T>(lhs) /= rhs`. It is of course still an
+error to divide by zero...
+
+[h4 Binary Equality Operators]
+
+ template<typename T> bool operator == (T const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator == (octonion<T> const & lhs, T const & rhs);
+ template<typename T> bool operator == (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator == (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool operator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> bool operator == (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These return true if and only if the four components of `octonion<T>(lhs)`
+are equal to their counterparts in `octonion<T>(rhs)`. As with any
+floating-type entity, this is essentially meaningless.
+
+[h4 Binary Inequality Operators]
+
+ template<typename T> bool operator != (T const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator != (octonion<T> const & lhs, T const & rhs);
+ template<typename T> bool operator != (::std::complex<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator != (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool operator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+ template<typename T> bool operator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+ template<typename T> bool operator != (octonion<T> const & lhs, octonion<T> const & rhs);
+
+These return true if and only if `octonion<T>(lhs) == octonion<T>(rhs)`
+is false. As with any floating-type entity, this is essentially meaningless.
+
+[h4 Stream Extractor]
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_istream<charT,traits> & operator >> (::std::basic_istream<charT,traits> & is, octonion<T> & o);
+
+Extracts an octonion `o`. We accept any format which seems reasonable.
+However, since this leads to a great many ambiguities, decisions were made
+to lift these. In case of doubt, stick to lists of reals.
+
+The input values must be convertible to T. If bad input is encountered,
+calls `is.setstate(ios::failbit)` (which may throw `ios::failure` (27.4.5.3)).
+
+Returns `is`.
+
+[h4 Stream Inserter]
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits> & operator << (::std::basic_ostream<charT,traits> & os, octonion<T> const & o);
+
+Inserts the octonion `o` onto the stream `os` as if it were implemented as follows:
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits> & operator << ( ::std::basic_ostream<charT,traits> & os,
+ octonion<T> const & o)
+ {
+ ::std::basic_ostringstream<charT,traits> s;
+
+ s.flags(os.flags());
+ s.imbue(os.getloc());
+ s.precision(os.precision());
+
+ s << '(' << o.R_component_1() << ','
+ << o.R_component_2() << ','
+ << o.R_component_3() << ','
+ << o.R_component_4() << ','
+ << o.R_component_5() << ','
+ << o.R_component_6() << ','
+ << o.R_component_7() << ','
+ << o.R_component_8() << ')';
+
+ return os << s.str();
+ }
+
+[endsect]
+
+[section Octonion Value Operations]
+
+[h4 Real and Unreal]
+
+ template<typename T> T real(octonion<T> const & o);
+ template<typename T> octonion<T> unreal(octonion<T> const & o);
+
+These return `o.real()` and `o.unreal()` respectively.
+
+[h4 conj]
+
+ template<typename T> octonion<T> conj(octonion<T> const & o);
+
+This returns the conjugate of the octonion.
+
+[h4 sup]
+
+ template<typename T> T sup(octonion<T> const & o);
+
+This return the sup norm (the greatest among
+`abs(o.R_component_1())...abs(o.R_component_8()))` of the octonion.
+
+[h4 l1]
+
+ template<typename T> T l1(octonion<T> const & o);
+
+This return the l1 norm (`abs(o.R_component_1())+...+abs(o.R_component_8())`)
+of the octonion.
+
+[h4 abs]
+
+ template<typename T> T abs(octonion<T> const & o);
+
+This return the magnitude (Euclidian norm) of the octonion.
+
+[h4 norm]
+
+ template<typename T> T norm(octonion<T>const & o);
+
+This return the (Cayley) norm of the octonion. The term "norm" might
+be confusing, as most people associate it with the Euclidian norm
+(and quadratic functionals). For this version of (the mathematical
+objects known as) octonions, the Euclidian norm (also known as
+magnitude) is the square root of the Cayley norm.
+
+[endsect]
+
+[section:oct_create Octonion Creation Functions]
+
+ template<typename T> octonion<T> spherical(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6);
+ template<typename T> octonion<T> multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4);
+ template<typename T> octonion<T> cylindrical(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6);
+
+These build octonions in a way similar to the way polar builds
+complex numbers, as there is no strict equivalent to
+polar coordinates for octonions.
+
+`spherical` is a simple transposition of `polar`, it takes as inputs a
+(positive) magnitude and a point on the hypersphere, given
+by three angles. The first of these, ['theta] has a natural range of
+-pi to +pi, and the other two have natural ranges of
+-pi/2 to +pi/2 (as is the case with the usual spherical
+coordinates in __R3). Due to the many symmetries and periodicities,
+nothing untoward happens if the magnitude is negative or the angles are
+outside their natural ranges. The expected degeneracies (a magnitude of
+zero ignores the angles settings...) do happen however.
+
+`cylindrical` is likewise a simple transposition of the usual
+cylindrical coordinates in __R3, which in turn is another derivative of
+planar polar coordinates. The first two inputs are the polar
+coordinates of the first __C component of the octonion. The third and
+fourth inputs are placed into the third and fourth __R components of the
+octonion, respectively.
+
+`multipolar` is yet another simple generalization of polar coordinates.
+This time, both __C components of the octonion are given in polar coordinates.
+
+In this version of our implementation of octonions, there is no
+analogue of the complex value operation arg as the situation is
+somewhat more complicated.
+
+[endsect]
+
+[section Octonions Transcendentals]
+
+There is no `log` or `sqrt` provided for octonions in this implementation,
+and `pow` is likewise restricted to integral powers of the exponent.
+There are several reasons to this: on the one hand, the equivalent of
+analytic continuation for octonions ("branch cuts") remains to be
+investigated thoroughly (by me, at any rate...), and we wish to avoid
+the nonsense introduced in the standard by exponentiations of
+complexes by complexes (which is well defined, but not in the standard...).
+Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is
+just plain brain-dead...
+
+We do, however provide several transcendentals, chief among which is
+the exponential. That it allows for a "closed formula" is a result
+of the author (the existence and definition of the exponential, on the
+octonions among others, on the other hand, is a few centuries old).
+Basically, any converging power series with real coefficients which
+allows for a closed formula in __C can be transposed to __O. More
+transcendentals of this type could be added in a further revision upon
+request. It should be noted that it is these functions which force the
+dependency upon the
+[@../../../../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp]
+and the
+[@../../../../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp]
+headers.
+
+[h4 exp]
+
+ template<typename T>
+ octonion<T> exp(octonion<T> const & o);
+
+Computes the exponential of the octonion.
+
+[h4 cos]
+
+ template<typename T>
+ octonion<T> cos(octonion<T> const & o);
+
+Computes the cosine of the octonion
+
+[h4 sin]
+
+ template<typename T>
+ octonion<T> sin(octonion<T> const & o);
+
+Computes the sine of the octonion.
+
+[h4 tan]
+
+ template<typename T>
+ octonion<T> tan(octonion<T> const & o);
+
+Computes the tangent of the octonion.
+
+[h4 cosh]
+
+ template<typename T>
+ octonion<T> cosh(octonion<T> const & o);
+
+Computes the hyperbolic cosine of the octonion.
+
+[h4 sinh]
+
+ template<typename T>
+ octonion<T> sinh(octonion<T> const & o);
+
+Computes the hyperbolic sine of the octonion.
+
+[h4 tanh]
+
+ template<typename T>
+ octonion<T> tanh(octonion<T> const & o);
+
+Computes the hyperbolic tangent of the octonion.
+
+[h4 pow]
+
+ template<typename T>
+ octonion<T> pow(octonion<T> const & o, int n);
+
+Computes the n-th power of the octonion q.
+
+[endsect]
+
+[section Test Program]
+
+The [@../../../octonion/octonion_test.cpp octonion_test.cpp]
+test program tests octonions specialisations for float, double and long double
+([@../../../octonion/output.txt sample output]).
+
+If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional
+output ([@../../../octonion/output_more.txt verbose output]); this will
+only be helpfull if you enable message output at the same time, of course
+(by uncommenting the relevant line in the test or by adding --log_level=messages
+to your command line,...). In that case, and if you are running interactively,
+you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to
+interactively test the input operator with input of your choice from the
+standard input (instead of hard-coding it in the test).
+
+[endsect]
+
+[section Acknowledgements]
+
+The mathematical text has been typeset with
+[@http://www.nisus-soft.com/ Nisus Writer].
+Jens Maurer has helped with portability and standard adherence, and was the
+Review Manager for this library. More acknowledgements in the
+History section. Thank you to all who contributed to the discussion about this library.
+
+[endsect]
+
+[section History]
+
+* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+* 1.5.7 - 25/02/2003: transitionned to the unit test framework; <boost/config.hpp> now included by the library header (rather than the test files), via <boost/math/quaternion.hpp>.
+* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis_at_[hidden]).
+* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael_at_[hidden]); requires the /Za compiler option.
+* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist; other compatibility fixes.
+* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod_at_[hidden]).
+* 1.5.2 - 07/07/2001: introduced namespace math.
+* 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp> and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+* 1.5.0 - 23/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version).
+* 1.4.0 - 09/01/2001: added tan and tanh.
+* 1.3.1 - 08/01/2001: cosmetic fixes.
+* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden]) algorithm.
+* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures.
+* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+* 1.0.0 - 10/08/1999: first public version.
+
+[endsect]
+
+[section To Do]
+
+* Improve testing.
+* Rewrite input operatore using Spirit (creates a dependency).
+* Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+
+[endsect]
+
+[endsect]

Added: trunk/libs/math/doc/quaternion/Jamfile.v2
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/Jamfile.v2 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,73 @@
+
+# Copyright John Maddock 2005. Use, modification, and distribution are
+# subject to 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)
+
+using quickbook ;
+
+path-constant images_location : html ;
+
+xml quaternion : math-quaternion.qbk ;
+boostbook standalone
+ :
+ quaternion
+ :
+ # Path for links to Boost:
+ <xsl:param>boost.root=../../../../..
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../../../libs/libraries.htm
+ # Use the main Boost stylesheet:
+ <xsl:param>html.stylesheet=../../../../../doc/html/boostbook.css
+
+ # Some general style settings:
+ <xsl:param>table.footnote.number.format=1
+ <xsl:param>footnote.number.format=1
+
+ # HTML options first:
+ # Use graphics not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=10
+ # Don't put the first section on the same page as the TOC:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=10
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=4
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+ #<xsl:param>root.filename="sf_dist_and_tools"
+
+ # PDF Options:
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ # <xsl:param>fop1.extensions=1
+ <format>pdf:<xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <format>pdf:<xsl:param>fop.extensions=0
+ # No indent on body text:
+ <format>pdf:<xsl:param>body.start.indent=0pt
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.outer=0.5in
+ # Paper type = A4
+ <format>pdf:<xsl:param>paper.type=A4
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/
+ <format>pdf:<xsl:param>admon.graphics.path=$(images_location)/../../svg-admon/
+ ;
+
+
+
+
+
+
+
+

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternions</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Boost.Quaternions">
+<link rel="up" href="../index.html" title="Boost.Quaternions">
+<link rel="prev" href="../index.html" title="Boost.Quaternions">
+<link rel="next" href="quaternions/overview.html" title="Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quaternions/overview.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_quaternions.quaternions"></a>Quaternions
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section"> Template Class quaternion</span></dt>
+<dt><span class="section"> Quaternion Specializations</span></dt>
+<dt><span class="section"><a href="quaternions/mem_typedef.html"> Quaternion
+ Member Typedefs</a></span></dt>
+<dt><span class="section"><a href="quaternions/mem_fun.html"> Quaternion Member
+ Functions</a></span></dt>
+<dt><span class="section"><a href="quaternions/non_mem.html"> Quaternion Non-Member
+ Operators</a></span></dt>
+<dt><span class="section"><a href="quaternions/value_op.html"> Quaternion Value
+ Operations</a></span></dt>
+<dt><span class="section"><a href="quaternions/create.html"> Quaternion Creation
+ Functions</a></span></dt>
+<dt><span class="section"> Quaternion Transcendentals</span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section"><a href="quaternions/exp.html"> The Quaternionic
+ Exponential</a></span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quaternions/overview.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="exp.html" title="The Quaternionic Exponential">
+<link rel="next" href="history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exp.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.acknowledgements"></a>Acknowledgements
+</h3></div></div></div>
+<p>
+ The mathematical text has been typeset with <a href="http://www.nisus-soft.com/" target="_top">Nisus
+ Writer</a>. Jens Maurer has helped with portability and standard adherence,
+ and was the Review Manager for this library. More acknowledgements in the
+ History section. Thank you to all who contributed to the discution about
+ this library.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exp.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,113 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Creation Functions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="value_op.html" title="Quaternion Value Operations">
+<link rel="next" href="trans.html" title="Quaternion Transcendentals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_op.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="trans.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.create"></a><a href="create.html" title="Quaternion Creation Functions"> Quaternion Creation
+ Functions</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">spherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="iden
tifier">phi2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">semipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="id
entifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">multipolar</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="i
dentifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cylindrospherical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">radius</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">longitude</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span
 class="identifier">latitude</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cylindrical</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identi
fier">h2</span><span class="special">);</span>
+</pre>
+<p>
+ These build quaternions in a way similar to the way polar builds complex
+ numbers, as there is no strict equivalent to polar coordinates for quaternions.
+ </p>
+<a name="boost_quaternions.quaternions.creation_spherical"></a><p>
+ <code class="computeroutput"><span class="identifier">spherical</span></code> is a simple transposition
+ of <code class="computeroutput"><span class="identifier">polar</span></code>, it takes as inputs
+ a (positive) magnitude and a point on the hypersphere, given by three angles.
+ The first of these, <code class="computeroutput"><span class="identifier">theta</span></code>
+ has a natural range of <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span></code>
+ to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span></code>,
+ and the other two have natural ranges of <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code>
+ to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> (as is the
+ case with the usual spherical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>).
+ Due to the many symmetries and periodicities, nothing untoward happens if
+ the magnitude is negative or the angles are outside their natural ranges.
+ The expected degeneracies (a magnitude of zero ignores the angles settings...)
+ do happen however.
+ </p>
+<a name="boost_quaternions.quaternions.creation_cylindrical"></a><p>
+ <code class="computeroutput"><span class="identifier">cylindrical</span></code> is likewise a
+ simple transposition of the usual cylindrical coordinates in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>, which in turn is another derivative of
+ planar polar coordinates. The first two inputs are the polar coordinates
+ of the first <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> component
+ of the quaternion. The third and fourth inputs are placed into the third
+ and fourth <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span> components
+ of the quaternion, respectively.
+ </p>
+<a name="boost_quaternions.quaternions.creation_multipolar"></a><p>
+ <code class="computeroutput"><span class="identifier">multipolar</span></code> is yet another
+ simple generalization of polar coordinates. This time, both <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> components of the quaternion are given
+ in polar coordinates.
+ </p>
+<a name="boost_quaternions.quaternions.creation_cylindrospherical"></a><p>
+ <code class="computeroutput"><span class="identifier">cylindrospherical</span></code> is specific
+ to quaternions. It is often interesting to consider <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span>
+ as the cartesian product of <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span>
+ by <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span> (the quaternionic
+ multiplication as then a special form, as given here). This function therefore
+ builds a quaternion from this representation, with the <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span> component given in usual <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span> spherical coordinates.
+ </p>
+<a name="boost_quaternions.quaternions.creation_semipolar"></a><p>
+ <code class="computeroutput"><span class="identifier">semipolar</span></code> is another generator
+ which is specific to quaternions. It takes as a first input the magnitude
+ of the quaternion, as a second input an angle in the range <code class="computeroutput"><span class="number">0</span></code> to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code>
+ such that magnitudes of the first two <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>
+ components of the quaternion are the product of the first input and the sine
+ and cosine of this angle, respectively, and finally as third and fourth inputs
+ angles in the range <code class="computeroutput"><span class="special">-</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> to <code class="computeroutput"><span class="special">+</span><span class="identifier">pi</span><span class="special">/</span><span class="number">2</span></code> which represent the arguments of the first
+ and second <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> components
+ of the quaternion, respectively. As usual, nothing untoward happens if what
+ should be magnitudes are negative numbers or angles are out of their natural
+ ranges, as symmetries and periodicities kick in.
+ </p>
+<p>
+ In this version of our implementation of quaternions, there is no analogue
+ of the complex value operation <code class="computeroutput"><span class="identifier">arg</span></code>
+ as the situation is somewhat more complicated. Unit quaternions are linked
+ both to rotations in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>
+ and in <span class="emphasis"><em><span class="bold"><strong>R<sup>4</sup></strong></span></em></span>, and the correspondences
+ are not too complicated, but there is currently a lack of standard (de facto
+ or de jure) matrix library with which the conversions could work. This should
+ be remedied in a further revision. In the mean time, an example of how this
+ could be done is presented here for R3, and here for R4 (<a href="../../../../../quaternion/HSO3SO4.cpp" target="_top">example
+ test file</a>).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_op.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="trans.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Quaternionic Exponential</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="test_program.html" title="Test Program">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test_program.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.exp"></a><a href="exp.html" title="The Quaternionic Exponential"> The Quaternionic
+ Exponential</a>
+</h3></div></div></div>
+<p>
+ Please refer to the following PDF's:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><a href="../../../../../quaternion/TQE.pdf" target="_top">The Quaternionic Exponential (and
+ beyond)</a></li>
+<li><a href="../../../../../quaternion/TQE_EA.pdf" target="_top">The Quaternionic Exponential
+ (and beyond) ERRATA &amp; ADDENDA</a></li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test_program.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header File</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="overview.html" title="Overview">
+<link rel="next" href="synopsis.html" title="Synopsis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.header_file"></a>Header File
+</h3></div></div></div>
+<p>
+ The interface and implementation are both supplied by the header file quaternion.hpp.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="synopsis.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,103 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>History</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
+<link rel="next" href="to_do.html" title="To Do">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_do.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.history"></a>History
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+ </li>
+<li>
+ 1.5.7 - 24/02/2003: transitionned to the unit test framework; &lt;boost/config.hpp&gt;
+ now included by the library header (rather than the test files).
+ </li>
+<li>
+ 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis
+ Evlogimenos (alkis_at_[hidden]).
+ </li>
+<li>
+ 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens
+ (michael_at_[hidden]); requires the /Za compiler option.
+ </li>
+<li>
+ 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different
+ translation units); attempt at an improved compatibility with Microsoft
+ compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist;
+ other compatibility fixes.
+ </li>
+<li>
+ 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor
+ (gregod_at_[hidden]).
+ </li>
+<li>
+ 1.5.2 - 07/07/2001: introduced namespace math.
+ </li>
+<li>
+ 1.5.1 - 07/06/2001: (end of Boost review) now includes &lt;boost/math/special_functions/sinc.hpp&gt;
+ and &lt;boost/math/special_functions/sinhc.hpp&gt; instead of &lt;boost/special_functions.hpp&gt;;
+ corrected bug in sin (Daryle Walker); removed check for self-assignment
+ (Gary Powel); made converting functions explicit (Gary Powel); added overflow
+ guards for division operators and abs (Peter Schmitteckert); added sup
+ and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+ </li>
+<li>
+ 1.5.0 - 26/03/2001: boostification, inlining of all operators except input,
+ output and pow, fixed exception safety of some members (template version)
+ and output operator, added spherical, semipolar, multipolar, cylindrospherical
+ and cylindrical.
+ </li>
+<li>
+ 1.4.0 - 09/01/2001: added tan and tanh.
+ </li>
+<li>
+ 1.3.1 - 08/01/2001: cosmetic fixes.
+ </li>
+<li>
+ 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden])
+ algorithm.
+ </li>
+<li>
+ 1.2.0 - 25/05/2000: fixed the division operators and output; changed many
+ signatures.
+ </li>
+<li>
+ 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+ </li>
+<li>
+ 1.0.0 - 10/08/1999: first public version.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_do.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,245 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Member Functions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="mem_typedef.html" title="Quaternion Member Typedefs">
+<link rel="next" href="non_mem.html" title="Quaternion Non-Member Operators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mem_typedef.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_mem.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.mem_fun"></a><a href="mem_fun.html" title="Quaternion Member Functions"> Quaternion Member
+ Functions</a>
+</h3></div></div></div>
+<a name="boost_quaternions.quaternions.mem_fun.constructors"></a><h4>
+<a name="id506779"></a>
+ Constructors
+ </h4>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span
> <span class="identifier">T</span><span class="special">());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</s
pan><span class="special">&gt;());</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <sp
an class="number">0.0f</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&
gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <s
pan class="number">0.0</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">dou
ble</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span cl
ass="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span
><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+</pre>
+<p>
+ A default constructor is provided for each form, which initializes each component
+ to the default values for their type (i.e. zero for floating numbers). This
+ constructor can also accept one to four base type arguments. A constructor
+ is also provided to build quaternions from one or two complex numbers sharing
+ the same base type. The unspecialized template also sports a templarized
+ copy constructor, while the specialized forms have copy constructors from
+ the other two specializations, which are explicit when a risk of precision
+ loss exists. For the unspecialized form, the base type's constructors must
+ not throw.
+ </p>
+<p>
+ Destructors and untemplated copy constructors (from the same type) are provided
+ by the compiler. Converting copy constructors make use of a templated helper
+ function in a "detail" subnamespace.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.other_member_functions"></a><h4>
+<a name="id508808"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.other_member_functions">Other
+ member functions</a>
+ </h4>
+<a name="boost_quaternions.quaternions.mem_fun.real_and_unreal_parts"></a><h5>
+<a name="id508832"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.real_and_unreal_parts">Real
+ and Unreal Parts</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">T</span> <span class="identifier">real</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">unreal</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Like complex number, quaternions do have a meaningful notion of "real
+ part", but unlike them there is no meaningful notion of "imaginary
+ part". Instead there is an "unreal part" which itself is a
+ quaternion, and usually nothing simpler (as opposed to the complex number
+ case). These are returned by the first two functions.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.individual_real_components"></a><h5>
+<a name="id508939"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.individual_real_components">Individual
+ Real Components</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">T</span> <span class="identifier">R_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_3</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">R_component_4</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A quaternion having four real components, these are returned by these four
+ functions. Hence real and R_component_1 return the same value.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.individual_complex__components"></a><h5>
+<a name="id509089"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.individual_complex__components">Individual
+ Complex Components</a>
+ </h5>
+<pre class="programlisting">
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">C_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ A quaternion likewise has two complex components, and as we have seen above,
+ for any quaternion <span class="emphasis"><em><code class="literal">q = &#945; + &#946;i + &#947;j + &#948;k</code></em></span> we also have
+ <span class="emphasis"><em><code class="literal">q = (&#945; + &#946;i) + (&#947; + &#948;i)j </code></em></span>. These functions return them.
+ The real part of <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">C_component_1</span><span class="special">()</span></code>
+ is the same as <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code>.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.quaternion_member_operators"></a><h4>
+<a name="id509313"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.quaternion_member_operators">Quaternion
+ Member Operators</a>
+ </h4>
+<a name="boost_quaternions.quaternions.mem_fun.assignment_operators"></a><h5>
+<a name="id509338"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.assignment_operators">Assignment
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the expected assignment, with type modification if necessary
+ (for instance, assigning from a base type will set the real part to that
+ value, and all other components to zero). For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.addition_operators"></a><h5>
+<a name="id509728"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.addition_operators">Addition
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)+</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms
+ do not, so as to insure exception safety. For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.subtraction_operators"></a><h5>
+<a name="id510085"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.subtraction_operators">Subtraction
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)-</span><span class="identifier">rhs</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
+ The unspecialized form has exception guards, which the specialized forms
+ do not, so as to insure exception safety. For the unspecialized form, the
+ base type's assignment operators must not throw.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.multiplication_operators"></a><h5>
+<a name="id510441"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.multiplication_operators">Multiplication
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">rhs</span></code>
+ <span class="bold"><strong>in this order</strong></span> (order is important as multiplication
+ is not commutative for quaternions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The
+ unspecialized form has exception guards, which the specialized forms do not,
+ so as to insure exception safety. For the unspecialized form, the base type's
+ assignment operators must not throw.
+ </p>
+<a name="boost_quaternions.quaternions.mem_fun.division_operators"></a><h5>
+<a name="id510803"></a>
+ <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.division_operators">Division
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These perform the mathematical operation <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)*</span><span class="identifier">inverse_of</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">)</span></code>
+ <span class="bold"><strong>in this order</strong></span> (order is important as multiplication
+ is not commutative for quaternions) and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. The
+ unspecialized form has exception guards, which the specialized forms do not,
+ so as to insure exception safety. For the unspecialized form, the base type's
+ assignment operators must not throw.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mem_typedef.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_mem.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Member Typedefs</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="spec.html" title="Quaternion Specializations">
+<link rel="next" href="mem_fun.html" title="Quaternion Member Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="spec.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mem_fun.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.mem_typedef"></a><a href="mem_typedef.html" title="Quaternion Member Typedefs"> Quaternion
+ Member Typedefs</a>
+</h3></div></div></div>
+<p>
+ <span class="bold"><strong>value_type</strong></span>
+ </p>
+<p>
+ Template version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Float specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ Long double specialization version:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ These provide easy acces to the type the template is built upon.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="spec.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mem_fun.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,227 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Non-Member Operators</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="mem_fun.html" title="Quaternion Member Functions">
+<link rel="next" href="value_op.html" title="Quaternion Value Operations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mem_fun.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_op.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.non_mem"></a><a href="non_mem.html" title="Quaternion Non-Member Operators"> Quaternion Non-Member
+ Operators</a>
+</h3></div></div></div>
+<a name="boost_quaternions.quaternions.non_mem.unary_plus"></a><h5>
+<a name="id511201"></a>
+ Unary Plus
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator simply returns q.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.unary_minus"></a><h5>
+<a name="id511348"></a>
+ Unary Minus
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This unary operator returns the opposite of q.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.binary_addition_operators"></a><h5>
+<a name="id511494"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_addition_operators">Binary
+ Addition Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.binary_subtraction_operators"></a><h5>
+<a name="id512356"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_subtraction_operators">Binary
+ Subtraction Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">-</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">-=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.binary_multiplication_operators"></a><h5>
+<a name="id513218"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_multiplication_operators">Binary
+ Multiplication Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">*=</span>
+ <span class="identifier">rhs</span></code>.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.binary_division_operators"></a><h5>
+<a name="id514080"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_division_operators">Binary
+ Division Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="spe
cial">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifie
r">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">/</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These operators return <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">/=</span>
+ <span class="identifier">rhs</span></code>. It is of course still an error
+ to divide by zero...
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.equality_operators"></a><h5>
+<a name="id514941"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.equality_operators">Equality
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if the four components of <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span></code> are
+ equal to their counterparts in <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">)</span></code>. As
+ with any floating-type entity, this is essentially meaningless.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.inequality_operators"></a><h5>
+<a name="id515752"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.inequality_operators">Inequality
+ Operators</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+</pre>
+<p>
+ These return true if and only if <code class="computeroutput"><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">)</span></code> is
+ false. As with any floating-type entity, this is essentially meaningless.
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.stream_extractor"></a><h5>
+<a name="id516564"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.stream_extractor">Stream
+ Extractor</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">&gt;&gt;</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">q</span><s
pan class="special">);</span>
+</pre>
+<p>
+ Extracts a quaternion q of one of the following forms (with a, b, c and d
+ of type <code class="computeroutput"><span class="identifier">T</span></code>):
+ </p>
+<p>
+ <code class="literal">a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c),
+ ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d))</code>
+ </p>
+<p>
+ The input values must be convertible to <code class="computeroutput"><span class="identifier">T</span></code>.
+ If bad input is encountered, calls <code class="computeroutput"><span class="identifier">is</span><span class="special">.</span><span class="identifier">setstate</span><span class="special">(</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">failbit</span><span class="special">)</span></code>
+ (which may throw ios::failure (27.4.5.3)).
+ </p>
+<p>
+ <span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">is</span></code>.
+ </p>
+<p>
+ The rationale for the list of accepted formats is that either we have a list
+ of up to four reals, or else we have a couple of complex numbers, and in
+ that case if it formated as a proper complex number, then it should be accepted.
+ Thus potential ambiguities are lifted (for instance (a,b) is (a,b,0,0) and
+ not (a,0,b,0), i.e. it is parsed as a list of two real numbers and not two
+ complex numbers which happen to have imaginary parts equal to zero).
+ </p>
+<a name="boost_quaternions.quaternions.non_mem.stream_inserter"></a><h5>
+<a name="id516942"></a>
+ <a href="non_mem.html#boost_quaternions.quaternions.non_mem.stream_inserter">Stream
+ Inserter</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span>
<span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Inserts the quaternion q onto the stream <code class="computeroutput"><span class="identifier">os</span></code>
+ as if it were implemented as follows:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostringstream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="identifier">s</span><span class="special">;</span>
+
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">flags</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">getloc</span><span class="special">());</span>
+ <span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">());</span>
+
+ <span class="identifier">s</span> <span class="special">&lt;&lt;</span> <span class="char">'('</span> <span class="special">&lt;&lt;</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_2</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_3</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="char">')'</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="identifier">os</span> <span class="special">&lt;&lt;</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">str</span><span class="special">();</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mem_fun.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_op.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,89 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Overview</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="../quaternions.html" title="Quaternions">
+<link rel="next" href="header_file.html" title="Header File">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quaternions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="header_file.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.overview"></a>Overview
+</h3></div></div></div>
+<p>
+ Quaternions are a relative of complex numbers.
+ </p>
+<p>
+ Quaternions are in fact part of a small hierarchy of structures built upon
+ the real numbers, which comprise only the set of real numbers (traditionally
+ named <span class="emphasis"><em><span class="bold"><strong>R</strong></span></em></span>), the set of
+ complex numbers (traditionally named <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span>),
+ the set of quaternions (traditionally named <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span>)
+ and the set of octonions (traditionally named <span class="emphasis"><em><span class="bold"><strong>O</strong></span></em></span>),
+ which possess interesting mathematical properties (chief among which is the
+ fact that they are <span class="emphasis"><em>division algebras</em></span>, <span class="emphasis"><em>i.e.</em></span>
+ where the following property is true: if <span class="emphasis"><em><code class="literal">y</code></em></span>
+ is an element of that algebra and is <span class="bold"><strong>not equal to zero</strong></span>,
+ then <span class="emphasis"><em><code class="literal">yx = yx'</code></em></span>, where <span class="emphasis"><em><code class="literal">x</code></em></span>
+ and <span class="emphasis"><em><code class="literal">x'</code></em></span> denote elements of that algebra,
+ implies that <span class="emphasis"><em><code class="literal">x = x'</code></em></span>). Each member
+ of the hierarchy is a super-set of the former.
+ </p>
+<p>
+ One of the most important aspects of quaternions is that they provide an
+ efficient way to parameterize rotations in <span class="emphasis"><em><span class="bold"><strong>R<sup>3</sup></strong></span></em></span>
+ (the usual three-dimensional space) and <span class="emphasis"><em><span class="bold"><strong>R<sup>4</sup></strong></span></em></span>.
+ </p>
+<p>
+ In practical terms, a quaternion is simply a quadruple of real numbers (&#945;,&#946;,&#947;,&#948;),
+ which we can write in the form <span class="emphasis"><em><code class="literal">q = &#945; + &#946;i + &#947;j + &#948;k</code></em></span>,
+ where <span class="emphasis"><em><code class="literal">i</code></em></span> is the same object as for
+ complex numbers, and <span class="emphasis"><em><code class="literal">j</code></em></span> and <span class="emphasis"><em><code class="literal">k</code></em></span>
+ are distinct objects which play essentially the same kind of role as <span class="emphasis"><em><code class="literal">i</code></em></span>.
+ </p>
+<p>
+ An addition and a multiplication is defined on the set of quaternions, which
+ generalize their real and complex counterparts. The main novelty here is
+ that <span class="bold"><strong>the multiplication is not commutative</strong></span>
+ (i.e. there are quaternions <span class="emphasis"><em><code class="literal">x</code></em></span> and
+ <span class="emphasis"><em><code class="literal">y</code></em></span> such that <span class="emphasis"><em><code class="literal">xy
+ &#8800; yx</code></em></span>). A good mnemotechnical way of remembering things
+ is by using the formula <span class="emphasis"><em><code class="literal">i*i = j*j = k*k = -1</code></em></span>.
+ </p>
+<p>
+ Quaternions (and their kin) are described in far more details in this other
+ document (with <a href="../../../../../quaternion/TQE_EA.pdf" target="_top">errata
+ and addenda</a>).
+ </p>
+<p>
+ Some traditional constructs, such as the exponential, carry over without
+ too much change into the realms of quaternions, but other, such as taking
+ a square root, do not.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quaternions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="header_file.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Template Class quaternion</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="synopsis.html" title="Synopsis">
+<link rel="next" href="spec.html" title="Quaternion Specializations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synopsis.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="spec.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.quat"></a> Template Class quaternion
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">T</span> value_type<span class="special">;</span>
+
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(),</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier"
>requested_d</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">());</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="
special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="identifier">T</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">T</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace math
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synopsis.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="spec.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,192 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Specializations</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="quat.html" title="Template Class quaternion">
+<link rel="next" href="mem_typedef.html" title="Quaternion Member Typedefs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quat.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mem_typedef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.spec"></a> Quaternion Specializations
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> value_type<span class="special">;</span>
+
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">,</span> <span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requ
ested_d</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class
="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">float</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">float</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="keyword">float</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="boost_quaternions.quaternion_double"></a><p>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> value_type<span class="special">;</span>
+
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">req
uested_d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span cla
ss="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">double</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">double</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="boost_quaternions.quaternion_long_double"></a><p>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;&gt;</span>
+<span class="keyword">class</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> value_type<span class="special">;</span>
+
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_a</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_b</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_c</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">,</span> <span class="keyword">long</s
pan> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z0</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">z1</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class
="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+ <span class="keyword">explicit</span> quaternion<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_recopier</span><span class="special">);</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> real<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> unreal<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_3<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> R_component_4<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_1<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> C_component_2<span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator = <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">a_affecter</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator += <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator -= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator *= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">&gt;</span>
+ <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;&amp;</span> operator /= <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace math
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quat.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mem_typedef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Synopsis</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="header_file.html" title="Header File">
+<link rel="next" href="quat.html" title="Template Class quaternion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="header_file.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quat.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.synopsis"></a>Synopsis
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">class</span> quaternion<span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> quaternion<float><span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> quaternion<double><span class="special">;</span>
+<span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">class</span> quaternion<long double><span class="special">;</span>
+
+<span class="comment">// operators
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="ident
ifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&a
mp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="id
entifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special"
>&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class=
"identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="speci
al">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator * <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="ident
ifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&a
mp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator / <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator + <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> operator - <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator == <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">bool</span> operator != <span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;&amp;</span> operator >> <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class
="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
+<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="keyword">operator</span> operator << <span class="special">(::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span><span class="identifier">traits</span><span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span cla
ss="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="comment">// values
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> real<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> unreal<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> sup<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> l1<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> abs<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> norm<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> conj<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> spherical<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">phi1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span cl
ass="special">&amp;</span> <span class="identifier">phi2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> semipolar<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span
class="special">&amp;</span> <span class="identifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> multipolar<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">theta1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rho2</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <spa
n class="special">&amp;</span> <span class="identifier">theta2</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cylindrospherical<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">radius</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">longitude</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">c
onst</span> <span class="special">&amp;</span> <span class="identifier">latitude</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cylindrical<span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">h1</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span cl
ass="special">&amp;</span> <span class="identifier">h2</span><span class="special">);</span>
+
+<span class="comment">// transcendentals
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> exp<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cos<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> sin<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> tan<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> cosh<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> sinh<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> tanh<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> pow<span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="comment">// namespace math
+</span><span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="header_file.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quat.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test Program</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="trans.html" title="Quaternion Transcendentals">
+<link rel="next" href="exp.html" title="The Quaternionic Exponential">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="trans.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="exp.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.test_program"></a>Test Program
+</h3></div></div></div>
+<p>
+ The quaternion_test.cpp
+ test program tests quaternions specializations for float, double and long
+ double (sample output,
+ with message output enabled).
+ </p>
+<p>
+ If you define the symbol boost_quaternions_TEST_VERBOSE, you will get additional
+ output (verbose output);
+ this will only be helpfull if you enable message output at the same time,
+ of course (by uncommenting the relevant line in the test or by adding <code class="literal">--log_level=messages</code>
+ to your command line,...). In that case, and if you are running interactively,
+ you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR
+ to interactively test the input operator with input of your choice from the
+ standard input (instead of hard-coding it in the test).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="trans.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="exp.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>To Do</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="history.html" title="History">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.to_do"></a>To Do
+</h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Improve testing.
+ </li>
+<li>
+ Rewrite input operatore using Spirit (creates a dependency).
+ </li>
+<li>
+ Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+ </li>
+<li>
+ Use uBlas for the link with rotations (and move from the example
+ implementation to an efficient one).
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="history.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,148 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Transcendentals</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="create.html" title="Quaternion Creation Functions">
+<link rel="next" href="test_program.html" title="Test Program">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="create.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test_program.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.trans"></a> Quaternion Transcendentals
+</h3></div></div></div>
+<p>
+ There is no <code class="computeroutput"><span class="identifier">log</span></code> or <code class="computeroutput"><span class="identifier">sqrt</span></code> provided for quaternions in this implementation,
+ and <code class="computeroutput"><span class="identifier">pow</span></code> is likewise restricted
+ to integral powers of the exponent. There are several reasons to this: on
+ the one hand, the equivalent of analytic continuation for quaternions ("branch
+ cuts") remains to be investigated thoroughly (by me, at any rate...),
+ and we wish to avoid the nonsense introduced in the standard by exponentiations
+ of complexes by complexes (which is well defined, but not in the standard...).
+ Talking of nonsense, saying that <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">0</span><span class="special">)</span></code> is "implementation
+ defined" is just plain brain-dead...
+ </p>
+<p>
+ We do, however provide several transcendentals, chief among which is the
+ exponential. This author claims the complete proof of the "closed formula"
+ as his own, as well as its independant invention (there are claims to prior
+ invention of the formula, such as one by Professor Shoemake, and it is possible
+ that the formula had been known a couple of centuries back, but in absence
+ of bibliographical reference, the matter is pending, awaiting further investigation;
+ on the other hand, the definition and existence of the exponential on the
+ quaternions, is of course a fact known for a very long time). Basically,
+ any converging power series with real coefficients which allows for a closed
+ formula in <span class="emphasis"><em><span class="bold"><strong>C</strong></span></em></span> can be
+ transposed to <span class="emphasis"><em><span class="bold"><strong>H</strong></span></em></span>. More
+ transcendentals of this type could be added in a further revision upon request.
+ It should be noted that it is these functions which force the dependency
+ upon the boost/math/special_functions/sinc.hpp
+ and the boost/math/special_functions/sinhc.hpp
+ headers.
+ </p>
+<a name="boost_quaternions.quaternions.trans.exp"></a><h5>
+<a name="id520441"></a>
+ exp
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the exponential of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.cos"></a><h5>
+<a name="id520578"></a>
+ cos
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cos</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the cosine of the quaternion
+ </p>
+<a name="boost_quaternions.quaternions.trans.sin"></a><h5>
+<a name="id520716"></a>
+ sin
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the sine of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.tan"></a><h5>
+<a name="id520853"></a>
+ tan
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the tangent of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.cosh"></a><h5>
+<a name="id520992"></a>
+ cosh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cosh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic cosine of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.sinh"></a><h5>
+<a name="id521131"></a>
+ sinh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic sine of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.tanh"></a><h5>
+<a name="id521270"></a>
+ tanh
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tanh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the hyperbolic tangent of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.trans.pow"></a><h5>
+<a name="id521408"></a>
+ pow
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ Computes the n-th power of the quaternion q.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="create.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test_program.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quaternion Value Operations</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Boost.Quaternions">
+<link rel="up" href="../quaternions.html" title="Quaternions">
+<link rel="prev" href="non_mem.html" title="Quaternion Non-Member Operators">
+<link rel="next" href="create.html" title="Quaternion Creation Functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_mem.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="create.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_quaternions.quaternions.value_op"></a><a href="value_op.html" title="Quaternion Value Operations"> Quaternion Value
+ Operations</a>
+</h3></div></div></div>
+<a name="boost_quaternions.quaternions.value_op.real_and_unreal"></a><h5>
+<a name="id517898"></a>
+ <a href="value_op.html#boost_quaternions.quaternions.value_op.real_and_unreal">real
+ and unreal</a>
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">real</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">unreal</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ These return <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code>
+ and <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">unreal</span><span class="special">()</span></code>
+ respectively.
+ </p>
+<a name="boost_quaternions.quaternions.value_op.conj"></a><h5>
+<a name="id518179"></a>
+ conj
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This returns the conjugate of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.value_op.sup"></a><h5>
+<a name="id518318"></a>
+ sup
+ </h5>
+<p>
+ template&lt;typename T&gt; T sup(quaternion&lt;T&gt; const &amp; q);
+ </p>
+<p>
+ This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.value_op.l1"></a><h5>
+<a name="id518415"></a>
+ l1
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the l1 norm <code class="computeroutput"><span class="special">(</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.value_op.abs"></a><h5>
+<a name="id518609"></a>
+ abs
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the magnitude (Euclidian norm) of the quaternion.
+ </p>
+<a name="boost_quaternions.quaternions.value_op.norm"></a><h5>
+<a name="id518732"></a>
+ norm
+ </h5>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
+</pre>
+<p>
+ This return the (Cayley) norm of the quaternion. The term "norm"
+ might be confusing, as most people associate it with the Euclidian norm (and
+ quadratic functionals). For this version of (the mathematical objects known
+ as) quaternions, the Euclidian norm (also known as magnitude) is the square
+ root of the Cayley norm.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2001 -2003 Hubert Holin</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_mem.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="create.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/html/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/html/index.html 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.Quaternions</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="index.html" title="Boost.Quaternions">
+<link rel="next" href="boost_quaternions/quaternions.html" title="Quaternions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_quaternions/quaternions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="article" lang="en">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="boost_quaternions"></a>Boost.Quaternions</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Hubert</span> <span class="surname">Holin</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2001 -2003 Hubert Holin</p></div>
+<div><div class="legalnotice">
+<a name="id443223"></a><p>
+ 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)
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Quaternions</span></dt>
+<dd><dl>
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section">Header File</span></dt>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section"> Template Class quaternion</span></dt>
+<dt><span class="section"> Quaternion Specializations</span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/mem_typedef.html"> Quaternion
+ Member Typedefs</a></span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/mem_fun.html"> Quaternion Member
+ Functions</a></span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/non_mem.html"> Quaternion Non-Member
+ Operators</a></span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/value_op.html"> Quaternion Value
+ Operations</a></span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/create.html"> Quaternion Creation
+ Functions</a></span></dt>
+<dt><span class="section"> Quaternion Transcendentals</span></dt>
+<dt><span class="section">Test Program</span></dt>
+<dt><span class="section"><a href="boost_quaternions/quaternions/exp.html"> The Quaternionic
+ Exponential</a></span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">History</span></dt>
+<dt><span class="section">To Do</span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 29, 2006 at 11:08:32 +0000</small></p></td>
+<td align="right"><small></small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_quaternions/quaternions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: trunk/libs/math/doc/quaternion/math-quaternion.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/math/doc/quaternion/math-quaternion.qbk 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -0,0 +1,931 @@
+[article Boost.Quaternions
+ [quickbook 1.3]
+ [copyright 2001-2003 Hubert Holin]
+ [purpose Quaternions]
+ [license
+ 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 http://www.boost.org/LICENSE_1_0.txt])
+ ]
+ [authors [Holin, Hubert]]
+ [category math]
+ [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $]
+]
+
+[def __R ['[*R]]]
+[def __C ['[*C]]]
+[def __H ['[*H]]]
+[def __O ['[*O]]]
+[def __R3 ['[*'''R<superscript>3</superscript>''']]]
+[def __R4 ['[*'''R<superscript>4</superscript>''']]]
+[def __quadrulple ('''&#x03B1;,&#x03B2;,&#x03B3;,&#x03B4;''')]
+[def __quat_formula ['[^q = '''&#x03B1; + &#x03B2;i + &#x03B3;j + &#x03B4;k''']]]
+[def __quat_complex_formula ['[^q = ('''&#x03B1; + &#x03B2;i) + (&#x03B3; + &#x03B4;i)j''' ]]]
+[def __not_equal ['[^xy '''&#x2260;''' yx]]]
+
+[def __asinh [link boost_quaternions.math_special_functions.asinh asinh]]
+[def __acosh [link boost_quaternions.math_special_functions.acosh acosh]]
+[def __atanh [link boost_quaternions.math_special_functions.atanh atanh]]
+[def __sinc_pi [link boost_quaternions.math_special_functions.sinc_pi sinc_pi]]
+[def __sinhc_pi [link boost_quaternions.math_special_functions.sinhc_pi sinhc_pi]]
+
+[def __log1p [link boost_quaternions.math_special_functions.log1p log1p]]
+[def __expm1 [link boost_quaternions.math_special_functions.expm1 expm1]]
+[def __hypot [link boost_quaternions.math_special_functions.hypot hypot]]
+
+
+[section Quaternions]
+
+[section Overview]
+
+Quaternions are a relative of complex numbers.
+
+Quaternions are in fact part of a small hierarchy of structures built
+upon the real numbers, which comprise only the set of real numbers
+(traditionally named __R), the set of complex numbers (traditionally named __C),
+the set of quaternions (traditionally named __H) and the set of octonions
+(traditionally named __O), which possess interesting mathematical properties
+(chief among which is the fact that they are ['division algebras],
+['i.e.] where the following property is true: if ['[^y]] is an element of that
+algebra and is [*not equal to zero], then ['[^yx = yx']], where ['[^x]] and ['[^x']]
+denote elements of that algebra, implies that ['[^x = x']]).
+Each member of the hierarchy is a super-set of the former.
+
+One of the most important aspects of quaternions is that they provide an
+efficient way to parameterize rotations in __R3 (the usual three-dimensional space)
+and __R4.
+
+In practical terms, a quaternion is simply a quadruple of real numbers __quadrulple,
+which we can write in the form __quat_formula, where ['[^i]] is the same object as for complex numbers,
+and ['[^j]] and ['[^k]] are distinct objects which play essentially the same kind of role as ['[^i]].
+
+An addition and a multiplication is defined on the set of quaternions,
+which generalize their real and complex counterparts. The main novelty
+here is that [*the multiplication is not commutative] (i.e. there are
+quaternions ['[^x]] and ['[^y]] such that __not_equal). A good mnemotechnical way of remembering
+things is by using the formula ['[^i*i = j*j = k*k = -1]].
+
+Quaternions (and their kin) are described in far more details in this
+other [@../../../quaternion/TQE.pdf document]
+(with [@../../../quaternion/TQE_EA.pdf errata and addenda]).
+
+Some traditional constructs, such as the exponential, carry over without
+too much change into the realms of quaternions, but other, such as taking
+a square root, do not.
+
+[endsect]
+
+[section Header File]
+
+The interface and implementation are both supplied by the header file
+[@../../../../../boost/math/quaternion.hpp quaternion.hpp].
+
+[endsect]
+
+[section Synopsis]
+
+ namespace boost{ namespace math{
+
+ template<typename T> class ``[link boost_quaternions.quaternions.quat quaternion]``;
+ template<> class ``[link boost_quaternions.quaternions.spec quaternion<float>]``;
+ template<> class ``[link boost_quaternions.quaternion_double quaternion<double>]``;
+ template<> class ``[link boost_quaternions.quaternion_long_double quaternion<long double>]``;
+
+ // operators
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_plus operator +]`` (quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_minus operator -]`` (quaternion<T> const & q);
+
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_istream<charT,traits>& ``[link boost_quaternions.quaternions.non_mem.stream_extractor operator >>]`` (::std::basic_istream<charT,traits> & is, quaternion<T> & q);
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits>& operator ``[link boost_quaternions.quaternions.non_mem.stream_inserter operator <<]`` (::std::basic_ostream<charT,traits> & os, quaternion<T> const & q);
+
+ // values
+ template<typename T> T ``[link boost_quaternions.quaternions.value_op.real_and_unreal real]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.value_op.real_and_unreal unreal]``(quaternion<T> const & q);
+
+ template<typename T> T ``[link boost_quaternions.quaternions.value_op.sup sup]``(quaternion<T> const & q);
+ template<typename T> T ``[link boost_quaternions.quaternions.value_op.l1 l1]``(quaternion<T> const & q);
+ template<typename T> T ``[link boost_quaternions.quaternions.value_op.abs abs]``(quaternion<T> const & q);
+ template<typename T> T ``[link boost_quaternions.quaternions.value_op.norm norm]``(quaternion<T>const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.value_op.conj conj]``(quaternion<T> const & q);
+
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_spherical spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_semipolar semipolar]``(T const & rho, T const & alpha, T const & theta1, T const & theta2);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_multipolar multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_cylindrospherical cylindrospherical]``(T const & t, T const & radius, T const & longitude, T const & latitude);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_cylindrical cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2);
+
+ // transcendentals
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.exp exp]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.cos cos]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.sin sin]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.tan tan]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.cosh cosh]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.sinh sinh]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.tanh tanh]``(quaternion<T> const & q);
+ template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.trans.pow pow]``(quaternion<T> const & q, int n);
+
+ } // namespace math
+ } // namespace boost
+
+[endsect]
+
+[section:quat Template Class quaternion]
+
+ namespace boost{ namespace math{
+
+ template<typename T>
+ class quaternion
+ {
+ public:
+
+ typedef T ``[link boost_quaternions.quaternions.mem_typedef value_type]``;
+
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());
+ template<typename X>
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<X> const & a_recopier);
+
+ T ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;
+ quaternion<T> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;
+ T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;
+ T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;
+ T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;
+ T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;
+ ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;
+ ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;
+
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<T> const & a_affecter);
+ template<typename X>
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<X> const & a_affecter);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(T const & a_affecter);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<T> const & a_affecter);
+
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(T const & rhs);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs);
+
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(T const & rhs);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs);
+
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(T const & rhs);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs);
+
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(T const & rhs);
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs);
+ };
+
+ } // namespace math
+ } // namespace boost
+
+[endsect]
+
+[section:spec Quaternion Specializations]
+
+ namespace boost{ namespace math{
+
+ template<>
+ class quaternion<float>
+ {
+ public:
+ typedef float ``[link boost_quaternions.quaternions.mem_typedef value_type]``;
+
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>());
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier);
+
+ float ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;
+ quaternion<float> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;
+ float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;
+ float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;
+ float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;
+ float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;
+ ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;
+ ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;
+
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<float> const & a_affecter);
+ template<typename X>
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<X> const & a_affecter);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(float const & a_affecter);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<float> const & a_affecter);
+
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(float const & rhs);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<float> const & rhs);
+ template<typename X>
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs);
+
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(float const & rhs);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<float> const & rhs);
+ template<typename X>
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs);
+
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(float const & rhs);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<float> const & rhs);
+ template<typename X>
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs);
+
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(float const & rhs);
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<float> const & rhs);
+ template<typename X>
+ quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs);
+ };
+
+[#boost_quaternions.quaternion_double]
+
+ template<>
+ class quaternion<double>
+ {
+ public:
+ typedef double ``[link boost_quaternions.quaternions.mem_typedef value_type]``;
+
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier);
+
+ double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;
+ quaternion<double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;
+ double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;
+ double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;
+ double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;
+ double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;
+ ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;
+ ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;
+
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<double> const & a_affecter);
+ template<typename X>
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<X> const & a_affecter);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(double const & a_affecter);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<double> const & a_affecter);
+
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(double const & rhs);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<double> const & rhs);
+ template<typename X>
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs);
+
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(double const & rhs);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<double> const & rhs);
+ template<typename X>
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs);
+
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(double const & rhs);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<double> const & rhs);
+ template<typename X>
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs);
+
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(double const & rhs);
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<double> const & rhs);
+ template<typename X>
+ quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs);
+ };
+
+[#boost_quaternions.quaternion_long_double]
+
+ template<>
+ class quaternion<long double>
+ {
+ public:
+ typedef long double ``[link boost_quaternions.quaternions.mem_typedef value_type]``;
+
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier);
+ explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier);
+
+ long double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;
+ quaternion<long double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;
+ long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;
+ long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;
+ long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;
+ long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;
+ ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;
+ ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;
+
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<long double> const & a_affecter);
+ template<typename X>
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<X> const & a_affecter);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(long double const & a_affecter);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<long double> const & a_affecter);
+
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(long double const & rhs);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<long double> const & rhs);
+ template<typename X>
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs);
+
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(long double const & rhs);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<long double> const & rhs);
+ template<typename X>
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs);
+
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(long double const & rhs);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<long double> const & rhs);
+ template<typename X>
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs);
+
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(long double const & rhs);
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<long double> const & rhs);
+ template<typename X>
+ quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs);
+ };
+
+ } // namespace math
+ } // namespace boost
+
+[endsect]
+
+[section:mem_typedef Quaternion Member Typedefs]
+
+[*value_type]
+
+Template version:
+
+ typedef T value_type;
+
+Float specialization version:
+
+ typedef float value_type;
+
+Double specialization version:
+
+ typedef double value_type;
+
+Long double specialization version:
+
+ typedef long double value_type;
+
+These provide easy acces to the type the template is built upon.
+
+[endsect]
+
+[section:mem_fun Quaternion Member Functions]
+[h3 Constructors]
+
+Template version:
+
+ explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());
+ explicit quaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());
+ template<typename X>
+ explicit quaternion(quaternion<X> const & a_recopier);
+
+Float specialization version:
+
+ explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);
+ explicit quaternion(::std::complex<float> const & z0,::std::complex<float> const & z1 = ::std::complex<float>());
+ explicit quaternion(quaternion<double> const & a_recopier);
+ explicit quaternion(quaternion<long double> const & a_recopier);
+
+Double specialization version:
+
+ explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);
+ explicit quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());
+ explicit quaternion(quaternion<float> const & a_recopier);
+ explicit quaternion(quaternion<long double> const & a_recopier);
+
+Long double specialization version:
+
+ explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);
+ explicit quaternion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());
+ explicit quaternion(quaternion<float> const & a_recopier);
+ explicit quaternion(quaternion<double> const & a_recopier);
+
+A default constructor is provided for each form, which initializes
+each component to the default values for their type
+(i.e. zero for floating numbers). This constructor can also accept
+one to four base type arguments. A constructor is also provided to
+build quaternions from one or two complex numbers sharing the same
+base type. The unspecialized template also sports a templarized copy
+constructor, while the specialized forms have copy constructors
+from the other two specializations, which are explicit when a risk of
+precision loss exists. For the unspecialized form, the base type's
+constructors must not throw.
+
+Destructors and untemplated copy constructors (from the same type) are
+provided by the compiler. Converting copy constructors make use of a
+templated helper function in a "detail" subnamespace.
+
+[h3 Other member functions]
+[h4 Real and Unreal Parts]
+
+ T real() const;
+ quaternion<T> unreal() const;
+
+Like complex number, quaternions do have a meaningful notion of "real part",
+but unlike them there is no meaningful notion of "imaginary part".
+Instead there is an "unreal part" which itself is a quaternion,
+and usually nothing simpler (as opposed to the complex number case).
+These are returned by the first two functions.
+
+[h4 Individual Real Components]
+
+ T R_component_1() const;
+ T R_component_2() const;
+ T R_component_3() const;
+ T R_component_4() const;
+
+A quaternion having four real components, these are returned by these four
+functions. Hence real and R_component_1 return the same value.
+
+[h4 Individual Complex Components]
+
+ ::std::complex<T> C_component_1() const;
+ ::std::complex<T> C_component_2() const;
+
+A quaternion likewise has two complex components, and as we have seen above,
+for any quaternion __quat_formula we also have __quat_complex_formula. These functions return them.
+The real part of `q.C_component_1()` is the same as `q.real()`.
+
+[h3 Quaternion Member Operators]
+[h4 Assignment Operators]
+
+ quaternion<T>& operator = (quaternion<T> const & a_affecter);
+ template<typename X>
+ quaternion<T>& operator = (quaternion<X> const& a_affecter);
+ quaternion<T>& operator = (T const& a_affecter);
+ quaternion<T>& operator = (::std::complex<T> const& a_affecter);
+
+These perform the expected assignment, with type modification if necessary
+(for instance, assigning from a base type will set the real part to that
+value, and all other components to zero). For the unspecialized form,
+the base type's assignment operators must not throw.
+
+[h4 Addition Operators]
+
+ quaternion<T>& operator += (T const & rhs)
+ quaternion<T>& operator += (::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& operator += (quaternion<X> const & rhs);
+
+These perform the mathematical operation `(*this)+rhs` and store the result in
+`*this`. The unspecialized form has exception guards, which the specialized
+forms do not, so as to insure exception safety. For the unspecialized form,
+the base type's assignment operators must not throw.
+
+[h4 Subtraction Operators]
+
+ quaternion<T>& operator -= (T const & rhs)
+ quaternion<T>& operator -= (::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& operator -= (quaternion<X> const & rhs);
+
+These perform the mathematical operation `(*this)-rhs` and store the result
+in `*this`. The unspecialized form has exception guards, which the
+specialized forms do not, so as to insure exception safety.
+For the unspecialized form, the base type's assignment operators
+must not throw.
+
+[h4 Multiplication Operators]
+
+ quaternion<T>& operator *= (T const & rhs)
+ quaternion<T>& operator *= (::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& operator *= (quaternion<X> const & rhs);
+
+These perform the mathematical operation `(*this)*rhs` [*in this order]
+(order is important as multiplication is not commutative for quaternions)
+and store the result in `*this`. The unspecialized form has exception guards,
+which the specialized forms do not, so as to insure exception safety.
+For the unspecialized form, the base type's assignment operators must not throw.
+
+[h4 Division Operators]
+
+ quaternion<T>& operator /= (T const & rhs)
+ quaternion<T>& operator /= (::std::complex<T> const & rhs);
+ template<typename X>
+ quaternion<T>& operator /= (quaternion<X> const & rhs);
+
+These perform the mathematical operation `(*this)*inverse_of(rhs)` [*in this
+order] (order is important as multiplication is not commutative for quaternions)
+and store the result in `*this`. The unspecialized form has exception guards,
+which the specialized forms do not, so as to insure exception safety.
+For the unspecialized form, the base type's assignment operators must not throw.
+
+[endsect]
+[section:non_mem Quaternion Non-Member Operators]
+
+[h4 Unary Plus]
+
+ template<typename T>
+ quaternion<T> operator + (quaternion<T> const & q);
+
+This unary operator simply returns q.
+
+[h4 Unary Minus]
+
+ template<typename T>
+ quaternion<T> operator - (quaternion<T> const & q);
+
+This unary operator returns the opposite of q.
+
+[h4 Binary Addition Operators]
+
+ template<typename T> quaternion<T> operator + (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> operator + (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These operators return `quaternion<T>(lhs) += rhs`.
+
+[h4 Binary Subtraction Operators]
+
+ template<typename T> quaternion<T> operator - (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> operator - (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These operators return `quaternion<T>(lhs) -= rhs`.
+
+[h4 Binary Multiplication Operators]
+
+ template<typename T> quaternion<T> operator * (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> operator * (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These operators return `quaternion<T>(lhs) *= rhs`.
+
+[h4 Binary Division Operators]
+
+ template<typename T> quaternion<T> operator / (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> quaternion<T> operator / (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These operators return `quaternion<T>(lhs) /= rhs`. It is of course still an
+error to divide by zero...
+
+[h4 Equality Operators]
+
+ template<typename T> bool operator == (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool operator == (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> bool operator == (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool operator == (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool operator == (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These return true if and only if the four components of `quaternion<T>(lhs)`
+are equal to their counterparts in `quaternion<T>(rhs)`. As with any
+floating-type entity, this is essentially meaningless.
+
+[h4 Inequality Operators]
+
+ template<typename T> bool operator != (T const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool operator != (quaternion<T> const & lhs, T const & rhs);
+ template<typename T> bool operator != (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+ template<typename T> bool operator != (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+ template<typename T> bool operator != (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+These return true if and only if `quaternion<T>(lhs) == quaternion<T>(rhs)` is
+false. As with any floating-type entity, this is essentially meaningless.
+
+[h4 Stream Extractor]
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_istream<charT,traits>& operator >> (::std::basic_istream<charT,traits> & is, quaternion<T> & q);
+
+Extracts a quaternion q of one of the following forms
+(with a, b, c and d of type `T`):
+
+[^a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c), ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d))]
+
+The input values must be convertible to `T`. If bad input is encountered,
+calls `is.setstate(ios::failbit)` (which may throw ios::failure (27.4.5.3)).
+
+[*Returns:] `is`.
+
+The rationale for the list of accepted formats is that either we have a
+list of up to four reals, or else we have a couple of complex numbers,
+and in that case if it formated as a proper complex number, then it should
+be accepted. Thus potential ambiguities are lifted (for instance (a,b) is
+(a,b,0,0) and not (a,0,b,0), i.e. it is parsed as a list of two real numbers
+and not two complex numbers which happen to have imaginary parts equal to zero).
+
+[h4 Stream Inserter]
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits>& operator << (::std::basic_ostream<charT,traits> & os, quaternion<T> const & q);
+
+Inserts the quaternion q onto the stream `os` as if it were implemented as follows:
+
+ template<typename T, typename charT, class traits>
+ ::std::basic_ostream<charT,traits>& operator << (
+ ::std::basic_ostream<charT,traits> & os,
+ quaternion<T> const & q)
+ {
+ ::std::basic_ostringstream<charT,traits> s;
+
+ s.flags(os.flags());
+ s.imbue(os.getloc());
+ s.precision(os.precision());
+
+ s << '(' << q.R_component_1() << ','
+ << q.R_component_2() << ','
+ << q.R_component_3() << ','
+ << q.R_component_4() << ')';
+
+ return os << s.str();
+ }
+
+[endsect]
+
+[section:value_op Quaternion Value Operations]
+
+[h4 real and unreal]
+
+ template<typename T> T real(quaternion<T> const & q);
+ template<typename T> quaternion<T> unreal(quaternion<T> const & q);
+
+These return `q.real()` and `q.unreal()` respectively.
+
+[h4 conj]
+
+ template<typename T> quaternion<T> conj(quaternion<T> const & q);
+
+This returns the conjugate of the quaternion.
+
+[h4 sup]
+
+template<typename T> T sup(quaternion<T> const & q);
+
+This return the sup norm (the greatest among
+`abs(q.R_component_1())...abs(q.R_component_4()))` of the quaternion.
+
+[h4 l1]
+
+ template<typename T> T l1(quaternion<T> const & q);
+
+This return the l1 norm `(abs(q.R_component_1())+...+abs(q.R_component_4()))`
+of the quaternion.
+
+[h4 abs]
+
+ template<typename T> T abs(quaternion<T> const & q);
+
+This return the magnitude (Euclidian norm) of the quaternion.
+
+[h4 norm]
+
+ template<typename T> T norm(quaternion<T>const & q);
+
+This return the (Cayley) norm of the quaternion.
+The term "norm" might be confusing, as most people associate it with the
+Euclidian norm (and quadratic functionals). For this version of
+(the mathematical objects known as) quaternions, the Euclidian norm
+(also known as magnitude) is the square root of the Cayley norm.
+
+[endsect]
+
+[section:create Quaternion Creation Functions]
+
+ template<typename T> quaternion<T> spherical(T const & rho, T const & theta, T const & phi1, T const & phi2);
+ template<typename T> quaternion<T> semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2);
+ template<typename T> quaternion<T> multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2);
+ template<typename T> quaternion<T> cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude);
+ template<typename T> quaternion<T> cylindrical(T const & r, T const & angle, T const & h1, T const & h2);
+
+These build quaternions in a way similar to the way polar builds complex
+numbers, as there is no strict equivalent to polar coordinates for quaternions.
+
+[#boost_quaternions.quaternions.creation_spherical] `spherical` is a simple transposition of `polar`, it takes as inputs
+a (positive) magnitude and a point on the hypersphere, given by three angles.
+The first of these, `theta` has a natural range of `-pi` to `+pi`, and the other
+two have natural ranges of `-pi/2` to `+pi/2` (as is the case with the usual
+spherical coordinates in __R3). Due to the many symmetries and periodicities,
+nothing untoward happens if the magnitude is negative or the angles are
+outside their natural ranges. The expected degeneracies (a magnitude of
+zero ignores the angles settings...) do happen however.
+
+[#boost_quaternions.quaternions.creation_cylindrical] `cylindrical` is likewise a simple transposition of the usual
+cylindrical coordinates in __R3, which in turn is another derivative of
+planar polar coordinates. The first two inputs are the polar coordinates of
+the first __C component of the quaternion. The third and fourth inputs
+are placed into the third and fourth __R components of the quaternion,
+respectively.
+
+[#boost_quaternions.quaternions.creation_multipolar] `multipolar` is yet another simple generalization of polar coordinates.
+This time, both __C components of the quaternion are given in polar coordinates.
+
+[#boost_quaternions.quaternions.creation_cylindrospherical] `cylindrospherical` is specific to quaternions. It is often interesting to
+consider __H as the cartesian product of __R by __R3 (the quaternionic
+multiplication as then a special form, as given here). This function
+therefore builds a quaternion from this representation, with the __R3
+component given in usual __R3 spherical coordinates.
+
+[#boost_quaternions.quaternions.creation_semipolar] `semipolar` is another generator which is specific to quaternions.
+It takes as a first input the magnitude of the quaternion, as a
+second input an angle in the range `0` to `+pi/2` such that magnitudes
+of the first two __C components of the quaternion are the product of the
+first input and the sine and cosine of this angle, respectively, and finally
+as third and fourth inputs angles in the range `-pi/2` to `+pi/2` which
+represent the arguments of the first and second __C components of
+the quaternion, respectively. As usual, nothing untoward happens if
+what should be magnitudes are negative numbers or angles are out of their
+natural ranges, as symmetries and periodicities kick in.
+
+In this version of our implementation of quaternions, there is no
+analogue of the complex value operation `arg` as the situation is
+somewhat more complicated. Unit quaternions are linked both to
+rotations in __R3 and in __R4, and the correspondences are not too complicated,
+but there is currently a lack of standard (de facto or de jure) matrix
+library with which the conversions could work. This should be remedied in
+a further revision. In the mean time, an example of how this could be
+done is presented here for
+[@../../../quaternion/HSO3.hpp __R3], and here for
+[@../../../quaternion/HSO4.hpp __R4]
+([@../../../quaternion/HSO3SO4.cpp example test file]).
+
+[endsect]
+
+[section:trans Quaternion Transcendentals]
+
+There is no `log` or `sqrt` provided for quaternions in this implementation,
+and `pow` is likewise restricted to integral powers of the exponent.
+There are several reasons to this: on the one hand, the equivalent of
+analytic continuation for quaternions ("branch cuts") remains to be
+investigated thoroughly (by me, at any rate...), and we wish to avoid the
+nonsense introduced in the standard by exponentiations of complexes by
+complexes (which is well defined, but not in the standard...).
+Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is just
+plain brain-dead...
+
+We do, however provide several transcendentals, chief among which is the
+exponential. This author claims the complete proof of the "closed formula"
+as his own, as well as its independant invention (there are claims to prior
+invention of the formula, such as one by Professor Shoemake, and it is
+possible that the formula had been known a couple of centuries back, but in
+absence of bibliographical reference, the matter is pending, awaiting further
+investigation; on the other hand, the definition and existence of the
+exponential on the quaternions, is of course a fact known for a very long time).
+Basically, any converging power series with real coefficients which allows for a
+closed formula in __C can be transposed to __H. More transcendentals of this
+type could be added in a further revision upon request. It should be
+noted that it is these functions which force the dependency upon the
+[@../../../../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp] and the
+[@../../../../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp] headers.
+
+[h4 exp]
+
+ template<typename T> quaternion<T> exp(quaternion<T> const & q);
+
+Computes the exponential of the quaternion.
+
+[h4 cos]
+
+ template<typename T> quaternion<T> cos(quaternion<T> const & q);
+
+Computes the cosine of the quaternion
+
+[h4 sin]
+
+ template<typename T> quaternion<T> sin(quaternion<T> const & q);
+
+Computes the sine of the quaternion.
+
+[h4 tan]
+
+ template<typename T> quaternion<T> tan(quaternion<T> const & q);
+
+Computes the tangent of the quaternion.
+
+[h4 cosh]
+
+ template<typename T> quaternion<T> cosh(quaternion<T> const & q);
+
+Computes the hyperbolic cosine of the quaternion.
+
+[h4 sinh]
+
+ template<typename T> quaternion<T> sinh(quaternion<T> const & q);
+
+Computes the hyperbolic sine of the quaternion.
+
+[h4 tanh]
+
+ template<typename T> quaternion<T> tanh(quaternion<T> const & q);
+
+Computes the hyperbolic tangent of the quaternion.
+
+[h4 pow]
+
+ template<typename T> quaternion<T> pow(quaternion<T> const & q, int n);
+
+Computes the n-th power of the quaternion q.
+
+[endsect]
+
+[section Test Program]
+
+The [@../../../quaternion/quaternion_test.cpp quaternion_test.cpp]
+test program tests quaternions specializations for float, double and long double
+([@../../../quaternion/output.txt sample output], with message output
+enabled).
+
+If you define the symbol boost_quaternions_TEST_VERBOSE, you will get
+additional output ([@../../../quaternion/output_more.txt verbose output]);
+this will only be helpfull if you enable message output at the same time,
+of course (by uncommenting the relevant line in the test or by adding
+[^--log_level=messages] to your command line,...). In that case, and if you
+are running interactively, you may in addition define the symbol
+BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to interactively test the input
+operator with input of your choice from the standard input
+(instead of hard-coding it in the test).
+
+[endsect]
+
+[section:exp The Quaternionic Exponential]
+
+Please refer to the following PDF's:
+
+*[@../../../quaternion/TQE.pdf The Quaternionic Exponential (and beyond)]
+*[@../../../quaternion/TQE_EA.pdf The Quaternionic Exponential (and beyond) ERRATA & ADDENDA]
+
+[endsect]
+
+[section Acknowledgements]
+
+The mathematical text has been typeset with
+[@http://www.nisus-soft.com/ Nisus Writer]. Jens Maurer has helped with
+portability and standard adherence, and was the Review Manager
+for this library. More acknowledgements in the History section.
+Thank you to all who contributed to the discution about this library.
+
+[endsect]
+
+[section History]
+
+* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format.
+* 1.5.7 - 24/02/2003: transitionned to the unit test framework; <boost/config.hpp> now included by the library header (rather than the test files).
+* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis_at_[hidden]).
+* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael_at_[hidden]); requires the /Za compiler option.
+* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael_at_[hidden]) and Fredrik Blomqvist; other compatibility fixes.
+* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod_at_[hidden]).
+* 1.5.2 - 07/07/2001: introduced namespace math.
+* 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp> and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code.
+* 1.5.0 - 26/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version) and output operator, added spherical, semipolar, multipolar, cylindrospherical and cylindrical.
+* 1.4.0 - 09/01/2001: added tan and tanh.
+* 1.3.1 - 08/01/2001: cosmetic fixes.
+* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink_at_[hidden]) algorithm.
+* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures.
+* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh.
+* 1.0.0 - 10/08/1999: first public version.
+
+[endsect]
+[section To Do]
+
+* Improve testing.
+* Rewrite input operatore using Spirit (creates a dependency).
+* Put in place an Expression Template mechanism (perhaps borrowing from uBlas).
+* Use uBlas for the link with rotations (and move from the
+[@../../../quaternion/HSO3SO4.cpp example]
+implementation to an efficient one).
+
+[endsect]
+[endsect]

Modified: trunk/libs/math/doc/sf_and_dist/Jamfile.v2
==============================================================================
--- trunk/libs/math/doc/sf_and_dist/Jamfile.v2 (original)
+++ trunk/libs/math/doc/sf_and_dist/Jamfile.v2 2007-10-09 13:25:30 EDT (Tue, 09 Oct 2007)
@@ -61,7 +61,7 @@
         <format>pdf:<xsl:param>use.role.for.mediaobject=1
         <format>pdf:<xsl:param>preferred.mediaobject.role=print
         <format>pdf:<xsl:param>img.src.path=$(images_location)/
- <format>pdf:<xsl:param>admon.graphics.path=$(images_location)/../svg-admon/
+ <format>pdf:<xsl:param>admon.graphics.path=$(images_location)/../../svg-admon/
     ;
 
 
@@ -71,3 +71,4 @@
 
 
 
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk