ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tcos.c
(Generate patch)

Comparing ray/src/common/tcos.c (file contents):
Revision 3.5 by greg, Fri Feb 11 00:35:14 2011 UTC vs.
Revision 3.10 by greg, Fri Jul 12 05:16:02 2013 UTC

# Line 18 | Line 18 | static const char      RCSid[] = "$Id$";
18  
19   #include "rtmath.h"
20  
21 + #ifndef __FAST_MATH__
22 +
23   #ifndef NCOSENTRY
24 < #define NCOSENTRY       256
24 > #define NCOSENTRY       1024
25   #endif
26  
25
27   double
28   tcos(double x)                          /* approximate cosine */
29   {
# Line 49 | Line 50 | tcos(double x)                         /* approximate cosine */
50                  return(costab[(4*NCOSENTRY)-i]);
51          }
52          return(0.);             /* should never be reached */
53 + }
54 +
55 + #endif
56 +
57 + /* Fast arctangent approximation due to Rajan et al. 2006 */
58 + double
59 + atan2a(double y, double x)
60 + {
61 +        double  ratio, aratio, val;
62 +
63 +        if (x == 0)
64 +                return (y > 0) ? PI/2. : 3./2.*PI;
65 +
66 +        aratio = (ratio = y/x) >= 0 ? ratio : -ratio;
67 +
68 +        if (aratio > 1.01)
69 +                return PI/2. - atan2a(x, y);
70 +
71 +        val = PI/4.*ratio - ratio*(aratio - 1.)*(0.2447 + 0.0663*aratio);
72 +
73 +        return val + PI*(x < 0);
74   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines