HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SYS_FPUMath.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: SYS_FPUMath.h (SYS Library, C++)
7  *
8  * COMMENTS: Prototypes for FPU implementations of math functions.
9  * These are intentionally named with non-standard names,
10  * because they have different signatures.
11  */
12 
13 #pragma once
14 
15 #include "SYS_API.h"
16 #include "SYS_Deprecated.h"
17 #include "SYS_Inline.h"
18 
19 #if defined(LINUX)
20 // This is actually here because Mac expects the assembly functions to have
21 // underscore prefixes, and Linux and Mac use the same assembly file.
22 #define NAME_WRAP(x) _##x
23 #else
24 #define NAME_WRAP(x) x
25 #endif
26 
27 extern "C" {
28 
29 SYS_API void NAME_WRAP(cos_fpu_f)(float* in_out);
30 SYS_API void NAME_WRAP(cos_fpu_d)(double* in_out);
31 SYS_API void NAME_WRAP(sin_fpu_f)(float* in_out);
32 SYS_API void NAME_WRAP(sin_fpu_d)(double* in_out);
33 SYS_API void NAME_WRAP(cos_and_sin_fpu_f)(const float* in, float out[2]);
34 SYS_API void NAME_WRAP(cos_and_sin_fpu_d)(const double* in, double out[2]);
35 SYS_API void NAME_WRAP(tan_fpu_f)(float* in_out);
36 SYS_API void NAME_WRAP(tan_fpu_d)(double* in_out);
37 SYS_API void NAME_WRAP(atan_fpu_f)(float* in_out);
38 SYS_API void NAME_WRAP(atan_fpu_d)(double* in_out);
39 SYS_API void NAME_WRAP(atan2_fpu_f)(const float in[2], float* out);
40 SYS_API void NAME_WRAP(atan2_fpu_d)(const double in[2], double* out);
41 SYS_API void NAME_WRAP(asin_fpu_f)(float* in_out);
42 SYS_API void NAME_WRAP(asin_fpu_d)(double* in_out);
43 SYS_API void NAME_WRAP(acos_fpu_f)(float* in_out);
44 SYS_API void NAME_WRAP(acos_fpu_d)(double* in_out);
45 SYS_API void NAME_WRAP(fmod_fpu_f)(const float in[2], float* out);
46 SYS_API void NAME_WRAP(fmod_fpu_d)(const double in[2], double* out);
47 SYS_API void NAME_WRAP(log_fpu_f)(float* in_out);
48 SYS_API void NAME_WRAP(log_fpu_d)(double* in_out);
49 SYS_API void NAME_WRAP(log10_fpu_f)(float* in_out);
50 SYS_API void NAME_WRAP(log10_fpu_d)(double* in_out);
51 SYS_API void NAME_WRAP(log2_fpu_f)(float* in_out);
52 SYS_API void NAME_WRAP(log2_fpu_d)(double* in_out);
53 SYS_API void NAME_WRAP(log1p_fpu_f)(float* in_out);
54 SYS_API void NAME_WRAP(log1p_fpu_d)(double* in_out);
55 SYS_API void NAME_WRAP(expm1_fpu_f)(float* in_out);
56 SYS_API void NAME_WRAP(expm1_fpu_d)(double* in_out);
57 SYS_API void NAME_WRAP(exp_fpu_f)(float* in_out);
58 SYS_API void NAME_WRAP(exp_fpu_d)(double* in_out);
59 SYS_API void NAME_WRAP(exp2_fpu_f)(float* in_out);
60 SYS_API void NAME_WRAP(exp2_fpu_d)(double* in_out);
61 SYS_API void NAME_WRAP(pow_fpu_f)(const float in[2], float* out);
62 SYS_API void NAME_WRAP(pow_fpu_d)(const double in[2], double* out);
63 SYS_API void NAME_WRAP(tanh_fpu_f)(float* in_out);
64 SYS_API void NAME_WRAP(tanh_fpu_d)(double* in_out);
65 
66 }
67 
68 #define SYS_FPUMATH_DEPRECATED SYS_DEPRECATED_HDK_REPLACE(20.5, "SYS_Math")
69 
70 namespace fpu {
81 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float atan2(float y, float x) { float in[2] = {y,x}; float out; NAME_WRAP(atan2_fpu_f)(in,&out); return out; }
82 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE double atan2(double y, double x) { double in[2] = {y,x}; double out; NAME_WRAP(atan2_fpu_d)(in,&out); return out; }
87 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float fmod(float numer, float denom) { float in[2] = {numer,denom}; float out; NAME_WRAP(fmod_fpu_f)(in,&out); return out; }
88 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE double fmod(double numer, double denom) { double in[2] = {numer,denom}; double out; NAME_WRAP(fmod_fpu_d)(in,&out); return out; }
103 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float pow(float base, float exponent) { float in[2] = {base,exponent}; float out; NAME_WRAP(pow_fpu_f)(in,&out); return out; }
104 SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE double pow(double base,double exponent) { double in[2] = {base,exponent}; double out; NAME_WRAP(pow_fpu_d)(in,&out); return out; }
107 }
108 
109 #undef SYS_FPUMATH_DEPRECATED
110 
111 #undef NAME_WRAP
SYS_API void NAME_WRAP() fmod_fpu_f(const float in[2], float *out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float asin(float x)
Definition: SYS_FPUMath.h:83
SYS_API void NAME_WRAP() acos_fpu_d(double *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float cos(float x)
Definition: SYS_FPUMath.h:71
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float acos(float x)
Definition: SYS_FPUMath.h:85
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float tanh(float x)
Definition: SYS_FPUMath.h:105
SYS_API void NAME_WRAP() log2_fpu_f(float *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float log1p(float x)
Definition: SYS_FPUMath.h:95
SYS_API void NAME_WRAP() asin_fpu_d(double *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float tan(float x)
Definition: SYS_FPUMath.h:77
SYS_API void NAME_WRAP() pow_fpu_d(const double in[2], double *out)
SYS_API void NAME_WRAP() log_fpu_d(double *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float exp2(float x)
Definition: SYS_FPUMath.h:101
SYS_API void NAME_WRAP() tanh_fpu_d(double *in_out)
SYS_API void NAME_WRAP() log10_fpu_d(double *in_out)
#define SYS_FPUMATH_DEPRECATED
Definition: SYS_FPUMath.h:68
SYS_API void NAME_WRAP() log2_fpu_d(double *in_out)
SYS_API void NAME_WRAP() atan2_fpu_f(const float in[2], float *out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float fmod(float numer, float denom)
Definition: SYS_FPUMath.h:87
GLint y
Definition: glcorearb.h:103
SYS_API void NAME_WRAP() log_fpu_f(float *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float log(float x)
Definition: SYS_FPUMath.h:89
SYS_API void NAME_WRAP() exp_fpu_f(float *in_out)
SYS_API void NAME_WRAP() exp_fpu_d(double *in_out)
SYS_API void NAME_WRAP() exp2_fpu_f(float *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float log10(float x)
Definition: SYS_FPUMath.h:91
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE void cos_and_sin(float x, float out[2])
Definition: SYS_FPUMath.h:75
SYS_API void NAME_WRAP() expm1_fpu_d(double *in_out)
SYS_API void NAME_WRAP() cos_fpu_d(double *in_out)
#define NAME_WRAP(x)
Definition: SYS_FPUMath.h:24
SYS_API void NAME_WRAP() expm1_fpu_f(float *in_out)
SYS_API void NAME_WRAP() fmod_fpu_d(const double in[2], double *out)
SYS_API void NAME_WRAP() tan_fpu_d(double *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float expm1(float x)
Definition: SYS_FPUMath.h:97
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float log2(float x)
Definition: SYS_FPUMath.h:93
SYS_API void NAME_WRAP() exp2_fpu_d(double *in_out)
SYS_API void NAME_WRAP() atan2_fpu_d(const double in[2], double *out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float atan(float x)
Definition: SYS_FPUMath.h:79
SYS_API void NAME_WRAP() atan_fpu_f(float *in_out)
SYS_API void NAME_WRAP() sin_fpu_f(float *in_out)
SYS_API void NAME_WRAP() cos_and_sin_fpu_f(const float *in, float out[2])
GLint GLenum GLint x
Definition: glcorearb.h:409
SYS_API void NAME_WRAP() sin_fpu_d(double *in_out)
SYS_API void NAME_WRAP() pow_fpu_f(const float in[2], float *out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float pow(float base, float exponent)
Definition: SYS_FPUMath.h:103
SYS_API void NAME_WRAP() log1p_fpu_f(float *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float exp(float x)
Definition: SYS_FPUMath.h:99
SYS_API void NAME_WRAP() cos_fpu_f(float *in_out)
SYS_API void NAME_WRAP() log10_fpu_f(float *in_out)
SYS_API void NAME_WRAP() tan_fpu_f(float *in_out)
SYS_API void NAME_WRAP() atan_fpu_d(double *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float sin(float x)
Definition: SYS_FPUMath.h:73
SYS_API void NAME_WRAP() cos_and_sin_fpu_d(const double *in, double out[2])
#define SYS_API
Definition: SYS_API.h:11
SYS_API void NAME_WRAP() log1p_fpu_d(double *in_out)
SYS_API void NAME_WRAP() asin_fpu_f(float *in_out)
SYS_API void NAME_WRAP() acos_fpu_f(float *in_out)
SYS_API void NAME_WRAP() tanh_fpu_f(float *in_out)
SYS_FPUMATH_DEPRECATED SYS_FORCE_INLINE float atan2(float y, float x)
Definition: SYS_FPUMath.h:81