mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
add sincos fns
This commit is contained in:
parent
032f773b53
commit
432777a74a
@ -21,6 +21,46 @@ INLINE float ccos(float v) {
|
|||||||
return cosf(v);
|
return cosf(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INLINE void
|
||||||
|
sincosf(float v, float *pSinResult, float *pCosResult) {
|
||||||
|
|
||||||
|
// msvc defines _M_IX86 for x86
|
||||||
|
#ifdef _M_IX86
|
||||||
|
#define fsincos __asm _emit 0xd9 __asm _emit 0xfb
|
||||||
|
__asm {
|
||||||
|
mov eax, pSinResult
|
||||||
|
mov edx, pCosResult
|
||||||
|
fld v
|
||||||
|
fsincos
|
||||||
|
fstp DWORD ptr [edx]
|
||||||
|
fstp DWORD ptr [eax]
|
||||||
|
}
|
||||||
|
#undef fsincos
|
||||||
|
#else //!_X86_
|
||||||
|
*pSinResult = sinf(v);
|
||||||
|
*pCosResult = cosf(v);
|
||||||
|
#endif //!_X86_
|
||||||
|
}
|
||||||
|
|
||||||
|
INLINE void
|
||||||
|
sincos(double v, double *pSinResult, double *pCosResult) {
|
||||||
|
#ifdef _M_IX86
|
||||||
|
#define sincos __asm _emit 0xd9 __asm _emit 0xfb
|
||||||
|
__asm {
|
||||||
|
mov eax, pSinResult
|
||||||
|
mov edx, pCosResult
|
||||||
|
fld v
|
||||||
|
fsincos
|
||||||
|
fstp QWORD ptr [edx]
|
||||||
|
fstp QWORD ptr [eax]
|
||||||
|
}
|
||||||
|
#undef sincos
|
||||||
|
#else //!_X86_
|
||||||
|
*pSinResult = sin(v);
|
||||||
|
*pCosResult = cos(v);
|
||||||
|
#endif //!_X86_
|
||||||
|
}
|
||||||
|
|
||||||
INLINE float cabs(float v) {
|
INLINE float cabs(float v) {
|
||||||
return fabs(v);
|
return fabs(v);
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
INLINE float csqrt(float v);
|
INLINE float csqrt(float v);
|
||||||
INLINE float csin(float v);
|
INLINE float csin(float v);
|
||||||
INLINE float ccos(float v);
|
INLINE float ccos(float v);
|
||||||
|
INLINE void csincos(float v, float *pSinResult, float *pCosResult); // does both at once (faster on x86)
|
||||||
INLINE float cabs(float v);
|
INLINE float cabs(float v);
|
||||||
INLINE float catan2(float y, float x);
|
INLINE float catan2(float y, float x);
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ INLINE double csin(double v);
|
|||||||
INLINE double ccos(double v);
|
INLINE double ccos(double v);
|
||||||
INLINE double cabs(double v);
|
INLINE double cabs(double v);
|
||||||
INLINE double catan2(double y, double x);
|
INLINE double catan2(double y, double x);
|
||||||
|
INLINE void csincos(double v, double *pSinResult, double *pCosResult); // does both at once (faster on x86)
|
||||||
|
|
||||||
// Returns true if the number is nan, false if it's a genuine number
|
// Returns true if the number is nan, false if it's a genuine number
|
||||||
// or infinity.
|
// or infinity.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user