Merge branch 'stable-1.1'
Conflicts: include/lmms_math.h plugins/delay/delaycontrolsdialog.cpp src/core/FxMixer.cpp src/gui/FxMixerView.cpp
This commit is contained in:
@@ -74,7 +74,7 @@ public:
|
||||
}
|
||||
|
||||
void clearJournal();
|
||||
|
||||
void stopAllJournalling();
|
||||
JournallingObject * journallingObject( const jo_id_t _id )
|
||||
{
|
||||
if( m_joIDs.contains( _id ) )
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <math.h>
|
||||
#include "lmms_constants.h"
|
||||
#include "lmms_math.h"
|
||||
|
||||
inline float hermiteInterpolate( float x0, float x1, float x2, float x3,
|
||||
float frac_pos )
|
||||
@@ -80,24 +81,13 @@ inline float cubicInterpolate( float v0, float v1, float v2, float v3, float x )
|
||||
inline float cosinusInterpolate( float v0, float v1, float x )
|
||||
{
|
||||
const float f = ( 1.0f - cosf( x * F_PI ) ) * 0.5f;
|
||||
#ifdef FP_FAST_FMAF
|
||||
return fmaf( f, v1-v0, v0 );
|
||||
#else
|
||||
return f * (v1-v0) + v0;
|
||||
#endif
|
||||
// return( v0*f + v1*( 1.0f-f ) );
|
||||
return fastFmaf( f, v1-v0, v0 );
|
||||
}
|
||||
|
||||
|
||||
inline float linearInterpolate( float v0, float v1, float x )
|
||||
{
|
||||
// take advantage of fma function if present in hardware
|
||||
|
||||
#ifdef FP_FAST_FMAF
|
||||
return fmaf( x, v1-v0, v0 );
|
||||
#else
|
||||
return x * (v1-v0) + v0;
|
||||
#endif
|
||||
return fastFmaf( x, v1-v0, v0 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -140,6 +140,43 @@ static inline float fastRandf( float range )
|
||||
{
|
||||
static const float fast_rand_ratio = 1.0f / FAST_RAND_MAX;
|
||||
return fast_rand() * range * fast_rand_ratio;
|
||||
|
||||
//! @brief Takes advantage of fmal() function if present in hardware
|
||||
static inline long double fastFmal( long double a, long double b, long double c )
|
||||
{
|
||||
#ifdef FP_FAST_FMAL
|
||||
#ifdef __clang__
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return fmal( a, b, c );
|
||||
#endif
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
//! @brief Takes advantage of fmaf() function if present in hardware
|
||||
static inline float fastFmaf( float a, float b, float c )
|
||||
{
|
||||
#ifdef FP_FAST_FMAF
|
||||
#ifdef __clang__
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return fmaf( a, b, c );
|
||||
#endif
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
//! @brief Takes advantage of fma() function if present in hardware
|
||||
static inline double fastFma( double a, double b, double c )
|
||||
{
|
||||
#ifdef FP_FAST_FMA
|
||||
return fma( a, b, c );
|
||||
#else
|
||||
return a * b + c;
|
||||
#endif
|
||||
}
|
||||
|
||||
// source: http://martin.ankerl.com/2007/10/04/optimized-pow-approximation-for-java-and-c-c/
|
||||
|
||||
Reference in New Issue
Block a user