diff --git a/matlab/nonlinear-filters/auxiliary_particle_filter.m b/matlab/nonlinear-filters/auxiliary_particle_filter.m
index 713864308fc673f0592e9e9f48fcda88a9ce796f..f0c67c34ab8f9878938628b802c1b40a2823fa99 100644
--- a/matlab/nonlinear-filters/auxiliary_particle_filter.m
+++ b/matlab/nonlinear-filters/auxiliary_particle_filter.m
@@ -132,7 +132,9 @@ for t=1:sample_size
     end
     PredictionError = bsxfun(@minus,Y(:,t),tmp(mf1,:));
     z = sum(PredictionError.*(H\PredictionError),1) ;
-    tau_tilde = weights.*(tpdf(z,3*ones(size(z)))+1e-99) ;
+%    tau_tilde = weights.*(tpdf(z,3*ones(size(z)))+1e-99) ;
+    ddl = 3 ;
+    tau_tilde = weights.*(exp(gammaln((ddl + 1) / 2) - gammaln(ddl/2))./(sqrt(ddl*pi).*(1 + (z.^2)./ddl).^((ddl + 1)/2))+1e-99) ;
     tau_tilde = tau_tilde/sum(tau_tilde) ;
     indx = resample(0,tau_tilde',ParticleOptions);
     if pruning
diff --git a/matlab/nonlinear-filters/online_auxiliary_filter.m b/matlab/nonlinear-filters/online_auxiliary_filter.m
index 1c98b2bd387731201c270b833487f14ae35d00e2..f8e3c54d972ca1777473ffcdb953a0dc0a6492ea 100644
--- a/matlab/nonlinear-filters/online_auxiliary_filter.m
+++ b/matlab/nonlinear-filters/online_auxiliary_filter.m
@@ -191,7 +191,9 @@ for t=1:sample_size
             PredictionError = bsxfun(@minus,Y(t,:)', tmp(mf1,:));
             % Replace Gaussian density with a Student density with 3 degrees of freedom for fat tails.
             z = sum(PredictionError.*(ReducedForm.H\PredictionError), 1) ;
-            tau_tilde(i) = weights(i).*(tpdf(z, 3*ones(size(z)))+1e-99) ;
+            ddl = 3 ;
+            %tau_tilde(i) = weights(i).*(tpdf(z,3*ones(size(z)))+1e-99) ;
+            tau_tilde(i) = weights(i)*(exp(gammaln((ddl + 1) / 2) - gammaln(ddl/2))/(sqrt(ddl*pi)*(1 + (z^2)/ddl)^((ddl + 1)/2))+1e-99) ;
         else
             tau_tilde(i) = 0 ;
         end