On Sat, 8 Aug 2009, Allin Cottrell wrote:
On Sat, 8 Aug 2009, Sven Schreiber quoted:
> > That is, you can use the keyword "rfunc" to indicate that you're
> > giving a constraint function rather than explicit statement of a
> > restriction. As in Jack's script, this function should take as
> > its single argument the coefficient vector (in "pointer" form),
> > and it should return a vector that is zero under H0, non-zero
> > under the alternative...
and replied:
>
> Certainly a very nice feature!
>
> Why is the pointer form necessary?
And I reponded:
Ah, it's not actually necessary, though it is a bit more
efficient. However, we do need to standardize on pointer-form or
not. I suppose the straight, non-pointer form is more "natural".
Fixed in CVS. The signature for the callback function for a
nonlinear restriction, in the context of the "restrict" command,
should now be:
function foo (const matrix m)
(replace "foo" and "m" as desired).
This is linked to a general modification of the effect of the
"const" qualifier for matrix arguments: if you promise not to
modify a matrix argument then you get the matrix "directly", not a
copy. That is, it's the same, speed-wise, as passing a "pointer
to matrix" (but it's an error if you try to modify the argument).
I think the business of using the pointer formulation purely for
speed-up in gretl was potentially a bit confusing; it's no longer
necessary for matrices, just use "const" instead.
Allin