Commit messages

April 17, 2014

jpritikin committed r3360 in OpenMx at 11:43:
Remove unused arguments from omxRaiseError, omxRaiseErrorf

April 12, 2014

jpritikin committed r3334 in OpenMx at 14:55:
Place BA81 expectation in observed mode by default
in /trunk:

April 4, 2014

jpritikin committed r3287 in OpenMx at 12:27:
Remove unused omxInitMatrix argument
jpritikin committed r3286 in OpenMx at 11:39:
mxDataDynamic
in /trunk:
jpritikin committed r3284 in OpenMx at 11:39:
Accept 1 item spec if they are all the same
in /trunk:

March 24, 2014

jpritikin committed r3206 in OpenMx at 17:18:
Fix omxMatrix memory model

There are 2 kinds of omxMatrix. omxMatrix with hasMatrixNumber are
pointed to by matrixList or algebraList. These matrices are freed by
omxState. All other omxMatrix, typically created with omxInitMatrix,
must be freed with omxFreeMatrix. Simple.
jpritikin committed r3205 in OpenMx at 15:52:
Eliminate a few more memory leaks

March 16, 2014

jpritikin committed r3149 in OpenMx at 18:46:
Add protect to MxRList and simplify API

March 15, 2014

jpritikin committed r3147 in OpenMx at 08:24:
Factor out lots of calls to Rf_mkChar

March 13, 2014

jpritikin committed r3141 in OpenMx at 16:32:
Re-architect fitfunction derivatives API using Eigen

Why do we need another matrix algebra library? We already have two, that
is, omxMatrix (original) and Matrix (from CSOLNP). For IFA models with
many items, it is essential to perform a sparse matrix-vector product
(Hessian %*% gradient) in Newton-Raphson. I initially wrote bespoke code
for sparse matrix-vector product. This was working well. However, it
came to my attention that inverting the Hessian can also benefit from
sparse matrix algebra. Rather than re-invent the wheel, Eigen looks like
a promising implementation.

Additional changes:

+ Internal derivatives are no longer reported back to R. You need to use
mxComputeReportDeriv to request them. Report derivs by default seemed
like a bad idea if they are so big that we are using a sparse
representation.

+ MxComputeNumericDeriv got a verbose parameter to enable debugging at
runtime.

+ ifa-drm-wide.R is moved to the failing directory temporarily. This
commit does not optimize manipulation of the Hessian but uses a simple
dense representation. dsytrf/dsytri are used to invert the Hessian. This
doesn't scale, but the improved accuracy results in many fewer
Newton-Raphson iterations highlighting the poor accuracy of the replaced
code.

+ Eigen has a great debug mode that NaN initializes memory and does
bounds checking. With these tools to assist debugging, I decided to
never store the lower triangle of a Hessian.
in /trunk:
Syndicate content