<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libstdc++: Rational Arithmetic</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libstdc++ </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('a01474.html','');}); /* @license-end */ </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#typedef-members">Typedefs</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <div class="title">Rational Arithmetic<div class="ingroups"><a class="el" href="a01477.html">Utilities</a></div></div> </div> </div><!--header--> <div class="contents"> <div class="dynheader"> Collaboration diagram for Rational Arithmetic:</div> <div class="dyncontent"> <center><table><tr><td><div class="center"><iframe scrolling="no" frameborder="0" src="a01474.svg" width="247" height="35"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe> </div> </td></tr></table></center> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a02712.html">std::ratio< _Num, _Den ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a02724.html">std::ratio_equal< _R1, _R2 ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a02728.html">std::ratio_not_equal< _R1, _R2 ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:gab89b6a439b3582240985f372bc381666"><td class="memTemplParams" colspan="2">template<typename _R1 , typename _R2 > </td></tr> <tr class="memitem:gab89b6a439b3582240985f372bc381666"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01474.html#gab89b6a439b3582240985f372bc381666">std::ratio_divide</a> = typename __ratio_divide< _R1, _R2 >::type</td></tr> <tr class="separator:gab89b6a439b3582240985f372bc381666"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa0eb766f5844bb5f3ccbeaae9b994257"><td class="memTemplParams" colspan="2">template<typename _R1 , typename _R2 > </td></tr> <tr class="memitem:gaa0eb766f5844bb5f3ccbeaae9b994257"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01474.html#gaa0eb766f5844bb5f3ccbeaae9b994257">std::ratio_multiply</a> = typename __ratio_multiply< _R1, _R2 >::type</td></tr> <tr class="separator:gaa0eb766f5844bb5f3ccbeaae9b994257"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga2c2933c16c723af4d77eb939438617ca"><td class="memItemLeft" align="right" valign="top"><a id="ga2c2933c16c723af4d77eb939438617ca"></a> typedef <a class="el" href="a02712.html">ratio</a>< num, den > </td><td class="memItemRight" valign="bottom"><b>std::ratio< _Num, _Den >::type</b></td></tr> <tr class="separator:ga2c2933c16c723af4d77eb939438617ca"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga28c2345a32045174befa71bd125be12b"><td class="memItemLeft" align="right" valign="top"><a id="ga28c2345a32045174befa71bd125be12b"></a> typedef <a class="el" href="a02712.html">ratio</a>< __safe_multiply<(_R1::num/__gcd1),(_R2::num/__gcd2)>::value, __safe_multiply<(_R1::den/__gcd2),(_R2::den/__gcd1)>::value > </td><td class="memItemRight" valign="bottom"><b>std::__ratio_multiply< _R1, _R2 >::type</b></td></tr> <tr class="separator:ga28c2345a32045174befa71bd125be12b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacc14f37b7718acce602a9633b7472e2c"><td class="memItemLeft" align="right" valign="top"><a id="gacc14f37b7718acce602a9633b7472e2c"></a> typedef __ratio_multiply< _R1, <a class="el" href="a02712.html">ratio</a>< _R2::den, _R2::num > >::<a class="el" href="a02712.html">type</a> </td><td class="memItemRight" valign="bottom"><b>std::__ratio_divide< _R1, _R2 >::type</b></td></tr> <tr class="separator:gacc14f37b7718acce602a9633b7472e2c"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> Variables</h2></td></tr> <tr class="memitem:ga143d45113a67fcb6b665545b1645c520"><td class="memItemLeft" align="right" valign="top"><a id="ga143d45113a67fcb6b665545b1645c520"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_add< __hi1, __lo1, __hi2, __lo2 >::__hi</b></td></tr> <tr class="separator:ga143d45113a67fcb6b665545b1645c520"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9de957ce6ae2968ab15e44f001f3a19b"><td class="memItemLeft" align="right" valign="top"><a id="ga9de957ce6ae2968ab15e44f001f3a19b"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_sub< __hi1, __lo1, __hi2, __lo2 >::__hi</b></td></tr> <tr class="separator:ga9de957ce6ae2968ab15e44f001f3a19b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga29f93d7f472b2ce29da617c2ec1c047b"><td class="memItemLeft" align="right" valign="top"><a id="ga29f93d7f472b2ce29da617c2ec1c047b"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_mul< __x, __y >::__hi</b></td></tr> <tr class="separator:ga29f93d7f472b2ce29da617c2ec1c047b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga609b61443af14864484677c7b18f3e09"><td class="memItemLeft" align="right" valign="top"><a id="ga609b61443af14864484677c7b18f3e09"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_add< __hi1, __lo1, __hi2, __lo2 >::__lo</b></td></tr> <tr class="separator:ga609b61443af14864484677c7b18f3e09"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gabb23f867fcd8a66d80fc9c63009881cc"><td class="memItemLeft" align="right" valign="top"><a id="gabb23f867fcd8a66d80fc9c63009881cc"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_sub< __hi1, __lo1, __hi2, __lo2 >::__lo</b></td></tr> <tr class="separator:gabb23f867fcd8a66d80fc9c63009881cc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3e2b5fdab9a0d8a04c7db3e64cd70b96"><td class="memItemLeft" align="right" valign="top"><a id="ga3e2b5fdab9a0d8a04c7db3e64cd70b96"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_mul< __x, __y >::__lo</b></td></tr> <tr class="separator:ga3e2b5fdab9a0d8a04c7db3e64cd70b96"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga19a7eec4be496834a9db7102651b5cb6"><td class="memItemLeft" align="right" valign="top"><a id="ga19a7eec4be496834a9db7102651b5cb6"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_div_impl< __n1, __n0, __d >::__quot</b></td></tr> <tr class="separator:ga19a7eec4be496834a9db7102651b5cb6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac8c07bcb0d67b6f50fada2731aa0f624"><td class="memItemLeft" align="right" valign="top"><a id="gac8c07bcb0d67b6f50fada2731aa0f624"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_div< __n1, __n0, __d >::__quot_hi</b></td></tr> <tr class="separator:gac8c07bcb0d67b6f50fada2731aa0f624"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga53e41ca0bfdc5a36addfc0ec8588c9fd"><td class="memItemLeft" align="right" valign="top"><a id="ga53e41ca0bfdc5a36addfc0ec8588c9fd"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_div< __n1, __n0, __d >::__quot_lo</b></td></tr> <tr class="separator:ga53e41ca0bfdc5a36addfc0ec8588c9fd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga38c34621c7e6f67af9eeccd5e98fed85"><td class="memItemLeft" align="right" valign="top"><a id="ga38c34621c7e6f67af9eeccd5e98fed85"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_div_impl< __n1, __n0, __d >::__rem</b></td></tr> <tr class="separator:ga38c34621c7e6f67af9eeccd5e98fed85"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga30f9e568ae83b3a5c72675ee33a9aa2a"><td class="memItemLeft" align="right" valign="top"><a id="ga30f9e568ae83b3a5c72675ee33a9aa2a"></a> static constexpr uintmax_t </td><td class="memItemRight" valign="bottom"><b>std::__big_div< __n1, __n0, __d >::__rem</b></td></tr> <tr class="separator:ga30f9e568ae83b3a5c72675ee33a9aa2a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga74b18a02929d0dfc37fc30b390390a8d"><td class="memItemLeft" align="right" valign="top"><a id="ga74b18a02929d0dfc37fc30b390390a8d"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::ratio< _Num, _Den >::den</b></td></tr> <tr class="separator:ga74b18a02929d0dfc37fc30b390390a8d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6a793ee0e1067e274556c4a7fece958a"><td class="memItemLeft" align="right" valign="top"><a id="ga6a793ee0e1067e274556c4a7fece958a"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::__ratio_multiply< _R1, _R2 >::den</b></td></tr> <tr class="separator:ga6a793ee0e1067e274556c4a7fece958a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga074e6f892ae4b4ce45b41a33cc40e857"><td class="memItemLeft" align="right" valign="top"><a id="ga074e6f892ae4b4ce45b41a33cc40e857"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::__ratio_divide< _R1, _R2 >::den</b></td></tr> <tr class="separator:ga074e6f892ae4b4ce45b41a33cc40e857"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac2dc623161a14481407fa34d8c469e45"><td class="memItemLeft" align="right" valign="top"><a id="gac2dc623161a14481407fa34d8c469e45"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::ratio< _Num, _Den >::num</b></td></tr> <tr class="separator:gac2dc623161a14481407fa34d8c469e45"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga134a92aae1bb5918777bee4d15c33841"><td class="memItemLeft" align="right" valign="top"><a id="ga134a92aae1bb5918777bee4d15c33841"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::__ratio_multiply< _R1, _R2 >::num</b></td></tr> <tr class="separator:ga134a92aae1bb5918777bee4d15c33841"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gae4300ef672f62992e5e01d456fd5fef6"><td class="memItemLeft" align="right" valign="top"><a id="gae4300ef672f62992e5e01d456fd5fef6"></a> static constexpr intmax_t </td><td class="memItemRight" valign="bottom"><b>std::__ratio_divide< _R1, _R2 >::num</b></td></tr> <tr class="separator:gae4300ef672f62992e5e01d456fd5fef6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gadbc0d08c7c45203c813a708c513ae6a0"><td class="memItemLeft" align="right" valign="top"><a id="gadbc0d08c7c45203c813a708c513ae6a0"></a> static const intmax_t </td><td class="memItemRight" valign="bottom"><b>std::__safe_multiply< _Pn, _Qn >::value</b></td></tr> <tr class="separator:gadbc0d08c7c45203c813a708c513ae6a0"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Compile time representation of finite rational numbers. </p> <h2 class="groupheader">Typedef Documentation</h2> <a id="gab89b6a439b3582240985f372bc381666"></a> <h2 class="memtitle"><span class="permalink"><a href="#gab89b6a439b3582240985f372bc381666">◆ </a></span>ratio_divide</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _R1 , typename _R2 > </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a01474.html#gab89b6a439b3582240985f372bc381666">std::ratio_divide</a> = typedef typename __ratio_divide<_R1, _R2>::type</td> </tr> </table> </div><div class="memdoc"> <p>ratio_divide </p> <p class="definition">Definition at line <a class="el" href="a00125_source.html#l00336">336</a> of file <a class="el" href="a00125_source.html">ratio</a>.</p> </div> </div> <a id="gaa0eb766f5844bb5f3ccbeaae9b994257"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaa0eb766f5844bb5f3ccbeaae9b994257">◆ </a></span>ratio_multiply</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _R1 , typename _R2 > </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a01474.html#gaa0eb766f5844bb5f3ccbeaae9b994257">std::ratio_multiply</a> = typedef typename __ratio_multiply<_R1, _R2>::type</td> </tr> </table> </div><div class="memdoc"> <p>ratio_multiply </p> <p class="definition">Definition at line <a class="el" href="a00125_source.html#l00313">313</a> of file <a class="el" href="a00125_source.html">ratio</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li> </ul> </div> </body> </html>