Re: Change Rank in Compile
- To: mathgroup at smc.vnet.net
- Subject: [mg16057] Re: Change Rank in Compile
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Tue, 23 Feb 1999 03:45:16 -0500
- Organization: University of Western Australia
- References: <7ao4bi$s1u@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Peter Klamser wrote: > Can I change Rank? > > sum$compiled= > Compile[{{v,_Real,10}}, > Block[{i=1,s=0.0,x=0.0},s=0.0;Do[x=Take[v,i];s=s+x 2,{i,10}]]] I don't fully understand what you are tring to do with this code but I think you should have a look at FoldList. E.g., to compute cumulative vector sums, you can use FoldList[Plus, {0, 0}, {{0, 1}, {1, 2}}] and I think that, essentially, this is what you are after. > gives the error message > > Compile::"cset": > "Variable \!\(x\) of type \!\({\"_Real\", 0}\) encountered in > assignment \ > of type \!\({\"_Real\", 10}\)." The assignment x=0.0 implicitly makes the variable x of type _Real. However, the assignment x=Take[v,i] means that x is a List. One point: before even trying to compile a Module it should work as a Module -- and, if I make v a vector of Length 10, your code does not work. It might be a good idea to include sample input and output so that others can follow exactly what you are trying to do. Cheers, Paul ____________________________________________________________________ Paul Abbott Phone: +61-8-9380-2734 Department of Physics Fax: +61-8-9380-1014 The University of Western Australia Nedlands WA 6907 mailto:paul at physics.uwa.edu.au AUSTRALIA http://www.physics.uwa.edu.au/~paul God IS a weakly left-handed dice player ____________________________________________________________________