Skip to content

Commit c0f55a9

Browse files
author
Dave Herman
committed
float32 support for operators and Math functions
1 parent e42f664 commit c0f55a9

File tree

2 files changed

+76
-28
lines changed

2 files changed

+76
-28
lines changed

html/index.html

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ <h2 class="no-num no-toc" id=abstract>Abstract</h2>
8888
</li><li>added uncoerced <em>CallExpression</em> nodes to <em>Expression</em> for float coercions
8989
</li><li>added float coercions to initializers, return type annotations, and legal function calls
9090
</li><li>added restriction preventing float coercions of FFI calls
91+
</li><li>added <a href=#float-1><code>float</code></a> support for operators and <code>Math</code> functions
9192
</li></ul>
9293
</li><li><strong>12 December 2013</strong>
9394
<ul>
@@ -1464,7 +1465,7 @@ <h4 id=defaultclause><span class=secno>6.6.2 </span>DefaultClause</h4>
14641465
</div>
14651466

14661467
<p>validates as type <a href=#signed-0><code>signed</code></a> if <em>arg</em> validates as
1467-
a subtype of <a href=#double-1><code>double</code></a>.
1468+
a subtype of either <a href=#double-1><code>double</code></a> or <a href=#float-2><code>float?</code></a>.
14681469

14691470
</p><h4 id=multiplicativeexpression><span class=secno>6.7.8 </span>MultiplicativeExpression</h4>
14701471

@@ -1865,14 +1866,16 @@ <h3 id=unary-operators><span class=secno>8.1 </span>Unary Operators</h3>
18651866
<td>
18661867
(<a href=#signed-0><code>signed</code></a>) → <a href=#double-1><code>double</code></a><br>
18671868
(<a href=#unsigned-0><code>unsigned</code></a>) → <a href=#double-1><code>double</code></a><br>
1868-
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a>
1869+
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1870+
(<a href=#float-2><code>float?</code></a>) → <a href=#double-1><code>double</code></a>
18691871
</td>
18701872
</tr>
18711873
<tr>
18721874
<td><code>-</code></td>
18731875
<td>
18741876
(<a href=#int-0><code>int</code></a>) → <a href=#intish-0><code>intish</code></a><br>
1875-
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a>
1877+
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1878+
(<a href=#float-2><code>float?</code></a>) → <a href=#floatish-0><code>floatish</code></a>
18761879
</td>
18771880
</tr>
18781881
<tr>
@@ -1887,8 +1890,9 @@ <h3 id=unary-operators><span class=secno>8.1 </span>Unary Operators</h3>
18871890
</table>
18881891

18891892
<p>Note that the special combined operator <code>~~</code> may be used
1890-
as a coercion from <a href=#double-1><code>double</code></a> to <a href=#signed-0><code>signed</code></a>;
1891-
see <a href=#unaryexpression>Unary Expressions</a>.
1893+
as a coercion from <a href=#double-1><code>double</code></a> or <a href=#float-2><code>float?</code></a>
1894+
to <a href=#signed-0><code>signed</code></a>; see <a href=#unaryexpression>Unary
1895+
Expressions</a>.
18921896

18931897
</p><h3 id=binary-operators><span class=secno>8.2 </span>Binary Operators</h3>
18941898

@@ -1900,22 +1904,32 @@ <h3 id=unary-operators><span class=secno>8.1 </span>Unary Operators</h3>
19001904
</tr>
19011905
<tr>
19021906
<td><code>+</code></td>
1903-
<td>(<a href=#double-1><code>double</code></a>, <a href=#double-1><code>double</code></a>) → <a href=#double-1><code>double</code></a></td>
1907+
<td>
1908+
(<a href=#double-1><code>double</code></a>, <a href=#double-1><code>double</code></a>) → <a href=#double-1><code>double</code></a><br>
1909+
(<a href=#float-2><code>float?</code></a>, <a href=#float-2><code>float?</code></a>) → <a href=#floatish-0><code>floatish</code></a>
1910+
</td>
19041911
</tr>
19051912
<tr>
19061913
<td><code>-</code></td>
1907-
<td>(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a></td>
1914+
<td>
1915+
(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1916+
(<a href=#float-2><code>float?</code></a>, <a href=#float-2><code>float?</code></a>) → <a href=#floatish-0><code>floatish</code></a>
1917+
</td>
19081918
</tr>
19091919
<tr>
19101920
<td><code>*</code></td>
1911-
<td>(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a></td>
1921+
<td>
1922+
(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1923+
(<a href=#float-2><code>float?</code></a>, <a href=#float-2><code>float?</code></a>) → <a href=#floatish-0><code>floatish</code></a>
1924+
</td>
19121925
</tr>
19131926
<tr>
19141927
<td><code>/</code></td>
19151928
<td>
19161929
(<a href=#signed-0><code>signed</code></a>, <a href=#signed-0><code>signed</code></a>) → <a href=#intish-0><code>intish</code></a><br>
19171930
(<a href=#unsigned-0><code>unsigned</code></a>, <a href=#unsigned-0><code>unsigned</code></a>) → <a href=#intish-0><code>intish</code></a><br>
1918-
(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a>
1931+
(<a href=#double-2><code>double?</code></a>, <a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1932+
(<a href=#float-2><code>float?</code></a>, <a href=#float-2><code>float?</code></a>) → <a href=#floatish-0><code>floatish</code></a>
19191933
</td>
19201934
</tr>
19211935
<tr>
@@ -1939,7 +1953,8 @@ <h3 id=unary-operators><span class=secno>8.1 </span>Unary Operators</h3>
19391953
<td>
19401954
(<a href=#signed-0><code>signed</code></a>, <a href=#signed-0><code>signed</code></a>) → <a href=#int-0><code>int</code></a><br>
19411955
(<a href=#unsigned-0><code>unsigned</code></a>, <a href=#unsigned-0><code>unsigned</code></a>) → <a href=#int-0><code>int</code></a><br>
1942-
(<a href=#double-1><code>double</code></a>, <a href=#double-1><code>double</code></a>) → <a href=#int-0><code>int</code></a>
1956+
(<a href=#double-1><code>double</code></a>, <a href=#double-1><code>double</code></a>) → <a href=#int-0><code>int</code></a><br>
1957+
(<a href=#float-1><code>float</code></a>, <a href=#float-1><code>float</code></a>) → <a href=#int-0><code>int</code></a>
19431958
</td>
19441959
</tr>
19451960
</tbody>
@@ -1968,19 +1983,28 @@ <h2 id=standard-library><span class=secno>9 </span>Standard Library</h2>
19681983
<code>Math.cos</code><br>
19691984
<code>Math.sin</code><br>
19701985
<code>Math.tan</code><br>
1986+
<code>Math.exp</code><br>
1987+
<code>Math.log</code>
1988+
</td>
1989+
<td>(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a></td>
1990+
</tr>
1991+
<tr>
1992+
<td>
19711993
<code>Math.ceil</code><br>
19721994
<code>Math.floor</code><br>
1973-
<code>Math.exp</code><br>
1974-
<code>Math.log</code><br>
19751995
<code>Math.sqrt</code>
19761996
</td>
1977-
<td>(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a></td>
1997+
<td>
1998+
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
1999+
(<a href=#float-2><code>float?</code></a>) → <a href=#float-1><code>float</code></a>
2000+
</td>
19782001
</tr>
19792002
<tr>
19802003
<td><code>Math.abs</code></td>
19812004
<td>
19822005
(<a href=#signed-0><code>signed</code></a>) → <a href=#signed-0><code>signed</code></a><br>
1983-
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a>
2006+
(<a href=#double-2><code>double?</code></a>) → <a href=#double-1><code>double</code></a><br>
2007+
(<a href=#float-2><code>float?</code></a>) → <a href=#float-1><code>float</code></a>
19842008
</td>
19852009
</tr>
19862010
<tr>

html/index.src.html

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ <h3 class="no-num no-toc">Changelog</h2>
9191
<li>added uncoerced <em>CallExpression</em> nodes to <em>Expression</em> for float coercions
9292
<li>added float coercions to initializers, return type annotations, and legal function calls
9393
<li>added restriction preventing float coercions of FFI calls
94+
<li>added <code>float</code> support for operators and <code>Math</code> functions
9495
</ul>
9596
<li><strong>12 December 2013</strong>
9697
<ul>
@@ -1380,7 +1381,7 @@ <h4>UnaryExpression</h4>
13801381
</div>
13811382

13821383
<p>validates as type <code>signed</code> if <em>arg</em> validates as
1383-
a subtype of <code>double</code>.
1384+
a subtype of either <code>double</code> or <code>float?</code>.
13841385

13851386
<h4>MultiplicativeExpression</h4>
13861387

@@ -1781,14 +1782,16 @@ <h3>Unary Operators</h3>
17811782
<td>
17821783
(<code>signed</code>) &rarr; <code>double</code> &and;<br>
17831784
(<code>unsigned</code>) &rarr; <code>double</code> &and;<br>
1784-
(<code>double?</code>) &rarr; <code>double</code>
1785+
(<code>double?</code>) &rarr; <code>double</code> &and;<br>
1786+
(<code>float?</code>) &rarr; <code>double</code>
17851787
</td>
17861788
</tr>
17871789
<tr>
17881790
<td><code>-</code></td>
17891791
<td>
17901792
(<code>int</code>) &rarr; <code>intish</code> &and;<br>
1791-
(<code>double?</code>) &rarr; <code>double</code>
1793+
(<code>double?</code>) &rarr; <code>double</code> &and;<br>
1794+
(<code>float?</code>) &rarr; <code>floatish</code>
17921795
</td>
17931796
</tr>
17941797
<tr>
@@ -1803,8 +1806,9 @@ <h3>Unary Operators</h3>
18031806
</table>
18041807

18051808
<p>Note that the special combined operator <code>~~</code> may be used
1806-
as a coercion from <code>double</code> to <code>signed</code>;
1807-
see <a href="#unaryexpression">Unary Expressions</a>.
1809+
as a coercion from <code>double</code> or <code>float?</code>
1810+
to <code>signed</code>; see <a href="#unaryexpression">Unary
1811+
Expressions</a>.
18081812

18091813
<h3>Binary Operators</h3>
18101814

@@ -1816,22 +1820,32 @@ <h3>Binary Operators</h3>
18161820
</tr>
18171821
<tr>
18181822
<td><code>+</code></td>
1819-
<td>(<code>double</code>, <code>double</code>) &rarr; <code>double</code></td>
1823+
<td>
1824+
(<code>double</code>, <code>double</code>) &rarr; <code>double</code> &and;<br>
1825+
(<code>float?</code>, <code>float?</code>) &rarr; <code>floatish</code>
1826+
</td>
18201827
</tr>
18211828
<tr>
18221829
<td><code>-</code></td>
1823-
<td>(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code></td>
1830+
<td>
1831+
(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code> &and;<br>
1832+
(<code>float?</code>, <code>float?</code>) &rarr; <code>floatish</code>
1833+
</td>
18241834
</tr>
18251835
<tr>
18261836
<td><code>*</code></td>
1827-
<td>(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code></td>
1837+
<td>
1838+
(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code> &and;<br>
1839+
(<code>float?</code>, <code>float?</code>) &rarr; <code>floatish</code>
1840+
</td>
18281841
</tr>
18291842
<tr>
18301843
<td><code>/</code></td>
18311844
<td>
18321845
(<code>signed</code>, <code>signed</code>) &rarr; <code>intish</code> &and;<br>
18331846
(<code>unsigned</code>, <code>unsigned</code>) &rarr; <code>intish</code> &and;<br>
1834-
(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code>
1847+
(<code>double?</code>, <code>double?</code>) &rarr; <code>double</code> &and;<br>
1848+
(<code>float?</code>, <code>float?</code>) &rarr; <code>floatish</code>
18351849
</td>
18361850
</tr>
18371851
<tr>
@@ -1855,7 +1869,8 @@ <h3>Binary Operators</h3>
18551869
<td>
18561870
(<code>signed</code>, <code>signed</code>) &rarr; <code>int</code> &and;<br>
18571871
(<code>unsigned</code>, <code>unsigned</code>) &rarr; <code>int</code> &and;<br>
1858-
(<code>double</code>, <code>double</code>) &rarr; <code>int</code>
1872+
(<code>double</code>, <code>double</code>) &rarr; <code>int</code> &and;<br>
1873+
(<code>float</code>, <code>float</code>) &rarr; <code>int</code>
18591874
</td>
18601875
</tr>
18611876
</tbody>
@@ -1884,19 +1899,28 @@ <h2>Standard Library</h2>
18841899
<code>Math.cos</code><br>
18851900
<code>Math.sin</code><br>
18861901
<code>Math.tan</code><br>
1902+
<code>Math.exp</code><br>
1903+
<code>Math.log</code>
1904+
</td>
1905+
<td>(<code>double?</code>) &rarr; <code>double</code></td>
1906+
</tr>
1907+
<tr>
1908+
<td>
18871909
<code>Math.ceil</code><br>
18881910
<code>Math.floor</code><br>
1889-
<code>Math.exp</code><br>
1890-
<code>Math.log</code><br>
18911911
<code>Math.sqrt</code>
18921912
</td>
1893-
<td>(<code>double?</code>) &rarr; <code>double</code></td>
1913+
<td>
1914+
(<code>double?</code>) &rarr; <code>double</code> &and;<br>
1915+
(<code>float?</code>) &rarr; <code>float</code>
1916+
</td>
18941917
</tr>
18951918
<tr>
18961919
<td><code>Math.abs</code></td>
18971920
<td>
18981921
(<code>signed</code>) &rarr; <code>signed</code> &and;<br>
1899-
(<code>double?</code>) &rarr; <code>double</code>
1922+
(<code>double?</code>) &rarr; <code>double</code> &and;<br>
1923+
(<code>float?</code>) &rarr; <code>float</code>
19001924
</td>
19011925
</tr>
19021926
<tr>

0 commit comments

Comments
 (0)