petsc-3.8.3 2017-12-09
clear all;
nx=3; ny=4; n=nx*ny;
[~,~,A]=laplacian([nx,ny],{'DD' 'DD'});
x=ones(n,1); b=A*x;
PetscBinaryWrite('spd-real-int32-float64',A,b, 'indices','int32','precision','float64');
[At,bt] = PetscBinaryRead('spd-real-int32-float64', 'indices','int32','precision','float64');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for spd-real-int32-float64');
end
PetscBinaryWrite('spd-real-int64-float64',A, b,'indices','int64','precision','float64');
[At,bt] = PetscBinaryRead('spd-real-int64-float64','indices','int64','precision','float64');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for spd-real-int64-float64');
end
PetscBinaryWrite('spd-real-int32-float32',A,b, 'indices','int32','precision','float32');
[At,bt] = PetscBinaryRead('spd-real-int32-float32', 'indices','int32','precision','float32');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for spd-real-int32-float32');
end
PetscBinaryWrite('spd-real-int64-float32',A,b,'indices','int64','precision','float32');
[At,bt] = PetscBinaryRead('spd-real-int64-float32','indices','int64','precision','float32');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for spd-real-int64-float32');
end
tmp=A(1,1); A(1,1)=A(1,2); A(1,2)=tmp; clear tmp;
if max(abs(b-A*x)) ~= 0
error('PETSc:generatePetscTestFiles:WrongAns',...
'%s','The nonsymmetric matrix A is wrong');
end
PetscBinaryWrite('ns-real-int32-float64',A,b,'indices','int32','precision','float64');
[At,bt] = PetscBinaryRead('ns-real-int32-float64','indices','int32','precision','float64');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for ns-real-int32-float64');
end
PetscBinaryWrite('ns-real-int64-float64',A,b,'indices','int64','precision','float64');
[At,bt] = PetscBinaryRead('ns-real-int64-float64','indices','int64','precision','float64');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for ns-real-int64-float64');
end
PetscBinaryWrite('ns-real-int32-float32',A,b,'indices','int32','precision','float32');
[At,bt] = PetscBinaryRead('ns-real-int32-float32','indices','int32','precision','float32');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for ns-real-int32-float32');
end
PetscBinaryWrite('ns-real-int64-float32',A,b,'indices','int64','precision','float32');
[At,bt] = PetscBinaryRead('ns-real-int64-float32','indices','int64','precision','float32');
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for ns-real-int64-float32');
end
A(1,1)=A(1,1)+1i; A(2,1)=A(2,1)-1i;
x=1i.*ones(n,1); b=A*x;
PetscBinaryWrite('nh-complex-int32-float64',A,b,'indices','int32','precision','float64');
[At,bt] = PetscBinaryRead('nh-complex-int32-float64','indices','int32','precision','float64','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for nh-complex-int32-float64');
end
PetscBinaryWrite('nh-complex-int64-float64',A,b,'indices','int64','precision','float64');
[At,bt] = PetscBinaryRead('nh-complex-int64-float64','indices','int64','precision','float64','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for nh-complex-int64-float64');
end
PetscBinaryWrite('nh-complex-int32-float32',A,b,'indices','int32','precision','float32');
[At,bt] = PetscBinaryRead('nh-complex-int32-float32','indices','int32','precision','float32','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for nh-complex-int32-float32');
end
PetscBinaryWrite('nh-complex-int64-float32',A,b,'indices','int64','precision','float32');
[At,bt] = PetscBinaryRead('nh-complex-int64-float32','indices','int64','precision','float32','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for nh-complex-int64-float32');
end
tmp=A(1,1); A(1,1)=A(1,2); A(1,2)=tmp; clear tmp;
if max(max(abs(b-A*x)),max(max(abs(A-A')))) ~= 0
error('PETSc:generatePetscTestFiles:WrongAns',...
'%s','The HPD matrix A is wrong');
end
PetscBinaryWrite('hpd-complex-int32-float64',A,b,'indices','int32','precision','float64');
[At,bt] = PetscBinaryRead('hpd-complex-int32-float64','indices','int32','precision','float64','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for hpd-complex-int32-float64');
end
PetscBinaryWrite('hpd-complex-int64-float64',A,b,'indices','int64','precision','float64');
[At,bt] = PetscBinaryRead('hpd-complex-int64-float64','indices','int64','precision','float64','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for hpd-complex-int64-float64');
end
PetscBinaryWrite('hpd-complex-int32-float32',A,b,'indices','int32','precision','float32');
[At,bt] = PetscBinaryRead('hpd-complex-int32-float32','indices','int32','precision','float32','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for hpd-complex-int32-float32');
end
PetscBinaryWrite('hpd-complex-int64-float32',A,b,'indices','int64','precision','float32');
[At,bt] = PetscBinaryRead('hpd-complex-int64-float32','indices','int64','precision','float32','complex',true);
if max(max(max(abs(At-A))),max(abs(bt-b))) ~= 0
error('PETSc:generatePetscTestFiles:IncompatibleIO',...
'%s','Error in PetscBinaryWrite or/and PetscBinaryRead for hpd-complex-int64-float32');
end