Scalar + array operations
John Colvin via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed May 21 06:52:45 PDT 2014
On Wednesday, 21 May 2014 at 11:45:57 UTC, Stefan Frijters wrote:
> When working on my current project (writing a numerical
> simulation code) I ran into the following issue when trying to
> multiply a vector (represented by a fixed-length array) by a
> scalar:
>
> import std.stdio;
>
> void main() {
> int ifoo = 2;
> int[3] ibar = 1;
>
> double dfoo = 2.0;
> double[3] dbar = 1.0;
>
> dfoo = ifoo * dfoo; // Scalar int * scalar double -- OK
> writeln(dfoo);
> dfoo = dfoo * dfoo; // Scalar double * scalar double --
> OK
> writeln(dfoo);
> dbar = dfoo * dbar[]; // Scalar double * array of double
> -- OK
> writeln(dbar);
> ibar = ifoo * ibar[]; // Scalar int * array of int -- OK
> writeln(ibar);
> dbar = ifoo * dbar[]; // Scalar int * array of double -- OK
> writeln(dbar);
> // dbar = dfoo * ibar[]; // Scalar double * array of int --
> FAIL
> // writeln(dbar);
> }
>
> I would have expected the last case to work as well, but I get
>
> testarr.d(20): Error: incompatible types for ((dfoo) *
> (ibar[])): 'double' and 'int[]'
>
> Is this by design? It was very surprising to me, especially
> since all other combinations do seem to work.
>
> Kind regards,
>
> Stefan Frijters
Please file a bug, there's no reason for that not to work, it
just needs to be implemented properly.
More information about the Digitalmars-d-learn
mailing list