Draft: Resolve "lib_com/ivas_rotation_com.c : MLD sensitive ISAR_ENC path due to precision differences in sinf()"
- Related issues: #1607
- Requested reviewers: @patils, @tyagiri (git blame says you might have contributed this function?)
Reason why this change is needed
- It seems like a cumulative error builds up from
sinf()calls eventually resulting in selecting a different HRTF position - Upon listening to the reference, it sounds like a clear bug which is eliminated by this fix
Description of the change
- Two steps have been taken to alleviate the issue instead of simply using double trig function variants:
- Compute the cosine with double precision, then demote to float and derive the sine from it using trigonometric identity
- Normalize the quaternion at the end of the function to ensure any error is spread across components
- Helper function
sincos_angle()is used
Affected operating points
- Binaural rendering with headrotation / orientation tracking
- Anything that calls
Euler2Quat():
Related to #1607
Edited by Archit Tamarapu
