Skip to content
Snippets Groups Projects
Select Git revision
  • 66baffaee5a5b88418a7ab6598e7f187fdda68fb
  • master default protected
  • 6.x protected
  • julia protected
  • python-codegen
  • llvm-15
  • 5.x protected
  • 4.6 protected
  • uop
  • rework_pac
  • aux_vars_fix
  • julia-7.0.0
  • julia-6.4.0
  • julia-6.3.0
  • julia-6.2.0
15 results

ExprNode.cc

Blame
  • SPExact_shift.m 1.39 KiB
    function [h,q,iq,nexact] = SPExact_shift(h,q,iq,qrows,qcols,neq)
    % [h,q,iq,nexact] = exact_shift(h,q,iq,qrows,qcols,neq)
    %
    % Compute the exact shiftrights and store them in q.
    
    % Original author: Gary Anderson
    % Original file downloaded from:
    % http://www.federalreserve.gov/Pubs/oss/oss4/code.html
    % Adapted for Dynare by Dynare Team.
    %
    % This code is in the public domain and may be used freely.
    % However the authors would appreciate acknowledgement of the source by
    % citation of any of the following papers:
    %
    % Anderson, G. and Moore, G.
    % "A Linear Algebraic Procedure for Solving Linear Perfect Foresight
    % Models."
    % Economics Letters, 17, 1985.
    %
    % Anderson, G.
    % "Solving Linear Rational Expectations Models: A Horse Race"
    % Computational Economics, 2008, vol. 31, issue 2, pages 95-113
    %
    % Anderson, G.
    % "A Reliable and Computationally Efficient Algorithm for Imposing the
    % Saddle Point Property in Dynamic Models"
    % Journal of Economic Dynamics and Control, 2010, vol. 34, issue 3,
    % pages 472-489
    
    
    %hs=SPSparse(h);
    hs=sparse(h);
    nexact = 0;
    left   = 1:qcols;
    right  = qcols+1:qcols+neq;
    zerorows = find( sum(abs( hs(:,right)' ))==0 );
    
    while( any(zerorows) && iq <= qrows )
       nz = length(zerorows);
       q(iq+1:iq+nz,:) = hs(zerorows,left);
       hs(zerorows,:)   = SPShiftright(hs(zerorows,:),neq);
       iq     = iq + nz;
       nexact = nexact + nz;
       zerorows = find( sum(abs( hs(:,right)' ))==0 );
    end
    h=full(hs);