On Tue, 15 Mar 2016, Sven Schreiber wrote:
Hi,
I get errors with lines such as these:
b.mS = b.mYS * b.S'
that go away when I write this instead:
b.mS = b.mYS * transp(b.S)
(Here "b" is a bundle and the elements are matrices.)
I suspect there's some unrelated error in the embedding script, or
perhaps the embedding script triggers a basically unrelated bug, that
is messing things up. In a simple, minimal context the above works
fine, as in
<hansl>
bundle b
b.myS = ones(3,2)
b.S = ones(3,2)
b.mS = b.myS * b.S'
printf "\n%4d\n", b.mS
</hansl>
which works just as expected.
This is with the latest snapshot on Windows. There are several funny
things
about this:
First I (think I) had run this code several weeks ago without errors, but I
have to admit I cannot reproduce with which gretl version that would have
worked. In any case I think we discussed before that the
transposition/apostrophe operator should be legal in this case.
It should be, yes. Seems to me it is.
Secondly these code lines are inside an if-block where the condition
fails, so they are not executed; is it normal that the gretl
interpreter also checks these code parts?
No, you have something very odd going on. If I modify the little
script above thus:
<hansl>
bundle b
b.myS = ones(3,2) * undef
b.S = ones(3,2)
b.mS = b.myS * b.S'
</hansl>
then naturally it fails with the error message "The symbol 'undef' is
undefined". However, the following
<hansl>
bundle b
if 0
b.myS = ones(3,2) * undef
b.S = ones(3,2)
b.mS = b.myS * b.S'
endif
</hansl>
runs OK, because the use of "undef" is not reached.
Allin