<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Multiple precision problem]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte folgendes Problem lösen:</p>
<pre><code class="language-cpp">double a0,b0,c0,a1,b1,c1,t1,t2; // TODO: Use an exact type
...
t1=(a0-c0) * (b1-c1);
t2=(a1-c1) * (b0-c0);

if(t1&lt;t2) cout &lt;&lt; &quot;t1&lt;t2&quot;&lt;&lt;endl;
  else if (t1&gt;t2) cout&lt;&lt; &quot;t1&gt;t2&quot;&lt;&lt;endl;
    else cout&lt;&lt;&quot;t1==t2&quot;&lt;&lt;endl;
</code></pre>
<p>Da die Präzision von einem gewöhnlichen Double nicht ausreicht, sollen<br />
a0,b0,c0,a1,b1,c1 einen exakten Typ haben, mit dem t1 und t2 berechnet<br />
und der Vergleich zuverlässig durchgeführt werden kann. Nun scheint es<br />
aber so, daß man bei MPFR bzw. GMP die Präzision vorgeben muß, mit der<br />
gerechnet wird. Die kann aber doch beliebig hoch sein..</p>
<p>Ideen, wie man das löst? Ich habe bisher nicht mit multiple precision<br />
libraries gearbeitet, vielleicht gibts da einen Trick?</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287415/multiple-precision-problem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 10:34:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287415.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 May 2011 07:52:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multiple precision problem on Sat, 28 May 2011 07:52:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte folgendes Problem lösen:</p>
<pre><code class="language-cpp">double a0,b0,c0,a1,b1,c1,t1,t2; // TODO: Use an exact type
...
t1=(a0-c0) * (b1-c1);
t2=(a1-c1) * (b0-c0);

if(t1&lt;t2) cout &lt;&lt; &quot;t1&lt;t2&quot;&lt;&lt;endl;
  else if (t1&gt;t2) cout&lt;&lt; &quot;t1&gt;t2&quot;&lt;&lt;endl;
    else cout&lt;&lt;&quot;t1==t2&quot;&lt;&lt;endl;
</code></pre>
<p>Da die Präzision von einem gewöhnlichen Double nicht ausreicht, sollen<br />
a0,b0,c0,a1,b1,c1 einen exakten Typ haben, mit dem t1 und t2 berechnet<br />
und der Vergleich zuverlässig durchgeführt werden kann. Nun scheint es<br />
aber so, daß man bei MPFR bzw. GMP die Präzision vorgeben muß, mit der<br />
gerechnet wird. Die kann aber doch beliebig hoch sein..</p>
<p>Ideen, wie man das löst? Ich habe bisher nicht mit multiple precision<br />
libraries gearbeitet, vielleicht gibts da einen Trick?</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2070016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2070016</guid><dc:creator><![CDATA[hurtles]]></dc:creator><pubDate>Sat, 28 May 2011 07:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to Multiple precision problem on Sat, 28 May 2011 08:49:55 GMT]]></title><description><![CDATA[<p>Du wirst dich schon auf eine bestimmte Genauigkeit festsetzen müssen. Denn absolute genauigkeit geht nicht.<br />
Ansonten könntest du z.B. Pi mit allen Stellen speichern. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Oder um es noch einfacher zu zeigen:</p>
<p>x = 1 / 3</p>
<p>Nun ist x 0,3333333333333333333333333333333333333333333333333333333333...</p>
<p>Du würdest nun unendlich Speicher benötigen um diese Zahl in einem Komma Format zu speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2070031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2070031</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Sat, 28 May 2011 08:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Multiple precision problem on Sat, 28 May 2011 09:00:50 GMT]]></title><description><![CDATA[<p>Osbios schrieb:</p>
<blockquote>
<p>Du wirst dich schon auf eine bestimmte Genauigkeit festsetzen müssen. Denn absolute genauigkeit geht nicht.<br />
Ansonten könntest du z.B. Pi mit allen Stellen speichern. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Oder um es noch einfacher zu zeigen:</p>
<p>x = 1 / 3</p>
<p>Nun ist x 0,3333333333333333333333333333333333333333333333333333333333...</p>
<p>Du würdest nun unendlich Speicher benötigen um diese Zahl in einem Komma Format zu speichern.</p>
</blockquote>
<p>Auch 1/3 geht: Hier rechnet man mit rationalen Zahlen. Die scheinen übrigens<br />
die Lösung für mein Problem zu sein. Ich lese gerade die Doku.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2070038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2070038</guid><dc:creator><![CDATA[hurtles]]></dc:creator><pubDate>Sat, 28 May 2011 09:00:50 GMT</pubDate></item><item><title><![CDATA[Reply to Multiple precision problem on Mon, 30 May 2011 11:11:22 GMT]]></title><description><![CDATA[<p>Ja, was ist denn das Problem überhaupt? Eventuell kann man das ja auch anders lösen.</p>
<p>Ich erinnere mich da an früher, wo ich ein Least-Squares-Problem über das Normalgleichungssystem gelöst habe. Später habe ich gelernt, dass das numerisch eine sehr schlechte Idee ist, weil man sich so die Genauigkeit kaputt macht. Ich hatte mit dem Ansatz auch Genauigkeitsprobleme. Alternativ kann man das ursprüngliche Gleichungssystem per Householder-Transformationen auf Dreiecksgestalt bringen und dann direkt lösen. Das ist numerisch <em>viel</em> besser. Es ist nur ein Beispiel dafür, dass man nicht unbedingt mega-genaue Zahlentypen braucht. Ein gescheiter Ansatz/Algorithmus tut's manchmal auch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2070913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2070913</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 30 May 2011 11:11:22 GMT</pubDate></item></channel></rss>