<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR642</article-id>
<article-id pub-id-type="doi">10.15388/26-INFOR642</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Visualization of Mandelbulbs Associated with the Zeta Functions</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-6502-7787</contrib-id>
<name><surname>Kuzma</surname><given-names>Lukas</given-names></name><email xlink:href="lukas.kuzma@mif.vu.lt">lukas.kuzma@mif.vu.lt</email><xref ref-type="aff" rid="j_infor642_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>L. Kuzma</bold> received his master’s degree in computing from Vilnius University in 2024. He is currently a PhD student at the Institute of Data Science and Digital Technologies, Faculty of Mathematics and Informatics, Vilnius University. His research interests include computational problems related to zeta functions.</p></bio>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-0478-1102</contrib-id>
<name><surname>Belovas</surname><given-names>Igoris</given-names></name><email xlink:href="igoris.belovas@mif.vu.lt">igoris.belovas@mif.vu.lt</email><xref ref-type="aff" rid="j_infor642_aff_001"/><bio>
<p><bold>I. Belovas</bold> received his doctoral degree in mathematical sciences from Vilnius Gediminas Technical University and the Institute of Mathematics and Informatics in 2004. He is currently a professor at the Institute of Data Science and Digital Technologies, Faculty of Mathematics and Informatics, Vilnius University. His research interests include problems in analytical number theory and financial engineering.</p></bio>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-5456-7844</contrib-id>
<name><surname>Sabaliauskas</surname><given-names>Martynas</given-names></name><email xlink:href="martynas.sabaliauskas@mif.vu.lt">martynas.sabaliauskas@mif.vu.lt</email><xref ref-type="aff" rid="j_infor642_aff_001"/><bio>
<p><bold>M. Sabaliauskas</bold> received his doctoral degree in technological SCiences from Vilnius University in 2017. He is currently an associate professor at the Institute of Data Science and Digital Technologies, Faculty of Mathematics and Informatics, Vilnius University. His research interests include problems in 3D visualization.</p></bio>
</contrib>
<aff id="j_infor642_aff_001"><institution>Institute of Data Science and Digital Technologies, Faculty of Mathematics and Informatics, Vilnius University</institution>, Akedemijos 4, Vilnius, LT-04812, <country>Lithuania</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2026</year></pub-date><pub-date pub-type="epub"><day>18</day><month>9</month><year>2026</year></pub-date><volume content-type="ahead-of-print">0</volume><issue>0</issue><fpage>1</fpage><lpage>27</lpage><history><date date-type="received"><month>3</month><year>2026</year></date><date date-type="accepted"><month>7</month><year>2026</year></date></history>
<permissions><copyright-statement>© 2026 Vilnius University</copyright-statement><copyright-year>2026</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>This research builds upon our previous work on efficient algorithms for calculating and visualizing fractal structures associated with zeta functions, shifting the focus from two-dimensional to three-dimensional structures. Specifically, we introduce Zetabulbs – a class of Mandelbulbs (three-dimensional analogues of Mandelbrot sets) derived from the zeta functions. The visualization of Mandelbulbs poses substantial computational and algorithmic challenges, while also carrying practical relevance in areas such as digital visual effects, where Mandelbulb-based structures have been used in the production of high-budget films. By introducing Zetabulbs, we expand the landscape of zeta-function–driven fractal geometry and open new opportunities for its application in both artistic visualization and scientific exploration.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>fractal structures</kwd>
<kwd>numerical algorithms</kwd>
<kwd>zeta functions</kwd>
<kwd>visualizations</kwd>
<kwd>Zetabulbs</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="j_infor642_s_001">
<label>1</label>
<title>Introduction</title>
<p>Since their introduction, Mandelbrot sets have been studied extensively and have captivated both mathematicians and fractal enthusiasts. It was therefore natural to seek a three-dimensional analogue of the Mandelbrot set. A direct three-dimensional counterpart, however, cannot exist in a canonical sense, as there is no true three-dimensional analogue of the complex plane. To overcome this limitation, researchers developed alternative structures based on spherical coordinates, enabling the visualization of a three-dimensional representation of Mandelbrot-type dynamics. These structures became known as Mandelbulbs (cf. Ugwu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_010">2024</xref>; Kumar and Bhaskar, <xref ref-type="bibr" rid="j_infor642_ref_004">2025</xref>).</p>
<p>Beyond their mathematical appeal, Mandelbulbs have demonstrated practical relevance. They have been employed in the creation of digital visual effects for high-budget films, illustrating that these structures are not merely objects of mathematical aesthetics, but also tools with concrete applications in computational art and media.</p>
<p>Recently, we have further developed (see Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>) an efficient algorithm originally proposed by Borwein (<xref ref-type="bibr" rid="j_infor642_ref_003">2000</xref>) for the computation of the Riemann zeta function. This algorithm is particularly well suited for the evaluation of multiple zeta values (cf. Algorithm 1 in Belovas <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>)). The Mandelbrot set associated with the Riemann zeta function exhibits intricate and highly nontrivial structures in the neighbourhoods of its pole and zeros (see Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>). These observations naturally lead to the problem of a three-dimensional analogues, namely, Mandelbulbs associated with zeta functions.</p>
<p>How do the resulting fractal structures behave in neighbourhoods of poles and nontrivial zeros of zeta functions? Do such structures possess mathematical and practical significance? The present study aims to advance our understanding of these questions. Specifically, we seek to construct and investigate Mandelbulbs associated with the Riemann zeta function and Dirichlet <italic>L</italic>-functions, which we refer to as <italic>Zetabulbs</italic>. To achieve this objective, the following tasks must be undertaken:</p>
<list>
<list-item id="j_infor642_li_001">
<label>•</label>
<p>implementation of GPU-based (Graphics Processing Unit) versions of efficient algorithms for the computation of zeta functions (modified Borwein’s and Šleževičienė’s algorithms);</p>
</list-item>
<list-item id="j_infor642_li_002">
<label>•</label>
<p>development of efficient algorithms for the real-time generation and rendering of Mandelbulb images;</p>
</list-item>
<list-item id="j_infor642_li_003">
<label>•</label>
<p>construction of Mandelbulb dynamics derived from zeta functions;</p>
</list-item>
<list-item id="j_infor642_li_004">
<label>•</label>
<p>visualization of Zetabulbs and exploration of newly received fractal structures.</p>
</list-item>
</list>
<p>This paper can be divided into three main parts: algorithms for the calculation of zeta functions (Sections <xref rid="j_infor642_s_002">2</xref>–<xref rid="j_infor642_s_006">3</xref>), algorithm parallelization (Section <xref rid="j_infor642_s_008">4</xref>), and algorithm application for visualization of Zetabulbs (Sections <xref rid="j_infor642_s_014">5</xref>–<xref rid="j_infor642_s_017">6</xref>). Each part contains its own methodology and results.</p>
</sec>
<sec id="j_infor642_s_002">
<label>2</label>
<title>Calculation of the Riemann Zeta Function</title>
<p>The Riemann zeta-function is a function of a complex variable <inline-formula id="j_infor642_ineq_001"><alternatives><mml:math>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">t</mml:mi></mml:math><tex-math><![CDATA[$s=\sigma +it$]]></tex-math></alternatives></inline-formula> defined by the ordinary Dirichlet series or the Euler product formula, 
<disp-formula id="j_infor642_eq_001">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>∞</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∏</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mspace width="0.2778em"/>
<mml:mtext>prime</mml:mtext>
</mml:mrow>
</mml:munder>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \zeta (s)={\sum \limits_{n=1}^{\infty }}\frac{1}{{n^{s}}}=\prod \limits_{p\hspace{0.2778em}\text{prime}}{\bigg(1-\frac{1}{{p^{s}}}\bigg)^{-1}},\hspace{1em}\mathrm{\Re }s\gt 1,\]]]></tex-math></alternatives>
</disp-formula> 
and by analytic continuation elsewhere except for a simple pole at <inline-formula id="j_infor642_ineq_002"><alternatives><mml:math>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$s=1$]]></tex-math></alternatives></inline-formula>. It satisfies the functional equation 
<disp-formula id="j_infor642_eq_002">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">π</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo movablelimits="false">sin</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mi mathvariant="normal">Γ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \zeta (s)={2^{s}}{\pi ^{s-1}}\sin (\pi s/2)\Gamma (1-s)\zeta (1-s),\]]]></tex-math></alternatives>
</disp-formula> 
implying that <inline-formula id="j_infor642_ineq_003"><alternatives><mml:math>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\zeta (s)$]]></tex-math></alternatives></inline-formula> has simple zeros at <inline-formula id="j_infor642_ineq_004"><alternatives><mml:math>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi></mml:math><tex-math><![CDATA[$s=-2n$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor642_ineq_005"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi></mml:math><tex-math><![CDATA[$n\in \mathbb{N}$]]></tex-math></alternatives></inline-formula>, known as the trivial zeros. The Riemann hypothesis states that all other zeroes, called non-trivial, lie on the critical line <inline-formula id="j_infor642_ineq_006"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Re }s=1/2$]]></tex-math></alternatives></inline-formula>.</p>
<p>To investigate the Riemann zeta function numerically, one needs an algorithm enabling him to effectively compute multiple values over the complex plane. Moreover, the algorithm must be well-suited for parallel CPU (Central Processing Unit) and GPU computations. We have employed modifications of Borwein’s efficient algorithm. The idea of the method comes from the alternating series convergence and properties of Chebyshev polynomials (see Borwein, <xref ref-type="bibr" rid="j_infor642_ref_003">2000</xref>). It is important to note that the algorithm is nearly optimal in the sense that there is no sequence of <italic>n</italic>-term exponential polynomials that can converge to <inline-formula id="j_infor642_ineq_007"><alternatives><mml:math>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\zeta (s)$]]></tex-math></alternatives></inline-formula> very much faster than those of the algorithm (cf. Theorem 3.1 in Borwein, <xref ref-type="bibr" rid="j_infor642_ref_003">2000</xref>).</p>
<sec id="j_infor642_s_003">
<label>2.1</label>
<title><italic>MB</italic>-Algorithm</title>
<p>The modified Borwein’s algorithm (<italic>MB</italic>-algorithm) applies to complex numbers with <inline-formula id="j_infor642_ineq_008"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>⩾</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Re }s\geqslant 1/2$]]></tex-math></alternatives></inline-formula> and arbitrary <inline-formula id="j_infor642_ineq_009"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi></mml:math><tex-math><![CDATA[$\mathrm{\Im }s$]]></tex-math></alternatives></inline-formula>. In this modification (see Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>), the Riemann zeta function is represented by the alternating series 
<disp-formula id="j_infor642_eq_003">
<label>(1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \zeta (s)=\frac{1}{1-{2^{1-s}}}{\sum \limits_{k=0}^{n-1}}\frac{{(-1)^{k}}{\psi _{n,k}}}{{(k+1)^{s}}}+{R_{n}}(s).\]]]></tex-math></alternatives>
</disp-formula> 
Here 
<disp-formula id="j_infor642_eq_004">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\psi _{n,k}}=1-\frac{{H_{k}}}{{H_{n}}}\]]]></tex-math></alternatives>
</disp-formula> 
and 
<disp-formula id="j_infor642_eq_005">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mtext>arg</mml:mtext>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:munder><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2.5pt"/>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {l_{\max }}=\text{arg}\underset{0\leqslant k\leqslant n}{\max }\frac{(n+k-1)!{4^{k}}}{(n-k)!(2k)!},\hspace{1em}n\in \mathbb{N},\hspace{2.5pt}0\leqslant k\leqslant n,\]]]></tex-math></alternatives>
</disp-formula> 
while 
<disp-formula id="j_infor642_eq_006">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo movablelimits="false">log</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {H_{l}}={H_{l-1}}+\exp \big({T_{l}}-{T_{{l_{\max }}}}+(l-{l_{\max }})\log 4\big),\\ {} & {H_{0}}=\exp ({T_{0}}-{T_{{l_{\max }}}}-{l_{\max }}\log 4),\\ {} & {T_{l}}={T_{l-1}}+\log \frac{(n-l+1)(n+l-1)}{(2l-1)(2l)},\\ {} & {T_{0}}=-\log n,\hspace{1em}1\leqslant l\leqslant n.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The error term and the computational complexity are closely linked to the problem of selecting the minimal number of terms in the series (<xref rid="j_infor642_eq_003">1</xref>). Theorem 1 in Belovas <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>) states that the series (<xref rid="j_infor642_eq_003">1</xref>) to compute the Riemann zeta-function with <italic>d</italic> decimal digits of accuracy require a number of terms 
<disp-formula id="j_infor642_eq_007">
<label>(2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">⌈</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>+</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>+</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ε</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>+</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em">⌉</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ n=\bigg\lceil \frac{\pi t}{2\log (3+\sqrt{8})}+\frac{\log 10}{\log (3+\sqrt{8})}d+\frac{\log \frac{2}{1-{2^{-\varepsilon }}}}{\log (3+\sqrt{8})}\bigg\rceil ,\]]]></tex-math></alternatives>
</disp-formula> 
here <inline-formula id="j_infor642_ineq_010"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo>⩾</mml:mo>
<mml:mi mathvariant="italic">ε</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$|s-{s_{k}}|\geqslant \varepsilon \gt 0$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_011"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[${s_{k}}=1+2i\pi k/\log 2$]]></tex-math></alternatives></inline-formula>.</p>
</sec>
<sec id="j_infor642_s_004">
<label>2.2</label>
<title><italic>NA</italic>-Algorithm</title>
<p>The limit theorem for the coefficients of <italic>MB</italic>-series enables us to derive the following normal approximation for the coefficients <inline-formula id="j_infor642_ineq_012"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\psi _{n,k}}$]]></tex-math></alternatives></inline-formula> of the series (<xref rid="j_infor642_eq_003">1</xref>) (cf. Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>) 
<disp-formula id="j_infor642_eq_008">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="normal">Φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mroot>
<mml:mrow>
<mml:mn>32</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mroot>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\psi _{n,k}}=1-\Phi \bigg(\frac{k-{\mu _{n}}}{{\sigma _{n}}}\bigg)+O\bigg(\frac{1}{\sqrt{n}}\bigg),\hspace{1em}{\mu _{n}}=\frac{n}{\sqrt{2}},\hspace{1em}{\sigma _{n}}=\frac{\sqrt{n}}{\sqrt[4]{32}}.\]]]></tex-math></alternatives>
</disp-formula> 
Here <inline-formula id="j_infor642_ineq_013"><alternatives><mml:math>
<mml:mi mathvariant="normal">Φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\Phi (x)$]]></tex-math></alternatives></inline-formula> is the cumulative distribution function of the standard normal distribution. This result allows us to select the number of terms <inline-formula id="j_infor642_ineq_014"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${k_{0}}$]]></tex-math></alternatives></inline-formula> in the series (<xref rid="j_infor642_eq_003">1</xref>), 
<disp-formula id="j_infor642_eq_009">
<label>(3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">⌈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">⌉</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">Φ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {k_{0}}=\lceil {\mu _{n}}+z{\sigma _{n}}\rceil ,\hspace{1em}z={\Phi ^{-1}}\big(1-{10^{-d}}\big),\hspace{2.5pt}n\gt {10^{3}}.\]]]></tex-math></alternatives>
</disp-formula> 
Note that for fixed <inline-formula id="j_infor642_ineq_015"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi></mml:math><tex-math><![CDATA[$\mathrm{\Re }s$]]></tex-math></alternatives></inline-formula> and <italic>d</italic>, we have <inline-formula id="j_infor642_ineq_016"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∼</mml:mo>
<mml:mn>0.63</mml:mn>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi></mml:math><tex-math><![CDATA[${k_{0}}\sim 0.63\mathrm{\Im }s$]]></tex-math></alternatives></inline-formula>.</p>
</sec>
<sec id="j_infor642_s_005">
<label>2.3</label>
<title><italic>EMB</italic>-Algorithm</title>
<p>Kuzma (Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>) proposed the following empirical (<italic>EMB</italic>) formula for the minimal number of terms <italic>n</italic> in the series (<xref rid="j_infor642_eq_003">1</xref>) for calculations with <italic>d</italic> decimal digits of accuracy 
<disp-formula id="j_infor642_eq_010">
<label>(4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtable displaystyle="true" columnspacing="0pt" columnalign="right left">
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">⌈</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:msqrt>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo fence="true" stretchy="false">⌉</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.451</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1.407</mml:mn>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msqrt>
<mml:mo>−</mml:mo>
<mml:mn>0.245</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.371</mml:mn>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>0.195.</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \begin{aligned}{}& n=\lceil at+b\sqrt{t}+c\rceil ,\hspace{1em}a=0.451,\\ {} & b=1.407\sqrt{d}-0.245,\hspace{1em}c=0.371d+0.195.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
The empirical formula (<xref rid="j_infor642_eq_010">4</xref>) has been verified for <inline-formula id="j_infor642_ineq_017"><alternatives><mml:math>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$0\leqslant t\leqslant {10^{4}}$]]></tex-math></alternatives></inline-formula>.</p>
</sec>
</sec>
<sec id="j_infor642_s_006">
<label>3</label>
<title>Calculation of the Dirichlet <italic>L</italic>-Functions</title>
<p>Let <inline-formula id="j_infor642_ineq_018"><alternatives><mml:math>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">C</mml:mi></mml:math><tex-math><![CDATA[$s\in \mathbb{C}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_019"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Re }s\gt 1$]]></tex-math></alternatives></inline-formula>, then Dirichlet <italic>L</italic>-series are defined as follows 
<disp-formula id="j_infor642_eq_011">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>∞</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ L(s,\chi )={\sum \limits_{n=1}^{\infty }}\frac{\chi (n)}{{n^{s}}},\hspace{1em}\mathrm{\Re }s\gt 1.\]]]></tex-math></alternatives>
</disp-formula> 
Here <italic>χ</italic> is a Dirichlet character modulo <italic>q</italic>. By analytic continuation, this function extends to a meromorphic function on the whole complex plane and is known as a Dirichlet <italic>L</italic>-function. The Dirichlet <italic>L</italic>-function is a generalization of the Riemann zeta function and thus has similar properties. If <italic>χ</italic> is principal, the corresponding Dirichlet <italic>L</italic>-function has a simple pole at <inline-formula id="j_infor642_ineq_020"><alternatives><mml:math>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$s=1$]]></tex-math></alternatives></inline-formula>; otherwise, it is holomorphic on the whole complex plane. The Generalized Riemann hypothesis asserts that all nontrivial zeros of Dirichlet <italic>L</italic>-function lie on the critical line <inline-formula id="j_infor642_ineq_021"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℜ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Re }s=1/2$]]></tex-math></alternatives></inline-formula>.</p>
<p>Šleževičiene (<xref ref-type="bibr" rid="j_infor642_ref_011">2004</xref>), building upon Borwein’s technique, proposed several algorithms (MS-algorithms) for efficient computing of Dirichlet <italic>L</italic>-functions.The following two results (Propositions <xref rid="j_infor642_stat_001">1</xref> and <xref rid="j_infor642_stat_002">2</xref>), established in Šleževičiene (<xref ref-type="bibr" rid="j_infor642_ref_011">2004</xref>) (see Theorems 4 and 5, respectively), yield algorithms for computing Dirichlet <italic>L</italic>-functions attached to a character with odd modulus.</p><statement id="j_infor642_stat_001"><label>Proposition 1.</label>
<p><italic>Let q be odd, χ mod q be a non-principal character and let</italic> 
<disp-formula id="j_infor642_eq_012">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {p_{n}}(x)={\sum \limits_{k=0}^{n}}{a_{n,k}}{x^{kq}}\]]]></tex-math></alternatives>
</disp-formula> 
<italic>be an arbitrary polynomial of degree</italic> <inline-formula id="j_infor642_ineq_022"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$nq$]]></tex-math></alternatives></inline-formula> <italic>which does not vanish at</italic> <inline-formula id="j_infor642_ineq_023"><alternatives><mml:math>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$-1$]]></tex-math></alternatives></inline-formula><italic>. Further, let</italic> 
<disp-formula id="j_infor642_eq_013">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="2.45em" minsize="2.45em">(</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" maxsize="2.45em" minsize="2.45em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {c_{n,j}}={(-1)^{j}}\Bigg({\sum \limits_{k=0}^{j}}{(-1)^{k}}{a_{n,k}}-{p_{n}}(-1)\Bigg).\]]]></tex-math></alternatives>
</disp-formula> 
<italic>Then for</italic> <inline-formula id="j_infor642_ineq_024"><alternatives><mml:math>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$\sigma \gt 0$]]></tex-math></alternatives></inline-formula><italic>,</italic> 
<disp-formula id="j_infor642_eq_014">
<label>(5)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ξ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ L(s,\chi )=\frac{-1}{{p_{n}}(-1)(1-\chi (2){2^{1-s}})}{\sum \limits_{l=1}^{q}}\chi (l){(-1)^{l-1}}{\sum \limits_{j=0}^{n-1}}\frac{{c_{n,j}}}{{(l+qj)^{s}}}+{\xi _{n}}(s),\]]]></tex-math></alternatives>
</disp-formula> 
<italic>where</italic> 
<disp-formula id="j_infor642_eq_015">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ξ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mi mathvariant="normal">Γ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∫</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\xi _{n}}(s)=\frac{-1}{{p_{n}}(-1)\Gamma (s)(1-\chi (2){2^{1-s}})}{\int _{0}^{1}}\frac{{p_{n}}(s)|\log x{|^{s-1}}}{1+{x^{q}}}{\sum \limits_{l=1}^{q}}\chi (l){x^{l-1}}dx.\]]]></tex-math></alternatives>
</disp-formula>
</p></statement><statement id="j_infor642_stat_002"><label>Proposition 2.</label>
<p><italic>Let q be odd. For</italic> <inline-formula id="j_infor642_ineq_025"><alternatives><mml:math>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$\sigma \gt 0$]]></tex-math></alternatives></inline-formula><italic>,</italic> 
<disp-formula id="j_infor642_eq_016">
<label>(6)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ L(s,\chi )=\frac{1}{{2^{n}}(1-\chi (2){2^{1-s}})}{\sum \limits_{a=1}^{q}}{(-1)^{a-1}}\chi (a){\sum \limits_{j=0}^{2n-1}}\frac{{e_{j}}}{{(a+qj)^{s}}}+{\gamma _{n}}(s),\]]]></tex-math></alternatives>
</disp-formula> 
<italic>where</italic> 
<disp-formula id="j_infor642_eq_017">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="2.45em" minsize="2.45em">(</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mfenced separators="" open="(" close=")">
<mml:mfrac linethickness="0">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mfenced>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" maxsize="2.45em" minsize="2.45em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {e_{j}}={(-1)^{j}}\Bigg({\sum \limits_{k=0}^{j-n}}\left(\genfrac{}{}{0pt}{}{n}{k}\right)-{2^{n}}\Bigg).\]]]></tex-math></alternatives>
</disp-formula> 
<italic>If</italic> <inline-formula id="j_infor642_ineq_026"><alternatives><mml:math>
<mml:mi mathvariant="italic">φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\varphi (m)$]]></tex-math></alternatives></inline-formula> <italic>stands for the Euler totient function, then</italic> 
<disp-formula id="j_infor642_eq_018">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em" stretchy="true">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em" stretchy="true">|</mml:mo>
<mml:mo>⩽</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo movablelimits="false">exp</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">|</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \big|{\gamma _{n}}(s)\big|\leqslant \frac{\varphi (q)}{{8^{n}}}\frac{(1+|t|/\sigma )\exp ((|t|\pi )/2)}{|1-\chi (2){2^{1-s}}|}.\]]]></tex-math></alternatives>
</disp-formula>
</p></statement>
<p>In the next section, we introduce a modification of Šleževičienė’s efficient algorithm for Dirichlet <italic>L</italic>-functions that applies a normal approximation to the coefficients of the corresponding series.</p>
<sec id="j_infor642_s_007">
<label>3.1</label>
<title>NA-Modification of MS-Algorithm for Dirichlet <italic>L</italic>-Functions</title>
<p>Associating polynomials <inline-formula id="j_infor642_ineq_027"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${p_{n}}(x)$]]></tex-math></alternatives></inline-formula> in Proposition <xref rid="j_infor642_stat_001">1</xref> with Chebyshev polynomials 
<disp-formula id="j_infor642_eq_019">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo movablelimits="false">cos</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo movablelimits="false">arcsin</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
</mml:msqrt>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munder>
<mml:mrow>
<mml:munder accentunder="false">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="italic">n</mml:mi><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo>︸</mml:mo></mml:munder>
</mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}{T_{n}}(x)& ={(-1)^{n}}\cos (2n\arcsin (\sqrt{x})\\ {} & ={(-1)^{n}}n{\sum \limits_{k=0}^{n}}{(-1)^{k}}\frac{(n+k-1)!}{(n-k)!(2k)!}{4^{k}}{x^{k}},\\ {} {p_{n}}(x)& ={\sum \limits_{k=0}^{n}}\underset{={a_{n,k}}}{\underbrace{{(-1)^{n+k}}n\frac{(n+k-1)!}{(n-k)!(2k)!}{4^{k}}}}{x^{qk}},\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
we get we following series for Dirichlet <italic>L</italic>-functions, 
<disp-formula id="j_infor642_eq_020">
<label>(7)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">L</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mi mathvariant="italic">χ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msup>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ξ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ L(s,\chi )=\frac{-1}{1-\chi (2){2^{1-s}}}{\sum \limits_{l=1}^{q}}\chi (l){(-1)^{l}}{\sum \limits_{j=0}^{n-1}}\frac{{(-1)^{j}}{c_{n,j}}}{{(l+qj)^{s}}}+{\xi _{n}}(s),\]]]></tex-math></alternatives>
</disp-formula> 
where 
<disp-formula id="j_infor642_eq_021">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {c_{n,j}}=1-\frac{{\textstyle\textstyle\sum _{k=0}^{j}}{(-1)^{k}}{a_{n,k}}}{{p_{n}}(-1)}=1-\frac{{\textstyle\textstyle\sum _{k=0}^{j}}{\alpha _{n,k}}}{{\textstyle\textstyle\sum _{k=0}^{n}}{\alpha _{n,k}}},\]]]></tex-math></alternatives>
</disp-formula> 
and 
<disp-formula id="j_infor642_eq_022">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>!</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\alpha _{n,k}}=\frac{(n+k-1)!}{(n-k)!(2k)!}{4^{k}}.\]]]></tex-math></alternatives>
</disp-formula> 
Note that Borwein (<xref ref-type="bibr" rid="j_infor642_ref_003">2000</xref>) recommended similar approach for the calculation of the Riemann zeta function to make the error as small as possible. Indeed, Chebyshev polynomials <inline-formula id="j_infor642_ineq_028"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${T_{n}}(x)$]]></tex-math></alternatives></inline-formula>, shifted to <inline-formula id="j_infor642_ineq_029"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[0,1]$]]></tex-math></alternatives></inline-formula> and appropriately normalized maximization of the value <inline-formula id="j_infor642_ineq_030"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${p_{n}}(-1)$]]></tex-math></alternatives></inline-formula> over all polynomials of comparable supremum norm on <inline-formula id="j_infor642_ineq_031"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[0,1]$]]></tex-math></alternatives></inline-formula>.</p>
<p>Let <inline-formula id="j_infor642_ineq_032"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\Omega _{n}}$]]></tex-math></alternatives></inline-formula> be a integral random variable associated with Chebyshev polynomials, 
<disp-formula id="j_infor642_eq_023">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∑</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">α</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ P({\Omega _{n}}=k)=\frac{{\alpha _{n,k}}}{{\textstyle\textstyle\sum _{j=0}^{n}}{\alpha _{n,j}}},\hspace{1em}0\leqslant k\leqslant n.\]]]></tex-math></alternatives>
</disp-formula> 
Suppose that <inline-formula id="j_infor642_ineq_033"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${F_{n}}(x)$]]></tex-math></alternatives></inline-formula> is the cumulative distribution function of the random variable <inline-formula id="j_infor642_ineq_034"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\Omega _{n}}$]]></tex-math></alternatives></inline-formula>. It has been proved (cf. Theorem 3.1 in Belovas and Sakalauskas, <xref ref-type="bibr" rid="j_infor642_ref_001">2018</xref>), that the cumulative distribution function is 
<disp-formula id="j_infor642_eq_024">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="normal">Φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {F_{n}}(x)=\Phi \bigg(\frac{x-{\mu _{n}}}{{\sigma _{n}}}\bigg)+O\bigg(\frac{1}{\sqrt{n}}\bigg).\]]]></tex-math></alternatives>
</disp-formula> 
By Lemma 2.2 of Belovas and Sakalauskas (<xref ref-type="bibr" rid="j_infor642_ref_001">2018</xref>), the mean and variance are given by 
<disp-formula id="j_infor642_eq_025">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>33</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>144</mml:mn>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd"/>
<mml:mtd class="align-even">
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}& {\mu _{n}}=E({\Omega _{n}})=\frac{n}{\sqrt{2}}+\frac{33}{144\sqrt{2}}\frac{1}{n}+O\bigg(\frac{1}{{n^{2}}}\bigg),\\ {} & {({\sigma _{n}})^{2}}=Var({\Omega _{n}})=\frac{\sqrt{2}}{8}n+O\bigg(\frac{1}{{n^{2}}}\bigg).\end{aligned}\]]]></tex-math></alternatives>
</disp-formula> 
We now can formulate a result establishing a normal approximation for the coefficients of the series associated with Dirichlet <italic>L</italic>-functions. <statement id="j_infor642_stat_003"><label>Proposition 3.</label>
<p><italic>The following the Gaussian approximation for</italic> <inline-formula id="j_infor642_ineq_035"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${c_{n,j}}$]]></tex-math></alternatives></inline-formula> <italic>coefficients holds</italic>: 
<disp-formula id="j_infor642_eq_026">
<label>(8)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="normal">Φ</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">μ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {c_{n,j}}=1-\Phi \bigg(\frac{j+1/2-{\mu _{n}}}{{\sigma _{n}}}\bigg)+O\bigg(\frac{1}{\sqrt{n}}\bigg).\]]]></tex-math></alternatives>
</disp-formula> 
<italic>Note that</italic> <inline-formula id="j_infor642_ineq_036"><alternatives><mml:math>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$1/2$]]></tex-math></alternatives></inline-formula> <italic>is the continuity correction, and</italic> 
<disp-formula id="j_infor642_eq_027">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn><mml:mroot>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mroot>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\sigma _{n}}=\frac{\sqrt{n}}{2\sqrt[4]{2}}+O\bigg(\frac{1}{{n^{5/2}}}\bigg).\]]]></tex-math></alternatives>
</disp-formula>
</p></statement><statement id="j_infor642_stat_004"><label>Proof.</label>
<p>The proposition is an immediate consequence of the proof of Theorem 2 in Belovas <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>). Besides, 
<disp-formula id="j_infor642_eq_028">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
</mml:msqrt>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
<mml:mo>·</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
</mml:mrow>
</mml:msqrt>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal" fence="true" maxsize="2.03em" minsize="2.03em">)</mml:mo>
<mml:mo>.</mml:mo>
<mml:mspace width="2em"/>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\sigma _{n}}=\sqrt{\frac{\sqrt{2}}{8}n+O\bigg(\frac{1}{{n^{2}}}\bigg)}=\sqrt{\frac{\sqrt{2}}{8}n}\cdot \sqrt{1+O\bigg(\frac{1}{{n^{3}}}\bigg)}=\frac{\sqrt{n}}{{2^{5/4}}}+O\bigg(\frac{1}{{n^{5/2}}}\bigg).\hspace{2em}\]]]></tex-math></alternatives>
</disp-formula> 
 □</p></statement></p>
</sec>
</sec>
<sec id="j_infor642_s_008">
<label>4</label>
<title>Parallel Algorithms for Calculation of the Riemann Zeta Function</title>
<p>Two approaches to parallelize the <italic>MB</italic>-algorithm can be used: optimize for specific or multiple value computation speed. Each pixel of an image of a Zetabulb will require multiple computations of the Riemann zeta function. We aim to generate at least 24 frames of HD: 720p images (a total of <inline-formula id="j_infor642_ineq_037"><alternatives><mml:math>
<mml:mn>720</mml:mn>
<mml:mo>×</mml:mo>
<mml:mn>1280</mml:mn>
<mml:mo>=</mml:mo>
<mml:mn>921600</mml:mn></mml:math><tex-math><![CDATA[$720\times 1280=921600$]]></tex-math></alternatives></inline-formula> pixels) per second. For this purpose, optimizing for multiple-value computation speed is more beneficial.</p>
<p>Personal computers usually have two processing units: a central processing unit (CPU) and a graphics processing unit (GPU). Both processing units can have multiple cores; however, they are specialized for different tasks. CPUs usually have a low amount (up to 24) of high-speed (up to 6GHz) cores and are used for tasks that are hard to parallelize. Whereas, GPUs usually have a high amount (up to 16000) of slower (up to 2.5GHz) cores and are used for tasks that are easy to parallelize. CUDA NVIDIA (<xref ref-type="bibr" rid="j_infor642_ref_007">2026</xref>) is a parallel computing platform that allows one to perform computations on both the CPU and the GPU and manages the data transfer operations between RAM (Random Access Memory) and VRAM (Video Random Access Memory). This platform is the optimal approach for real-time image generation.</p>
<p>The <italic>MB</italic>-method can be separated into two logical parts: initialization and computation. During the first part, we compute <italic>n</italic> coefficients <italic>ψ</italic> required to compute the Riemann zeta function with the maximum imaginary part <inline-formula id="j_infor642_ineq_038"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\max }}$]]></tex-math></alternatives></inline-formula> and <italic>d</italic> decimal digits of accuracy. During the second part, we use these coefficients to compute the actual value of the Riemann zeta function. Note that although both parts are linear, the coefficients computed during the initialization part can be reused when computing Riemann zeta values for arguments <inline-formula id="j_infor642_ineq_039"><alternatives><mml:math>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$t\lt {t_{\max }}$]]></tex-math></alternatives></inline-formula>. This property of the <italic>MB</italic>-method makes it suitable for computing multiple values at once.</p>
<p>A data transfer diagram for a CUDA implementation of the <italic>MB</italic>-method can be seen in Fig. <xref rid="j_infor642_fig_001">1</xref>. Here, the data flow of the initialization part is indicated by blue arrows and the computation part by red arrows. During the initialization part, the coefficients <italic>ψ</italic> are computed using a CPU. After that, they are transferred from RAM to VRAM for the remainder of the program’s runtime. Note that it might be more efficient to perform the initialization part on the GPU if the CPU clock speed is low. Then, whenever the CPU requests a Riemann zeta value to be computed, the GPU uses <italic>ψ</italic> to get the value and transfers it from VRAM back to RAM. An implementation of this algorithm can be found in Kuzma (<xref ref-type="bibr" rid="j_infor642_ref_005">2025</xref>).</p>
<fig id="j_infor642_fig_001">
<label>Fig. 1</label>
<caption>
<p>Data transfer diagram for the <italic>MB</italic>-method. The blue arrows indicate the initialization part’s data transfer flow. The red arrows indicate the computation part’s data transfer flow.</p>
</caption>
<graphic xlink:href="infor642_g001.jpg"/>
</fig>
<sec id="j_infor642_s_009">
<label>4.1</label>
<title>Numerical Experiments</title>
<p>Modern GPUs perform arithmetic instructions much faster when using single-precision (<italic>float</italic>) instead of double-precision (<italic>double</italic>) type variables NVIDIA (<xref ref-type="bibr" rid="j_infor642_ref_006">2023</xref>). If the precision using <italic>float</italic> type variables is good enough (i.e. there is no visible difference between images generated using <italic>float</italic> and <italic>double</italic> type variables), this precision for performance trade-off is preferred. However, the <italic>EMB</italic>-algorithm requires to compute a large sum of values very close to zero. This summation will compound errors that occur when using single-precision variables and produce a result that is not good enough for visualization.</p>
<p>In this Subsection, we aim to determine the domain within which the <italic>EMB</italic>-algorithm struggles to produce acceptable results. The experiments have been performed on GeForce GTX 1060 (Mobile) graphics processor with 6 GB VRAM and Intel<sup>®</sup> Core<sup>TM</sup> i7-8750H 2.2 GHz (boosted to 4.0 GHz) processor with 16 GB DDR4 RAM.</p>
<sec id="j_infor642_s_010">
<label>4.1.1</label>
<title>First Experiment</title>
<p>The first experiment aims to compare the speed and accuracy of the <italic>float</italic> and <italic>double</italic> algorithms. For this experiment, we divide the complex plane into <inline-formula id="j_infor642_ineq_040"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1000</mml:mn></mml:math><tex-math><![CDATA[${n_{f}}=1000$]]></tex-math></alternatives></inline-formula> matrices (frames) consisting of <inline-formula id="j_infor642_ineq_041"><alternatives><mml:math>
<mml:mn>1280</mml:mn>
<mml:mo>×</mml:mo>
<mml:mn>720</mml:mn></mml:math><tex-math><![CDATA[$1280\times 720$]]></tex-math></alternatives></inline-formula> uniformly located points 
<disp-formula id="j_infor642_eq_029">
<label>(9)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:munder accentunder="false">
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>︸</mml:mo></mml:munder>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">σ</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo>×</mml:mo>
<mml:munder>
<mml:mrow>
<mml:munder accentunder="false">
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mrow>
<mml:mo>︸</mml:mo></mml:munder>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {F_{p,j}}=\underset{\sigma }{\underbrace{(0.5,1.5)}}\times \underset{t}{\underbrace{\big({k_{p}}+j{h_{f}},{k_{p}}+(j+1){h_{f}}\big)}},\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor642_ineq_042"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${k_{p}}={10^{2(p-1)}}$]]></tex-math></alternatives></inline-formula> is the minimum imaginary value of a frame, <inline-formula id="j_infor642_ineq_043"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[${h_{f}}=\frac{{k_{p+1}}-{k_{p}}}{{n_{f}}}$]]></tex-math></alternatives></inline-formula> is the frame height and <inline-formula id="j_infor642_ineq_044"><alternatives><mml:math>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$0\lt j\leqslant {n_{f}}$]]></tex-math></alternatives></inline-formula>. We compute the Riemann zeta function values once with an algorithm that uses <italic>double</italic> precision variables and once with an algorithm that uses <italic>float</italic> precision variables. We find the average mean square error and the maximum mean square error of the computed values. Using both methods, we also compute the average times to compute a frame. The results of this experiment are shown in Table <xref rid="j_infor642_tab_001">1</xref>.</p>
<table-wrap id="j_infor642_tab_001">
<label>Table 1</label>
<caption>
<p>First experiment results. <inline-formula id="j_infor642_ineq_045"><alternatives><mml:math>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$AE$]]></tex-math></alternatives></inline-formula> stands for average root mean square error between <italic>float</italic> and <italic>double</italic> frames, <inline-formula id="j_infor642_ineq_046"><alternatives><mml:math>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$ME$]]></tex-math></alternatives></inline-formula> stands for maximum square error between the <italic>float</italic> and <italic>double</italic> frames, <inline-formula id="j_infor642_ineq_047"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">double</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\tau _{\textit{double}}}$]]></tex-math></alternatives></inline-formula> – average time to compute a frame using the <italic>double</italic> algorithm in milliseconds, <inline-formula id="j_infor642_ineq_048"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">float</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\tau _{\textit{float}}}$]]></tex-math></alternatives></inline-formula> – average time to compute a frame using the <italic>float</italic> algorithm.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>p</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_049"><alternatives><mml:math>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$AE$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_050"><alternatives><mml:math>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$ME$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_051"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">double</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\tau _{\textit{double}}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_052"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">τ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">float</mml:mtext>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\tau _{\textit{float}}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor642_ineq_053"><alternatives><mml:math>
<mml:mn>2.43</mml:mn>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$2.43\cdot {10^{-5}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor642_ineq_054"><alternatives><mml:math>
<mml:mn>9.25</mml:mn>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$9.25\cdot {10^{-3}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">201.4</td>
<td style="vertical-align: top; text-align: left">9.7</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_055"><alternatives><mml:math>
<mml:mn>9.38</mml:mn>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$9.38\cdot {10^{-4}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_056"><alternatives><mml:math>
<mml:mn>8.35</mml:mn>
<mml:mo>·</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$8.35\cdot {10^{-2}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">32729.3</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1459.4</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="j_infor642_s_011">
<label>4.1.2</label>
<title>Second Experiment</title>
<p>In the second experiment, we aim to evaluate the <italic>float</italic> algorithm’s precision on the critical line. We aim to find the maximum value <inline-formula id="j_infor642_ineq_057"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">min</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\min }}$]]></tex-math></alternatives></inline-formula> with which the <italic>float</italic> algorithm no longer produces <italic>d</italic> decimal digits of accuracy. In Belovas <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>), we have shown that the most computationally expensive region of the complex plane (excluding the special points <inline-formula id="j_infor642_ineq_058"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[${s_{k}}=1+2\pi ki/\log 2$]]></tex-math></alternatives></inline-formula>) for the <italic>MB</italic>-algorithm is the critical line.</p>
<p>We compute the Riemann zeta function values using both the <italic>float</italic> and the <italic>double</italic> algorithms and compute the error for each of the obtained values <inline-formula id="j_infor642_ineq_059"><alternatives><mml:math>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">float</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">double</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$E=|\zeta {({F_{k,j}})_{\textit{float}}}-\zeta {({F_{k,j}})_{\textit{double}}}|$]]></tex-math></alternatives></inline-formula>. Then, we find the first value <italic>t</italic> with which the <italic>float</italic> algorithm no longer provides <italic>d</italic> decimal digits of accuracy. Here 
<disp-formula id="j_infor642_eq_030">
<label>(10)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mtable displaystyle="true" columnspacing="0pt" columnalign="right left">
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>+</mml:mo>
<mml:munder>
<mml:mrow>
<mml:munder accentunder="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
</mml:mrow>
<mml:mo>︸</mml:mo></mml:munder>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">]</mml:mo>
</mml:mrow>
</mml:munder>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>1120</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mn>0</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>9</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1.5pt"/>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \begin{aligned}{}& {F_{k,j}}=\frac{1}{2}+\underset{\in [0;{10^{5}}]}{\underbrace{\frac{2\pi (k+j/10)}{\log 2}}}i,\\ {} & 0\leqslant k\leqslant 1120,\hspace{1em}0\leqslant j\leqslant 9,\hspace{1.5pt}k,j\in \mathbb{N}.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The experiment results are presented in Fig. <xref rid="j_infor642_fig_002">2</xref>. As we can see, the error <italic>E</italic> increases with <italic>t</italic>. In Table <xref rid="j_infor642_tab_002">2</xref>, we have listed the largest imaginary part of the complex number <inline-formula id="j_infor642_ineq_060"><alternatives><mml:math>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">t</mml:mi></mml:math><tex-math><![CDATA[$1/2+it$]]></tex-math></alternatives></inline-formula> that produces <italic>d</italic> decimal digits of accuracy. For example, we can expect that every <italic>t</italic> value lower than 72.52 will be computed with at least 3 decimal digits of accuracy using the <italic>float</italic> algorithm.</p>
<fig id="j_infor642_fig_002">
<label>Fig. 2</label>
<caption>
<p>Second experiment results. Each dot represents the error <italic>E</italic> at point <inline-formula id="j_infor642_ineq_061"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${F_{k,j}}$]]></tex-math></alternatives></inline-formula> (<xref rid="j_infor642_eq_030">10</xref>).</p>
</caption>
<graphic xlink:href="infor642_g002.jpg"/>
</fig>
<table-wrap id="j_infor642_tab_002">
<label>Table 2</label>
<caption>
<p>Third experiment results. Here <italic>t</italic> is the largest imaginary part of the complex number <inline-formula id="j_infor642_ineq_062"><alternatives><mml:math>
<mml:mn>0.5</mml:mn>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">t</mml:mi></mml:math><tex-math><![CDATA[$0.5+it$]]></tex-math></alternatives></inline-formula> that produces <italic>d</italic> decimal digits of accuracy.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>d</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">1</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">2</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">3</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">4</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">5</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>t</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7433.07</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">652.66</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">72.52</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">18.29</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Not available</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="j_infor642_s_012">
<label>4.1.3</label>
<title>Third Experiment</title>
<p>As already noted, the special points <inline-formula id="j_infor642_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[${s_{k}}=1+2\pi ki/\log 2$]]></tex-math></alternatives></inline-formula> are the most challenging to compute using the <italic>MB</italic>-algorithm. In the third experiment, we sought to estimate the radius <italic>r</italic> of a circle within which we could expect <italic>d</italic> decimal digits of accuracy could be expected for the first 200 special points <inline-formula id="j_infor642_ineq_064"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{k}}$]]></tex-math></alternatives></inline-formula>. To this end, we constructed a <inline-formula id="j_infor642_ineq_065"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2000</mml:mn>
<mml:mo>×</mml:mo>
<mml:mn>2000</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${M_{2000\times 2000}}$]]></tex-math></alternatives></inline-formula> uniform square grid of complex points centred at each special point with <inline-formula id="j_infor642_ineq_066"><alternatives><mml:math>
<mml:mi mathvariant="italic">σ</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\sigma \in [1/2;3/2]$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_067"><alternatives><mml:math>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">π</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$t\in [2\pi k/\log 2-1/2;2\pi k/\log 2+1/2]$]]></tex-math></alternatives></inline-formula>. We repeated the experiment using <inline-formula id="j_infor642_ineq_068"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${2^{22}}$]]></tex-math></alternatives></inline-formula> points of the Sobol sequence. The comparison showed that the resulting error distributions were qualitatively similar to those obtained with the uniform grid. The corresponding results are presented in Fig. <xref rid="j_infor642_fig_004">4</xref>. Next, we calculated the Riemann zeta function for each of these points using the <italic>double</italic> (with <inline-formula id="j_infor642_ineq_069"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$d=10$]]></tex-math></alternatives></inline-formula> decimal digits of accuracy) and <italic>float</italic> algorithms and created a new <inline-formula id="j_infor642_ineq_070"><alternatives><mml:math>
<mml:mn>2000</mml:mn>
<mml:mo>×</mml:mo>
<mml:mn>2000</mml:mn></mml:math><tex-math><![CDATA[$2000\times 2000$]]></tex-math></alternatives></inline-formula> grid of log-errors 
<disp-formula id="j_infor642_eq_031">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⌊</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo movablelimits="false">lg</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em" stretchy="true">|</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">float</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">double</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em" stretchy="true">|</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">⌋</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>2000.</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{d}_{n,j}}=\big\lfloor -\lg \big|\zeta {({M_{n,j}})_{\textit{float}}}-\zeta {({M_{n,j}})_{\textit{double}}}\big|\big\rfloor ,\hspace{1em}1\leqslant n,j\leqslant 2000.\]]]></tex-math></alternatives>
</disp-formula> 
Note that <inline-formula id="j_infor642_ineq_071"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi></mml:math><tex-math><![CDATA[${\hat{d}_{n,j}}\in \mathbb{N}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_072"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[${\hat{d}_{n,j}}\in [1;10]$]]></tex-math></alternatives></inline-formula>; however, we have obtained <inline-formula id="j_infor642_ineq_073"><alternatives><mml:math>
<mml:mo movablelimits="false">max</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>4</mml:mn></mml:math><tex-math><![CDATA[$\max {\hat{d}_{n,j}}=4$]]></tex-math></alternatives></inline-formula>. A visual example of this grid for the 1st, 10th, 100th and 1000th special points can be seen in Fig. <xref rid="j_infor642_fig_003">3</xref>.</p>
<fig id="j_infor642_fig_003">
<label>Fig. 3</label>
<caption>
<p>Log-error grids for several special points <inline-formula id="j_infor642_ineq_074"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{k}}$]]></tex-math></alternatives></inline-formula>.</p>
</caption>
<graphic xlink:href="infor642_g003.jpg"/>
</fig>
<p>Next, we find the maximum distance for each fixed <inline-formula id="j_infor642_ineq_075"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi></mml:math><tex-math><![CDATA[${\hat{d}_{n,j}}=l$]]></tex-math></alternatives></inline-formula>, 
<disp-formula id="j_infor642_eq_032">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1.5pt"/>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>200.</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {r_{k,l}}=\underset{{\hat{d}_{n,j}}=l}{\max }|{M_{n,j}}-{s_{k}}|,\hspace{1em}1\leqslant l\leqslant 4,\hspace{1.5pt}1\leqslant k\leqslant 200.\]]]></tex-math></alternatives>
</disp-formula> 
The experiment results are presented in Fig. <xref rid="j_infor642_fig_004">4</xref>. The maximal <inline-formula id="j_infor642_ineq_076"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${r_{k,l}}$]]></tex-math></alternatives></inline-formula> value, <inline-formula id="j_infor642_ineq_077"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt></mml:math><tex-math><![CDATA[${r_{k,l}}=1/\sqrt{2}$]]></tex-math></alternatives></inline-formula>, is reached at the corner of the square grid (see Fig. <xref rid="j_infor642_fig_004">4</xref>). We can see that as a special point’s <italic>t</italic> value increases, so does the area around which Riemann zeta values are computed with <italic>l</italic> decimal digits of accuracy. It should also be noted that this precision area is not perfectly circular or uniform. This means we can still expect to compute higher precision Riemann zeta values within these areas.</p>
<fig id="j_infor642_fig_004">
<label>Fig. 4</label>
<caption>
<p>The third experiment results. Each coloured line represents the calculated <italic>r</italic> for the first 200 special points for different <inline-formula id="j_infor642_ineq_078"><alternatives><mml:math><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover></mml:math><tex-math><![CDATA[$\hat{d}$]]></tex-math></alternatives></inline-formula> values.</p>
</caption>
<graphic xlink:href="infor642_g004.jpg"/>
</fig>
</sec>
</sec>
<sec id="j_infor642_s_013">
<label>4.2</label>
<title>Parallelization Methods Comparison</title>
<p>The first experiment showed that an algorithm using <italic>float</italic> type variables is about 22 times faster than an equivalent algorithm using <italic>double</italic> type variables. However, the accuracy of the computations has dropped dramatically.</p>
<p>The second and third experiments aimed to evaluate the accuracy of the <italic>float</italic> algorithm. In the second experiment, we showed that the accuracy decreases as <italic>t</italic> increases. This makes sense because, as <italic>t</italic> increases, so does <italic>n</italic>. This means that the sum that gives us the Riemann zeta value contains more operations and, subsequently, more rounding errors. We have also noticed that the highest errors were obtained near the special points. In the third experiment, we further investigated the areas around special points. From the results, we can conclude that within a radius <inline-formula id="j_infor642_ineq_079"><alternatives><mml:math>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msqrt></mml:math><tex-math><![CDATA[$r=1/\sqrt{2}$]]></tex-math></alternatives></inline-formula> starting from the 25th special point, we can only expect 3 decimal digits of accuracy.</p>
<p>The low accuracy of the <italic>float</italic> algorithm makes it less suitable for any high-precision Riemann zeta value computations. However, it might still be suitable for visualizations where low precision might be enough. This phenomenon will be investigated further in the next section.</p>
</sec>
</sec>
<sec id="j_infor642_s_014">
<label>5</label>
<title>Visualization of 3D Fractals</title>
<p>Before rendering a Mandelbulb, recall how a two-dimensional Mandelbrot set is generated. The set consists of complex numbers <italic>c</italic> for which the function <inline-formula id="j_infor642_ineq_080"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi></mml:math><tex-math><![CDATA[${f_{c}}(z)={z^{2}}+c$]]></tex-math></alternatives></inline-formula> does not diverge when iterated from <inline-formula id="j_infor642_ineq_081"><alternatives><mml:math>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$z=0$]]></tex-math></alternatives></inline-formula>. The pixels representing these points are marked with a plus sign in Fig. <xref rid="j_infor642_fig_005">5</xref>. The other points are usually coloured according to the iteration number, at which the value exceeds some preset threshold. For a 2D fractal, this approach works effectively: pixels can be coloured on a plane, and the observer perceives the overall fractal structure from above (cf. Belovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor642_ref_002">2022</xref>). In contrast, while considering a three-dimensional analogue, the observer is placed within the diverging or non-diverging regions. In this context, the observer primarily perceives the boundary between the two regions rather than the regions themselves. Consequently, the traditional method of colouring pixels based on iteration count is insufficient for 3D visualization.</p>
<p>In this section, we outline two approaches to the visualization of Mandelbulbs, addressing these challenges and enabling the rendering of three-dimensional fractal structures.</p>
<fig id="j_infor642_fig_005">
<label>Fig. 5</label>
<caption>
<p>Closeup segment of the Mandelbrot set. The cells marked with the plus sign belong to the Mandelbrot set, and those with the minus sign do not. The striped cells represent the edge of the Mandelbrot fractal.</p>
</caption>
<graphic xlink:href="infor642_g005.jpg"/>
</fig>
<sec id="j_infor642_s_015">
<label>5.1</label>
<title>Ray Casting Approach</title>
<p>A classic method of visualizing 3D objects is using a ray casting graphics engine. This requires creating a polygon mesh representing an approximation of the object’s shape. A polygon mesh is a set of vertices connected by edges where three edges create a face. In the case of a Mandelbulb, the polygon mesh would have to represent the surface area between the regions that do and do not belong to the Mandelbulb. For this task, we can take inspiration from the 2D Mandelbrot fractal. In Fig. <xref rid="j_infor642_fig_005">5</xref>, we can see a closeup of the Mandelbrot set where the points that belong to the set are marked with a plus sign and the points that do not are marked with a minus sign. If we were a 2D observer, when placed in the minus region of the image, we could only see the edge of the fractal (the red cells). These red cells can be easily identified if they belong to the Mandelbrot set and have at least one adjacent cell that does not belong to the Mandelbrot set. For a 3D equivalent, we can divide the volume into cubes. Then, we can calculate whether the centre point of the cube belongs to the Mandelbulb and, thus, whether the cube should be visible. This approach would create a blocky polygon mesh. Surface smoothing algorithms could be used to smooth the surface of the polygon. This polygon might be suitable with a high enough resolution and looking from far enough away. However, we would be limited by the mesh’s size if we were to explore the fractal details of a Mandelbulb. The created model is also very rigid, meaning that if we would like to view a Mandelbulb of a different power, we would have to create an entirely new mesh. For these reasons, the ray casting approach is unsuitable for our task. However, it could still be useful for printing a Mandelbulb.</p>
</sec>
<sec id="j_infor642_s_016">
<label>5.2</label>
<title>Ray Marching Approach</title>
<p>A technique called ray marching is a way to visualize three-dimensional objects without using a polygon mesh of the object. This method instead uses signed distance functions (SDFs) to estimate the distance to an object. An SDF of an object takes a point’s coordinates as an argument and returns the distance to the closest point of the surface of that object. Then we modify a simple ray casting engine to use these SDFs to render an image of an object. SDFs can also be used to calculate surface normals of an object. This means that objects rendered using the ray marching method can be shaded. We can use ray marching to render Mandelbulbs. For that purpose, we need an SDF for a Mandelbulb, which luckily exists. Algorithm <xref rid="j_infor642_fig_006">1</xref> (Syntopia, <xref ref-type="bibr" rid="j_infor642_ref_009">2011</xref>) gives us the SDF for a Mandelbulb.</p>
<fig id="j_infor642_fig_006">
<label>Algorithm 1</label>
<caption>
<p>Signed distance function of a Mandelbulb. Here <italic>s</italic> – the three-dimensional coordinates of the origin point, <italic>p</italic> – the power of the Mandelbulb, <italic>k</italic> – the maximum number of iterations.</p>
</caption>
<graphic xlink:href="infor642_g006.jpg"/>
</fig>
</sec>
</sec>
<sec id="j_infor642_s_017">
<label>6</label>
<title>Zetabulb Visualization</title>
<p>As it has been concluded, we use the ray marching technique to render Zetabulbs. Several free ray marching engines that can visualize Mandelbulbs are available. However, none allow efficient CUDA utilization for the Riemann zeta function calculation. Therefore, we will create a basic ray marching engine from scratch. The engine’s source code and the <italic>MB</italic>-algorithm’s implementation can be found in Kuzma (<xref ref-type="bibr" rid="j_infor642_ref_005">2025</xref>). The new instrument will exhibit the following features: 
<list>
<list-item id="j_infor642_li_005">
<label>•</label>
<p>object rendering (for a given SDF);</p>
</list-item>
<list-item id="j_infor642_li_006">
<label>•</label>
<p>object colouring with a multi-colour gradient;</p>
</list-item>
<list-item id="j_infor642_li_007">
<label>•</label>
<p>object shading (for the object including ambient lighting);</p>
</list-item>
<list-item id="j_infor642_li_008">
<label>•</label>
<p>FXAA anti-aliasing (using fast approximate anti-aliasing algorithm);</p>
</list-item>
<list-item id="j_infor642_li_009">
<label>•</label>
<p>enabling camera movement with keyboard and mouse controls.</p>
</list-item>
</list>
</p>
<sec id="j_infor642_s_018">
<label>6.1</label>
<title>Zetabulb Signed Distance Function</title>
<p>Zetabulb visualization requires associating the Mandelbulb signed distance function with the Riemann zeta function. When combining a fractal with another object (e.g. shape, fractal, surface), we transform the fractal’s space by the object’s properties and then visualize the fractal in this new space. Thereby, we will combine the Mandelbulb with the surface of the Riemann zeta function.</p>
<p>The procedure is nontrivial. The Mandelbulb has a fractal surface; however, its volume is finite, whereas the Riemann zeta function’s domain is an infinite complex plane. Thus, the question arises: how do we combine a finite volume and an infinite plane? We will solve this problem by adding two more degrees of freedom: movements in the complex plane of the Riemann zeta function. This would allow the Mandelbulb to inherit the properties of a small section of the Riemann zeta functions surface rather than the entire plane. We can implement the new degrees of freedom by adding a complex point <italic>c</italic>. This point will associate the Mandelbulb with the Riemann zeta function.</p>
<p>The association of the complex plane and the Cartesian coordinate system can be accomplished in two steps. First, we compute the Riemann zeta function value <italic>z</italic> for an argument related to the point <italic>c</italic>. Next, we construct a new point <italic>η</italic> and compute the SDF of a Mandelbulb for this point. An example of this association is presented in Algorithm <xref rid="j_infor642_fig_007">2</xref>. Figure <xref rid="j_infor642_fig_008">6</xref> displays Zetabulbs obtained by several association methods. We will use the same principle when associating Mandelbulbs with Dirichlet <italic>L</italic>-functions.</p>
<fig id="j_infor642_fig_007">
<label>Algorithm 2</label>
<caption>
<p>Signed distance function of a Zetabulb. Here <italic>η</italic> – the three-dimensional coordinates of the origin point, <italic>p</italic> – the power of the Mandelbulb, <italic>k</italic> – the maximum number of iterations, <italic>c</italic> – the complex number used to associate the Mandelbulb with the real and imaginary surfaces of the Riemann zeta function.</p>
</caption>
<graphic xlink:href="infor642_g007.jpg"/>
</fig>
</sec>
<sec id="j_infor642_s_019">
<label>6.2</label>
<title>Visualization Quality</title>
<p>We have discovered that algorithms using <italic>float</italic> type variables perform <inline-formula id="j_infor642_ineq_082"><alternatives><mml:math>
<mml:mo stretchy="false">∼</mml:mo>
<mml:mn>22</mml:mn></mml:math><tex-math><![CDATA[$\sim 22$]]></tex-math></alternatives></inline-formula> times faster than equivalent ones employing <italic>double</italic> type variables. However, the second experiment showed that this gain comes with a significant loss in accuracy. In this section, we will determine how this loss of accuracy impacts Zetabulb image quality.</p>
<fig id="j_infor642_fig_008">
<label>Fig. 6</label>
<caption>
<p>Zetabulbs constructed using different association methods with identical <italic>c</italic> values. Values <italic>z</italic> and <italic>η</italic> correspond to the rows 2 and 3 of Algorithm <xref rid="j_infor642_fig_007">2</xref>.</p>
</caption>
<graphic xlink:href="infor642_g008.jpg"/>
</fig>
<fig id="j_infor642_fig_009">
<label>Algorithm 3</label>
<caption>
<p>Ray marching function used for the custom rendering tool. This function fires a ray from <inline-formula id="j_infor642_ineq_083"><alternatives><mml:math>
<mml:mtext mathvariant="italic">position</mml:mtext></mml:math><tex-math><![CDATA[$\textit{position}$]]></tex-math></alternatives></inline-formula> in <inline-formula id="j_infor642_ineq_084"><alternatives><mml:math>
<mml:mtext mathvariant="italic">direction</mml:mtext></mml:math><tex-math><![CDATA[$\textit{direction}$]]></tex-math></alternatives></inline-formula> until it hits or misses the object. Returns a colour for a pixel. It is assumed that the centre of the object defined by the SDF is at coordinates (0, 0, 0).</p>
</caption>
<graphic xlink:href="infor642_g009.jpg"/>
</fig>
<p>Algorithm <xref rid="j_infor642_fig_009">3</xref> defines the process of how each pixel is coloured. In total, the Riemann zeta function is called up to <inline-formula id="j_infor642_ineq_085"><alternatives><mml:math>
<mml:mtext mathvariant="italic">maximumSteps</mml:mtext></mml:math><tex-math><![CDATA[$\textit{maximumSteps}$]]></tex-math></alternatives></inline-formula> times and an additional 6 times when computing a surface normal if the ray hits the Zetabulb. Errors from having non-accurate Riemann zeta values can quickly accumulate and produce incorrect pixel colour values. We will perform an experiment to test how inaccurate the computed values are. First, we will generate ten Zetabulb images with <inline-formula id="j_infor642_ineq_086"><alternatives><mml:math>
<mml:mn>1</mml:mn>
<mml:mo>⩽</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$1\leqslant d\leqslant 10$]]></tex-math></alternatives></inline-formula> decimal digits of accuracy with the <italic>double</italic> algorithm and one with the <italic>float</italic> algorithm. We will call the image with 10 decimal digits of accuracy our benchmark and the others our test images. Then, we will calculate the colour accuracies of each image when compared to the benchmarks’ corresponding pixels.</p>
<p>To compute each pixel’s colour accuracies <inline-formula id="j_infor642_ineq_087"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\Delta E$]]></tex-math></alternatives></inline-formula>, we will use the CIEDE2000 algorithm (see Sharma <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor642_ref_008">2005</xref>)), an industry-standard, to evaluate how similar colours are, <inline-formula id="j_infor642_ineq_088"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in [0;100]$]]></tex-math></alternatives></inline-formula>. Empirically, these values can be categorized into the following groups:</p>
<list>
<list-item id="j_infor642_li_010">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_089"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$\Delta E=0$]]></tex-math></alternatives></inline-formula>. The colours are the same.</p>
</list-item>
<list-item id="j_infor642_li_011">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_090"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (0;1]$]]></tex-math></alternatives></inline-formula>. The colour differences are not perceptible by the human eye.</p>
</list-item>
<list-item id="j_infor642_li_012">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_091"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (1;2]$]]></tex-math></alternatives></inline-formula>. Perceptible through close observation.</p>
</list-item>
<list-item id="j_infor642_li_013">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_092"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (2;10]$]]></tex-math></alternatives></inline-formula>. Perceptible at a glance.</p>
</list-item>
<list-item id="j_infor642_li_014">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_093"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (10;50]$]]></tex-math></alternatives></inline-formula>. Colours are more similar than different.</p>
</list-item>
<list-item id="j_infor642_li_015">
<label>•</label>
<p><inline-formula id="j_infor642_ineq_094"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (50;100]$]]></tex-math></alternatives></inline-formula>. Colours are more different than similar.</p>
</list-item>
</list>
<p>In our experiment, we compute the percentages of pixels of our test images that fall in each group. By comparing the percentages of the <italic>float</italic> algorithm to the other test images, we should be able to evaluate the adequate visualization accuracy of the <italic>float</italic> algorithm.</p>
<p>Earlier, we have established that our implementation of the <italic>MB</italic>-algorithm will compute the coefficients <inline-formula id="j_infor642_ineq_095"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{\psi _{n,k}}\}$]]></tex-math></alternatives></inline-formula> for a maximum imaginary part <inline-formula id="j_infor642_ineq_096"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\max }}$]]></tex-math></alternatives></inline-formula> and <italic>d</italic> decimal digits of accuracy. The same coefficients <inline-formula id="j_infor642_ineq_097"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ψ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{\psi _{n,k}}\}$]]></tex-math></alternatives></inline-formula> will be used to compute Riemann zeta function values for <inline-formula id="j_infor642_ineq_098"><alternatives><mml:math>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$t\lt {t_{\max }}$]]></tex-math></alternatives></inline-formula>. Naturally, these values will be computed with higher decimal accuracy than <italic>d</italic>. This property of our algorithm makes it problematic to compute the Riemann zeta function values for arguments with different imaginary parts while maintaining exactly the same accuracy. For this reason, as a benchmark, we use values computed using the <italic>double</italic> algorithm with <inline-formula id="j_infor642_ineq_099"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$d=10$]]></tex-math></alternatives></inline-formula> decimal digits of accuracy. Next, by rounding down the benchmark values, we obtain Riemann zeta function values with lower accuracies.</p>
<table-wrap id="j_infor642_tab_003">
<label>Table 3</label>
<caption>
<p><italic>E</italic> values of the test images for Scenario 1. <italic>d</italic> – the decimal digits of accuracy with which an image was generated, and f stands for the <italic>float</italic> algorithm. Other columns lists the percentage of pixels that fall into each <inline-formula id="j_infor642_ineq_100"><alternatives><mml:math>
<mml:mo>△</mml:mo>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\triangle E$]]></tex-math></alternatives></inline-formula> category when compared with the benchmark image.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin"/>
<td colspan="6" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_101"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in $]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>d</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_102"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(0;1]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_103"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(1;2]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_104"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(2;10]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_105"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(10;50]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_106"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(50;100]$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">1</td>
<td style="vertical-align: top; text-align: left">31.93</td>
<td style="vertical-align: top; text-align: left">1.68</td>
<td style="vertical-align: top; text-align: left">1.52</td>
<td style="vertical-align: top; text-align: left">11.47</td>
<td style="vertical-align: top; text-align: left">39.96</td>
<td style="vertical-align: top; text-align: left">13.44</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left">35.04</td>
<td style="vertical-align: top; text-align: left">3.71</td>
<td style="vertical-align: top; text-align: left">3.15</td>
<td style="vertical-align: top; text-align: left">14.13</td>
<td style="vertical-align: top; text-align: left">33.97</td>
<td style="vertical-align: top; text-align: left">10.00</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left">43.39</td>
<td style="vertical-align: top; text-align: left">5.58</td>
<td style="vertical-align: top; text-align: left">3.34</td>
<td style="vertical-align: top; text-align: left">14.29</td>
<td style="vertical-align: top; text-align: left">27.59</td>
<td style="vertical-align: top; text-align: left">5.80</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left">59.41</td>
<td style="vertical-align: top; text-align: left">8.83</td>
<td style="vertical-align: top; text-align: left">4.74</td>
<td style="vertical-align: top; text-align: left">13.65</td>
<td style="vertical-align: top; text-align: left">11.50</td>
<td style="vertical-align: top; text-align: left">1.86</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5</td>
<td style="vertical-align: top; text-align: left">72.65</td>
<td style="vertical-align: top; text-align: left">15.18</td>
<td style="vertical-align: top; text-align: left">4.49</td>
<td style="vertical-align: top; text-align: left">5.42</td>
<td style="vertical-align: top; text-align: left">1.96</td>
<td style="vertical-align: top; text-align: left">0.29</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left">86.45</td>
<td style="vertical-align: top; text-align: left">10.94</td>
<td style="vertical-align: top; text-align: left">1.10</td>
<td style="vertical-align: top; text-align: left">1.08</td>
<td style="vertical-align: top; text-align: left">0.38</td>
<td style="vertical-align: top; text-align: left">0.05</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">7</td>
<td style="vertical-align: top; text-align: left">95.02</td>
<td style="vertical-align: top; text-align: left">4.21</td>
<td style="vertical-align: top; text-align: left">0.30</td>
<td style="vertical-align: top; text-align: left">0.33</td>
<td style="vertical-align: top; text-align: left">0.12</td>
<td style="vertical-align: top; text-align: left">0.02</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">8</td>
<td style="vertical-align: top; text-align: left">98.55</td>
<td style="vertical-align: top; text-align: left">1.23</td>
<td style="vertical-align: top; text-align: left">0.08</td>
<td style="vertical-align: top; text-align: left">0.09</td>
<td style="vertical-align: top; text-align: left">0.04</td>
<td style="vertical-align: top; text-align: left">0.00</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">9</td>
<td style="vertical-align: top; text-align: left">99.81</td>
<td style="vertical-align: top; text-align: left">0.17</td>
<td style="vertical-align: top; text-align: left">0.01</td>
<td style="vertical-align: top; text-align: left">0.01</td>
<td style="vertical-align: top; text-align: left">0.00</td>
<td style="vertical-align: top; text-align: left">0.00</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">f</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">90.32</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.89</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.63</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.67</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.32</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.15</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor642_tab_004">
<label>Table 4</label>
<caption>
<p><inline-formula id="j_infor642_ineq_107"><alternatives><mml:math>
<mml:mo>△</mml:mo>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\triangle E$]]></tex-math></alternatives></inline-formula> values of the test images for Scenario 2. <italic>d</italic> – the decimal digits of accuracy with which an image was generated, and f stands for the <italic>float</italic> algorithm. Other columns lists the percentage of pixels that fall into each <inline-formula id="j_infor642_ineq_108"><alternatives><mml:math>
<mml:mo>△</mml:mo>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\triangle E$]]></tex-math></alternatives></inline-formula> category when compared with the benchmark image.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin"/>
<td colspan="6" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_109"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in $]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>d</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_110"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(0;1]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_111"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(1;2]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_112"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(2;10]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_113"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(10;50]$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_114"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$(50;100]$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">1</td>
<td style="vertical-align: top; text-align: left">11.01</td>
<td style="vertical-align: top; text-align: left">2.18</td>
<td style="vertical-align: top; text-align: left">8.17</td>
<td style="vertical-align: top; text-align: left">15.46</td>
<td style="vertical-align: top; text-align: left">59.55</td>
<td style="vertical-align: top; text-align: left">9.53</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left">16.99</td>
<td style="vertical-align: top; text-align: left">4.39</td>
<td style="vertical-align: top; text-align: left">2.26</td>
<td style="vertical-align: top; text-align: left">17.41</td>
<td style="vertical-align: top; text-align: left">51.43</td>
<td style="vertical-align: top; text-align: left">6.36</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left">23.12</td>
<td style="vertical-align: top; text-align: left">5.88</td>
<td style="vertical-align: top; text-align: left">3.42</td>
<td style="vertical-align: top; text-align: left">21.24</td>
<td style="vertical-align: top; text-align: left">41.39</td>
<td style="vertical-align: top; text-align: left">3.95</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left">37.27</td>
<td style="vertical-align: top; text-align: left">17.01</td>
<td style="vertical-align: top; text-align: left">4.42</td>
<td style="vertical-align: top; text-align: left">22.20</td>
<td style="vertical-align: top; text-align: left">12.14</td>
<td style="vertical-align: top; text-align: left">1.04</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5</td>
<td style="vertical-align: top; text-align: left">54.97</td>
<td style="vertical-align: top; text-align: left">32.58</td>
<td style="vertical-align: top; text-align: left">10.33</td>
<td style="vertical-align: top; text-align: left">4.95</td>
<td style="vertical-align: top; text-align: left">1.89</td>
<td style="vertical-align: top; text-align: left">0.19</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left">83.61</td>
<td style="vertical-align: top; text-align: left">14.33</td>
<td style="vertical-align: top; text-align: left">5.42</td>
<td style="vertical-align: top; text-align: left">0.83</td>
<td style="vertical-align: top; text-align: left">0.37</td>
<td style="vertical-align: top; text-align: left">0.05</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">7</td>
<td style="vertical-align: top; text-align: left">94.82</td>
<td style="vertical-align: top; text-align: left">4.57</td>
<td style="vertical-align: top; text-align: left">0.82</td>
<td style="vertical-align: top; text-align: left">0.23</td>
<td style="vertical-align: top; text-align: left">0.13</td>
<td style="vertical-align: top; text-align: left">0.02</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">8</td>
<td style="vertical-align: top; text-align: left">98.42</td>
<td style="vertical-align: top; text-align: left">1.38</td>
<td style="vertical-align: top; text-align: left">0.22</td>
<td style="vertical-align: top; text-align: left">0.07</td>
<td style="vertical-align: top; text-align: left">0.04</td>
<td style="vertical-align: top; text-align: left">0.01</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">9</td>
<td style="vertical-align: top; text-align: left">99.79</td>
<td style="vertical-align: top; text-align: left">0.18</td>
<td style="vertical-align: top; text-align: left">0.07</td>
<td style="vertical-align: top; text-align: left">0.01</td>
<td style="vertical-align: top; text-align: left">0.01</td>
<td style="vertical-align: top; text-align: left">0.00</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">f</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">47.81</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">30.78</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.01</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">8.86</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.89</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.49</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For this experiment, we evaluate the visualization accuracy in two scenarios, with <inline-formula id="j_infor642_ineq_115"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>5</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Im }c=5$]]></tex-math></alternatives></inline-formula> and with <inline-formula id="j_infor642_ineq_116"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn></mml:math><tex-math><![CDATA[$\mathrm{\Im }c=500$]]></tex-math></alternatives></inline-formula>. We also produce a grayscale image of the <italic>float</italic> image with highlighted pixels that fall into the groups <inline-formula id="j_infor642_ineq_117"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (10;50]$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_118"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (50;100]$]]></tex-math></alternatives></inline-formula>. The computed <inline-formula id="j_infor642_ineq_119"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\Delta E$]]></tex-math></alternatives></inline-formula> values are presented in Tables <xref rid="j_infor642_tab_003">3</xref> and <xref rid="j_infor642_tab_004">4</xref>. Figure <xref rid="j_infor642_fig_010">7</xref> presents the generated images for each scenario.</p>
<p>According to Table <xref rid="j_infor642_tab_003">3</xref>, in Scenario 1 <inline-formula id="j_infor642_ineq_120"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(\mathrm{\Im }c=5)$]]></tex-math></alternatives></inline-formula> the effective visualization quality could be achieved between <inline-formula id="j_infor642_ineq_121"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>6</mml:mn></mml:math><tex-math><![CDATA[$d=6$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_122"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>7</mml:mn></mml:math><tex-math><![CDATA[$d=7$]]></tex-math></alternatives></inline-formula>. However, we can notice an unusually high number of very different pixels (groups <inline-formula id="j_infor642_ineq_123"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (10;50]$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_124"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (50;100]$]]></tex-math></alternatives></inline-formula>) for these quality ranges. In Fig. <xref rid="j_infor642_fig_011">7</xref>(f), we can see these pixels highlighted by the colours red and green, respectively. We can see a small green region in the bottom right of the image. The <italic>float</italic> algorithm appears to have generated a segment that does not exist in the benchmark image. After further investigation, we could see that the region exists, and the <italic>double</italic> algorithm could not generate it. Scenario 2 <inline-formula id="j_infor642_ineq_125"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(\mathrm{\Im }c=500)$]]></tex-math></alternatives></inline-formula> did not have such anomalies, and its effective precision could be evaluated as between <inline-formula id="j_infor642_ineq_126"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>4</mml:mn></mml:math><tex-math><![CDATA[$d=4$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_127"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>5</mml:mn></mml:math><tex-math><![CDATA[$d=5$]]></tex-math></alternatives></inline-formula> in all <inline-formula id="j_infor642_ineq_128"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi></mml:math><tex-math><![CDATA[$\Delta E$]]></tex-math></alternatives></inline-formula> categories. As we can see, by increasing <inline-formula id="j_infor642_ineq_129"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi></mml:math><tex-math><![CDATA[$\mathrm{\Im }c$]]></tex-math></alternatives></inline-formula>, we experienced a degradation in image visualization quality.</p>
<p>With the third experiment, we have discovered that the <italic>float</italic> algorithm is inaccurate when computing the Riemann zeta function values in the neighbourhoods of the special points <inline-formula id="j_infor642_ineq_130"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${s_{k}}$]]></tex-math></alternatives></inline-formula>. Scenario 3 aims to investigate Zetabulbs generated near one of these points. Figure <xref rid="j_infor642_fig_012">8</xref>(a) was generated using the <italic>double</italic> algorithm with <inline-formula id="j_infor642_ineq_131"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$d=10$]]></tex-math></alternatives></inline-formula> decimal digits of accuracy, whereas Fig. <xref rid="j_infor642_fig_012">8</xref>(b) was generated using the <italic>float</italic> algorithm. We can see that the <italic>float</italic> algorithm generated different although similar structures.</p>
<fig id="j_infor642_fig_010">
<label>Fig. 7</label>
<caption>
<p>Zetabulb images with different Riemann zeta value precisions for Scenario 1 <inline-formula id="j_infor642_ineq_132"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(\mathrm{\Im }c=5)$]]></tex-math></alternatives></inline-formula>. Subfigures (a) through (d) were generated with the <italic>double</italic> algorithm and lower precision. Subfigure (e) was generated with the <italic>float</italic> algorithm. Subfigure (f) is a grayscale version of (e) with pixels that fall into the category <inline-formula id="j_infor642_ineq_133"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (10;50]$]]></tex-math></alternatives></inline-formula> highlighted red and <inline-formula id="j_infor642_ineq_134"><alternatives><mml:math>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi mathvariant="italic">E</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>50</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$\Delta E\in (50;100]$]]></tex-math></alternatives></inline-formula> highlighted green.</p>
</caption>
<graphic xlink:href="infor642_g010.jpg"/>
</fig>
<fig id="j_infor642_fig_011">
<label>Fig. 7</label>
<caption>
<p>(<italic>continued</italic>)</p>
</caption>
<graphic xlink:href="infor642_g011.jpg"/>
</fig>
<fig id="j_infor642_fig_012">
<label>Fig. 8</label>
<caption>
<p>Zetabulb images for Scenario 3 <inline-formula id="j_infor642_ineq_135"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>163.165</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(\mathrm{\Im }c=163.165)$]]></tex-math></alternatives></inline-formula> (18th special point). Subfigure (a) was generated using the <italic>double</italic> algorithm with <inline-formula id="j_infor642_ineq_136"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$d=10$]]></tex-math></alternatives></inline-formula> decimal digits of accuracy, and (b) was generated using the <italic>float</italic> algorithm.</p>
</caption>
<graphic xlink:href="infor642_g012.jpg"/>
</fig>
</sec>
<sec id="j_infor642_s_020">
<label>6.3</label>
<title>Visualization Performance</title>
<p>In this subsection, we evaluate the real-time Zetabulb visualization performance. We measure the average FPS (frames per second) that our Zetabulb visualization instrument can achieve with <italic>float</italic> and <italic>double</italic> algorithms and different GPUs in four experiments, each containing four scenarios lasting for 30 seconds:</p>
<list>
<list-item id="j_infor642_li_016">
<label>•</label>
<p>Scenario A. Mandelbulb with no movement.</p>
</list-item>
<list-item id="j_infor642_li_017">
<label>•</label>
<p>Scenario B. Mandelbulb with a varying power.</p>
</list-item>
<list-item id="j_infor642_li_018">
<label>•</label>
<p>Scenario C. Zetabulb with no movement and set <inline-formula id="j_infor642_ineq_137"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\max }}$]]></tex-math></alternatives></inline-formula> value.</p>
</list-item>
<list-item id="j_infor642_li_019">
<label>•</label>
<p>Scenario D. Zetabulb with increasing <inline-formula id="j_infor642_ineq_138"><alternatives><mml:math>
<mml:mi mathvariant="normal">ℑ</mml:mi>
<mml:mi mathvariant="italic">c</mml:mi></mml:math><tex-math><![CDATA[$\mathrm{\Im }c$]]></tex-math></alternatives></inline-formula> and set <inline-formula id="j_infor642_ineq_139"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\max }}$]]></tex-math></alternatives></inline-formula> value.</p>
</list-item>
</list>
<table-wrap id="j_infor642_tab_005">
<label>Table 5</label>
<caption>
<p>Four tests of visualization performance (in FPS). First – <italic>float</italic> type variables with <inline-formula id="j_infor642_ineq_140"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>50</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=50$]]></tex-math></alternatives></inline-formula>, second – <italic>float</italic> type with <inline-formula id="j_infor642_ineq_141"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=500$]]></tex-math></alternatives></inline-formula>, third – <italic>double</italic> type with <inline-formula id="j_infor642_ineq_142"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>50</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=50$]]></tex-math></alternatives></inline-formula>, fourth – <italic>double</italic> type with <inline-formula id="j_infor642_ineq_143"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=500$]]></tex-math></alternatives></inline-formula>. The required memory in bytes to store the coefficients in VRAM is given for each of the tests. All the tests were performed on two GPUs: RTX 3080 and GTX 1060 Mobile. Values marked in blue denote satisfactory results.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin">Variable</td>
<td colspan="4" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin"><italic>float</italic> type</td>
<td colspan="4" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin"><italic>double</italic> type</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Test</td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_144"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{1}}$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_145"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{2}}$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_146"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{3}}$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_147"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{4}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>t</italic></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_148"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>50</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=50$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_149"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=500$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_150"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>50</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=50$]]></tex-math></alternatives></inline-formula></td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_151"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>500</mml:mn></mml:math><tex-math><![CDATA[${t_{\max }}=500$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Memory, bytes</td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin">192</td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin">384</td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin">1200</td>
<td colspan="2" style="vertical-align: top; text-align: center; border-bottom: solid thin">2400</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Scenario</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>RTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>GTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>RTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>GTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>RTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>GTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>RTX</italic></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><italic>GTX</italic></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">A</td>
<td style="vertical-align: top; text-align: left">129.71</td>
<td style="vertical-align: top; text-align: left">21.31</td>
<td style="vertical-align: top; text-align: left">126.71</td>
<td style="vertical-align: top; text-align: left">21.10</td>
<td style="vertical-align: top; text-align: left">7.12</td>
<td style="vertical-align: top; text-align: left">1.97</td>
<td style="vertical-align: top; text-align: left">7.17</td>
<td style="vertical-align: top; text-align: left">1.98</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">B</td>
<td style="vertical-align: top; text-align: left">137.89</td>
<td style="vertical-align: top; text-align: left">22.03</td>
<td style="vertical-align: top; text-align: left">142.14</td>
<td style="vertical-align: top; text-align: left">21.30</td>
<td style="vertical-align: top; text-align: left">6.68</td>
<td style="vertical-align: top; text-align: left">1.94</td>
<td style="vertical-align: top; text-align: left">7.44</td>
<td style="vertical-align: top; text-align: left">1.96</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">C</td>
<td style="vertical-align: top; text-align: left">27.35</td>
<td style="vertical-align: top; text-align: left">3.99</td>
<td style="vertical-align: top; text-align: left">5.78</td>
<td style="vertical-align: top; text-align: left">0.97</td>
<td style="vertical-align: top; text-align: left">0.11</td>
<td style="vertical-align: top; text-align: left">0.03</td>
<td style="vertical-align: top; text-align: left">0.02</td>
<td style="vertical-align: top; text-align: left">0.005</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">D</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">27.26</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">3.87</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">5.60</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.87</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.11</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.02</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.02</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.005</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The visualization performance results are presented in Table <xref rid="j_infor642_tab_005">5</xref>. The human eye needs at least 24 FPS to perceive a video as smooth, so this is the value that we will consider satisfactory (coloured blue in Table <xref rid="j_infor642_tab_005">5</xref>). As discussed before, using <italic>double</italic> type variables in CUDA computations significantly increases performance time. We can see this effect again when comparing the results of <inline-formula id="j_infor642_ineq_152"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{1}}$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor642_ineq_153"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{3}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor642_ineq_154"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{2}}$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor642_ineq_155"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{4}}$]]></tex-math></alternatives></inline-formula> where the <italic>double</italic> algorithm could not achieve even a single frame per second.</p>
<p>Scenarios A and B are used as benchmarks. As discussed before, this work required the creation of a custom ray marching graphics engine to test the <italic>EMB</italic>-algorithm efficiently. In order to show that this engine does not hinder the results, regular Mandelbulb images were generated. Scenarios A and C produce static scenes, whereas B and D produce dynamic scenes. We can see no difference in performance between static and dynamic scene results. This can be viewed as both an advantage and a disadvantage. Our tool does not have a feature that would cache pixel values if no scene parameters change between frames. However, this also means that changing scene parameters between frames has no impact on the performance, so we can create videos of transforming fractals at high frame rates.</p>
<p>The real-time Zetabulb visualization performance results were poor when using the GTX 1060; however, the RTX 3080 produced satisfactory results in <inline-formula id="j_infor642_ineq_156"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{1}}$]]></tex-math></alternatives></inline-formula>. It should be noted that the RTX 3080 GPU is now over three years old, and faster GPUs exist on the market. The usage of newer GPUs could produce even better performance results. We conclude that the proposed algorithm produces satisfactory results with low <inline-formula id="j_infor642_ineq_157"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo movablelimits="false">max</mml:mo>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${t_{\max }}$]]></tex-math></alternatives></inline-formula> values and higher-end GPUs.</p>
</sec>
<sec id="j_infor642_s_021">
<label>6.4</label>
<title>Visualization Results</title>
<p>In this subsection, we will provide Zetabulb images with <italic>c</italic> values near interesting features of the Riemann zeta function surface. All of the Figs. <xref rid="j_infor642_fig_014">10</xref>(a) through <xref rid="j_infor642_fig_014">10</xref>(b) depicting Zetabulbs were generated using Algorithm <xref rid="j_infor642_fig_009">3</xref> where the SDF is set to Algorithm <xref rid="j_infor642_fig_007">2</xref> using both the Riemann zeta function (which we will call Riemann Zetabulbs) and the Dirichlet <italic>L</italic>-function (Dirichlet Zetabulbs) with the character <inline-formula id="j_infor642_ineq_158"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\chi _{5,4}}$]]></tex-math></alternatives></inline-formula> (exact value shown in Table <xref rid="j_infor642_tab_006">6</xref>).</p>
<table-wrap id="j_infor642_tab_006">
<label>Table 6</label>
<caption>
<p>Dirichlet character <inline-formula id="j_infor642_ineq_159"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\chi _{5,4}}$]]></tex-math></alternatives></inline-formula>. Note that <inline-formula id="j_infor642_ineq_160"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[${\chi _{5,4}}(-1)={\chi _{5,4}}(4)=1$]]></tex-math></alternatives></inline-formula>.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>n</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">1</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">2</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">3</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">4</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor642_ineq_161"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">χ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\chi _{5,4}}(n)$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">−1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">−1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The argument value <italic>c</italic> for Algorithm <xref rid="j_infor642_fig_007">2</xref> has to be chosen carefully. Let us consider <italic>ε</italic>-neighbourhood of the point <italic>c</italic>. The algorithm will produce normal Mandelbulbs if <inline-formula id="j_infor642_ineq_162"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ε</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$|\zeta (c+\varepsilon )|\approx 0$]]></tex-math></alternatives></inline-formula>. If <inline-formula id="j_infor642_ineq_163"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ε</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$|\zeta (c+\varepsilon )$]]></tex-math></alternatives></inline-formula> has very large values, the algorithm will not produce any fractal structures. Ideally, we want to position the point <italic>c</italic> where <inline-formula id="j_infor642_ineq_164"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">ε</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$|\zeta (c+\varepsilon )|\in (0;5]$]]></tex-math></alternatives></inline-formula> and where there is a lot of variance in the nearby values. The Riemann zeta function values can be divided into five regions: the pole, the critical strip, the plateau to the right of the critical strip where <inline-formula id="j_infor642_ineq_165"><alternatives><mml:math>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$\zeta (c)\approx 1$]]></tex-math></alternatives></inline-formula>, the wall to the left of the critical strip where <inline-formula id="j_infor642_ineq_166"><alternatives><mml:math>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\zeta (c)$]]></tex-math></alternatives></inline-formula> values are very large, and the small triangular plateau to the left of the pole where <inline-formula id="j_infor642_ineq_167"><alternatives><mml:math>
<mml:mi mathvariant="italic">ζ</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$\zeta (c)\approx 0$]]></tex-math></alternatives></inline-formula>. Figure <xref rid="j_infor642_fig_013">9</xref> shows all five of these regions. The points that fit the criteria for generating fractal structures lie on the boundaries of all regions and the entire critical strip.</p>
<fig id="j_infor642_fig_013">
<label>Fig. 9</label>
<caption>
<p>The real (yellow) and the imaginary (red) parts of the Riemann zeta function and the five principal regions: the pole neighbourhood (1), the critical strip (2), the plateau to the right of the critical strip (3), the wall to the left of the critical strip (4), and the triangular plateau (5).</p>
</caption>
<graphic xlink:href="infor642_g013.jpg"/>
</fig>
<p>We selected three points to showcase in this work. As the first point, we chose the pole of the Riemann zeta function <inline-formula id="j_infor642_ineq_168"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:math><tex-math><![CDATA[$c=1$]]></tex-math></alternatives></inline-formula>. Here, the large values of the pole region completely remove the middle of the Mandelbulb, leaving a bow-shaped structure with holes, which can be seen in Figs. <xref rid="j_infor642_fig_014">10</xref>(a) and <xref rid="j_infor642_fig_014">10</xref>(b). For comparison, the Dirichlet <italic>L</italic>-function does not have a pole, thus the Zetabulb in Fig. <xref rid="j_infor642_fig_014">10</xref>(c) appears similar to a regular Mandelbulb.</p>
<fig id="j_infor642_fig_014">
<label>Fig. 10</label>
<caption>
<p>(a) Riemann Zetabulb centered on the pole. (b) Side view of the same Zetabulb. (c) Dirichlet Zetabulb centered on the pole.</p>
</caption>
<graphic xlink:href="infor642_g014.jpg"/>
</fig>
<p>We chose the seventh trivial zero of the Riemann zeta function <inline-formula id="j_infor642_ineq_169"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>7</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$c={\rho _{7}}$]]></tex-math></alternatives></inline-formula> for the second point of interest. The corresponding fractal is visualized in Fig. <xref rid="j_infor642_fig_015">11</xref>(a). The Riemann zeta function has trivial zeroes at points <inline-formula id="j_infor642_ineq_170"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">k</mml:mi></mml:math><tex-math><![CDATA[${\rho _{k}}=-2k$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor642_ineq_171"><alternatives><mml:math>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi></mml:math><tex-math><![CDATA[$k\in \mathbb{N}$]]></tex-math></alternatives></inline-formula>. The trivial zeroes <inline-formula id="j_infor642_ineq_172"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\rho _{k}}$]]></tex-math></alternatives></inline-formula>, with <inline-formula id="j_infor642_ineq_173"><alternatives><mml:math>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>;</mml:mo>
<mml:mn>6</mml:mn>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$k\in [1;6]$]]></tex-math></alternatives></inline-formula> lie in the triangular plateau. An example of one such fractal is presented in Fig. <xref rid="j_infor642_fig_015">11</xref>(b). Whereas, the trivial zeroes with <inline-formula id="j_infor642_ineq_174"><alternatives><mml:math>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mn>8</mml:mn>
<mml:mo>;</mml:mo>
<mml:mi>∞</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$k\in [8;\infty )$]]></tex-math></alternatives></inline-formula> belong to the wall region. This leaves only the point <inline-formula id="j_infor642_ineq_175"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ρ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>7</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\rho _{7}}$]]></tex-math></alternatives></inline-formula> to produce distinct structures when compared to the original Mandelbulb (see Fig. <xref rid="j_infor642_fig_015">11</xref>) which is calculated using Algorithm <xref rid="j_infor642_fig_006">1</xref>.</p>
<fig id="j_infor642_fig_015">
<label>Fig. 11</label>
<caption>
<p>(a) Riemann Zetabulb centred on the 7th trivial zero. (b) Riemann Zetabulb centred on the 5th trivial zero. (c) Original Mandelbulb.</p>
</caption>
<graphic xlink:href="infor642_g015.jpg"/>
</fig>
<p>As the final point of interest, we have selected the fourth nontrivial zero of the Riemann zeta function <inline-formula id="j_infor642_ineq_176"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>30.42487</mml:mn>
<mml:mi mathvariant="italic">i</mml:mi></mml:math><tex-math><![CDATA[$c={\gamma _{4}}=1/2+30.42487i$]]></tex-math></alternatives></inline-formula>. At this point, most of the fractal structure forms a round blob, whereas the top of the fractal is slightly extended, creating a bottle-like shape that can be seen in Figs. <xref rid="j_infor642_fig_016">12</xref>(a) and <xref rid="j_infor642_fig_016">12</xref>(b).</p>
<fig id="j_infor642_fig_016">
<label>Fig. 12</label>
<caption>
<p>(a) Riemann Zetabulb centred on the fourth non-trivial zero <inline-formula id="j_infor642_ineq_177"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">γ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$c={\gamma _{4}}$]]></tex-math></alternatives></inline-formula>. Note a bottle-like shape. (b) Closeup image of the bottleneck of the previous Zetabulb. (c) and (d) Dirichlet Zetabulbs centred on the fourth non-trivial zero of the Riemann zeta function. (e) and (f) Dirichlet Zetabulbs centred on the fourth non-trivial zero of the Dirichlet <italic>L</italic>-function (<inline-formula id="j_infor642_ineq_178"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>+</mml:mo>
<mml:mn>16.03382</mml:mn>
<mml:mi mathvariant="italic">i</mml:mi></mml:math><tex-math><![CDATA[$c=1/2+16.03382i$]]></tex-math></alternatives></inline-formula>).</p>
</caption>
<graphic xlink:href="infor642_g016.jpg"/>
</fig>
</sec>
</sec>
<sec id="j_infor642_s_022">
<label>7</label>
<title>Conclusions</title>
<p>This work aimed to create efficient algorithms, which would be the base of a software instrument for visualizing Mandelbulb fractals associated with the Riemann zeta function and the Dirichlet <italic>L</italic>-function (Zetabulbs). To the author’s knowledge, this is the first investigation and application of Zetabulbs. To achieve this goal, parallel technologies have been applied to speed up <italic>MB</italic>-algorithm and technologies designed for fractal visualization and application have been studied and implemented.</p>
<sec id="j_infor642_s_023">
<label>7.1</label>
<title><italic>MB</italic>-Algorithm Parallelization Conclusions</title>
<p>
<list>
<list-item id="j_infor642_li_020">
<label>•</label>
<p>Two versions of the optimal approach (one using <italic>float</italic> type variables and one using <italic>double</italic> type variables) have been compared. The conclusion is that the <italic>float</italic> algorithm is much faster (<inline-formula id="j_infor642_ineq_179"><alternatives><mml:math>
<mml:mo stretchy="false">∼</mml:mo>
<mml:mn>22</mml:mn></mml:math><tex-math><![CDATA[$\sim 22$]]></tex-math></alternatives></inline-formula> times) while being less accurate and unsuitable for precise Riemann zeta function computation.</p>
</list-item>
<list-item id="j_infor642_li_021">
<label>•</label>
<p>Next, we have noticed that the <italic>float</italic> algorithm accuracy correlates with the imaginary part of the argument of the Riemann zeta function. Moreover, the highest errors have been obtained in the <italic>ε</italic>-neighbourhoods of the special points. Hence, the <italic>float</italic> algorithm should not be used for any precise Riemann zeta function calculations on these domains.</p>
</list-item>
</list>
</p>
</sec>
<sec id="j_infor642_s_024">
<label>7.2</label>
<title>Zetabulb Visualizations Conclusions</title>
<list>
<list-item id="j_infor642_li_022">
<label>•</label>
<p>Six different signed distance functions (SDFs) to produce Zetabulb images have been proposed. All the proposed functions have produced satisfactory results in different but still aesthetically appealing fractal structures.</p>
</list-item>
<list-item id="j_infor642_li_023">
<label>•</label>
<p>The problem of sufficient (practical) accuracy of the <italic>float</italic> algorithm compared to <italic>double</italic> algorithm for Zetabulb visualization has been considered. The conclusion is that the <italic>float</italic> algorithm is applicable for Zetabulb visualization (for non-scientific, e.g. cinematographic purposes) despite a certain accuracy deterioration with an increase of the imaginary part of the argument.</p>
</list-item>
</list>
<p>The presented 3D fractal (Zetabulb) images generating computer graphics software tool could be used as a base for SFX and CGI in film-making, as well as the investigation of underlying properties of the Riemann zeta function.</p>
</sec>
</sec>
</body>
<back>
<ref-list id="j_infor642_reflist_001">
<title>References</title>
<ref id="j_infor642_ref_001">
<mixed-citation publication-type="journal"><string-name><surname>Belovas</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Sakalauskas</surname>, <given-names>L.</given-names></string-name> (<year>2018</year>). <article-title>Limit theorems for the coefficients of the modified Borwein method for the calculation of the Riemann zeta-function values</article-title>. <source>Colloquium Mathematicum</source>, <volume>151</volume>(<issue>2</issue>), <fpage>217</fpage>–<lpage>227</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.4064/cm7086-2-2017" xlink:type="simple">https://doi.org/10.4064/cm7086-2-2017</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_002">
<mixed-citation publication-type="journal"><string-name><surname>Belovas</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Kuzma</surname>, <given-names>L.</given-names></string-name> (<year>2022</year>). <article-title>Series with binomial-like coefficients for the investigation of fractal structures associated with the Riemann zeta function</article-title>. <source>Fractal and Fractional</source>, <volume>27</volume>(<issue>1</issue>). <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.3390/fractalfract6060300" xlink:type="simple">https://doi.org/10.3390/fractalfract6060300</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_003">
<mixed-citation publication-type="chapter"><string-name><surname>Borwein</surname>, <given-names>P.</given-names></string-name> (<year>2000</year>). <chapter-title>An efficient algorithm for the Riemann zeta function</chapter-title>. In: <source>Constructive, experimental, and nonlinear analysis; Canadian Mathematical Society Conference Proceedings; Théra, M., Ed.; American Mathematical Society, Providence, RI, USA</source>, Vol. <volume>27</volume>, pp. <fpage>29</fpage>–<lpage>34</lpage>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_004">
<mixed-citation publication-type="journal"><string-name><surname>Kumar</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Bhaskar</surname>, <given-names>L.</given-names></string-name> (<year>2025</year>). <article-title>Dynamic Mandelbulb fractals: a mathematical framework for time-evolving 3D fractals using distance estimation</article-title>. <source>Chaos, Solitons and Fractals</source>, <volume>199</volume>(<issue>3</issue>), <fpage>116829</fpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.chaos.2025.116829" xlink:type="simple">https://doi.org/10.1016/j.chaos.2025.116829</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_005">
<mixed-citation publication-type="other"><string-name><surname>Kuzma</surname>, <given-names>L.</given-names></string-name> (2025). Zetabulber source code. <uri>https://github.com/Zetabulb/Zetabulber</uri>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_006">
<mixed-citation publication-type="other"><string-name><surname>NVIDIA</surname></string-name> (2023). CUDA Arithmetic Instructions performance table. <ext-link ext-link-type="uri" xlink:href="https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions">https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_007">
<mixed-citation publication-type="other"><string-name><surname>NVIDIA</surname></string-name> (2026). CUDA. <uri>https://developer.nvidia.com/cuda</uri>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Sharma</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Dalal</surname>, <given-names>E.N.</given-names></string-name> (<year>2005</year>). <article-title>The CIEDE2000 color-difference formula: implementation notes, supplementary test data, and mathematical observations</article-title>. <source>Color Research &amp; Application</source>, <volume>30</volume>(<issue>1</issue>), <fpage>21</fpage>–<lpage>30</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1002/col.20070" xlink:type="simple">https://doi.org/10.1002/col.20070</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_009">
<mixed-citation publication-type="other"><string-name><surname>Syntopia</surname></string-name> (2011). Syntopia, Distance Estimated 3D Fractals (V): The Mandelbulb &amp; Different DE Approximations. <ext-link ext-link-type="uri" xlink:href="http://blog.hvidtfeldts.net/index.php/2011/09/distance-estimated-3d-fractals-v-the-mandelbulb-different-de-approximations/">http://blog.hvidtfeldts.net/index.php/2011/09/distance-estimated-3d-fractals-v-the-mandelbulb-different-de-approximations/</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Ugwu</surname>, <given-names>C.I.</given-names></string-name>, <string-name><surname>Caruso</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Lanz</surname>, <given-names>O.</given-names></string-name> (<year>2024</year>). <article-title>Fractals as pre-training datasets for anomaly detection and localization</article-title>. <source>Fractal and Fractional</source>, <volume>8</volume>(<issue>11</issue>), <fpage>661</fpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.3390/fractalfract8110661" xlink:type="simple">https://doi.org/10.3390/fractalfract8110661</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor642_ref_011">
<mixed-citation publication-type="journal"><string-name><surname>Šleževičiene</surname>, <given-names>R.</given-names></string-name> (<year>2004</year>). <article-title>An efficient algorithm for computing Dirichlet <italic>L</italic>-functions</article-title>. <source>Integral Transforms and Special Functions</source>, <volume>15</volume>(<issue>6</issue>), <fpage>513</fpage>–<lpage>522</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1080/1065246042000272072" xlink:type="simple">https://doi.org/10.1080/1065246042000272072</ext-link>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
