#include <stdio.h>
#include <cmath>
#include <cstdlib>
#include <iostream>
#define WIDTH 400
#define HEIGHT 400
using std::abs;
arraycomplex_grid(
intwidth,
intheight,
floatzoom,
floatcenter[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);
}
arraymandelbrot(
const array&in,
intiter,
floatmaxval) {
for (int ii = 1; ii < iter; ii++) {
Z = Z * Z + C;
arraycond = (abs(Z) > maxval).as(
f32);
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);
}
arrayc = complex_grid(WIDTH, HEIGHT, zoom, center);
arraymag = mandelbrot(c, iter, 1000);
if (!console) {
if (wnd.close()) break;
arraymag_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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4