Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!lll-lcc!styx!ames!ptsfa!ihnp4!inuxc!pur-ee!uiucdcs!uiucdcsm!grunwald From: grunwald@uiucdcsm.UUCP Newsgroups: comp.arch Subject: Cordic chips Message-ID: <3300001@uiucdcsm> Date: Mon, 30-Mar-87 11:19:00 EST Article-I.D.: uiucdcsm.3300001 Posted: Mon Mar 30 11:19:00 1987 Date-Received: Fri, 3-Apr-87 06:30:08 EST Lines: 26 Nf-ID: #N:uiucdcsm:3300001:000:1149 Nf-From: uiucdcsm.cs.uiuc.edu!grunwald Mar 30 10:19:00 1987 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