1 // Each of the following math functions can be implemented with a single 2 // wasm instruction, so use that implementation rather than the portable 3 // one in libm. 4 5 #include <math.h> 6 fabsf(float x)7float fabsf(float x) { 8 return __builtin_fabsf(x); 9 } 10 fabs(double x)11double fabs(double x) { 12 return __builtin_fabs(x); 13 } 14 sqrtf(float x)15float sqrtf(float x) { 16 return __builtin_sqrtf(x); 17 } 18 sqrt(double x)19double sqrt(double x) { 20 return __builtin_sqrt(x); 21 } 22 copysignf(float x,float y)23float copysignf(float x, float y) { 24 return __builtin_copysignf(x, y); 25 } 26 copysign(double x,double y)27double copysign(double x, double y) { 28 return __builtin_copysign(x, y); 29 } 30 ceilf(float x)31float ceilf(float x) { 32 return __builtin_ceilf(x); 33 } 34 ceil(double x)35double ceil(double x) { 36 return __builtin_ceil(x); 37 } 38 floorf(float x)39float floorf(float x) { 40 return __builtin_floorf(x); 41 } 42 floor(double x)43double floor(double x) { 44 return __builtin_floor(x); 45 } 46 truncf(float x)47float truncf(float x) { 48 return __builtin_truncf(x); 49 } 50 trunc(double x)51double trunc(double x) { 52 return __builtin_trunc(x); 53 } 54 nearbyintf(float x)55float nearbyintf(float x) { 56 return __builtin_nearbyintf(x); 57 } 58 nearbyint(double x)59double nearbyint(double x) { 60 return __builtin_nearbyint(x); 61 } 62 rintf(float x)63float rintf(float x) { 64 return __builtin_rintf(x); 65 } 66 rint(double x)67double rint(double x) { 68 return __builtin_rint(x); 69 } 70