以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  初来乍到,问个取整的小问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=15821)


--  作者:bigseabigsky
--  发布时间:3/19/2005 3:54:00 PM

--  初来乍到,问个取整的小问题
#define CV_INLINE inline
........

CV_INLINE  int  cvRound( double value )
{
#if defined WIN32 && defined _MSC_VER
    int t;
    __asm
    {
        fld value;
        fistp t;
    }
    return t;
#elif __GNUC__ > 3
    return (int)lrint( value );
#else
    double temp = value + 6755399441055744.0;
    return (int)*((uint64*)&temp);
#endif
}

这个函数是在intel的图像函数库OPENCV中看到的,功能是对double型的数取与它最接近的数,函数评价是On some architectures the functions work much faster than the standard cast operations in C. 那位大虾能帮忙分析一下它的函数体啊。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms