ConstantArray dimensions in Compiled functions
- To: mathgroup at smc.vnet.net
- Subject: [mg131553] ConstantArray dimensions in Compiled functions
- From: jliu.blueta at gmail.com
- Date: Sat, 24 Aug 2013 04:21:14 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
Hi,
Mathematica seems to always assume ConstantArray returns {_Real,2}
f = Compile[{{x, _Real}}, Module[{m (*= {{{0.0}}}*)},
m = ConstantArray[0.0, {2, 2, 2}];
m[[1, 1, 1]] = x;
m
]
]
Compile::part: Part specification m[[1,1,1]] cannot be compiled since the argument is not a tensor of sufficient rank. Evaluation will use the uncompiled function. >>
If I initialize m to {_Real, 3},
f = Compile[{{x, _Real}}, Module[{m = {{{0.0}}}},
m = ConstantArray[0.0, {2, 2, 2}];
m[[1, 1, 1]] = x;
m
]
]
f[1.0]
Compile::cset: Variable m of type {_Real,3} encountered in assignment of type {_Real,2}. >>
Same error even if I specifically say ConstantArray[] returns a 3-d array.
f = Compile[{{x, _Real}}, Module[{m = {{{0.0}}}},
m = ConstantArray[0.0, {2, 2, 2}];
m[[1, 1, 1]] = x;
m
], {{ConstantArray[___], _Real, 3}}
]
f[1.0]
Compile::cset: Variable m of type {_Real,3} encountered in assignment of type {_Real,2}. >>
I'd appreciate any help!