#include <math.h>
Go to the source code of this file.
Defines | |
#define | MJ_pi 3.1415926535897931 |
The value of pi. | |
#define | MJ_2pi 6.2831853071795862 |
The value of 2 * pi. | |
#define | MJ_piSquared 9.869604401089358 |
The value of pi^2. | |
#define | MJ_pi2 1.57079632679489660000 |
The value of pi / 2. | |
#define | MJ_pi4 0.78539816339744828 |
The value of pi / 4. | |
#define | MJ_ln2 0.693147180559945290 |
The value of ln(2). | |
#define | MJ_ln22 0.346573590279972640 |
The value of ln(2) / 2. | |
Functions | |
float | MJ_abs (float x1) |
Absolute value. | |
unsigned long | MJ_abs (unsigned long x1) |
Null function needed for templates. | |
float | MJ_centToMul (float cents) |
Convert pitch relative cents to multiplier. | |
float | MJ_mulToCent (float mul) |
Convert multiplier to relative pitch. | |
double | MJ_centToMul (double cents) |
Convert pitch relative cents to multiplier. | |
double | MJ_mulToCent (double mul) |
Convert multiplier to relative pitch. |
Overloaded mathematical functions.
WHY ?
Standard libm defines functions with different names for different data types. This is a problem, if you typedef variables and want to change the type afterwards - by default the functions remain what they were, resulting in either loss of precicion (float to double change) or excessive precision (double to float). The same problem arises with template systems.
To make the transition between data types transparent, Mustajuuri defines an overloaded series of common mathematics functions with the same name and both float and double arguments.
Besides the inline wrappers, mj_math also introduces some useful functions usually available as macros - minimum and maximum value for example. Function is better than macro.
There are also some useful constants (pi, ln(2) etc.)