[BACK]Return to generic_norms_equals.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Matrices

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Matrices/generic_norms_equals.adb, Revision 1.1.1.1

1.1       maekawa     1: package body Generic_Norms_Equals is
                      2:
                      3:   function Max_Norm ( v : Vector ) return number is
                      4:
                      5:     res : number := AbsVal(v(v'first));
                      6:
                      7:   begin
                      8:     for i in v'first+1..v'last loop
                      9:       declare
                     10:         abstmp : number := AbsVal(v(i));
                     11:       begin
                     12:         if abstmp > res
                     13:          then Copy(abstmp,res);
                     14:         end if;
                     15:         Clear(abstmp);
                     16:       end;
                     17:     end loop;
                     18:     return res;
                     19:   end Max_Norm;
                     20:
                     21:   function Sum_Norm ( v : Vector ) return number is
                     22:
                     23:     res : number := AbsVal(v(v'first));
                     24:
                     25:   begin
                     26:     for i in v'first+1..v'last loop
                     27:       declare
                     28:         abstmp : number := AbsVal(v(i));
                     29:       begin
                     30:         Add(res,abstmp);
                     31:         Clear(abstmp);
                     32:       end;
                     33:     end loop;
                     34:     return res;
                     35:   end Sum_Norm;
                     36:
                     37:   function Max_Norm ( m : Matrix ) return number is
                     38:
                     39:     res : number;
                     40:
                     41:   begin
                     42:     Copy(zero,res);
                     43:     for i in m'range(1) loop
                     44:       for j in m'range(2) loop
                     45:         declare
                     46:           abstmp : number := AbsVal(m(i,j));
                     47:         begin
                     48:           if abstmp > res
                     49:            then Copy(abstmp,res);
                     50:           end if;
                     51:           Clear(abstmp);
                     52:         end;
                     53:       end loop;
                     54:     end loop;
                     55:     return res;
                     56:   end Max_Norm;
                     57:
                     58:   function Equal ( x,y,tol : number ) return boolean is
                     59:
                     60:     dif : number := x-y;
                     61:     absdif : number := AbsVal(dif);
                     62:     res : boolean := (absdif < tol);
                     63:
                     64:   begin
                     65:     Clear(dif);
                     66:     Clear(absdif);
                     67:     return res;
                     68:   end Equal;
                     69:
                     70:   function Equal ( x,y : Vector; tol : number ) return boolean is
                     71:   begin
                     72:     for i in x'range loop
                     73:       if not Equal(x(i),y(i),tol)
                     74:        then return false;
                     75:       end if;
                     76:     end loop;
                     77:     return true;
                     78:   end Equal;
                     79:
                     80: end Generic_Norms_Equals;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>