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
                         );
    
}
Beispiel #4
0
Complex* divComplex(Complex* n1, Complex* n2) {
  Complex* result = createComplex(n2->real, n2->imag);
  divComplexInPlace(n1, result);
  return result;
}