Thomas Gazagnaire a écrit : > Hello, > > in my one of my Ocaml programs, I need to find all integers solutions of > a rational equation systems. This algo uses Gauss reduction and Hermite > normal form, and need to know if a rational is an integer or not (ie. I > don't want to use numerical approximation : (1/3) * 3 is an integer but > 0,333333*3 we don't know). I didn't find any integer algebra package for > ocaml, so I tried to implement Gauss elimination (easy) and Hermite > normal form (more difficult...). But I didn't implement optimized > version of these algorithms... > > So my question is : do you know if exists a native ocaml module or an > interface with a C library which is able to do integer/rational matrix > manipulation (essentialy the Hermite normal form) in an efficient way ? > you did not look very hard ? OCaml is distributed with the bignum library in standard which does both int and rationnal ... $ ocaml nums.cma Objective Caml version 3.09.0 # open Num let rec fact n = if n = 0 then Int 1 else fact (n-1) */ Int n ;; val fact : int -> Num.num = # fact 100;; - : Num.num = Big_int # string_of_num (fact 100);; - : string = "93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000" > Thomas > > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs