Re: Compiler output type
- To: mathgroup at smc.vnet.net
- Subject: [mg132725] Re: Compiler output type
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Mon, 12 May 2014 22:26:34 -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
- References: <20140512044303.976186A56@smc.vnet.net>
collatz = Compile[{{n, _Integer}}, If[EvenQ[n], n/2, 3 n + 1] // IntegerPart]; collatz2 = Compile[{{n, _Integer}}, If[EvenQ[n], n/2, 3 n + 1] // Round]; m = 1000000; Timing[t1 = Table[collatz[n], {n, m}];] {0.291132, Null} Timing[t2 = Table[collatz2[n], {n, m}];] {0.322116, Null} Timing[t3 = Table[If[EvenQ[n], n/2, 3 n + 1], {n, m}];] {2.352646, Null} t1 == t2 == t3 True Bob Hanlon On Mon, May 12, 2014 at 12:43 AM, Harvey P. Dale <hpd at hpdale.org> wrote: > Some compiled functions yield reals even if the input and > necessary output are integers. How can I force the output to be an integer > rather than a real in such cases? To be clear, not all compiled program > output produces reals; some compiled programs, given integer inputs, > produce integer outputs. But some do not. An example is: > > collatz = Compile[{{n, _Integer}}, If[EvenQ[n], n/2, 3 n + 1]] > > It produces real rather than integer output, and I'd like to force integer > output if possible. > > Thanks > > Best, > > Harvey > >
- References:
- Compiler output type
- From: "Harvey P. Dale" <hpd@hpdale.org>
- Compiler output type