package body Standard_Complex_Norms_Equals is function Max_Norm ( v : Vector ) return double_float is res : double_float := AbsVal(v(v'first)); begin for i in v'first+1..v'last loop declare abstmp : double_float := AbsVal(v(i)); begin if abstmp > res then res := abstmp; end if; end; end loop; return res; end Max_Norm; function Sum_Norm ( v : Vector ) return double_float is res : double_float := AbsVal(v(v'first)); begin for i in v'first+1..v'last loop res := res + AbsVal(v(i)); end loop; return res; end Sum_Norm; function Max_Norm ( m : Matrix ) return double_float is res : double_float := 0.0; begin for i in m'range(1) loop for j in m'range(2) loop declare abstmp : double_float := AbsVal(m(i,j)); begin if abstmp > res then res := abstmp; end if; end; end loop; end loop; return res; end Max_Norm; function Equal ( x,y : Complex_Number; tol : double_float ) return boolean is dif : Complex_Number := x-y; absdif : double_float := AbsVal(dif); res : boolean := (absdif < tol); begin return res; end Equal; function Equal ( x,y : Vector; tol : double_float ) return boolean is begin for i in x'range loop if not Equal(x(i),y(i),tol) then return false; end if; end loop; return true; end Equal; end Standard_Complex_Norms_Equals;