/usr/include/Gem/Utils/GemMath.h is in gem-dev 1:0.93.3-13.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | /*-----------------------------------------------------------------
LOG
GEM - Graphics Environment for Multimedia
Matrix class
Copyright (c) 1997-1999 Mark Danks. mark@danks.org
Copyright (c) Günther Geiger. geiger@epy.co.at
Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
-----------------------------------------------------------------*/
#ifndef _INCLUDE__GEM_UTILS_GEMMATH_H_
#define _INCLUDE__GEM_UTILS_GEMMATH_H_
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#ifdef __APPLE__
# include <AvailabilityMacros.h>
# if defined (MAC_OS_X_VERSION_10_3) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
# else
#define sqrtf(v) (float)sqrt((double)(v))
#define cosf(v) (float)cos((double)(v))
#define sinf(v) (float)sin((double)(v))
#define tanf(v) (float)tan((double)(v))
#define logf(v) (float)log((double)(v))
#define expf(v) (float)exp((double)(v))
#define atan2f(v,p) (float)atan2((double)(v), (double)(p))
#define powf(v,p) (float)pow((double)(v), (double)(p))
# endif /* OSX_10_3 */
#endif /* __APPLE__ */
///////////////////////////////////////////////////////////////////////////////
// Speedup found via Shark: ppc only
//
// If you do not require full precision, you can use the PowerPC floating-point
// reciprocal square-root estimate instruction (frsqrte) instead of calling sqrt().
//
// If needed, you can increase the precision of the estimate returned by
// frsqrte (5-bits of precision) by using the Newton-Raphson method for improving
// the estimate (x0) for 1/sqrt(a) (x1 = 0.5 * x0 * [3.0 - a * x0 * x0]).
///////////////////////////////////////////////////////////////////////////////
#ifdef __ppc__
# include <ppc_intrinsics.h>
# ifdef sqrt
# undef sqrt
# endif
# ifdef sqrtf
# undef sqrtf
# endif
# define sqrt fast_sqrtf
# define sqrtf fast_sqrtf
inline double fast_sqrt(double x)
{
register double est = __frsqrte(x);
return x * 0.5 * est * __fnmsub(est * est, x, 3.0);
}
inline float fast_sqrtf(float x)
{
register float est = (float)__frsqrte(x);
return x * 0.5f * est * __fnmsubs(est * est, x, 3.0f);
}
#endif /* __ppc__ */
#ifdef _WIN32
/* seems like there is no drand48() on w32 */
/* JMZ: this should really return "double" instead of "float",
* but we need only float... */
# define drand48() ((float)rand())/((float)RAND_MAX)
#endif /* _WIN32 */
#endif // for header file
|