5 import core.stdc.stdio;
7 /***************************************/
13 printf("re = %Lg, im = %Lg\n", c.re, c.im);
17 float f = sqrt(25.0f);
25 /***************************************/
27 ireal f2() { return 1i; }
40 /***************************************/
54 cdouble[] arr=concat3();
56 assert(arr.length==2);
57 assert(arr[0]==0.5+1.0i);
58 assert(arr[1]==0.5+3.0i);
61 /***************************************/
75 creal[] arr=concat4();
77 assert(arr.length==2);
78 assert(arr[0]==0.5+1.0i);
79 assert(arr[1]==0.5+3.0i);
82 /***************************************/
91 /***************************************/
100 /***************************************/
108 assert(arr.length==1);
109 assert(arr[0]==1.0i+2.0);
112 assert(arr[0]==1.0i+2.0);
115 /****************************************/
129 creal[] arr=concat8();
131 assert(arr.length==2);
132 assert(arr[0]==0.5L+1.0Li);
133 assert(arr[1]==0.5L+3.0Li);
136 /***************************************/
150 creal[] arr=concat9();
152 assert(arr.length==2);
153 assert(arr[0]==0.5L+1.0Li);
154 assert(arr[1]==0.5L+3.0Li);
158 /***************************************/
165 const ifloat b = 2.0i;
166 static assert(b.im == 2.0); // FAIL
170 /***************************************/
178 ireal ir = ireal.nan;
181 if (ir==0) assert(0);
182 if (ir==0i) assert(0);
184 creal cr = creal.nan;
187 if (cr==0) assert(0);
188 if (cr==0i) assert(0);
190 double d = double.nan;
194 idouble id = idouble.nan;
197 if (id==0) assert(0);
198 if (id==0i) assert(0);
200 cdouble cd = cdouble.nan;
203 if (cd==0) assert(0);
204 if (cd==0i) assert(0);
210 ifloat ifx = ifloat.nan;
213 if (ifx==0) assert(0);
214 if (ifx==0i) assert(0);
216 cfloat cf = cfloat.nan;
219 if (cf==0) assert(0);
220 if (cf==0i) assert(0);
223 /***************************************/
228 creal a = (2 + 4i) % 3;
232 creal b = (2 + 4i) % x;
237 /***************************************/
247 /***************************************/
249 cdouble inv( cdouble expr )
251 return (1.0 + 0.0i) / expr;
254 /***************************************/
271 /***************************************/
275 cfloat a() { return cfloat.nan; }
279 /***************************************/
281 float f() { return 1.0f; }
282 ifloat i() { return 1.0fi; }
286 assert(f() + i() == 1.0f + 1.0fi);
289 /***************************************/
291 cdouble conv(cfloat a)
298 assert(conv(1.0f+1.0fi) == 1.0+1.0i);
301 /***************************************/
303 cfloat get() { return cfloat.nan; }
307 assert(!(get() == 0));
310 /***************************************/
312 void foo8966(cfloat x)
314 assert(x.re == 3.0f);
317 __gshared cfloat[] a8966;
321 a8966 = new cfloat[2];
322 a8966[0] = 3.0f + 1.0fi;
326 /***************************************/
328 void formatTest2(cfloat s, double re, double im)
341 formatTest2( getcf(), 2, 1 );
344 /***************************************/
348 for (idouble i = -2i; i <= 2i; i += .125i)
349 for (double r = -2; r <= 2; r += .0625)
352 printf("%g %gi\n", c.re, c.im);
356 /***************************************/
359 creal[] a = new creal[2];
360 auto b = a[0] = a[1];
363 /***************************************/
365 cfloat foo15f(ifloat re, float im)
370 cfloat bar15f(float re, ifloat im)
375 cdouble foo15(idouble re, double im)
380 cdouble bar15(double re, idouble im)
385 creal foo15r(ireal re, real im)
390 creal bar15r(real re, ireal im)
397 assert(foo15f(1.0fi, 2.0f) == 2.0f + 1.0fi);
398 assert(bar15f(1.0f, 2.0fi) == 1.0f + 2.0fi);
400 assert(foo15(1.0i, 2.0) == 2.0 + 1.0i);
401 assert(bar15(1.0, 2.0i) == 1.0 + 2.0i);
403 assert(foo15r(1.0Li, 2.0L) == 2.0L + 1.0Li);
404 assert(bar15r(1.0L, 2.0Li) == 1.0L + 2.0Li);
407 /***************************************/
408 // https://issues.dlang.org/show_bug.cgi?id=17087
410 cfloat toComplex(int x) { return cast(cfloat)x; }
414 assert (toComplex(1) == 1.0);
417 /***************************************/
418 // https://issues.dlang.org/show_bug.cgi?id=17677
422 cfloat v2 = 0.0f + 0.0fi;
428 /***************************************/
430 int main(char[][] args)
459 printf("Success!\n");