Como tornar uma variável float complexa ou dupla complexa dependendo da entrada do usuário? Estou tentando traçar o conjunto de Mandelbrot e tenho o mesmo código longo para float e double, mas em alguns casos float não é preciso o suficiente e double é muito lento. Estou executando em uma calculadora de baixo desempenho, então float leva menos de 1 segundo e double leva pelo menos 5 segundos. Gostaria de permitir que o usuário escolhesse precisão em vez de velocidade ou velocidade em vez de precisão. Eu gostaria de obter algo assim:
int user_input;
scanf("%d", &user_input);
switch (user_input) {
case 0:
float z;
float c;
break;
case 1:
double z;
double c;
break;
}
for(int i=0;i<1920;i++){
for(int j=0;j<1080;j++){
z=0.0+0.0*I;
c=(i+j*I)/Zoom
}}
Resultado esperado: se o usuário digitar 0, todos os cálculos serão realizados usando floats, e se o usuário digitar 1, os cálculos serão realizados usando doubles.
Mas isso gera um erro: tipos conflitantes para 'z'; tem 'double', declaração anterior de 'z' com tipo 'float'.
Algo assim é possível em C?
Tentei criar duas variáveis diferentes para float e double, mas alterá-las em todo o código (tenho muito mais código) seria longo e tedioso.