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