[libre-riscv-dev] [Bug 208] implement CORDIC in a general way sufficient to do transcendentals
colepoirier at gmail.com
Wed Apr 15 19:04:08 BST 2020
On Apr 15 2020, at 10:54 am, bugzilla-daemon at libre-soc.org wrote:
> --- Comment #6 from Michael Nolan <mtnolan2640 at gmail.com> ---
> (In reply to Luke Kenneth Casson Leighton from comment #5)
>> ok so would you like to do the next step? which is, yep you guessed it:
>> IEEE754 FP sin and cos :)
> I'm not really sure how to do this though. I know you did a similar
> thing on
> the divider, did you handle it as a float the entire way through or
> convert it
> to integer... somehow?
> Doing it as a float means that the adders/subtractors need to be full floating
> point adders, like those in fpadd/, right?
> For converting the inputs to integers, it seems like there would be
> issues as
> the input angle approached 0 (because floats give more resolution
> there). Cole
> emailed me a paper (which I linked to in the resources page) that
> contained a
> hybrid cordic that switched to a taylor series approximation when the input
> became small enough. This seems like it might work reasonably well for handling
> the small input case.
Here's the link to the paper, which you've linked to on the resources
page. I just thought I'd include it in this bug/mailing list for ease of
access: "Low Latency and Low Error Floating-Point Sine/Cosine Function
Based TCORDIC Algorithm" (https://ieeexplore.ieee.org/document/7784797).
For project members that do not have IEEE explore access, please email
Michael or myself off-list.
I also think that this paper may be relevant, however, I am not entirely sure.
"Pipelined Range Reduction Based Truncated Multiplier" (https://ieeexplore.ieee.org/document/9062697).
More information about the libre-riscv-dev