2016-02-24 3 views
0

Я пытаюсь интегрировать библиотеку FDLIBM (http://www.netlib.org/fdlibm/) в мой Swift (с некоторым кодом objc и c) тоже приложение iOS. Однако некоторые функции противоречат math.h, который автоматически включается в iOS, то есть sin, cos, acos, asin, pow и т. Д. Таким образом, проект не компилируется. Мне нужно использовать эти функции в FDLIBM.Интеграция библиотеки FDLIBM с iOS

Вот некоторые из функций, определенных в 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)); 

Кто-нибудь есть решение для этого? Любые советы и советы будут оценены. Благодарю.

Update: Чтобы дать больше фона о том, что я делаю, мы строим кросс приложение платформы (Android и IOS в настоящее время), используя ту же самую услугу бэкэнда. Существуют критические вычисления с плавающей точкой, которые необходимы для того, чтобы результаты были одинаковыми для обеих сторон. Основываясь на нашем тестировании, результаты sin(), cos() и некоторые другие функции в fdlimb на Android отличаются от результатов использования одних и тех же функций в math.h в iOS. Поэтому я пытаюсь интегрировать fdlibm в iOS, чтобы узнать, можем ли мы получить те же результаты.

Так что, если есть способ решить корень проблемы, что делает вычисление с плавающей запятой точно так же, для прошивкой и Android для этих функций pow(), sin(), cos(), asin(), acos(), atan2(), я не должен интегрировать fdlibm.h

+0

C не поддерживает _methods_. Конечно, это не только Objective-C? – Olaf

+0

@Olaf благодарит за ответ. Я хотел сказать, что функции. Я просто изменил описание, чтобы сделать его более ясным. Благодарю. – Zhao

+0

Почему downvote? – Zhao

ответ

0

Из комментариев, которые, как видно, много работают, рассмотрите работу вокруг, например, на стороне сервера вокруг всех плавающих точек, так что последняя цифра будет удалена.
Sun (Java) однажды обнаружил разницу в последней цифре между двумя пластинами и решил вычислить всю математику в программном обеспечении. Они назвали это StrictMath.

1

На всякий случай это полезно для других людей в будущем: мы в конечном итоге переименовали все конфликтующие функции и разрешили любые повторяющиеся объявления. Теперь он работает очень хорошо, хотя есть много предупреждений. Позже план состоит в том, чтобы обернуть это в динамическую структуру, чтобы потреблять. Может быть, позже мы сможем даже открыть его.

+0

Это были мои первые мысли, но я дал еще один ответ: +1, поскольку каждое рабочее решение полезно. – AlexWien

+0

Спасибо за помощь все равно. :) – Zhao

Смежные вопросы