This site is updated infrequently. For up-to-date information, please visit the new OCaml website at ocaml.org.

Unsafe features
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
 Date: -- (:) From: Christophe Raffalli Subject: Re: [Caml-list] Integral solutions of rational linear equations
```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 = <fun>
# fact 100;;
- : Num.num = Big_int <abstr>
# 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

```