I am trying to initialize a complex dynamic array, from two strictly real dynamic arrays (one to be the real part, the other to be the imaginary part.
Here is simple sample of what I have tried:
import std.stdio;
import std.math;
import std.complex;
void main(){
auto N=2;
double[] x,y;
x.length = N;
y.length = N;
x[0] = 1.1;
x[1] = 2.2;
y[0] = 3.3;
y[1] = 4.4;
Complex!double[] z;
z.length=N;
z[] = complex(x[],y[]);
// z = complex(x,y); // also tried this, did not work
}
-----------------------------------------------------------------
The compile error message is:
rdmd post.d
post.d(22): Error: template `std.complex.complex` cannot deduce function from argument types `!()(double[], double[])`, candidates are:
/home/leblanc/dmd2/linux/bin64/../../src/phobos/std/complex.d(46): `complex(R)(const R re)`
/home/leblanc/dmd2/linux/bin64/../../src/phobos/std/complex.d(56): `complex(R, I)(const R re, const I im)`
with `R = double[],
I = double[]`
whose parameters have the following constraints:
`~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
` > is(R : double)
- is(I : double)
` `~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
post.d(22): All possible candidates are marked as `deprecated` or `@disable`
Tip: not satisfied constraints are marked with `>`
Failed: ["/home/leblanc/dmd2/linux/bin64/dmd", "-v", "-o-", "post.d", "-I."]
I understand, I could write a simple function to do this...but was wondering if there is some "standard" way of doing this already?
Thanks,
James
PS Is cdouble (and friends) really going to be deprecated?? I worry that the loss of the built-in complex types eventually might have a downside for syntax and writing. (But, I might very well be wrong about this!!).