chiark
/
gitweb
/
~ianmdlvl
/
nlopt.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c4b864c
)
bug fix in preconditioned CCSA
author
stevenj
<stevenj@alum.mit.edu>
Wed, 16 Nov 2011 19:20:13 +0000
(14:20 -0500)
committer
stevenj
<stevenj@alum.mit.edu>
Wed, 16 Nov 2011 19:20:13 +0000
(14:20 -0500)
Ignore-this:
fe3491084f60e094c208c260cf908084
darcs-hash:
20111116192013
-c8de0-
b88c5b10cc4ab35d115d18522e1314503bb77e76
.gz
mma/ccsa_quadratic.c
patch
|
blob
|
history
diff --git
a/mma/ccsa_quadratic.c
b/mma/ccsa_quadratic.c
index eb3715b2248bcacb902423b519748872cb9268a2..1c829cea21c9165148dc3463b101825fbc34e5d0 100644
(file)
--- a/
mma/ccsa_quadratic.c
+++ b/
mma/ccsa_quadratic.c
@@
-173,7
+173,7
@@
static double gfunc(unsigned n, double f, const double *dfdx,
val += 0.5 * dx[j] * Hdx[j];
if (grad)
for (j = 0; j < n; ++j)
val += 0.5 * dx[j] * Hdx[j];
if (grad)
for (j = 0; j < n; ++j)
- grad[j] = Hdx[j];
+ grad[j]
+
= Hdx[j];
}
return val;
}
return val;
@@
-289,13
+289,13
@@
nlopt_result ccsa_quadratic_minimize(
no_precond = no_precond && dd.prec[i] == NULL;
if (!no_precond) {
no_precond = no_precond && dd.prec[i] == NULL;
if (!no_precond) {
- dd.scratch = (double*) malloc(sizeof(double) * (
2
*n));
+ dd.scratch = (double*) malloc(sizeof(double) * (
4
*n));
if (!dd.scratch) {
free(sigma);
return NLOPT_OUT_OF_MEMORY;
}
if (!dd.scratch) {
free(sigma);
return NLOPT_OUT_OF_MEMORY;
}
- pre_lb = d
ual_lb
;
- pre_ub =
dual_ub
;
+ pre_lb = d
d.scratch + 2*n
;
+ pre_ub =
pre_lb + n
;
pre_opt = nlopt_create(NLOPT_LD_CCSAQ, n);
if (!pre_opt) { ret = NLOPT_FAILURE; goto done; }
pre_opt = nlopt_create(NLOPT_LD_CCSAQ, n);
if (!pre_opt) { ret = NLOPT_FAILURE; goto done; }