Intervalos da função

Preciso achar os intervalos onde contem o zero da função mas quando imprimo aparece apenas os intervalos zerados, me ajudem a descobrir o erro por favor

#include <stdlib.h>
#include <math.h>
#include <stdio.h>


double f(double x){
    int p;


    x = 2*pow(x,3) - cos(x+1) - 3;

    return x;

}

int main(void){
    float a,b,r;
    float fa, fb;
    int z, inter, conderro, maxinter;
    
    float aurea;
    aurea =  2/(sqrt(5)-1);

    printf("Digite um numero para gerar intervalos\n");
    scanf("%d", &z);

    printf("Digite o maximo de interaçoes\n");
    scanf("%d", &maxinter);
    
    


     if(z=0){
        a = -0.05;
        b = 0.05;
    }

    else {
        a = (0.95 )* z;
        b = (1.05 )* z;
    }

    fa = f(a);
    fb = f(b);

    while((fa*fb>0) && (inter<maxinter)){
          if(fa<fb){
            a = a - (aurea * (b-a));
            fa = f(a);
             
          }
          

          else {
            b = b + ( aurea * (b-a));
            fb = f(b);
        }

        inter++;
    }

    r = fa*fb;

    if(r<0){
        conderro = 0;
    }

    else {
        conderro = 1;
    }

    printf("\no intervalo encontrado eh %f a %f\n", a, b);




    return 0;
}