Imported Debian version 1.0~trusty
[deb_vid.stab.git] / tests / test_gradientoptimizer.c
1
2
3 double square_test (VSArray p, void* _dat){
4 double val=0;
5 for(int k=0; k<p.len;k++){
6 val+=(k+1)*3*(p.dat[k]-k)*(p.dat[k]-k);
7 }
8 return val;
9 }
10
11 void test_gradientoptimizer(){
12 int numruns=10;
13
14 fprintf(stderr,"********** Gradient Optimizer Test:\n");
15
16 for(int i=0; i<numruns; i++){
17 double residual;
18 VSArray params = vs_array_new(i+1);
19 VSArray stepsizes = vs_array_new(i+1);
20 for(int k=0; k<i+1; k++){
21 params.dat[k]= 20-k;
22 stepsizes.dat[k]= 0.1;
23 }
24
25 VSArray result = vsGradientDescent(square_test, params, NULL, 50, stepsizes, 1e-15, &residual);
26 fprintf(stderr,"** %iD: residual %lg :", i+1, residual);
27 vs_array_print(result, stderr);
28 fprintf(stderr,"***\n");
29 test_bool(residual<1e-10);
30 vs_array_free(result);
31 vs_array_free(params);
32 }
33 }