test_norm Subroutine

subroutine test_norm()

Arguments

None

Contents

Source Code


Source Code

subroutine test_norm ()
   call lala( 'display(ones(80,1)''*61);help norm;display(ones(80,1)''*95)')
   if(logs)call lala( 'diary(''norm.log'');')
   call lala( [ character(len=256) :: &
   &'tally=[0]'';                                                                                                              ',&
   &'//diary(''norm'')                                                                                                         ',&
   &'long                                                                                                                      ',&
   &'X=magic(5);                                                                                                               ',&
   &'XX=X(:);                                                                                                                  ',&
   &'// A is answer, E is expected                                                                                             ',&
   &'A=norm(XX)      ;E=74.330343736592525   ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(X,''inf'') ;E=65.0                 ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,''inf'');E=25.0                 ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(X,1)     ;E=65.0                 ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(X,2)     ;E=65.0                 ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(X,''fro'') ;E=74.330343736592525   ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,1)    ;E=325.0                ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,''inf'');E=25.0                 ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,2)    ;E=74.330343736592525   ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,3)    ;E=47.270359729914041   ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,1/2)  ;E=7.333144324200370d+03; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(XX,1/3)  ;E=1.757406593784711d+05; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(-XX,3)   ;E=47.270359729914041   ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(-XX,-3)  ;E=0.940699519035135    ; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'A=norm(-XX,1/3) ;E=1.757406593784711d+05; if abs(A/E)-1<=2*eps,tally=[tally,0];else,tally=[tally,x];A,E,A-E,eps,abs(A/E)-1',&
   &'if sum(tally)=0,display(''norm PASSED'');else,display(''norm FAILED'')                                                    ',&
   &'display(tally,1);                                                                                                         ',&
   &'quit                                                                                                                      ',&
   &'//==============================================================================                                          ',&
   &'// YOU SHOULD GET THE FOLLOWING ERROR MESSAGE                                                                             ',&
   &'// norm(-X,-3)                                                                                                            ',&
   &'//              /\--ERROR:Only 1, 2 or INF norm of matrix                                                                 ',&
   &'//==============================================================================                                          ',&
   &'// MACROS DID NOT WORK, ACTED LIKE ELSE COMMANDS NOT PRESENT 20210510                                                     ',&
   &"//T= 'if abs(A - E)  =     0, display(''PASSED''),else,display(''FAILED''),A,E,A-E,eps,abs(A/E)-1';                       ",&
   &"//T= 'if abs(A - E) <=   eps, display(''PASSED''),else,display(''FAILED''),A,E,A-E,eps,abs(A/E)-1';                       ",&
   &"//T= 'if abs(A/E)-1 <= 2*eps, display(''PASSED''),else,display(''FAILED''),A,E,A-E,eps,abs(A/E)-1';                       ",&
   &'display(T,1)                                                                                                              ',&
   &"//==============================================================================                                          ",&
   &""])
end subroutine test_norm