#include "Header.h" //f calculated from the function where N is specified as a // global varibale in Header.h // N-2 SIGMA i=1 {sin(xi * xi+1 + cos(xi-1 - xi))} // //@ return // (option == 0) ==> compute function f and return result as float // (option == 1) ==> return counter as int void * f(float x0, float x1, float x2, int option) { //counts how many times this function got executed static int fCounter = 0; int * count; //to retrun the counter value float * f; //to return the value of function f as float pointer //allocate memory f = (float *) malloc(sizeof(float)); count = (int *) malloc(sizeof(int)); //if 1, return counter if(option == 1) { *count = fCounter; return count; } //N is assumed to be 3 in here *f = sin(x1*x2+cos(x0-x1)); fCounter++; return f; } //@ return // (option == 0) ==> compute function Df and return Vec // (option == 1) ==> return counter as int void * Df(float x0, float x1, float x2, int option) { int i; static int DfCounter = 0; int * count; Vec * vecP; //allocate memory count = (int *) malloc(sizeof(int)); //if 1, return counter if(option == 1) { *count = DfCounter; return count; } //allocate memory for vecP vecP = createVec(N); float tmpValues[] = { -cos(x1*x2+cos(x0-x1))*sin(x0-x1), cos(x1*x2+cos(x0-x1))*(x2+sin(x0-x1)), x1*cos(x1*x2+cos(x0-x1))}; //copy values for(i =0; i < vecP->n; i++) { vecP->p[i] = tmpValues[i]; } DfCounter++; return vecP; } //@ return // (option == 0) ==> compute function DDf and return result as Mat // (option == 1) ==> return counter as int void * DDf(float x0, float x1, float x2, int option) { int i; static int DDfCounter = 0; int * count; Mat * matP; //allocate memory count = (int *) malloc(sizeof(int)); //if 1, return counter if(option == 1) { *count = DDfCounter; return count; } float tmpValues[] = { -cos(x0-x1)*cos(x1*x2+cos(x0-x1))-pow(sin(x0-x1),2)*sin(x1*x2+cos(x0-x1)), cos(x0-x1)*cos(x1*x2+cos(x0-x1))+sin(x0-x1)*(x2+sin(x0-x1))*sin(x1*x2+cos(x0-x1)), x1*sin(x0-x1)*sin(x1*x2+cos(x0-x1)), cos(x0-x1)*cos(x1*x2+cos(x0-x1))+sin(x0-x1)*(x2+sin(x0-x1))*sin(x1*x2+cos(x0-x1)), -cos(x0-x1)*cos(x1*x2+cos(x0-x1))-pow((x2+sin(x0-x1)),2)*sin(x1*x2+cos(x0-x1)), cos(x1*x2+cos(x0-x1))-x1*(x2+sin(x0-x1))*sin(x1*x2+cos(x0-x1)), x1*sin(x0-x1)*sin(x1*x2+cos(x0-x1)), cos(x1*x2+cos(x0-x1))-x1*(x2+sin(x0-x1))*sin(x1*x2+cos(x0-x1)), -pow(x1,2)*sin(x1*x2+cos(x0-x1))}; matP = createMat(N,N); //copy values for(i =0; i < N*N; i++) { matP->p[i] = tmpValues[i]; } DDfCounter++; return matP; }