int julia(int x, int y) { const float scale = 1.5; float jx = scale * (float)(GLOBAL_DIM / 2 - x) / (GLOBAL_DIM / 2); float jy = scale * (float)(GLOBAL_DIM / 2 - y) / (GLOBAL_DIM / 2); cuComplex c = createComplex(-0.8, 0.156); cuComplex a = createComplex(jx, jy); int i = 0; for (i = 0; i<200; i++) { a = add(multiply(a, a), c); if (magnitude2(a) > 1000) return 0; } return 1; }
cuComplex multiply(cuComplex p_complex1, cuComplex p_complex2) { return createComplex( p_complex1.r * p_complex2.r - p_complex1.i * p_complex2.i, p_complex1.i * p_complex2.r + p_complex1.r * p_complex2.i ); }
cuComplex add(cuComplex p_complex1, cuComplex p_complex2) { return createComplex( p_complex1.r + p_complex2.r, p_complex1.i + p_complex2.i ); }
Complex* divComplex(Complex* n1, Complex* n2) { Complex* result = createComplex(n2->real, n2->imag); divComplexInPlace(n1, result); return result; }