forked from mpusz/mp-units
18 lines
18 KiB
HTML
18 lines
18 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.unit.mag.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.4</a> Reference <a class='abbr_ref' href='qty.ref.html#qty.unit.mag.ops'>[qty.ref]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.4.4</a> Unit <a class='abbr_ref' href='qty.unit.html#mag.ops'>[qty.unit]</a></h3><h4 ><a class='secnum' style='min-width:95pt'>5.4.4.2</a> Magnitude <a class='abbr_ref' href='qty.unit.mag.html#ops'>[qty.unit.mag]</a></h4><h4 ><a class='secnum' style='min-width:110pt'>5.4.4.2.4</a> Operations <a class='abbr_ref'>[qty.unit.mag.ops]</a></h4><div class='texpara'><div id='lib:UnitMagnitude,operator*'><div id='lib:operator*,UnitMagnitude'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,UnitMagnitude'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude'><span class='texttt'>UnitMagnitude</span></span></a> M<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>consteval</span> <a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude_'><span class='texttt'>UnitMagnitude</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='texttt'><i >unit-magnitude</i></span> lhs, M rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2394'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'><i >Returns</i>: <ul class='itemize'><li id='1.1'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#1.1'>(1.1)</a></div><div class='texpara'><div id='1.1.sentence-1' class='sentence'>If <span class='texttt'><span class='keyword'>sizeof</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>(</span>Ms<span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> <span class='literal'>0</span></span> is <span class='texttt'><span class='literal'>true</span></span>, returns <span class='texttt'>rhs</span><a class='hidden_link' href='#1.1.sentence-1'>.</a></div></div></li><li id='1.2'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#1.2'>(1.2)</a></div><div class='texpara'><div id='1.2.sentence-1' class='sentence'>Otherwise, if <span class='texttt'>std<span class='operator'>​::​</span>is_<span class='shy'></span>same_<span class='shy'></span>v<span class='anglebracket'><</span>M, <span class='texttt'><i >unit-magnitude</i></span><span class='anglebracket'><</span><span class='anglebracket'>></span><span class='anglebracket'>></span></span>, returns <span class='texttt'>lhs</span><a class='hidden_link' href='#1.2.sentence-1'>.</a></div></div></li><li id='1.3'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#1.3'>(1.3)</a></div><div class='texpara'><div id='1.3.sentence-1' class='sentence'>Otherwise, returns an unspecified value equal to <span class='math'><span class='texttt'>lhs</span> ×<span class='texttt'>rhs</span></span><a class='hidden_link' href='#1.3.sentence-1'>.</a></div></div></li></ul></div></div></div></div><div class='texpara'><div id='lib:UnitMagnitude,operator/'><div id='lib:operator/,UnitMagnitude'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator/,UnitMagnitude'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>friend</span> <span class='keyword'>consteval</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='texttt'><i >unit-magnitude</i></span> lhs, <a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude__'><span class='texttt'>UnitMagnitude</span></span></a> <span class='keyword'>auto</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2412'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>lhs <span class='operator'>*</span> <span class='texttt'><i >pow</i></span><span class='anglebracket'><</span><span class='operator'>-</span><span class='literal'>1</span><span class='anglebracket'>></span><span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:UnitMagnitude,operator=='><div id='lib:operator==,UnitMagnitude'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator==,UnitMagnitude'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude___'><span class='texttt'>UnitMagnitude</span></span></a> Rhs<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>consteval</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='texttt'><i >unit-magnitude</i></span>, Rhs<span class='parenthesis'>)</span>;
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2424'>#</a></div><div class='texpara'><div id='3.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>​::​</span>is_<span class='shy'></span>same_<span class='shy'></span>v<span class='anglebracket'><</span><span class='texttt'><i >unit-magnitude</i></span>, Rhs<span class='anglebracket'>></span></span><a class='hidden_link' href='#3.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:pow,UnitMagnitude'><div id='lib:UnitMagnitude,pow'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:UnitMagnitude,pow'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>int</span> Num, <span class='keyword'>int</span> Den <span class='operator'>=</span> <span class='literal'>1</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>consteval</span> <span class='keyword'>auto</span> <span class='texttt'><i >pow</i></span><span class='parenthesis'>(</span><span class='texttt'><i >unit-magnitude</i></span> base<span class='parenthesis'>)</span>; <span class='comment'>// <i >exposition only</i></span>
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2436'>#</a></div><div class='texpara'><div id='4.sentence-1' class='sentence'><i >Returns</i>: <ul class='itemize'><li id='4.1'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#4.1'>(4.1)</a></div><div class='texpara'><div id='4.1.sentence-1' class='sentence'>If <span class='texttt'>Num <span class='operator'>=</span><span class='operator'>=</span> <span class='literal'>0</span></span> is <span class='texttt'><span class='literal'>true</span></span>, returns <span class='texttt'><span class='texttt'><i >unit-magnitude</i></span><span class='anglebracket'><</span><span class='anglebracket'>></span><span class='curlybracket'>{</span><span class='curlybracket'>}</span></span><a class='hidden_link' href='#4.1.sentence-1'>.</a></div></div></li><li id='4.2'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#4.2'>(4.2)</a></div><div class='texpara'><div id='4.2.sentence-1' class='sentence'>Otherwise, returns an unspecified value equal to <span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-msubsup"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.298em;">base</span></span></span></span></span><span class="mjx-sup" style="font-size: 70.7%; vertical-align: 0.513em; padding-left: 0px; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.298em;">Num</span></span></span></span><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">/</span></span></span></span><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.298em;">Den</span></span></span></span></span></span></span></span></span></span></span><a class='hidden_link' href='#4.2.sentence-1'>.</a></div></div></li></ul></div></div></div></div><div class='texpara'><div id='lib:mag'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:mag'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:MagArg'></a><span class='texttt'><i >MagArg</i></span> <span class='keyword'>auto</span> V<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude____'><span class='texttt'>UnitMagnitude</span></span></a> <span class='keyword'>auto</span> mag <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2453'>#</a></div><div class='texpara'><div id='5.sentence-1' class='sentence'><i >Constraints</i>: <span class='texttt'>V</span> is greater than <span class='math'>0</span><a class='hidden_link' href='#5.sentence-1'>.</a></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2457'>#</a></div><div class='texpara'><div id='6.sentence-1' class='sentence'><i >Effects</i>: If <span class='texttt'><a href='qty.unit.mag.concepts.html#concept:MagConstant' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:MagConstant'><span class='texttt'>MagConstant</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>V<span class='parenthesis'>)</span><span class='anglebracket'>></span></span> is satisfied,
|
|
initializes <span class='texttt'>mag</span> with <span class='texttt'><span class='texttt'><i >unit-magnitude</i></span><span class='anglebracket'><</span>V<span class='anglebracket'>></span><span class='curlybracket'>{</span><span class='curlybracket'>}</span></span><a class='hidden_link' href='#6.sentence-1'>.</a></div> <div id='6.sentence-2' class='sentence'>Otherwise, initializes <span class='texttt'>mag</span> with
|
|
an unspecified value equal to <span class='texttt'>V</span><a class='hidden_link' href='#6.sentence-2'>.</a></div></div></div></div><div class='texpara'><div id='lib:mag_ratio'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:mag_ratio'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>intmax_t N, std<span class='operator'>::</span>intmax_t D<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>N <span class='anglebracket'>></span> <span class='literal'>0</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> <a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude_____'><span class='texttt'>UnitMagnitude</span></span></a> <span class='keyword'>auto</span> mag_ratio <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2473'>#</a></div><div class='texpara'><div id='7.sentence-1' class='sentence'><i >Effects</i>: Initializes <span class='texttt'>mag_<span class='shy'></span>ratio</span> with
|
|
an unspecified value equal to <span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.298em;">N</span></span></span></span><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">/</span></span></span></span><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.225em;">D</span></span></span></span></span></span></span><a class='hidden_link' href='#7.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:mag_power'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:mag_power'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:MagArg_'></a><span class='texttt'><i >MagArg</i></span> <span class='keyword'>auto</span> Base, <span class='keyword'>int</span> Num, <span class='keyword'>int</span> Den <span class='operator'>=</span> <span class='literal'>1</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='qty.unit.mag.concepts.html#concept:UnitMagnitude' title='5.4.4.2.2 Concepts [qty.unit.mag.concepts]'><span id='conceptref:UnitMagnitude______'><span class='texttt'>UnitMagnitude</span></span></a> <span class='keyword'>auto</span> mag_power <span class='operator'>=</span> <span class='texttt'><i >pow</i></span><span class='anglebracket'><</span>Num, Den<span class='anglebracket'>></span><span class='parenthesis'>(</span>mag<span class='anglebracket'><</span>Base<span class='anglebracket'>></span><span class='parenthesis'>)</span>;
|
|
</code></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-unitsf5f502e76f0206565e7dd0453b25e6f87a45a412/source/quantities.tex#L2486'>#</a></div><div class='texpara'><div id='8.sentence-1' class='sentence'><i >Constraints</i>: <span class='texttt'>Base</span> is greater than <span class='math'>0</span><a class='hidden_link' href='#8.sentence-1'>.</a></div></div></div></div></div></body></html> |