130 likes | 275 Views
IEEE Fast Square Root. Ref: Graphics Gems III; 2 Spring 2003. Motivation. Square root operations are frequently used in many applications (e.g., computer graphics) Usually speed is more important than accuracy Is there any way faster than sqrt( )? Idea: tabulated sqrt!.
E N D
IEEE Fast Square Root Ref: Graphics Gems III; 2 Spring 2003
Motivation • Square root operations are frequently used in many applications (e.g., computer graphics) • Usually speed is more important than accuracy • Is there any way faster than sqrt( )? • Idea: tabulated sqrt!
Negative exponents: same! Math Background For 52-bit mantissa (double), only limited cases need to be computed: 2252 entries; each entry with 52 bits
Abridged Table • Sacrifice accuracy for smaller tables • Indexed by first 13 bits of mantissa only • Only 2213 entries; each entry with 20 significant binary bits • Further accuracy, if required, can be obtained by one or two Newton iterations, using the tabulated value as initial guess Try this yourself!
B7 B6 B5 B4 B3 B2 B1 B0 How Numbers are Stored in Memory Conceptually: SEEEEEEEEEEEMMMM MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM B0 B1 B2 B3 B4 B5 B6 B7 Stored (on PC): byte swapping; Least Significant Byte first Byte swapping: Cautious when exchanging binary files and direct data access; But when we read/operate as the declared data, do not need to worry (it reads backward) This is why the examiner works
Byte Swapping (cont) short 1029: 0x 0405 int 218+5: 0x 0040 0005 float 3.5: 0x 4060 0000 double 3.5: 0x 400c 0000 0000 0000 Use this program to see for yourself
Implementation Setup Table Evaluation
B7 B6 B5 B4 B3 B2 B1 B0 Details: access M.S.Byte f fi
13 7 MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM SEEEEEEEEEEEMMMM MMMMMMMMMMMMMMMM f fi
Twice faster; but note the overhead for building up the tables