22// See JS_MATH setting in settings.js for details.
33//
44
5- #include <emscripten.h>
5+ #include <emscripten/em_math.h>
6+ #include <emscripten/em_js.h>
67#include <math.h>
78#include <stdlib.h>
89
910#define CALL_JS_1 (cname , jsname , type ) \
10- EM_JS(type, JS_##cname, (type x), { return jsname(x) }); \
11- type cname(type x) { return JS_##cname(x); }
12-
13- #define CALL_JS_1_TRIPLE (cname , jsname ) \
14- CALL_JS_1(cname, jsname, double) \
15- CALL_JS_1(cname##f, jsname, float)
16-
17- CALL_JS_1_TRIPLE (cos , Math .cos )
18- CALL_JS_1_TRIPLE (sin , Math .sin )
19- CALL_JS_1_TRIPLE (tan , Math .tan )
20- CALL_JS_1_TRIPLE (acos , Math .acos )
21- CALL_JS_1_TRIPLE (asin , Math .asin )
22- CALL_JS_1_TRIPLE (atan , Math .atan )
23- CALL_JS_1_TRIPLE (exp , Math .exp )
24- CALL_JS_1_TRIPLE (log , Math .log )
25- CALL_JS_1_TRIPLE (sqrt , Math .sqrt )
26- CALL_JS_1_TRIPLE (fabs , Math .abs )
27- CALL_JS_1_TRIPLE (ceil , Math .ceil )
28- CALL_JS_1_TRIPLE (floor , Math .floor )
11+ type cname(type x) { return (type)emscripten_math_##jsname(x); }
12+
13+ #define CALL_JS_1_TRIPLE (name ) \
14+ CALL_JS_1(name, name, double) \
15+ CALL_JS_1(name##f, name, float)
16+
17+ CALL_JS_1_TRIPLE (cos )
18+ CALL_JS_1_TRIPLE (sin )
19+ CALL_JS_1_TRIPLE (tan )
20+ CALL_JS_1_TRIPLE (acos )
21+ CALL_JS_1_TRIPLE (asin )
22+ CALL_JS_1_TRIPLE (atan )
23+ CALL_JS_1_TRIPLE (exp )
24+ CALL_JS_1_TRIPLE (log )
25+ CALL_JS_1_TRIPLE (sqrt )
2926
3027#define CALL_JS_2 (cname , jsname , type ) \
31- EM_JS(type, JS_##cname, (type x, type y), { return jsname(x, y) }); \
32- type cname(type x, type y) { return JS_##cname(x, y); }
28+ type cname (type x , type y ) { return (type )emscripten_math_ ##jsname (x, y); }
3329
34- #define CALL_JS_2_TRIPLE (cname , jsname ) \
35- CALL_JS_2(cname, jsname , double) \
36- CALL_JS_2(cname ##f, jsname , float)
30+ #define CALL_JS_2_TRIPLE (name ) \
31+ CALL_JS_2(name, name , double) \
32+ CALL_JS_2(name ##f, name , float)
3733
38- CALL_JS_2_TRIPLE (atan2 , Math . atan2 )
39- CALL_JS_2_TRIPLE (pow , Math . pow )
34+ CALL_JS_2_TRIPLE (atan2 )
35+ CALL_JS_2_TRIPLE (pow )
4036
4137#define CALL_JS_1_IMPL (cname , type , impl ) \
4238 EM_JS(type, JS_##cname, (type x), impl); \
@@ -55,6 +51,3 @@ CALL_JS_1_IMPL_TRIPLE(rint, {
5551 }
5652 return (x - Math .floor (x ) != .5 ) ? round (x ) : round (x / 2 ) * 2 ;
5753})
58-
59- double nearbyint (double x ) { return rint (x ); }
60- float nearbyintf (float x ) { return rintf (x ); }
0 commit comments