c言語を用いてテント関数の座標データを生成するコードを作成しています。
以下はそのコードです。

#include<stdio.h>
#define N 100
double tent(double x){
    if(0<=x<=0.5){
        return 2*x;
    }

    if(0.5<x<=1){
        return 2*(1-x);
    }
}

int main(void){
    int n;
    double x[101];
    x[0]=0.7;

    for(n=0;n<=N;n++){
        x[n+1] = tent(x[n]);
        printf("%lf %lf\n",x[n],x[n+1]);
    }

    return 0;
}

このコードを実行するとx座標データとy座標データが表示されるのですが、データが期待する出力として出ません。
以下はこのコードを実行した時の出力結果の一部です。本来であれば結果の数値は[0,1]になるのですが途中から1を超えてしまいます。関数tentのif文は合ってると思うのですが全く別の結果になってしまいます。どなたか原因がわかる方いますか?

0.700000 0.600000
0.600000 0.800000
0.800000 0.400000
0.400000 1.200000
1.200000 -0.400000
-0.400000 -0.800000
-0.800000 -1.600000
-1.600000 -3.200000
-3.200000 -6.400000
-6.400000 -12.800000
-12.800000 -25.600000
-25.600000 -51.200000

追記:アドバイスを参考に試してみたところ、

0.400000 0.800000
0.800000 0.400000
0.400000 0.799999
0.799999 0.400002
0.400002 0.800003
0.800003 0.399994
0.399994 0.799988
0.799988 0.400024
0.400024 0.800049
0.800049 0.399902
0.399902 0.799805

となり、本来であれば0.4と0.8を繰り返すのですが、途中から減少してしまい座標データが0に収束してしまいます。