2015-01-24 4 views
1

저는 어셈블러를 처음 사용합니다. 저는 power 함수를 구현하고 싶지만 exp 나 log 함수는 없습니다. a가 정수이고 b가 float 인 동안 a^b과 같은 것을가집니다.어셈블리 armv7 네온 파워 기능

b가 자연수 인 경우에만 문제가 발생합니다. a와 b를 곱하는 루프와 같습니다.

그런 것이 있거나 구현 방법을 알고있는 사람이 있습니다.

+2

zlib 라이센스가있는 [단순 ARM NEON 최적화 sin, cos, log 및 exp] (http://gruntthepeon.free.fr/ssemath/neon_mathfun.html)입니다. 그것을 사용하지 않았지만 그것을 테스트 할 수 있습니다. 로그와 exp를 사용하면 pow를 구현할 수 있습니다. – alexander

+0

나는 이것을 설명 할 수 없다는 것을 이해하지 못한다. – Mike

답변

0

알다시피, 팔 네온을 사용하여 pow 기능을 구현하는 방법에 대해 질문했습니다. 정수 ab에 대한

가장 효과적인 pow 구현은 루프에서 a에 의해 abs(b)a 여러이다. 음수 인 경우 b은 루프의 결과로 1.0을 나눕니다 (here 참조). 만약 식 POW (X, m) = EXP을 (m의 * 로그 (X)) (here 참조)를 사용 pow 구현할 수보다

explog 구현 있으면.

당신은 당신에 관하여 언급하면 ​​explog 기능이 없습니다.

그래서, 당신은 당신이 ab 더블에 대한 pow을 구현할 수있는 것보다 explog 기능 수학 라이브러리를 찾을 경우.

arm에 대한 수학 라이브러리가 있으며 pow 구현입니다. 예를 들어 math-neon을 참조하십시오.

라이브러리 Simple ARM NEON optimized sin, cos, log and exp에서 순수 logexp 구현 (C에서는 네온 내장 함수 사용)입니다. 라이브러리에서 코드를 가져 와서 팔 어셈블리로 다시 작성할 수 있습니다. 변호사에게 도서관 라이센스를 충족시키는 방법을 물어보십시오. 그 중 두 가지 기능 만 필요합니다. Intrinsics 코드는 asm으로 간단하게 포팅 될 수 있습니다.