grunwald@uiucdcsm.UUCP (03/30/87)
In the discussion on str* & friends, someone mentioned using the CORDIC routines for determining sin & cos at the same time. This reminded me of a chip that a friend designed for a class project: a general CORDIC processor, allowing you to set all the registers, turn the crank and then extract the results. The wonderful thing was, not only do you get sin and cos for the cost of a single function, several graphics applications can be sped up dramatically by realising that CORDIC is simply rotating vectors. Instead of doing vector rotation by computing sin and cos, and then doing all the multiplication by the rotation arrays, you simply put your vector in the CORDIC unit, plug in the theta and out pops the rotated vector. Rotating in 2 dimensions is as simple, you just rotate in X-Y plane first and then the Y-Z plane. If I recall, addition of a few bells provides a way to determine normal/tangent vectors rather quickly (which would seem useful for shading) Do any common FPU's use the CORDIC method for builtins? Are there any ways to access the CORDIC registers directly? Dirk Grunwald Univ. of Illinois grunwald@m.cs.uiuc.edu
nelsn@houxj.UUCP (04/02/87)
In article <3300001@uiucdcsm>, grunwald@uiucdcsm.cs.uiuc.edu writes: > > Do any common FPU's use the CORDIC method for builtins? Are there any > ways to access the CORDIC registers directly? > > Dirk Grunwald > Univ. of Illinois > grunwald@m.cs.uiuc.edu The WE32206 MAU from AT&T, and as far as I know, Motorola's 68881 and Intel's 80x87, all use CORDIC for their transcendental functions. It stands for COordinate Rotational DIgital Computer. For a good reference, see "A Unified Algorithm for Elementary Functions", J.S. Walther, Spring Joint Computer Conference, 1971. -- Matthew Nelson AT&T Information Systems ihnp4!houxj!nelsn nelsn@houxj.ATT.COM