using namespace std;
#include <iostream>
#include <assert.h>
#include<math.h>
#include "Algo_Thomas.h"


float* AlgoThomas( float *A, float *B, float *D, float *K, int n){
    //creation des d* et k*
    float *k = NULL;
    k = new float[n-1];

    float *d= NULL;
    d = new float[n-1];

    //CI
    d[0]=D[0];
    k[0]=K[0];

    //on remplit
    for( int i=1; i<n-1; i++){
        d[i]= D[i] - (A[i-1]*B[i])/d[i-1];
        k[i]= K[i] - (B[i]*k[i-1])/d[i-1];
    }

    //On calcule les nouveaux U (à l'orde m+1)
    //On commence par calculer U pour i=n
        //taleau de V
    float *V=NULL;
    V = new float[n+1];

    //initialisation
    V[0]=0;
    V[n]=0;
    V[n-1]=k[n-2]/d[n-2];

    for (int i= n-2; i>0; i--){
        V[i]=(k[i] - (A[i] * V[i+1]))/d[i];
    }
    return V;
}



