[Numpy-discussion] Core math library in numpy

Neal Becker ndbecker2 at gmail.com
Tue Feb 24 13:20:10 EST 2009


Matthieu Brucher wrote:

> In fact, the __inline is not helpful. It's the static keyword that
> enables the compiler to inline the function if the function is small
> enough. As the static indicates that the function will not be seen
> from the outside, it can do this.
> 

Depends what is meant by 'helpful'.  My understanding is that gcc will both 
inline the function within the current module and supply an external copy if 
__inline__ is used.

> Matthieu
> 
> 2009/2/24 David Cournapeau <cournape at gmail.com>:
>> On Wed, Feb 25, 2009 at 2:21 AM, Charles R Harris
>> <charlesr.harris at gmail.com> wrote:
>>>
>>> In order to inline, the function definition would need to be in the
>>> header and a library version would still be required for passing
>>> functions by address or in case the compiler decided *not* to inline.
>>
>> I looked more into this while solving some nasty mingw FPU handling
>> bugs on windows 64. I learnt one thing I did not know about C: you can
>> define inline static functions in headers, and that's the approach
>> follows for very short functions. For example, FPU status flag code in
>> BSD is defined as follows:
>>
>> fenv.h:
>>
>> static __inline int feraiseexcept(int __excepts);
>> ...
>>
>> fenv.c:
>> int fereaiseexcept(int excepts);
>>
>> we could follow this, maybe - once we solve the inline problem (many
>> compilers do not support it for C). Having optional, non inline is
>> important IMHO, for future SSE or other dynamically loaded
>> implementations (where inline is not an option).
>>
>> David
>> _______________________________________________
>> Numpy-discussion mailing list
>> Numpy-discussion at scipy.org
>> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>>
> 
> 
> 






More information about the NumPy-Discussion mailing list