MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Compile Problem with Nested Sum

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123815] Re: Compile Problem with Nested Sum
  • From: Szabolcs <szhorvat at gmail.com>
  • Date: Tue, 20 Dec 2011 03:06:47 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jc7a56$on6$1@smc.vnet.net> <jcna5c$e5m$1@smc.vnet.net>
  • Reply-to: comp.soft-sys.math.mathematica at googlegroups.com

On Monday, 19 December 2011 13:19:56 UTC+1, Frank K  wrote:
> On Dec 13, 5:41 am, Julian Francis <julian.w... at gmail.com> wrote:
> > Dear all,
> >
> > I have a simple function which compiles fine:
> >
> > fC1 = Compile[{{mx, _Integer}, {my, _Integer}, {mat, _Real, 2}},
> >   Sum[
> >    mat[[mx, my]] , {a, 0, 1}]
> >   ]
> >
> > However, a sum within a sum doesn't compile:
> >
> > fC2 = Compile[{{mx, _Integer}, {my, _Integer}, {mat, _Real, 2}},
> >   Sum[
> >    Sum[
> >     mat[[mx, my]] , {a, 0, 1}],
> >    {b, 1, 1}]
> >   ]
> >
> > which generates the following error message:
> >
> > Compile::noinfo: No information is available for compilation of \!\
> > (\*UnderoverscriptBox[\(\[Sum]\), \(b = 1\), \(1\)]\
> > ((\*UnderoverscriptBox[\(\[Sum]\), \(a = 0\), \(1\)]mat[[mx, my]])\)
> > \). The compiler will use an external evaluation and make assumptions
> > about the return type. >>
> >
> > I am confused as to why the first works, but the second doesn't.
> >
> > Any help would be appreciated.
> >
> > Thanks,
> > Julian Francis.
> 
> What version of Mathematica are you running?  It compiles ok on 8.0.4.
> However, I don't understand why you're not summing over the indices of
> the matrix.
> Also, you don't need to nest Sum, you can put both indices inside one
> sum

The reason this doesn't give a message in 8.0.4 is that Compile::noinfo is turned off by default.  The expression is still being computed using a standard evaluation (rather than the virtual machine), as you can see with CompilePrint[fC2].

I'm not sure why the nested Sum doesn't compile, but as Frank mentioned, a single Sum with two ranges does work.



  • Prev by Date: Re: NMinimize problem: fct minimized uses FindRoot
  • Next by Date: Re: How to define a localized indexed object in Manipulate?
  • Previous by thread: Re: Compile Problem with Nested Sum
  • Next by thread: Plots come out blank except for certain limits