Hi there

I am implementing Kalman Filter in C++
There however appear that some apparently minor numerical discrepancies 
between Matlab and C++ versions of T and R matrices (i.e. the ghx and 
ghu matrices, and probably the other calculations too), are gradually 
creeping-up to a rather significan difference in the KF log-likelihood calculation 
and I am trying to figure out what can be done about it.

The main impact seem to be on the inv(F) due to rather low values appearing in F.
where F=ZPZ'+H
resulting in a significant impact on the log likelihood and, as well, the next step P and system state forecast since both depend on the gain matrix K=P*Z' *invF and thus on invF;


I.e. C++ F:
F.data[0] = 0.00037206242498542022
F.data[1] =[2] = -0.00045917810077178716
F.data[3] = 0.0008672061055033099
and (rounded up) inverse of C++ F 
invF =    [7756    4106.76;
	4106.76 3327.6]

(or using Matlab for inversion calculation
invF =   1.0e+003 *
    7.7560    4.1068
    4.1068    3.3276)


whilst Matlab Dynare F =   1.0e-003 *
    0.3370   -0.4437
   -0.4437    0.8383
 
and its iF = inv(F) =   1.0e+003 *
    9.7907    5.1823
    5.1823    3.9360

Then, e.g. Matlab likelihood factor v'*iF*v =  963.6491
whilst the C++ one is 771.88779, thus, discrepancies pretty much affecting the total LL calculation to say the least.

It may also be a question which one is the more correct result.

Any suggestions?
PS: both, C++ and Matlab Dynare use the same C++ <model>_dynamic.dll to calculate the initial jacobian but the jacobians differ.

Best regards, 
George