Math.NET Numerics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

61 lines
1.7 KiB

// (c) Microsoft Corporation 2005-2009.
(* Rebind z,q,nums to implement the ocaml library APIs *)
module Microsoft.FSharp.Compatibility.OCaml.Num
open Microsoft.FSharp.Compatibility.OCaml
open Microsoft.FSharp.Compatibility.OCaml.Pervasives
open Microsoft.FSharp.Core
open Microsoft.FSharp.Math
type num = bignum
let Big_int(x) = BigNum.FromBigInt x
let Int(x) = BigNum.FromInt x
let minus_num(x:bignum) = (x)
let add_num (x:bignum) y = x + y
let sub_num (x:bignum) y = x - y
let mult_num (x:bignum) y = x * y
let div_num (x:bignum) y = x / y
let abs_num (x:bignum) = abs x
let succ_num (x:bignum) = x + BigNum.One
let pred_num (x:bignum) = x - BigNum.One
let pow_num (x:bignum) n = BigNum.PowN(x,n)
let incr_num r = r := succ_num !r
let decr_num r = (r := pred_num !r)
let sign_num(n:bignum) = sign n
let ( +/ ) x y = add_num x y
let ( -/ ) x y = sub_num x y
let ( */ ) x y = mult_num x y
let ( >/ ) (x:bignum) y = x > y
let ( </ ) (x:bignum) y = x < y
let ( <=/ ) (x:bignum) y = x <= y
let ( >=/ ) (x:bignum) y = x >= y
let compare_num (x:bignum) y = compare x y
let max_num (x:bignum) y = max x y
let min_num (x:bignum) y = min x y
let to_float (n:bignum) = float n
let ( <>/ ) x y = not ((compare_num x y) = 0)
let ( =/ ) x y = ((compare_num x y) = 0)
let big_int_of_num(n) = BigNum.ToBigInt n
let num_of_big_int(x) = Big_int x
let float_of_num(x:bignum) = float x
let int_of_num(x:bignum) = int x
let neg (x:bignum) = - x
let add (x:bignum) y = x + y
let sub (x:bignum) y = x - y
let mul (x:bignum) y = x * y
let div (x:bignum) y = x / y
let pow (x:bignum) y = BigNum.PowN(x,y)
let string_of_num (x:bignum) = x.ToString()
let num_of_string (s:string) = BigNum.Parse(s)