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