Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Matrices/standard_integer_norms.adb, Revision 1.1
1.1 ! maekawa 1: with Standard_Common_Divisors; use Standard_Common_Divisors;
! 2:
! 3: package body Standard_Integer_Norms is
! 4:
! 5: function gcd ( v : Vector ) return integer is
! 6:
! 7: tmp : Vector(v'range);
! 8: res : integer;
! 9:
! 10: begin
! 11: for i in v'range loop
! 12: if v(i) < 0
! 13: then tmp(i) := -v(i);
! 14: else tmp(i) := v(i);
! 15: end if;
! 16: end loop;
! 17: res := tmp(tmp'first);
! 18: for i in (tmp'first+1)..tmp'last loop
! 19: res := gcd(res,tmp(i));
! 20: exit when (res = 1);
! 21: end loop;
! 22: return res;
! 23: end gcd;
! 24:
! 25: procedure Normalize ( v : in out Vector ) is
! 26:
! 27: g : constant integer := gcd(v);
! 28:
! 29: begin
! 30: if (g /= 0) and then (g /= 1)
! 31: then for i in v'range loop
! 32: v(i) := v(i)/g;
! 33: end loop;
! 34: end if;
! 35: end Normalize;
! 36:
! 37: end Standard_Integer_Norms;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>