[RFC PATCH] riscv: add vectorized sin
Pincheng Wang
pincheng.plct@isrc.iscas.ac.cn
Fri Jul 10 02:11:44 GMT 2026
Hi Paul,
On 2026/7/9 20:02, Paul Zimmermann wrote:
>> The worst-case error is <= 1 ULP.
>
> great! Is that observed or do you have a proof of this bound?
> Did you try with inputs from [1] and [2]?
>
> Note that it now exists some vector and correctly rounded implementations [3] and [4].
Thank you for the insightful questions. To be completely honest, the <=
1 ULP bound was an observation rather than a proof. I arrived at this
conclusion by testing the implementation with approximately 770,000
samples (about 440,000 uniformly distributed random inputs across three
code paths, plus roughly 300,000 random full-exponent-range bit
patterns) against a 250-bit MPFR/mpmath reference. In those specific
tests, no results exceeded 1 ULP.
However, after running the test cases you provided, I realized my
initial assessment was incomplete. The maximum ULP errors are 0.931 and
1.0 for trig.wc and sin.wc respectively. Specifically, 17 cases in
sin.wc show a ULP error of exactly 1.0, and all of these cases fall into
the slow path (where |x| >= 1e6).
Thank you also for sharing those papers; they serve as excellent
references for improving my implementation. I have also noticed that
some open-source libraries, such as SLEEF [1], claim to achieve <= 1 ULP
accuracy. Before formally submitting the patch, I will continue to study
these resources and further refine the accuracy of my implementation,
while ensuring license compatibility.
Thank you very much for your valuable feedback and guidance.
BR,
Pincheng Wang
[1] https://sleef.org/
More information about the Newlib
mailing list