#include <stdio.h>
#include <cstdlib>
static const float pyramid_kernel[] = {
    1,  4,  6,  4, 1,
    4, 16, 24, 16, 4,
    6, 24, 36, 24, 6,
    4, 16, 24, 16, 4,
    1,  4,  6,  4, 1
};
array pyramid(
const array& img, 
const int level, 
const bool sampling)
 {
    array kernel(5, 5, pyramid_kernel);
     kernel = kernel / 256.f;
    if(sampling) {                              
        for(int i = 0; i < level; i++) {
            for(
int j = 0; j < pyr.
dims(2); j++)
         }
    } else {                                    
        for(int i = 0; i < level; i++) {
            for(
int j = 0; j < pyr.
dims(2); j++)
             pyr = tmp;
        }
    }
    return pyr;
}
void pyramids_demo()
{
    af::Window wnd_rgb(
"Image Pyramids - RGB Images");
     af::Window wnd_gray(
"Image Pyramids - Grayscale Images");
     array img_rgb = 
loadImage(ASSETS_DIR 
"/examples/images/atlantis.png", 
true) / 255.f; 
     array downc1 = pyramid(img_rgb,  1, 
true);
     array downc2 = pyramid(img_rgb,  2, 
true);
     array upc1   = pyramid(img_rgb,  1, 
false);
     array upc2   = pyramid(img_rgb,  2, 
false);
     array downg1 = pyramid(img_gray, 1, 
true);
     array downg2 = pyramid(img_gray, 2, 
true);
     array upg1   = pyramid(img_gray, 1, 
false);
     array upg2   = pyramid(img_gray, 2, 
false);
         wnd_rgb(0, 0).
image(img_rgb, 
"color image");
        wnd_rgb(1, 0).
image(downc1, 
"downsample 1 level");
        wnd_rgb(0, 1).
image(downc2, 
"downsample 2 levels");
        wnd_rgb(1, 1).
image(upc1, 
"upsample 1 level");
        wnd_rgb(0, 2).
image(upc2, 
"upsample 2 level");
        wnd_gray(0, 0).
image(img_gray, 
"grayscale image");
        wnd_gray(1, 0).
image(downg1, 
"downsample 1 level");
        wnd_gray(0, 1).
image(downg2, 
"downsample 2 levels");
        wnd_gray(1, 1).
image(upg1, 
"upsample 1 level");
        wnd_gray(0, 2).
image(upg2, 
"upsample 2 level");
    }
}
int main(int argc, char** argv)
{
    int device = argc > 1 ? atoi(argv[1]) : 0;
    try {
        printf("** ArrayFire Image Pyramids Demo **\n\n");
        pyramids_demo();
        fprintf(stderr, 
"%s\n", e.
what());
        throw;
    }
    return 0;
}