Example 3, SVD
In this example, observe that the for-loop statements use a step size other than 1 but 2. Consequently, a lattice is introduced in this program. In the single assignment program, this will introduce many DIV-statements. The introduction of a lattice introduces a large increase in complexity of the result.
To understand how MatParser works and how to interpret the Single Assignment Programs, have a look at the documentation for MatParser.
Bart Kienhuis
Singular Value Decomposition
%parameter M 1 10;
%parameter N 1 5;
%matlab
N = 100;
M = 6;
a = magic( M );
fprintf(1,'\n --- MYSVD --- \n\n');
%end
for j = 1:1:N,
for i = 1:1:N,
[A(j,i)] = _ReadMatrix_Zeros_64x64();
end
end
for i = 1:1:N,
[ phi(i) ] = _ReadMatrix_Zeros_64();
end
for i = 1:1:N,
[ theta(i) ] = _ReadMatrix_Zeros_64();
end
for stage = 1 : 1 : N,
for i = 1 : 2 : M-1,
[phi(i),thetha(i)] = vector(a(i,i), a(i,i+1), a(i+1,i), a(i+1,i+1));
end
for i = 1 : 2 : M-1,
for j = 1 : 1 : M,
[ a(i,j), a(i+1,j) ] = phiSAC(phi(i), a(i,j), a(i+1,j));
end
end
for i = 1 : 2 : M-1,
for j = 1 : 1 : M,
[ a(j,i), a(j,i+1) ] = thethaSAC(a(j,i), a(j,i+1), thetha(i));
end
end
for i = 2 : 2 : M-2,
[phi(i),thetha(i)] = vector(a(i,i), a(i,i+1), a(i+1,i), a(i+1,i+1));
end
for i = 2 : 2 : M-2,
for j = 1 : 1 : M,
[ a(i,j), a(i+1,j) ] = phiSAC(phi(i), a(i,j), a(i+1,j));
end
end
for i = 2 : 2 : M-2,
for j = 1 : 1 : M,
[ a(j,i), a(j,i+1) ] = thethaSAC(a(j,i), a(j,i+1), thetha(i));
end
end
end
for x = 1 : 1 : M,
for y = 1 : 1 : M,
[Sink(x,y)] = Pass(a(x,y));
end
end
%matlab
disp( Sink );
%end
Single Assignment Program
%% SAP Generated for HiPars version 3.0 Compliance
%parameter M 1 10;
%parameter N 1 5;
%matlab
N = 100;
M = 6;
a = magic( M );
fprintf(1,'\n --- MYSVD --- \n\n');
%end
for j = 1 : 1 : N,
for i = 1 : 1 : N,
[ out_0 ] = _ReadMatrix_Zeros_64x64( );
[ A_1( j, i) ] = opd( out_0 );
end
end
for i = 1 : 1 : N,
[ out_0 ] = _ReadMatrix_Zeros_64( );
[ phi_1( i) ] = opd( out_0 );
end
for i = 1 : 1 : N,
[ out_0 ] = _ReadMatrix_Zeros_64( );
[ theta_1( i) ] = opd( out_0 );
end
for stage = 1 : 1 : N,
for i = 1 : 2 : M-1,
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d1 = div(i+1,2);
if -i+2*d1-1>= 0,
if i-2>= 0,
d2 = div(i,2);
if i-2*d2-1>= 0,
[ in_0 ] = ipd( a_8( stage-1, 2*d1-2, i ) );
end
else %% if -i+1 >= 0
[ in_0 ] = ipd( a_3( stage-1, 2*d1-1, i ) );
end
end
else %% if -stage+1 >= 0
[ in_0 ] = ipd( a( i, i ) );
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d9 = div(i+1,2);
if -i+2*d9-1>= 0,
if i-2>= 0,
d10 = div(i,2);
if i-2*d10-1>= 0,
if M-i-2>= 0,
if i-2*d10-1>= 0,
if M-i-3>= 0,
[ in_1 ] = ipd( a_7( stage-1, 2*d9, i ) );
else %% if -M+i+2 >= 0
[ in_1 ] = ipd( a_6( stage-1, 2*d9-2, i+1 ) );
end
end
else %% if -M+i+1 >= 0
if -i+2*d9-1>= 0,
[ in_1 ] = ipd( a_6( stage-1, 2*d9-2, i+1 ) );
end
end
end
else %% if -i+1 >= 0
if M-i-2>= 0,
d11 = div(i,2);
if i-2*d11-1>= 0,
if M-i-3>= 0,
[ in_1 ] = ipd( a_7( stage-1, 2*d9, i ) );
else %% if -M+i+2 >= 0
[ in_1 ] = ipd( a_4( stage-1, 2*d9-1, i ) );
end
end
else %% if -M+i+1 >= 0
[ in_1 ] = ipd( a_4( stage-1, 2*d9-1, i ) );
end
end
end
else %% if -stage+1 >= 0
[ in_1 ] = ipd( a( i, i+1 ) );
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-i-2>= 0,
d17 = div(i,2);
if i-2*d17-1>= 0,
d18 = div(i+1,2);
if -i+2*d18-1>= 0,
if i-2>= 0,
[ in_2 ] = ipd( a_8( stage-1, 2*d18-2, i+1 ) );
else %% if -i+1 >= 0
if M-i-3>= 0,
[ in_2 ] = ipd( a_5( stage-1, 2*d18, i ) );
else %% if -M+i+2 >= 0
[ in_2 ] = ipd( a_3( stage-1, 2*d18-1, i+1 ) );
end
end
end
end
else %% if -M+i+1 >= 0
d18 = div(i+1,2);
if -i+2*d18-1>= 0,
if i-2>= 0,
d20 = div(i,2);
if i-2*d20-1>= 0,
[ in_2 ] = ipd( a_8( stage-1, 2*d18-2, i+1 ) );
end
else %% if -i+1 >= 0
[ in_2 ] = ipd( a_3( stage-1, 2*d18-1, i+1 ) );
end
end
end
else %% if -stage+1 >= 0
[ in_2 ] = ipd( a( i+1, i ) );
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-i-2>= 0,
d25 = div(i,2);
if i-2*d25-1>= 0,
d26 = div(i+1,2);
if -i+2*d26-1>= 0,
if M-i-3>= 0,
[ in_3 ] = ipd( a_7( stage-1, 2*d26, i+1 ) );
else %% if -M+i+2 >= 0
[ in_3 ] = ipd( a_4( stage-1, 2*d26-1, i+1 ) );
end
end
end
else %% if -M+i+1 >= 0
d26 = div(i+1,2);
if -i+2*d26-1>= 0,
[ in_3 ] = ipd( a_4( stage-1, 2*d26-1, i+1 ) );
end
end
else %% if -stage+1 >= 0
[ in_3 ] = ipd( a( i+1, i+1 ) );
end
[ out_0, out_1 ] = vector( in_0, in_1, in_2, in_3 );
[ phi_2( stage, i) ] = opd( out_0 );
[ thetha_1( stage, i) ] = opd( out_1 );
end
for i = 1 : 2 : M-1,
for j = 1 : 1 : M,
%% SAP Generated for HiPars version 3.0 Compliance
if N-i>= 0,
if stage-2>= 0,
d33 = div(i+1,2);
if -i+2*d33-1>= 0,
[ in_0 ] = ipd( phi_2( stage, 2*d33-1 ) );
end
else %% if -stage+1 >= 0
d34 = div(i+1,2);
if -i+2*d34-1>= 0,
[ in_0 ] = ipd( phi_2( stage, 2*d34-1 ) );
end
end
else %% if -N+i-1 >= 0
if stage-2>= 0,
d33 = div(i+1,2);
if -i+2*d33-1>= 0,
if i-2>= 0,
[ in_0 ] = ipd( phi_2( stage, 2*d33-1 ) );
end
end
else %% if -stage+1 >= 0
d34 = div(i+1,2);
if -i+2*d34-1>= 0,
[ in_0 ] = ipd( phi_2( stage, 2*d34-1 ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d36 = div(i+1,2);
if -i+2*d36-1>= 0,
if i-2>= 0,
d37 = div(i,2);
if i-2*d37-1>= 0,
if M-j-1>= 0,
d39 = div(j+1,2);
if -j+2*d39-1>= 0,
if j-2>= 0,
d40 = div(j,2);
if j-2*d40-1>= 0,
[ in_1 ] = ipd( a_8( stage-1, 2*d39-2, i ) );
end
else %% if -j+1 >= 0
[ in_1 ] = ipd( a_6( stage-1, 2*d36-2, j ) );
end
else %% if j-2*d39 >= 0
if j-2>= 0,
d40 = div(j,2);
if -j+2*d40>= 0,
if M-i-2>= 0,
if M-j-2>= 0,
[ in_1 ] = ipd( a_7( stage-1, 2*d40, i ) );
else %% if -M+j+1 >= 0
[ in_1 ] = ipd( a_6( stage-1, 2*d36-2, j ) );
end
else %% if -M+i+1 >= 0
[ in_1 ] = ipd( a_7( stage-1, 2*d40, i ) );
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
[ in_1 ] = ipd( a_6( stage-1, 2*d36-2, j ) );
end
end
end
else %% if -i+1 >= 0
if M-j-1>= 0,
d39 = div(j+1,2);
if -j+2*d39-1>= 0,
if j-2>= 0,
d40 = div(j,2);
if j-2*d40-1>= 0,
[ in_1 ] = ipd( a_8( stage-1, 2*d39-2, i ) );
end
else %% if -j+1 >= 0
[ in_1 ] = ipd( a_3( stage-1, 2*d39-1, i ) );
end
else %% if j-2*d39 >= 0
if j-2>= 0,
d40 = div(j,2);
if -j+2*d40>= 0,
if M-j-2>= 0,
[ in_1 ] = ipd( a_7( stage-1, 2*d40, i ) );
else %% if -M+j+1 >= 0
[ in_1 ] = ipd( a_4( stage-1, 2*d40-1, i ) );
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d40 = div(j,2);
if -j+2*d40>= 0,
if -M+j+1>= 0,
[ in_1 ] = ipd( a_4( stage-1, 2*d40-1, i ) );
end
else %% if j-2*d40-1 >= 0
if -M+j+1>= 0,
[ in_1 ] = ipd( a_1( stage-1, 2*d36-1, j ) );
end
end
end
end
end
end
else %% if -stage+1 >= 0
[ in_1 ] = ipd( a( i, j ) );
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-i-2>= 0,
d45 = div(i,2);
if i-2*d45-1>= 0,
d46 = div(i+1,2);
if -i+2*d46-1>= 0,
if M-j-1>= 0,
d47 = div(j+1,2);
if -j+2*d47-1>= 0,
if j-2>= 0,
d48 = div(j,2);
if j-2*d48-1>= 0,
[ in_2 ] = ipd( a_8( stage-1, 2*d47-2, i+1 ) );
end
else %% if -j+1 >= 0
if M-i-3>= 0,
[ in_2 ] = ipd( a_5( stage-1, 2*d46, j ) );
else %% if -M+i+2 >= 0
[ in_2 ] = ipd( a_3( stage-1, 2*d47-1, i+1 ) );
end
end
else %% if j-2*d47 >= 0
if j-2>= 0,
d48 = div(j,2);
if -j+2*d48>= 0,
if M-i-3>= 0,
if i-2>= 0,
if M-j-2>= 0,
[ in_2 ] = ipd( a_7( stage-1, 2*d48, i+1 ) );
else %% if -M+j+1 >= 0
[ in_2 ] = ipd( a_5( stage-1, 2*d46, j ) );
end
else %% if -i+1 >= 0
if M-j-2>= 0,
[ in_2 ] = ipd( a_7( stage-1, 2*d48, i+1 ) );
else %% if -M+j+1 >= 0
[ in_2 ] = ipd( a_5( stage-1, 2*d46, j ) );
end
end
else %% if -M+i+2 >= 0
if i-2>= 0,
if M-j-2>= 0,
[ in_2 ] = ipd( a_7( stage-1, 2*d48, i+1 ) );
else %% if -M+j+1 >= 0
[ in_2 ] = ipd( a_4( stage-1, 2*d48-1, i+1 ) );
end
else %% if -i+1 >= 0
[ in_2 ] = ipd( a_4( stage-1, 2*d48-1, i+1 ) );
end
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d48 = div(j,2);
if -j+2*d48>= 0,
[ in_2 ] = ipd( a_5( stage-1, 2*d46, j ) );
else %% if j-2*d48-1 >= 0
if M-i-3>= 0,
[ in_2 ] = ipd( a_5( stage-1, 2*d46, j ) );
else %% if -M+i+2 >= 0
[ in_2 ] = ipd( a_2( stage-1, 2*d46-1, j ) );
end
end
end
end
end
end
else %% if -M+i+1 >= 0
d46 = div(i+1,2);
if -i+2*d46-1>= 0,
if M-j-1>= 0,
d47 = div(j+1,2);
if -j+2*d47-1>= 0,
if j-2>= 0,
d48 = div(j,2);
if j-2*d48-1>= 0,
if i-2>= 0,
[ in_2 ] = ipd( a_8( stage-1, 2*d47-2, i+1 ) );
end
end
else %% if -j+1 >= 0
[ in_2 ] = ipd( a_3( stage-1, 2*d47-1, i+1 ) );
end
else %% if j-2*d47 >= 0
if j-2>= 0,
d48 = div(j,2);
if -j+2*d48>= 0,
if i-2>= 0,
[ in_2 ] = ipd( a_7( stage-1, 2*d48, i+1 ) );
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d48 = div(j,2);
if -j+2*d48>= 0,
[ in_2 ] = ipd( a_4( stage-1, 2*d48-1, i+1 ) );
end
end
end
end
end
else %% if -stage+1 >= 0
[ in_2 ] = ipd( a( i+1, j ) );
end
[ out_0, out_1 ] = phiSAC( in_0, in_1, in_2 );
[ a_1( stage, i, j) ] = opd( out_0 );
[ a_2( stage, i, j) ] = opd( out_1 );
end
end
for i = 1 : 2 : M-1,
for j = 1 : 1 : M,
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-j-1>= 0,
d53 = div(j+1,2);
if -j+2*d53-1>= 0,
[ in_0 ] = ipd( a_1( stage, 2*d53-1, i ) );
else %% if j-2*d53 >= 0
if j-2>= 0,
d55 = div(j,2);
if -j+2*d55>= 0,
d57 = div(i+1,2);
if -i+2*d57-1>= 0,
[ in_0 ] = ipd( a_2( stage, 2*d55-1, i ) );
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d55 = div(j,2);
if -j+2*d55>= 0,
d57 = div(i+1,2);
if -i+2*d57-1>= 0,
[ in_0 ] = ipd( a_2( stage, 2*d55-1, i ) );
end
else %% if j-2*d55-1 >= 0
d57 = div(i+1,2);
if -i+2*d57-1>= 0,
if i-2>= 0,
d58 = div(i,2);
if i-2*d58-1>= 0,
if i-2*d58-1>= 0,
if -M+j+1>= 0,
if M-i-2>= 0,
[ in_0 ] = ipd( a_8( stage-1, 2*d57-2, j ) );
end
end
end
end
else %% if -i+1 >= 0
if -M+j+1>= 0,
[ in_0 ] = ipd( a_3( stage-1, 2*d57-1, j ) );
end
end
end
end
end
end
else %% if -stage+1 >= 0
if M-j-1>= 0,
d54 = div(j+1,2);
if -j+2*d54-1>= 0,
[ in_0 ] = ipd( a_1( stage, 2*d54-1, i ) );
else %% if j-2*d54 >= 0
if j-2>= 0,
d56 = div(j,2);
if -j+2*d56>= 0,
[ in_0 ] = ipd( a_2( stage, 2*d56-1, i ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d56 = div(j,2);
if -j+2*d56>= 0,
[ in_0 ] = ipd( a_2( stage, 2*d56-1, i ) );
else %% if j-2*d56-1 >= 0
[ in_0 ] = ipd( a( j, i ) );
end
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-j-1>= 0,
d64 = div(j+1,2);
if -j+2*d64-1>= 0,
[ in_1 ] = ipd( a_1( stage, 2*d64-1, i+1 ) );
else %% if j-2*d64 >= 0
if j-2>= 0,
d66 = div(j,2);
if -j+2*d66>= 0,
[ in_1 ] = ipd( a_2( stage, 2*d66-1, i+1 ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d66 = div(j,2);
if -j+2*d66>= 0,
[ in_1 ] = ipd( a_2( stage, 2*d66-1, i+1 ) );
else %% if j-2*d66-1 >= 0
if M-i-2>= 0,
d68 = div(i,2);
if i-2*d68-1>= 0,
d69 = div(i+1,2);
if -i+2*d69-1>= 0,
if -M+j+1>= 0,
if M-i-3>= 0,
[ in_1 ] = ipd( a_7( stage-1, 2*d69, j ) );
else %% if -M+i+2 >= 0
[ in_1 ] = ipd( a_4( stage-1, 2*d69-1, j ) );
end
end
end
end
end
end
end
end
else %% if -stage+1 >= 0
if M-j-1>= 0,
d65 = div(j+1,2);
if -j+2*d65-1>= 0,
[ in_1 ] = ipd( a_1( stage, 2*d65-1, i+1 ) );
else %% if j-2*d65 >= 0
if j-2>= 0,
d67 = div(j,2);
if -j+2*d67>= 0,
[ in_1 ] = ipd( a_2( stage, 2*d67-1, i+1 ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d67 = div(j,2);
if -j+2*d67>= 0,
[ in_1 ] = ipd( a_2( stage, 2*d67-1, i+1 ) );
else %% if j-2*d67-1 >= 0
[ in_1 ] = ipd( a( j, i+1 ) );
end
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d74 = div(i+1,2);
if -i+2*d74-1>= 0,
[ in_2 ] = ipd( thetha_1( stage, 2*d74-1 ) );
end
else %% if -stage+1 >= 0
d75 = div(i+1,2);
if -i+2*d75-1>= 0,
[ in_2 ] = ipd( thetha_1( stage, 2*d75-1 ) );
end
end
[ out_0, out_1 ] = thethaSAC( in_0, in_1, in_2 );
[ a_3( stage, i, j) ] = opd( out_0 );
[ a_4( stage, i, j) ] = opd( out_1 );
end
end
for i = 2 : 2 : M-2,
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d77 = div(i+1,2);
if i-2*d77>= 0,
if i-2*d77>= 0,
d79 = div(i,2);
if -i+2*d79>= 0,
if -i+2*d79>= 0,
if -i+2*d79>= 0,
[ in_0 ] = ipd( a_4( stage, 2*d79-1, i ) );
end
end
end
end
end
else %% if -stage+1 >= 0
d78 = div(i+1,2);
if i-2*d78>= 0,
d80 = div(i,2);
if -i+2*d80>= 0,
[ in_0 ] = ipd( a_4( stage, 2*d80-1, i ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d89 = div(i+1,2);
if i-2*d89>= 0,
if i-2*d89>= 0,
d91 = div(i,2);
if -i+2*d91>= 0,
if -i+2*d91>= 0,
if -i+2*d91>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d91+1, i ) );
end
end
end
end
end
else %% if -stage+1 >= 0
d90 = div(i+1,2);
if i-2*d90>= 0,
d92 = div(i,2);
if -i+2*d92>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d92+1, i ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d101 = div(i,2);
if -i+2*d101>= 0,
if -i+2*d101>= 0,
d103 = div(i+1,2);
if i-2*d103>= 0,
if i-2*d103>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d101-1, i+1 ) );
end
end
end
end
else %% if -stage+1 >= 0
d102 = div(i,2);
if -i+2*d102>= 0,
d104 = div(i+1,2);
if i-2*d104>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d102-1, i+1 ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d113 = div(i,2);
if -i+2*d113>= 0,
if -i+2*d113>= 0,
d115 = div(i+1,2);
if i-2*d115>= 0,
if i-2*d115>= 0,
[ in_3 ] = ipd( a_3( stage, 2*d113+1, i+1 ) );
end
end
end
end
else %% if -stage+1 >= 0
d114 = div(i,2);
if -i+2*d114>= 0,
d116 = div(i+1,2);
if i-2*d116>= 0,
[ in_3 ] = ipd( a_3( stage, 2*d114+1, i+1 ) );
end
end
end
[ out_0, out_1 ] = vector( in_0, in_1, in_2, in_3 );
[ phi_3( stage, i) ] = opd( out_0 );
[ thetha_2( stage, i) ] = opd( out_1 );
end
for i = 2 : 2 : M-2,
for j = 1 : 1 : M,
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d125 = div(i+1,2);
if i-2*d125>= 0,
d127 = div(i,2);
if -i+2*d127>= 0,
[ in_0 ] = ipd( phi_3( stage, 2*d127 ) );
end
end
else %% if -stage+1 >= 0
d126 = div(i+1,2);
if i-2*d126>= 0,
d128 = div(i,2);
if -i+2*d128>= 0,
[ in_0 ] = ipd( phi_3( stage, 2*d128 ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d129 = div(i+1,2);
if i-2*d129>= 0,
d131 = div(i,2);
if -i+2*d131>= 0,
if M-j-1>= 0,
d133 = div(j+1,2);
if -j+2*d133-1>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d133-1, i ) );
else %% if j-2*d133 >= 0
if j-2>= 0,
d135 = div(j,2);
if -j+2*d135>= 0,
[ in_1 ] = ipd( a_4( stage, 2*d135-1, i ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d135 = div(j,2);
if -j+2*d135>= 0,
[ in_1 ] = ipd( a_4( stage, 2*d135-1, i ) );
else %% if j-2*d135-1 >= 0
[ in_1 ] = ipd( a_2( stage, 2*d131-1, j ) );
end
end
end
end
end
else %% if -stage+1 >= 0
d130 = div(i+1,2);
if i-2*d130>= 0,
d132 = div(i,2);
if -i+2*d132>= 0,
if M-j-1>= 0,
d134 = div(j+1,2);
if -j+2*d134-1>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d134-1, i ) );
else %% if j-2*d134 >= 0
if j-2>= 0,
d136 = div(j,2);
if -j+2*d136>= 0,
[ in_1 ] = ipd( a_4( stage, 2*d136-1, i ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d136 = div(j,2);
if -j+2*d136>= 0,
[ in_1 ] = ipd( a_4( stage, 2*d136-1, i ) );
else %% if j-2*d136-1 >= 0
[ in_1 ] = ipd( a_2( stage, 2*d132-1, j ) );
end
end
end
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d142 = div(i,2);
if -i+2*d142>= 0,
d144 = div(i+1,2);
if i-2*d144>= 0,
if M-j-1>= 0,
d146 = div(j+1,2);
if -j+2*d146-1>= 0,
[ in_2 ] = ipd( a_3( stage, 2*d146-1, i+1 ) );
else %% if j-2*d146 >= 0
if j-2>= 0,
d148 = div(j,2);
if -j+2*d148>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d148-1, i+1 ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d148 = div(j,2);
if -j+2*d148>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d148-1, i+1 ) );
else %% if j-2*d148-1 >= 0
if M-i-3>= 0,
if -M+j+1>= 0,
[ in_2 ] = ipd( a_1( stage, 2*d142+1, j ) );
end
end
end
end
end
end
end
else %% if -stage+1 >= 0
d143 = div(i,2);
if -i+2*d143>= 0,
d145 = div(i+1,2);
if i-2*d145>= 0,
if M-j-1>= 0,
d147 = div(j+1,2);
if -j+2*d147-1>= 0,
[ in_2 ] = ipd( a_3( stage, 2*d147-1, i+1 ) );
else %% if j-2*d147 >= 0
if j-2>= 0,
d149 = div(j,2);
if -j+2*d149>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d149-1, i+1 ) );
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d149 = div(j,2);
if -j+2*d149>= 0,
[ in_2 ] = ipd( a_4( stage, 2*d149-1, i+1 ) );
else %% if j-2*d149-1 >= 0
[ in_2 ] = ipd( a_1( stage, 2*d143+1, j ) );
end
end
end
end
end
end
[ out_0, out_1 ] = phiSAC( in_0, in_1, in_2 );
[ a_5( stage, i, j) ] = opd( out_0 );
[ a_6( stage, i, j) ] = opd( out_1 );
end
end
for i = 2 : 2 : M-2,
for j = 1 : 1 : M,
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-j-1>= 0,
d154 = div(j+1,2);
if -j+2*d154-1>= 0,
if j-2>= 0,
d156 = div(j,2);
if j-2*d156-1>= 0,
d158 = div(i+1,2);
if i-2*d158>= 0,
d160 = div(i,2);
if -i+2*d160>= 0,
[ in_0 ] = ipd( a_6( stage, 2*d154-2, i ) );
end
end
end
else %% if -j+1 >= 0
d158 = div(i+1,2);
if i-2*d158>= 0,
d160 = div(i,2);
if -i+2*d160>= 0,
if -i+2*d160>= 0,
[ in_0 ] = ipd( a_4( stage, 2*d160-1, j ) );
end
end
end
end
else %% if j-2*d154 >= 0
if j-2>= 0,
d156 = div(j,2);
if -j+2*d156>= 0,
d158 = div(i+1,2);
if i-2*d158>= 0,
d160 = div(i,2);
if -i+2*d160>= 0,
if M-j-2>= 0,
[ in_0 ] = ipd( a_5( stage, 2*d156, i ) );
else %% if -M+j+1 >= 0
if j-2*d154>= 0,
[ in_0 ] = ipd( a_4( stage, 2*d160-1, j ) );
end
end
end
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d160 = div(i,2);
[ in_0 ] = ipd( a_4( stage, 2*d160-1, j ) );
end
end
else %% if -stage+1 >= 0
if M-j-1>= 0,
d155 = div(j+1,2);
if -j+2*d155-1>= 0,
if j-2>= 0,
d157 = div(j,2);
if j-2*d157-1>= 0,
d159 = div(i+1,2);
if i-2*d159>= 0,
d161 = div(i,2);
if -i+2*d161>= 0,
[ in_0 ] = ipd( a_6( stage, 2*d155-2, i ) );
end
end
end
else %% if -j+1 >= 0
d159 = div(i+1,2);
if i-2*d159>= 0,
d161 = div(i,2);
if -i+2*d161>= 0,
[ in_0 ] = ipd( a_4( stage, 2*d161-1, j ) );
end
end
end
else %% if j-2*d155 >= 0
if j-2>= 0,
d157 = div(j,2);
if -j+2*d157>= 0,
d159 = div(i+1,2);
if i-2*d159>= 0,
d161 = div(i,2);
if -i+2*d161>= 0,
if M-j-2>= 0,
[ in_0 ] = ipd( a_5( stage, 2*d157, i ) );
else %% if -M+j+1 >= 0
[ in_0 ] = ipd( a_4( stage, 2*d161-1, j ) );
end
end
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d161 = div(i,2);
[ in_0 ] = ipd( a_4( stage, 2*d161-1, j ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
if M-j-1>= 0,
d169 = div(j+1,2);
if -j+2*d169-1>= 0,
if j-2>= 0,
d171 = div(j,2);
if j-2*d171-1>= 0,
d173 = div(i,2);
if -i+2*d173>= 0,
d175 = div(i+1,2);
if i-2*d175>= 0,
[ in_1 ] = ipd( a_6( stage, 2*d169-2, i+1 ) );
end
end
end
else %% if -j+1 >= 0
d173 = div(i,2);
if -i+2*d173>= 0,
d175 = div(i+1,2);
if i-2*d175>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d173+1, j ) );
end
end
end
else %% if j-2*d169 >= 0
if j-2>= 0,
d171 = div(j,2);
if -j+2*d171>= 0,
d173 = div(i,2);
if -i+2*d173>= 0,
d175 = div(i+1,2);
if i-2*d175>= 0,
if M-j-2>= 0,
[ in_1 ] = ipd( a_5( stage, 2*d171, i+1 ) );
else %% if -M+j+1 >= 0
if j-2*d169>= 0,
if M-i-3>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d173+1, j ) );
end
end
end
end
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d173 = div(i,2);
[ in_1 ] = ipd( a_3( stage, 2*d173+1, j ) );
end
end
else %% if -stage+1 >= 0
if M-j-1>= 0,
d170 = div(j+1,2);
if -j+2*d170-1>= 0,
if j-2>= 0,
d172 = div(j,2);
if j-2*d172-1>= 0,
d174 = div(i,2);
if -i+2*d174>= 0,
d176 = div(i+1,2);
if i-2*d176>= 0,
[ in_1 ] = ipd( a_6( stage, 2*d170-2, i+1 ) );
end
end
end
else %% if -j+1 >= 0
d174 = div(i,2);
if -i+2*d174>= 0,
d176 = div(i+1,2);
if i-2*d176>= 0,
[ in_1 ] = ipd( a_3( stage, 2*d174+1, j ) );
end
end
end
else %% if j-2*d170 >= 0
if j-2>= 0,
d172 = div(j,2);
if -j+2*d172>= 0,
d174 = div(i,2);
if -i+2*d174>= 0,
d176 = div(i+1,2);
if i-2*d176>= 0,
if M-j-2>= 0,
[ in_1 ] = ipd( a_5( stage, 2*d172, i+1 ) );
else %% if -M+j+1 >= 0
[ in_1 ] = ipd( a_3( stage, 2*d174+1, j ) );
end
end
end
end
end
end
else %% if -M+j >= 0
if j-2>= 0,
d174 = div(i,2);
[ in_1 ] = ipd( a_3( stage, 2*d174+1, j ) );
end
end
end
%% SAP Generated for HiPars version 3.0 Compliance
if stage-2>= 0,
d183 = div(i+1,2);
if i-2*d183>= 0,
d185 = div(i,2);
if -i+2*d185>= 0,
[ in_2 ] = ipd( thetha_2( stage, 2*d185 ) );
end
end
else %% if -stage+1 >= 0
d184 = div(i+1,2);
if i-2*d184>= 0,
d186 = div(i,2);
if -i+2*d186>= 0,
[ in_2 ] = ipd( thetha_2( stage, 2*d186 ) );
end
end
end
[ out_0, out_1 ] = thethaSAC( in_0, in_1, in_2 );
[ a_7( stage, i, j) ] = opd( out_0 );
[ a_8( stage, i, j) ] = opd( out_1 );
end
end
end
for x = 1 : 1 : M,
for y = 1 : 1 : M,
%% SAP Generated for HiPars version 3.0 Compliance
if M-x-1>= 0,
d187 = div(x+1,2);
if -x+2*d187-1>= 0,
if x-2>= 0,
d188 = div(x,2);
if x-2*d188-1>= 0,
if M-y-1>= 0,
d189 = div(y+1,2);
if -y+2*d189-1>= 0,
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
[ in_0 ] = ipd( a_8( N, 2*d189-2, x ) );
end
else %% if -y+1 >= 0
[ in_0 ] = ipd( a_6( N, 2*d187-2, y ) );
end
else %% if y-2*d189 >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if M-x-2>= 0,
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_6( N, 2*d187-2, y ) );
end
else %% if -M+x+1 >= 0
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
end
end
end
end
else %% if -M+y >= 0
if y-2>= 0,
[ in_0 ] = ipd( a_6( N, 2*d187-2, y ) );
end
end
end
else %% if -x+1 >= 0
if M-y-1>= 0,
d189 = div(y+1,2);
if -y+2*d189-1>= 0,
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
[ in_0 ] = ipd( a_8( N, 2*d189-2, x ) );
end
else %% if -y+1 >= 0
[ in_0 ] = ipd( a_3( N, 2*d189-1, x ) );
end
else %% if y-2*d189 >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
end
end
end
else %% if -M+y >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if -M+y+1>= 0,
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
else %% if y-2*d190-1 >= 0
if -M+y+1>= 0,
[ in_0 ] = ipd( a_1( N, 2*d187-1, y ) );
end
end
end
end
end
else %% if x-2*d187 >= 0
if x-2>= 0,
d188 = div(x,2);
if -x+2*d188>= 0,
if M-y-1>= 0,
d189 = div(y+1,2);
if -y+2*d189-1>= 0,
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
[ in_0 ] = ipd( a_8( N, 2*d189-2, x ) );
end
else %% if -y+1 >= 0
if M-x-2>= 0,
[ in_0 ] = ipd( a_5( N, 2*d188, y ) );
else %% if -M+x+1 >= 0
[ in_0 ] = ipd( a_3( N, 2*d189-1, x ) );
end
end
else %% if y-2*d189 >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if M-x-2>= 0,
if x-3>= 0,
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_5( N, 2*d188, y ) );
end
else %% if -x+2 >= 0
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_5( N, 2*d188, y ) );
end
end
else %% if -M+x+1 >= 0
if x-3>= 0,
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
else %% if -x+2 >= 0
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
end
end
end
end
else %% if -M+y >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
[ in_0 ] = ipd( a_5( N, 2*d188, y ) );
else %% if y-2*d190-1 >= 0
if M-x-2>= 0,
[ in_0 ] = ipd( a_5( N, 2*d188, y ) );
else %% if -M+x+1 >= 0
[ in_0 ] = ipd( a_2( N, 2*d188-1, y ) );
end
end
end
end
end
end
end
else %% if -M+x >= 0
if x-2>= 0,
d188 = div(x,2);
if -x+2*d188>= 0,
if M-y-1>= 0,
d189 = div(y+1,2);
if -y+2*d189-1>= 0,
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
if -M+x+1>= 0,
[ in_0 ] = ipd( a_8( N, 2*d189-2, x ) );
end
end
else %% if -y+1 >= 0
if -M+x+1>= 0,
[ in_0 ] = ipd( a_3( N, 2*d189-1, x ) );
end
end
else %% if y-2*d189 >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if -M+x+1>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
end
end
end
end
else %% if -M+y >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if -M+x+1>= 0,
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
end
end
end
else %% if x-2*d188-1 >= 0
if M-y-1>= 0,
d189 = div(y+1,2);
if -y+2*d189-1>= 0,
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
if -M+x+1>= 0,
[ in_0 ] = ipd( a_8( N, 2*d189-2, x ) );
end
end
else %% if -y+1 >= 0
if -M+x+1>= 0,
[ in_0 ] = ipd( a_3( N, 2*d189-1, x ) );
end
end
else %% if y-2*d189 >= 0
if y-2>= 0,
d190 = div(y,2);
if -y+2*d190>= 0,
if -M+x+1>= 0,
if M-y-2>= 0,
[ in_0 ] = ipd( a_7( N, 2*d190, x ) );
else %% if -M+y+1 >= 0
[ in_0 ] = ipd( a_4( N, 2*d190-1, x ) );
end
end
end
end
end
else %% if -M+y >= 0
if y-2>= 0,
d190 = div(y,2);
if y-2*d190-1>= 0,
if -M+x+1>= 0,
if -M+y+1>= 0,
[ in_0 ] = ipd( a( x, y ) );
end
end
end
end
end
end
else %% if -x+1 >= 0
if -M+y>= 0,
if -y+1>= 0,
[ in_0 ] = ipd( a( x, y ) );
end
end
end
end
[ out_0 ] = Pass( in_0 );
[ Sink_1( x, y) ] = opd( out_0 );
end
end
%matlab
disp( Sink );
%end