Hallar raíces de funciones en C


Este es el código de un programa que emplea un método para hallar raíces de funciones, aunque en casos especiales... Resuelve la ecuación.

integral[de_0_a_x](sin(X)dx)=tang (x) en el intervalo [4,4.5], que es lo mismo que hallar el "cero" de la función 

integral[de_0_a_x](sin(X)dx)-tang (x)= 0.0; 


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

#define F1(x) (sin( (x) ))
#define F2(x) (tan( (x) ))

#define DX 1.0e-3 /* para integrar, error Dx^2 */
#define ERROR 1.0e-6 /* precisión del resultado*/

float integra(float x);

int main(void)
    {
    float h =1.0e-3;
    float x =0.0 +h;
    float v_intgr =0.0;
    float func_act =0.0;
    float func_ant =0.0;

    clrscr();
    while( x <= 4.0 )/* inicialización de la integral */
        {
        v_intgr += integra(x);
        x += (2*h);/*paso para este método de integración */
        }
    func_ant = v_intgr - F2(x);
    while( x <= 4.5 ) /* esto es lo que te interesa */
        {
        x += (2*h);
        v_intgr += integra(x);
        func_act = v_intgr - F2(x);
        if( (func_ant * func_act) < 0.0 ) h *= -0.5;
        if( h <= ERROR ) break;
        func_ant = func_act; 
        }

    printf("El valor de x es \"x = %f\"\n", x);
    getch();
    return 0;
    }

float integra( float z)
    {
    return (DX/2)*( F1(z-DX) + 2*(F1(z)) +F1(z+DX) );/* devuelve la integral*/
    }