
#include <stdlib.h>

double* rosenbrock(const double x[], const size_t dimension)
{
    static double result[1] = {0};

    if( dimension != 2 ){
        perror("Wrong dimension for 'ES' function");
        return NULL; // Fonction de R^3 vers R
    }

    result[0] = (1 - x[0]) * (1 - x[0]) + 100 * (x[1] - x[0] * x[0]) * (x[1] - x[0] * x[0]);

    return result;
}

double* gradientRosenbrockTested(const double x[])
{
    //static double result[2];
    double* result = (double *)malloc(2 * sizeof(double));

    result[0] = - 2 * ( 1 - x[0] ) - 400 * x[0] * ( x[1] - x[0] * x[0] );
    result[1] = 200 * ( x[1] - x[0] * x[0] );

    return result;
}
