function A = gearmat(n, i, j)
%GEARMAT Gear matrix.
%   A = GALLERY('GEARMAT',N,I,J) is the N-by-N matrix with ones on 
%   the sub- and super-diagonals, SIGN(I) in the (1,ABS(I)) position, 
%   SIGN(J) in the (N,N+1-ABS(J)) position, and zeros everywhere else.
%   Defaults: I = N, J = -N.
%
%   Properties:
%   All eigenvalues are of the form 2*cos(a) and the eigenvectors
%     are of the form [sin(w+a), sin(w+2a), ..., sin(w+Na)]. 
%     (The values of a and w are given in the reference below.)
%   A can have double and triple eigenvalues and can be defective.
%   A is singular.

%   Reference:
%     [1] C.W. Gear, A simple set of test matrices for eigenvalue programs,
%     Math. Comp., 23 (1969), pp. 119-125.
%
%   Copyright (c) 1984-98 by The MathWorks, Inc.
%   $Revision: 1.5 $  $Date: 1997/11/21 23:29:33 $

if nargin == 1, i = n; j = -n; end

if ~(i~=0 & abs(i)<=n & j~=0 & abs(j)<=n)
     error('Invalid I and J parameters')
end

A = diag(ones(n-1,1),-1) + diag(ones(n-1,1),1);
A(1, abs(i)) = sign(i);
A(n, n+1-abs(j)) = sign(j);
