The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Inactive » comp.soft-sys.math.mathematica

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Compiler output type
Replies: 1   Last Post: May 12, 2014 10:26 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View  
Bob Hanlon

Posts: 906
Registered: 10/29/11
Re: Compiler output type
Posted: May 12, 2014 10:26 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

collatz = Compile[{{n, _Integer}}, If[EvenQ[n], n/2, 3 n + 1] //

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


Bob Hanlon

On Mon, May 12, 2014 at 12:43 AM, Harvey P. Dale <> 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

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.