나는 Haxe에서 DSP를하고 있습니다. 내 DSP 중 일부는 비정규 (비정규라는) 숫자를 생성 할 수있는 재귀 알고리즘을 포함합니다. 일부 플랫폼은 이러한 숫자가 발생할 때 제대로 작동하지 않으므로 실시간 처리가 불가능합니다. 심지어 오프라인 처리도 경우에 따라 훨씬 어려워집니다. 분명히, 매우 작은 수를 생성하는 알고리즘 (예 : 재귀 적 곱셈을 통해) 만 영향을 받지만, 이들과 함께 작업하고 있습니다. 문제를 다루는Haxe에서 비정상적인 것을 피하십시오.
한 매우 일반적인 절차는 간단이 :
if r is a denormal
r <- 0
비정규 항상 (거의)이며, 지정된 알고리즘에 어떤 영향을 미칠 너무 작은 경우는 잘 작동합니다.
나는 많은 플랫폼을 구축하고자하며 가능한 한 최대로 이러한 문제가 발생하기 전에 이러한 두통을 피하려고합니다. 따라서 문제는 Haxe의 비정규 권을 어떻게 신속하고 효율적으로 식별/제거 할 수 있습니까?
다음과 같은 다른 질문으로 분류 될 수 있습니다. Haxe는 비정품 처리 언어를 사용하는 방법을 가지고 있습니까? 아니면 플랫폼에 달려 있습니까? (나는 문서에서 아무것도 보지 않는다 - isDenormal 함수조차도 아니다.) 플랫폼에 달려 있다면 깃발 같은 것이 있는가? 어떤 플랫폼이 특별한 처리가 필요한지 알 수 있습니까?
감사합니다.
그래,하지만 모든 경우에 최소한/denomals에 대한 플랫폼 특성이 무엇인지/define/etc 플래그를 통해 알릴 수있었습니다. 그것이 그렇듯이, 나는 각 플랫폼에 대해 #ifdef로 lib를 만들어야하고, 비정상 탐지를 최적의 방식으로 멀리해야한다. –
글쎄, 당신은 항상 자신을 정의 할 수 있습니다 : (((x <0)? -x : x) <1e-15? 0 : x) – Waneck
비욘, 당신은 스스로 이렇게 정의 할 수 있습니다 : public => static 인라인 함수 needDenormFix() return #if java || PHP true #else false #end <=. "좋은"플랫폼의 정확한 목록을 보려면 각 플랫폼 사양을 살펴보십시오. 그러나 모든 플랫폼에서이 문제를 해결하기 위해 자신의 코드를 사용하는 것이 좋다고 생각합니다. – stroncium