1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Quaternion Member Functions</title> 5<link rel="stylesheet" href="../math.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../index.html" title="Math Toolkit 2.12.0"> 8<link rel="up" href="../quaternions.html" title="Chapter 16. Quaternions"> 9<link rel="prev" href="mem_typedef.html" title="Quaternion Member Typedefs"> 10<link rel="next" href="quat_non_mem.html" title="Quaternion Non-Member Operators"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="mem_typedef.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quat_non_mem.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 27<a name="math_toolkit.quat_mem_fun"></a><a class="link" href="quat_mem_fun.html" title="Quaternion Member Functions">Quaternion Member Functions</a> 28</h2></div></div></div> 29<h4> 30<a name="math_toolkit.quat_mem_fun.h0"></a> 31 <span class="phrase"><a name="math_toolkit.quat_mem_fun.constructors"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.constructors">Constructors</a> 32 </h4> 33<p> 34 Template version: 35 </p> 36<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">&</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">&</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">&</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">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">());</span> 37<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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="identifier">T</span><span class="special">>());</span> 38<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 39<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 40</pre> 41<p> 42 Float specialization version: 43 </p> 44<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">&</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">&</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">&</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">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0f</span><span class="special">);</span> 45<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"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">float</span><span class="special">>());</span> 46<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 47<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 48</pre> 49<p> 50 Double specialization version: 51 </p> 52<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">&</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">&</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">&</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">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">);</span> 53<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"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">double</span><span class="special">>());</span> 54<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 55<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 56</pre> 57<p> 58 Long double specialization version: 59 </p> 60<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">&</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">&</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">&</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 class="keyword">const</span> <span class="special">&</span> <span class="identifier">requested_d</span> <span class="special">=</span> <span class="number">0.0L</span><span class="special">);</span> 61<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"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</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"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>());</span> 62<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 63<span class="keyword">explicit</span> <span class="identifier">quaternion</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_recopier</span><span class="special">);</span> 64</pre> 65<p> 66 A default constructor is provided for each form, which initializes each component 67 to the default values for their type (i.e. zero for floating numbers). This 68 constructor can also accept one to four base type arguments. A constructor 69 is also provided to build quaternions from one or two complex numbers sharing 70 the same base type. The unspecialized template also sports a templarized copy 71 constructor, while the specialized forms have copy constructors from the other 72 two specializations, which are explicit when a risk of precision loss exists. 73 For the unspecialized form, the base type's constructors must not throw. 74 </p> 75<p> 76 Destructors and untemplated copy constructors (from the same type) are provided 77 by the compiler. Converting copy constructors make use of a templated helper 78 function in a "detail" subnamespace. 79 </p> 80<h4> 81<a name="math_toolkit.quat_mem_fun.h1"></a> 82 <span class="phrase"><a name="math_toolkit.quat_mem_fun.other_member_functions"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.other_member_functions">Other 83 member functions</a> 84 </h4> 85<h5> 86<a name="math_toolkit.quat_mem_fun.h2"></a> 87 <span class="phrase"><a name="math_toolkit.quat_mem_fun.real_and_unreal_parts"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.real_and_unreal_parts">Real 88 and Unreal Parts</a> 89 </h5> 90<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> 91<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">unreal</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> 92</pre> 93<p> 94 Like complex number, quaternions do have a meaningful notion of "real 95 part", but unlike them there is no meaningful notion of "imaginary 96 part". Instead there is an "unreal part" which itself is a quaternion, 97 and usually nothing simpler (as opposed to the complex number case). These 98 are returned by the first two functions. 99 </p> 100<h5> 101<a name="math_toolkit.quat_mem_fun.h3"></a> 102 <span class="phrase"><a name="math_toolkit.quat_mem_fun.individual_real_components"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_real_components">Individual 103 Real Components</a> 104 </h5> 105<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> 106<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> 107<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> 108<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> 109</pre> 110<p> 111 A quaternion having four real components, these are returned by these four 112 functions. Hence real and R_component_1 return the same value. 113 </p> 114<h5> 115<a name="math_toolkit.quat_mem_fun.h4"></a> 116 <span class="phrase"><a name="math_toolkit.quat_mem_fun.individual_complex_components"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.individual_complex_components">Individual 117 Complex Components</a> 118 </h5> 119<pre class="programlisting"><span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_1</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> 120<span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">C_component_2</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> 121</pre> 122<p> 123 A quaternion likewise has two complex components, and as we have seen above, 124 for any quaternion <span class="emphasis"><em><code class="literal">q = α + βi + γj + δk</code></em></span> we also have 125 <span class="emphasis"><em><code class="literal">q = (α + βi) + (γ + δi)j </code></em></span>. These functions return them. 126 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> 127 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>. 128 </p> 129<h4> 130<a name="math_toolkit.quat_mem_fun.h5"></a> 131 <span class="phrase"><a name="math_toolkit.quat_mem_fun.quaternion_member_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.quaternion_member_operators">Quaternion 132 Member Operators</a> 133 </h4> 134<h5> 135<a name="math_toolkit.quat_mem_fun.h6"></a> 136 <span class="phrase"><a name="math_toolkit.quat_mem_fun.assignment_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.assignment_operators">Assignment 137 Operators</a> 138 </h5> 139<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span> 140<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 141<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span> 142<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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">&</span> <span class="identifier">a_affecter</span><span class="special">);</span> 143<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a_affecter</span><span class="special">);</span> 144</pre> 145<p> 146 These perform the expected assignment, with type modification if necessary 147 (for instance, assigning from a base type will set the real part to that value, 148 and all other components to zero). For the unspecialized form, the base type's 149 assignment operators must not throw. 150 </p> 151<h5> 152<a name="math_toolkit.quat_mem_fun.h7"></a> 153 <span class="phrase"><a name="math_toolkit.quat_mem_fun.addition_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.addition_operators">Addition 154 Operators</a> 155 </h5> 156<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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">&</span> <span class="identifier">rhs</span><span class="special">)</span> 157<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 158<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 159<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 160</pre> 161<p> 162 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> 163 and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. 164 The unspecialized form has exception guards, which the specialized forms do 165 not, so as to insure exception safety. For the unspecialized form, the base 166 type's assignment operators must not throw. 167 </p> 168<h5> 169<a name="math_toolkit.quat_mem_fun.h8"></a> 170 <span class="phrase"><a name="math_toolkit.quat_mem_fun.subtraction_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.subtraction_operators">Subtraction 171 Operators</a> 172 </h5> 173<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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">&</span> <span class="identifier">rhs</span><span class="special">)</span> 174<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 175<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 176<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">-=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 177</pre> 178<p> 179 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> 180 and store the result in <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>. 181 The unspecialized form has exception guards, which the specialized forms do 182 not, so as to insure exception safety. For the unspecialized form, the base 183 type's assignment operators must not throw. 184 </p> 185<h5> 186<a name="math_toolkit.quat_mem_fun.h9"></a> 187 <span class="phrase"><a name="math_toolkit.quat_mem_fun.multiplication_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.multiplication_operators">Multiplication 188 Operators</a> 189 </h5> 190<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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">&</span> <span class="identifier">rhs</span><span class="special">)</span> 191<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 192<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 193<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 194</pre> 195<p> 196 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> 197 <span class="bold"><strong>in this order</strong></span> (order is important as multiplication 198 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, 199 which the specialized forms do not, so as to insure exception safety. For the 200 unspecialized form, the base type's assignment operators must not throw. 201 </p> 202<h5> 203<a name="math_toolkit.quat_mem_fun.h10"></a> 204 <span class="phrase"><a name="math_toolkit.quat_mem_fun.division_operators"></a></span><a class="link" href="quat_mem_fun.html#math_toolkit.quat_mem_fun.division_operators">Division 205 Operators</a> 206 </h5> 207<pre class="programlisting"><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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">&</span> <span class="identifier">rhs</span><span class="special">)</span> 208<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</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"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 209<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">X</span><span class="special">></span> 210<span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="identifier">quaternion</span><span class="special"><</span><span class="identifier">X</span><span class="special">></span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span> 211</pre> 212<p> 213 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> 214 <span class="bold"><strong>in this order</strong></span> (order is important as multiplication 215 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, 216 which the specialized forms do not, so as to insure exception safety. For the 217 unspecialized form, the base type's assignment operators must not throw. 218 </p> 219</div> 220<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 221<td align="left"></td> 222<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar 223 Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, 224 Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan 225 Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, 226 Daryle Walker and Xiaogang Zhang<p> 227 Distributed under the Boost Software License, Version 1.0. (See accompanying 228 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 229 </p> 230</div></td> 231</tr></table> 232<hr> 233<div class="spirit-nav"> 234<a accesskey="p" href="mem_typedef.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quaternions.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quat_non_mem.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 235</div> 236</body> 237</html> 238