mlx/docs/build/html/backend_2metal_2kernels_2fft_8h.html
CircleCI Docs c996fc9d45 rebase
2025-06-04 01:01:53 +00:00

1105 lines
54 KiB
HTML

<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MLX: mlx/backend/metal/kernels/fft.h File Reference</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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectrow">
<td id="projectalign">
<div id="projectname">MLX
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',false);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_938ab0ecf10b8b860ff766c820f665fd.html">mlx</a></li><li class="navelem"><a class="el" href="dir_1d446c9bd3c99228254c9484e0bc5c06.html">backend</a></li><li class="navelem"><a class="el" href="dir_d0c977ea65824390717cdb7efc36c157.html">metal</a></li><li class="navelem"><a class="el" href="dir_70a37effa88bcbd6b791977fa1e64356.html">kernels</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">fft.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;metal_common&gt;</code><br />
<code>#include &quot;<a class="el" href="radix_8h_source.html">mlx/backend/metal/kernels/fft/radix.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="readwrite_8h_source.html">mlx/backend/metal/kernels/fft/readwrite.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="steel_2defines_8h_source.html">mlx/backend/metal/kernels/steel/defines.h</a>&quot;</code><br />
</div>
<p><a href="backend_2metal_2kernels_2fft_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a7b6e56afa21f022c5e754b000955735a" id="r_a7b6e56afa21f022c5e754b000955735a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7b6e56afa21f022c5e754b000955735a">MAX_RADIX</a>&#160;&#160;&#160;13</td></tr>
<tr class="separator:a7b6e56afa21f022c5e754b000955735a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28d683cf067736d76f867f30c066317e" id="r_a28d683cf067736d76f867f30c066317e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a28d683cf067736d76f867f30c066317e">MAX_OUTPUT_SIZE</a>&#160;&#160;&#160;18</td></tr>
<tr class="separator:a28d683cf067736d76f867f30c066317e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a794032d3a9acff0e31c77c69d0007f10" id="r_a794032d3a9acff0e31c77c69d0007f10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a794032d3a9acff0e31c77c69d0007f10">RADIX_STEP</a>(radix, <a class="el" href="metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f">radix_func</a>, num_steps)</td></tr>
<tr class="separator:a794032d3a9acff0e31c77c69d0007f10"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a6ba62eabfd5428644aabf89ddaa0128d" id="r_a6ba62eabfd5428644aabf89ddaa0128d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ba62eabfd5428644aabf89ddaa0128d">RadixFunc</a>) (thread float2 *, thread float2 *)</td></tr>
<tr class="separator:a6ba62eabfd5428644aabf89ddaa0128d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a278d980ed397e6841ce0af44b9aa4396" id="r_a278d980ed397e6841ce0af44b9aa4396"><td class="memTemplParams" colspan="2">template&lt;int radix, <a class="el" href="#a6ba62eabfd5428644aabf89ddaa0128d">RadixFunc</a> radix_func&gt; </td></tr>
<tr class="memitem:a278d980ed397e6841ce0af44b9aa4396"><td class="memTemplItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a278d980ed397e6841ce0af44b9aa4396">radix_butterfly</a> (int i, int p, thread float2 *x, thread short *indices, thread float2 *y)</td></tr>
<tr class="separator:a278d980ed397e6841ce0af44b9aa4396"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba8d32e0911499671df93678f39da08b" id="r_aba8d32e0911499671df93678f39da08b"><td class="memTemplParams" colspan="2">template&lt;int radix, <a class="el" href="#a6ba62eabfd5428644aabf89ddaa0128d">RadixFunc</a> radix_func&gt; </td></tr>
<tr class="memitem:aba8d32e0911499671df93678f39da08b"><td class="memTemplItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aba8d32e0911499671df93678f39da08b">radix_n_steps</a> (int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *<a class="el" href="backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697">buf</a>)</td></tr>
<tr class="separator:aba8d32e0911499671df93678f39da08b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a050ead8fa5cacdaec13d68ca3c0dcb81" id="r_a050ead8fa5cacdaec13d68ca3c0dcb81"><td class="memTemplParams" colspan="2">template&lt;bool rader = false&gt; </td></tr>
<tr class="memitem:a050ead8fa5cacdaec13d68ca3c0dcb81"><td class="memTemplItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a050ead8fa5cacdaec13d68ca3c0dcb81">perform_fft</a> (int fft_idx, thread int *p, int m, int n, threadgroup float2 *<a class="el" href="backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697">buf</a>)</td></tr>
<tr class="separator:a050ead8fa5cacdaec13d68ca3c0dcb81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4010b0e151e5f01e610e9c32234458c7" id="r_a4010b0e151e5f01e610e9c32234458c7"><td class="memTemplParams" colspan="2">template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </td></tr>
<tr class="memitem:a4010b0e151e5f01e610e9c32234458c7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a4010b0e151e5f01e610e9c32234458c7">fft</a> (const device in_T *in, device out_T *out, constant const int &amp;n, constant const int &amp;batch_size, uint3 elem, uint3 grid)</td></tr>
<tr class="separator:a4010b0e151e5f01e610e9c32234458c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad123452303f6415904f3592f660769b8" id="r_ad123452303f6415904f3592f660769b8"><td class="memTemplParams" colspan="2">template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </td></tr>
<tr class="memitem:ad123452303f6415904f3592f660769b8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#ad123452303f6415904f3592f660769b8">rader_fft</a> (const device in_T *in, device out_T *out, const device float2 *raders_b_q, const device short *raders_g_q, const device short *raders_g_minus_q, constant const int &amp;n, constant const int &amp;batch_size, constant const int &amp;rader_n, uint3 elem, uint3 grid)</td></tr>
<tr class="separator:ad123452303f6415904f3592f660769b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0abc609e9756475800e996775a96a87e" id="r_a0abc609e9756475800e996775a96a87e"><td class="memTemplParams" colspan="2">template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </td></tr>
<tr class="memitem:a0abc609e9756475800e996775a96a87e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a0abc609e9756475800e996775a96a87e">bluestein_fft</a> (const device in_T *in, device out_T *out, const device float2 *w_q, const device float2 *w_k, constant const int &amp;length, constant const int &amp;n, constant const int &amp;batch_size, uint3 elem, uint3 grid)</td></tr>
<tr class="separator:a0abc609e9756475800e996775a96a87e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6558a8205ee4c3e4767bafa93f7606de" id="r_a6558a8205ee4c3e4767bafa93f7606de"><td class="memTemplParams" colspan="2">template&lt;int tg_mem_size, typename in_T , typename out_T , int step, bool real = false&gt; </td></tr>
<tr class="memitem:a6558a8205ee4c3e4767bafa93f7606de"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a6558a8205ee4c3e4767bafa93f7606de">four_step_fft</a> (const device in_T *in, device out_T *out, constant const int &amp;n1, constant const int &amp;n2, constant const int &amp;batch_size, uint3 elem, uint3 grid)</td></tr>
<tr class="separator:a6558a8205ee4c3e4767bafa93f7606de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a7a83318497519ff3ff0141b7d511ed38" id="r_a7a83318497519ff3ff0141b7d511ed38"><td class="memItemLeft" align="right" valign="top">static constant constexpr const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a83318497519ff3ff0141b7d511ed38">inv_</a></td></tr>
<tr class="separator:a7a83318497519ff3ff0141b7d511ed38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a4df90e329b84ee6c1890ba7c265c9c" id="r_a2a4df90e329b84ee6c1890ba7c265c9c"><td class="memItemLeft" align="right" valign="top">static constant constexpr const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2a4df90e329b84ee6c1890ba7c265c9c">is_power_of_2_</a></td></tr>
<tr class="separator:a2a4df90e329b84ee6c1890ba7c265c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad395c11e6f2aee72cd1928fba93a35a3" id="r_ad395c11e6f2aee72cd1928fba93a35a3"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad395c11e6f2aee72cd1928fba93a35a3">elems_per_thread_</a></td></tr>
<tr class="separator:ad395c11e6f2aee72cd1928fba93a35a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac309c77ef775a3ef13850c5287a86480" id="r_ac309c77ef775a3ef13850c5287a86480"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac309c77ef775a3ef13850c5287a86480">rader_m_</a></td></tr>
<tr class="separator:ac309c77ef775a3ef13850c5287a86480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb079b86e89ca88ce13a179d9ec566af" id="r_abb079b86e89ca88ce13a179d9ec566af"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abb079b86e89ca88ce13a179d9ec566af">radix_13_steps_</a></td></tr>
<tr class="separator:abb079b86e89ca88ce13a179d9ec566af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cd17bff8bc567f71d4789ee31fa07f2" id="r_a7cd17bff8bc567f71d4789ee31fa07f2"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7cd17bff8bc567f71d4789ee31fa07f2">radix_11_steps_</a></td></tr>
<tr class="separator:a7cd17bff8bc567f71d4789ee31fa07f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cb03a97a209ba1346375e720ee76177" id="r_a3cb03a97a209ba1346375e720ee76177"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3cb03a97a209ba1346375e720ee76177">radix_8_steps_</a></td></tr>
<tr class="separator:a3cb03a97a209ba1346375e720ee76177"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2145cc8ab4d07583a735317b3cf60d55" id="r_a2145cc8ab4d07583a735317b3cf60d55"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2145cc8ab4d07583a735317b3cf60d55">radix_7_steps_</a></td></tr>
<tr class="separator:a2145cc8ab4d07583a735317b3cf60d55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f7f7cc2423cfcd4998d1a2a0363c3e2" id="r_a2f7f7cc2423cfcd4998d1a2a0363c3e2"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2f7f7cc2423cfcd4998d1a2a0363c3e2">radix_6_steps_</a></td></tr>
<tr class="separator:a2f7f7cc2423cfcd4998d1a2a0363c3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a903d5239b5f73577c559e97ff910892d" id="r_a903d5239b5f73577c559e97ff910892d"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a903d5239b5f73577c559e97ff910892d">radix_5_steps_</a></td></tr>
<tr class="separator:a903d5239b5f73577c559e97ff910892d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12d99a846c3686806bab6c42148e1039" id="r_a12d99a846c3686806bab6c42148e1039"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a12d99a846c3686806bab6c42148e1039">radix_4_steps_</a></td></tr>
<tr class="separator:a12d99a846c3686806bab6c42148e1039"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a579123b7be825f08f3076287dded08e3" id="r_a579123b7be825f08f3076287dded08e3"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a579123b7be825f08f3076287dded08e3">radix_3_steps_</a></td></tr>
<tr class="separator:a579123b7be825f08f3076287dded08e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53fdc660e99e6b5db6808bbd596cd374" id="r_a53fdc660e99e6b5db6808bbd596cd374"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a53fdc660e99e6b5db6808bbd596cd374">radix_2_steps_</a></td></tr>
<tr class="separator:a53fdc660e99e6b5db6808bbd596cd374"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20d24f3e040d3d226a70d4dd7c9ac6a9" id="r_a20d24f3e040d3d226a70d4dd7c9ac6a9"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a20d24f3e040d3d226a70d4dd7c9ac6a9">rader_13_steps_</a></td></tr>
<tr class="separator:a20d24f3e040d3d226a70d4dd7c9ac6a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f3c377d05da52429172e64132dba750" id="r_a1f3c377d05da52429172e64132dba750"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1f3c377d05da52429172e64132dba750">rader_11_steps_</a></td></tr>
<tr class="separator:a1f3c377d05da52429172e64132dba750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6123e111816dd62a11ccb86b66fa3e9" id="r_ac6123e111816dd62a11ccb86b66fa3e9"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac6123e111816dd62a11ccb86b66fa3e9">rader_8_steps_</a></td></tr>
<tr class="separator:ac6123e111816dd62a11ccb86b66fa3e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d437aef17faf8d9707ae7ffe68fdb30" id="r_a0d437aef17faf8d9707ae7ffe68fdb30"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0d437aef17faf8d9707ae7ffe68fdb30">rader_7_steps_</a></td></tr>
<tr class="separator:a0d437aef17faf8d9707ae7ffe68fdb30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a020469d1aca557ff1b49414f121dedbb" id="r_a020469d1aca557ff1b49414f121dedbb"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a020469d1aca557ff1b49414f121dedbb">rader_6_steps_</a></td></tr>
<tr class="separator:a020469d1aca557ff1b49414f121dedbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afea05e9a7105bafbaafca25042f4d1b4" id="r_afea05e9a7105bafbaafca25042f4d1b4"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afea05e9a7105bafbaafca25042f4d1b4">rader_5_steps_</a></td></tr>
<tr class="separator:afea05e9a7105bafbaafca25042f4d1b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7c58404df0434d4f861db62d3471870" id="r_ac7c58404df0434d4f861db62d3471870"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac7c58404df0434d4f861db62d3471870">rader_4_steps_</a></td></tr>
<tr class="separator:ac7c58404df0434d4f861db62d3471870"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb129cc3808c08fd95af9795bfc7ae63" id="r_adb129cc3808c08fd95af9795bfc7ae63"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adb129cc3808c08fd95af9795bfc7ae63">rader_3_steps_</a></td></tr>
<tr class="separator:adb129cc3808c08fd95af9795bfc7ae63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d725bfd4c30be4c605b5c4559a62892" id="r_a2d725bfd4c30be4c605b5c4559a62892"><td class="memItemLeft" align="right" valign="top">static constant constexpr const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2d725bfd4c30be4c605b5c4559a62892">rader_2_steps_</a></td></tr>
<tr class="separator:a2d725bfd4c30be4c605b5c4559a62892"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a28d683cf067736d76f867f30c066317e" name="a28d683cf067736d76f867f30c066317e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28d683cf067736d76f867f30c066317e">&#9670;&#160;</a></span>MAX_OUTPUT_SIZE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_OUTPUT_SIZE&#160;&#160;&#160;18</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7b6e56afa21f022c5e754b000955735a" name="a7b6e56afa21f022c5e754b000955735a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b6e56afa21f022c5e754b000955735a">&#9670;&#160;</a></span>MAX_RADIX</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_RADIX&#160;&#160;&#160;13</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a794032d3a9acff0e31c77c69d0007f10" name="a794032d3a9acff0e31c77c69d0007f10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a794032d3a9acff0e31c77c69d0007f10">&#9670;&#160;</a></span>RADIX_STEP</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define RADIX_STEP</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>radix</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em><a class="el" href="metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f">radix_func</a></em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>num_steps</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code hl_function" href="#aba8d32e0911499671df93678f39da08b">radix_n_steps&lt;radix, radix_func&gt;</a>( \</div>
<div class="line"> fft_idx, p, m, n, num_steps, inputs, indices, values, <a class="code hl_variable" href="backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697">buf</a>);</div>
<div class="ttc" id="abackend_2metal_2allocator_8h_html_a15aa5cc1baf29be08d55cca88509e697"><div class="ttname"><a href="backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697">buf</a></div><div class="ttdeci">MTL::Buffer * buf</div><div class="ttdef"><b>Definition</b> allocator.h:39</div></div>
<div class="ttc" id="abackend_2metal_2kernels_2fft_8h_html_aba8d32e0911499671df93678f39da08b"><div class="ttname"><a href="#aba8d32e0911499671df93678f39da08b">radix_n_steps</a></div><div class="ttdeci">METAL_FUNC void radix_n_steps(int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *buf)</div><div class="ttdef"><b>Definition</b> fft.h:100</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a6ba62eabfd5428644aabf89ddaa0128d" name="a6ba62eabfd5428644aabf89ddaa0128d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ba62eabfd5428644aabf89ddaa0128d">&#9670;&#160;</a></span>RadixFunc</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* RadixFunc) (thread float2 *, thread float2 *)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a0abc609e9756475800e996775a96a87e" name="a0abc609e9756475800e996775a96a87e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0abc609e9756475800e996775a96a87e">&#9670;&#160;</a></span>bluestein_fft()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void bluestein_fft </td>
<td>(</td>
<td class="paramtype">const device in_T *</td> <td class="paramname"><span class="paramname"><em>in</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">device out_T *</td> <td class="paramname"><span class="paramname"><em>out</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_q</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>batch_size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>elem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>grid</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4010b0e151e5f01e610e9c32234458c7" name="a4010b0e151e5f01e610e9c32234458c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4010b0e151e5f01e610e9c32234458c7">&#9670;&#160;</a></span>fft()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void fft </td>
<td>(</td>
<td class="paramtype">const device in_T *</td> <td class="paramname"><span class="paramname"><em>in</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">device out_T *</td> <td class="paramname"><span class="paramname"><em>out</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>batch_size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>elem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>grid</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6558a8205ee4c3e4767bafa93f7606de" name="a6558a8205ee4c3e4767bafa93f7606de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6558a8205ee4c3e4767bafa93f7606de">&#9670;&#160;</a></span>four_step_fft()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int tg_mem_size, typename in_T , typename out_T , int step, bool real = false&gt; </div>
<table class="memname">
<tr>
<td class="memname">void four_step_fft </td>
<td>(</td>
<td class="paramtype">const device in_T *</td> <td class="paramname"><span class="paramname"><em>in</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">device out_T *</td> <td class="paramname"><span class="paramname"><em>out</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>n1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>n2</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>batch_size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>elem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>grid</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a050ead8fa5cacdaec13d68ca3c0dcb81" name="a050ead8fa5cacdaec13d68ca3c0dcb81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a050ead8fa5cacdaec13d68ca3c0dcb81">&#9670;&#160;</a></span>perform_fft()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;bool rader = false&gt; </div>
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void perform_fft </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>fft_idx</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread int *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>m</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">threadgroup float2 *</td> <td class="paramname"><span class="paramname"><em>buf</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad123452303f6415904f3592f660769b8" name="ad123452303f6415904f3592f660769b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad123452303f6415904f3592f660769b8">&#9670;&#160;</a></span>rader_fft()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int tg_mem_size, typename in_T , typename out_T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void rader_fft </td>
<td>(</td>
<td class="paramtype">const device in_T *</td> <td class="paramname"><span class="paramname"><em>in</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">device out_T *</td> <td class="paramname"><span class="paramname"><em>out</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>raders_b_q</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device short *</td> <td class="paramname"><span class="paramname"><em>raders_g_q</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device short *</td> <td class="paramname"><span class="paramname"><em>raders_g_minus_q</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>batch_size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">constant const int &amp;</td> <td class="paramname"><span class="paramname"><em>rader_n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>elem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint3</td> <td class="paramname"><span class="paramname"><em>grid</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a278d980ed397e6841ce0af44b9aa4396" name="a278d980ed397e6841ce0af44b9aa4396"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a278d980ed397e6841ce0af44b9aa4396">&#9670;&#160;</a></span>radix_butterfly()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int radix, <a class="el" href="#a6ba62eabfd5428644aabf89ddaa0128d">RadixFunc</a> radix_func&gt; </div>
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void radix_butterfly </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>i</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread float2 *</td> <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread short *</td> <td class="paramname"><span class="paramname"><em>indices</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread float2 *</td> <td class="paramname"><span class="paramname"><em>y</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aba8d32e0911499671df93678f39da08b" name="aba8d32e0911499671df93678f39da08b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba8d32e0911499671df93678f39da08b">&#9670;&#160;</a></span>radix_n_steps()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int radix, <a class="el" href="#a6ba62eabfd5428644aabf89ddaa0128d">RadixFunc</a> radix_func&gt; </div>
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void radix_n_steps </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>i</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread int *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>m</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>num_steps</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread float2 *</td> <td class="paramname"><span class="paramname"><em>inputs</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread short *</td> <td class="paramname"><span class="paramname"><em>indices</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">thread float2 *</td> <td class="paramname"><span class="paramname"><em>values</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">threadgroup float2 *</td> <td class="paramname"><span class="paramname"><em>buf</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ad395c11e6f2aee72cd1928fba93a35a3" name="ad395c11e6f2aee72cd1928fba93a35a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad395c11e6f2aee72cd1928fba93a35a3">&#9670;&#160;</a></span>elems_per_thread_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int elems_per_thread_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7a83318497519ff3ff0141b7d511ed38" name="a7a83318497519ff3ff0141b7d511ed38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a83318497519ff3ff0141b7d511ed38">&#9670;&#160;</a></span>inv_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const bool inv_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2a4df90e329b84ee6c1890ba7c265c9c" name="a2a4df90e329b84ee6c1890ba7c265c9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a4df90e329b84ee6c1890ba7c265c9c">&#9670;&#160;</a></span>is_power_of_2_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const bool is_power_of_2_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1f3c377d05da52429172e64132dba750" name="a1f3c377d05da52429172e64132dba750"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f3c377d05da52429172e64132dba750">&#9670;&#160;</a></span>rader_11_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_11_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a20d24f3e040d3d226a70d4dd7c9ac6a9" name="a20d24f3e040d3d226a70d4dd7c9ac6a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20d24f3e040d3d226a70d4dd7c9ac6a9">&#9670;&#160;</a></span>rader_13_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_13_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2d725bfd4c30be4c605b5c4559a62892" name="a2d725bfd4c30be4c605b5c4559a62892"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d725bfd4c30be4c605b5c4559a62892">&#9670;&#160;</a></span>rader_2_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_2_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adb129cc3808c08fd95af9795bfc7ae63" name="adb129cc3808c08fd95af9795bfc7ae63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb129cc3808c08fd95af9795bfc7ae63">&#9670;&#160;</a></span>rader_3_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_3_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac7c58404df0434d4f861db62d3471870" name="ac7c58404df0434d4f861db62d3471870"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7c58404df0434d4f861db62d3471870">&#9670;&#160;</a></span>rader_4_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_4_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afea05e9a7105bafbaafca25042f4d1b4" name="afea05e9a7105bafbaafca25042f4d1b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afea05e9a7105bafbaafca25042f4d1b4">&#9670;&#160;</a></span>rader_5_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_5_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a020469d1aca557ff1b49414f121dedbb" name="a020469d1aca557ff1b49414f121dedbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a020469d1aca557ff1b49414f121dedbb">&#9670;&#160;</a></span>rader_6_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_6_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0d437aef17faf8d9707ae7ffe68fdb30" name="a0d437aef17faf8d9707ae7ffe68fdb30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d437aef17faf8d9707ae7ffe68fdb30">&#9670;&#160;</a></span>rader_7_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_7_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac6123e111816dd62a11ccb86b66fa3e9" name="ac6123e111816dd62a11ccb86b66fa3e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6123e111816dd62a11ccb86b66fa3e9">&#9670;&#160;</a></span>rader_8_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_8_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac309c77ef775a3ef13850c5287a86480" name="ac309c77ef775a3ef13850c5287a86480"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac309c77ef775a3ef13850c5287a86480">&#9670;&#160;</a></span>rader_m_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int rader_m_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7cd17bff8bc567f71d4789ee31fa07f2" name="a7cd17bff8bc567f71d4789ee31fa07f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cd17bff8bc567f71d4789ee31fa07f2">&#9670;&#160;</a></span>radix_11_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_11_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abb079b86e89ca88ce13a179d9ec566af" name="abb079b86e89ca88ce13a179d9ec566af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb079b86e89ca88ce13a179d9ec566af">&#9670;&#160;</a></span>radix_13_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_13_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a53fdc660e99e6b5db6808bbd596cd374" name="a53fdc660e99e6b5db6808bbd596cd374"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53fdc660e99e6b5db6808bbd596cd374">&#9670;&#160;</a></span>radix_2_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_2_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a579123b7be825f08f3076287dded08e3" name="a579123b7be825f08f3076287dded08e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a579123b7be825f08f3076287dded08e3">&#9670;&#160;</a></span>radix_3_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_3_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12d99a846c3686806bab6c42148e1039" name="a12d99a846c3686806bab6c42148e1039"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12d99a846c3686806bab6c42148e1039">&#9670;&#160;</a></span>radix_4_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_4_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a903d5239b5f73577c559e97ff910892d" name="a903d5239b5f73577c559e97ff910892d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a903d5239b5f73577c559e97ff910892d">&#9670;&#160;</a></span>radix_5_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_5_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2f7f7cc2423cfcd4998d1a2a0363c3e2" name="a2f7f7cc2423cfcd4998d1a2a0363c3e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f7f7cc2423cfcd4998d1a2a0363c3e2">&#9670;&#160;</a></span>radix_6_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_6_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2145cc8ab4d07583a735317b3cf60d55" name="a2145cc8ab4d07583a735317b3cf60d55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2145cc8ab4d07583a735317b3cf60d55">&#9670;&#160;</a></span>radix_7_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_7_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3cb03a97a209ba1346375e720ee76177" name="a3cb03a97a209ba1346375e720ee76177"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cb03a97a209ba1346375e720ee76177">&#9670;&#160;</a></span>radix_8_steps_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constant constexpr const int radix_8_steps_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
</small></address>
</div><!-- doc-content -->
</body>
</html>