So I use the MWE from manual.
Only with the slight difference of adding to variables to solve, so that I get a 2d_array.
Then , I need the solution of each variable seperately into an array to pass to other functions that use arrays. Thing is, this works in 1d_array as mentinoned below, but can't make it work with 2d array.
Any idea/hints?
Code:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "diffequations.h"
#include "stdafx.h"
using namespace alglib;
void ode_function_1_diff(const real_1d_array &y, double x, real_1d_array &dy, void *ptr)
{
// this callback calculates f(y[],x)=-y[0]
//CHANGE -> now it's two functions, f(y,x)=-y[0],-0.5y[0] so it actually returns [y[0] ,y[1]] on results
dy[0] = -y[0];
dy[1] = -0.5*y[0];
}
int main(int argc, char **argv)
{
real_1d_array y;
double _r1[] = {1, 3};
y.setcontent(2,_r1);
real_1d_array x = "[0, 1, 3]";
double eps = 0.00001;
double h = 0;
odesolverstate s;
ae_int_t m;
real_1d_array xtbl;
real_2d_array ytbl;
odesolverreport rep;
odesolverrkck(y, x, eps, h, s);
alglib::odesolversolve(s, ode_function_1_diff);
odesolverresults(s, m, xtbl, ytbl, rep);
printf("%d\n", int(m));
printf("%s\n", xtbl.tostring(2).c_str());
//double *test = double* xtbl
double* FC_array = &xtbl.getcontent()[0]; //CHANGE: THIS WORKS -> Can get 1d_array to normal Array and works well
printf("%f\n", FC_array[1]); // EXPECTED: [0, 1, 3]
printf("%f\n", xtbl.getcontent()[0]); // EXPECTED: [0, 1, 3]
printf("going to check 2d_array->array\n"); // here I Tried to do the same, for solution (and then figure out how to get only 1st itme of each row)
//THIS DOESN'T WORK
//double* F2C_array = &ytbl.getcontent()[0]; //
return 0;
}