1 /*
2 COMPILABLE_MATH_TEST
3 REQUIRED_ARGS:
4 PERMUTE_ARGS:
5 TEST_OUTPUT:
6 ---
7 log()
8 1.70475L
9 log2()
10 2.45943L
11 log10()
12 0.740363L
13 round()
14 6.0L
15 floor()
16 5.0F
17 5.0
18 5.0L
19 ceil()
20 6.0F
21 6.0
22 6.0L
23 trunc()
24 5.0L
25 exp()
26 244.692L
27 expm1()
28 243.692L
29 exp2()
30 45.2548L
31 fmin()
32 -3.2L
33 fmax()
34 5.2L
35 copysign()
36 -2.5F
37 -2.5
38 -2.5L
39 pow()
40 9.88212F
41 9.88212
42 9.88212L
43 9.88212
44 fma()
45 -12.84L
46 ---
47 */
48 
49 // https://issues.dlang.org/show_bug.cgi?id=5227
50 
51 import std.math;
52 
53 pragma(msg, "log()");
54 enum logf = log(5.5f); //pragma(msg, logf);
55 enum logd = log(5.5 ); //pragma(msg, logd);
56 enum logr = log(5.5L); pragma(msg, logr);
57 
58 pragma(msg, "log2()");
59 enum log2f = log2(5.5f); //pragma(msg, log2f);
60 enum log2d = log2(5.5 ); //pragma(msg, log2d);
61 enum log2r = log2(5.5L); pragma(msg, log2r);
62 
63 pragma(msg, "log10()");
64 enum log10f = log10(5.5f); //pragma(msg, log10f);
65 enum log10d = log10(5.5 ); //pragma(msg, log10d);
66 enum log10r = log10(5.5L); pragma(msg, log10r);
67 
68 pragma(msg, "round()");
69 enum roundf = round(5.5f); //pragma(msg, roundf);
70 enum roundd = round(5.5 ); //pragma(msg, roundd);
71 enum roundr = round(5.5L); pragma(msg, roundr);
72 
73 pragma(msg, "floor()");
74 enum floorf = floor(5.5f); pragma(msg, floorf);
75 enum floord = floor(5.5 ); pragma(msg, floord);
76 enum floorr = floor(5.5L); pragma(msg, floorr);
77 
78 pragma(msg, "ceil()");
79 enum ceilf = ceil(5.5f); pragma(msg, ceilf);
80 enum ceild = ceil(5.5 ); pragma(msg, ceild);
81 enum ceilr = ceil(5.5L); pragma(msg, ceilr);
82 
83 pragma(msg, "trunc()");
84 enum truncf = trunc(5.5f); //pragma(msg, truncf);
85 enum truncd = trunc(5.5 ); //pragma(msg, truncd);
86 enum truncr = trunc(5.5L); pragma(msg, truncr);
87 
88 pragma(msg, "exp()");
89 enum expf = exp(5.5f); //pragma(msg, expf);
90 enum expd = exp(5.5 ); //pragma(msg, expd);
91 enum expr = exp(5.5L); pragma(msg, expr);
92 
93 pragma(msg, "expm1()");
94 enum expm1f = expm1(5.5f); //pragma(msg, expm1f);
95 enum expm1d = expm1(5.5 ); //pragma(msg, expm1d);
96 enum expm1r = expm1(5.5L); pragma(msg, expm1r);
97 
98 pragma(msg, "exp2()");
99 enum exp2f = exp2(5.5f); //pragma(msg, exp2f);
100 enum exp2d = exp2(5.5 ); //pragma(msg, exp2d);
101 enum exp2r = exp2(5.5L); pragma(msg, exp2r);
102 
103 
104 
105 pragma(msg, "fmin()");
106 enum fminf = fmin(-3.2f, 5.2f); //pragma(msg, fminf);
107 enum fmind = fmin(-3.2 , 5.2 ); //pragma(msg, fmind);
108 enum fminr = fmin(-3.2L, 5.2L); pragma(msg, fminr);
109 
110 pragma(msg, "fmax()");
111 enum fmaxf = fmax(-3.2f, 5.2f); //pragma(msg, fmaxf);
112 enum fmaxd = fmax(-3.2 , 5.2 ); //pragma(msg, fmaxd);
113 enum fmaxr = fmax(-3.2L, 5.2L); pragma(msg, fmaxr);
114 
115 pragma(msg, "copysign()");
116 enum csf = copysign(2.5f, -3.0f); pragma(msg, csf); static assert(csf == -2.5);
117 enum csd = copysign(2.5 , -3.0 ); pragma(msg, csd); static assert(csd == -2.5);
118 enum csr = copysign(2.5L, -3.0L); pragma(msg, csr); static assert(csr == -2.5);
119 
120 pragma(msg, "pow()");
121 enum powf = pow(2.5f, 2.5f); pragma(msg, powf);
122 enum powd = pow(2.5 , 2.5 ); pragma(msg, powd);
123 enum powr = pow(2.5L, 2.5L); pragma(msg, powr);
124 enum powctfe = 2.5 ^^ 2.5; pragma(msg, powctfe);
125 
126 
127 pragma(msg, "fma()");
128 enum fmaf = fma(-3.2f, 5.2f, 3.8f); //pragma(msg, fmaf);
129 enum fmad = fma(-3.2 , 5.2 , 3.8 ); //pragma(msg, fmad);
130 enum fmar = fma(-3.2L, 5.2L, 3.8L); pragma(msg, fmar);
131 
132 
133