MixedMath - explorations in math and programinghttps://davidlowryduda.comDavid's personal blog.en-usCopyright David Lowry-Duda (2022) - All Rights Reserved.admin@davidlowryduda.comadmin@davidlowryduda.comMon, 07 Jul 2025 20:19:18 +0000Mon, 07 Jul 2025 20:19:18 +0000mixedmathapp/generate_rss.py v0.1https://cyber.harvard.edu/rss/rss.htmlhttps://davidlowryduda.com/static/images/favicon-32x32.pngMixedMathhttps://davidlowryduda.comSlides from a talk at LuCaNThttps://davidlowryduda.com/lucant2025-slidesDavid Lowry-Duda<p>I'm giving a talk today at LuCaNT on my work <a href="https://davidlowryduda.com/research/#LD25">LD25</a>, <em>Computing a database of rigorous Maass forms</em>. My slides are <a href="/wp-content/uploads/2025/07/lucant2025_maassdb.pdf">here</a>.</p> <p>This is closely related to many other posts I've made:</p> <ul> <li><a href="https://davidlowryduda.com/maass-forms-now-in-lmfdb/">The announcement post for Maass forms in the LMFDB</a></li> <li><a href="https://davidlowryduda.com/slides-simons-2025/">Talk from January 2025</a></li> <li><a href="https://davidlowryduda.com/slides-from-concordia-2023/">Talk from February 2023</a></li> <li><a href="https://davidlowryduda.com/talk-computing-and-verifying-maass-forms/">Talk from March 2022</a></li> <li><a href="https://davidlowryduda.com/slides-from-a-talk-on-computing-maass-forms/">Talk from February 2021</a></li> </ul> <p>There are other areas on the cusp of being computed!<span class="aside">And miles to go before I sleep.</span></p>https://davidlowryduda.com/lucant2025-slidesMon, 07 Jul 2025 03:14:15 +0000Writing a README for research codehttps://davidlowryduda.com/readme-for-research-codeDavid Lowry-Duda<p>Academic research code has a (well-deserved) reputation for being a mess. This is especially true in my area of pure math, as academia simply gives no weight or value to code quality of programming best practices.</p> <p>Thinking about it more, I realize that I would like some more structure to the READMEs that I see in academic code. This is what I'm going with now.<sup>1</sup> <span class="aside"><sup>1</sup>I write this here also so that I can refer back to it next time I'm writing a README for some math code.</span></p> <ol> <li>Broad Description</li> <li>Give a title</li> <li>State a one-to-two sentence brief description, the elevator pitch.</li> <li>Link to the associated paper(s).</li> <li>Optionally, give keywords or MSC2020 codes for searchability.</li> <li>Optionally, briefly describe the results or highlights of the paper, maybe including graphics.</li> <li>Describe code requirements and installation/setup/running requirements. Something equivalent to a <code>requirements.txt</code> file would be ideal, but is not always possible.</li> </ol> <p>Also consider describing hardware necessary or used, if appropriate.</p> <p>If additional configuration is required, note it here. 4. Describe the code structure and usage. How does one run the code?</p> <p>If there are particular data formats for input or output, describe them as necessary. 5. Data (if appropriate).</p> <p>If there is an associated dataset, describe it. Link to it if it's external. Give generation code if it's synthetic of computational.</p> <p>Also describe the license for the data! 6. Give reproducibility notes. Are there any tips or tricks for getting things to run as expected? Is there an art, or is it straightforward? 7. If there are additional comments, give them.</p> <p>I like to clarify that the repository is not accepting contributors, but the authors might appreciate collaborations. 8. State the code license. 9. Optionally, acknowledge funding sources.</p> <p>I have not always done this in the past. But I should have!</p>https://davidlowryduda.com/readme-for-research-codeMon, 30 Jun 2025 03:14:15 +0000Normalizations of murmurationshttps://davidlowryduda.com/normalizations-murmurationsDavid Lowry-Duda<p>I've posted a <a href="https://arxiv.org/pdf/2506.01640">short note</a> to the arxiv called "On Murmurations and Trace Formulas". (<a data-knowl="/static/knowls/LD25c.html">LD25c Knowl</a>) This is an expanded version of my talk <a href="https://davidlowryduda.com/scgp-2024/">On Murmurations and Trace Formulas</a> that I gave at the Simons Center for Geometry and Physics workshop on murmurations last November. The organizers of that workshop gathered several of the talks together for a special issue of the International Journal of Data Science in the Mathematical Sciences.</p> <p>Several of my coauthors and collaborators were giving talks at that workshop, prompting me to give more of a speculative talk looking forwards instead of the standard talk describing some past work. I have given "typical talks" on my work in murmurations before. See <a href="https://davidlowryduda.com/lsu-2024/">my talk at LSU in November 2024</a> for my most recent.</p> <p>Here, I want to further discuss an aspect that I think is commonly confusing in talks and the literature: the issue of normalization.</p> <h2>Algebraic and Analytic Normalization</h2> <p>The first murmurations observed were of elliptic curves, noting oscillatory behavior in averages of $a_E(p)$ across elliptic curves of conductor $\approx N$ against primes $p$, depending on the rank of the curve.</p> <p>More precisely, for any conductor $N$, the average value of $a_E(p)$ across elliptic curves of ranks in $[N, 2N]$ and rank $\equiv \delta \bmod 2$ is predictable and (seems to) tend towards a well defined curve, or "murmuration function", $M_\delta(p/N)$. Further, it appears that $M_0(p/N) = - M_1(p/N)$.</p> <p>This leads to the patterns in the frequently-cited murmuration plot.<span class="aside">This is made to follow the plot in <em>Murmurations of elliptic curves</em>, <a href="https://arxiv.org/pdf/2204.10140">https://arxiv.org/pdf/2204.10140</a>, by He, Lee, Oliver, and Pozdnyakov.</span></p> <figure class="center"> <img src="/wp-content/uploads/2025/06/original_murmuration.png" width="100%" maxwidth="800"/> </figure> <p>Implicitliy, the coefficients of the elliptic curves are normalized in the standard "algebraic" way. That is, the coefficients $a_E(p)$ are the traces of Frobenius, are integers, and vary between $-2\sqrt{p}$ and $2 \sqrt{p}$.</p> <p>This normalization is natural with elliptic curves, but it appears that murmuration phenomena appear for many families of $L$-functions, which have a different natural normalization. Namely, it is naturally to normalize $L$-functions to have functional equations of the shape $s \mapsto 1 - s$. For elliptic curves, if we write the algebraic normalization as $a_E(p)$ and the analytic normalization as $\lambda_E(p)$, then these are related by $a_E(p) = \lambda_E(p) \sqrt{p}$.</p> <p>When looking for murmurations in other families of $L$-functions, how should one normalize the $L$-functions?</p> <h2>Why do $a_E(p)$ values work so well?</h2> <p>Let's examine the elliptic curve case more closely. The coefficient $a_E(p)$ looks like a random number from $-2 \sqrt{p}$ to $2 \sqrt{p}$. It's not uniformly random. Instead these satisfy Sato-Tate and follow a circle-distribution. But nonetheless, when varying across families, the coefficients vary randomly in $[-2\sqrt{p}, 2\sqrt{p}]$. Adding $a_E(p)$ across several coefficients looks roughly like adding many numbers of size $\sqrt{p}$ together. When comparing across different conductor ranges, one looks at fixed ratios $p/N = c$, or equivalently at $p = cN$. Here, this means that we're adding many numbers of size $\sqrt{N}$ together.</p> <p>But we're not summing absolute values. As the signs are fluctuating randomly from one curve to the next, the sum should experience some cancellation.<sup>1</sup> <span class="aside"><sup>1</sup>We'll return to how much cancellation in a moment.</span> The effect is that that the extra coefficient size mostly counteracts the sign-change cancellation, giving a well-behaved overall sum.</p> <h2>Is $a_E(p)$ normalization necessary?</h2> <p>Having said that, what if we just don't use the algebraic normalization? What if we use only the analytic normalization? On the same data as the original murmuration plot, we get the following plot.</p> <figure class="center"> <img src="/wp-content/uploads/2025/06/norm_murmuration.png" width="100%" maxwidth="800"/> </figure> <p>This clearly shows murmuration phenomena and has the same broad structure &mdash; with the one notable exception that the overall murmuration is decreasing in magnitude.</p> <p>In my <a href="https://davidlowryduda.com/research/#BBLLD23">weight $k$ modular form murmuration</a> paper and <a href="https://davidlowryduda.com/research/#BLLDSHZ24">Maass form murmuration</a> papers, we used the analytic normalization and correspondingly proved murmuration functions that were decaying. Nonetheless, all the data is there.</p> <p>In short, I think there is an overemphasis on normalization.</p> <h2>Is the algebraic normalization the "best"?</h2> <p>Let's look closer at the sums. Suppose there are $X$ curves $E$ with conductor between $N$ and $2N$. It is conjectured<sup>2</sup> <span class="aside"><sup>2</sup>See <em>Families of elliptic curves ordered by conductor</em> by Shankar, Shankar, and Wang, <a href="https://arxiv.org/pdf/1904.13063">https://arxiv.org/pdf/1904.13063</a>, and the references there for more.</span> that $X \sim c N^{5/6}$ for an explicit constant $c$. We assume this below.</p> <p>Then we look at \begin{equation*} \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} a_E(p) \end{equation*} The central limit theorem suggests that the size of this sum should behave like \begin{equation*} \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} a_E(p) \asymp \sqrt{p} X. \end{equation*} Again, with murmurations we look at a fixed ratio $p/N = k$, or rather that $p \asymp N$. This implies that \begin{equation*} \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} a_E(p) \asymp N^{11/12}. \end{equation*} For murmurations, we divide by the number of curves $X \asymp N^{5/6}$, and thus we expect that the murmuration sum (in algebraic normalization) behaves like \begin{equation} \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} a_E(p) \asymp N^{11/12} / N^{5/6} \asymp N^{1/12}. \end{equation}</p> <p>That is, we should expect the murmuration function to grow slightly in $p/N$! (Maybe if we look closely at the original murmuration plot, this seems true... but it seems likely that this affect is less than the "fuzz" or "snow" effects).</p> <p>If we want constant size murmurations, then this suggests the "correct" normalization of looking at \begin{equation*} \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} a_E(p) / p^{1/12} = \sum_{\substack{E \\ \mathrm{N \leq \mathrm{cond}(E) \leq 2N}}} \lambda_E(p) p^{5/12}. \end{equation*}</p> <p>This would give the following.</p> <figure class="center"> <img src="/wp-content/uploads/2025/06/unit_norm.png" width="100%" maxwidth="800"/> </figure> <p>In principle, it could be informative to compare to the standard $a_E(p)$ plot, including the expected lines of growth there. This looks like</p> <figure class="center"> <img src="/wp-content/uploads/2025/06/original_with_line.png" width="100%" maxwidth="800"/> </figure> <p>The expected growth $p^{1/12}$ is shown. It's hard to say if this looks right or not. The fuzz is a problem. In practice, the difference is very slight. It turns out that $X^{1/12}$ grows pretty slowly.</p> <div class="remark"> <p>The size of the family played an important role in this discussion! The "correct" normalization for modular forms of weight $2$ and varying level would be $\lambda(p) \sqrt{p}$, as in that case the number of modular forms of conductor $N$ is $\asymp N$.</p> <p>But the point remains that perfectly normalizing the coefficients so that the murmuration function is constant on average isn't important!</p> </div>https://davidlowryduda.com/normalizations-murmurationsTue, 03 Jun 2025 03:14:15 +0000Adding Knowls to this sitehttps://davidlowryduda.com/adding-knowlsDavid Lowry-Duda<p>This site now has <a href="https://aimath.org/knowls-browsing/">knowls</a>, or "little bits of knowledge". These are like hyperlinks, but instead of taking you to a new web page or to a different part of the current webpage, the knowl opens up locally and later disappears when dismissed.</p> <p>I like the knowls on the <a href="https://www.lmfdb.org/">LMFDB</a>. For some notes I think they'll be very useful.</p> <p>Here is what they look like. Knowls are based on <a data-knowl="/static/knowls/transclusion.html">transclusion</a>.</p> <h2>Integrating knowls</h2> <p>I now briefly describe adding knowls. In total it only required adding the two files <code>knowl.js</code> and <code>knowl.css</code> to my list of loaded sources.</p> <p>But these are not the same script or style files as from the <a href="https://aimath.org/knowls-browsing/">AIM page on knowls</a>. Why not? Because those are incompatible with MathJax3 (and use a bundle of jquery).</p> <p>I instead modified the knowl javascript from <a href="https://pretextbook.org/doc/guide/html/knowled-content.html">PreTeXt</a> (also available <a href="https://github.com/PreTeXtBook/pretext">on github</a> with the unusual GPLv2 or GPLv3, but not later, license). Almost no modification was necessary &mdash; it essentially <em>just works</em>, except that I don't need some of the additional book-specific additions.</p> <h2>Linking to knowls</h2> <p>I note this largely to myself to remind me what system I implemented. Directly, knowls are made by linking directly to them with anchor links of the form <code>&lt;ANCHOR data-knowl="/static/knowls/transclusion.html"&gt;transclusion&lt;/ANCHOR&gt;</code>, where <code>ANCHOR</code> is just <code>a</code>. (My markup would pick this up, as it's not sophisticated).</p> <p>I wrote all of my posts in markdown and have added a custom preprocessed command to my markdown parser that would take in <code>[TAG](transclusion)(/static/knowls/transclusion.html)[/TAG]</code> pieces, except where <code>TAG</code> is replaced by <code>knowl</code>, and format it as above.<sup>1</sup> <span class="aside"><sup>1</sup>This is how I execute various other pieces of custom typesetting, including these margin notes in <code>note</code> tags.</span></p> <h2>Will knowls be useful?</h2> <p>I'll try this for a while and see if knowls end up being useful or not. I have one application in mind concerning referencing my papers and works. I deliberately chose to allow any knowl source in my markup, so that I could have per-post knowls if desired. That sounds annoying to write in practice, but it could be very helpful in a didactic note.</p> <p>I commit to writing at least one full example.</p>https://davidlowryduda.com/adding-knowlsFri, 30 May 2025 03:14:15 +0000Distinguishing sets of elliptic curve coefficientshttps://davidlowryduda.com/ecq-distinguishingDavid Lowry-DudaThis post is larger than 10000 bytes, which is above the limit for this RSS feed. Perhaps it is long or has embedded images or code. Please view it directly at the url.https://davidlowryduda.com/ecq-distinguishingFri, 23 May 2025 03:14:15 +0000Slides from a talk at PANTShttps://davidlowryduda.com/pants-fiboDavid Lowry-Duda<p>Today I'm giving a talk at the Philadelphia Area Number Theory seminar on the Fibonacci zeta function and related topics.</p> <p>My talk (in handout form) is available <a href="/wp-content/uploads/2025/04/fibo_PANTS_handout.pdf">here</a>.</p> <p>This talk is closely related to <a href="/research/#AKLDW24">AKLDW24</a>, <a href="/research/#AKLDW25">AKLDW25</a>, and references <a href="/research/#HKLDW20a">HKLDW20a</a> and <a href="/davidlowryduda.com/research/#HKLDW20b">HKLDW20b</a>.</p>https://davidlowryduda.com/pants-fiboWed, 23 Apr 2025 03:14:15 +0000Learning Möbius from Inconvenient Integer Representationshttps://davidlowryduda.com/learning-mobius-inconvenientDavid Lowry-DudaThis post is larger than 10000 bytes, which is above the limit for this RSS feed. Perhaps it is long or has embedded images or code. Please view it directly at the url.https://davidlowryduda.com/learning-mobius-inconvenientFri, 11 Apr 2025 03:14:15 +0000Random numbers in flint aren't randomhttps://davidlowryduda.com/random-flintDavid Lowry-DudaThis post is larger than 10000 bytes, which is above the limit for this RSS feed. Perhaps it is long or has embedded images or code. Please view it directly at the url.https://davidlowryduda.com/random-flintThu, 13 Mar 2025 03:14:15 +0000MathSharehttps://davidlowryduda.com/mathshareDavid Lowry-DudaThis post is larger than 10000 bytes, which is above the limit for this RSS feed. Perhaps it is long or has embedded images or code. Please view it directly at the url.https://davidlowryduda.com/mathshareTue, 25 Feb 2025 03:14:15 +0000The Möbius function in python+CPP: basic ctypeshttps://davidlowryduda.com/mobius-ctypesDavid Lowry-DudaThis post is larger than 10000 bytes, which is above the limit for this RSS feed. Perhaps it is long or has embedded images or code. Please view it directly at the url.https://davidlowryduda.com/mobius-ctypesWed, 19 Feb 2025 03:14:15 +0000