2015-01-13 3 views
0

answer을 보면 작성자는 2 개의 SSE 레지스터에 저장된 2 개의 정수 bignum에 대한 간결한 비교 알고리즘을 작성합니다.누군가이 SSE BigNum 비교를 설명 할 수 있습니까?

l = a < b = {a[i] < b[i] ? ~0 : 0} 경우

a < b == l[3] v e[3]l[2] v e[3]e[2]l[1] v e[3]e[2]e[1]l[0]

다음

e = a == b = {a[i] == b[i] ? ~0 : 0} 

그러나 이것은 저자가 무엇 될 것 같지 않습니다 : 내가 지금까지 무슨 짓을

:) 너무 잘 따라하고 있지 않다 하기. 내가 뭘 놓치고 있니? 비교가 필요하다면 무엇이 필요합니까?

+0

그는 SSE에서 사용 가능한 유일한 정수 비교이기 때문에보다 큼 비교를 사용합니다. – Mysticial

+0

하지만 그렇지 않으면 그는 내가 사용하는 것과 동일한 공식에 따라보다 적게 계산합니까? – user1095108

+0

@ 신비로운 아아, 64 비트 bignums에 특유한 속임수와 특질을 알고 있습니다. – user1095108

답변

0

대답이 일반적인 것보다는 간과되었지만 32 비트 요소로 구성된 64 비트 bignum으로 제한되었습니다. 당신이 64 비트 벡터가있는 경우 a = {a0, a1}b = {b0, b1} 후 프로그램은 계산 : 내 질문에

a < b = ((a1 < b1) | (a0 < b0)) & ~(a1 > b1) 

을 내가 SSE/AVX 레지스터로 구현 임의의 긴 BigNums, 목표로했다.