42 static inline double grad(
int hash, 
double x, 
double y, 
double z)
 
   47     double u = 
h < 8  ? x : y;
 
   56     else if (
h == 12  || 
h == 14 )
 
   63     return ((
h&1) == 0 ? 
u : -
u)+((
h&2) == 0 ? v : -v);
 
   66 static inline double fade(
double t)
 
   72     return t * t * t * (t * (t * 6 - 15) + 10);
 
   75 static double lerp(
double a, 
double b, 
double x)
 
   77     return a + x * (
b - 
a);
 
   83     151, 160, 137,  91,  90,  15, 131,  13, 201,  95,  96,  53, 194, 233,   7, 225,
 
   84     140,  36, 103,  30,  69, 142,   8,  99,  37, 240,  21,  10,  23, 190,   6, 148,
 
   85     247, 120, 234,  75,   0,  26, 197,  62,  94, 252, 219, 203, 117,  35,  11,  32,
 
   86      57, 177,  33,  88, 237, 149,  56,  87, 174,  20, 125, 136, 171, 168,  68, 175,
 
   87      74, 165,  71, 134, 139,  48,  27, 166,  77, 146, 158, 231,  83, 111, 229, 122,
 
   88      60, 211, 133, 230, 220, 105,  92,  41,  55,  46, 245,  40, 244, 102, 143,  54,
 
   89      65,  25,  63, 161,   1, 216,  80,  73, 209,  76, 132, 187, 208,  89,  18, 169,
 
   90     200, 196, 135, 130, 116, 188, 159,  86, 164, 100, 109, 198, 173, 186,   3,  64,
 
   91      52, 217, 226, 250, 124, 123,   5, 202,  38, 147, 118, 126, 255,  82,  85, 212,
 
   92     207, 206,  59, 227,  47,  16,  58,  17, 182, 189,  28,  42, 223, 183, 170, 213,
 
   93     119, 248, 152,   2,  44, 154, 163,  70, 221, 153, 101, 155, 167,  43, 172,   9,
 
   94     129,  22,  39, 253,  19,  98, 108, 110,  79, 113, 224, 232, 178, 185, 112, 104,
 
   95     218, 246,  97, 228, 251,  34, 242, 193, 238, 210, 144,  12, 191, 179, 162, 241,
 
   96      81,  51, 145, 235, 249,  14, 239, 107,  49, 192, 214,  31, 181, 199, 106, 157,
 
   97     184,  84, 204, 176, 115, 121,  50,  45, 127,   4, 150, 254, 138, 236, 205,  93,
 
   98     222, 114,  67,  29,  24,  72, 243, 141, 128, 195,  78,  66, 215,  61, 156, 180
 
  113         for (
i = 0; 
i < 512; 
i++) {
 
  118         uint8_t random_permutations[256];
 
  125         for (
i = 0; 
i < 256; 
i++) {
 
  126             random_permutations[
i] = 
i;
 
  129         for (
i = 0; 
i < 256; 
i++) {
 
  130             unsigned int random_idx = 
av_lfg_get(&lfg) % (256-
i);
 
  131             uint8_t random_val = random_permutations[random_idx];
 
  132             random_permutations[random_idx] = random_permutations[255-
i];
 
  148     int aaa, aba, aab, abb, baa, bba, bab, bbb;
 
  149     double x1, x2, y1, y2;
 
  153         x = fmod(x, perlin->
period);
 
  154         y = fmod(y, perlin->
period);
 
  155         z = fmod(z, perlin->
period);
 
  174     aaa = 
p[
p[
p[    
xi         ] +     yi         ] +     zi         ];
 
  192               grad(bba, 
xf-1, yf-1, zf),
 
  194     y1 = 
lerp(x1, x2, v);
 
  197               grad(bab, 
xf-1, yf  , zf-1),
 
  200               grad(bbb, 
xf-1, yf-1, zf-1),
 
  202     y2 = 
lerp(x1, x2, v);
 
  205     return (
lerp(y1, y2, 
w) + 1) / 2;
 
  211     double frequency = 1;
 
  212     double amplitude = 1;
 
  213     double max_value = 0;                   
 
  216         total += 
perlin_get(perlin, x * frequency, y * frequency, z * frequency) * amplitude;
 
  217         max_value += amplitude;
 
  222     return total / max_value;