#include <stdio.h>
#include <iostream>
#include <cmath>
#include <cstdlib>
#define WIDTH 400
#define HEIGHT 400
array complex_grid(
int width,
int height,
float zoom,
float center[2])
{
array X = (
iota(
dim4(1, height),
dim4(width , 1)) - (float)height / 2.0) / zoom + center[0];
array Y = (
iota(
dim4(width , 1),
dim4(1, height)) - (float)width / 2.0) / zoom + center[1];
}
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);
Z.eval();
}
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.75, 0.1};
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.
Definition: graphics.h:37
A multi dimensional data container.
Definition: array.h:27
Definition: exception.h:20
virtual const char * what() const
Definition: exception.h:34
@ f32
32-bit floating point values
Definition: defines.h:196
@ AF_COLORMAP_SPECTRUM
Spectrum map.
Definition: defines.h:334
AFAPI array abs(const array &in)
C++ Interface for absolute value.
AFAPI array complex(const array &lhs, const array &rhs)
C++ Interface for creating complex array from two inputs.
AFAPI array sqrt(const array &in)
C++ Interface for square root of input.
array constant(T val, const dim4 &dims, const dtype ty=(af_dtype) dtype_traits< T >::ctype)
AFAPI array iota(const dim4 &dims, const dim4 &tile_dims=dim4(1), const dtype ty=f32)
AFAPI void setDevice(const int device)
Sets the current device.
dim4 dims() const
Get dimensions of the array.
void eval() const
Evaluate any JIT expressions to generate data for the array.
AFAPI array max(const array &in, const int dim=-1)
C++ Interface for maximum values in an array.
Definition: algorithm.h:15