mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-11-04 10:38:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			3116 lines
		
	
	
		
			691 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			3116 lines
		
	
	
		
			691 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/primitives.h Source File</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&dn=expat.txt MIT */
 | 
						|
var searchBox = new SearchBox("searchBox", "search/",'.html');
 | 
						|
/* @license-end */
 | 
						|
</script>
 | 
						|
<script type="text/javascript">
 | 
						|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&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&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&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>  </ul>
 | 
						|
</div>
 | 
						|
</div><!-- top -->
 | 
						|
<div id="doc-content">
 | 
						|
<div class="header">
 | 
						|
  <div class="headertitle"><div class="title">primitives.h</div></div>
 | 
						|
</div><!--header-->
 | 
						|
<div class="contents">
 | 
						|
<a href="primitives_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Copyright © 2023-2024 Apple Inc.</span></div>
 | 
						|
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span> </div>
 | 
						|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="preprocessor">#pragma once</span></div>
 | 
						|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
 | 
						|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include <unordered_set></span></div>
 | 
						|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
 | 
						|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include "<a class="code" href="array_8h.html">mlx/array.h</a>"</span></div>
 | 
						|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include "<a class="code" href="device_8h.html">mlx/device.h</a>"</span></div>
 | 
						|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include "<a class="code" href="io_2load_8h.html">mlx/io/load.h</a>"</span></div>
 | 
						|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include "<a class="code" href="stream_8h.html">mlx/stream.h</a>"</span></div>
 | 
						|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00012" data-start="" data-end="">
 | 
						|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">   12</a></span><span class="preprocessor">#define DEFINE_VMAP()                                                 \</span></div>
 | 
						|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">  virtual std::pair<std::vector<array>, std::vector<int>> vmap(       \</span></div>
 | 
						|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">      const std::vector<array>& inputs, const std::vector<int>& axes) \</span></div>
 | 
						|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">      override;</span></div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00017" data-start="" data-end="">
 | 
						|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">   17</a></span><span class="preprocessor">#define DEFINE_GRADS()                           \</span></div>
 | 
						|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">  std::vector<array> jvp(                        \</span></div>
 | 
						|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="preprocessor">      const std::vector<array>& primals,         \</span></div>
 | 
						|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">      const std::vector<array>& tangents,        \</span></div>
 | 
						|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="preprocessor">      const std::vector<int>& argnums) override; \</span></div>
 | 
						|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">                                                 \</span></div>
 | 
						|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">  std::vector<array> vjp(                        \</span></div>
 | 
						|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="preprocessor">      const std::vector<array>& primals,         \</span></div>
 | 
						|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="preprocessor">      const std::vector<array>& cotangents,      \</span></div>
 | 
						|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="preprocessor">      const std::vector<int>& argnums,           \</span></div>
 | 
						|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="preprocessor">      const std::vector<array>& outputs) override;</span></div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00029" data-start="" data-end="">
 | 
						|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">   29</a></span><span class="preprocessor">#define DEFINE_PRINT(PRIMITIVE)           \</span></div>
 | 
						|
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="preprocessor">  void print(std::ostream& os) override { \</span></div>
 | 
						|
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="preprocessor">    os << #PRIMITIVE;                     \</span></div>
 | 
						|
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="preprocessor">  }</span></div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00034" data-start="" data-end="">
 | 
						|
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">   34</a></span><span class="preprocessor">#define DEFINE_DEFAULT_IS_EQUIVALENT()                        \</span></div>
 | 
						|
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="preprocessor">  bool is_equivalent(const Primitive& other) const override { \</span></div>
 | 
						|
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="preprocessor">    return true;                                              \</span></div>
 | 
						|
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="preprocessor">  }</span></div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00039" data-start="" data-end="">
 | 
						|
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">   39</a></span><span class="preprocessor">#define DEFINE_INPUT_OUTPUT_SHAPE()                \</span></div>
 | 
						|
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="preprocessor">  std::vector<std::vector<int>> output_shapes(     \</span></div>
 | 
						|
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="preprocessor">      const std::vector<array>& inputs) override { \</span></div>
 | 
						|
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="preprocessor">    return {inputs[0].shape()};                    \</span></div>
 | 
						|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="preprocessor">  }</span></div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
 | 
						|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacemlx_1_1core.html">mlx::core</a> {</div>
 | 
						|
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
 | 
						|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="comment">// Abstract base class</span></div>
 | 
						|
<div class="foldopen" id="foldopen00048" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html">   48</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#afc69f22ee1f6e8a9ecc2c3a8f43b8fdb">   50</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#afc69f22ee1f6e8a9ecc2c3a8f43b8fdb">Primitive</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : stream_(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261">   53</a></span>  <span class="keyword">const</span> <a class="code hl_struct" href="structmlx_1_1core_1_1_device.html">Device</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261">device</a>() {</div>
 | 
						|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>().<a class="code hl_variable" href="structmlx_1_1core_1_1_stream.html#a406b1b0162287a4162fab1f70e2ff3bb">device</a>;</div>
 | 
						|
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">   58</a></span>  <span class="keyword">const</span> <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>() {</div>
 | 
						|
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="keywordflow">return</span> stream_;</div>
 | 
						|
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
 | 
						|
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a1596dc50b910538eae14878e98f07575">   69</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a1596dc50b910538eae14878e98f07575">eval_cpu</a>(</div>
 | 
						|
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>      <span class="keyword">const</span> std::vector<array>& inputs,</div>
 | 
						|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>      std::vector<array>& outputs) = 0;</div>
 | 
						|
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#ad217376dcf5eff691d731566faec2ba2">   72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#ad217376dcf5eff691d731566faec2ba2">eval_gpu</a>(</div>
 | 
						|
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>      <span class="keyword">const</span> std::vector<array>& inputs,</div>
 | 
						|
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>      std::vector<array>& outputs) = 0;</div>
 | 
						|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
 | 
						|
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a9fecf38f53da08ba1947543c2b3158c2">   79</a></span>  <span class="keyword">virtual</span> std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a9fecf38f53da08ba1947543c2b3158c2">jvp</a>(</div>
 | 
						|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>      <span class="keyword">const</span> std::vector<array>& tangents,</div>
 | 
						|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>      <span class="keyword">const</span> std::vector<int>& argnums);</div>
 | 
						|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span> </div>
 | 
						|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a1dcb6807326eeab62474c6a0e3836d42">   87</a></span>  <span class="keyword">virtual</span> std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a1dcb6807326eeab62474c6a0e3836d42">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>      <span class="keyword">const</span> std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span> </div>
 | 
						|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#ac632b9619dd7a6a0f177bd36202e8103">   99</a></span>  <span class="keyword">virtual</span> std::pair<std::vector<array>, std::vector<int>> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#ac632b9619dd7a6a0f177bd36202e8103">vmap</a>(</div>
 | 
						|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>      <span class="keyword">const</span> std::vector<array>& inputs,</div>
 | 
						|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>      <span class="keyword">const</span> std::vector<int>& axes);</div>
 | 
						|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span> </div>
 | 
						|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb">  104</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb">print</a>(std::ostream& os) = 0;</div>
 | 
						|
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a6140a502af4c2bbbc776ab26e9afebcd">  107</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a6140a502af4c2bbbc776ab26e9afebcd">is_equivalent</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other)<span class="keyword"> const </span>{</div>
 | 
						|
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 | 
						|
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span> </div>
 | 
						|
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a8849dc20991398f6f9a24d6785673853">  113</a></span>  <span class="keyword">virtual</span> std::vector<std::vector<int>> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a8849dc20991398f6f9a24d6785673853">output_shapes</a>(</div>
 | 
						|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>      <span class="keyword">const</span> std::vector<array>& inputs);</div>
 | 
						|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span> </div>
 | 
						|
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777">  116</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777">~Primitive</a>() = <span class="keywordflow">default</span>;</div>
 | 
						|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a3349f745fae50ca7627f79a731a19e32">  117</a></span>  <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a3349f745fae50ca7627f79a731a19e32">Primitive</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a342da891b9882bdee9a0e0c1ac826eda">  118</a></span>  <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a342da891b9882bdee9a0e0c1ac826eda">Primitive</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>&& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a6b1be7ea92f3a7bb19875c70259dad6b">  119</a></span>  <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a6b1be7ea92f3a7bb19875c70259dad6b">operator=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_primitive.html#a50bbddd43e1ba0cf5f127cd7aa756a9e">  120</a></span>  <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a50bbddd43e1ba0cf5f127cd7aa756a9e">operator=</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>&& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> </div>
 | 
						|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>  <span class="comment">// Every primitive stores the stream it should run in</span></div>
 | 
						|
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>  <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream_;</div>
 | 
						|
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00127" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html">  127</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a189f6d4ed369f82a4b724a29eb056d4e">  132</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a189f6d4ed369f82a4b724a29eb056d4e">UnaryPrimitive</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
 | 
						|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132">  134</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output) = 0;</div>
 | 
						|
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb">  135</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output) = 0;</div>
 | 
						|
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00137" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#aa0ed6e32c36200a3ff9bc592c9b300db">  137</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#aa0ed6e32c36200a3ff9bc592c9b300db">eval_cpu</a>(</div>
 | 
						|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>      <span class="keyword">const</span> std::vector<array>& inputs,</div>
 | 
						|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>      std::vector<array>& outputs)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>    <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132">eval_cpu</a>(inputs, outputs[0]);</div>
 | 
						|
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="foldopen" id="foldopen00142" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a971fe9ad47f6569118879ce1d0f41447">  142</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a971fe9ad47f6569118879ce1d0f41447">eval_gpu</a>(</div>
 | 
						|
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>      <span class="keyword">const</span> std::vector<array>& inputs,</div>
 | 
						|
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>      std::vector<array>& outputs)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>    <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb">eval_gpu</a>(inputs, outputs[0]);</div>
 | 
						|
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span> </div>
 | 
						|
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de">  148</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de">~UnaryPrimitive</a>() = <span class="keywordflow">default</span>;</div>
 | 
						|
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a9935cffc4f246d3d883bc3d26c5163f2">  149</a></span>  <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a9935cffc4f246d3d883bc3d26c5163f2">UnaryPrimitive</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a780281fb04e2daf1be630c124bd605e3">  150</a></span>  <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a780281fb04e2daf1be630c124bd605e3">UnaryPrimitive</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>&& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#a0a859309a4f192f2679e07f2e4ff4d22">  151</a></span>  <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#a0a859309a4f192f2679e07f2e4ff4d22">operator=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_unary_primitive.html#ab90b2ea80f1d914be03cf44def5db5a5">  152</a></span>  <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>& <a class="code hl_function" href="classmlx_1_1core_1_1_unary_primitive.html#ab90b2ea80f1d914be03cf44def5db5a5">operator=</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>&& other) = <span class="keyword">delete</span>;</div>
 | 
						|
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00155" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html">  155</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_abs.html">Abs</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad">  157</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad">Abs</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span> </div>
 | 
						|
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a0d3e697496ef8e842d21195cb3c14e60">  159</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#a0d3e697496ef8e842d21195cb3c14e60">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a0a976e636dd8505b473fbdddf949f514">  160</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#a0a976e636dd8505b473fbdddf949f514">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span> </div>
 | 
						|
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a4c9c98f1d71432fd3752ad9a6a8e7f2f">  162</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a6c1e6eeaf4f5e63898c3487106e88e11">  163</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107">  164</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_abs.html">Abs</a>)</div>
 | 
						|
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">  165</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32">  166</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span> </div>
 | 
						|
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span> private:</div>
 | 
						|
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00172" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html">  172</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_add.html">Add</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#ae3fd5483f3454eac3df256e3f5f3cdae">  174</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add.html#ae3fd5483f3454eac3df256e3f5f3cdae">Add</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span> </div>
 | 
						|
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#a5bacfc51dfa2a5a931bad2dd7bdc7a5f">  176</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add.html#a5bacfc51dfa2a5a931bad2dd7bdc7a5f">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#aa0aacbc1e26b95a2f040f62aa4f69c3d">  177</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add.html#aa0aacbc1e26b95a2f040f62aa4f69c3d">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
 | 
						|
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#a0e557d4d896153f84a25532562e4c646">  179</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#a77230069f76fe60a2fe1007822a277b7">  180</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#a8a96345aa63724f22b68bca7b861211d">  181</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_add.html">Add</a>)</div>
 | 
						|
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#aba0a35410c3aac53d0f7a0c283d9ee3f">  182</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add.html#a9884fece6ca4061a65241c985fcf1594">  183</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span> </div>
 | 
						|
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span> private:</div>
 | 
						|
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00189" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html">  189</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_add_m_m.html">AddMM</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00191" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a8ae4372b3f96e72e8a5a06d59de8a550">  191</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add_m_m.html#a8ae4372b3f96e72e8a5a06d59de8a550">AddMM</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keywordtype">float</span> alpha, <span class="keywordtype">float</span> beta)</div>
 | 
						|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), alpha_(alpha), beta_(beta) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span> </div>
 | 
						|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a15694e3bf2ed5c193237b2b9ca00867c">  194</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add_m_m.html#a15694e3bf2ed5c193237b2b9ca00867c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a5f933be14baebc32a0be0f9a69148aa9">  195</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_add_m_m.html#a5f933be14baebc32a0be0f9a69148aa9">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span> </div>
 | 
						|
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#ac1562a37cec6928e01281926ebeb47c6">  197</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_add_m_m.html#ac1562a37cec6928e01281926ebeb47c6">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span> </div>
 | 
						|
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a73ce80b3a37ec2523943028d50ebce81">  203</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a1262ac2c4c6e9ff6b6047bf7605e5cc9">  204</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_add_m_m.html">AddMM</a>)</div>
 | 
						|
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span> </div>
 | 
						|
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_add_m_m.html#a6e37c6882dba995a63fb6d8dfb01754f">  206</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
 | 
						|
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span> private:</div>
 | 
						|
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>  const <span class="keywordtype">float</span> alpha_;</div>
 | 
						|
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>  const <span class="keywordtype">float</span> beta_;</div>
 | 
						|
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00213" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html">  213</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arange.html">Arange</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00215" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574">  215</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574">Arange</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keywordtype">double</span> start, <span class="keywordtype">double</span> stop, <span class="keywordtype">double</span> step)</div>
 | 
						|
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), start_(start), stop_(stop), step_(step) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span> </div>
 | 
						|
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html#aba44432491cbd599bf72712f5f4267a1">  218</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arange.html#aba44432491cbd599bf72712f5f4267a1">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html#a7a2e9787c6c3a78b4a6df91206974031">  219</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arange.html#a7a2e9787c6c3a78b4a6df91206974031">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span> </div>
 | 
						|
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html#abd73d2b793da796dc7cf04c9f7d5c19e">  221</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arange.html">Arange</a>)</div>
 | 
						|
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arange.html#a7b6a45cf9c4b109d4e0373f3fe576c35">  222</a></span>  bool <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span> </div>
 | 
						|
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span> private:</div>
 | 
						|
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>  <span class="keywordtype">double</span> start_;</div>
 | 
						|
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>  <span class="keywordtype">double</span> stop_;</div>
 | 
						|
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>  <span class="keywordtype">double</span> step_;</div>
 | 
						|
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span> </div>
 | 
						|
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00232" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html">  232</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_cos.html">ArcCos</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9">  234</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9">ArcCos</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span> </div>
 | 
						|
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a58dcba9e706cb12bab062bb7fa5fa006">  236</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cos.html#a58dcba9e706cb12bab062bb7fa5fa006">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a46f72d4af89b0a0f5f203783fb44589c">  237</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cos.html#a46f72d4af89b0a0f5f203783fb44589c">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span> </div>
 | 
						|
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a7548e23ace6827674aa6d284d44ccf83">  239</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a240079c616f1a1f127aa783308096fe9">  240</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#aa48d8bec4efbac569d809cf11648b739">  241</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_cos.html">ArcCos</a>)</div>
 | 
						|
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a39557461e3235801886675a9b7d25bf5">  242</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cos.html#a8ecd5b9a8cc9cba841768a5b2b497974">  243</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span> </div>
 | 
						|
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span> private:</div>
 | 
						|
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00249" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html">  249</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_cosh.html">ArcCosh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71">  251</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71">ArcCosh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
 | 
						|
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#a0f6d989bcbbc38f15ef17a136879a9c9">  253</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cosh.html#a0f6d989bcbbc38f15ef17a136879a9c9">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#aa6a2587485a0e015ac2d5211d7d045fc">  254</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_cosh.html#aa6a2587485a0e015ac2d5211d7d045fc">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span> </div>
 | 
						|
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#af8ff78e910a9e485a203e1d3347bd461">  256</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#a80fcb790649219c30260af903b76a1d7">  257</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#a6a9a2ab0cc360d7e2f9676db17f8e630">  258</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_cosh.html">ArcCosh</a>)</div>
 | 
						|
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#a6928e827b9ac2e86e7d5b02b78150eee">  259</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_cosh.html#ae5d6660121f7f5a55824b95e7fd3dc6b">  260</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span> </div>
 | 
						|
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span> private:</div>
 | 
						|
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00266" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html">  266</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_sin.html">ArcSin</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013">  268</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013">ArcSin</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span> </div>
 | 
						|
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#ab3542492c14021329788de8f2a9be1e4">  270</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sin.html#ab3542492c14021329788de8f2a9be1e4">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a7fa4ae7a85bc8bed97ea258ae30762f3">  271</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sin.html#a7fa4ae7a85bc8bed97ea258ae30762f3">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span> </div>
 | 
						|
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a7cabb1e5a2bda44944378822c671ec82">  273</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a37affc8c5e84e5c54e73a71fc0821ea4">  274</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a895a35c9dd22fdb06e7b971bfd6fde87">  275</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_sin.html">ArcSin</a>)</div>
 | 
						|
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a13b5e39eeccaf32d94b8eb85b3b753ab">  276</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sin.html#a1c6e478804eb5d171e4859b872db29f5">  277</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> </div>
 | 
						|
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span> private:</div>
 | 
						|
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00283" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html">  283</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_sinh.html">ArcSinh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20">  285</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20">ArcSinh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span> </div>
 | 
						|
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a52574b24d8d16839c58673f51f8ac066">  287</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sinh.html#a52574b24d8d16839c58673f51f8ac066">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a79f648a86de4c10386a1ce3b5e38e8ac">  288</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_sinh.html#a79f648a86de4c10386a1ce3b5e38e8ac">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span> </div>
 | 
						|
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a9e72b9751939387c333b5d4e19a37f6d">  290</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a79ebf2f6dfecbfbb93170fdd1ca87bf4">  291</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#aa8b2934a8a0b2eedec8257bbb5726430">  292</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_sinh.html">ArcSinh</a>)</div>
 | 
						|
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a63c7a765c7906242dc3371deec094f0f">  293</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_sinh.html#a6e0319a3cee5f6b9d43a3ac256b2c2ed">  294</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
 | 
						|
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span> private:</div>
 | 
						|
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  297</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00300" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html">  300</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_tan.html">ArcTan</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44">  302</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44">ArcTan</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span> </div>
 | 
						|
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a1211bc31241227528f04435239ddb9a3">  304</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan.html#a1211bc31241227528f04435239ddb9a3">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a77866feb27028865d844070447c9a254">  305</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan.html#a77866feb27028865d844070447c9a254">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
 | 
						|
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a1fb921554544a56498bc54f82e4a0556">  307</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a0f5590a2297fc133b4b0a15f9dd0c760">  308</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#ab0309e4feca36f221b3d672dc92cac05">  309</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_tan.html">ArcTan</a>)</div>
 | 
						|
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#a0e5b5fc7218143ecd0a8666d9137c34c">  310</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan.html#aa5d1e60d50ffa77b1d0e14af8d7e127a">  311</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span> </div>
 | 
						|
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span> private:</div>
 | 
						|
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00317" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html">  317</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_tan2.html">ArcTan2</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a">  319</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a">ArcTan2</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span> </div>
 | 
						|
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#a13094e6b702769928ca0da468f5ce45c">  321</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan2.html#a13094e6b702769928ca0da468f5ce45c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#a76d3f0c29e0ff4642b8d39dac90d3f50">  322</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tan2.html#a76d3f0c29e0ff4642b8d39dac90d3f50">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span> </div>
 | 
						|
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#ae02cb9fbf25e93dc1d7fbc9e3fb28634">  324</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#a01675433f2a4fa466b2f48272dbca738">  325</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#abdfef9f572d06df1251c28222756a361">  326</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_tan2.html">ArcTan2</a>)</div>
 | 
						|
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#aeaee58cd803d3ebf0b76574a409682cc">  327</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tan2.html#a3f4ad806a0c59c2d1ae1c55c9889bf03">  328</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span> </div>
 | 
						|
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span> private:</div>
 | 
						|
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00334" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html">  334</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arc_tanh.html">ArcTanh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358">  336</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358">ArcTanh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span> </div>
 | 
						|
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a5af9224e1f1ffec412b0baa0af7e1ecd">  338</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tanh.html#a5af9224e1f1ffec412b0baa0af7e1ecd">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a10566b9d3b2c7d090895b46d9040bc1d">  339</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arc_tanh.html#a10566b9d3b2c7d090895b46d9040bc1d">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span> </div>
 | 
						|
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a6ddcae68873559211cb91e7740dfc040">  341</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a534ebdbfe77241884630d25021274c4a">  342</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#aa9549311240d7ba225b84e1df9ad8523">  343</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arc_tanh.html">ArcTanh</a>)</div>
 | 
						|
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#ac8ecdd640043dab0461d49d7650679a2">  344</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arc_tanh.html#a30246c56e1d75638c3696f84323861d8">  345</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span> </div>
 | 
						|
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span> private:</div>
 | 
						|
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  349</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00351" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html">  351</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arg_partition.html">ArgPartition</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00353" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df">  353</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df">ArgPartition</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keywordtype">int</span> kth, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), kth_(kth), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span> </div>
 | 
						|
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#a896f75c5325798ac3f9093f6a4581828">  356</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_partition.html#a896f75c5325798ac3f9093f6a4581828">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#a9a60995eaf85f63c877e86b23cbc15fc">  357</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_partition.html#a9a60995eaf85f63c877e86b23cbc15fc">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span> </div>
 | 
						|
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#a441093795bcc31495ab5fbc9957b740a">  359</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#aedea4b47f947a6fe358dd1238cdfb595">  360</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#aa8678d94fa1571ea71a7bf790cdb8d63">  361</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arg_partition.html">ArgPartition</a>)</div>
 | 
						|
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#a28608aee76a2db25f6455da561526c64">  362</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_partition.html#ad87509ce70b51fb75dfb9c3a05a5b31a">  363</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span> </div>
 | 
						|
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span> private:</div>
 | 
						|
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span>  <span class="keywordtype">int</span> kth_;</div>
 | 
						|
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span> </div>
 | 
						|
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00372" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html">  372</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arg_reduce.html">ArgReduce</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00374" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3">  374</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3">ReduceType</a> {</div>
 | 
						|
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9">  375</a></span>    <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9">ArgMin</a>,</div>
 | 
						|
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e">  376</a></span>    <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e">ArgMax</a>,</div>
 | 
						|
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span>  };</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00379" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03">  379</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03">ArgReduce</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <a class="code hl_enumeration" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3">ReduceType</a> reduce_type, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  380</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), reduce_type_(reduce_type), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span> </div>
 | 
						|
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#ad8d48725623ede1ff654fa13eccf2287">  382</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_reduce.html#ad8d48725623ede1ff654fa13eccf2287">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#aafa982ce2abc0cd9e81e43aa2c823d29">  383</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_reduce.html#aafa982ce2abc0cd9e81e43aa2c823d29">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span> </div>
 | 
						|
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#abfec42fa06ea15edaf393593751fb1ba">  385</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a03bb925e1b488c560bc3d67ce62ba6fa">  386</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a153a6d8dba7301c4fcd0e429154ead8f">  387</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arg_reduce.html">ArgReduce</a>)</div>
 | 
						|
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a03b81a670dcb1e39bf7279e4d4583b97">  388</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_reduce.html#a40a047cb3ed8d1445d42100b3fd85179">  389</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32">output_shapes</a>(</div>
 | 
						|
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs) override;</div>
 | 
						|
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span> </div>
 | 
						|
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span> private:</div>
 | 
						|
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>  <a class="code hl_enumeration" href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3">ReduceType</a> reduce_type_;</div>
 | 
						|
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span> </div>
 | 
						|
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00399" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html">  399</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_arg_sort.html">ArgSort</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00401" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0">  401</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0">ArgSort</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span> </div>
 | 
						|
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#a022079683774bfeb531b3a002cff16fa">  404</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_sort.html#a022079683774bfeb531b3a002cff16fa">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#abc2d730850ec4ee8d7968b7417911709">  405</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_arg_sort.html#abc2d730850ec4ee8d7968b7417911709">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span> </div>
 | 
						|
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#a3522bbbe4626a467394c1a8a9d7ac34e">  407</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#a0b59ce43e0982d634a01631728b419bd">  408</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_arg_sort.html">ArgSort</a>)</div>
 | 
						|
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#ac50e0b76c457aae944425b3a57c33859">  409</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_arg_sort.html#a048cd09c557d29d1111726f97010a845">  410</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span> </div>
 | 
						|
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> private:</div>
 | 
						|
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span> </div>
 | 
						|
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00418" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html">  418</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_as_type.html">AsType</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00420" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47">  420</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47">AsType</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype)</div>
 | 
						|
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), dtype_(dtype) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span> </div>
 | 
						|
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#aa89dbf4d73b00c6a44cffd04d5bb228d">  423</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_type.html#aa89dbf4d73b00c6a44cffd04d5bb228d">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a5b111b9d74c60d27b4a7ebaa49f96e0b">  424</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_type.html#a5b111b9d74c60d27b4a7ebaa49f96e0b">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span> </div>
 | 
						|
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a7ebaf86fd6cad4a1ecfd7cde1ee0b0cc">  426</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a213400967150c57da35795e1c9f65ca0">  427</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#aa617e29147c14bd5d1fa8ad0bf65af0c">  428</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_as_type.html">AsType</a>)</div>
 | 
						|
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a18922e68006b5cf005355f5c9ac57ac4">  429</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_type.html#a8e6c8b2428ab15c4fb43f2e3a8fb38af">  430</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span> </div>
 | 
						|
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span> private:</div>
 | 
						|
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>  <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype_;</div>
 | 
						|
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span> </div>
 | 
						|
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00438" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html">  438</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_as_strided.html">AsStrided</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00440" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af">  440</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af">AsStrided</a>(</div>
 | 
						|
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>,</div>
 | 
						|
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>      std::vector<int> shape,</div>
 | 
						|
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span>      std::vector<size_t> strides,</div>
 | 
						|
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span>      <span class="keywordtype">size_t</span> offset)</div>
 | 
						|
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>),</div>
 | 
						|
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span>        shape_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(shape)),</div>
 | 
						|
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>        strides_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(strides)),</div>
 | 
						|
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span>        offset_(offset) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span> </div>
 | 
						|
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#acdd4705e4503ff0b124215c4676b4193">  450</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_strided.html#acdd4705e4503ff0b124215c4676b4193">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#ab6771a208323994927ca162ba7bb10ed">  451</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_as_strided.html#ab6771a208323994927ca162ba7bb10ed">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span> </div>
 | 
						|
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#a8ff0a398c47b42e08bc1122e07a02b53">  453</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#af2e21b77ea9e6c70bca45224967745bf">  454</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_as_strided.html">AsStrided</a>)</div>
 | 
						|
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_as_strided.html#a1738c6aa0a3a3eb68530f0d5b436e094">  455</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span> </div>
 | 
						|
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span> private:</div>
 | 
						|
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span>  std::vector<<span class="keywordtype">int</span>> shape_;</div>
 | 
						|
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span>  std::vector<<span class="keywordtype">size_t</span>> strides_;</div>
 | 
						|
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>  <span class="keywordtype">size_t</span> offset_;</div>
 | 
						|
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span> </div>
 | 
						|
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00465" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html">  465</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_bitwise_binary.html">BitwiseBinary</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4">  467</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d">Op</a> { <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4">And</a>, <a class="code hl_struct" href="struct_or.html">Or</a>, Xor, <a class="code hl_struct" href="struct_left_shift.html">LeftShift</a>, <a class="code hl_struct" href="struct_right_shift.html">RightShift</a> };</div>
 | 
						|
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00469" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172">  469</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172">BitwiseBinary</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <a class="code hl_enumeration" href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d">Op</a> <a class="code hl_variable" href="common_2binary_8h.html#a70228731d29946574b238d21fb4b360c">op</a>)</div>
 | 
						|
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), op_(<a class="code hl_variable" href="common_2binary_8h.html#a70228731d29946574b238d21fb4b360c">op</a>) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span> </div>
 | 
						|
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a2194bf585213bda1b2966aa02d2fe283">  472</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_bitwise_binary.html#a2194bf585213bda1b2966aa02d2fe283">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#ac831a29fc46701b00bbe63ee33832afd">  473</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_bitwise_binary.html#ac831a29fc46701b00bbe63ee33832afd">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span> </div>
 | 
						|
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#aa10be55f05bc1868bf4b375dc475f965">  475</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a1dae6ce5dc0498d20530403fe5c5531d">  476</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a8cd6b916b4838a6c329cf4df8530c3b8">  477</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a69b28e239da7fdb89f0a9f9467dd797d">  478</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107">print</a>(std::ostream& os) override;</div>
 | 
						|
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_bitwise_binary.html#a7d2dfa8884832fc1a94ce6400d0ed599">  479</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span> </div>
 | 
						|
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span> private:</div>
 | 
						|
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>  <a class="code hl_enumeration" href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d">Op</a> op_;</div>
 | 
						|
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00485" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html">  485</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_block_masked_m_m.html">BlockMaskedMM</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00487" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477">  487</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477">BlockMaskedMM</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keywordtype">int</span> block_size)</div>
 | 
						|
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), block_size_(block_size) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span> </div>
 | 
						|
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#aa85da478cdc6d4a97be06e5d4abee1f2">  490</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_block_masked_m_m.html#aa85da478cdc6d4a97be06e5d4abee1f2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#ab372b6df4de00a33795a052a23bb1df9">  491</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_block_masked_m_m.html#ab372b6df4de00a33795a052a23bb1df9">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span> </div>
 | 
						|
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#a1adf20087ee2f685bf39c2724b8e7120">  493</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_block_masked_m_m.html#a1adf20087ee2f685bf39c2724b8e7120">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span> </div>
 | 
						|
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#a37ecf6fa296d28efb7651a3c510fe159">  499</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_block_masked_m_m.html">BlockMaskedMM</a>)</div>
 | 
						|
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_block_masked_m_m.html#aef1c303955f9b8f445296372cf181160">  500</a></span>  bool <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span> </div>
 | 
						|
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span> private:</div>
 | 
						|
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>  <span class="keywordtype">int</span> block_size_;</div>
 | 
						|
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span> </div>
 | 
						|
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00508" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html">  508</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_gather_m_m.html">GatherMM</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#afd9bbc08138181b80e2fb86536ff3f2a">  510</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_m_m.html#afd9bbc08138181b80e2fb86536ff3f2a">GatherMM</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span> </div>
 | 
						|
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#a62352074a480df0e1f879b0bae425730">  512</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_m_m.html#a62352074a480df0e1f879b0bae425730">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#ad754c35f460a055cc383ad93a5f72da1">  513</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_m_m.html#ad754c35f460a055cc383ad93a5f72da1">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span> </div>
 | 
						|
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#a76c9f27c57354f6230b43944882e1bda">  515</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_m_m.html#a76c9f27c57354f6230b43944882e1bda">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span> </div>
 | 
						|
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#ae7a6f4eecb15e95b21e6c87068ebd758">  521</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_gather_m_m.html">GatherMM</a>)</div>
 | 
						|
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_m_m.html#a163f17f6ce2c002f22e81b302777342b">  522</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span> </div>
 | 
						|
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span> private:</div>
 | 
						|
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00528" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html">  528</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_broadcast.html">Broadcast</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00530" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb">  530</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb">Broadcast</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>, <span class="keyword">const</span> std::vector<int>& shape)</div>
 | 
						|
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>), shape_(shape) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span> </div>
 | 
						|
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#a53d48d9778e2d4c24a124cd767900780">  533</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_broadcast.html#a53d48d9778e2d4c24a124cd767900780">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#ab9bd9dbcedcefc9b29c84911b5ce69fe">  534</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_broadcast.html#ab9bd9dbcedcefc9b29c84911b5ce69fe">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span> </div>
 | 
						|
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#aee4c71c2588ad01eb57e10f346cd666f">  536</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#ae2fc3851a117079244708864be770ece">  537</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#a6a610412861c6e472f930b6721b99a11">  538</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_broadcast.html">Broadcast</a>)</div>
 | 
						|
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_broadcast.html#a0e27692b0090ec451954649a36042616">  539</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span> </div>
 | 
						|
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span> private:</div>
 | 
						|
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>  std::vector<<span class="keywordtype">int</span>> shape_;</div>
 | 
						|
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span> </div>
 | 
						|
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00547" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html">  547</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_ceil.html">Ceil</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#aede38610ca25429f229301546bc9b682">  549</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_ceil.html#aede38610ca25429f229301546bc9b682">Ceil</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>) {}</div>
 | 
						|
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span> </div>
 | 
						|
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#a9791801fff3f8b79944e15ac2a45a035">  551</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_ceil.html#a9791801fff3f8b79944e15ac2a45a035">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#abe178e0058e44b6618be414215e96887">  552</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_ceil.html#abe178e0058e44b6618be414215e96887">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span> </div>
 | 
						|
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#ae86819990b43bdb0c2b3a25719b3a7a4">  554</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#a7ad74b27d9f26c886c2af516b845f066">  555</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#a14a0048dd6496341cacaddada68276ee">  556</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_ceil.html">Ceil</a>)</div>
 | 
						|
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#aacd90acb56eb0649c1cef807aa21df52">  557</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_ceil.html#a1eb263c04df810e212855a17af0658ea">  558</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span> </div>
 | 
						|
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span> private:</div>
 | 
						|
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00564" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html">  564</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_compiled.html">Compiled</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>  <span class="comment">/*</span></div>
 | 
						|
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span><span class="comment">   * The inputs, outputs and tape are either tracers or constants.</span></div>
 | 
						|
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span><span class="comment">   * - The tape should not contain the inputs, but it should contain the</span></div>
 | 
						|
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span><span class="comment">   *   outputs.</span></div>
 | 
						|
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span><span class="comment">   * - The tape should also have only one array per primitive for multi-output</span></div>
 | 
						|
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span><span class="comment">   *   primitives.</span></div>
 | 
						|
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span><span class="comment">   * - The constant_ids contains ids of arrays in the input list that are safe</span></div>
 | 
						|
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span><span class="comment">   *   to treat as scalar constants.</span></div>
 | 
						|
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span><span class="comment">   */</span></div>
 | 
						|
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051">  575</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051">Compiled</a>(</div>
 | 
						|
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> <a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">stream</a>,</div>
 | 
						|
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span>      std::vector<array> inputs,</div>
 | 
						|
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>      std::vector<array> outputs,</div>
 | 
						|
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>      std::vector<array> tape,</div>
 | 
						|
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span>      std::unordered_set<uintptr_t> constant_ids);</div>
 | 
						|
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span> </div>
 | 
						|
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#ac45b1d0fedd85feefbff7ce7e168b151">  582</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_compiled.html#ac45b1d0fedd85feefbff7ce7e168b151">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#aa3d5ff0f2b3554ad48fbbf2a0f3336d5">  584</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_compiled.html#aa3d5ff0f2b3554ad48fbbf2a0f3336d5">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span> </div>
 | 
						|
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#a732e7548f53977b4513bb7f30a04c30d">  587</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#aa385fe28626856ca5f57161b47a3c205">  588</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#a453a10c68b7825def5b53207bc04a71c">  589</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32">output_shapes</a>(</div>
 | 
						|
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs) override;</div>
 | 
						|
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#a271521f92eef49c39799f38e26b64a9b">  591</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107">print</a>(std::ostream& os) override;</div>
 | 
						|
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#a63e5016458887813b4a59dee5a0a3f10">  592</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">is_equivalent</a>(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00594" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_compiled.html#ae5c16cb91ac31b97e7652cc526c07439">  594</a></span>  std::<span class="keywordtype">string</span> lib_name()<span class="keyword"> const </span>{</div>
 | 
						|
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span>    <span class="keywordflow">return</span> kernel_lib_;</div>
 | 
						|
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span> </div>
 | 
						|
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span>  <span class="keyword">const</span> std::vector<array> inputs_;</div>
 | 
						|
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span>  <span class="keyword">const</span> std::vector<array> outputs_;</div>
 | 
						|
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span>  <span class="keyword">const</span> std::vector<array> tape_;</div>
 | 
						|
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span>  <span class="keyword">const</span> std::unordered_set<uintptr_t> constant_ids_;</div>
 | 
						|
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span> </div>
 | 
						|
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span>  std::string kernel_lib_;</div>
 | 
						|
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00607" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html">  607</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_concatenate.html">Concatenate</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00609" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888">  609</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888">Concatenate</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span> </div>
 | 
						|
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#a609e76bede7fc5581ec84ddcb727a258">  612</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_concatenate.html#a609e76bede7fc5581ec84ddcb727a258">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#a309a1c50e97f9925866433ee2841c474">  613</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_concatenate.html#a309a1c50e97f9925866433ee2841c474">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span> </div>
 | 
						|
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#a58c54dcf8e4b045d25edd3afc2caffc1">  615</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#a9f9e7a9dc3a00e02b84c94e1868baff1">  616</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#a56f29b585a6d1d958954a68dcc893f33">  617</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_concatenate.html">Concatenate</a>)</div>
 | 
						|
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_concatenate.html#aaf8a72a0c30114460caf519580cc35d2">  618</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span> </div>
 | 
						|
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span> private:</div>
 | 
						|
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span> </div>
 | 
						|
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00626" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html">  626</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_conjugate.html">Conjugate</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87">  628</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87">Conjugate</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span> </div>
 | 
						|
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#ae39643e2178f442ffba05139f8609d61">  630</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_conjugate.html#ae39643e2178f442ffba05139f8609d61">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#aff0a802166e3724db88ab5d3feb2d3de">  631</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_conjugate.html#aff0a802166e3724db88ab5d3feb2d3de">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span> </div>
 | 
						|
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#a2c7632c8ae0ca07777e23a0a79344e60">  633</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#a40281539bbd543ac8fd8e28650de17e4">  634</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_conjugate.html">Conjugate</a>)</div>
 | 
						|
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#af42f00a790c6bc5572bd8fe9e5b36c5e">  635</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_conjugate.html#ada40413e9f210251476a37cc0d0ea37f">  636</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span> </div>
 | 
						|
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span> private:</div>
 | 
						|
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00642" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html">  642</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_convolution.html">Convolution</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00644" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef">  644</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef">Convolution</a>(</div>
 | 
						|
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span>      <span class="keyword">const</span> std::vector<int>& kernel_strides,</div>
 | 
						|
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span>      <span class="keyword">const</span> std::vector<int>& padding,</div>
 | 
						|
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span>      <span class="keyword">const</span> std::vector<int>& kernel_dilation,</div>
 | 
						|
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span>      <span class="keyword">const</span> std::vector<int>& input_dilation,</div>
 | 
						|
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span>      <span class="keyword">const</span> <span class="keywordtype">int</span> groups = 1,</div>
 | 
						|
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span>      <span class="keyword">const</span> <span class="keywordtype">bool</span> flip = <span class="keyword">false</span>)</div>
 | 
						|
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span>        padding_(padding),</div>
 | 
						|
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span>        kernel_strides_(kernel_strides),</div>
 | 
						|
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span>        kernel_dilation_(kernel_dilation),</div>
 | 
						|
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span>        input_dilation_(input_dilation),</div>
 | 
						|
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span>        groups_(groups),</div>
 | 
						|
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span>        flip_(flip) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span> </div>
 | 
						|
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#ac74256068da01730629109fa4fa8432b">  660</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_convolution.html#ac74256068da01730629109fa4fa8432b">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#a30b64109eeb1778f002b99447dff9dd2">  661</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_convolution.html#a30b64109eeb1778f002b99447dff9dd2">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span> </div>
 | 
						|
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#af8eb9c0c055ad20aa74b547016917690">  663</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_convolution.html#af8eb9c0c055ad20aa74b547016917690">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span> </div>
 | 
						|
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#a844eab7c4cc99e775cfb561265ed14fd">  669</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_convolution.html">Convolution</a>)</div>
 | 
						|
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_convolution.html#afb87708a5e3aab2e9e663daa9d8863de">  670</a></span>  bool is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span> </div>
 | 
						|
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span> private:</div>
 | 
						|
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span>  std::vector<<span class="keywordtype">int</span>> padding_;</div>
 | 
						|
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span>  std::vector<<span class="keywordtype">int</span>> kernel_strides_;</div>
 | 
						|
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span>  std::vector<<span class="keywordtype">int</span>> kernel_dilation_;</div>
 | 
						|
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span>  std::vector<<span class="keywordtype">int</span>> input_dilation_;</div>
 | 
						|
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>  <span class="keywordtype">int</span> groups_;</div>
 | 
						|
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span>  <span class="keywordtype">bool</span> flip_;</div>
 | 
						|
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span> </div>
 | 
						|
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00683" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html">  683</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_copy.html">Copy</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584">  685</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584">Copy</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span> </div>
 | 
						|
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#af4a0ebec423e84ffe8083a5e9ed0d70c">  687</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_copy.html#af4a0ebec423e84ffe8083a5e9ed0d70c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#a1eda7b2ea771a168f67421f0d384b3a1">  688</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_copy.html#a1eda7b2ea771a168f67421f0d384b3a1">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span> </div>
 | 
						|
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#a669b10253c15b769d90058d1ad7d0e61">  690</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#a5acf02aa360cbefd86749fe9877b29cc">  691</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#acfa1a02ab9cdab593e928faa515a8008">  692</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_copy.html">Copy</a>)</div>
 | 
						|
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#afcfa39465015f638e294aa954ea0f3da">  693</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_copy.html#ac3d13ebc6464403962fa1a9897fe6df3">  694</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span> </div>
 | 
						|
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span> private:</div>
 | 
						|
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00700" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html">  700</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_cos.html">Cos</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995">  702</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995">Cos</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span> </div>
 | 
						|
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a061fc446268fe56237ae6b20ccf78152">  704</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cos.html#a061fc446268fe56237ae6b20ccf78152">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a5ef41aafad595f6cdd8c535e36e12060">  705</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cos.html#a5ef41aafad595f6cdd8c535e36e12060">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span> </div>
 | 
						|
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#aec9460daf0131156734013d03b230cd6">  707</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a99dd0b7e4aa2c838b77736f1fd539ee1">  708</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a81858457e4bea931a4bc6f6e38b0f696">  709</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_cos.html">Cos</a>)</div>
 | 
						|
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#ab611ca38c987915659f7ffcce0370417">  710</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cos.html#a05b2d43942aa1d93a40c20ae8b90a25b">  711</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span> </div>
 | 
						|
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span> private:</div>
 | 
						|
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno">  714</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno">  715</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno">  716</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00717" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html">  717</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_cosh.html">Cosh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno">  718</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1">  719</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1">Cosh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno">  720</span> </div>
 | 
						|
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#ae8702df7e8f0e20cbeccb2a548961d3d">  721</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cosh.html#ae8702df7e8f0e20cbeccb2a548961d3d">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#a23f71b43792934c3ec0ebe9b74f32559">  722</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cosh.html#a23f71b43792934c3ec0ebe9b74f32559">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno">  723</span> </div>
 | 
						|
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#a1ab2386e7d96219b6e4a525f7dac0406">  724</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#a79facb0882443533f36a0a18407f5863">  725</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#ac247faad68c1050cda9f72d7d6d040e2">  726</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_cosh.html">Cosh</a>)</div>
 | 
						|
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#ae0bacccaf501f5349db0c13cca776ff9">  727</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cosh.html#a1bef7feac9a387ea80e7fc774f579962">  728</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno">  729</span> </div>
 | 
						|
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno">  730</span> private:</div>
 | 
						|
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno">  731</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno">  732</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno">  733</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00734" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html">  734</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_custom_transforms.html">CustomTransforms</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno">  735</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00736" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#ab52abadb9c6f6db83d087c7b751be488">  736</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_custom_transforms.html#ab52abadb9c6f6db83d087c7b751be488">CustomTransforms</a>(</div>
 | 
						|
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno">  737</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno">  738</span>      <span class="keywordtype">int</span> num_outputs,</div>
 | 
						|
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno">  739</span>      std::function<std::vector<array>(</div>
 | 
						|
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno">  740</span>          <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno">  741</span>          <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno">  742</span>          <span class="keyword">const</span> std::vector<array>&)> vjp,</div>
 | 
						|
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno">  743</span>      std::function<std::vector<array>(</div>
 | 
						|
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno">  744</span>          <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno">  745</span>          <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno">  746</span>          <span class="keyword">const</span> std::vector<int>&)> jvp,</div>
 | 
						|
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno">  747</span>      std::function<std::pair<std::vector<array>, std::vector<int>>(</div>
 | 
						|
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno">  748</span>          <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno">  749</span>          <span class="keyword">const</span> std::vector<int>&)> vmap)</div>
 | 
						|
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno">  750</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno">  751</span>        num_outputs_(num_outputs),</div>
 | 
						|
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno">  752</span>        vjp_fun_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(<a class="code hl_function" href="namespacemlx_1_1core.html#a1b33e2c2e3471420490cf0be2de6de18">vjp</a>)),</div>
 | 
						|
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno">  753</span>        jvp_fun_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(<a class="code hl_function" href="namespacemlx_1_1core.html#a179a632200366c223d6ab56d3e032592">jvp</a>)),</div>
 | 
						|
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno">  754</span>        vmap_fun_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(<a class="code hl_function" href="namespacemlx_1_1core.html#ac3caec2fa65375ed4c3bf1206177b84c">vmap</a>)) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno">  755</span> </div>
 | 
						|
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#adba1c40c77a2138df6b5f75483f62184">  756</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_custom_transforms.html#adba1c40c77a2138df6b5f75483f62184">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno">  757</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#a7b3538681acbb20af3ed37b0877f6667">  758</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_custom_transforms.html#a7b3538681acbb20af3ed37b0877f6667">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno">  759</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno">  760</span> </div>
 | 
						|
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#aa9f695100170d5cae999b3da138ce720">  761</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>();</div>
 | 
						|
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#a906a2ff30d9c5281fbf1fa927e4c021b">  762</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>();</div>
 | 
						|
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_custom_transforms.html#a2ddbacbc468271b11caee0ad97005298">  763</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_custom_transforms.html">CustomTransforms</a>);</div>
 | 
						|
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno">  764</span> </div>
 | 
						|
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno">  765</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno">  766</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno">  767</span> </div>
 | 
						|
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno">  768</span>  <span class="keywordtype">int</span> num_outputs_;</div>
 | 
						|
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno">  769</span> </div>
 | 
						|
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno">  770</span>  std::function<std::vector<array>(</div>
 | 
						|
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno">  771</span>      <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno">  772</span>      <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno">  773</span>      <span class="keyword">const</span> std::vector<array>&)></div>
 | 
						|
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno">  774</span>      vjp_fun_;</div>
 | 
						|
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span>  std::function<std::vector<array>(</div>
 | 
						|
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno">  776</span>      <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno">  777</span>      <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno">  778</span>      <span class="keyword">const</span> std::vector<int>&)></div>
 | 
						|
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno">  779</span>      jvp_fun_;</div>
 | 
						|
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno">  780</span>  std::function<std::pair<std::vector<array>, std::vector<int>>(</div>
 | 
						|
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno">  781</span>      <span class="keyword">const</span> std::vector<array>&,</div>
 | 
						|
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno">  782</span>      <span class="keyword">const</span> std::vector<int>&)></div>
 | 
						|
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno">  783</span>      vmap_fun_;</div>
 | 
						|
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno">  784</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno">  785</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00786" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html">  786</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_depends.html">Depends</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno">  787</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62">  788</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62">Depends</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno">  789</span> </div>
 | 
						|
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html#a0c7ea6db97337591fa53c6e6bde41e5e">  790</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_depends.html#a0c7ea6db97337591fa53c6e6bde41e5e">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno">  791</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html#ae5057f65e69490ad0add8eeda2b75e28">  792</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_depends.html#ae5057f65e69490ad0add8eeda2b75e28">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno">  793</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno">  794</span> </div>
 | 
						|
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html#a02996fa45f01f7cb9f37074d5f8ccab0">  795</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_depends.html#a02996fa45f01f7cb9f37074d5f8ccab0">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno">  796</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno">  797</span>      <span class="keyword">const</span> std::vector<array>& cotan,</div>
 | 
						|
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno">  798</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno">  799</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno">  800</span> </div>
 | 
						|
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_depends.html#aed575b0d927f4341f60442c70adeeb82">  801</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_depends.html">Depends</a>);</div>
 | 
						|
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno">  802</span> </div>
 | 
						|
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno">  803</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno">  804</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno">  805</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno">  806</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00807" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html">  807</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_divide.html">Divide</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno">  808</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb">  809</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb">Divide</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno">  810</span> </div>
 | 
						|
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#a823443c2a8e8b81bbcaeee6ddbcdbf49">  811</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_divide.html#a823443c2a8e8b81bbcaeee6ddbcdbf49">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#abffda0ce37221ddc28dc9eea794f6bc7">  812</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_divide.html#abffda0ce37221ddc28dc9eea794f6bc7">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno">  813</span> </div>
 | 
						|
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#a83e7da52831165b3a026e97b63770242">  814</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#ae1f408c447b17b3c84fe7f951d95559c">  815</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#af3c15337ac15522cc34ed98b97895bb6">  816</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_divide.html">Divide</a>)</div>
 | 
						|
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#a3dda091f05c4164c29bb8129e9712650">  817</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_divide.html#ad514bed77ad94742e26c93e446940994">  818</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno">  819</span> </div>
 | 
						|
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno">  820</span> private:</div>
 | 
						|
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno">  821</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno">  823</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00824" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html">  824</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_div_mod.html">DivMod</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno">  825</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826">  826</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826">DivMod</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span> </div>
 | 
						|
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#ae350b7b93ad128e3133ee14f247193b3">  828</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_div_mod.html#ae350b7b93ad128e3133ee14f247193b3">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#a003117c9ecf3c06a27248f72a76348dc">  830</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_div_mod.html#a003117c9ecf3c06a27248f72a76348dc">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno">  831</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span> </div>
 | 
						|
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#ae709e0fdd83994bd1d156e0d0e6a7942">  833</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#a1267401f25f25847888dd0a00b3fe3b9">  834</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#a7edbed50d07869d921e529157931b7a1">  835</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_div_mod.html">DivMod</a>)</div>
 | 
						|
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#af5fcf8ec8515d46844cbeeab6dafb38a">  836</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="foldopen" id="foldopen00837" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_div_mod.html#a61d835d777c8063089dc708898ff314b">  837</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> output_shapes(</div>
 | 
						|
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span>    <span class="keywordflow">return</span> std::vector{inputs[0].shape(), inputs[0].shape()};</div>
 | 
						|
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span> </div>
 | 
						|
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00846" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html">  846</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_select.html">Select</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a6f833fe55dd68ad3726bbf9a8f75eec9">  848</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_select.html#a6f833fe55dd68ad3726bbf9a8f75eec9">Select</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno">  849</span> </div>
 | 
						|
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#aa51aa36e0adbd69e0d23d7c7adf88de2">  850</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_select.html#aa51aa36e0adbd69e0d23d7c7adf88de2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a2a82b6cba4c386b2b87f225a4b08ea9b">  851</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_select.html#a2a82b6cba4c386b2b87f225a4b08ea9b">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno">  852</span> </div>
 | 
						|
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a84e80361c8cf02536b4b98098793550f">  853</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a172df6812c2ea3e9d3c3fc5d527548d6">  854</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a678285f2c0b9dae85692399c3aa692a7">  855</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_select.html">Select</a>)</div>
 | 
						|
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#afc3c333fac7f902c98839921ef2874c8">  856</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_select.html#a295cd22e2284f2216bc93fdcf0b54867">  857</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno">  858</span> </div>
 | 
						|
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno">  859</span> private:</div>
 | 
						|
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno">  860</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno">  861</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno">  862</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00863" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html">  863</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_remainder.html">Remainder</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno">  864</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641">  865</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641">Remainder</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span> </div>
 | 
						|
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#ac6c6c86a0bf02e6e529eb87f6e617ccc">  867</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_remainder.html#ac6c6c86a0bf02e6e529eb87f6e617ccc">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a7919ea9b84e42522d51bf0d5a396e161">  868</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_remainder.html#a7919ea9b84e42522d51bf0d5a396e161">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span> </div>
 | 
						|
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a79867e1099a2e3c2d3e87407b2ab6e3d">  870</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a972002173fc00ee86029d12bf1a9ba79">  871</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#aeaecac5ea8e606d7ecd393d8019029e4">  872</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_remainder.html">Remainder</a>)</div>
 | 
						|
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a802039faaa2ed7b763ec3d7debcce814">  873</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_remainder.html#a74bf3a9723b59200573ff8bac9a0b666">  874</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span> </div>
 | 
						|
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno">  876</span> private:</div>
 | 
						|
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno">  877</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno">  878</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno">  879</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00880" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html">  880</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_equal.html">Equal</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno">  881</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00882" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36">  882</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36">Equal</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">bool</span> equal_nan = <span class="keyword">false</span>)</div>
 | 
						|
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), equal_nan_(equal_nan) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span> </div>
 | 
						|
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#aabb8aa61fa581defddcdca1274b1b454">  885</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_equal.html#aabb8aa61fa581defddcdca1274b1b454">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#ac3757001fec42ceb5ece2954df42161c">  886</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_equal.html#ac3757001fec42ceb5ece2954df42161c">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno">  887</span> </div>
 | 
						|
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#aea9cc3c88924ac824d72c39c2e83b0ca">  888</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#a659d484589d7cd96d038922a1a98730f">  889</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#a58c1c5003e43f47dc0788c1851deaa02">  890</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#a2f91e9603f63ad539837356b1ff3e7a9">  891</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno">  892</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00893" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_equal.html#a0787bf32f0b405a8b2ac809d2d990774">  893</a></span>  <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno">  894</span>    <span class="keywordflow">if</span> (equal_nan_) {</div>
 | 
						|
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno">  895</span>      os << <span class="stringliteral">"NaNEqual"</span>;</div>
 | 
						|
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span>    } <span class="keywordflow">else</span> {</div>
 | 
						|
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno">  897</span>      os << <span class="stringliteral">"Equal"</span>;</div>
 | 
						|
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno">  898</span>    }</div>
 | 
						|
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno">  899</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno">  900</span> </div>
 | 
						|
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno">  901</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno">  902</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno">  903</span>  <span class="keywordtype">bool</span> equal_nan_;</div>
 | 
						|
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno">  904</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno">  905</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00906" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html">  906</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_erf.html">Erf</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno">  907</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82">  908</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82">Erf</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno">  909</span> </div>
 | 
						|
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#a84ea16e43d5b7f83bbc2d5ece78a3fb6">  910</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf.html#a84ea16e43d5b7f83bbc2d5ece78a3fb6">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#ad8551be664d767dccc3c0d8cc1eca008">  911</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf.html#ad8551be664d767dccc3c0d8cc1eca008">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno">  912</span> </div>
 | 
						|
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#abe554f553356654a3e800ba368108aaa">  913</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#ac733d605d80277d613954794eb8c46fe">  914</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#a186af7b783cf832c3b25eec3a09f5a0c">  915</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_erf.html">Erf</a>)</div>
 | 
						|
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#abe99dfbc2954c3a7d5dec56ab165ee82">  916</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf.html#afa4abbd7786b474c44c336a95481d187">  917</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno">  918</span> </div>
 | 
						|
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno">  919</span> private:</div>
 | 
						|
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno">  920</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno">  921</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno">  922</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00923" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html">  923</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_erf_inv.html">ErfInv</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno">  924</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478">  925</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478">ErfInv</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno">  926</span> </div>
 | 
						|
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#af579627402af3249565134884701d39e">  927</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf_inv.html#af579627402af3249565134884701d39e">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#a4a2413d0634db1f3dae1806ddfa632db">  928</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_erf_inv.html#a4a2413d0634db1f3dae1806ddfa632db">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno">  929</span> </div>
 | 
						|
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#ad5d7634e8568af8cc4a54a558a48d0e9">  930</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#aa52710297ab6f7cd6826418c303e64be">  931</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#a0acb31bd5780abf61877bd1a3e0fd4f9">  932</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_erf_inv.html">ErfInv</a>)</div>
 | 
						|
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#aaac9e3b454ba564f9c6e804ab6562832">  933</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_erf_inv.html#a22a95594e68b43b50c05355c82779639">  934</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno">  935</span> </div>
 | 
						|
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno">  936</span> private:</div>
 | 
						|
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno">  937</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno">  938</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno">  939</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00940" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html">  940</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_exp.html">Exp</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno">  941</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06">  942</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06">Exp</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno">  943</span> </div>
 | 
						|
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#a47934c5a5023bc7ae7ae89bff45ebb2c">  944</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_exp.html#a47934c5a5023bc7ae7ae89bff45ebb2c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#a7d63695a97a14760fd33b5d4e6590822">  945</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_exp.html#a7d63695a97a14760fd33b5d4e6590822">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno">  946</span> </div>
 | 
						|
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#a0fcd579fe148b4c3dbc72e514b81bb37">  947</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#aef6721832fcc283b082e35a7d436fa59">  948</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#ad87cc1b2ae595a613b03b0fdca63ae6a">  949</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_exp.html">Exp</a>)</div>
 | 
						|
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#ac6e44bffe7a643ab4ca51e74c7328357">  950</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_exp.html#aee7ba8d5be4a11f4b8f359b0338ab670">  951</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno">  952</span> </div>
 | 
						|
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno">  953</span> private:</div>
 | 
						|
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno">  954</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno">  955</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno">  956</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00957" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html">  957</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_expm1.html">Expm1</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno">  958</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2">  959</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2">Expm1</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno">  960</span> </div>
 | 
						|
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#ab9c8b7aa50fe4592d55f8957baac647a">  961</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_expm1.html#ab9c8b7aa50fe4592d55f8957baac647a">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#a82930071f4b77d883b300f77966aff5f">  962</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_expm1.html#a82930071f4b77d883b300f77966aff5f">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno">  963</span> </div>
 | 
						|
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#aa4caa848b2ea97e71ee3dd33de039296">  964</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#ad463730632a00945d3a8addfdaec67b1">  965</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#af1a99266fc50aa5948cdd298e2916ef1">  966</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_expm1.html">Expm1</a>)</div>
 | 
						|
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_expm1.html#ab9dbf34806eb43b928722ed9e8feed08">  967</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno">  968</span> </div>
 | 
						|
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno">  969</span> private:</div>
 | 
						|
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno">  970</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno">  971</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno">  972</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00973" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html">  973</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_f_f_t.html">FFT</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen00975" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a0cdce626ed2c8eeeecc6949418437839">  975</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_f_f_t.html#a0cdce626ed2c8eeeecc6949418437839">FFT</a>(</div>
 | 
						|
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno">  976</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno">  977</span>      <span class="keyword">const</span> std::vector<size_t>& axes,</div>
 | 
						|
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno">  978</span>      <span class="keywordtype">bool</span> inverse,</div>
 | 
						|
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno">  979</span>      <span class="keywordtype">bool</span> real)</div>
 | 
						|
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno">  980</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), axes_(axes), inverse_(inverse), real_(<a class="code hl_function" href="group__ops.html#gaf8913cabeb9fb193ba687aaeb2087764">real</a>) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno">  981</span> </div>
 | 
						|
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a6bc262a0c2b5d4fe655e3e2e0ff28635">  982</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_f_f_t.html#a6bc262a0c2b5d4fe655e3e2e0ff28635">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a1c21b26d1e9ad7c4da78ae845721b2dd">  983</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_f_f_t.html#a1c21b26d1e9ad7c4da78ae845721b2dd">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno">  984</span> </div>
 | 
						|
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#ac32d6cc9b67289124f855ea68a61ede1">  985</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a34578814b6576f7b7b447541984ecba6">  986</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a15a2a5f7647f5fb78611a251d3270edf">  987</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_f_f_t.html">FFT</a>)</div>
 | 
						|
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno">  988</span> </div>
 | 
						|
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_f_f_t.html#a0ede3bc8b6d77d560c0a750b68fddc06">  989</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno">  990</span> </div>
 | 
						|
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno">  991</span> private:</div>
 | 
						|
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno">  992</span>  std::vector<<span class="keywordtype">size_t</span>> axes_;</div>
 | 
						|
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno">  993</span>  <span class="keywordtype">bool</span> inverse_;</div>
 | 
						|
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno">  994</span>  <span class="keywordtype">bool</span> real_;</div>
 | 
						|
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno">  995</span> </div>
 | 
						|
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno">  997</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span> </div>
 | 
						|
<div class="foldopen" id="foldopen00999" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html">  999</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_floor.html">Floor</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#ada4e979b784b732696313d7094e91340"> 1001</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_floor.html#ada4e979b784b732696313d7094e91340">Floor</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> </div>
 | 
						|
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7"> 1003</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_floor.html#a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#aaa29c83538099eb8f951c95a41f2eb65"> 1004</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_floor.html#aaa29c83538099eb8f951c95a41f2eb65">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> </div>
 | 
						|
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#aea4dc79a65774990e775ad49519a5d10"> 1006</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#aa47bc360ec563b6e7d93e8b50626d8af"> 1007</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#ac289e87c5fac15e2f491e2513be610f6"> 1008</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_floor.html">Floor</a>)</div>
 | 
						|
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#a24b64feb026c4fcd02fc481cffdb1c94"> 1009</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_floor.html#aaf86becc7bfba6ee2af0d1f6d8e25015"> 1010</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> </div>
 | 
						|
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> private:</div>
 | 
						|
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01016" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html"> 1016</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_full.html">Full</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#aafcb86a2e41353853ec48c717e0c54d6"> 1018</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_full.html#aafcb86a2e41353853ec48c717e0c54d6">Full</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> </div>
 | 
						|
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#a3dccd3756599d7fd018b2af0093b082c"> 1020</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_full.html#a3dccd3756599d7fd018b2af0093b082c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#aa54f99bb4cba12a551392dea56003872"> 1021</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_full.html#aa54f99bb4cba12a551392dea56003872">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
 | 
						|
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#afc57ab6bd9ebdbbf042af54a59785d95"> 1023</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#a281a865d0664596ac8d05ea8e7f26407"> 1024</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#a68e08303f4960ab373b84a3312edc013"> 1025</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_full.html">Full</a>)</div>
 | 
						|
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_full.html#afafcbcae1e28597fe8f7fde289105792"> 1026</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> </div>
 | 
						|
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> private:</div>
 | 
						|
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01032" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html"> 1032</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_gather.html">Gather</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01034" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#a5b5f47ceff1d43477c87be5116f261d0"> 1034</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather.html#a5b5f47ceff1d43477c87be5116f261d0">Gather</a>(</div>
 | 
						|
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>      <span class="keyword">const</span> std::vector<int>& axes,</div>
 | 
						|
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span>      <span class="keyword">const</span> std::vector<int>& slice_sizes)</div>
 | 
						|
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), axes_(axes), slice_sizes_(slice_sizes) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> </div>
 | 
						|
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#a9ed5587f0d04b59a2b9186c0aac21290"> 1040</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather.html#a9ed5587f0d04b59a2b9186c0aac21290">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#aec48ee529cb2449915a7b27a3c4361e8"> 1041</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather.html#aec48ee529cb2449915a7b27a3c4361e8">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> </div>
 | 
						|
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#abab0c4c204e66489825ce80d2194a275"> 1043</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#ac54ef8fac92ab190f1793f3dd95b9e8d"> 1044</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#a9d57637a8a65008683c3847251bdcf91"> 1045</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_gather.html">Gather</a>)</div>
 | 
						|
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather.html#a23ff1406dbf0c770e75ad47440b467aa"> 1046</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> </div>
 | 
						|
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> private:</div>
 | 
						|
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span>  std::vector<<span class="keywordtype">int</span>> axes_;</div>
 | 
						|
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span>  std::vector<<span class="keywordtype">int</span>> slice_sizes_;</div>
 | 
						|
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01054" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html"> 1054</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_greater.html">Greater</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b"> 1056</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b">Greater</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> </div>
 | 
						|
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#abe1c03f311d0e0b610f3392a6566f2ae"> 1058</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater.html#abe1c03f311d0e0b610f3392a6566f2ae">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#ae8957cccf4c924d941f57a1bb751c878"> 1059</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater.html#ae8957cccf4c924d941f57a1bb751c878">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> </div>
 | 
						|
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#a6d8267411fc4951de781f9e8e6c53aa0"> 1061</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#aa47a9f80f45daf6a405e34f6dc7c99c1"> 1062</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#aa2980e45cd2c79ebfb394012d3108a04"> 1063</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_greater.html">Greater</a>)</div>
 | 
						|
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#a6877a6888614a618dc64296763ccabb1"> 1064</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater.html#ab2167a38c3baff99f527f17eb4c71d46"> 1065</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> </div>
 | 
						|
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> private:</div>
 | 
						|
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01071" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html"> 1071</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_greater_equal.html">GreaterEqual</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527"> 1073</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527">GreaterEqual</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> </div>
 | 
						|
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#a15469125b9bea89b64bfeac01590c075"> 1075</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater_equal.html#a15469125b9bea89b64bfeac01590c075">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#ac246263b4548126c3d4ab7e392575d24"> 1076</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_greater_equal.html#ac246263b4548126c3d4ab7e392575d24">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> </div>
 | 
						|
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#ab0e1be93eb01b0ce7fa83e953f5e3e1d"> 1078</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#ac7346080aaaa01d52896127f383f9d20"> 1079</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#ab98045c861d2d2ffb0398c2c1d671cef"> 1080</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_greater_equal.html">GreaterEqual</a>)</div>
 | 
						|
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#a3daef8596b963026b602019bc56fc5fc"> 1081</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_greater_equal.html#a636a9cc00b0333e49978f39814af640f"> 1082</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span> </div>
 | 
						|
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> private:</div>
 | 
						|
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01088" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html"> 1088</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_hadamard.html">Hadamard</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01090" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#abe4a0ed820b126940beec519d4239923"> 1090</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_hadamard.html#abe4a0ed820b126940beec519d4239923">Hadamard</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">float</span> scale)</div>
 | 
						|
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), scale_(scale) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> </div>
 | 
						|
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#ab27d6a9df42b3aab41ace3073a4c880d"> 1093</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_hadamard.html#ab27d6a9df42b3aab41ace3073a4c880d">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a2470feb690f5463138490763c38b5733"> 1094</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_hadamard.html#a2470feb690f5463138490763c38b5733">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> </div>
 | 
						|
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a9f1a172e6246859e813002abe9b8f99c"> 1096</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a22b9d55ae3ba5eef63505124696e712a"> 1097</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a3df6e7e3b3b71bf50be5f1a05d0870b6"> 1098</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_hadamard.html">Hadamard</a>)</div>
 | 
						|
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a458614bc7820ae56493eb56d813b2cde"> 1099</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> </div>
 | 
						|
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_hadamard.html#a8a528d8d69a7343bdfd704a3e74230b8"> 1101</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> </div>
 | 
						|
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> private:</div>
 | 
						|
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordtype">float</span> scale_;</div>
 | 
						|
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> </div>
 | 
						|
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01109" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html"> 1109</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_imag.html">Imag</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#a284b7de34a316110fdc98e7b753372b2"> 1111</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_imag.html#a284b7de34a316110fdc98e7b753372b2">Imag</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> </div>
 | 
						|
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#a17d1f1f9f8528668fcdf39b636720829"> 1113</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_imag.html#a17d1f1f9f8528668fcdf39b636720829">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#a247a4d059b0a99678c6be8c15e42c1e6"> 1114</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_imag.html#a247a4d059b0a99678c6be8c15e42c1e6">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> </div>
 | 
						|
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#ace9906672bd88df0573653883d58ecb3"> 1116</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#ac01c5ed9b886983450ed9f049ddac55a"> 1117</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#a0c8d48e2a1474d80a314ea9b96dbaa8d"> 1118</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_imag.html">Imag</a>)</div>
 | 
						|
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#a51c15ae82855edebba2ba779516465f5"> 1119</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_imag.html#ab396ef74748abd3d4121ffee33a08d48"> 1120</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01123" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html"> 1123</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_less.html">Less</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7"> 1125</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7">Less</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> </div>
 | 
						|
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#a32624124ffece066f496b3299056bcef"> 1127</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less.html#a32624124ffece066f496b3299056bcef">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#a353335ce06ddbe8498d86d129c835917"> 1128</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less.html#a353335ce06ddbe8498d86d129c835917">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> </div>
 | 
						|
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#a5fee5956cf087d8405359121aa62ba7e"> 1130</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#af1493d566f6d940b8f674aac17f5dfce"> 1131</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#ad67e6f66d7b75546fd98dbee6b631d78"> 1132</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_less.html">Less</a>)</div>
 | 
						|
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#a7d6ed6353a0dcefebd008026dbd3cd63"> 1133</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less.html#a5e8b56574ccb91c065548f4bda40e278"> 1134</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> </div>
 | 
						|
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> private:</div>
 | 
						|
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01140" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html"> 1140</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_less_equal.html">LessEqual</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc"> 1142</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc">LessEqual</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> </div>
 | 
						|
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a55d1352b0e97841a92503bc57c19ed16"> 1144</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less_equal.html#a55d1352b0e97841a92503bc57c19ed16">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#acf035a82b11e6f63742143ea540fedac"> 1145</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_less_equal.html#acf035a82b11e6f63742143ea540fedac">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> </div>
 | 
						|
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a3d5df21db184f2b7620cda9da1684480"> 1147</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#addfe62d3557d216f8307bdf1cbff6a8f"> 1148</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a409842d3862113c53cbbdf7467a06950"> 1149</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_less_equal.html">LessEqual</a>)</div>
 | 
						|
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a76ee1438cf4bd109eae4e0b3472b26af"> 1150</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_less_equal.html#a2e259f3de11f97f3bd38a2e65667d78f"> 1151</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> </div>
 | 
						|
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> private:</div>
 | 
						|
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01157" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_load.html"> 1157</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_load.html">Load</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01159" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a"> 1159</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a">Load</a>(</div>
 | 
						|
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span>      std::shared_ptr<io::Reader> reader,</div>
 | 
						|
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span>      <span class="keywordtype">size_t</span> offset,</div>
 | 
						|
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span>      <span class="keywordtype">bool</span> swap_endianness = <span class="keyword">false</span>)</div>
 | 
						|
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span>        reader_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(reader)),</div>
 | 
						|
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span>        offset_(offset),</div>
 | 
						|
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span>        swap_endianness_(swap_endianness) {</div>
 | 
						|
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span>    <span class="keywordflow">if</span> (stream.<a class="code hl_variable" href="structmlx_1_1core_1_1_stream.html#a406b1b0162287a4162fab1f70e2ff3bb">device</a> == Device::gpu) {</div>
 | 
						|
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span>      io_stream();</div>
 | 
						|
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span>    }</div>
 | 
						|
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> </div>
 | 
						|
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_load.html#ada026ac30566f3109d8182e35d307c0a"> 1173</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_load.html#ada026ac30566f3109d8182e35d307c0a">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_load.html#a06933e887ea94a4d01d81195c5e07a3d"> 1174</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_load.html#a06933e887ea94a4d01d81195c5e07a3d">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> </div>
 | 
						|
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_load.html#a54e08a0ca41b7c9f1a76b00c889f0bfa"> 1176</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_load.html">Load</a>)</div>
 | 
						|
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> </div>
 | 
						|
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span>  <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a>& io_stream() {</div>
 | 
						|
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span>    <span class="keyword">static</span> <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> io_stream = new_stream(Device::cpu);</div>
 | 
						|
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span>    <span class="keywordflow">return</span> io_stream;</div>
 | 
						|
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span>  };</div>
 | 
						|
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span>  std::shared_ptr<io::Reader> reader_;</div>
 | 
						|
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordtype">size_t</span> offset_;</div>
 | 
						|
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordtype">bool</span> swap_endianness_;</div>
 | 
						|
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01189" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html"> 1189</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_log.html">Log</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421"> 1191</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421">Base</a> { two, ten, e };</div>
 | 
						|
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01193" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9"> 1193</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9">Log</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <a class="code hl_enumeration" href="classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421">Base</a> base)</div>
 | 
						|
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), base_(base) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> </div>
 | 
						|
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#aadc7bb4cb24f3ecbbb9ed54a699ab74f"> 1196</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log.html#aadc7bb4cb24f3ecbbb9ed54a699ab74f">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#aaaa49e9455f3a197bc319646b5ca6390"> 1197</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log.html#aaaa49e9455f3a197bc319646b5ca6390">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> </div>
 | 
						|
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a007ddbcf911093231f607a8b9ed5cd49"> 1199</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#ac646d4155322c34f58183d97301e3832"> 1200</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a2fc58ea4ca744db493b947d1136d05f8"> 1201</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a113dcc95e2a1a052238b1f5c8935a63d"> 1202</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01204" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log.html#a7b946d98d4a228c6be9f606a3bd8a30d"> 1204</a></span>  <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span>    <span class="keywordflow">switch</span> (base_) {</div>
 | 
						|
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span>      <span class="keywordflow">case</span> e:</div>
 | 
						|
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span>        os << <span class="stringliteral">"Log"</span>;</div>
 | 
						|
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span>      <span class="keywordflow">case</span> two:</div>
 | 
						|
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span>        os << <span class="stringliteral">"Log2"</span>;</div>
 | 
						|
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span>      <span class="keywordflow">case</span> ten:</div>
 | 
						|
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span>        os << <span class="stringliteral">"Log10"</span>;</div>
 | 
						|
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span>    }</div>
 | 
						|
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> </div>
 | 
						|
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span>  Base base_;</div>
 | 
						|
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01223" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html"> 1223</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_log1p.html">Log1p</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a"> 1225</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a">Log1p</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> </div>
 | 
						|
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#a8192e5438de99c4cda056987935cba23"> 1227</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log1p.html#a8192e5438de99c4cda056987935cba23">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#a1b97decae7338d46874e736c95fa7431"> 1228</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log1p.html#a1b97decae7338d46874e736c95fa7431">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> </div>
 | 
						|
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#a7122576f95ce479926bbbbc690891f71"> 1230</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#a537e44c7c993daf48698082e75e71ba2"> 1231</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#a8a1569dde30440ce11ea466ccc69d2d4"> 1232</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_log1p.html">Log1p</a>)</div>
 | 
						|
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log1p.html#aebf8f5b6670f55fa24283a934f4b25df"> 1233</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> </div>
 | 
						|
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> private:</div>
 | 
						|
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01239" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html"> 1239</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_logical_not.html">LogicalNot</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7"> 1241</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7">LogicalNot</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> </div>
 | 
						|
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#acf3f7b3b20ca69533536e0e0a05725b3"> 1243</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_not.html#acf3f7b3b20ca69533536e0e0a05725b3">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a1d0d2bc93f935eca6c85ef7bf67f2d6a"> 1244</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_not.html#a1d0d2bc93f935eca6c85ef7bf67f2d6a">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> </div>
 | 
						|
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a5308a271619ee74df561b0aaf525915d"> 1246</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a4838c483ced707cfda3d6cd24bf4667c"> 1247</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a001ff3eca46440f0d8a287e0b98a8a2c"> 1248</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_logical_not.html">LogicalNot</a>)</div>
 | 
						|
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#aba53675da351cd9b71a73d475b4bbe99"> 1249</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_not.html#a4a40511a052a6627085be378bbebe69c"> 1250</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> </div>
 | 
						|
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> private:</div>
 | 
						|
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01256" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html"> 1256</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_logical_and.html">LogicalAnd</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3"> 1258</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3">LogicalAnd</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> </div>
 | 
						|
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#adbe1c1785af1a8b827289d22b0d170b3"> 1260</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_and.html#adbe1c1785af1a8b827289d22b0d170b3">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#a132b2eedaa3978de5a5350da3c2ca40f"> 1261</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_and.html#a132b2eedaa3978de5a5350da3c2ca40f">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> </div>
 | 
						|
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#aacc5f6f53ffc327b7771485e3da2a4e5"> 1263</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#a78d3be71da224ea19158cf9e8c4cf434"> 1264</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#a9a5220eb56e1fd94fd879394ee5ad397"> 1265</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_logical_and.html">LogicalAnd</a>)</div>
 | 
						|
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#a9572c35f72e0db2f7f86bbf42438a6be"> 1266</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_and.html#a191d69d92c01ed5ad82d4688f1de2617"> 1267</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> </div>
 | 
						|
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span> private:</div>
 | 
						|
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01273" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html"> 1273</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_logical_or.html">LogicalOr</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918"> 1275</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918">LogicalOr</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> </div>
 | 
						|
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a13cd4cbf26589287e85aeaaca42d7f62"> 1277</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_or.html#a13cd4cbf26589287e85aeaaca42d7f62">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a3be1da328f0f8620de2e4fc1d22a077a"> 1278</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_logical_or.html#a3be1da328f0f8620de2e4fc1d22a077a">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> </div>
 | 
						|
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a6e2e77e6aaf47872b2e96b151c32daf3"> 1280</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a292de6001c551214c8152a7a5b0e6bd4"> 1281</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a6becc5fbfadde850de9857099dcd5003"> 1282</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_logical_or.html">LogicalOr</a>)</div>
 | 
						|
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a9c8b10a5cf5c69fdc2362390197e4e71"> 1283</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_logical_or.html#a26259843be2de75d5e07cb7ea94fcfe4"> 1284</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> </div>
 | 
						|
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> private:</div>
 | 
						|
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01290" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html"> 1290</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_log_add_exp.html">LogAddExp</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a"> 1292</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a">LogAddExp</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> </div>
 | 
						|
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#abef17fb590b1a8d356f2a580e45d41f0"> 1294</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log_add_exp.html#abef17fb590b1a8d356f2a580e45d41f0">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#acace355b62ec00df649f9f99e8f2eb7a"> 1295</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_log_add_exp.html#acace355b62ec00df649f9f99e8f2eb7a">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> </div>
 | 
						|
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#a82190aa1421a9734b6e9480debffac78"> 1297</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#aea2d1d58794e86f3488219ed3fa14329"> 1298</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#a702a2eff0bd1ae7b6fb829dd0b0b11b9"> 1299</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_log_add_exp.html">LogAddExp</a>)</div>
 | 
						|
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#a3cf9a202c05aff39919d713d6e2b32e4"> 1300</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_log_add_exp.html#ac35cf432ecdd141d957b55fc4bff6635"> 1301</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span> </div>
 | 
						|
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> private:</div>
 | 
						|
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01307" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html"> 1307</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_matmul.html">Matmul</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7"> 1309</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7">Matmul</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span> </div>
 | 
						|
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#a357a7f57a2a220a91977f810a69413fc"> 1311</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_matmul.html#a357a7f57a2a220a91977f810a69413fc">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#a8707a4e9b75c769e8f1dbca15c6a1ae7"> 1312</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_matmul.html#a8707a4e9b75c769e8f1dbca15c6a1ae7">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> </div>
 | 
						|
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#a524136cca481598ea20894d85ca66bb0"> 1314</a></span>  std::vector<array> <a class="code hl_function" href="classmlx_1_1core_1_1_matmul.html#a524136cca481598ea20894d85ca66bb0">vjp</a>(</div>
 | 
						|
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span>      <span class="keyword">const</span> std::vector<array>& primals,</div>
 | 
						|
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span>      <span class="keyword">const</span> std::vector<array>& cotangents,</div>
 | 
						|
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span>      <span class="keyword">const</span> std::vector<int>& argnums,</div>
 | 
						|
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span>      <span class="keyword">const</span> std::vector<array>& outputs) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> </div>
 | 
						|
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#a3a1c6e70bac300240760fe41a58340c2"> 1320</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#abb4a16a265a05d56a2f5d2e89d6f9dfd"> 1321</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_matmul.html">Matmul</a>)</div>
 | 
						|
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_matmul.html#aab372b59eae0840fc4f75ef5719a2630"> 1322</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01325" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html"> 1325</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_maximum.html">Maximum</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816"> 1327</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816">Maximum</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> </div>
 | 
						|
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a62b38fbe5f96db58c2b60165ac4eadcf"> 1329</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_maximum.html#a62b38fbe5f96db58c2b60165ac4eadcf">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#ade0f721b10a6b3a12bdadd34c48f72a7"> 1330</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_maximum.html#ade0f721b10a6b3a12bdadd34c48f72a7">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span> </div>
 | 
						|
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#ab664918e0d71cfec1318a9879e78c5d3"> 1332</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a25ac5d5b453e571bf7240aa8de103c39"> 1333</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a3b708a1d6b526719c62850294776f8ca"> 1334</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_maximum.html">Maximum</a>)</div>
 | 
						|
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a21fe93fbd7799682f481260aee8bdb46"> 1335</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_maximum.html#a7bb80360ba4b74d0b0f3f74a5ff90d1b"> 1336</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span> </div>
 | 
						|
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span> private:</div>
 | 
						|
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01342" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html"> 1342</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_minimum.html">Minimum</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5"> 1344</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5">Minimum</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span> </div>
 | 
						|
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#a6b93f493ee87089943a8085fe59dfc6e"> 1346</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_minimum.html#a6b93f493ee87089943a8085fe59dfc6e">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#aadc68afa0afbe2103f19d161f5e0a2ba"> 1347</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_minimum.html#aadc68afa0afbe2103f19d161f5e0a2ba">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span> </div>
 | 
						|
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#adab0f31acf68075a0be908d8eb882980"> 1349</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#a10acf4fef35eed7ca55d131b5ae2d038"> 1350</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#a137677bf32c626a768b732a7b8575512"> 1351</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_minimum.html">Minimum</a>)</div>
 | 
						|
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#a56c54ee3293cc2cd84462b9ec7ac36b4"> 1352</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_minimum.html#ab4a85741dffaa64d8ead028f11539d70"> 1353</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> </div>
 | 
						|
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span> private:</div>
 | 
						|
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01359" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html"> 1359</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_multiply.html">Multiply</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c"> 1361</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c">Multiply</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span> </div>
 | 
						|
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#a624fce06c047cdc4dfdbdcaaddb25f34"> 1363</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_multiply.html#a624fce06c047cdc4dfdbdcaaddb25f34">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#a634fcb4e981d8d3f4d94252caf25bee0"> 1364</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_multiply.html#a634fcb4e981d8d3f4d94252caf25bee0">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span> </div>
 | 
						|
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#ae7e82c8fc8cbaf4e00c27eb54fac7dbf"> 1366</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#a79f7f0bb70de2e3e41a66c96285325b4"> 1367</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#aa4f1f7af68346ce80c2636df415c9909"> 1368</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_multiply.html">Multiply</a>)</div>
 | 
						|
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#ae288159fa2d6d35087a85aca8eafa9b2"> 1369</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_multiply.html#a072de3911113247c95c28d3b52400061"> 1370</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> </div>
 | 
						|
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span> private:</div>
 | 
						|
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01376" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html"> 1376</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_negative.html">Negative</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70"> 1378</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70">Negative</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span> </div>
 | 
						|
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#af43553dc418c8ebe75fa9cdcba103c3b"> 1380</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_negative.html#af43553dc418c8ebe75fa9cdcba103c3b">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#a97f1b316eace0c6d9e576d766940c75b"> 1381</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_negative.html#a97f1b316eace0c6d9e576d766940c75b">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> </div>
 | 
						|
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#a1f8a6079e272f1a0599f88a1a8419cf0"> 1383</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#a7d918f9b26b8fb7b047a27d85ebab979"> 1384</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#a0d5c30e267ff6468d64f1987f9f83f91"> 1385</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_negative.html">Negative</a>)</div>
 | 
						|
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#ac2a4d8159c548639d6289980c8975823"> 1386</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_negative.html#a253c08c7461bf2dce05f555c8dbf0014"> 1387</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> </div>
 | 
						|
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span> private:</div>
 | 
						|
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01393" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html"> 1393</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_not_equal.html">NotEqual</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9"> 1395</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9">NotEqual</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"> 1396</span> </div>
 | 
						|
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#a8f95f8b5873850b875b1641df8196047"> 1397</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_not_equal.html#a8f95f8b5873850b875b1641df8196047">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#a61179747e34e203150e9c660dfddb5f2"> 1398</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_not_equal.html#a61179747e34e203150e9c660dfddb5f2">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> </div>
 | 
						|
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#ab8b57932f03c8eee664bf89adeaa43b5"> 1400</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#ae2d3e5776efaefed7f4c73f679b02f17"> 1401</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#a12aa2f764880d29e627540610b63af09"> 1402</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_not_equal.html">NotEqual</a>)</div>
 | 
						|
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#ac12fd6b3e2f2e7e4e622b59badf2c73d"> 1403</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_not_equal.html#a5b10e99bc564197e7b16dccb0577d89a"> 1404</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span> </div>
 | 
						|
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> private:</div>
 | 
						|
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01410" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html"> 1410</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_number_of_elements.html">NumberOfElements</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01412" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#ac64d7c40ae29d687f8b7d2fa33e13b06"> 1412</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_number_of_elements.html#ac64d7c40ae29d687f8b7d2fa33e13b06">NumberOfElements</a>(</div>
 | 
						|
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span>      std::vector<int> axes,</div>
 | 
						|
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span>      <span class="keywordtype">bool</span> inverted,</div>
 | 
						|
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype)</div>
 | 
						|
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span>        axes_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(axes)),</div>
 | 
						|
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span>        inverted_(inverted),</div>
 | 
						|
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span>        dtype_(dtype) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span> </div>
 | 
						|
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#acc328321cf5300874ee884367cbede3f"> 1422</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_number_of_elements.html#acc328321cf5300874ee884367cbede3f">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#a2c98c42915fb2bfe12f5c99ea553eff5"> 1423</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_number_of_elements.html#a2c98c42915fb2bfe12f5c99ea553eff5">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span> </div>
 | 
						|
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#a977d83eae845b8bd8c0b98b48cb1c6c2"> 1425</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#aecde30826970938f3aa688979a668f52"> 1426</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_number_of_elements.html">NumberOfElements</a>)</div>
 | 
						|
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#ad6a32565ccc64499e368e15bba0b438f"> 1427</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="foldopen" id="foldopen01428" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_number_of_elements.html#aae36bb1e125c0a2d7cd54e78be0f2af8"> 1428</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> output_shapes(</div>
 | 
						|
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span>    <span class="keywordflow">return</span> {{}};</div>
 | 
						|
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span> </div>
 | 
						|
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span>  std::vector<int> axes_;</div>
 | 
						|
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span>  <span class="keywordtype">bool</span> inverted_;</div>
 | 
						|
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span>  <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype_;</div>
 | 
						|
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> </div>
 | 
						|
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01441" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html"> 1441</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_pad.html">Pad</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01443" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43"> 1443</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43">Pad</a>(</div>
 | 
						|
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span>      <span class="keyword">const</span> std::vector<int>& axes,</div>
 | 
						|
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span>      <span class="keyword">const</span> std::vector<int>& low_pad_size,</div>
 | 
						|
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span>      <span class="keyword">const</span> std::vector<int>& high_pad_size)</div>
 | 
						|
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span>        axes_(axes),</div>
 | 
						|
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span>        low_pad_size_(low_pad_size),</div>
 | 
						|
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span>        high_pad_size_(high_pad_size) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span> </div>
 | 
						|
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#aaf82dd163cd536fbf97304f8b29080cb"> 1453</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_pad.html#aaf82dd163cd536fbf97304f8b29080cb">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#aefd4d3a5bd8b6b35b266c9e558ada153"> 1454</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_pad.html#aefd4d3a5bd8b6b35b266c9e558ada153">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> </div>
 | 
						|
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#a85658812a0f3275ba3eb74b7c75686cf"> 1456</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#a6e43a42032ef11497e8d91290574ec72"> 1457</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#af87754daaf51f6a6cf8bd4949ca1e70a"> 1458</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_pad.html">Pad</a>)</div>
 | 
						|
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_pad.html#aad7c3bfecafe435d6a8e807de4c7ea9b"> 1459</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> </div>
 | 
						|
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> private:</div>
 | 
						|
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span>  std::vector<<span class="keywordtype">int</span>> axes_;</div>
 | 
						|
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span>  std::vector<<span class="keywordtype">int</span>> low_pad_size_;</div>
 | 
						|
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span>  std::vector<<span class="keywordtype">int</span>> high_pad_size_;</div>
 | 
						|
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span> </div>
 | 
						|
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01469" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html"> 1469</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_partition.html">Partition</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01471" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d"> 1471</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d">Partition</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">int</span> kth, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), kth_(kth), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span> </div>
 | 
						|
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#a784596ab567f9f3cb4fe1a69466523d8"> 1474</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_partition.html#a784596ab567f9f3cb4fe1a69466523d8">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#a8eca1be21ae9ccfda46e6f3e85f506ef"> 1475</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_partition.html#a8eca1be21ae9ccfda46e6f3e85f506ef">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span> </div>
 | 
						|
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#aa0cc55e4d4d2cb5d129d32832321df2c"> 1477</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#a310f569a163958940ed02cf52079746a"> 1478</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#ab5c7aa4fed325475b33d4004649f0dc0"> 1479</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_partition.html">Partition</a>)</div>
 | 
						|
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#ae5b792df683bc14dde89f75ac6bcbeaf"> 1480</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_partition.html#aabdf6ef4f2159b2bfe93e0e87d4772f8"> 1481</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> </div>
 | 
						|
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span> private:</div>
 | 
						|
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span>  <span class="keywordtype">int</span> kth_;</div>
 | 
						|
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span> </div>
 | 
						|
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01490" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html"> 1490</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_power.html">Power</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2"> 1492</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2">Power</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span> </div>
 | 
						|
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a6783da16fb6ff393aaa57737f1973206"> 1494</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_power.html#a6783da16fb6ff393aaa57737f1973206">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a80577d4c0853c24027777c90a1ec7e11"> 1495</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_power.html#a80577d4c0853c24027777c90a1ec7e11">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span> </div>
 | 
						|
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a5e22749592413a9adbdc877b03b87c8f"> 1497</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a3e78b06453faa4fd149fd19c0e7a300a"> 1498</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a33e2d7ff078426fe66ea2370ceb5af60"> 1499</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_power.html">Power</a>)</div>
 | 
						|
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a76b4ec9d1ff07f06189e414480453d68"> 1500</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_power.html#a1c17867ea1bad8899adb38185c9423c1"> 1501</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span> </div>
 | 
						|
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> private:</div>
 | 
						|
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01507" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html"> 1507</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_quantized_matmul.html">QuantizedMatmul</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01509" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c"> 1509</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c">QuantizedMatmul</a>(</div>
 | 
						|
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span>      <span class="keywordtype">int</span> group_size,</div>
 | 
						|
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span>      <span class="keywordtype">int</span> bits,</div>
 | 
						|
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span>      <span class="keywordtype">bool</span> transpose)</div>
 | 
						|
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span>        group_size_(group_size),</div>
 | 
						|
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span>        bits_(bits),</div>
 | 
						|
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span>        transpose_(<a class="code hl_function" href="group__ops.html#gac1869f3b7094869b44fe7ac4ce58638b">transpose</a>) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span> </div>
 | 
						|
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#ab3dfa73b74d8f4f2e9ab4f0eb016b0e3"> 1519</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_quantized_matmul.html#ab3dfa73b74d8f4f2e9ab4f0eb016b0e3">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#a2812ad007d695ed1aaf9cf706fb9c4b3"> 1520</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_quantized_matmul.html#a2812ad007d695ed1aaf9cf706fb9c4b3">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span> </div>
 | 
						|
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#a3434394140177b285f971c9ffe7e8763"> 1522</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#ae51fdd0b81dd26c6687577567c126e23"> 1523</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#aaef8c96d4d40b4fa08ced540d341a4db"> 1524</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_quantized_matmul.html">QuantizedMatmul</a>)</div>
 | 
						|
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_quantized_matmul.html#af28b36e3f40ea41785387800326cc8e1"> 1525</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> </div>
 | 
						|
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span> private:</div>
 | 
						|
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span>  <span class="keywordtype">int</span> group_size_;</div>
 | 
						|
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span>  <span class="keywordtype">int</span> bits_;</div>
 | 
						|
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span>  <span class="keywordtype">bool</span> transpose_;</div>
 | 
						|
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> </div>
 | 
						|
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01535" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html"> 1535</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_gather_q_m_m.html">GatherQMM</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01537" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a60ed2ade7f10dd9c9314913a810f9360"> 1537</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_q_m_m.html#a60ed2ade7f10dd9c9314913a810f9360">GatherQMM</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">int</span> group_size, <span class="keywordtype">int</span> bits, <span class="keywordtype">bool</span> transpose)</div>
 | 
						|
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span>        group_size_(group_size),</div>
 | 
						|
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span>        bits_(bits),</div>
 | 
						|
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span>        transpose_(<a class="code hl_function" href="group__ops.html#gac1869f3b7094869b44fe7ac4ce58638b">transpose</a>) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span> </div>
 | 
						|
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a89aae98bfbdd6563df44ef7d70f0bf8c"> 1543</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_q_m_m.html#a89aae98bfbdd6563df44ef7d70f0bf8c">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a86eb048afc95646b2e96ec5493e3d887"> 1544</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_gather_q_m_m.html#a86eb048afc95646b2e96ec5493e3d887">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"> 1545</span> </div>
 | 
						|
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a13ce5e138ebddb8780a034452f68892f"> 1546</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#adc579058752b927c71b45a962d4869e0"> 1547</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a53c3fa7beb51ce2e1c2da28633406fe0"> 1548</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_gather_q_m_m.html">GatherQMM</a>)</div>
 | 
						|
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_gather_q_m_m.html#a6a7da6bcf657fcdb157c45bf35fdec11"> 1549</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> </div>
 | 
						|
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> private:</div>
 | 
						|
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span>  <span class="keywordtype">int</span> group_size_;</div>
 | 
						|
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span>  <span class="keywordtype">int</span> bits_;</div>
 | 
						|
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span>  <span class="keywordtype">bool</span> transpose_;</div>
 | 
						|
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> </div>
 | 
						|
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01559" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html"> 1559</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_random_bits.html">RandomBits</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01561" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b"> 1561</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b">RandomBits</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keyword">const</span> std::vector<int>& shape, <span class="keywordtype">int</span> width)</div>
 | 
						|
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), shape_(shape), width_(width) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> </div>
 | 
						|
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a5752d051cd16cf5f8d4754c0a656f0d2"> 1564</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_random_bits.html#a5752d051cd16cf5f8d4754c0a656f0d2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a578756866665358577418e4cdd94aa3a"> 1565</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_random_bits.html#a578756866665358577418e4cdd94aa3a">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span> </div>
 | 
						|
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a0dc12f053c6492f934bc18031412c415"> 1567</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a8a5593c34fd868d94b36a8ced1390271"> 1568</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_random_bits.html">RandomBits</a>)</div>
 | 
						|
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_random_bits.html#a72ec915debf5823e7c0463045b2894e6"> 1569</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span> </div>
 | 
						|
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span> private:</div>
 | 
						|
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span>  std::vector<<span class="keywordtype">int</span>> shape_;</div>
 | 
						|
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span>  <span class="keywordtype">int</span> width_;</div>
 | 
						|
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> </div>
 | 
						|
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01578" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html"> 1578</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_real.html">Real</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#acd4480e3f0834d70ff6b5f1ecef17892"> 1580</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_real.html#acd4480e3f0834d70ff6b5f1ecef17892">Real</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> </div>
 | 
						|
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a365d046caac91b521f0f5a5518037934"> 1582</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_real.html#a365d046caac91b521f0f5a5518037934">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a1e209e88a43bdd1eea43ad0b03f9a7f2"> 1583</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_real.html#a1e209e88a43bdd1eea43ad0b03f9a7f2">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span> </div>
 | 
						|
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a07fbbefb6a1bc1ebd3985b24c36693b6"> 1585</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#adff418a54970e2344bd3c2885aae5526"> 1586</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a740a0dfb54c2a4467a0a59f11fe69e1b"> 1587</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_real.html">Real</a>)</div>
 | 
						|
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a6d9bed396862a9e9d6abfbdcd8d8d239"> 1588</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_real.html#a75d7b85e68a7a03ec911c7acc09ddde5"> 1589</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01592" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html"> 1592</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_reshape.html">Reshape</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01594" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26"> 1594</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26">Reshape</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keyword">const</span> std::vector<int>& shape)</div>
 | 
						|
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), shape_(shape) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> </div>
 | 
						|
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#a658de2c5f710991b48e14b2bd19b229f"> 1597</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reshape.html#a658de2c5f710991b48e14b2bd19b229f">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#aa1e85f28471875750c47351520b56059"> 1598</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reshape.html#aa1e85f28471875750c47351520b56059">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span> </div>
 | 
						|
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#ae239dd3c6cab147e4af572dc58204f9d"> 1600</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#ab8fc28748991017cc3e29f93c91087a5"> 1601</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#a0f2323d5d67ece0eb25ecff565b21862"> 1602</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_reshape.html">Reshape</a>)</div>
 | 
						|
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reshape.html#abd07c53af476777a04307e0423784cf3"> 1603</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span> </div>
 | 
						|
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span> private:</div>
 | 
						|
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span>  std::vector<<span class="keywordtype">int</span>> shape_;</div>
 | 
						|
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> </div>
 | 
						|
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span> </div>
 | 
						|
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span>  std::pair<<span class="keywordtype">bool</span>, std::vector<<span class="keywordtype">size_t</span>>> prepare_reshape(</div>
 | 
						|
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span>      const <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& in,</div>
 | 
						|
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span>      const <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span>  <span class="keywordtype">void</span> shared_buffer_reshape(</div>
 | 
						|
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span>      const <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& in,</div>
 | 
						|
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span>      const std::vector<<span class="keywordtype">size_t</span>>& out_strides,</div>
 | 
						|
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span>      <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01618" name="l01618"></a><span class="lineno"> 1618</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01619" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html"> 1619</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_reduce.html">Reduce</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93"> 1621</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9">ReduceType</a> { <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93">And</a>, <a class="code hl_struct" href="struct_or.html">Or</a>, <a class="code hl_struct" href="struct_sum.html">Sum</a>, <a class="code hl_struct" href="struct_prod.html">Prod</a>, <a class="code hl_struct" href="struct_min.html">Min</a>, <a class="code hl_struct" href="struct_max.html">Max</a> };</div>
 | 
						|
<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01623" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf"> 1623</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf">Reduce</a>(</div>
 | 
						|
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span>      <a class="code hl_enumeration" href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9">ReduceType</a> reduce_type,</div>
 | 
						|
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span>      <span class="keyword">const</span> std::vector<int>& axes)</div>
 | 
						|
<div class="line"><a id="l01627" name="l01627"></a><span class="lineno"> 1627</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), reduce_type_(reduce_type), axes_(axes) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01628" name="l01628"></a><span class="lineno"> 1628</span> </div>
 | 
						|
<div class="line"><a id="l01629" name="l01629"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#aeb8a58b560c0a09ae3a695df7829acfa"> 1629</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reduce.html#aeb8a58b560c0a09ae3a695df7829acfa">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01630" name="l01630"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#ae9caaf42edadfe73ea208d98f526890f"> 1630</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reduce.html#ae9caaf42edadfe73ea208d98f526890f">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01631" name="l01631"></a><span class="lineno"> 1631</span> </div>
 | 
						|
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#abab1b5aa01ccad44f213f510c3596b38"> 1632</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span> </div>
 | 
						|
<div class="line"><a id="l01634" name="l01634"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#a684883d2a96315f548ca769510e28e4e"> 1634</a></span>  std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>> vjp(</div>
 | 
						|
<div class="line"><a id="l01635" name="l01635"></a><span class="lineno"> 1635</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& primals,</div>
 | 
						|
<div class="line"><a id="l01636" name="l01636"></a><span class="lineno"> 1636</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& cotangents,</div>
 | 
						|
<div class="line"><a id="l01637" name="l01637"></a><span class="lineno"> 1637</span>      const std::vector<<span class="keywordtype">int</span>>& argnums,</div>
 | 
						|
<div class="line"><a id="l01638" name="l01638"></a><span class="lineno"> 1638</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& outputs) override;</div>
 | 
						|
<div class="line"><a id="l01639" name="l01639"></a><span class="lineno"> 1639</span> </div>
 | 
						|
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#a0f73c2a55dc324145e11020c9b4d9a65"> 1640</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> output_shapes(</div>
 | 
						|
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs) override;</div>
 | 
						|
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01643" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#a399be3a89553787a0a687706881f03cd"> 1643</a></span>  <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span>    <span class="keywordflow">switch</span> (reduce_type_) {</div>
 | 
						|
<div class="line"><a id="l01645" name="l01645"></a><span class="lineno"> 1645</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_and.html">And</a>:</div>
 | 
						|
<div class="line"><a id="l01646" name="l01646"></a><span class="lineno"> 1646</span>        os << <span class="stringliteral">"And"</span>;</div>
 | 
						|
<div class="line"><a id="l01647" name="l01647"></a><span class="lineno"> 1647</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01648" name="l01648"></a><span class="lineno"> 1648</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_or.html">Or</a>:</div>
 | 
						|
<div class="line"><a id="l01649" name="l01649"></a><span class="lineno"> 1649</span>        os << <span class="stringliteral">"Or"</span>;</div>
 | 
						|
<div class="line"><a id="l01650" name="l01650"></a><span class="lineno"> 1650</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"> 1651</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_sum.html">Sum</a>:</div>
 | 
						|
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span>        os << <span class="stringliteral">"Sum"</span>;</div>
 | 
						|
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_prod.html">Prod</a>:</div>
 | 
						|
<div class="line"><a id="l01655" name="l01655"></a><span class="lineno"> 1655</span>        os << <span class="stringliteral">"Prod"</span>;</div>
 | 
						|
<div class="line"><a id="l01656" name="l01656"></a><span class="lineno"> 1656</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"> 1657</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_min.html">Min</a>:</div>
 | 
						|
<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span>        os << <span class="stringliteral">"Min"</span>;</div>
 | 
						|
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_max.html">Max</a>:</div>
 | 
						|
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span>        os << <span class="stringliteral">"Max"</span>;</div>
 | 
						|
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span>    }</div>
 | 
						|
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_reduce.html#abe8f3327d617d0dd7438f066497ae08e"> 1665</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_reduce.html#abe8f3327d617d0dd7438f066497ae08e">is_equivalent</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) <span class="keyword">const override</span>;</div>
 | 
						|
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span> </div>
 | 
						|
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"> 1668</span>  <a class="code hl_enumeration" href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9">ReduceType</a> reduce_type_;</div>
 | 
						|
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"> 1669</span>  std::vector<int> axes_;</div>
 | 
						|
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span> </div>
 | 
						|
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01672" name="l01672"></a><span class="lineno"> 1672</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"> 1673</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01674" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html"> 1674</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_round.html">Round</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01675" name="l01675"></a><span class="lineno"> 1675</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde"> 1676</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde">Round</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"> 1677</span> </div>
 | 
						|
<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#ad066b0944b437f64ab546025efa00007"> 1678</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_round.html#ad066b0944b437f64ab546025efa00007">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#af7fe5ff8f3db166c203b4be4b07f13ec"> 1679</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_round.html#af7fe5ff8f3db166c203b4be4b07f13ec">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span> </div>
 | 
						|
<div class="line"><a id="l01681" name="l01681"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#a6fad8799a7982e1ccbe05be7cc38a7fd"> 1681</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01682" name="l01682"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#a032075a7d0dde2dba6189636d216c5e7"> 1682</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01683" name="l01683"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#af0dfe8943109c936b35ab0082f566f72"> 1683</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_round.html">Round</a>)</div>
 | 
						|
<div class="line"><a id="l01684" name="l01684"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#aeb3d8607bbba7345a3142d4cbd4e6927"> 1684</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01685" name="l01685"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_round.html#ad9a26817864dfc94b56e66bc6d80b047"> 1685</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01686" name="l01686"></a><span class="lineno"> 1686</span> </div>
 | 
						|
<div class="line"><a id="l01687" name="l01687"></a><span class="lineno"> 1687</span> private:</div>
 | 
						|
<div class="line"><a id="l01688" name="l01688"></a><span class="lineno"> 1688</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"> 1690</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01691" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html"> 1691</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_scan.html">Scan</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d"> 1693</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1">ReduceType</a> { <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d">Max</a>, <a class="code hl_struct" href="struct_min.html">Min</a>, <a class="code hl_struct" href="struct_sum.html">Sum</a>, <a class="code hl_struct" href="struct_prod.html">Prod</a> };</div>
 | 
						|
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01695" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#ac93e8f9c6771de825d2186ef34fa7087"> 1695</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scan.html#ac93e8f9c6771de825d2186ef34fa7087">Scan</a>(</div>
 | 
						|
<div class="line"><a id="l01696" name="l01696"></a><span class="lineno"> 1696</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01697" name="l01697"></a><span class="lineno"> 1697</span>      <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1">ReduceType</a> reduce_type,</div>
 | 
						|
<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"> 1698</span>      <span class="keywordtype">int</span> axis,</div>
 | 
						|
<div class="line"><a id="l01699" name="l01699"></a><span class="lineno"> 1699</span>      <span class="keywordtype">bool</span> reverse,</div>
 | 
						|
<div class="line"><a id="l01700" name="l01700"></a><span class="lineno"> 1700</span>      <span class="keywordtype">bool</span> inclusive)</div>
 | 
						|
<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"> 1701</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"> 1702</span>        reduce_type_(reduce_type),</div>
 | 
						|
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span>        axis_(axis),</div>
 | 
						|
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span>        reverse_(reverse),</div>
 | 
						|
<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"> 1705</span>        inclusive_(inclusive) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span> </div>
 | 
						|
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#a15676d9fd066e935782a923fba3e940b"> 1707</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scan.html#a15676d9fd066e935782a923fba3e940b">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#aef22c6fc2b2cb2a907cd8965c7413dde"> 1708</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scan.html#aef22c6fc2b2cb2a907cd8965c7413dde">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01709" name="l01709"></a><span class="lineno"> 1709</span> </div>
 | 
						|
<div class="line"><a id="l01710" name="l01710"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#a297c7cc89c9bf9d186ebdebb634c7804"> 1710</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01711" name="l01711"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#a6f9c862f4fbc7eaf430a361cdd8933ee"> 1711</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>();</div>
 | 
						|
<div class="line"><a id="l01712" name="l01712"></a><span class="lineno"> 1712</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01713" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01713" name="l01713"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#ad5b6308c79e9b985a49df35eadd15b22"> 1713</a></span>  <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l01714" name="l01714"></a><span class="lineno"> 1714</span>    os << <span class="stringliteral">"Cum"</span>;</div>
 | 
						|
<div class="line"><a id="l01715" name="l01715"></a><span class="lineno"> 1715</span>    <span class="keywordflow">switch</span> (reduce_type_) {</div>
 | 
						|
<div class="line"><a id="l01716" name="l01716"></a><span class="lineno"> 1716</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_sum.html">Sum</a>:</div>
 | 
						|
<div class="line"><a id="l01717" name="l01717"></a><span class="lineno"> 1717</span>        os << <span class="stringliteral">"Sum"</span>;</div>
 | 
						|
<div class="line"><a id="l01718" name="l01718"></a><span class="lineno"> 1718</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01719" name="l01719"></a><span class="lineno"> 1719</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_prod.html">Prod</a>:</div>
 | 
						|
<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"> 1720</span>        os << <span class="stringliteral">"Prod"</span>;</div>
 | 
						|
<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01722" name="l01722"></a><span class="lineno"> 1722</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_min.html">Min</a>:</div>
 | 
						|
<div class="line"><a id="l01723" name="l01723"></a><span class="lineno"> 1723</span>        os << <span class="stringliteral">"Min"</span>;</div>
 | 
						|
<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"> 1724</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"> 1725</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_max.html">Max</a>:</div>
 | 
						|
<div class="line"><a id="l01726" name="l01726"></a><span class="lineno"> 1726</span>        os << <span class="stringliteral">"Max"</span>;</div>
 | 
						|
<div class="line"><a id="l01727" name="l01727"></a><span class="lineno"> 1727</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01728" name="l01728"></a><span class="lineno"> 1728</span>    }</div>
 | 
						|
<div class="line"><a id="l01729" name="l01729"></a><span class="lineno"> 1729</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scan.html#a54445a4d677ca4fe2a58d08eb5223ac6"> 1730</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scan.html#a54445a4d677ca4fe2a58d08eb5223ac6">is_equivalent</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) <span class="keyword">const override</span>;</div>
 | 
						|
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span> </div>
 | 
						|
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span>  <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1">ReduceType</a> reduce_type_;</div>
 | 
						|
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span>  <span class="keywordtype">bool</span> reverse_;</div>
 | 
						|
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span>  <span class="keywordtype">bool</span> inclusive_;</div>
 | 
						|
<div class="line"><a id="l01737" name="l01737"></a><span class="lineno"> 1737</span> </div>
 | 
						|
<div class="line"><a id="l01738" name="l01738"></a><span class="lineno"> 1738</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01739" name="l01739"></a><span class="lineno"> 1739</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01740" name="l01740"></a><span class="lineno"> 1740</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01741" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01741" name="l01741"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html"> 1741</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_scatter.html">Scatter</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01742" name="l01742"></a><span class="lineno"> 1742</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16"> 1743</a></span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c">ReduceType</a> { <a class="code hl_enumvalue" href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16">Max</a>, <a class="code hl_struct" href="struct_min.html">Min</a>, <a class="code hl_struct" href="struct_sum.html">Sum</a>, <a class="code hl_struct" href="struct_prod.html">Prod</a>, <a class="code hl_struct" href="struct_none.html">None</a> };</div>
 | 
						|
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01745" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#ac9b3eff67389ef9aa820753379ffeaa3"> 1745</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scatter.html#ac9b3eff67389ef9aa820753379ffeaa3">Scatter</a>(</div>
 | 
						|
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span>      <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c">ReduceType</a> reduce_type,</div>
 | 
						|
<div class="line"><a id="l01748" name="l01748"></a><span class="lineno"> 1748</span>      <span class="keyword">const</span> std::vector<int>& axes)</div>
 | 
						|
<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"> 1749</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), reduce_type_(reduce_type), axes_(axes) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01750" name="l01750"></a><span class="lineno"> 1750</span> </div>
 | 
						|
<div class="line"><a id="l01751" name="l01751"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#a7623f590f8b77167b5ebb4f14bc9dc97"> 1751</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scatter.html#a7623f590f8b77167b5ebb4f14bc9dc97">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01752" name="l01752"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#ab304345db3d8cfeea15e27461ae2e678"> 1752</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scatter.html#ab304345db3d8cfeea15e27461ae2e678">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"> 1753</span> </div>
 | 
						|
<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#a696c38b373a7a7c71bc112bd1117e322"> 1754</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>();</div>
 | 
						|
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#a270fa8ccf36ce4bbbc23875139223934"> 1755</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>();</div>
 | 
						|
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01757" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#aa9d45cbfb27b814517f6016092b30efa"> 1757</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scatter.html#aa9d45cbfb27b814517f6016092b30efa">print</a>(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span>    os << <span class="stringliteral">"Scatter"</span>;</div>
 | 
						|
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span>    <span class="keywordflow">switch</span> (reduce_type_) {</div>
 | 
						|
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_sum.html">Sum</a>:</div>
 | 
						|
<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span>        os << <span class="stringliteral">" Sum"</span>;</div>
 | 
						|
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"> 1762</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_prod.html">Prod</a>:</div>
 | 
						|
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span>        os << <span class="stringliteral">" Prod"</span>;</div>
 | 
						|
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"> 1765</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_min.html">Min</a>:</div>
 | 
						|
<div class="line"><a id="l01767" name="l01767"></a><span class="lineno"> 1767</span>        os << <span class="stringliteral">" Min"</span>;</div>
 | 
						|
<div class="line"><a id="l01768" name="l01768"></a><span class="lineno"> 1768</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01769" name="l01769"></a><span class="lineno"> 1769</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_max.html">Max</a>:</div>
 | 
						|
<div class="line"><a id="l01770" name="l01770"></a><span class="lineno"> 1770</span>        os << <span class="stringliteral">" Max"</span>;</div>
 | 
						|
<div class="line"><a id="l01771" name="l01771"></a><span class="lineno"> 1771</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01772" name="l01772"></a><span class="lineno"> 1772</span>      <span class="keywordflow">case</span> <a class="code hl_struct" href="struct_none.html">None</a>:</div>
 | 
						|
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"> 1773</span>        <span class="keywordflow">break</span>;</div>
 | 
						|
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span>    }</div>
 | 
						|
<div class="line"><a id="l01775" name="l01775"></a><span class="lineno"> 1775</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01776" name="l01776"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_scatter.html#a0208172562abdc90472e6eb5f84c987f"> 1776</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_scatter.html#a0208172562abdc90472e6eb5f84c987f">is_equivalent</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) <span class="keyword">const override</span>;</div>
 | 
						|
<div class="line"><a id="l01777" name="l01777"></a><span class="lineno"> 1777</span> </div>
 | 
						|
<div class="line"><a id="l01778" name="l01778"></a><span class="lineno"> 1778</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l01779" name="l01779"></a><span class="lineno"> 1779</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01780" name="l01780"></a><span class="lineno"> 1780</span>  <a class="code hl_enumeration" href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c">ReduceType</a> reduce_type_;</div>
 | 
						|
<div class="line"><a id="l01781" name="l01781"></a><span class="lineno"> 1781</span>  std::vector<int> axes_;</div>
 | 
						|
<div class="line"><a id="l01782" name="l01782"></a><span class="lineno"> 1782</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01783" name="l01783"></a><span class="lineno"> 1783</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01784" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01784" name="l01784"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html"> 1784</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_sigmoid.html">Sigmoid</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01785" name="l01785"></a><span class="lineno"> 1785</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01786" name="l01786"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b"> 1786</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b">Sigmoid</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01787" name="l01787"></a><span class="lineno"> 1787</span> </div>
 | 
						|
<div class="line"><a id="l01788" name="l01788"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#aa930ce05734cca529ebcb8d0ca8e1255"> 1788</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sigmoid.html#aa930ce05734cca529ebcb8d0ca8e1255">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01789" name="l01789"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a7a6bd0222d51d7f25f2719a91ccdfeca"> 1789</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sigmoid.html#a7a6bd0222d51d7f25f2719a91ccdfeca">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01790" name="l01790"></a><span class="lineno"> 1790</span> </div>
 | 
						|
<div class="line"><a id="l01791" name="l01791"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a12712c23037e38192cbccd2d4b14cc85"> 1791</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01792" name="l01792"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a62ca1c440896e32958c77af3340847db"> 1792</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01793" name="l01793"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#ad4cd19938e5159754aa7516f405580c2"> 1793</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_sigmoid.html">Sigmoid</a>)</div>
 | 
						|
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a04814ba1b0edf8299d5ca1bcb8749d8e"> 1794</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sigmoid.html#a34572023c8748971289c2cb109ff9a43"> 1795</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span> </div>
 | 
						|
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span> private:</div>
 | 
						|
<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01800" name="l01800"></a><span class="lineno"> 1800</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01801" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01801" name="l01801"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html"> 1801</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_sign.html">Sign</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01802" name="l01802"></a><span class="lineno"> 1802</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763"> 1803</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763">Sign</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span> </div>
 | 
						|
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#a7498ec993b66879be30c5d9762c45a97"> 1805</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sign.html#a7498ec993b66879be30c5d9762c45a97">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#afa2b48b99a194106006b44af69ffda8b"> 1806</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sign.html#afa2b48b99a194106006b44af69ffda8b">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"> 1807</span> </div>
 | 
						|
<div class="line"><a id="l01808" name="l01808"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#aa7296045907015b4e0ae8a93e5e6e295"> 1808</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01809" name="l01809"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#a957992c7aa0e86cf06f861a94372086b"> 1809</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01810" name="l01810"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#a2aa0720fe0a6d2408eb43c25d3d45b0a"> 1810</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_sign.html">Sign</a>)</div>
 | 
						|
<div class="line"><a id="l01811" name="l01811"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#a8c0934acbcc4b146e5aacd35a8c445bb"> 1811</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sign.html#a719709b3c5d6b15a75614bdadd185f67"> 1812</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span> </div>
 | 
						|
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"> 1814</span> private:</div>
 | 
						|
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01818" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01818" name="l01818"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html"> 1818</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_sin.html">Sin</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"> 1819</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01820" name="l01820"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea"> 1820</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea">Sin</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span> </div>
 | 
						|
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#ab34f9cebc2aed55a0b6ab4c991f02eb5"> 1822</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sin.html#ab34f9cebc2aed55a0b6ab4c991f02eb5">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#a6b59f1156cf8bdad8d45acd1d825cb5e"> 1823</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sin.html#a6b59f1156cf8bdad8d45acd1d825cb5e">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span> </div>
 | 
						|
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#a45533996f3d72d9dd97d4c61cd684fba"> 1825</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#af662d10180967399820496477ff050de"> 1826</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01827" name="l01827"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#a73b31005551015897f15c00e8b0222e4"> 1827</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_sin.html">Sin</a>)</div>
 | 
						|
<div class="line"><a id="l01828" name="l01828"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#af00b0e5516f884996ce7a97e6c1e3e6a"> 1828</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01829" name="l01829"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sin.html#a46f059f04fd540f175f6031d28dc9f3a"> 1829</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01830" name="l01830"></a><span class="lineno"> 1830</span> </div>
 | 
						|
<div class="line"><a id="l01831" name="l01831"></a><span class="lineno"> 1831</span> private:</div>
 | 
						|
<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"> 1832</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01834" name="l01834"></a><span class="lineno"> 1834</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01835" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html"> 1835</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_sinh.html">Sinh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96"> 1837</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96">Sinh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span> </div>
 | 
						|
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#ab6d5f6f40d177f6435f6a51c71b939dd"> 1839</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sinh.html#ab6d5f6f40d177f6435f6a51c71b939dd">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#a5a1af2399f166d5b228b5e83a1837c75"> 1840</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sinh.html#a5a1af2399f166d5b228b5e83a1837c75">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01841" name="l01841"></a><span class="lineno"> 1841</span> </div>
 | 
						|
<div class="line"><a id="l01842" name="l01842"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#ae171df22bc34c32e31b8135dc4caa788"> 1842</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01843" name="l01843"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#a86e2b37823daf20a4c74c9f273215f9c"> 1843</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01844" name="l01844"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#a5b4753d52e80799d4fea0b9172d25a77"> 1844</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_sinh.html">Sinh</a>)</div>
 | 
						|
<div class="line"><a id="l01845" name="l01845"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#adcb1878996fd4902cd550042dd6ad70d"> 1845</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01846" name="l01846"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sinh.html#a4f10e7e6daf500575d97e077901e7d28"> 1846</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span> </div>
 | 
						|
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span> private:</div>
 | 
						|
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01852" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html"> 1852</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_slice.html">Slice</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01854" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f"> 1854</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f">Slice</a>(</div>
 | 
						|
<div class="line"><a id="l01855" name="l01855"></a><span class="lineno"> 1855</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01856" name="l01856"></a><span class="lineno"> 1856</span>      <span class="keyword">const</span> std::vector<int>& start_indices,</div>
 | 
						|
<div class="line"><a id="l01857" name="l01857"></a><span class="lineno"> 1857</span>      <span class="keyword">const</span> std::vector<int>& end_indices,</div>
 | 
						|
<div class="line"><a id="l01858" name="l01858"></a><span class="lineno"> 1858</span>      <span class="keyword">const</span> std::vector<int>& strides)</div>
 | 
						|
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"> 1859</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span>        start_indices_(start_indices),</div>
 | 
						|
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span>        end_indices_(end_indices),</div>
 | 
						|
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span>        strides_(strides) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span> </div>
 | 
						|
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#a4b13503f5b2f5c6a90d394b020f9b3f2"> 1864</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice.html#a4b13503f5b2f5c6a90d394b020f9b3f2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#aa53c21ff06a7c659e889af6b97d10a4a"> 1865</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice.html#aa53c21ff06a7c659e889af6b97d10a4a">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01866" name="l01866"></a><span class="lineno"> 1866</span> </div>
 | 
						|
<div class="line"><a id="l01867" name="l01867"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#ae33583b0db22fcfeae34dfe1c0e3eaa2"> 1867</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01868" name="l01868"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#a8288324045ab21d6c97b1695ce86ef36"> 1868</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01869" name="l01869"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#a50851148948d924b71817cfbd4401504"> 1869</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_slice.html">Slice</a>)</div>
 | 
						|
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice.html#a43202c3b8966ae1db9ab82072e4918b0"> 1870</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span> </div>
 | 
						|
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"> 1872</span> private:</div>
 | 
						|
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span>  std::vector<<span class="keywordtype">int</span>> start_indices_;</div>
 | 
						|
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span>  std::vector<<span class="keywordtype">int</span>> end_indices_;</div>
 | 
						|
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span>  std::vector<<span class="keywordtype">int</span>> strides_;</div>
 | 
						|
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"> 1876</span> </div>
 | 
						|
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"> 1878</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01880" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html"> 1880</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_slice_update.html">SliceUpdate</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01882" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990"> 1882</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990">SliceUpdate</a>(</div>
 | 
						|
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"> 1883</span>      <a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream,</div>
 | 
						|
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span>      <span class="keyword">const</span> std::vector<int>& start_indices,</div>
 | 
						|
<div class="line"><a id="l01885" name="l01885"></a><span class="lineno"> 1885</span>      <span class="keyword">const</span> std::vector<int>& end_indices,</div>
 | 
						|
<div class="line"><a id="l01886" name="l01886"></a><span class="lineno"> 1886</span>      <span class="keyword">const</span> std::vector<int>& strides)</div>
 | 
						|
<div class="line"><a id="l01887" name="l01887"></a><span class="lineno"> 1887</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l01888" name="l01888"></a><span class="lineno"> 1888</span>        start_indices_(start_indices),</div>
 | 
						|
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"> 1889</span>        end_indices_(end_indices),</div>
 | 
						|
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span>        strides_(strides) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> </div>
 | 
						|
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#ad82ca0e3ab88a0e086431050deea831b"> 1892</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice_update.html#ad82ca0e3ab88a0e086431050deea831b">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#aac1a1d122e5697be057d63552141032b"> 1893</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_slice_update.html#aac1a1d122e5697be057d63552141032b">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span> </div>
 | 
						|
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#adbf1c76de6ab2f986758530d351d6fa3"> 1895</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01896" name="l01896"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#a0ce3248cc61dae2b51d7aa8ee4197611"> 1896</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01897" name="l01897"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#a751eefb9922c56479b4b0de2ad45439b"> 1897</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_slice_update.html">SliceUpdate</a>)</div>
 | 
						|
<div class="line"><a id="l01898" name="l01898"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_slice_update.html#a60f588acced42391e6e5615ae8d16119"> 1898</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01899" name="l01899"></a><span class="lineno"> 1899</span> </div>
 | 
						|
<div class="line"><a id="l01900" name="l01900"></a><span class="lineno"> 1900</span> private:</div>
 | 
						|
<div class="line"><a id="l01901" name="l01901"></a><span class="lineno"> 1901</span>  std::vector<<span class="keywordtype">int</span>> start_indices_;</div>
 | 
						|
<div class="line"><a id="l01902" name="l01902"></a><span class="lineno"> 1902</span>  std::vector<<span class="keywordtype">int</span>> end_indices_;</div>
 | 
						|
<div class="line"><a id="l01903" name="l01903"></a><span class="lineno"> 1903</span>  std::vector<<span class="keywordtype">int</span>> strides_;</div>
 | 
						|
<div class="line"><a id="l01904" name="l01904"></a><span class="lineno"> 1904</span> </div>
 | 
						|
<div class="line"><a id="l01905" name="l01905"></a><span class="lineno"> 1905</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01906" name="l01906"></a><span class="lineno"> 1906</span> </div>
 | 
						|
<div class="line"><a id="l01907" name="l01907"></a><span class="lineno"> 1907</span>  std::tuple<int64_t, std::vector<int64_t>> prepare_slice(const <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& in);</div>
 | 
						|
<div class="line"><a id="l01908" name="l01908"></a><span class="lineno"> 1908</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01909" name="l01909"></a><span class="lineno"> 1909</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01910" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01910" name="l01910"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html"> 1910</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_softmax.html">Softmax</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01911" name="l01911"></a><span class="lineno"> 1911</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01912" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01912" name="l01912"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb"> 1912</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb">Softmax</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">bool</span> precise)</div>
 | 
						|
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"> 1913</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), precise_(precise) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span> </div>
 | 
						|
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#ac9ebc2eab1683b682e689ed8f4622b79"> 1915</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_softmax.html#ac9ebc2eab1683b682e689ed8f4622b79">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#a35dac69ddcc7e2ec0e1a76fe93db85af"> 1916</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_softmax.html#a35dac69ddcc7e2ec0e1a76fe93db85af">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01917" name="l01917"></a><span class="lineno"> 1917</span> </div>
 | 
						|
<div class="line"><a id="l01918" name="l01918"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#ad22d3dcc71054d3dba529cf2dc981e19"> 1918</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01919" name="l01919"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#af96172634a24332b0fc8d7ca7e73f19f"> 1919</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01920" name="l01920"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#aa783610ef6b82b92681e78fc99412d83"> 1920</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_softmax.html">Softmax</a>)</div>
 | 
						|
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#afea757ba328b9d8f35058793eae73e35"> 1921</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span> </div>
 | 
						|
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_softmax.html#a9215ed7bd36bc11276c58dfb9808d728"> 1923</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span> </div>
 | 
						|
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span> private:</div>
 | 
						|
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span>  <span class="keywordtype">bool</span> precise_;</div>
 | 
						|
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01930" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html"> 1930</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_sort.html">Sort</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01932" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44"> 1932</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44">Sort</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span> </div>
 | 
						|
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#a459769a0241b2620e55bedaba19827cd"> 1935</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sort.html#a459769a0241b2620e55bedaba19827cd">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#a4141c48f0e8670c728663f3722675382"> 1936</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sort.html#a4141c48f0e8670c728663f3722675382">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01937" name="l01937"></a><span class="lineno"> 1937</span> </div>
 | 
						|
<div class="line"><a id="l01938" name="l01938"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#abfabb9e625cc0cb9335c7454ed27505c"> 1938</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01939" name="l01939"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#af113ac983473433eec851c8fddfcba62"> 1939</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01940" name="l01940"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#ada81b9343f80958174eba708452927a2"> 1940</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_sort.html">Sort</a>)</div>
 | 
						|
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#a271545b66607b22e5f06a0fefe69f22d"> 1941</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sort.html#ae48f07cf641d54234fc4fb6529a33511"> 1942</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span> </div>
 | 
						|
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span> private:</div>
 | 
						|
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"> 1945</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span> </div>
 | 
						|
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01950" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html"> 1950</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_split.html">Split</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01952" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385"> 1952</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385">Split</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keyword">const</span> std::vector<int>& indices, <span class="keywordtype">int</span> axis)</div>
 | 
						|
<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream), indices_(indices), axis_(axis) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span> </div>
 | 
						|
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#aff2889cb9074f0fda53edf8fa40b1fd4"> 1955</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_split.html#aff2889cb9074f0fda53edf8fa40b1fd4">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#a78ddda89c4daee73c74cfbc1e44656df"> 1957</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_split.html#a78ddda89c4daee73c74cfbc1e44656df">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span> </div>
 | 
						|
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#ab7c40e02a842e83bdb4698608472c7a6"> 1960</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#ab8a8d30fd1ebf0891f41f3c32eabe282"> 1961</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#ad0c31fe5972643cc75fde10445fc47f2"> 1962</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_split.html">Split</a>)</div>
 | 
						|
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_split.html#af25a0cc259573b9dce60d285eee18345"> 1963</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> </div>
 | 
						|
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span> private:</div>
 | 
						|
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& outputs);</div>
 | 
						|
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span> </div>
 | 
						|
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span>  std::vector<<span class="keywordtype">int</span>> indices_;</div>
 | 
						|
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span>  <span class="keywordtype">int</span> axis_;</div>
 | 
						|
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01972" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html"> 1972</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_square.html">Square</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4"> 1974</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4">Square</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span> </div>
 | 
						|
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a1f4d327a705950616da63b83c2829e59"> 1976</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_square.html#a1f4d327a705950616da63b83c2829e59">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a0ea2a78a5bb52daa4103263bf2f98045"> 1977</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_square.html#a0ea2a78a5bb52daa4103263bf2f98045">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span> </div>
 | 
						|
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a55bf43f878d4741c57a08d5fef472ea5"> 1979</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a822629b93b91e2bef29959431d95e22d"> 1980</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01981" name="l01981"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a75feb558cd1d615e96309dd7d1e81384"> 1981</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_square.html">Square</a>)</div>
 | 
						|
<div class="line"><a id="l01982" name="l01982"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#a6abc881d44071019aa15481e5ea75ab2"> 1982</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l01983" name="l01983"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_square.html#ac4c4927639cab1c5b91a074e7f68da02"> 1983</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span> </div>
 | 
						|
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span> private:</div>
 | 
						|
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span> </div>
 | 
						|
<div class="foldopen" id="foldopen01989" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html"> 1989</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_sqrt.html">Sqrt</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen01991" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29"> 1991</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29">Sqrt</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">bool</span> recip = <span class="keyword">false</span>)</div>
 | 
						|
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), recip_(recip) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span> </div>
 | 
						|
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a5a64ecc4eef1e30a2963435dca7cefd5"> 1994</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sqrt.html#a5a64ecc4eef1e30a2963435dca7cefd5">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a6d205e679a593d1ba20206c5c47ba501"> 1995</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_sqrt.html#a6d205e679a593d1ba20206c5c47ba501">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span> </div>
 | 
						|
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a9d30e306ce08980c27d98c898577017e"> 1997</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a78544b1fb5da0c14bce3051ffd177818"> 1998</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#ae3d4f99729a7e72be7decf5a56d095d5"> 1999</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#ab871c2b8ab4a27a3f782a005d0e87c46"> 2000</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02002" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_sqrt.html#a8681c8de2f50049848d320c47f713c0f"> 2002</a></span>  <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span>    <span class="keywordflow">if</span> (recip_) {</div>
 | 
						|
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span>      os << <span class="stringliteral">"Rsqrt"</span>;</div>
 | 
						|
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span>    } <span class="keywordflow">else</span> {</div>
 | 
						|
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span>      os << <span class="stringliteral">"Sqrt"</span>;</div>
 | 
						|
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span>    }</div>
 | 
						|
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span> </div>
 | 
						|
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02012" name="l02012"></a><span class="lineno"> 2012</span>  <span class="keywordtype">bool</span> recip_;</div>
 | 
						|
<div class="line"><a id="l02013" name="l02013"></a><span class="lineno"> 2013</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02015" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html"> 2015</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_stop_gradient.html">StopGradient</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f"> 2017</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f">StopGradient</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span> </div>
 | 
						|
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#a56207714d374b08f60e4d9cdbc7340b2"> 2019</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_stop_gradient.html#a56207714d374b08f60e4d9cdbc7340b2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#a907b96f0a1ce608e211d87ccf2b9ca89"> 2020</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_stop_gradient.html#a907b96f0a1ce608e211d87ccf2b9ca89">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span> </div>
 | 
						|
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#aca680c8befef81da414c4375b11b16b0"> 2022</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#acc7a7d51cbf014dae8ba3d20bedcad50"> 2023</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_stop_gradient.html">StopGradient</a>)</div>
 | 
						|
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#a327539298b21d800d26482b94fce41b3"> 2024</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_stop_gradient.html#a12e7f55e087aea58b2a56f239c69bb4e"> 2025</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span> </div>
 | 
						|
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span> private:</div>
 | 
						|
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02030" name="l02030"></a><span class="lineno"> 2030</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02031" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02031" name="l02031"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html"> 2031</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_subtract.html">Subtract</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02032" name="l02032"></a><span class="lineno"> 2032</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02033" name="l02033"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c"> 2033</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c">Subtract</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"> 2034</span> </div>
 | 
						|
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a47574258b6c95f8ad260c114d6d36a12"> 2035</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_subtract.html#a47574258b6c95f8ad260c114d6d36a12">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a69021b23daf061764d97fabbc0f4f06c"> 2036</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_subtract.html#a69021b23daf061764d97fabbc0f4f06c">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span> </div>
 | 
						|
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#aa98f960e621a767c8a03624fd292f098"> 2038</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a8100081a99df5166f02efc76d6641220"> 2039</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a3834fd305435fb5a8e512566832e372b"> 2040</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_subtract.html">Subtract</a>)</div>
 | 
						|
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#af1c05e1e3f703ba916d54f8ccbbd102b"> 2041</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_subtract.html#a0fbf4bc9a0c76edc37ebb4083d98f3fc"> 2042</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l02043" name="l02043"></a><span class="lineno"> 2043</span> </div>
 | 
						|
<div class="line"><a id="l02044" name="l02044"></a><span class="lineno"> 2044</span> private:</div>
 | 
						|
<div class="line"><a id="l02045" name="l02045"></a><span class="lineno"> 2045</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02046" name="l02046"></a><span class="lineno"> 2046</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"> 2047</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02048" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html"> 2048</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_tan.html">Tan</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#a8dcc9ff660210ccf05134dd95f47de08"> 2050</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tan.html#a8dcc9ff660210ccf05134dd95f47de08">Tan</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span> </div>
 | 
						|
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#a9c9a731158fa60eef30067fe0da9f3e9"> 2052</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tan.html#a9c9a731158fa60eef30067fe0da9f3e9">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#aca7dbb4836507005a2032ac957a04d3f"> 2053</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tan.html#aca7dbb4836507005a2032ac957a04d3f">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02054" name="l02054"></a><span class="lineno"> 2054</span> </div>
 | 
						|
<div class="line"><a id="l02055" name="l02055"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#ae2f67ca2adc83b10009cf28498bf58b7"> 2055</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02056" name="l02056"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#a5d7c76122d63619df17b0e45450bc8f2"> 2056</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l02057" name="l02057"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#aeea7c284d595a2a928d5f28a55e9be7f"> 2057</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_tan.html">Tan</a>)</div>
 | 
						|
<div class="line"><a id="l02058" name="l02058"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#afdf46288e7f60ea7f878688347dff7e4"> 2058</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tan.html#a7be9fd77491a48b07b6e126ab68bdf37"> 2059</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"> 2060</span> </div>
 | 
						|
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span> private:</div>
 | 
						|
<div class="line"><a id="l02062" name="l02062"></a><span class="lineno"> 2062</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02063" name="l02063"></a><span class="lineno"> 2063</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02064" name="l02064"></a><span class="lineno"> 2064</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02065" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02065" name="l02065"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html"> 2065</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_tanh.html">Tanh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02066" name="l02066"></a><span class="lineno"> 2066</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02067" name="l02067"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#ae551297bf573e1802fb831440276dee4"> 2067</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tanh.html#ae551297bf573e1802fb831440276dee4">Tanh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02068" name="l02068"></a><span class="lineno"> 2068</span> </div>
 | 
						|
<div class="line"><a id="l02069" name="l02069"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#af7ed4345f622da069e5b0284067923f5"> 2069</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tanh.html#af7ed4345f622da069e5b0284067923f5">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02070" name="l02070"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#a48df896599ae93dbce84a5c0f50cf761"> 2070</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_tanh.html#a48df896599ae93dbce84a5c0f50cf761">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02071" name="l02071"></a><span class="lineno"> 2071</span> </div>
 | 
						|
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#a32df3564c1ecb858c1ba9f855376762f"> 2072</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#ae0fbb5370dc1c3a4fb0dd02ca28a832a"> 2073</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l02074" name="l02074"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#a73f4976d641daf697cc1a231d773d78e"> 2074</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_tanh.html">Tanh</a>)</div>
 | 
						|
<div class="line"><a id="l02075" name="l02075"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#a0692a1de2373b86eb394252ed4fecfda"> 2075</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_tanh.html#a0392f51a9e51915d4691615757ba4325"> 2076</a></span>  <a class="code hl_define" href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a>()</div>
 | 
						|
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span> </div>
 | 
						|
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span> private:</div>
 | 
						|
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02082" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html"> 2082</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_uniform.html">Uniform</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1"> 2084</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1">Uniform</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02085" name="l02085"></a><span class="lineno"> 2085</span> </div>
 | 
						|
<div class="line"><a id="l02086" name="l02086"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#a037a2c96b79b70a64f2b637c9f1a432f"> 2086</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_uniform.html#a037a2c96b79b70a64f2b637c9f1a432f">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#a5f88cbf2495f24f87cefd99aaaebe4d0"> 2087</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_uniform.html#a5f88cbf2495f24f87cefd99aaaebe4d0">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"> 2088</span> </div>
 | 
						|
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#ad795037d5b1820e98f4268f166609926"> 2089</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02090" name="l02090"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#a01510998719b19df137451cc37850b8d"> 2090</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_uniform.html">Uniform</a>)</div>
 | 
						|
<div class="line"><a id="l02091" name="l02091"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_uniform.html#abb6048807a7c5b2e35a77e06a17f801b"> 2091</a></span>  <a class="code hl_define" href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a>()</div>
 | 
						|
<div class="line"><a id="l02092" name="l02092"></a><span class="lineno"> 2092</span> </div>
 | 
						|
<div class="line"><a id="l02093" name="l02093"></a><span class="lineno"> 2093</span> private:</div>
 | 
						|
<div class="line"><a id="l02094" name="l02094"></a><span class="lineno"> 2094</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02095" name="l02095"></a><span class="lineno"> 2095</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02096" name="l02096"></a><span class="lineno"> 2096</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02097" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02097" name="l02097"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html"> 2097</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_view.html">View</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02098" name="l02098"></a><span class="lineno"> 2098</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen02099" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02099" name="l02099"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e"> 2099</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e">View</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype)</div>
 | 
						|
<div class="line"><a id="l02100" name="l02100"></a><span class="lineno"> 2100</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), dtype_(dtype) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02101" name="l02101"></a><span class="lineno"> 2101</span> </div>
 | 
						|
<div class="line"><a id="l02102" name="l02102"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#a0ad6deb11914a242f10e8039fcb02497"> 2102</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_view.html#a0ad6deb11914a242f10e8039fcb02497">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02103" name="l02103"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#add6e12ff1e476fe1db7718b14f21b075"> 2103</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_view.html#add6e12ff1e476fe1db7718b14f21b075">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span> </div>
 | 
						|
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#a2230d3e5f434fb2b888de50b529ac121"> 2105</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#a513b034919a8a494add3155f910a360c"> 2106</a></span>  void print(std::ostream& os) override;</div>
 | 
						|
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_view.html#a7cb8403a96a47cb258caac4e3b850f64"> 2107</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span> </div>
 | 
						|
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> private:</div>
 | 
						|
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span>  <a class="code hl_struct" href="structmlx_1_1core_1_1_dtype.html">Dtype</a> dtype_;</div>
 | 
						|
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"> 2111</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02113" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02113" name="l02113"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html"> 2113</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_transpose.html">Transpose</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02114" name="l02114"></a><span class="lineno"> 2114</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen02115" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02115" name="l02115"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a"> 2115</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a">Transpose</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keyword">const</span> std::vector<int>& axes)</div>
 | 
						|
<div class="line"><a id="l02116" name="l02116"></a><span class="lineno"> 2116</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), axes_(axes) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"> 2117</span> </div>
 | 
						|
<div class="line"><a id="l02118" name="l02118"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#a1fbcfcca43f9ec06c63a3c14708c30f8"> 2118</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_transpose.html#a1fbcfcca43f9ec06c63a3c14708c30f8">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02119" name="l02119"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#a38d25739c08aa594a6775015a1d7d92e"> 2119</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_transpose.html#a38d25739c08aa594a6775015a1d7d92e">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02120" name="l02120"></a><span class="lineno"> 2120</span> </div>
 | 
						|
<div class="line"><a id="l02121" name="l02121"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#a5ef848b69def9a246665b67e6e3ffdfe"> 2121</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02122" name="l02122"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#ac1a523e25ab7fd9df4da363a922afbe1"> 2122</a></span>  <a class="code hl_define" href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a>()</div>
 | 
						|
<div class="line"><a id="l02123" name="l02123"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#ac6c87b850f4e5560aa13a5e1e9f9fe04"> 2123</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_transpose.html">Transpose</a>)</div>
 | 
						|
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_transpose.html#a799ec3c3fa9f1b9e6177c755252a3eab"> 2124</a></span>  <span class="keywordtype">bool</span> is_equivalent(const <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other) const override;</div>
 | 
						|
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span> </div>
 | 
						|
<div class="line"><a id="l02126" name="l02126"></a><span class="lineno"> 2126</span> private:</div>
 | 
						|
<div class="line"><a id="l02127" name="l02127"></a><span class="lineno"> 2127</span>  std::vector<<span class="keywordtype">int</span>> axes_;</div>
 | 
						|
<div class="line"><a id="l02128" name="l02128"></a><span class="lineno"> 2128</span> </div>
 | 
						|
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"> 2129</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out);</div>
 | 
						|
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02131" name="l02131"></a><span class="lineno"> 2131</span> </div>
 | 
						|
<div class="line"><a id="l02132" name="l02132"></a><span class="lineno"> 2132</span><span class="comment">/* QR Factorization primitive. */</span></div>
 | 
						|
<div class="foldopen" id="foldopen02133" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02133" name="l02133"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_q_r_f.html"> 2133</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_q_r_f.html">QRF</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"> 2134</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983"> 2135</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983">QRF</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span> </div>
 | 
						|
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_q_r_f.html#a48493887395d65a27f04de1804d277d2"> 2137</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_q_r_f.html#a48493887395d65a27f04de1804d277d2">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_q_r_f.html#ae5fa3482192f4713605cd07e7fc1c6c9"> 2139</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_q_r_f.html#ae5fa3482192f4713605cd07e7fc1c6c9">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span> </div>
 | 
						|
<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_q_r_f.html#aba3526722b3a52b41fa8103b909f7f3b"> 2142</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_q_r_f.html">QRF</a>)</div>
 | 
						|
<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span> </div>
 | 
						|
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"> 2144</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span> </div>
 | 
						|
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span><span class="comment">/* SVD primitive. */</span></div>
 | 
						|
<div class="foldopen" id="foldopen02149" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html"> 2149</a></span><span class="keyword">class </span><a class="code hl_class" href="classmlx_1_1core_1_1_s_v_d.html">SVD</a> : <span class="keyword">public</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l02150" name="l02150"></a><span class="lineno"> 2150</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1"> 2151</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1">SVD</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream) : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream) {}</div>
 | 
						|
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"> 2152</span> </div>
 | 
						|
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html#a637f5c39fa8b10722c04a066f6c1ada6"> 2153</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_s_v_d.html#a637f5c39fa8b10722c04a066f6c1ada6">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html#a7067b2207f826a25549d571856b94e83"> 2155</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_s_v_d.html#a7067b2207f826a25549d571856b94e83">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"> 2157</span> </div>
 | 
						|
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html#a0366c958f6cdac8d1d9e1a4eda53fae8"> 2158</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02159" name="l02159"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_s_v_d.html#ab87a4e7ef857936bea66ba9e24662f53"> 2159</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_s_v_d.html">SVD</a>)</div>
 | 
						|
<div class="line"><a id="l02160" name="l02160"></a><span class="lineno"> 2160</span> </div>
 | 
						|
<div class="line"><a id="l02161" name="l02161"></a><span class="lineno"> 2161</span> private:</div>
 | 
						|
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"> 2162</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& outputs);</div>
 | 
						|
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span> </div>
 | 
						|
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span><span class="comment">/* Matrix inversion primitive. */</span></div>
 | 
						|
<div class="foldopen" id="foldopen02166" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html"> 2166</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_inverse.html">Inverse</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen02168" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html#a71467681e523abb725724490bfeb76ad"> 2168</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_inverse.html#a71467681e523abb725724490bfeb76ad">Inverse</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">bool</span> tri, <span class="keywordtype">bool</span> upper)</div>
 | 
						|
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), tri_(<a class="code hl_function" href="group__ops.html#ga4f3389e5b89e70e862e7d2b40d6c7f78">tri</a>), upper_(upper) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span> </div>
 | 
						|
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html#aeb1d8dc9bc4052a616023f65b3c7bb81"> 2171</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_inverse.html#aeb1d8dc9bc4052a616023f65b3c7bb81">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html#a086fbbc947ad232e01686ad063a78ed2"> 2172</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_inverse.html#a086fbbc947ad232e01686ad063a78ed2">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span> </div>
 | 
						|
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html#a98419b9f0b8a6c9185fe012d523552c2"> 2174</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_inverse.html#a543f18f1ce5c06c897141091e95a66e9"> 2175</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_inverse.html">Inverse</a>)</div>
 | 
						|
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span> </div>
 | 
						|
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span> private:</div>
 | 
						|
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output);</div>
 | 
						|
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span>  <span class="keywordtype">bool</span> tri_;</div>
 | 
						|
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span>  <span class="keywordtype">bool</span> upper_;</div>
 | 
						|
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02183" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html"> 2183</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_cholesky.html">Cholesky</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a> {</div>
 | 
						|
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen02185" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html#a6ae2e30b85f99f4f0d7f14c7949818ab"> 2185</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cholesky.html#a6ae2e30b85f99f4f0d7f14c7949818ab">Cholesky</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, <span class="keywordtype">bool</span> upper)</div>
 | 
						|
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_unary_primitive.html">UnaryPrimitive</a>(stream), upper_(upper) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span> </div>
 | 
						|
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html#a4bdec36c1cc99aadf9a4a39d4c57bea5"> 2188</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cholesky.html#a4bdec36c1cc99aadf9a4a39d4c57bea5">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html#a8c918594bf129888044ef37fcae56795"> 2189</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_cholesky.html#a8c918594bf129888044ef37fcae56795">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& out) <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> </div>
 | 
						|
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html#ab5c3f6199ec3b399c91243a05d116aa5"> 2191</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_cholesky.html#a0a8b51ff7f5369d22bdc58910d4aaf84"> 2192</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_cholesky.html">Cholesky</a>)</div>
 | 
						|
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> </div>
 | 
						|
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span> private:</div>
 | 
						|
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span>  <span class="keywordtype">void</span> eval(const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs, <a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>& output);</div>
 | 
						|
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span>  <span class="keywordtype">bool</span> upper_;</div>
 | 
						|
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02199" data-start="{" data-end="};">
 | 
						|
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html"> 2199</a></span>class <a class="code hl_class" href="classmlx_1_1core_1_1_eigh.html">Eigh</a> : public <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a> {</div>
 | 
						|
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span> <span class="keyword">public</span>:</div>
 | 
						|
<div class="foldopen" id="foldopen02201" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#ad8f5d012ebd5942abeffecca77fcddda"> 2201</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classmlx_1_1core_1_1_eigh.html#ad8f5d012ebd5942abeffecca77fcddda">Eigh</a>(<a class="code hl_struct" href="structmlx_1_1core_1_1_stream.html">Stream</a> stream, std::string uplo, <span class="keywordtype">bool</span> compute_eigenvectors)</div>
 | 
						|
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span>      : <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>(stream),</div>
 | 
						|
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span>        uplo_(<a class="code hl_function" href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">std</a>::move(uplo)),</div>
 | 
						|
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span>        compute_eigenvectors_(compute_eigenvectors) {}</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span> </div>
 | 
						|
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#a894b32e17229394f6a43b4a0655fd8be"> 2206</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_eigh.html#a894b32e17229394f6a43b4a0655fd8be">eval_cpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#a67775b41c0a15e356f08d51d9736baa2"> 2208</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classmlx_1_1core_1_1_eigh.html#a67775b41c0a15e356f08d51d9736baa2">eval_gpu</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs)</div>
 | 
						|
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span>      <span class="keyword">override</span>;</div>
 | 
						|
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span> </div>
 | 
						|
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#ab2f2ea5326e2f6045f9b7250692c240f"> 2211</a></span>  <a class="code hl_define" href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a>()</div>
 | 
						|
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#a2b8e47ecd60cd7330716761c5fb1fe84"> 2212</a></span>  <a class="code hl_define" href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_eigh.html">Eigh</a>)</div>
 | 
						|
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02214" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#a68c890a4172711fbab8baef8da40a9c5"> 2214</a></span>  std::vector<std::vector<<span class="keywordtype">int</span>>> output_shapes(</div>
 | 
						|
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span>      const std::vector<<a class="code hl_class" href="classmlx_1_1core_1_1array.html">array</a>>& inputs)<span class="keyword"> override </span>{</div>
 | 
						|
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span>    <span class="keyword">auto</span> shape = inputs[0].shape();</div>
 | 
						|
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span>    shape.pop_back(); <span class="comment">// Remove last dimension for eigenvalues</span></div>
 | 
						|
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span>    <span class="keywordflow">if</span> (compute_eigenvectors_) {</div>
 | 
						|
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span>      <span class="keywordflow">return</span> {shape, inputs[0].shape()}; <span class="comment">// Eigenvalues and eigenvectors</span></div>
 | 
						|
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span>    } <span class="keywordflow">else</span> {</div>
 | 
						|
<div class="line"><a id="l02221" name="l02221"></a><span class="lineno"> 2221</span>      <span class="keywordflow">return</span> {shape}; <span class="comment">// Only eigenvalues</span></div>
 | 
						|
<div class="line"><a id="l02222" name="l02222"></a><span class="lineno"> 2222</span>    }</div>
 | 
						|
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"> 2223</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span> </div>
 | 
						|
<div class="foldopen" id="foldopen02225" data-start="{" data-end="}">
 | 
						|
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"><a class="line" href="classmlx_1_1core_1_1_eigh.html#a09414e3fe88a952408d164d6dd0af381"> 2225</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classmlx_1_1core_1_1_eigh.html#a09414e3fe88a952408d164d6dd0af381">is_equivalent</a>(<span class="keyword">const</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>& other)<span class="keyword"> const override </span>{</div>
 | 
						|
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span>    <span class="keywordflow">if</span> (<span class="keyword">auto</span>* p = <span class="keyword">dynamic_cast<</span><span class="keyword">const </span><a class="code hl_class" href="classmlx_1_1core_1_1_eigh.html">Eigh</a>*<span class="keyword">></span>(&other)) {</div>
 | 
						|
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span>      <span class="keywordflow">return</span> uplo_ == p->uplo_ &&</div>
 | 
						|
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span>          compute_eigenvectors_ == p->compute_eigenvectors_;</div>
 | 
						|
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span>    }</div>
 | 
						|
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span>    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 | 
						|
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span>  }</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02232" name="l02232"></a><span class="lineno"> 2232</span> </div>
 | 
						|
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span> <span class="keyword">private</span>:</div>
 | 
						|
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span>  <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">eval</a>(<span class="keyword">const</span> std::vector<array>& inputs, std::vector<array>& outputs);</div>
 | 
						|
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span>  std::string uplo_;</div>
 | 
						|
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"> 2236</span>  <span class="keywordtype">bool</span> compute_eigenvectors_;</div>
 | 
						|
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span>};</div>
 | 
						|
</div>
 | 
						|
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"> 2238</span> </div>
 | 
						|
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"> 2239</span>} <span class="comment">// namespace mlx::core</span></div>
 | 
						|
<div class="ttc" id="aarray_8h_html"><div class="ttname"><a href="array_8h.html">array.h</a></div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html">mlx::core::Abs</a></div><div class="ttdef"><b>Definition</b> primitives.h:155</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_a0a976e636dd8505b473fbdddf949f514"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#a0a976e636dd8505b473fbdddf949f514">mlx::core::Abs::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_a0d3e697496ef8e842d21195cb3c14e60"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#a0d3e697496ef8e842d21195cb3c14e60">mlx::core::Abs::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_a1247e72feb640fb562d036b2dd1ae4ad"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad">mlx::core::Abs::Abs</a></div><div class="ttdeci">Abs(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:157</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_a643d6db5116eed978e3208804a992107"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107">mlx::core::Abs::print</a></div><div class="ttdeci">void print(std::ostream &os) override</div><div class="ttdoc">Print the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:164</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_ab6a2b147f58c83439ecefb9189c2da32"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32">mlx::core::Abs::output_shapes</a></div><div class="ttdeci">std::vector< std::vector< int > > output_shapes(const std::vector< array > &inputs) override</div><div class="ttdoc">Get the output shapes of the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:166</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_abs_html_ab6f0ec56bc7c048382297e12dabadc67"><div class="ttname"><a href="classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67">mlx::core::Abs::is_equivalent</a></div><div class="ttdeci">bool is_equivalent(const Primitive &other) const override</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:165</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_html"><div class="ttname"><a href="classmlx_1_1core_1_1_add.html">mlx::core::Add</a></div><div class="ttdef"><b>Definition</b> primitives.h:172</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_html_a5bacfc51dfa2a5a931bad2dd7bdc7a5f"><div class="ttname"><a href="classmlx_1_1core_1_1_add.html#a5bacfc51dfa2a5a931bad2dd7bdc7a5f">mlx::core::Add::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_html_aa0aacbc1e26b95a2f040f62aa4f69c3d"><div class="ttname"><a href="classmlx_1_1core_1_1_add.html#aa0aacbc1e26b95a2f040f62aa4f69c3d">mlx::core::Add::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_html_ae3fd5483f3454eac3df256e3f5f3cdae"><div class="ttname"><a href="classmlx_1_1core_1_1_add.html#ae3fd5483f3454eac3df256e3f5f3cdae">mlx::core::Add::Add</a></div><div class="ttdeci">Add(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:174</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_m_m_html"><div class="ttname"><a href="classmlx_1_1core_1_1_add_m_m.html">mlx::core::AddMM</a></div><div class="ttdef"><b>Definition</b> primitives.h:189</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_m_m_html_a15694e3bf2ed5c193237b2b9ca00867c"><div class="ttname"><a href="classmlx_1_1core_1_1_add_m_m.html#a15694e3bf2ed5c193237b2b9ca00867c">mlx::core::AddMM::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_m_m_html_a5f933be14baebc32a0be0f9a69148aa9"><div class="ttname"><a href="classmlx_1_1core_1_1_add_m_m.html#a5f933be14baebc32a0be0f9a69148aa9">mlx::core::AddMM::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_m_m_html_a8ae4372b3f96e72e8a5a06d59de8a550"><div class="ttname"><a href="classmlx_1_1core_1_1_add_m_m.html#a8ae4372b3f96e72e8a5a06d59de8a550">mlx::core::AddMM::AddMM</a></div><div class="ttdeci">AddMM(Stream stream, float alpha, float beta)</div><div class="ttdef"><b>Definition</b> primitives.h:191</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_add_m_m_html_ac1562a37cec6928e01281926ebeb47c6"><div class="ttname"><a href="classmlx_1_1core_1_1_add_m_m.html#ac1562a37cec6928e01281926ebeb47c6">mlx::core::AddMM::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arange_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arange.html">mlx::core::Arange</a></div><div class="ttdef"><b>Definition</b> primitives.h:213</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arange_html_a1a70c3b0b9c67d5a9446c141c5b7c574"><div class="ttname"><a href="classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574">mlx::core::Arange::Arange</a></div><div class="ttdeci">Arange(Stream stream, double start, double stop, double step)</div><div class="ttdef"><b>Definition</b> primitives.h:215</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arange_html_a7a2e9787c6c3a78b4a6df91206974031"><div class="ttname"><a href="classmlx_1_1core_1_1_arange.html#a7a2e9787c6c3a78b4a6df91206974031">mlx::core::Arange::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arange_html_aba44432491cbd599bf72712f5f4267a1"><div class="ttname"><a href="classmlx_1_1core_1_1_arange.html#aba44432491cbd599bf72712f5f4267a1">mlx::core::Arange::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cos_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cos.html">mlx::core::ArcCos</a></div><div class="ttdef"><b>Definition</b> primitives.h:232</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cos_html_a46f72d4af89b0a0f5f203783fb44589c"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cos.html#a46f72d4af89b0a0f5f203783fb44589c">mlx::core::ArcCos::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cos_html_a58dcba9e706cb12bab062bb7fa5fa006"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cos.html#a58dcba9e706cb12bab062bb7fa5fa006">mlx::core::ArcCos::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cos_html_a66f4ee841d17923d93241b71ea5103e9"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9">mlx::core::ArcCos::ArcCos</a></div><div class="ttdeci">ArcCos(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:234</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cosh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cosh.html">mlx::core::ArcCosh</a></div><div class="ttdef"><b>Definition</b> primitives.h:249</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cosh_html_a0f6d989bcbbc38f15ef17a136879a9c9"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cosh.html#a0f6d989bcbbc38f15ef17a136879a9c9">mlx::core::ArcCosh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cosh_html_a34597054db467941a2a883c653ba4d71"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71">mlx::core::ArcCosh::ArcCosh</a></div><div class="ttdeci">ArcCosh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:251</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_cosh_html_aa6a2587485a0e015ac2d5211d7d045fc"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_cosh.html#aa6a2587485a0e015ac2d5211d7d045fc">mlx::core::ArcCosh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sin_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sin.html">mlx::core::ArcSin</a></div><div class="ttdef"><b>Definition</b> primitives.h:266</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sin_html_a7fa4ae7a85bc8bed97ea258ae30762f3"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sin.html#a7fa4ae7a85bc8bed97ea258ae30762f3">mlx::core::ArcSin::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sin_html_a97cb8c3d4d9d6abc627dec49a404f013"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013">mlx::core::ArcSin::ArcSin</a></div><div class="ttdeci">ArcSin(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:268</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sin_html_ab3542492c14021329788de8f2a9be1e4"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sin.html#ab3542492c14021329788de8f2a9be1e4">mlx::core::ArcSin::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sinh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sinh.html">mlx::core::ArcSinh</a></div><div class="ttdef"><b>Definition</b> primitives.h:283</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sinh_html_a30076b222788deeaaf9ad92d3c535f20"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20">mlx::core::ArcSinh::ArcSinh</a></div><div class="ttdeci">ArcSinh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:285</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sinh_html_a52574b24d8d16839c58673f51f8ac066"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sinh.html#a52574b24d8d16839c58673f51f8ac066">mlx::core::ArcSinh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_sinh_html_a79f648a86de4c10386a1ce3b5e38e8ac"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_sinh.html#a79f648a86de4c10386a1ce3b5e38e8ac">mlx::core::ArcSinh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan2_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan2.html">mlx::core::ArcTan2</a></div><div class="ttdef"><b>Definition</b> primitives.h:317</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan2_html_a13094e6b702769928ca0da468f5ce45c"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan2.html#a13094e6b702769928ca0da468f5ce45c">mlx::core::ArcTan2::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan2_html_a76d3f0c29e0ff4642b8d39dac90d3f50"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan2.html#a76d3f0c29e0ff4642b8d39dac90d3f50">mlx::core::ArcTan2::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan2_html_aa1a4ebab9924b6bcc80df5b52ed0121a"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a">mlx::core::ArcTan2::ArcTan2</a></div><div class="ttdeci">ArcTan2(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:319</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan.html">mlx::core::ArcTan</a></div><div class="ttdef"><b>Definition</b> primitives.h:300</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan_html_a1211bc31241227528f04435239ddb9a3"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan.html#a1211bc31241227528f04435239ddb9a3">mlx::core::ArcTan::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan_html_a3511153bbd421e89fd9294cdb3f79b44"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44">mlx::core::ArcTan::ArcTan</a></div><div class="ttdeci">ArcTan(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:302</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tan_html_a77866feb27028865d844070447c9a254"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tan.html#a77866feb27028865d844070447c9a254">mlx::core::ArcTan::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tanh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tanh.html">mlx::core::ArcTanh</a></div><div class="ttdef"><b>Definition</b> primitives.h:334</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tanh_html_a10566b9d3b2c7d090895b46d9040bc1d"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tanh.html#a10566b9d3b2c7d090895b46d9040bc1d">mlx::core::ArcTanh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tanh_html_a17857bd0e2a3ecf1f7bf8e1a3d354358"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358">mlx::core::ArcTanh::ArcTanh</a></div><div class="ttdeci">ArcTanh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:336</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arc_tanh_html_a5af9224e1f1ffec412b0baa0af7e1ecd"><div class="ttname"><a href="classmlx_1_1core_1_1_arc_tanh.html#a5af9224e1f1ffec412b0baa0af7e1ecd">mlx::core::ArcTanh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_partition_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_partition.html">mlx::core::ArgPartition</a></div><div class="ttdef"><b>Definition</b> primitives.h:351</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_partition_html_a896f75c5325798ac3f9093f6a4581828"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_partition.html#a896f75c5325798ac3f9093f6a4581828">mlx::core::ArgPartition::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_partition_html_a9a60995eaf85f63c877e86b23cbc15fc"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_partition.html#a9a60995eaf85f63c877e86b23cbc15fc">mlx::core::ArgPartition::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_partition_html_ab54b13dbf92351ba1ac06fd3e5a802df"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df">mlx::core::ArgPartition::ArgPartition</a></div><div class="ttdeci">ArgPartition(Stream stream, int kth, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:353</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html">mlx::core::ArgReduce</a></div><div class="ttdef"><b>Definition</b> primitives.h:372</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_a920ed48caaba76683be0d1f1ed4a8bd3"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3">mlx::core::ArgReduce::ReduceType</a></div><div class="ttdeci">ReduceType</div><div class="ttdef"><b>Definition</b> primitives.h:374</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9">mlx::core::ArgReduce::ArgMin</a></div><div class="ttdeci">@ ArgMin</div><div class="ttdef"><b>Definition</b> primitives.h:375</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e">mlx::core::ArgReduce::ArgMax</a></div><div class="ttdeci">@ ArgMax</div><div class="ttdef"><b>Definition</b> primitives.h:376</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_aaccf8021dc24895656e25142eb65aa03"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03">mlx::core::ArgReduce::ArgReduce</a></div><div class="ttdeci">ArgReduce(Stream stream, ReduceType reduce_type, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:379</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_aafa982ce2abc0cd9e81e43aa2c823d29"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#aafa982ce2abc0cd9e81e43aa2c823d29">mlx::core::ArgReduce::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_reduce_html_ad8d48725623ede1ff654fa13eccf2287"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_reduce.html#ad8d48725623ede1ff654fa13eccf2287">mlx::core::ArgReduce::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_sort_html"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_sort.html">mlx::core::ArgSort</a></div><div class="ttdef"><b>Definition</b> primitives.h:399</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_sort_html_a022079683774bfeb531b3a002cff16fa"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_sort.html#a022079683774bfeb531b3a002cff16fa">mlx::core::ArgSort::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_sort_html_a38507a8445302a81cb44674c4a5fc0b0"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0">mlx::core::ArgSort::ArgSort</a></div><div class="ttdeci">ArgSort(Stream stream, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:401</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_arg_sort_html_abc2d730850ec4ee8d7968b7417911709"><div class="ttname"><a href="classmlx_1_1core_1_1_arg_sort.html#abc2d730850ec4ee8d7968b7417911709">mlx::core::ArgSort::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_strided_html"><div class="ttname"><a href="classmlx_1_1core_1_1_as_strided.html">mlx::core::AsStrided</a></div><div class="ttdef"><b>Definition</b> primitives.h:438</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_strided_html_a80c0547f72ed53374eafc57d57b5d4af"><div class="ttname"><a href="classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af">mlx::core::AsStrided::AsStrided</a></div><div class="ttdeci">AsStrided(Stream stream, std::vector< int > shape, std::vector< size_t > strides, size_t offset)</div><div class="ttdef"><b>Definition</b> primitives.h:440</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_strided_html_ab6771a208323994927ca162ba7bb10ed"><div class="ttname"><a href="classmlx_1_1core_1_1_as_strided.html#ab6771a208323994927ca162ba7bb10ed">mlx::core::AsStrided::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_strided_html_acdd4705e4503ff0b124215c4676b4193"><div class="ttname"><a href="classmlx_1_1core_1_1_as_strided.html#acdd4705e4503ff0b124215c4676b4193">mlx::core::AsStrided::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_type_html"><div class="ttname"><a href="classmlx_1_1core_1_1_as_type.html">mlx::core::AsType</a></div><div class="ttdef"><b>Definition</b> primitives.h:418</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_type_html_a5b111b9d74c60d27b4a7ebaa49f96e0b"><div class="ttname"><a href="classmlx_1_1core_1_1_as_type.html#a5b111b9d74c60d27b4a7ebaa49f96e0b">mlx::core::AsType::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_type_html_a8c3241d402a8977bb4db037e225f5b47"><div class="ttname"><a href="classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47">mlx::core::AsType::AsType</a></div><div class="ttdeci">AsType(Stream stream, Dtype dtype)</div><div class="ttdef"><b>Definition</b> primitives.h:420</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_as_type_html_aa89dbf4d73b00c6a44cffd04d5bb228d"><div class="ttname"><a href="classmlx_1_1core_1_1_as_type.html#aa89dbf4d73b00c6a44cffd04d5bb228d">mlx::core::AsType::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html">mlx::core::BitwiseBinary</a></div><div class="ttdef"><b>Definition</b> primitives.h:465</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html_a0d8b3a94951621ffcdebc6fda748a172"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172">mlx::core::BitwiseBinary::BitwiseBinary</a></div><div class="ttdeci">BitwiseBinary(Stream stream, Op op)</div><div class="ttdef"><b>Definition</b> primitives.h:469</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html_a2194bf585213bda1b2966aa02d2fe283"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html#a2194bf585213bda1b2966aa02d2fe283">mlx::core::BitwiseBinary::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html_a6f8b5d455d0c1770428a6bef1608f23d"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d">mlx::core::BitwiseBinary::Op</a></div><div class="ttdeci">Op</div><div class="ttdef"><b>Definition</b> primitives.h:467</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html_a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4">mlx::core::BitwiseBinary::And</a></div><div class="ttdeci">@ And</div><div class="ttdef"><b>Definition</b> primitives.h:467</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_bitwise_binary_html_ac831a29fc46701b00bbe63ee33832afd"><div class="ttname"><a href="classmlx_1_1core_1_1_bitwise_binary.html#ac831a29fc46701b00bbe63ee33832afd">mlx::core::BitwiseBinary::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_block_masked_m_m_html"><div class="ttname"><a href="classmlx_1_1core_1_1_block_masked_m_m.html">mlx::core::BlockMaskedMM</a></div><div class="ttdef"><b>Definition</b> primitives.h:485</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_block_masked_m_m_html_a1adf20087ee2f685bf39c2724b8e7120"><div class="ttname"><a href="classmlx_1_1core_1_1_block_masked_m_m.html#a1adf20087ee2f685bf39c2724b8e7120">mlx::core::BlockMaskedMM::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_block_masked_m_m_html_aa85da478cdc6d4a97be06e5d4abee1f2"><div class="ttname"><a href="classmlx_1_1core_1_1_block_masked_m_m.html#aa85da478cdc6d4a97be06e5d4abee1f2">mlx::core::BlockMaskedMM::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_block_masked_m_m_html_ab372b6df4de00a33795a052a23bb1df9"><div class="ttname"><a href="classmlx_1_1core_1_1_block_masked_m_m.html#ab372b6df4de00a33795a052a23bb1df9">mlx::core::BlockMaskedMM::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_block_masked_m_m_html_ad26509deb5306d0c5eb72477e9a57477"><div class="ttname"><a href="classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477">mlx::core::BlockMaskedMM::BlockMaskedMM</a></div><div class="ttdeci">BlockMaskedMM(Stream stream, int block_size)</div><div class="ttdef"><b>Definition</b> primitives.h:487</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_broadcast_html"><div class="ttname"><a href="classmlx_1_1core_1_1_broadcast.html">mlx::core::Broadcast</a></div><div class="ttdef"><b>Definition</b> primitives.h:528</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_broadcast_html_a53d48d9778e2d4c24a124cd767900780"><div class="ttname"><a href="classmlx_1_1core_1_1_broadcast.html#a53d48d9778e2d4c24a124cd767900780">mlx::core::Broadcast::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_broadcast_html_ab9bd9dbcedcefc9b29c84911b5ce69fe"><div class="ttname"><a href="classmlx_1_1core_1_1_broadcast.html#ab9bd9dbcedcefc9b29c84911b5ce69fe">mlx::core::Broadcast::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_broadcast_html_accbab8433c93e281608a268d11afaefb"><div class="ttname"><a href="classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb">mlx::core::Broadcast::Broadcast</a></div><div class="ttdeci">Broadcast(Stream stream, const std::vector< int > &shape)</div><div class="ttdef"><b>Definition</b> primitives.h:530</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_ceil_html"><div class="ttname"><a href="classmlx_1_1core_1_1_ceil.html">mlx::core::Ceil</a></div><div class="ttdef"><b>Definition</b> primitives.h:547</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_ceil_html_a9791801fff3f8b79944e15ac2a45a035"><div class="ttname"><a href="classmlx_1_1core_1_1_ceil.html#a9791801fff3f8b79944e15ac2a45a035">mlx::core::Ceil::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_ceil_html_abe178e0058e44b6618be414215e96887"><div class="ttname"><a href="classmlx_1_1core_1_1_ceil.html#abe178e0058e44b6618be414215e96887">mlx::core::Ceil::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_ceil_html_aede38610ca25429f229301546bc9b682"><div class="ttname"><a href="classmlx_1_1core_1_1_ceil.html#aede38610ca25429f229301546bc9b682">mlx::core::Ceil::Ceil</a></div><div class="ttdeci">Ceil(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:549</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cholesky_html"><div class="ttname"><a href="classmlx_1_1core_1_1_cholesky.html">mlx::core::Cholesky</a></div><div class="ttdef"><b>Definition</b> primitives.h:2183</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cholesky_html_a4bdec36c1cc99aadf9a4a39d4c57bea5"><div class="ttname"><a href="classmlx_1_1core_1_1_cholesky.html#a4bdec36c1cc99aadf9a4a39d4c57bea5">mlx::core::Cholesky::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cholesky_html_a6ae2e30b85f99f4f0d7f14c7949818ab"><div class="ttname"><a href="classmlx_1_1core_1_1_cholesky.html#a6ae2e30b85f99f4f0d7f14c7949818ab">mlx::core::Cholesky::Cholesky</a></div><div class="ttdeci">Cholesky(Stream stream, bool upper)</div><div class="ttdef"><b>Definition</b> primitives.h:2185</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cholesky_html_a8c918594bf129888044ef37fcae56795"><div class="ttname"><a href="classmlx_1_1core_1_1_cholesky.html#a8c918594bf129888044ef37fcae56795">mlx::core::Cholesky::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_compiled_html"><div class="ttname"><a href="classmlx_1_1core_1_1_compiled.html">mlx::core::Compiled</a></div><div class="ttdef"><b>Definition</b> primitives.h:564</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_compiled_html_a2d8cefff835c419a48a077d306b8e051"><div class="ttname"><a href="classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051">mlx::core::Compiled::Compiled</a></div><div class="ttdeci">Compiled(Stream stream, std::vector< array > inputs, std::vector< array > outputs, std::vector< array > tape, std::unordered_set< uintptr_t > constant_ids)</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_compiled_html_aa3d5ff0f2b3554ad48fbbf2a0f3336d5"><div class="ttname"><a href="classmlx_1_1core_1_1_compiled.html#aa3d5ff0f2b3554ad48fbbf2a0f3336d5">mlx::core::Compiled::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_compiled_html_ac45b1d0fedd85feefbff7ce7e168b151"><div class="ttname"><a href="classmlx_1_1core_1_1_compiled.html#ac45b1d0fedd85feefbff7ce7e168b151">mlx::core::Compiled::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_concatenate_html"><div class="ttname"><a href="classmlx_1_1core_1_1_concatenate.html">mlx::core::Concatenate</a></div><div class="ttdef"><b>Definition</b> primitives.h:607</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_concatenate_html_a309a1c50e97f9925866433ee2841c474"><div class="ttname"><a href="classmlx_1_1core_1_1_concatenate.html#a309a1c50e97f9925866433ee2841c474">mlx::core::Concatenate::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_concatenate_html_a609e76bede7fc5581ec84ddcb727a258"><div class="ttname"><a href="classmlx_1_1core_1_1_concatenate.html#a609e76bede7fc5581ec84ddcb727a258">mlx::core::Concatenate::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_concatenate_html_acff07853de2d31faeec7c4ca40ce0888"><div class="ttname"><a href="classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888">mlx::core::Concatenate::Concatenate</a></div><div class="ttdeci">Concatenate(Stream stream, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:609</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_conjugate_html"><div class="ttname"><a href="classmlx_1_1core_1_1_conjugate.html">mlx::core::Conjugate</a></div><div class="ttdef"><b>Definition</b> primitives.h:626</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_conjugate_html_a627f9e6a8729fb3ffb3ca3228d007c87"><div class="ttname"><a href="classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87">mlx::core::Conjugate::Conjugate</a></div><div class="ttdeci">Conjugate(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:628</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_conjugate_html_ae39643e2178f442ffba05139f8609d61"><div class="ttname"><a href="classmlx_1_1core_1_1_conjugate.html#ae39643e2178f442ffba05139f8609d61">mlx::core::Conjugate::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_conjugate_html_aff0a802166e3724db88ab5d3feb2d3de"><div class="ttname"><a href="classmlx_1_1core_1_1_conjugate.html#aff0a802166e3724db88ab5d3feb2d3de">mlx::core::Conjugate::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_convolution_html"><div class="ttname"><a href="classmlx_1_1core_1_1_convolution.html">mlx::core::Convolution</a></div><div class="ttdef"><b>Definition</b> primitives.h:642</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_convolution_html_a30b64109eeb1778f002b99447dff9dd2"><div class="ttname"><a href="classmlx_1_1core_1_1_convolution.html#a30b64109eeb1778f002b99447dff9dd2">mlx::core::Convolution::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_convolution_html_a6f1de77b719bb13217b0d8c64cabb8ef"><div class="ttname"><a href="classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef">mlx::core::Convolution::Convolution</a></div><div class="ttdeci">Convolution(Stream stream, const std::vector< int > &kernel_strides, const std::vector< int > &padding, const std::vector< int > &kernel_dilation, const std::vector< int > &input_dilation, const int groups=1, const bool flip=false)</div><div class="ttdef"><b>Definition</b> primitives.h:644</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_convolution_html_ac74256068da01730629109fa4fa8432b"><div class="ttname"><a href="classmlx_1_1core_1_1_convolution.html#ac74256068da01730629109fa4fa8432b">mlx::core::Convolution::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_convolution_html_af8eb9c0c055ad20aa74b547016917690"><div class="ttname"><a href="classmlx_1_1core_1_1_convolution.html#af8eb9c0c055ad20aa74b547016917690">mlx::core::Convolution::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_copy_html"><div class="ttname"><a href="classmlx_1_1core_1_1_copy.html">mlx::core::Copy</a></div><div class="ttdef"><b>Definition</b> primitives.h:683</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_copy_html_a1eda7b2ea771a168f67421f0d384b3a1"><div class="ttname"><a href="classmlx_1_1core_1_1_copy.html#a1eda7b2ea771a168f67421f0d384b3a1">mlx::core::Copy::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_copy_html_a6243e044af119105ffaaed7d405cd584"><div class="ttname"><a href="classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584">mlx::core::Copy::Copy</a></div><div class="ttdeci">Copy(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:685</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_copy_html_af4a0ebec423e84ffe8083a5e9ed0d70c"><div class="ttname"><a href="classmlx_1_1core_1_1_copy.html#af4a0ebec423e84ffe8083a5e9ed0d70c">mlx::core::Copy::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cos_html"><div class="ttname"><a href="classmlx_1_1core_1_1_cos.html">mlx::core::Cos</a></div><div class="ttdef"><b>Definition</b> primitives.h:700</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cos_html_a061fc446268fe56237ae6b20ccf78152"><div class="ttname"><a href="classmlx_1_1core_1_1_cos.html#a061fc446268fe56237ae6b20ccf78152">mlx::core::Cos::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cos_html_a2acb9fcf0901462189c476756fd99995"><div class="ttname"><a href="classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995">mlx::core::Cos::Cos</a></div><div class="ttdeci">Cos(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:702</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cos_html_a5ef41aafad595f6cdd8c535e36e12060"><div class="ttname"><a href="classmlx_1_1core_1_1_cos.html#a5ef41aafad595f6cdd8c535e36e12060">mlx::core::Cos::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cosh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_cosh.html">mlx::core::Cosh</a></div><div class="ttdef"><b>Definition</b> primitives.h:717</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cosh_html_a23f71b43792934c3ec0ebe9b74f32559"><div class="ttname"><a href="classmlx_1_1core_1_1_cosh.html#a23f71b43792934c3ec0ebe9b74f32559">mlx::core::Cosh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cosh_html_a44e8ac2e09a55ec32e9dc6641eedc8f1"><div class="ttname"><a href="classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1">mlx::core::Cosh::Cosh</a></div><div class="ttdeci">Cosh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:719</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_cosh_html_ae8702df7e8f0e20cbeccb2a548961d3d"><div class="ttname"><a href="classmlx_1_1core_1_1_cosh.html#ae8702df7e8f0e20cbeccb2a548961d3d">mlx::core::Cosh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_custom_transforms_html"><div class="ttname"><a href="classmlx_1_1core_1_1_custom_transforms.html">mlx::core::CustomTransforms</a></div><div class="ttdef"><b>Definition</b> primitives.h:734</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_custom_transforms_html_a7b3538681acbb20af3ed37b0877f6667"><div class="ttname"><a href="classmlx_1_1core_1_1_custom_transforms.html#a7b3538681acbb20af3ed37b0877f6667">mlx::core::CustomTransforms::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_custom_transforms_html_ab52abadb9c6f6db83d087c7b751be488"><div class="ttname"><a href="classmlx_1_1core_1_1_custom_transforms.html#ab52abadb9c6f6db83d087c7b751be488">mlx::core::CustomTransforms::CustomTransforms</a></div><div class="ttdeci">CustomTransforms(Stream stream, int num_outputs, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> vjp, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> jvp, std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> vmap)</div><div class="ttdef"><b>Definition</b> primitives.h:736</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_custom_transforms_html_adba1c40c77a2138df6b5f75483f62184"><div class="ttname"><a href="classmlx_1_1core_1_1_custom_transforms.html#adba1c40c77a2138df6b5f75483f62184">mlx::core::CustomTransforms::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_depends_html"><div class="ttname"><a href="classmlx_1_1core_1_1_depends.html">mlx::core::Depends</a></div><div class="ttdef"><b>Definition</b> primitives.h:786</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_depends_html_a02996fa45f01f7cb9f37074d5f8ccab0"><div class="ttname"><a href="classmlx_1_1core_1_1_depends.html#a02996fa45f01f7cb9f37074d5f8ccab0">mlx::core::Depends::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotan, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_depends_html_a0c7ea6db97337591fa53c6e6bde41e5e"><div class="ttname"><a href="classmlx_1_1core_1_1_depends.html#a0c7ea6db97337591fa53c6e6bde41e5e">mlx::core::Depends::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_depends_html_a4ccb792c99f5d8d133d3fac29f7d3f62"><div class="ttname"><a href="classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62">mlx::core::Depends::Depends</a></div><div class="ttdeci">Depends(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:788</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_depends_html_ae5057f65e69490ad0add8eeda2b75e28"><div class="ttname"><a href="classmlx_1_1core_1_1_depends.html#ae5057f65e69490ad0add8eeda2b75e28">mlx::core::Depends::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_div_mod_html"><div class="ttname"><a href="classmlx_1_1core_1_1_div_mod.html">mlx::core::DivMod</a></div><div class="ttdef"><b>Definition</b> primitives.h:824</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_div_mod_html_a003117c9ecf3c06a27248f72a76348dc"><div class="ttname"><a href="classmlx_1_1core_1_1_div_mod.html#a003117c9ecf3c06a27248f72a76348dc">mlx::core::DivMod::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_div_mod_html_a859e3b6149cdceab1c7ccfd2246fb826"><div class="ttname"><a href="classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826">mlx::core::DivMod::DivMod</a></div><div class="ttdeci">DivMod(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:826</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_div_mod_html_ae350b7b93ad128e3133ee14f247193b3"><div class="ttname"><a href="classmlx_1_1core_1_1_div_mod.html#ae350b7b93ad128e3133ee14f247193b3">mlx::core::DivMod::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_divide_html"><div class="ttname"><a href="classmlx_1_1core_1_1_divide.html">mlx::core::Divide</a></div><div class="ttdef"><b>Definition</b> primitives.h:807</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_divide_html_a62fc71e8998be65ff18285dbbd21eedb"><div class="ttname"><a href="classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb">mlx::core::Divide::Divide</a></div><div class="ttdeci">Divide(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:809</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_divide_html_a823443c2a8e8b81bbcaeee6ddbcdbf49"><div class="ttname"><a href="classmlx_1_1core_1_1_divide.html#a823443c2a8e8b81bbcaeee6ddbcdbf49">mlx::core::Divide::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_divide_html_abffda0ce37221ddc28dc9eea794f6bc7"><div class="ttname"><a href="classmlx_1_1core_1_1_divide.html#abffda0ce37221ddc28dc9eea794f6bc7">mlx::core::Divide::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_eigh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_eigh.html">mlx::core::Eigh</a></div><div class="ttdef"><b>Definition</b> primitives.h:2199</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_eigh_html_a09414e3fe88a952408d164d6dd0af381"><div class="ttname"><a href="classmlx_1_1core_1_1_eigh.html#a09414e3fe88a952408d164d6dd0af381">mlx::core::Eigh::is_equivalent</a></div><div class="ttdeci">bool is_equivalent(const Primitive &other) const override</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:2225</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_eigh_html_a67775b41c0a15e356f08d51d9736baa2"><div class="ttname"><a href="classmlx_1_1core_1_1_eigh.html#a67775b41c0a15e356f08d51d9736baa2">mlx::core::Eigh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_eigh_html_a894b32e17229394f6a43b4a0655fd8be"><div class="ttname"><a href="classmlx_1_1core_1_1_eigh.html#a894b32e17229394f6a43b4a0655fd8be">mlx::core::Eigh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_eigh_html_ad8f5d012ebd5942abeffecca77fcddda"><div class="ttname"><a href="classmlx_1_1core_1_1_eigh.html#ad8f5d012ebd5942abeffecca77fcddda">mlx::core::Eigh::Eigh</a></div><div class="ttdeci">Eigh(Stream stream, std::string uplo, bool compute_eigenvectors)</div><div class="ttdef"><b>Definition</b> primitives.h:2201</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_equal_html"><div class="ttname"><a href="classmlx_1_1core_1_1_equal.html">mlx::core::Equal</a></div><div class="ttdef"><b>Definition</b> primitives.h:880</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_equal_html_a4af81cf2dd071db5bbf8ce1df95fdf36"><div class="ttname"><a href="classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36">mlx::core::Equal::Equal</a></div><div class="ttdeci">Equal(Stream stream, bool equal_nan=false)</div><div class="ttdef"><b>Definition</b> primitives.h:882</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_equal_html_aabb8aa61fa581defddcdca1274b1b454"><div class="ttname"><a href="classmlx_1_1core_1_1_equal.html#aabb8aa61fa581defddcdca1274b1b454">mlx::core::Equal::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_equal_html_ac3757001fec42ceb5ece2954df42161c"><div class="ttname"><a href="classmlx_1_1core_1_1_equal.html#ac3757001fec42ceb5ece2954df42161c">mlx::core::Equal::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_html"><div class="ttname"><a href="classmlx_1_1core_1_1_erf.html">mlx::core::Erf</a></div><div class="ttdef"><b>Definition</b> primitives.h:906</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_html_a702f76f848928d8d7d3d0881ac6e4c82"><div class="ttname"><a href="classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82">mlx::core::Erf::Erf</a></div><div class="ttdeci">Erf(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:908</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_html_a84ea16e43d5b7f83bbc2d5ece78a3fb6"><div class="ttname"><a href="classmlx_1_1core_1_1_erf.html#a84ea16e43d5b7f83bbc2d5ece78a3fb6">mlx::core::Erf::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_html_ad8551be664d767dccc3c0d8cc1eca008"><div class="ttname"><a href="classmlx_1_1core_1_1_erf.html#ad8551be664d767dccc3c0d8cc1eca008">mlx::core::Erf::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_inv_html"><div class="ttname"><a href="classmlx_1_1core_1_1_erf_inv.html">mlx::core::ErfInv</a></div><div class="ttdef"><b>Definition</b> primitives.h:923</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_inv_html_a4a2413d0634db1f3dae1806ddfa632db"><div class="ttname"><a href="classmlx_1_1core_1_1_erf_inv.html#a4a2413d0634db1f3dae1806ddfa632db">mlx::core::ErfInv::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_inv_html_a5d0279247b67da4592311559f04e1478"><div class="ttname"><a href="classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478">mlx::core::ErfInv::ErfInv</a></div><div class="ttdeci">ErfInv(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:925</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_erf_inv_html_af579627402af3249565134884701d39e"><div class="ttname"><a href="classmlx_1_1core_1_1_erf_inv.html#af579627402af3249565134884701d39e">mlx::core::ErfInv::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_exp_html"><div class="ttname"><a href="classmlx_1_1core_1_1_exp.html">mlx::core::Exp</a></div><div class="ttdef"><b>Definition</b> primitives.h:940</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_exp_html_a1d0a618cbb91ab29ef53b57ff6ed6e06"><div class="ttname"><a href="classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06">mlx::core::Exp::Exp</a></div><div class="ttdeci">Exp(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:942</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_exp_html_a47934c5a5023bc7ae7ae89bff45ebb2c"><div class="ttname"><a href="classmlx_1_1core_1_1_exp.html#a47934c5a5023bc7ae7ae89bff45ebb2c">mlx::core::Exp::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_exp_html_a7d63695a97a14760fd33b5d4e6590822"><div class="ttname"><a href="classmlx_1_1core_1_1_exp.html#a7d63695a97a14760fd33b5d4e6590822">mlx::core::Exp::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_expm1_html"><div class="ttname"><a href="classmlx_1_1core_1_1_expm1.html">mlx::core::Expm1</a></div><div class="ttdef"><b>Definition</b> primitives.h:957</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_expm1_html_a47c2a1b2a4ef6bb07ba77c55ddddaec2"><div class="ttname"><a href="classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2">mlx::core::Expm1::Expm1</a></div><div class="ttdeci">Expm1(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:959</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_expm1_html_a82930071f4b77d883b300f77966aff5f"><div class="ttname"><a href="classmlx_1_1core_1_1_expm1.html#a82930071f4b77d883b300f77966aff5f">mlx::core::Expm1::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_expm1_html_ab9c8b7aa50fe4592d55f8957baac647a"><div class="ttname"><a href="classmlx_1_1core_1_1_expm1.html#ab9c8b7aa50fe4592d55f8957baac647a">mlx::core::Expm1::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_f_f_t_html"><div class="ttname"><a href="classmlx_1_1core_1_1_f_f_t.html">mlx::core::FFT</a></div><div class="ttdef"><b>Definition</b> primitives.h:973</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_f_f_t_html_a0cdce626ed2c8eeeecc6949418437839"><div class="ttname"><a href="classmlx_1_1core_1_1_f_f_t.html#a0cdce626ed2c8eeeecc6949418437839">mlx::core::FFT::FFT</a></div><div class="ttdeci">FFT(Stream stream, const std::vector< size_t > &axes, bool inverse, bool real)</div><div class="ttdef"><b>Definition</b> primitives.h:975</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_f_f_t_html_a1c21b26d1e9ad7c4da78ae845721b2dd"><div class="ttname"><a href="classmlx_1_1core_1_1_f_f_t.html#a1c21b26d1e9ad7c4da78ae845721b2dd">mlx::core::FFT::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_f_f_t_html_a6bc262a0c2b5d4fe655e3e2e0ff28635"><div class="ttname"><a href="classmlx_1_1core_1_1_f_f_t.html#a6bc262a0c2b5d4fe655e3e2e0ff28635">mlx::core::FFT::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_floor_html"><div class="ttname"><a href="classmlx_1_1core_1_1_floor.html">mlx::core::Floor</a></div><div class="ttdef"><b>Definition</b> primitives.h:999</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_floor_html_a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7"><div class="ttname"><a href="classmlx_1_1core_1_1_floor.html#a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7">mlx::core::Floor::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_floor_html_aaa29c83538099eb8f951c95a41f2eb65"><div class="ttname"><a href="classmlx_1_1core_1_1_floor.html#aaa29c83538099eb8f951c95a41f2eb65">mlx::core::Floor::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_floor_html_ada4e979b784b732696313d7094e91340"><div class="ttname"><a href="classmlx_1_1core_1_1_floor.html#ada4e979b784b732696313d7094e91340">mlx::core::Floor::Floor</a></div><div class="ttdeci">Floor(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1001</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_full_html"><div class="ttname"><a href="classmlx_1_1core_1_1_full.html">mlx::core::Full</a></div><div class="ttdef"><b>Definition</b> primitives.h:1016</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_full_html_a3dccd3756599d7fd018b2af0093b082c"><div class="ttname"><a href="classmlx_1_1core_1_1_full.html#a3dccd3756599d7fd018b2af0093b082c">mlx::core::Full::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_full_html_aa54f99bb4cba12a551392dea56003872"><div class="ttname"><a href="classmlx_1_1core_1_1_full.html#aa54f99bb4cba12a551392dea56003872">mlx::core::Full::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_full_html_aafcb86a2e41353853ec48c717e0c54d6"><div class="ttname"><a href="classmlx_1_1core_1_1_full.html#aafcb86a2e41353853ec48c717e0c54d6">mlx::core::Full::Full</a></div><div class="ttdeci">Full(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1018</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_html"><div class="ttname"><a href="classmlx_1_1core_1_1_gather.html">mlx::core::Gather</a></div><div class="ttdef"><b>Definition</b> primitives.h:1032</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_html_a5b5f47ceff1d43477c87be5116f261d0"><div class="ttname"><a href="classmlx_1_1core_1_1_gather.html#a5b5f47ceff1d43477c87be5116f261d0">mlx::core::Gather::Gather</a></div><div class="ttdeci">Gather(Stream stream, const std::vector< int > &axes, const std::vector< int > &slice_sizes)</div><div class="ttdef"><b>Definition</b> primitives.h:1034</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_html_a9ed5587f0d04b59a2b9186c0aac21290"><div class="ttname"><a href="classmlx_1_1core_1_1_gather.html#a9ed5587f0d04b59a2b9186c0aac21290">mlx::core::Gather::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_html_aec48ee529cb2449915a7b27a3c4361e8"><div class="ttname"><a href="classmlx_1_1core_1_1_gather.html#aec48ee529cb2449915a7b27a3c4361e8">mlx::core::Gather::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_m_m_html"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_m_m.html">mlx::core::GatherMM</a></div><div class="ttdef"><b>Definition</b> primitives.h:508</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_m_m_html_a62352074a480df0e1f879b0bae425730"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_m_m.html#a62352074a480df0e1f879b0bae425730">mlx::core::GatherMM::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_m_m_html_a76c9f27c57354f6230b43944882e1bda"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_m_m.html#a76c9f27c57354f6230b43944882e1bda">mlx::core::GatherMM::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_m_m_html_ad754c35f460a055cc383ad93a5f72da1"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_m_m.html#ad754c35f460a055cc383ad93a5f72da1">mlx::core::GatherMM::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_m_m_html_afd9bbc08138181b80e2fb86536ff3f2a"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_m_m.html#afd9bbc08138181b80e2fb86536ff3f2a">mlx::core::GatherMM::GatherMM</a></div><div class="ttdeci">GatherMM(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:510</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_q_m_m_html"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_q_m_m.html">mlx::core::GatherQMM</a></div><div class="ttdef"><b>Definition</b> primitives.h:1535</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_q_m_m_html_a60ed2ade7f10dd9c9314913a810f9360"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_q_m_m.html#a60ed2ade7f10dd9c9314913a810f9360">mlx::core::GatherQMM::GatherQMM</a></div><div class="ttdeci">GatherQMM(Stream stream, int group_size, int bits, bool transpose)</div><div class="ttdef"><b>Definition</b> primitives.h:1537</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_q_m_m_html_a86eb048afc95646b2e96ec5493e3d887"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_q_m_m.html#a86eb048afc95646b2e96ec5493e3d887">mlx::core::GatherQMM::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_gather_q_m_m_html_a89aae98bfbdd6563df44ef7d70f0bf8c"><div class="ttname"><a href="classmlx_1_1core_1_1_gather_q_m_m.html#a89aae98bfbdd6563df44ef7d70f0bf8c">mlx::core::GatherQMM::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_equal_html"><div class="ttname"><a href="classmlx_1_1core_1_1_greater_equal.html">mlx::core::GreaterEqual</a></div><div class="ttdef"><b>Definition</b> primitives.h:1071</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_equal_html_a15469125b9bea89b64bfeac01590c075"><div class="ttname"><a href="classmlx_1_1core_1_1_greater_equal.html#a15469125b9bea89b64bfeac01590c075">mlx::core::GreaterEqual::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_equal_html_a19a3c49d5a9b40e17da0e56ef6908527"><div class="ttname"><a href="classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527">mlx::core::GreaterEqual::GreaterEqual</a></div><div class="ttdeci">GreaterEqual(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1073</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_equal_html_ac246263b4548126c3d4ab7e392575d24"><div class="ttname"><a href="classmlx_1_1core_1_1_greater_equal.html#ac246263b4548126c3d4ab7e392575d24">mlx::core::GreaterEqual::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_html"><div class="ttname"><a href="classmlx_1_1core_1_1_greater.html">mlx::core::Greater</a></div><div class="ttdef"><b>Definition</b> primitives.h:1054</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_html_a1d5992a66c020cd97a70e8e3d8cd1a1b"><div class="ttname"><a href="classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b">mlx::core::Greater::Greater</a></div><div class="ttdeci">Greater(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1056</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_html_abe1c03f311d0e0b610f3392a6566f2ae"><div class="ttname"><a href="classmlx_1_1core_1_1_greater.html#abe1c03f311d0e0b610f3392a6566f2ae">mlx::core::Greater::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_greater_html_ae8957cccf4c924d941f57a1bb751c878"><div class="ttname"><a href="classmlx_1_1core_1_1_greater.html#ae8957cccf4c924d941f57a1bb751c878">mlx::core::Greater::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_hadamard_html"><div class="ttname"><a href="classmlx_1_1core_1_1_hadamard.html">mlx::core::Hadamard</a></div><div class="ttdef"><b>Definition</b> primitives.h:1088</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_hadamard_html_a2470feb690f5463138490763c38b5733"><div class="ttname"><a href="classmlx_1_1core_1_1_hadamard.html#a2470feb690f5463138490763c38b5733">mlx::core::Hadamard::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_hadamard_html_ab27d6a9df42b3aab41ace3073a4c880d"><div class="ttname"><a href="classmlx_1_1core_1_1_hadamard.html#ab27d6a9df42b3aab41ace3073a4c880d">mlx::core::Hadamard::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_hadamard_html_abe4a0ed820b126940beec519d4239923"><div class="ttname"><a href="classmlx_1_1core_1_1_hadamard.html#abe4a0ed820b126940beec519d4239923">mlx::core::Hadamard::Hadamard</a></div><div class="ttdeci">Hadamard(Stream stream, float scale)</div><div class="ttdef"><b>Definition</b> primitives.h:1090</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_imag_html"><div class="ttname"><a href="classmlx_1_1core_1_1_imag.html">mlx::core::Imag</a></div><div class="ttdef"><b>Definition</b> primitives.h:1109</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_imag_html_a17d1f1f9f8528668fcdf39b636720829"><div class="ttname"><a href="classmlx_1_1core_1_1_imag.html#a17d1f1f9f8528668fcdf39b636720829">mlx::core::Imag::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_imag_html_a247a4d059b0a99678c6be8c15e42c1e6"><div class="ttname"><a href="classmlx_1_1core_1_1_imag.html#a247a4d059b0a99678c6be8c15e42c1e6">mlx::core::Imag::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_imag_html_a284b7de34a316110fdc98e7b753372b2"><div class="ttname"><a href="classmlx_1_1core_1_1_imag.html#a284b7de34a316110fdc98e7b753372b2">mlx::core::Imag::Imag</a></div><div class="ttdeci">Imag(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1111</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_inverse_html"><div class="ttname"><a href="classmlx_1_1core_1_1_inverse.html">mlx::core::Inverse</a></div><div class="ttdef"><b>Definition</b> primitives.h:2166</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_inverse_html_a086fbbc947ad232e01686ad063a78ed2"><div class="ttname"><a href="classmlx_1_1core_1_1_inverse.html#a086fbbc947ad232e01686ad063a78ed2">mlx::core::Inverse::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &output) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_inverse_html_a71467681e523abb725724490bfeb76ad"><div class="ttname"><a href="classmlx_1_1core_1_1_inverse.html#a71467681e523abb725724490bfeb76ad">mlx::core::Inverse::Inverse</a></div><div class="ttdeci">Inverse(Stream stream, bool tri, bool upper)</div><div class="ttdef"><b>Definition</b> primitives.h:2168</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_inverse_html_aeb1d8dc9bc4052a616023f65b3c7bb81"><div class="ttname"><a href="classmlx_1_1core_1_1_inverse.html#aeb1d8dc9bc4052a616023f65b3c7bb81">mlx::core::Inverse::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &output) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_equal_html"><div class="ttname"><a href="classmlx_1_1core_1_1_less_equal.html">mlx::core::LessEqual</a></div><div class="ttdef"><b>Definition</b> primitives.h:1140</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_equal_html_a52492a43224d47e7851beec646c27bbc"><div class="ttname"><a href="classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc">mlx::core::LessEqual::LessEqual</a></div><div class="ttdeci">LessEqual(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1142</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_equal_html_a55d1352b0e97841a92503bc57c19ed16"><div class="ttname"><a href="classmlx_1_1core_1_1_less_equal.html#a55d1352b0e97841a92503bc57c19ed16">mlx::core::LessEqual::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_equal_html_acf035a82b11e6f63742143ea540fedac"><div class="ttname"><a href="classmlx_1_1core_1_1_less_equal.html#acf035a82b11e6f63742143ea540fedac">mlx::core::LessEqual::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_html"><div class="ttname"><a href="classmlx_1_1core_1_1_less.html">mlx::core::Less</a></div><div class="ttdef"><b>Definition</b> primitives.h:1123</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_html_a32624124ffece066f496b3299056bcef"><div class="ttname"><a href="classmlx_1_1core_1_1_less.html#a32624124ffece066f496b3299056bcef">mlx::core::Less::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_html_a353335ce06ddbe8498d86d129c835917"><div class="ttname"><a href="classmlx_1_1core_1_1_less.html#a353335ce06ddbe8498d86d129c835917">mlx::core::Less::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_less_html_aa55c5cfbab0ac30e1b72c080fe9525d7"><div class="ttname"><a href="classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7">mlx::core::Less::Less</a></div><div class="ttdeci">Less(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1125</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_load_html"><div class="ttname"><a href="classmlx_1_1core_1_1_load.html">mlx::core::Load</a></div><div class="ttdef"><b>Definition</b> primitives.h:1157</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_load_html_a06933e887ea94a4d01d81195c5e07a3d"><div class="ttname"><a href="classmlx_1_1core_1_1_load.html#a06933e887ea94a4d01d81195c5e07a3d">mlx::core::Load::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_load_html_a3aa8a537cd90bab048df47dca1ed526a"><div class="ttname"><a href="classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a">mlx::core::Load::Load</a></div><div class="ttdeci">Load(Stream stream, std::shared_ptr< io::Reader > reader, size_t offset, bool swap_endianness=false)</div><div class="ttdef"><b>Definition</b> primitives.h:1159</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_load_html_ada026ac30566f3109d8182e35d307c0a"><div class="ttname"><a href="classmlx_1_1core_1_1_load.html#ada026ac30566f3109d8182e35d307c0a">mlx::core::Load::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log1p_html"><div class="ttname"><a href="classmlx_1_1core_1_1_log1p.html">mlx::core::Log1p</a></div><div class="ttdef"><b>Definition</b> primitives.h:1223</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log1p_html_a1b97decae7338d46874e736c95fa7431"><div class="ttname"><a href="classmlx_1_1core_1_1_log1p.html#a1b97decae7338d46874e736c95fa7431">mlx::core::Log1p::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log1p_html_a8192e5438de99c4cda056987935cba23"><div class="ttname"><a href="classmlx_1_1core_1_1_log1p.html#a8192e5438de99c4cda056987935cba23">mlx::core::Log1p::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log1p_html_ab0d6eb90c6f98775fce56f3446ff127a"><div class="ttname"><a href="classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a">mlx::core::Log1p::Log1p</a></div><div class="ttdeci">Log1p(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1225</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_add_exp_html"><div class="ttname"><a href="classmlx_1_1core_1_1_log_add_exp.html">mlx::core::LogAddExp</a></div><div class="ttdef"><b>Definition</b> primitives.h:1290</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_add_exp_html_abef17fb590b1a8d356f2a580e45d41f0"><div class="ttname"><a href="classmlx_1_1core_1_1_log_add_exp.html#abef17fb590b1a8d356f2a580e45d41f0">mlx::core::LogAddExp::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_add_exp_html_acace355b62ec00df649f9f99e8f2eb7a"><div class="ttname"><a href="classmlx_1_1core_1_1_log_add_exp.html#acace355b62ec00df649f9f99e8f2eb7a">mlx::core::LogAddExp::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_add_exp_html_ad8938ca90ccf1a3259973fc68902975a"><div class="ttname"><a href="classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a">mlx::core::LogAddExp::LogAddExp</a></div><div class="ttdeci">LogAddExp(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1292</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_html"><div class="ttname"><a href="classmlx_1_1core_1_1_log.html">mlx::core::Log</a></div><div class="ttdef"><b>Definition</b> primitives.h:1189</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_html_a044a23e8b1422984628e1cd5ab506421"><div class="ttname"><a href="classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421">mlx::core::Log::Base</a></div><div class="ttdeci">Base</div><div class="ttdef"><b>Definition</b> primitives.h:1191</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_html_a663e54790c60b56eb0ff09f4f6635fb9"><div class="ttname"><a href="classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9">mlx::core::Log::Log</a></div><div class="ttdeci">Log(Stream stream, Base base)</div><div class="ttdef"><b>Definition</b> primitives.h:1193</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_html_aaaa49e9455f3a197bc319646b5ca6390"><div class="ttname"><a href="classmlx_1_1core_1_1_log.html#aaaa49e9455f3a197bc319646b5ca6390">mlx::core::Log::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_log_html_aadc7bb4cb24f3ecbbb9ed54a699ab74f"><div class="ttname"><a href="classmlx_1_1core_1_1_log.html#aadc7bb4cb24f3ecbbb9ed54a699ab74f">mlx::core::Log::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_and_html"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_and.html">mlx::core::LogicalAnd</a></div><div class="ttdef"><b>Definition</b> primitives.h:1256</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_and_html_a132b2eedaa3978de5a5350da3c2ca40f"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_and.html#a132b2eedaa3978de5a5350da3c2ca40f">mlx::core::LogicalAnd::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_and_html_aaf2cab8ffcf6606b8babfef60fc06fb3"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3">mlx::core::LogicalAnd::LogicalAnd</a></div><div class="ttdeci">LogicalAnd(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1258</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_and_html_adbe1c1785af1a8b827289d22b0d170b3"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_and.html#adbe1c1785af1a8b827289d22b0d170b3">mlx::core::LogicalAnd::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_not_html"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_not.html">mlx::core::LogicalNot</a></div><div class="ttdef"><b>Definition</b> primitives.h:1239</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_not_html_a1d0d2bc93f935eca6c85ef7bf67f2d6a"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_not.html#a1d0d2bc93f935eca6c85ef7bf67f2d6a">mlx::core::LogicalNot::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_not_html_a6f5850b4c78b83d5e2c0d37437fc79b7"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7">mlx::core::LogicalNot::LogicalNot</a></div><div class="ttdeci">LogicalNot(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1241</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_not_html_acf3f7b3b20ca69533536e0e0a05725b3"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_not.html#acf3f7b3b20ca69533536e0e0a05725b3">mlx::core::LogicalNot::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_or_html"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_or.html">mlx::core::LogicalOr</a></div><div class="ttdef"><b>Definition</b> primitives.h:1273</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_or_html_a13cd4cbf26589287e85aeaaca42d7f62"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_or.html#a13cd4cbf26589287e85aeaaca42d7f62">mlx::core::LogicalOr::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_or_html_a269c22daca1c15ad010bb860bce93918"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918">mlx::core::LogicalOr::LogicalOr</a></div><div class="ttdeci">LogicalOr(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1275</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_logical_or_html_a3be1da328f0f8620de2e4fc1d22a077a"><div class="ttname"><a href="classmlx_1_1core_1_1_logical_or.html#a3be1da328f0f8620de2e4fc1d22a077a">mlx::core::LogicalOr::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_matmul_html"><div class="ttname"><a href="classmlx_1_1core_1_1_matmul.html">mlx::core::Matmul</a></div><div class="ttdef"><b>Definition</b> primitives.h:1307</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_matmul_html_a357a7f57a2a220a91977f810a69413fc"><div class="ttname"><a href="classmlx_1_1core_1_1_matmul.html#a357a7f57a2a220a91977f810a69413fc">mlx::core::Matmul::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_matmul_html_a524136cca481598ea20894d85ca66bb0"><div class="ttname"><a href="classmlx_1_1core_1_1_matmul.html#a524136cca481598ea20894d85ca66bb0">mlx::core::Matmul::vjp</a></div><div class="ttdeci">std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_matmul_html_a8707a4e9b75c769e8f1dbca15c6a1ae7"><div class="ttname"><a href="classmlx_1_1core_1_1_matmul.html#a8707a4e9b75c769e8f1dbca15c6a1ae7">mlx::core::Matmul::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_matmul_html_adef92f30ab35e540ccb316ea6b94e6f7"><div class="ttname"><a href="classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7">mlx::core::Matmul::Matmul</a></div><div class="ttdeci">Matmul(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1309</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_maximum_html"><div class="ttname"><a href="classmlx_1_1core_1_1_maximum.html">mlx::core::Maximum</a></div><div class="ttdef"><b>Definition</b> primitives.h:1325</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_maximum_html_a28389307e385efe1b2955b86b115e816"><div class="ttname"><a href="classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816">mlx::core::Maximum::Maximum</a></div><div class="ttdeci">Maximum(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1327</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_maximum_html_a62b38fbe5f96db58c2b60165ac4eadcf"><div class="ttname"><a href="classmlx_1_1core_1_1_maximum.html#a62b38fbe5f96db58c2b60165ac4eadcf">mlx::core::Maximum::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_maximum_html_ade0f721b10a6b3a12bdadd34c48f72a7"><div class="ttname"><a href="classmlx_1_1core_1_1_maximum.html#ade0f721b10a6b3a12bdadd34c48f72a7">mlx::core::Maximum::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_minimum_html"><div class="ttname"><a href="classmlx_1_1core_1_1_minimum.html">mlx::core::Minimum</a></div><div class="ttdef"><b>Definition</b> primitives.h:1342</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_minimum_html_a6b93f493ee87089943a8085fe59dfc6e"><div class="ttname"><a href="classmlx_1_1core_1_1_minimum.html#a6b93f493ee87089943a8085fe59dfc6e">mlx::core::Minimum::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_minimum_html_aadc68afa0afbe2103f19d161f5e0a2ba"><div class="ttname"><a href="classmlx_1_1core_1_1_minimum.html#aadc68afa0afbe2103f19d161f5e0a2ba">mlx::core::Minimum::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_minimum_html_ab0f2ce17108df44b82cff68886b0f6f5"><div class="ttname"><a href="classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5">mlx::core::Minimum::Minimum</a></div><div class="ttdeci">Minimum(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1344</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_multiply_html"><div class="ttname"><a href="classmlx_1_1core_1_1_multiply.html">mlx::core::Multiply</a></div><div class="ttdef"><b>Definition</b> primitives.h:1359</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_multiply_html_a624fce06c047cdc4dfdbdcaaddb25f34"><div class="ttname"><a href="classmlx_1_1core_1_1_multiply.html#a624fce06c047cdc4dfdbdcaaddb25f34">mlx::core::Multiply::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_multiply_html_a634fcb4e981d8d3f4d94252caf25bee0"><div class="ttname"><a href="classmlx_1_1core_1_1_multiply.html#a634fcb4e981d8d3f4d94252caf25bee0">mlx::core::Multiply::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_multiply_html_aca5c50f900321f3eb4d6fbcbc225c00c"><div class="ttname"><a href="classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c">mlx::core::Multiply::Multiply</a></div><div class="ttdeci">Multiply(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1361</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_negative_html"><div class="ttname"><a href="classmlx_1_1core_1_1_negative.html">mlx::core::Negative</a></div><div class="ttdef"><b>Definition</b> primitives.h:1376</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_negative_html_a97f1b316eace0c6d9e576d766940c75b"><div class="ttname"><a href="classmlx_1_1core_1_1_negative.html#a97f1b316eace0c6d9e576d766940c75b">mlx::core::Negative::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_negative_html_aa3b73395d9fa5b7215dca488bc0d3c70"><div class="ttname"><a href="classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70">mlx::core::Negative::Negative</a></div><div class="ttdeci">Negative(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1378</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_negative_html_af43553dc418c8ebe75fa9cdcba103c3b"><div class="ttname"><a href="classmlx_1_1core_1_1_negative.html#af43553dc418c8ebe75fa9cdcba103c3b">mlx::core::Negative::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_not_equal_html"><div class="ttname"><a href="classmlx_1_1core_1_1_not_equal.html">mlx::core::NotEqual</a></div><div class="ttdef"><b>Definition</b> primitives.h:1393</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_not_equal_html_a61179747e34e203150e9c660dfddb5f2"><div class="ttname"><a href="classmlx_1_1core_1_1_not_equal.html#a61179747e34e203150e9c660dfddb5f2">mlx::core::NotEqual::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_not_equal_html_a8f95f8b5873850b875b1641df8196047"><div class="ttname"><a href="classmlx_1_1core_1_1_not_equal.html#a8f95f8b5873850b875b1641df8196047">mlx::core::NotEqual::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_not_equal_html_ac568397bd17b5d9f25ad1a0ebadedbb9"><div class="ttname"><a href="classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9">mlx::core::NotEqual::NotEqual</a></div><div class="ttdeci">NotEqual(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1395</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_number_of_elements_html"><div class="ttname"><a href="classmlx_1_1core_1_1_number_of_elements.html">mlx::core::NumberOfElements</a></div><div class="ttdef"><b>Definition</b> primitives.h:1410</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_number_of_elements_html_a2c98c42915fb2bfe12f5c99ea553eff5"><div class="ttname"><a href="classmlx_1_1core_1_1_number_of_elements.html#a2c98c42915fb2bfe12f5c99ea553eff5">mlx::core::NumberOfElements::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_number_of_elements_html_ac64d7c40ae29d687f8b7d2fa33e13b06"><div class="ttname"><a href="classmlx_1_1core_1_1_number_of_elements.html#ac64d7c40ae29d687f8b7d2fa33e13b06">mlx::core::NumberOfElements::NumberOfElements</a></div><div class="ttdeci">NumberOfElements(Stream stream, std::vector< int > axes, bool inverted, Dtype dtype)</div><div class="ttdef"><b>Definition</b> primitives.h:1412</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_number_of_elements_html_acc328321cf5300874ee884367cbede3f"><div class="ttname"><a href="classmlx_1_1core_1_1_number_of_elements.html#acc328321cf5300874ee884367cbede3f">mlx::core::NumberOfElements::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_pad_html"><div class="ttname"><a href="classmlx_1_1core_1_1_pad.html">mlx::core::Pad</a></div><div class="ttdef"><b>Definition</b> primitives.h:1441</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_pad_html_aaf82dd163cd536fbf97304f8b29080cb"><div class="ttname"><a href="classmlx_1_1core_1_1_pad.html#aaf82dd163cd536fbf97304f8b29080cb">mlx::core::Pad::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_pad_html_ad03da2c40b1e1f2fdf2649d00fa4ab43"><div class="ttname"><a href="classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43">mlx::core::Pad::Pad</a></div><div class="ttdeci">Pad(Stream stream, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size)</div><div class="ttdef"><b>Definition</b> primitives.h:1443</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_pad_html_aefd4d3a5bd8b6b35b266c9e558ada153"><div class="ttname"><a href="classmlx_1_1core_1_1_pad.html#aefd4d3a5bd8b6b35b266c9e558ada153">mlx::core::Pad::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_partition_html"><div class="ttname"><a href="classmlx_1_1core_1_1_partition.html">mlx::core::Partition</a></div><div class="ttdef"><b>Definition</b> primitives.h:1469</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_partition_html_a784596ab567f9f3cb4fe1a69466523d8"><div class="ttname"><a href="classmlx_1_1core_1_1_partition.html#a784596ab567f9f3cb4fe1a69466523d8">mlx::core::Partition::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_partition_html_a7b82ca3895b6654308fac566b277ac0d"><div class="ttname"><a href="classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d">mlx::core::Partition::Partition</a></div><div class="ttdeci">Partition(Stream stream, int kth, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:1471</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_partition_html_a8eca1be21ae9ccfda46e6f3e85f506ef"><div class="ttname"><a href="classmlx_1_1core_1_1_partition.html#a8eca1be21ae9ccfda46e6f3e85f506ef">mlx::core::Partition::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_power_html"><div class="ttname"><a href="classmlx_1_1core_1_1_power.html">mlx::core::Power</a></div><div class="ttdef"><b>Definition</b> primitives.h:1490</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_power_html_a6783da16fb6ff393aaa57737f1973206"><div class="ttname"><a href="classmlx_1_1core_1_1_power.html#a6783da16fb6ff393aaa57737f1973206">mlx::core::Power::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_power_html_a7bc6c64179b7a2aef56fe1dafb6459b2"><div class="ttname"><a href="classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2">mlx::core::Power::Power</a></div><div class="ttdeci">Power(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1492</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_power_html_a80577d4c0853c24027777c90a1ec7e11"><div class="ttname"><a href="classmlx_1_1core_1_1_power.html#a80577d4c0853c24027777c90a1ec7e11">mlx::core::Power::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html">mlx::core::Primitive</a></div><div class="ttdef"><b>Definition</b> primitives.h:48</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a1596dc50b910538eae14878e98f07575"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a1596dc50b910538eae14878e98f07575">mlx::core::Primitive::eval_cpu</a></div><div class="ttdeci">virtual void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a1dcb6807326eeab62474c6a0e3836d42"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a1dcb6807326eeab62474c6a0e3836d42">mlx::core::Primitive::vjp</a></div><div class="ttdeci">virtual std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)</div><div class="ttdoc">The vector-Jacobian product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a29f70eb2d3b7e6c5fe52779c03f03777"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777">mlx::core::Primitive::~Primitive</a></div><div class="ttdeci">virtual ~Primitive()=default</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a3349f745fae50ca7627f79a731a19e32"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a3349f745fae50ca7627f79a731a19e32">mlx::core::Primitive::Primitive</a></div><div class="ttdeci">Primitive(const Primitive &other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a342da891b9882bdee9a0e0c1ac826eda"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a342da891b9882bdee9a0e0c1ac826eda">mlx::core::Primitive::Primitive</a></div><div class="ttdeci">Primitive(Primitive &&other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a46e6257397a662528f9f831842ac456a"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a">mlx::core::Primitive::stream</a></div><div class="ttdeci">const Stream & stream()</div><div class="ttdoc">The stream the primitive will run on.</div><div class="ttdef"><b>Definition</b> primitives.h:58</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a50bbddd43e1ba0cf5f127cd7aa756a9e"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a50bbddd43e1ba0cf5f127cd7aa756a9e">mlx::core::Primitive::operator=</a></div><div class="ttdeci">Primitive & operator=(Primitive &&other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a6140a502af4c2bbbc776ab26e9afebcd"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a6140a502af4c2bbbc776ab26e9afebcd">mlx::core::Primitive::is_equivalent</a></div><div class="ttdeci">virtual bool is_equivalent(const Primitive &other) const</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:107</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a6b1be7ea92f3a7bb19875c70259dad6b"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a6b1be7ea92f3a7bb19875c70259dad6b">mlx::core::Primitive::operator=</a></div><div class="ttdeci">Primitive & operator=(const Primitive &other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a8849dc20991398f6f9a24d6785673853"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a8849dc20991398f6f9a24d6785673853">mlx::core::Primitive::output_shapes</a></div><div class="ttdeci">virtual std::vector< std::vector< int > > output_shapes(const std::vector< array > &inputs)</div><div class="ttdoc">Get the output shapes of the primitive.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a8ae61e3289c4134232a69295268f8261"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261">mlx::core::Primitive::device</a></div><div class="ttdeci">const Device & device()</div><div class="ttdoc">The device the primitive will run on.</div><div class="ttdef"><b>Definition</b> primitives.h:53</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_a9fecf38f53da08ba1947543c2b3158c2"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#a9fecf38f53da08ba1947543c2b3158c2">mlx::core::Primitive::jvp</a></div><div class="ttdeci">virtual std::vector< array > jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)</div><div class="ttdoc">The Jacobian-vector product.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_ac632b9619dd7a6a0f177bd36202e8103"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#ac632b9619dd7a6a0f177bd36202e8103">mlx::core::Primitive::vmap</a></div><div class="ttdeci">virtual std::pair< std::vector< array >, std::vector< int > > vmap(const std::vector< array > &inputs, const std::vector< int > &axes)</div><div class="ttdoc">The primitive must know how to vectorize itself across the given axes.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_ad217376dcf5eff691d731566faec2ba2"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#ad217376dcf5eff691d731566faec2ba2">mlx::core::Primitive::eval_gpu</a></div><div class="ttdeci">virtual void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_ae1aff91354ce036596088a3e19474ecb"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb">mlx::core::Primitive::print</a></div><div class="ttdeci">virtual void print(std::ostream &os)=0</div><div class="ttdoc">Print the primitive.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html_afc69f22ee1f6e8a9ecc2c3a8f43b8fdb"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html#afc69f22ee1f6e8a9ecc2c3a8f43b8fdb">mlx::core::Primitive::Primitive</a></div><div class="ttdeci">Primitive(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:50</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_q_r_f_html"><div class="ttname"><a href="classmlx_1_1core_1_1_q_r_f.html">mlx::core::QRF</a></div><div class="ttdef"><b>Definition</b> primitives.h:2133</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_q_r_f_html_a44ed2924dc574c4aeb79b1188b5c3983"><div class="ttname"><a href="classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983">mlx::core::QRF::QRF</a></div><div class="ttdeci">QRF(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2135</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_q_r_f_html_a48493887395d65a27f04de1804d277d2"><div class="ttname"><a href="classmlx_1_1core_1_1_q_r_f.html#a48493887395d65a27f04de1804d277d2">mlx::core::QRF::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_q_r_f_html_ae5fa3482192f4713605cd07e7fc1c6c9"><div class="ttname"><a href="classmlx_1_1core_1_1_q_r_f.html#ae5fa3482192f4713605cd07e7fc1c6c9">mlx::core::QRF::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_quantized_matmul_html"><div class="ttname"><a href="classmlx_1_1core_1_1_quantized_matmul.html">mlx::core::QuantizedMatmul</a></div><div class="ttdef"><b>Definition</b> primitives.h:1507</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_quantized_matmul_html_a2812ad007d695ed1aaf9cf706fb9c4b3"><div class="ttname"><a href="classmlx_1_1core_1_1_quantized_matmul.html#a2812ad007d695ed1aaf9cf706fb9c4b3">mlx::core::QuantizedMatmul::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_quantized_matmul_html_a5bd164d038d9dc21919f7e0bfdeaa25c"><div class="ttname"><a href="classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c">mlx::core::QuantizedMatmul::QuantizedMatmul</a></div><div class="ttdeci">QuantizedMatmul(Stream stream, int group_size, int bits, bool transpose)</div><div class="ttdef"><b>Definition</b> primitives.h:1509</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_quantized_matmul_html_ab3dfa73b74d8f4f2e9ab4f0eb016b0e3"><div class="ttname"><a href="classmlx_1_1core_1_1_quantized_matmul.html#ab3dfa73b74d8f4f2e9ab4f0eb016b0e3">mlx::core::QuantizedMatmul::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_random_bits_html"><div class="ttname"><a href="classmlx_1_1core_1_1_random_bits.html">mlx::core::RandomBits</a></div><div class="ttdef"><b>Definition</b> primitives.h:1559</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_random_bits_html_a5752d051cd16cf5f8d4754c0a656f0d2"><div class="ttname"><a href="classmlx_1_1core_1_1_random_bits.html#a5752d051cd16cf5f8d4754c0a656f0d2">mlx::core::RandomBits::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_random_bits_html_a578756866665358577418e4cdd94aa3a"><div class="ttname"><a href="classmlx_1_1core_1_1_random_bits.html#a578756866665358577418e4cdd94aa3a">mlx::core::RandomBits::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_random_bits_html_a7dd5ed03f2a4ab45d1d5e8e2b587de6b"><div class="ttname"><a href="classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b">mlx::core::RandomBits::RandomBits</a></div><div class="ttdeci">RandomBits(Stream stream, const std::vector< int > &shape, int width)</div><div class="ttdef"><b>Definition</b> primitives.h:1561</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_real_html"><div class="ttname"><a href="classmlx_1_1core_1_1_real.html">mlx::core::Real</a></div><div class="ttdef"><b>Definition</b> primitives.h:1578</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_real_html_a1e209e88a43bdd1eea43ad0b03f9a7f2"><div class="ttname"><a href="classmlx_1_1core_1_1_real.html#a1e209e88a43bdd1eea43ad0b03f9a7f2">mlx::core::Real::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_real_html_a365d046caac91b521f0f5a5518037934"><div class="ttname"><a href="classmlx_1_1core_1_1_real.html#a365d046caac91b521f0f5a5518037934">mlx::core::Real::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_real_html_acd4480e3f0834d70ff6b5f1ecef17892"><div class="ttname"><a href="classmlx_1_1core_1_1_real.html#acd4480e3f0834d70ff6b5f1ecef17892">mlx::core::Real::Real</a></div><div class="ttdeci">Real(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1580</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html">mlx::core::Reduce</a></div><div class="ttdef"><b>Definition</b> primitives.h:1619</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_a055368c1d036fb953a23ef230e33dcbf"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf">mlx::core::Reduce::Reduce</a></div><div class="ttdeci">Reduce(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)</div><div class="ttdef"><b>Definition</b> primitives.h:1623</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_a0848518b16ae6d4043d6be247bdf31c9"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9">mlx::core::Reduce::ReduceType</a></div><div class="ttdeci">ReduceType</div><div class="ttdef"><b>Definition</b> primitives.h:1621</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93">mlx::core::Reduce::And</a></div><div class="ttdeci">@ And</div><div class="ttdef"><b>Definition</b> primitives.h:1621</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_abe8f3327d617d0dd7438f066497ae08e"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#abe8f3327d617d0dd7438f066497ae08e">mlx::core::Reduce::is_equivalent</a></div><div class="ttdeci">bool is_equivalent(const Primitive &other) const override</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_ae9caaf42edadfe73ea208d98f526890f"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#ae9caaf42edadfe73ea208d98f526890f">mlx::core::Reduce::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reduce_html_aeb8a58b560c0a09ae3a695df7829acfa"><div class="ttname"><a href="classmlx_1_1core_1_1_reduce.html#aeb8a58b560c0a09ae3a695df7829acfa">mlx::core::Reduce::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_remainder_html"><div class="ttname"><a href="classmlx_1_1core_1_1_remainder.html">mlx::core::Remainder</a></div><div class="ttdef"><b>Definition</b> primitives.h:863</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_remainder_html_a4f3eada4a21898af4a77d1d27ce14641"><div class="ttname"><a href="classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641">mlx::core::Remainder::Remainder</a></div><div class="ttdeci">Remainder(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:865</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_remainder_html_a7919ea9b84e42522d51bf0d5a396e161"><div class="ttname"><a href="classmlx_1_1core_1_1_remainder.html#a7919ea9b84e42522d51bf0d5a396e161">mlx::core::Remainder::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_remainder_html_ac6c6c86a0bf02e6e529eb87f6e617ccc"><div class="ttname"><a href="classmlx_1_1core_1_1_remainder.html#ac6c6c86a0bf02e6e529eb87f6e617ccc">mlx::core::Remainder::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reshape_html"><div class="ttname"><a href="classmlx_1_1core_1_1_reshape.html">mlx::core::Reshape</a></div><div class="ttdef"><b>Definition</b> primitives.h:1592</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reshape_html_a658de2c5f710991b48e14b2bd19b229f"><div class="ttname"><a href="classmlx_1_1core_1_1_reshape.html#a658de2c5f710991b48e14b2bd19b229f">mlx::core::Reshape::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reshape_html_aa1e85f28471875750c47351520b56059"><div class="ttname"><a href="classmlx_1_1core_1_1_reshape.html#aa1e85f28471875750c47351520b56059">mlx::core::Reshape::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_reshape_html_aa7c5a6e18d0615ad36102de01929eb26"><div class="ttname"><a href="classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26">mlx::core::Reshape::Reshape</a></div><div class="ttdeci">Reshape(Stream stream, const std::vector< int > &shape)</div><div class="ttdef"><b>Definition</b> primitives.h:1594</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_round_html"><div class="ttname"><a href="classmlx_1_1core_1_1_round.html">mlx::core::Round</a></div><div class="ttdef"><b>Definition</b> primitives.h:1674</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_round_html_a1327a359b2aed91f576145a0e70d1dde"><div class="ttname"><a href="classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde">mlx::core::Round::Round</a></div><div class="ttdeci">Round(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1676</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_round_html_ad066b0944b437f64ab546025efa00007"><div class="ttname"><a href="classmlx_1_1core_1_1_round.html#ad066b0944b437f64ab546025efa00007">mlx::core::Round::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_round_html_af7fe5ff8f3db166c203b4be4b07f13ec"><div class="ttname"><a href="classmlx_1_1core_1_1_round.html#af7fe5ff8f3db166c203b4be4b07f13ec">mlx::core::Round::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_s_v_d_html"><div class="ttname"><a href="classmlx_1_1core_1_1_s_v_d.html">mlx::core::SVD</a></div><div class="ttdef"><b>Definition</b> primitives.h:2149</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_s_v_d_html_a637f5c39fa8b10722c04a066f6c1ada6"><div class="ttname"><a href="classmlx_1_1core_1_1_s_v_d.html#a637f5c39fa8b10722c04a066f6c1ada6">mlx::core::SVD::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_s_v_d_html_a7067b2207f826a25549d571856b94e83"><div class="ttname"><a href="classmlx_1_1core_1_1_s_v_d.html#a7067b2207f826a25549d571856b94e83">mlx::core::SVD::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_s_v_d_html_ae89ff583e34fa894cccb8e7a475ee6d1"><div class="ttname"><a href="classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1">mlx::core::SVD::SVD</a></div><div class="ttdeci">SVD(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2151</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html">mlx::core::Scan</a></div><div class="ttdef"><b>Definition</b> primitives.h:1691</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_a15676d9fd066e935782a923fba3e940b"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#a15676d9fd066e935782a923fba3e940b">mlx::core::Scan::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_a47bf2ec54ead4b8f00f9f188518630f1"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1">mlx::core::Scan::ReduceType</a></div><div class="ttdeci">ReduceType</div><div class="ttdef"><b>Definition</b> primitives.h:1693</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d">mlx::core::Scan::Max</a></div><div class="ttdeci">@ Max</div><div class="ttdef"><b>Definition</b> primitives.h:1693</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_a54445a4d677ca4fe2a58d08eb5223ac6"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#a54445a4d677ca4fe2a58d08eb5223ac6">mlx::core::Scan::is_equivalent</a></div><div class="ttdeci">bool is_equivalent(const Primitive &other) const override</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_ac93e8f9c6771de825d2186ef34fa7087"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#ac93e8f9c6771de825d2186ef34fa7087">mlx::core::Scan::Scan</a></div><div class="ttdeci">Scan(Stream stream, ReduceType reduce_type, int axis, bool reverse, bool inclusive)</div><div class="ttdef"><b>Definition</b> primitives.h:1695</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scan_html_aef22c6fc2b2cb2a907cd8965c7413dde"><div class="ttname"><a href="classmlx_1_1core_1_1_scan.html#aef22c6fc2b2cb2a907cd8965c7413dde">mlx::core::Scan::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html">mlx::core::Scatter</a></div><div class="ttdef"><b>Definition</b> primitives.h:1741</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_a0208172562abdc90472e6eb5f84c987f"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#a0208172562abdc90472e6eb5f84c987f">mlx::core::Scatter::is_equivalent</a></div><div class="ttdeci">bool is_equivalent(const Primitive &other) const override</div><div class="ttdoc">Equivalence check defaults to false unless overridden by the primitive.</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_a614d19af11dc30644b2b4941033b613c"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c">mlx::core::Scatter::ReduceType</a></div><div class="ttdeci">ReduceType</div><div class="ttdef"><b>Definition</b> primitives.h:1743</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16">mlx::core::Scatter::Max</a></div><div class="ttdeci">@ Max</div><div class="ttdef"><b>Definition</b> primitives.h:1743</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_a7623f590f8b77167b5ebb4f14bc9dc97"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#a7623f590f8b77167b5ebb4f14bc9dc97">mlx::core::Scatter::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_aa9d45cbfb27b814517f6016092b30efa"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#aa9d45cbfb27b814517f6016092b30efa">mlx::core::Scatter::print</a></div><div class="ttdeci">void print(std::ostream &os) override</div><div class="ttdoc">Print the primitive.</div><div class="ttdef"><b>Definition</b> primitives.h:1757</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_ab304345db3d8cfeea15e27461ae2e678"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#ab304345db3d8cfeea15e27461ae2e678">mlx::core::Scatter::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_scatter_html_ac9b3eff67389ef9aa820753379ffeaa3"><div class="ttname"><a href="classmlx_1_1core_1_1_scatter.html#ac9b3eff67389ef9aa820753379ffeaa3">mlx::core::Scatter::Scatter</a></div><div class="ttdeci">Scatter(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)</div><div class="ttdef"><b>Definition</b> primitives.h:1745</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_select_html"><div class="ttname"><a href="classmlx_1_1core_1_1_select.html">mlx::core::Select</a></div><div class="ttdef"><b>Definition</b> primitives.h:846</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_select_html_a2a82b6cba4c386b2b87f225a4b08ea9b"><div class="ttname"><a href="classmlx_1_1core_1_1_select.html#a2a82b6cba4c386b2b87f225a4b08ea9b">mlx::core::Select::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_select_html_a6f833fe55dd68ad3726bbf9a8f75eec9"><div class="ttname"><a href="classmlx_1_1core_1_1_select.html#a6f833fe55dd68ad3726bbf9a8f75eec9">mlx::core::Select::Select</a></div><div class="ttdeci">Select(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:848</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_select_html_aa51aa36e0adbd69e0d23d7c7adf88de2"><div class="ttname"><a href="classmlx_1_1core_1_1_select.html#aa51aa36e0adbd69e0d23d7c7adf88de2">mlx::core::Select::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sigmoid_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sigmoid.html">mlx::core::Sigmoid</a></div><div class="ttdef"><b>Definition</b> primitives.h:1784</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sigmoid_html_a47eca99113ec19f0eb60b6a0472c592b"><div class="ttname"><a href="classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b">mlx::core::Sigmoid::Sigmoid</a></div><div class="ttdeci">Sigmoid(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1786</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sigmoid_html_a7a6bd0222d51d7f25f2719a91ccdfeca"><div class="ttname"><a href="classmlx_1_1core_1_1_sigmoid.html#a7a6bd0222d51d7f25f2719a91ccdfeca">mlx::core::Sigmoid::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sigmoid_html_aa930ce05734cca529ebcb8d0ca8e1255"><div class="ttname"><a href="classmlx_1_1core_1_1_sigmoid.html#aa930ce05734cca529ebcb8d0ca8e1255">mlx::core::Sigmoid::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sign_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sign.html">mlx::core::Sign</a></div><div class="ttdef"><b>Definition</b> primitives.h:1801</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sign_html_a7498ec993b66879be30c5d9762c45a97"><div class="ttname"><a href="classmlx_1_1core_1_1_sign.html#a7498ec993b66879be30c5d9762c45a97">mlx::core::Sign::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sign_html_afa2b48b99a194106006b44af69ffda8b"><div class="ttname"><a href="classmlx_1_1core_1_1_sign.html#afa2b48b99a194106006b44af69ffda8b">mlx::core::Sign::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sign_html_afe951e50907bc23a601ec5fa9eae5763"><div class="ttname"><a href="classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763">mlx::core::Sign::Sign</a></div><div class="ttdeci">Sign(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1803</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sin_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sin.html">mlx::core::Sin</a></div><div class="ttdef"><b>Definition</b> primitives.h:1818</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sin_html_a10d1ecc0ca96e79cdf55b57073d126ea"><div class="ttname"><a href="classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea">mlx::core::Sin::Sin</a></div><div class="ttdeci">Sin(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1820</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sin_html_a6b59f1156cf8bdad8d45acd1d825cb5e"><div class="ttname"><a href="classmlx_1_1core_1_1_sin.html#a6b59f1156cf8bdad8d45acd1d825cb5e">mlx::core::Sin::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sin_html_ab34f9cebc2aed55a0b6ab4c991f02eb5"><div class="ttname"><a href="classmlx_1_1core_1_1_sin.html#ab34f9cebc2aed55a0b6ab4c991f02eb5">mlx::core::Sin::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sinh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sinh.html">mlx::core::Sinh</a></div><div class="ttdef"><b>Definition</b> primitives.h:1835</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sinh_html_a4a4f6814d403c2ce5d6c574b0dca3c96"><div class="ttname"><a href="classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96">mlx::core::Sinh::Sinh</a></div><div class="ttdeci">Sinh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1837</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sinh_html_a5a1af2399f166d5b228b5e83a1837c75"><div class="ttname"><a href="classmlx_1_1core_1_1_sinh.html#a5a1af2399f166d5b228b5e83a1837c75">mlx::core::Sinh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sinh_html_ab6d5f6f40d177f6435f6a51c71b939dd"><div class="ttname"><a href="classmlx_1_1core_1_1_sinh.html#ab6d5f6f40d177f6435f6a51c71b939dd">mlx::core::Sinh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_html"><div class="ttname"><a href="classmlx_1_1core_1_1_slice.html">mlx::core::Slice</a></div><div class="ttdef"><b>Definition</b> primitives.h:1852</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_html_a4b13503f5b2f5c6a90d394b020f9b3f2"><div class="ttname"><a href="classmlx_1_1core_1_1_slice.html#a4b13503f5b2f5c6a90d394b020f9b3f2">mlx::core::Slice::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_html_a8a38feb7bb6b72bdeebb83f053e2fd7f"><div class="ttname"><a href="classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f">mlx::core::Slice::Slice</a></div><div class="ttdeci">Slice(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)</div><div class="ttdef"><b>Definition</b> primitives.h:1854</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_html_aa53c21ff06a7c659e889af6b97d10a4a"><div class="ttname"><a href="classmlx_1_1core_1_1_slice.html#aa53c21ff06a7c659e889af6b97d10a4a">mlx::core::Slice::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_update_html"><div class="ttname"><a href="classmlx_1_1core_1_1_slice_update.html">mlx::core::SliceUpdate</a></div><div class="ttdef"><b>Definition</b> primitives.h:1880</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_update_html_aa30a7f22f557c56e1a2b5fcf44488990"><div class="ttname"><a href="classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990">mlx::core::SliceUpdate::SliceUpdate</a></div><div class="ttdeci">SliceUpdate(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)</div><div class="ttdef"><b>Definition</b> primitives.h:1882</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_update_html_aac1a1d122e5697be057d63552141032b"><div class="ttname"><a href="classmlx_1_1core_1_1_slice_update.html#aac1a1d122e5697be057d63552141032b">mlx::core::SliceUpdate::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_slice_update_html_ad82ca0e3ab88a0e086431050deea831b"><div class="ttname"><a href="classmlx_1_1core_1_1_slice_update.html#ad82ca0e3ab88a0e086431050deea831b">mlx::core::SliceUpdate::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_softmax_html"><div class="ttname"><a href="classmlx_1_1core_1_1_softmax.html">mlx::core::Softmax</a></div><div class="ttdef"><b>Definition</b> primitives.h:1910</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_softmax_html_a35dac69ddcc7e2ec0e1a76fe93db85af"><div class="ttname"><a href="classmlx_1_1core_1_1_softmax.html#a35dac69ddcc7e2ec0e1a76fe93db85af">mlx::core::Softmax::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_softmax_html_a4ec686aac4e06f0dfe2cbd6801af40eb"><div class="ttname"><a href="classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb">mlx::core::Softmax::Softmax</a></div><div class="ttdeci">Softmax(Stream stream, bool precise)</div><div class="ttdef"><b>Definition</b> primitives.h:1912</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_softmax_html_ac9ebc2eab1683b682e689ed8f4622b79"><div class="ttname"><a href="classmlx_1_1core_1_1_softmax.html#ac9ebc2eab1683b682e689ed8f4622b79">mlx::core::Softmax::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sort_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sort.html">mlx::core::Sort</a></div><div class="ttdef"><b>Definition</b> primitives.h:1930</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sort_html_a4141c48f0e8670c728663f3722675382"><div class="ttname"><a href="classmlx_1_1core_1_1_sort.html#a4141c48f0e8670c728663f3722675382">mlx::core::Sort::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sort_html_a459769a0241b2620e55bedaba19827cd"><div class="ttname"><a href="classmlx_1_1core_1_1_sort.html#a459769a0241b2620e55bedaba19827cd">mlx::core::Sort::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sort_html_a62943032dbd72e85ceb9b4b7211f4a44"><div class="ttname"><a href="classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44">mlx::core::Sort::Sort</a></div><div class="ttdeci">Sort(Stream stream, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:1932</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_split_html"><div class="ttname"><a href="classmlx_1_1core_1_1_split.html">mlx::core::Split</a></div><div class="ttdef"><b>Definition</b> primitives.h:1950</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_split_html_a78ddda89c4daee73c74cfbc1e44656df"><div class="ttname"><a href="classmlx_1_1core_1_1_split.html#a78ddda89c4daee73c74cfbc1e44656df">mlx::core::Split::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_split_html_a897c746ecfdff5119cc5ae3f20499385"><div class="ttname"><a href="classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385">mlx::core::Split::Split</a></div><div class="ttdeci">Split(Stream stream, const std::vector< int > &indices, int axis)</div><div class="ttdef"><b>Definition</b> primitives.h:1952</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_split_html_aff2889cb9074f0fda53edf8fa40b1fd4"><div class="ttname"><a href="classmlx_1_1core_1_1_split.html#aff2889cb9074f0fda53edf8fa40b1fd4">mlx::core::Split::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sqrt_html"><div class="ttname"><a href="classmlx_1_1core_1_1_sqrt.html">mlx::core::Sqrt</a></div><div class="ttdef"><b>Definition</b> primitives.h:1989</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sqrt_html_a5a64ecc4eef1e30a2963435dca7cefd5"><div class="ttname"><a href="classmlx_1_1core_1_1_sqrt.html#a5a64ecc4eef1e30a2963435dca7cefd5">mlx::core::Sqrt::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sqrt_html_a6682a7c31ca427c9d2c5ddb6a479bf29"><div class="ttname"><a href="classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29">mlx::core::Sqrt::Sqrt</a></div><div class="ttdeci">Sqrt(Stream stream, bool recip=false)</div><div class="ttdef"><b>Definition</b> primitives.h:1991</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_sqrt_html_a6d205e679a593d1ba20206c5c47ba501"><div class="ttname"><a href="classmlx_1_1core_1_1_sqrt.html#a6d205e679a593d1ba20206c5c47ba501">mlx::core::Sqrt::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_square_html"><div class="ttname"><a href="classmlx_1_1core_1_1_square.html">mlx::core::Square</a></div><div class="ttdef"><b>Definition</b> primitives.h:1972</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_square_html_a0ea2a78a5bb52daa4103263bf2f98045"><div class="ttname"><a href="classmlx_1_1core_1_1_square.html#a0ea2a78a5bb52daa4103263bf2f98045">mlx::core::Square::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_square_html_a1f4d327a705950616da63b83c2829e59"><div class="ttname"><a href="classmlx_1_1core_1_1_square.html#a1f4d327a705950616da63b83c2829e59">mlx::core::Square::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_square_html_ab94e28d5c92e6febc1c74e525f730dc4"><div class="ttname"><a href="classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4">mlx::core::Square::Square</a></div><div class="ttdeci">Square(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:1974</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_stop_gradient_html"><div class="ttname"><a href="classmlx_1_1core_1_1_stop_gradient.html">mlx::core::StopGradient</a></div><div class="ttdef"><b>Definition</b> primitives.h:2015</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_stop_gradient_html_a56207714d374b08f60e4d9cdbc7340b2"><div class="ttname"><a href="classmlx_1_1core_1_1_stop_gradient.html#a56207714d374b08f60e4d9cdbc7340b2">mlx::core::StopGradient::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_stop_gradient_html_a907b96f0a1ce608e211d87ccf2b9ca89"><div class="ttname"><a href="classmlx_1_1core_1_1_stop_gradient.html#a907b96f0a1ce608e211d87ccf2b9ca89">mlx::core::StopGradient::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_stop_gradient_html_ac70d1ab819d04e00f76bc25aeebaf84f"><div class="ttname"><a href="classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f">mlx::core::StopGradient::StopGradient</a></div><div class="ttdeci">StopGradient(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2017</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_subtract_html"><div class="ttname"><a href="classmlx_1_1core_1_1_subtract.html">mlx::core::Subtract</a></div><div class="ttdef"><b>Definition</b> primitives.h:2031</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_subtract_html_a47574258b6c95f8ad260c114d6d36a12"><div class="ttname"><a href="classmlx_1_1core_1_1_subtract.html#a47574258b6c95f8ad260c114d6d36a12">mlx::core::Subtract::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_subtract_html_a69021b23daf061764d97fabbc0f4f06c"><div class="ttname"><a href="classmlx_1_1core_1_1_subtract.html#a69021b23daf061764d97fabbc0f4f06c">mlx::core::Subtract::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_subtract_html_a834854757394f8de7082af65bf86ed9c"><div class="ttname"><a href="classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c">mlx::core::Subtract::Subtract</a></div><div class="ttdeci">Subtract(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2033</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tan_html"><div class="ttname"><a href="classmlx_1_1core_1_1_tan.html">mlx::core::Tan</a></div><div class="ttdef"><b>Definition</b> primitives.h:2048</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tan_html_a8dcc9ff660210ccf05134dd95f47de08"><div class="ttname"><a href="classmlx_1_1core_1_1_tan.html#a8dcc9ff660210ccf05134dd95f47de08">mlx::core::Tan::Tan</a></div><div class="ttdeci">Tan(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2050</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tan_html_a9c9a731158fa60eef30067fe0da9f3e9"><div class="ttname"><a href="classmlx_1_1core_1_1_tan.html#a9c9a731158fa60eef30067fe0da9f3e9">mlx::core::Tan::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tan_html_aca7dbb4836507005a2032ac957a04d3f"><div class="ttname"><a href="classmlx_1_1core_1_1_tan.html#aca7dbb4836507005a2032ac957a04d3f">mlx::core::Tan::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tanh_html"><div class="ttname"><a href="classmlx_1_1core_1_1_tanh.html">mlx::core::Tanh</a></div><div class="ttdef"><b>Definition</b> primitives.h:2065</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tanh_html_a48df896599ae93dbce84a5c0f50cf761"><div class="ttname"><a href="classmlx_1_1core_1_1_tanh.html#a48df896599ae93dbce84a5c0f50cf761">mlx::core::Tanh::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tanh_html_ae551297bf573e1802fb831440276dee4"><div class="ttname"><a href="classmlx_1_1core_1_1_tanh.html#ae551297bf573e1802fb831440276dee4">mlx::core::Tanh::Tanh</a></div><div class="ttdeci">Tanh(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2067</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_tanh_html_af7ed4345f622da069e5b0284067923f5"><div class="ttname"><a href="classmlx_1_1core_1_1_tanh.html#af7ed4345f622da069e5b0284067923f5">mlx::core::Tanh::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_transpose_html"><div class="ttname"><a href="classmlx_1_1core_1_1_transpose.html">mlx::core::Transpose</a></div><div class="ttdef"><b>Definition</b> primitives.h:2113</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_transpose_html_a1a9ba023584c61c7ac93d6dce536760a"><div class="ttname"><a href="classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a">mlx::core::Transpose::Transpose</a></div><div class="ttdeci">Transpose(Stream stream, const std::vector< int > &axes)</div><div class="ttdef"><b>Definition</b> primitives.h:2115</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_transpose_html_a1fbcfcca43f9ec06c63a3c14708c30f8"><div class="ttname"><a href="classmlx_1_1core_1_1_transpose.html#a1fbcfcca43f9ec06c63a3c14708c30f8">mlx::core::Transpose::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_transpose_html_a38d25739c08aa594a6775015a1d7d92e"><div class="ttname"><a href="classmlx_1_1core_1_1_transpose.html#a38d25739c08aa594a6775015a1d7d92e">mlx::core::Transpose::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html">mlx::core::UnaryPrimitive</a></div><div class="ttdef"><b>Definition</b> primitives.h:127</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a0a859309a4f192f2679e07f2e4ff4d22"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a0a859309a4f192f2679e07f2e4ff4d22">mlx::core::UnaryPrimitive::operator=</a></div><div class="ttdeci">UnaryPrimitive & operator=(const UnaryPrimitive &other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a189f6d4ed369f82a4b724a29eb056d4e"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a189f6d4ed369f82a4b724a29eb056d4e">mlx::core::UnaryPrimitive::UnaryPrimitive</a></div><div class="ttdeci">UnaryPrimitive(Stream stream)</div><div class="ttdoc">An abstract base class for a primitive with a single output.</div><div class="ttdef"><b>Definition</b> primitives.h:132</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a6b7f80abaf038d53ec6ffbb0dfac6adb"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb">mlx::core::UnaryPrimitive::eval_gpu</a></div><div class="ttdeci">virtual void eval_gpu(const std::vector< array > &inputs, array &output)=0</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a780281fb04e2daf1be630c124bd605e3"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a780281fb04e2daf1be630c124bd605e3">mlx::core::UnaryPrimitive::UnaryPrimitive</a></div><div class="ttdeci">UnaryPrimitive(UnaryPrimitive &&other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a7e8f6f5d6ae0a33f6abc0f5a46e0b132"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132">mlx::core::UnaryPrimitive::eval_cpu</a></div><div class="ttdeci">virtual void eval_cpu(const std::vector< array > &inputs, array &output)=0</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a971fe9ad47f6569118879ce1d0f41447"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a971fe9ad47f6569118879ce1d0f41447">mlx::core::UnaryPrimitive::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdef"><b>Definition</b> primitives.h:142</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_a9935cffc4f246d3d883bc3d26c5163f2"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#a9935cffc4f246d3d883bc3d26c5163f2">mlx::core::UnaryPrimitive::UnaryPrimitive</a></div><div class="ttdeci">UnaryPrimitive(const UnaryPrimitive &other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_aa0ed6e32c36200a3ff9bc592c9b300db"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#aa0ed6e32c36200a3ff9bc592c9b300db">mlx::core::UnaryPrimitive::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override</div><div class="ttdoc">A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...</div><div class="ttdef"><b>Definition</b> primitives.h:137</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_ab90b2ea80f1d914be03cf44def5db5a5"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#ab90b2ea80f1d914be03cf44def5db5a5">mlx::core::UnaryPrimitive::operator=</a></div><div class="ttdeci">UnaryPrimitive & operator=(UnaryPrimitive &&other)=delete</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_unary_primitive_html_ac0677ab99a5ca660ed6ab7902ea364de"><div class="ttname"><a href="classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de">mlx::core::UnaryPrimitive::~UnaryPrimitive</a></div><div class="ttdeci">virtual ~UnaryPrimitive()=default</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_uniform_html"><div class="ttname"><a href="classmlx_1_1core_1_1_uniform.html">mlx::core::Uniform</a></div><div class="ttdef"><b>Definition</b> primitives.h:2082</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_uniform_html_a037a2c96b79b70a64f2b637c9f1a432f"><div class="ttname"><a href="classmlx_1_1core_1_1_uniform.html#a037a2c96b79b70a64f2b637c9f1a432f">mlx::core::Uniform::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_uniform_html_a5f88cbf2495f24f87cefd99aaaebe4d0"><div class="ttname"><a href="classmlx_1_1core_1_1_uniform.html#a5f88cbf2495f24f87cefd99aaaebe4d0">mlx::core::Uniform::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_uniform_html_a626aa1091aa77b4a32c02290106b85e1"><div class="ttname"><a href="classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1">mlx::core::Uniform::Uniform</a></div><div class="ttdeci">Uniform(Stream stream)</div><div class="ttdef"><b>Definition</b> primitives.h:2084</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_view_html"><div class="ttname"><a href="classmlx_1_1core_1_1_view.html">mlx::core::View</a></div><div class="ttdef"><b>Definition</b> primitives.h:2097</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_view_html_a0ad6deb11914a242f10e8039fcb02497"><div class="ttname"><a href="classmlx_1_1core_1_1_view.html#a0ad6deb11914a242f10e8039fcb02497">mlx::core::View::eval_cpu</a></div><div class="ttdeci">void eval_cpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_view_html_ad7eed156c308e9a29a8b41f965ec941e"><div class="ttname"><a href="classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e">mlx::core::View::View</a></div><div class="ttdeci">View(Stream stream, Dtype dtype)</div><div class="ttdef"><b>Definition</b> primitives.h:2099</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1_view_html_add6e12ff1e476fe1db7718b14f21b075"><div class="ttname"><a href="classmlx_1_1core_1_1_view.html#add6e12ff1e476fe1db7718b14f21b075">mlx::core::View::eval_gpu</a></div><div class="ttdeci">void eval_gpu(const std::vector< array > &inputs, array &out) override</div></div>
 | 
						|
<div class="ttc" id="aclassmlx_1_1core_1_1array_html"><div class="ttname"><a href="classmlx_1_1core_1_1array.html">mlx::core::array</a></div><div class="ttdef"><b>Definition</b> array.h:20</div></div>
 | 
						|
<div class="ttc" id="acommon_2binary_8h_html_a70228731d29946574b238d21fb4b360c"><div class="ttname"><a href="common_2binary_8h.html#a70228731d29946574b238d21fb4b360c">op</a></div><div class="ttdeci">Op op</div><div class="ttdef"><b>Definition</b> binary.h:129</div></div>
 | 
						|
<div class="ttc" id="adevice_8h_html"><div class="ttname"><a href="device_8h.html">device.h</a></div></div>
 | 
						|
<div class="ttc" id="agroup__ops_html_ga2a466024f8061febc0a64be557644cb0"><div class="ttname"><a href="group__ops.html#ga2a466024f8061febc0a64be557644cb0">mlx::core::std</a></div><div class="ttdeci">array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})</div><div class="ttdoc">Computes the standard deviation of the elements of an array.</div></div>
 | 
						|
<div class="ttc" id="agroup__ops_html_ga4f3389e5b89e70e862e7d2b40d6c7f78"><div class="ttname"><a href="group__ops.html#ga4f3389e5b89e70e862e7d2b40d6c7f78">mlx::core::tri</a></div><div class="ttdeci">array tri(int n, int m, int k, Dtype type, StreamOrDevice s={})</div></div>
 | 
						|
<div class="ttc" id="agroup__ops_html_gac1869f3b7094869b44fe7ac4ce58638b"><div class="ttname"><a href="group__ops.html#gac1869f3b7094869b44fe7ac4ce58638b">mlx::core::transpose</a></div><div class="ttdeci">array transpose(const array &a, std::vector< int > axes, StreamOrDevice s={})</div><div class="ttdoc">Permutes the dimensions according to the given axes.</div></div>
 | 
						|
<div class="ttc" id="agroup__ops_html_gaf8913cabeb9fb193ba687aaeb2087764"><div class="ttname"><a href="group__ops.html#gaf8913cabeb9fb193ba687aaeb2087764">mlx::core::real</a></div><div class="ttdeci">array real(const array &a, StreamOrDevice s={})</div></div>
 | 
						|
<div class="ttc" id="aio_2load_8h_html"><div class="ttname"><a href="io_2load_8h.html">load.h</a></div></div>
 | 
						|
<div class="ttc" id="anamespacemlx_1_1core_html"><div class="ttname"><a href="namespacemlx_1_1core.html">mlx::core</a></div><div class="ttdef"><b>Definition</b> allocator.h:7</div></div>
 | 
						|
<div class="ttc" id="anamespacemlx_1_1core_html_a179a632200366c223d6ab56d3e032592"><div class="ttname"><a href="namespacemlx_1_1core.html#a179a632200366c223d6ab56d3e032592">mlx::core::jvp</a></div><div class="ttdeci">std::pair< std::vector< array >, std::vector< array > > jvp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)</div><div class="ttdoc">Computes the output and Jacobian-vector product (JVP) of a function.</div></div>
 | 
						|
<div class="ttc" id="anamespacemlx_1_1core_html_a1b33e2c2e3471420490cf0be2de6de18"><div class="ttname"><a href="namespacemlx_1_1core.html#a1b33e2c2e3471420490cf0be2de6de18">mlx::core::vjp</a></div><div class="ttdeci">std::pair< std::vector< array >, std::vector< array > > vjp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)</div><div class="ttdoc">Computes the output and vector-Jacobian product (VJP) of a function.</div></div>
 | 
						|
<div class="ttc" id="anamespacemlx_1_1core_html_a7d6e097d8effed52f4713672e471f299"><div class="ttname"><a href="namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299">mlx::core::eval</a></div><div class="ttdeci">void eval(std::vector< array > outputs)</div></div>
 | 
						|
<div class="ttc" id="anamespacemlx_1_1core_html_ac3caec2fa65375ed4c3bf1206177b84c"><div class="ttname"><a href="namespacemlx_1_1core.html#ac3caec2fa65375ed4c3bf1206177b84c">mlx::core::vmap</a></div><div class="ttdeci">std::function< array(const array &)> vmap(const std::function< array(const array &)> &fun, int in_axis=0, int out_axis=0)</div><div class="ttdoc">Automatically vectorize a unary function over the requested axes.</div></div>
 | 
						|
<div class="ttc" id="aprimitives_8h_html_a0fb9d19207dc4869aca35abfbdf4d70a"><div class="ttname"><a href="primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a">DEFINE_DEFAULT_IS_EQUIVALENT</a></div><div class="ttdeci">#define DEFINE_DEFAULT_IS_EQUIVALENT()</div><div class="ttdef"><b>Definition</b> primitives.h:34</div></div>
 | 
						|
<div class="ttc" id="aprimitives_8h_html_a1d3a37af519e16f6a703b1e9ebd0f592"><div class="ttname"><a href="primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592">DEFINE_PRINT</a></div><div class="ttdeci">#define DEFINE_PRINT(PRIMITIVE)</div><div class="ttdef"><b>Definition</b> primitives.h:29</div></div>
 | 
						|
<div class="ttc" id="aprimitives_8h_html_a649a06267b75e007224ea4ddefedb999"><div class="ttname"><a href="primitives_8h.html#a649a06267b75e007224ea4ddefedb999">DEFINE_INPUT_OUTPUT_SHAPE</a></div><div class="ttdeci">#define DEFINE_INPUT_OUTPUT_SHAPE()</div><div class="ttdef"><b>Definition</b> primitives.h:39</div></div>
 | 
						|
<div class="ttc" id="aprimitives_8h_html_a77abdcb55bc2eb0f9a45edc5ee639bf6"><div class="ttname"><a href="primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6">DEFINE_GRADS</a></div><div class="ttdeci">#define DEFINE_GRADS()</div><div class="ttdef"><b>Definition</b> primitives.h:17</div></div>
 | 
						|
<div class="ttc" id="aprimitives_8h_html_adc0fbd79fe0d1114dc85da4ed99798bd"><div class="ttname"><a href="primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd">DEFINE_VMAP</a></div><div class="ttdeci">#define DEFINE_VMAP()</div><div class="ttdef"><b>Definition</b> primitives.h:12</div></div>
 | 
						|
<div class="ttc" id="astream_8h_html"><div class="ttname"><a href="stream_8h.html">stream.h</a></div></div>
 | 
						|
<div class="ttc" id="astruct_and_html"><div class="ttname"><a href="struct_and.html">And</a></div><div class="ttdef"><b>Definition</b> ops.h:37</div></div>
 | 
						|
<div class="ttc" id="astruct_left_shift_html"><div class="ttname"><a href="struct_left_shift.html">LeftShift</a></div><div class="ttdef"><b>Definition</b> binary_ops.h:270</div></div>
 | 
						|
<div class="ttc" id="astruct_max_html"><div class="ttname"><a href="struct_max.html">Max</a></div><div class="ttdef"><b>Definition</b> ops.h:185</div></div>
 | 
						|
<div class="ttc" id="astruct_min_html"><div class="ttname"><a href="struct_min.html">Min</a></div><div class="ttdef"><b>Definition</b> ops.h:163</div></div>
 | 
						|
<div class="ttc" id="astruct_none_html"><div class="ttname"><a href="struct_none.html">None</a></div><div class="ttdef"><b>Definition</b> ops.h:29</div></div>
 | 
						|
<div class="ttc" id="astruct_or_html"><div class="ttname"><a href="struct_or.html">Or</a></div><div class="ttdef"><b>Definition</b> ops.h:78</div></div>
 | 
						|
<div class="ttc" id="astruct_prod_html"><div class="ttname"><a href="struct_prod.html">Prod</a></div><div class="ttdef"><b>Definition</b> ops.h:141</div></div>
 | 
						|
<div class="ttc" id="astruct_right_shift_html"><div class="ttname"><a href="struct_right_shift.html">RightShift</a></div><div class="ttdef"><b>Definition</b> binary_ops.h:277</div></div>
 | 
						|
<div class="ttc" id="astruct_sum_html"><div class="ttname"><a href="struct_sum.html">Sum</a></div><div class="ttdef"><b>Definition</b> ops.h:119</div></div>
 | 
						|
<div class="ttc" id="astructmlx_1_1core_1_1_device_html"><div class="ttname"><a href="structmlx_1_1core_1_1_device.html">mlx::core::Device</a></div><div class="ttdef"><b>Definition</b> device.h:7</div></div>
 | 
						|
<div class="ttc" id="astructmlx_1_1core_1_1_dtype_html"><div class="ttname"><a href="structmlx_1_1core_1_1_dtype.html">mlx::core::Dtype</a></div><div class="ttdef"><b>Definition</b> dtype.h:13</div></div>
 | 
						|
<div class="ttc" id="astructmlx_1_1core_1_1_stream_html"><div class="ttname"><a href="structmlx_1_1core_1_1_stream.html">mlx::core::Stream</a></div><div class="ttdef"><b>Definition</b> stream.h:9</div></div>
 | 
						|
<div class="ttc" id="astructmlx_1_1core_1_1_stream_html_a406b1b0162287a4162fab1f70e2ff3bb"><div class="ttname"><a href="structmlx_1_1core_1_1_stream.html#a406b1b0162287a4162fab1f70e2ff3bb">mlx::core::Stream::device</a></div><div class="ttdeci">Device device</div><div class="ttdef"><b>Definition</b> stream.h:11</div></div>
 | 
						|
</div><!-- fragment --></div><!-- contents -->
 | 
						|
<!-- start footer part -->
 | 
						|
<hr class="footer"/><address class="footer"><small>
 | 
						|
Generated by <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>
 |