MathGroup Archive 2012

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

Search the Archive

Function return type in Compile

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124231] Function return type in Compile
  • From: Ashwini <aksingh21 at gmail.com>
  • Date: Sat, 14 Jan 2012 02:58:19 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

Hi,
I have large number of small functions whose return type is  Boolean
or Integer.
How can I declare the function return type in a global way so that I
don't have to write it down in every Compile:

Example:
TestQ[x_Integer] := If[EvenQ[x], True, False]; (*Just a wrapper on
EvenQ*)

cf2 = Compile[{{y, _Integer}}, If[TestQ[y], 1, 2]];

cf2[2]
CompiledFunction::cfex: Could not complete external evaluation at
instruction 1; proceeding with uncompiled evaluation.

After including the return type of TestQ, It works fine
cf3 = Compile[{{y, _Integer}},  If[TestQ[y], 1, 2], {{TestQ[_], True |
False}}];

cf3[2] works fine.

But if I replace TestQ with EvenQ I don't have to specify the the
return type
cf4 = Compile[{{y, _Integer}}, If[EvenQ[y], 1, 2]];

How can this be done for TestQ?

regards,
Ashwini



  • Prev by Date: Re: NDSolve output without interpolating function
  • Next by Date: Re: NDSolve output without interpolating function
  • Previous by thread: Re: split a number to Date format
  • Next by thread: Re: Function return type in Compile