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] //
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@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
>
>






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.