#include <stdio.h>
#include <cmath>
#include <cstdlib>
#include <iostream>
#define WIDTH 400
#define HEIGHT 400
using std::abs;
array complex_grid(
int width,
int height,
float zoom,
float center[2]) {
(iota(
dim4(1, height),
dim4(width, 1)) - (float)height / 2.0) / zoom +
center[0];
(iota(
dim4(width, 1),
dim4(1, height)) - (float)width / 2.0) / zoom +
center[1];
return complex(X, Y);
}
array mandelbrot(
const array &in,
int iter,
float maxval) {
for (int ii = 1; ii < iter; ii++) {
Z = Z * Z + C;
C = C * (1 - cond);
Z = Z * (1 - cond);
}
return mag / maxval;
}
float mx = af::max<float>(a);
float mn = af::min<float>(a);
return (a - mn) / (mx - mn);
}
int main(int argc, char **argv) {
int device = argc > 1 ? atoi(argv[1]) : 0;
int iter = argc > 2 ? atoi(argv[2]) : 100;
bool console = argc > 2 ? argv[2][0] == '-' : false;
try {
printf("** ArrayFire Fractals Demo **\n");
float center[] = {-0.75f, 0.1f};
for (int i = 10; i < 400; i++) {
int zoom = i * i;
if (!(i % 10)) {
printf("iteration: %d zoom: %d\n", i, zoom);
fflush(stdout);
}
array c = complex_grid(WIDTH, HEIGHT, zoom, center);
array mag = mandelbrot(c, iter, 1000);
if (!console) {
if (wnd.close()) break;
array mag_norm = normalize(mag);
wnd.image(mag_norm);
}
}
fprintf(stderr,
"%s\n", e.
what());
throw;
}
return 0;
}
Window object to render af::arrays.
A multi dimensional data container.
dim4 dims() const
Get dimensions of the array.
void eval() const
Evaluate any JIT expressions to generate data for the array.
Generic object that represents size and shape.
An ArrayFire exception class.
virtual const char * what() const
Returns an error message for the exception in a string format.
@ f32
32-bit floating point values
@ AF_COLORMAP_SPECTRUM
Spectrum map (390nm-830nm, in sRGB colorspace)
AFAPI array abs(const array &in)
C++ Interface to calculate the absolute value.
AFAPI array sqrt(const array &in)
C++ Interface to evaluate the square root.
array & eval(array &a)
Evaluate an expression (nonblocking).
AFAPI void setDevice(const int device)
Sets the current device.
AFAPI array max(const array &in, const int dim=-1)
C++ Interface to return the maximum along a given dimension.