将 FDLIBM 库集成到 iOS

Integrate FDLIBM library to iOS

我正在尝试将 FDLIBM 库 (http://www.netlib.org/fdlibm/) 集成到我的基于 Swift 的应用程序中(也有一些 objc 和 c 代码)iOS 应用程序。但是,其中一些功能与自动包含在 iOS 中的 math.h 有冲突,即 sincosacosasinpow,等。所以项目不编译。我确实需要在 FDLIBM 中使用这些功能。

这些是 fdlibm.h (http://www.netlib.org/fdlibm/fdlibm.h) 中定义的一些函数,它们与 math.h

重复
/*
 * ANSI/POSIX
 */
extern double acos __P((double));
extern double asin __P((double));
extern double atan __P((double));
extern double atan2 __P((double, double));
extern double cos __P((double));
extern double sin __P((double));
extern double tan __P((double));

extern double cosh __P((double));
extern double sinh __P((double));
extern double tanh __P((double));

extern double exp __P((double));
extern double frexp __P((double, int *));
extern double ldexp __P((double, int));
extern double log __P((double));
extern double log10 __P((double));
extern double modf __P((double, double *));

extern double pow __P((double, double));
extern double sqrt __P((double));

有人对此有解决方案吗?任何建议和提示将不胜感激。谢谢。

更新: 为了提供更多关于我正在做的事情的背景信息,我们正在构建一个跨平台应用程序(目前为 Android 和 iOS),使用相同的后端服务。我们需要进行关键的浮点计算,以确保双方的结果相同。根据我们的测试,sin()cos()fdlimb 中的一些其他函数在 Android 上的结果与在 math.h 中使用相同函数的结果不同在 iOS。所以我试图将 fdlibm 整合到 iOS 中,看看我们是否可以获得相同的结果。

所以如果有办法解决根本问题,使得iOS和Android这些函数的浮点计算完全一样 pow(),sin(), cos(), asin(), acos(), atan2(), 我不用整合 fdlibm.h

从评论来看,这看起来工作量很大,请考虑变通,例如在服务器端舍入所有浮点数,以便删除最后一位数字。
Sun (Java) 曾经检测到两个平台之间最后一位数字的差异,并决定在软件中计算所有数学。他们称之为 StrictMath。

以防万一这对将来的其他人有帮助:我们最终重命名了所有冲突的函数并解决了所有重复的声明。现在它工作得很好,尽管有很多警告。后来的计划是把它包装成一个动态框架来消费。也许以后我们甚至可以开源它。