~hikiko/nux/arb-srgba-shader

« back to all changes in this revision

Viewing changes to NuxCore/Math/MathFunctions.cpp

  • Committer: Neil Jagdish Patel
  • Date: 2010-09-01 19:25:37 UTC
  • Revision ID: neil.patel@canonical.com-20100901192537-mfz7rm6q262pewg6
Import and build NuxCore

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "../NKernel.h"
 
2
#include "MathFunctions.h"
 
3
 
 
4
 
 
5
NAMESPACE_BEGIN
 
6
 
 
7
const float Const::pi       = 3.1415926535f;
 
8
const float Const::Pi       = 3.1415926535f;
 
9
const float Const::e        = 2.7182817f;
 
10
const float Const::sqrt2    = 1.414214f;
 
11
const float Const::sqrt3    = 1.732051f;
 
12
const float Const::golden   = 1.618034f;
 
13
 
 
14
const double Const::EpsilonMilli   =   0.001;
 
15
const double Const::EpsilonMicro   =   0.000001;
 
16
const double Const::EpsilonNano    =   0.000000001;
 
17
const double Const::EpsilonPico    =   0.000000000001;
 
18
const double Const::EpsilonFemto   =   0.000000000000001;
 
19
 
 
20
t_int Factorial(t_int n)
 
21
{
 
22
    t_int i = 1;
 
23
    while(0 < n)
 
24
    {
 
25
        i *= n;
 
26
        n--;
 
27
    }
 
28
    return i;
 
29
}
 
30
 
 
31
t_double BinomialCoefficient(t_int n, t_int k)
 
32
{
 
33
    if(n < 0)
 
34
        INL_BREAK_ASM_INT3;
 
35
 
 
36
    if(k < 0 || k > n)
 
37
        return 0.0;
 
38
 
 
39
    t_double d = (t_double) Factorial(n) / (t_double) (Factorial(n-k) * Factorial(k));
 
40
    return d;
 
41
}
 
42
 
 
43
t_double Power(t_double x, t_double y)
 
44
{
 
45
    return std::pow(x, y);
 
46
}
 
47
 
 
48
t_double Log2(t_double d)
 
49
{
 
50
    return std::log(d) / std::log(2.0);
 
51
}
 
52
 
 
53
t_double Floor(t_double d)
 
54
{
 
55
    return std::floor(d);
 
56
}
 
57
 
 
58
NAMESPACE_END
 
 
b'\\ No newline at end of file'