forked from mpusz/mp-units
74 lines
40 KiB
HTML
74 lines
40 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.arith.ops]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Serif'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans+Mono'/><link rel='icon' href='icon.png'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Normal'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='alternate stylesheet' type='text/css' href='normative-only.css' title='Notes and examples hidden'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:50pt'>5</a> Quantities and units library <a class='abbr_ref' href='index.html#quantities'>[quantities]</a></h1><h2 ><a class='secnum' style='min-width:65pt'>5.6</a> Quantity <a class='abbr_ref' href='qty.html#arith.ops'>[qty]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.6.11</a> Arithmetic operations <a class='abbr_ref'>[qty.arith.ops]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4983'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'>In the following descriptions,
|
|
let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span><a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,operator%'><div id='lib:operator%,quantity'><div id='lib:quantity,operator-'><div id='lib:operator-,quantity'><div id='lib:quantity,operator+'><div id='lib:operator+,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'><</span>std<span class='operator'>::</span>plus<span class='anglebracket'><</span><span class='anglebracket'>></span>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities_'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'><</span>std<span class='operator'>::</span>minus<span class='anglebracket'><</span><span class='anglebracket'>></span>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'><</span>Rep<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'><</span>Rep2<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:CommonlyInvocableQuantities__'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'><</span>std<span class='operator'>::</span>modulus<span class='anglebracket'><</span><span class='anglebracket'>></span>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity__'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div></div></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5004'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'>Let <i >F</i> be the first argument to <a class='index' id='conceptref:CommonlyInvocableQuantities___'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5007'>#</a></div><div class='texpara'><div id='3.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>%</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#3.sentence-1'>.</a></div></div></div></div><div class='para' id='4'><div class='marginalizedparent'><a class='marginalized' href='#4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5011'>#</a></div><div class='texpara'><div id='4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>using</span> ret <span class='operator'>=</span> <i >common-quantity-for</i><span class='anglebracket'><</span><i >F</i>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>;
|
|
<span class='keyword'>const</span> ret ret_lhs<span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>const</span> ret ret_rhs<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>
|
|
ret_lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ret<span class='operator'>::</span>unit<span class='parenthesis'>)</span> @ ret_rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ret<span class='operator'>::</span>unit<span class='parenthesis'>)</span>,
|
|
ret<span class='operator'>::</span>reference<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator%_'><div id='lib:operator%,quantity_'><div id='lib:quantity,operator-_'><div id='lib:operator-,quantity_'><div id='lib:quantity,operator+_'><div id='lib:operator+,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity___'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation_'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf_'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity____'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation__'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf__'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_____'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div></div></div><div class='para' id='5'><div class='marginalizedparent'><a class='marginalized' href='#5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5043'>#</a></div><div class='texpara'><div id='5.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> lhs @ <span class='operator'>​::​</span>mp_<span class='shy'></span>units<span class='operator'>​::​</span>quantity<span class='curlybracket'>{</span>rhs<span class='curlybracket'>}</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator%__'><div id='lib:operator%,quantity__'><div id='lib:quantity,operator-__'><div id='lib:operator-,quantity__'><div id='lib:quantity,operator+__'><div id='lib:operator+,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation___'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf___'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity______'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation____'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf____'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_______'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation_____'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf_____'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div></div></div><div class='para' id='6'><div class='marginalizedparent'><a class='marginalized' href='#6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5068'>#</a></div><div class='texpara'><div id='6.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> <span class='operator'>​::​</span>mp_<span class='shy'></span>units<span class='operator'>​::​</span>quantity<span class='curlybracket'>{</span>lhs<span class='curlybracket'>}</span> @ rhs;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/'><div id='lib:operator/,quantity'><div id='lib:quantity,operator*'><div id='lib:operator*,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities'></a><span class='texttt'><i >InvocableQuantities</i></span><span class='anglebracket'><</span>std<span class='operator'>::</span>multiplies<span class='anglebracket'><</span><span class='anglebracket'>></span>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities_'></a><span class='texttt'><i >InvocableQuantities</i></span><span class='anglebracket'><</span>std<span class='operator'>::</span>divides<span class='anglebracket'><</span><span class='anglebracket'>></span>, quantity, quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity__________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='7'><div class='marginalizedparent'><a class='marginalized' href='#7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5086'>#</a></div><div class='texpara'><div id='7.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#7.sentence-1'>.</a></div></div></div></div><div class='para' id='8'><div class='marginalizedparent'><a class='marginalized' href='#8'>8</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5090'>#</a></div><div class='texpara'><div id='8.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>
|
|
lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span> @ rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>rhs<span class='operator'>.</span>unit<span class='parenthesis'>)</span>, R @ R2<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/_'><div id='lib:operator/,quantity_'><div id='lib:quantity,operator*_'><div id='lib:operator*,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity___________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference'><span class='texttt'>Reference</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf______'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity____________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference_'><span class='texttt'>Reference</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf_______'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'><</span><span class='anglebracket'>></span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf_'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='9'><div class='marginalizedparent'><a class='marginalized' href='#9'>9</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5113'>#</a></div><div class='texpara'><div id='9.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>rhs <span class='operator'>!</span><span class='operator'>=</span> representation_<span class='shy'></span>values<span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='operator'>​::​</span>zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#9.sentence-1'>.</a></div></div></div></div><div class='para' id='10'><div class='marginalizedparent'><a class='marginalized' href='#10'>10</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5117'>#</a></div><div class='texpara'><div id='10.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span> @ rhs, R<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/__'><div id='lib:operator/,quantity__'><div id='lib:quantity,operator*__'><div id='lib:operator*,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_____________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference__'><span class='texttt'>Reference</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'><</span><span class='anglebracket'>></span>, <span class='keyword'>const</span> Value<span class='operator'>&</span>, Rep<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf__'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity<span class='anglebracket'>></span> Q<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity______________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference___'><span class='texttt'>Reference</span></span></a><span class='anglebracket'><</span>Value<span class='anglebracket'>></span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:InvokeResultOf_________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'><</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'><</span><span class='anglebracket'>></span>, <span class='keyword'>const</span> Value<span class='operator'>&</span>, Rep<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_______________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='11'><div class='marginalizedparent'><a class='marginalized' href='#11'>11</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5139'>#</a></div><div class='texpara'><div id='11.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#11.sentence-1'>.</a></div></div></div></div><div class='para' id='12'><div class='marginalizedparent'><a class='marginalized' href='#12'>12</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5143'>#</a></div><div class='texpara'><div id='12.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>lhs @ rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span>, <span class='operator'>::</span>mp_units<span class='operator'>::</span>one @ R<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div></div></body></html> |