C non-trivial constants
Posted
by
user525869
on Stack Overflow
See other posts from Stack Overflow
or by user525869
Published on 2010-12-27T19:46:42Z
Indexed on
2010/12/27
19:54 UTC
Read the original article
Hit count: 114
c
I want to make several constants in C with #define to speed up computation. Two of them are not simply trivial numbers, where one is a right shift, the other is a power. math.h
in C gives the function pow() for doubles, whereas I need powers for integers, so I wrote my own function, ipow
, so I wouldn't need to be casting everytime.
My question is this: One of the #define
constants I want to make is a power, say ipow(M, T)
, where M
and T
were also #define constants. ipow
is a function in the actual code, so this actually seems to slows things down when I run the code (is it running ipow everytime the constant is mentioned?). However, when I ues the built in pow function and just do (int)pow(M,T)
, the code is sped up. I'm confused as to why this is, since the ipow
and pow
functions are just as fast.
On a more general note, can I define constants using #define
using functions inside the actual code? The above example has me confused on whether this speeds things up or actually slows things down.
© Stack Overflow or respective owner