How it is tested: No simulations, simply had an ATMEGA8 send over all calculations to a PC which verified the results using the FPU Columns: Mode = The test mode, new for the modified fp_sinus.S (enhanced), old for 1.63 version fp_sinus.S (enhanced) Tests = Number of mantissa tested (hex) errs = Number of times the result differs from FPU single precission result (hex) MinDif= Maximum negative rounding error in number of least significant bits (ideally -0.5) MaxDif= Maximum positive rounding error in number of least significant bits (ideally +0.5) ErrPerc= Percentage of mismatches with FPU MaxCyc= Maximum number of cycles the calculations took AvgCyc= Average number of cycles the calculations took (Sum of cycles / Tests) Range = 0.03125 to 0.0625 Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 800000 4634 -0.506665147840977 0.51317104883492 0.21424324165808 630 569 old 800000 302039 -1.48840029351413 < 0.5 (never too large) 37.5984164203996 1761 1720 Range = 0.0625 to 0.125 Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 800000 7259 -0.504757793620229 0.515287639573216 0.348961561299301 625 621 old 800000 2FE6C0 -1.49131919257343 0.50276461802423 37.422969882228 1785 1684 Range = 0.125 to 0.25 Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 800000 7ED2 -0.512283908203244 0.511283231899142 0.387026125157521 777 663 old 800000 2F8B0E -1.49592027626932 0.51193424127996 37.1431156567473 1705 1617 Range = 0.25 to 0.5 Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 800000 B0EE -0.516396151855588 0.513070371001959 0.539965416177146 770 764 old 800000 2E927C -1.50313551537693 0.566001819446683 36.3845391731905 1674 1605 Range - 0.5 to 1.0 Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 800000 B077 -0.519036000594497 0.520717730745673 0.538529506290931 908 869 old 800000 2B398D -1.56492245011032 0.775112813338637 33.7693850719196 1691 1652 Range = 1.0 to pi/2 (1.5707) Mode tests errs MinDif MaxDif ErrPerc MaxCyc AvgCyc new 490CB3 6D73 -0.528289433568716 0.520198427140713 0.585729555124407 1060 1017 old 490CB3 224756 -2.46611025556922 1.75252049975097 46.9570826520873 1715 1650 As you can see, the least significant bit has almost no meaning for the old routine, the new routine approaches the ideal values of plus or minus 0.5*lsb. Also, the new routine is on average more than twice as fast.