File: IanJackson.patch

package info (click to toggle)
gsl 2.3%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 20,392 kB
  • ctags: 15,188
  • sloc: ansic: 235,014; sh: 11,541; makefile: 869
file content (145 lines) | stat: -rw-r--r-- 3,939 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
diff -u orig/gsl-1.8/multimin/fminimizer.c gsl-1.8/multimin/fminimizer.c
--- orig/gsl-1.8/multimin/fminimizer.c	2005-06-26 14:25:35.000000000 +0100
+++ gsl-1.8/multimin/fminimizer.c	2008-09-29 02:07:29.000000000 +0100
@@ -90,7 +90,9 @@
 
   gsl_vector_memcpy (s->x,x);
 
-  return (s->type->set) (s->state, s->f, s->x, &(s->size), step_size);
+  s->simplex_size_valid = 0;
+
+  return (s->type->set) (s->state, s->f, s->x, step_size);
 }
 
 void
@@ -105,7 +107,9 @@
 int
 gsl_multimin_fminimizer_iterate (gsl_multimin_fminimizer * s)
 {
-  return (s->type->iterate) (s->state, s->f, s->x, &(s->size), &(s->fval));
+  s->simplex_size_valid = 0;
+
+  return (s->type->iterate) (s->state, s->f, s->x, &(s->fval));
 }
 
 const char * 
@@ -128,7 +132,12 @@
 }
 
 double
-gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s)
+gsl_multimin_fminimizer_size (gsl_multimin_fminimizer * s)
 {
-  return s->size;
+  if (!s->simplex_size_valid)
+    {
+      s->simplex_size = (s->type->get_size) (s->state);
+      s->simplex_size_valid = 1;
+    }
+  return s->simplex_size;
 }
Only in gsl-1.8/multimin: fminimizer.c~
diff -u orig/gsl-1.8/multimin/gsl_multimin.h gsl-1.8/multimin/gsl_multimin.h
--- orig/gsl-1.8/multimin/gsl_multimin.h	2005-06-26 14:25:35.000000000 +0100
+++ gsl-1.8/multimin/gsl_multimin.h	2008-09-29 02:08:17.000000000 +0100
@@ -84,13 +84,12 @@
   int (*alloc) (void *state, size_t n);
   int (*set) (void *state, gsl_multimin_function * f,
               const gsl_vector * x, 
-              double * size,
               const gsl_vector * step_size);
   int (*iterate) (void *state, gsl_multimin_function * f, 
                   gsl_vector * x, 
-                  double * size,
                   double * fval);
   void (*free) (void *state);
+  double (*get_size) (void *state);
 }
 gsl_multimin_fminimizer_type;
 
@@ -103,7 +102,8 @@
   double fval;
   gsl_vector * x;
   
-  double size;
+  int simplex_size_valid;
+  double simplex_size;
 
   void *state;
 }
@@ -135,7 +135,7 @@
 gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s);
 
 double
-gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s);
+gsl_multimin_fminimizer_size (gsl_multimin_fminimizer * s);
 
 /* Convergence test functions */
 
Only in gsl-1.8/multimin: gsl_multimin.h~
diff -u orig/gsl-1.8/multimin/simplex.c gsl-1.8/multimin/simplex.c
--- orig/gsl-1.8/multimin/simplex.c	2005-06-26 14:25:35.000000000 +0100
+++ gsl-1.8/multimin/simplex.c	2008-09-29 02:01:18.000000000 +0100
@@ -150,8 +150,10 @@
 }
 
 static double
-nmsimplex_size (nmsimplex_state_t * state)
+nmsimplex_get_size (void *vstate)
 {
+  nmsimplex_state_t *state = (nmsimplex_state_t *) vstate;
+
   /* calculates simplex size as average sum of length of vectors 
      from simplex center to corner points:     
 
@@ -218,7 +220,7 @@
 static int
 nmsimplex_set (void *vstate, gsl_multimin_function * f,
                const gsl_vector * x,
-               double *size, const gsl_vector * step_size)
+               const gsl_vector * step_size)
 {
   int status;
   size_t i;
@@ -252,10 +254,6 @@
       gsl_vector_set (state->y1, i + 1, val);
     }
 
-  /* Initialize simplex size */
-
-  *size = nmsimplex_size (state);
-
   return GSL_SUCCESS;
 }
 
@@ -272,7 +270,7 @@
 
 static int
 nmsimplex_iterate (void *vstate, gsl_multimin_function * f,
-                   gsl_vector * x, double *size, double *fval)
+                   gsl_vector * x, double *fval)
 {
 
   /* Simplex iteration tries to minimize function f value */
@@ -395,10 +393,6 @@
   gsl_matrix_get_row (x, x1, lo);
   *fval = gsl_vector_get (y1, lo);
 
-  /* Update simplex size */
-
-  *size = nmsimplex_size (state);
-
   return GSL_SUCCESS;
 }
 
@@ -408,7 +402,8 @@
   &nmsimplex_alloc,
   &nmsimplex_set,
   &nmsimplex_iterate,
-  &nmsimplex_free
+  &nmsimplex_free,
+  &nmsimplex_get_size
 };
 
 const gsl_multimin_fminimizer_type
Only in gsl-1.8/multimin: simplex.c~