aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/shared-fractals.c
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2024-04-26 16:53:09 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2024-04-26 16:53:09 -0400
commit3063b6ffd771f68183e76185761bcbc91110ca0b (patch)
tree7342a10069fbaa62e6c260bd9981087709868c09 /src/shared-fractals.c
parentaaa64e36cd5ac1cc6077d38505c645f4c316b78e (diff)
changed max iterations to byte to allow larger grids
Diffstat (limited to 'src/shared-fractals.c')
-rw-r--r--src/shared-fractals.c48
1 files changed, 24 insertions, 24 deletions
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);