求指点,这是求sinx的C语言程序,输入30,60,90.都可得到对应值,可是当输入大于102时,程序不输出了,无反应了

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

const double pi=3.14159;

int factorial_function(int n){//求阶乘 
    int i;
    int sum=1;
    for(i=1;i<=n;i++)
        sum=sum*i;
    return sum;
}
float power_function(float x,int n){//求幂函数 
    float num=1;
    for(int i=0;i<n;i++){
        num*=x;
    }
    return num;
}
float sinf(float x){
    x=x*pi/180;
    int i;
    float sinx;
    float tmp=0;
    for(i=0;;i++){
     tmp=sinx;//记录前一个sinx 
     sinx += power_function(x,2*i+1)/factorial_function(2*i+1)*power_function(-1,i);
     if(fabs(sinx-tmp)<1e-6){break;}//判断是否达到精确度 
   }
   return sinx;
}
int main(){
    float x;
    float sinx;
    printf("请输入x:\n");
    scanf("%f",&x);
    sinx=sinf(x);
    printf("sinx=%f",sinx);
}

float sinx;没有赋初始值为0
factorial_function是求阶乘,用int很容易溢出