so already existing code is used.
<ul>
-<li><a href="#prototype">Prototype</a>
+<li><a href="#code">Code</a>
<li><a href="#sources">Sources</a>
<li><a href="#issues">Design issues</a>
<li><a href="#representation">Representation</a>
<li><a href="#tests">libm tests</a>
</ul>
-<h3><a name="prototype" href="#prototype">Prototype</a></h3>
+<h3><a name="code" href="#code">Code</a></h3>
+<p>musl branch for math hacks:
<ul>
-<li><a href="/git/?p=libm">browse</a> with gitweb
+<li><a href="/git/?p=musl">browse</a> with gitweb
<li>over git (recommended)
<pre>
-git clone git://nsz.repo.hu:45100/repo/epoint
+git clone git://nsz.repo.hu:45100/repo/musl
</pre>
<li>over http (slower)
<pre>
-git clone http://nsz.repo.hu/repo/epoint
+git clone http://nsz.repo.hu/repo/musl
</pre>
<li>over ssh (passwd is anon)
<pre>
-git clone ssh://anon@nsz.repo.hu:45022/repo/epoint
+git clone ssh://anon@nsz.repo.hu:45022/repo/musl
</pre>
</ul>
<h3><a name="issues" href="#issues">Design issues</a></h3>
-<ul>
-<li>Code organization
-<p>The long double code uses ifdefs and macro hacks to allow
-ld64, ld80 and ld128 implementation in the same file.
-<p>Pending questions:
-<ul>
-<li>What are the correct long double ifdefs?
-<li>Check fpu precision setting at runtime in long double code?
-<li>support c99 tgmath.h?
-<li>TODO: complex
-</ul>
-
<li>Workarounds
<p>The bsd libm code has many workarounds for various
compiler issues. It's not clear what's the best way
to handle the uglyness.
+<p>In long double code fpu is assumed to be set to extended precision
<p>Pending questions:
<ul>
<li>Use STDC pragmas (eventhough gcc does not support them)?
which might worth addressing.
<p>Pending questions:
<ul>
-<li>Should 0x1p0 float format be preferred over decimal format?
-<li>How much c99 is allowed? (inline, compound literals, 0x1p0,..)
-<li>Which one should be used 0f, 0l, 0.0, static const double zero = 0,.. ?
<li>Can we use a polyeval(coeffs, x) function instead of writing out the poly?
+<li>TODO: prefer 0x1p0 format over decimal one
+<li>TODO: use 1.0f instead of (float)1 and const float one = 1;
<li>TODO: use uint32_t instead of int32_t (to avoid signed int overflow and right shifts)
<li>TODO: prefer isnan, signbit,.. over inplace bithacks
</ul>
exception at runtime, but get optimized into x = +inf.
see compiler optimizations above.
<p>
-Another x87 gcc bug is that comparision operators (==, <, etc)
-don't raise exceptions on nan
+Another x87 gcc bug related to fp exceptions is that
+comparision operators (==, <, etc) don't raise invalid
+when an operand is nan
(eventhough this is required by ieee + c99 annex F).
(see <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52451">gcc bug52451</a>).
<p>