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