|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
paper: CORDIC Trigonometric Math Library
Thread created automatically to discuss a document in CD-Media.
CORDIC Trigonometric Math Library by Pat Fairbank |
|
#2
|
||||
|
||||
|
Re: paper: CORDIC Trigonometric Math Library
I felt like doing some programming, so I updated the CORDIC math library I posted a few years ago.
I made a few changes such as returning both the sine and cosine values instead of throwing one away (since CORDIC calculates both at once), and downgrading from 24-bit math to 16-bit math in the interest of speed. However, the biggest change is that the library is now written in PIC assembly instead of C, since I was curious to see if there was any speed advantage to be had. I did some speed testing by calling the function as many times as possible in one Process_Data_From_Master_uP() loop before the RC crashed. The assembly implementation of the sin_cos() function took 4500 calls to crash while the C implementation took 1800 calls; the atan2_sqrt() function took 4700 and 1900, respectively. So it seems that the assembly implementation is about 2.5 times faster than the C implementation. Any questions or comments are welcome. |
|
#3
|
||||
|
||||
|
Re: paper: CORDIC Trigonometric Math Library
I just uploaded a second revision to the trig library. There was a bug in the way the previous versions were handling the C function calls in assembly - the software stack wasn't being manipulated properly, with the result that the trig functions would work as expected when called from a function that didn't have local variables, but would return strange values when called from a function that did.
So if you're using the library and are seeing strange return values, you probably have an older version and need to update to Revision 2. |
|
#4
|
|||
|
|||
|
Re: paper: CORDIC Trigonometric Math Library
EDIT: Ignore this post, I can not delete it
Last edited by comphappy : 09-02-2008 at 00:50. Reason: Issue turned out to be non related |
|
#5
|
||||
|
||||
|
Re: paper: CORDIC Trigonometric Math Library
What is the advantage to using this vs a lookup table to the desired degree of accuracy?
How much more accurate and slow is the built in <math.h>? |
|
#6
|
||||
|
||||
|
Re: paper: CORDIC Trigonometric Math Library
Quote:
so id say its about... 90x faster? someone call me on this if my math is wrong. |
|
#7
|
|||
|
|||
|
Re: paper: CORDIC Trigonometric Math Library
Ok i just found out what is needed to get this code to compile with the new 3.02 or higher compiler,
you need to replace all instances of AARGB3 with the new definition of __AARGB3 you can see the reference to this naming change here: http://ww1.microchip.com/downloads/e...03-README.html ref (27624) Last edited by comphappy : 09-02-2008 at 02:30. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Programming Trigonometric Functions | Dan894 | Programming | 4 | 14-02-2006 20:27 |
| Cordic functions... | Zalumaskov | Programming | 1 | 13-02-2005 00:58 |
| Trigonometric related equations | nb45ti | Math and Science | 4 | 20-07-2004 18:53 |
| White Paper Discuss: 296's CORDIC Math Library | CD47-Bot | Extra Discussion | 5 | 28-04-2004 20:01 |
| math.h library | mightywombat | Programming | 24 | 17-01-2004 13:10 |