From 3063b6ffd771f68183e76185761bcbc91110ca0b Mon Sep 17 00:00:00 2001 From: JP Appel Date: Fri, 26 Apr 2024 16:53:09 -0400 Subject: changed max iterations to byte to allow larger grids --- src/shared-fractals.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src/shared-fractals.c') diff --git a/src/shared-fractals.c b/src/shared-fractals.c index a45d366..5e54a9a 100644 --- a/src/shared-fractals.c +++ b/src/shared-fractals.c @@ -10,9 +10,9 @@ * if the return value is equal to max_iterations, the point lies within the mandelbrot set * This should be identical to the version found in serial-fractals.c */ -size_t mandelbrot(const CBASE complex z0, const size_t max_iterations){ +byte mandelbrot(const CBASE complex z0, const byte max_iterations){ CBASE complex z = z0; - size_t iteration = 0; + byte iteration = 0; while(CABS(z) <= 2 && iteration < max_iterations){ z = z*z + z0; iteration++; @@ -26,8 +26,8 @@ size_t mandelbrot(const CBASE complex z0, const size_t max_iterations){ */ void mandelbrot_grid(grid_t* restrict grid, const grid_gen_params* params){ const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; - size_t* data = grid->data; + const byte max_iterations = grid->max_iterations; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations) schedule(dynamic) for(size_t i = 0; i < size; i++){ @@ -40,9 +40,9 @@ void mandelbrot_grid(grid_t* restrict grid, const grid_gen_params* params){ * if the return value is equal to max_iterations, the point lies within the tricorn set * This is nearly identical to mandelbrot, except for the complex conjugate */ -size_t tricorn(const CBASE complex z0, const size_t max_iterations){ +byte tricorn(const CBASE complex z0, const byte max_iterations){ CBASE complex z = z0; - size_t iteration = 0; + byte iteration = 0; while(CABS(z) <= 2 && iteration < max_iterations){ z = CONJ(z * z) + z0; iteration++; @@ -55,8 +55,8 @@ size_t tricorn(const CBASE complex z0, const size_t max_iterations){ */ void tricorn_grid(grid_t* grid, const grid_gen_params* params){ const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; - size_t* data = grid->data; + const byte max_iterations = grid->max_iterations; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations) schedule(dynamic) for(size_t i = 0; i < size; i++){ @@ -68,10 +68,10 @@ void tricorn_grid(grid_t* grid, const grid_gen_params* params){ * Computes the number of iterations it takes for a point z0 to become unbounded * if the return value is equal to max_iterations, the point lies within the burningship set (oh no! I hope they have fire safety gear) */ -size_t burning_ship(const CBASE complex z0, const size_t max_iterations) { +byte burning_ship(const CBASE complex z0, const byte max_iterations) { CBASE complex z = z0; CBASE complex z_mod; - size_t iteration = 0; + byte iteration = 0; while (CABS(z) <= 2 && iteration < max_iterations) { z_mod = RABS(CREAL(z)) + RABS(CIMAG(z))*I; @@ -86,8 +86,8 @@ size_t burning_ship(const CBASE complex z0, const size_t max_iterations) { */ void burning_ship_grid(grid_t* grid, const grid_gen_params* params){ const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; - size_t* data = grid->data; + const byte max_iterations = grid->max_iterations; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations) schedule(dynamic) for(size_t i = 0; i < size; i++){ @@ -100,9 +100,9 @@ void burning_ship_grid(grid_t* grid, const grid_gen_params* params){ * if the return value is equal to max_iterations, the point lies within the multibrot set * This should be identical to the version found in serial-fractals.c */ -size_t multibrot(const CBASE complex z0, const size_t max_iterations, const double d){ +byte multibrot(const CBASE complex z0, const byte max_iterations, const double d){ CBASE complex z = z0; - size_t iteration = 0; + byte iteration = 0; while(CABS(z) <= 2 && iteration < max_iterations){ z = CPOW(z, d) + z0; iteration++; @@ -116,8 +116,8 @@ size_t multibrot(const CBASE complex z0, const size_t max_iterations, const doub void multibrot_grid(grid_t* restrict grid, const grid_gen_params* params){ const double d = params->degree; const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; - size_t* data = grid->data; + const byte max_iterations = grid->max_iterations; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations, d) schedule(dynamic) for(size_t i = 0; i < size; i ++){ @@ -130,9 +130,9 @@ void multibrot_grid(grid_t* restrict grid, const grid_gen_params* params){ * if the return value is equal to max_iterations, the point lies within the multicorn set * This function is to tricorn as multibrot is to mandelbrot */ -size_t multicorn(const CBASE complex z0, const size_t max_iterations, const double d){ +byte multicorn(const CBASE complex z0, const byte max_iterations, const double d){ CBASE complex z = z0; - size_t iteration = 0; + byte iteration = 0; while(CABS(z) <= 2 && iteration < max_iterations){ z = CONJ(CPOW(z, d)) + z0; iteration++; @@ -146,8 +146,8 @@ size_t multicorn(const CBASE complex z0, const size_t max_iterations, const doub void multicorn_grid(grid_t* grid, const grid_gen_params* params){ const double d = params->degree; const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; - size_t* data = grid->data; + const byte max_iterations = grid->max_iterations; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations, d) schedule(dynamic) for(size_t i = 0; i < size; i ++){ data[i] = multicorn(grid_to_complex(grid, i), max_iterations, d); @@ -161,10 +161,10 @@ void multicorn_grid(grid_t* grid, const grid_gen_params* params){ * This behaves weirdly, needs a very small number of iterations to be visibile */ -size_t julia(const CBASE complex z0, const CBASE complex c, const size_t max_iterations, const double R){ +byte julia(const CBASE complex z0, const CBASE complex c, const byte max_iterations, const double R){ double complex z = z0; - size_t iteration = 0; + byte iteration = 0; while(CABS(z) < R && iteration < max_iterations){ z = z * z + c; iteration++; @@ -176,9 +176,9 @@ void julia_grid(grid_t* grid, const grid_gen_params* params){ const complex_t constant = params->cr.constant; const double radius = params->cr.radius; const size_t size = grid->size; - const size_t max_iterations = grid->max_iterations; + const byte max_iterations = grid->max_iterations; const CBASE complex c = constant.re + constant.im * I; - size_t* data = grid->data; + byte* data = grid->data; #pragma omp parallel for default(none) shared(data, size, grid, max_iterations, c, radius) schedule(dynamic) for(size_t i = 0; i < size; i++){ data[i] = julia(grid_to_complex(grid, i), c, max_iterations, radius); -- cgit v1.2.3