XLPack API: F# example programs
How to call XLPack from F#
To call XLPack from F#, it is necessary to use DLL directly.
DLL interface program xlpack_fs.fs is included in SDK, so that the calling program can easily call XLPack like built-in functions without considering the detail DLL interface by declaring “open XLPack”.
Two dimensional array is used for the coefficient matrix a. One dimensional array is used for the right hand matrix b.
F# example program (Example (1))
open XLPack let TestDgesv() = let n = 3 let a = array2D [ [ 0.2; -0.32; -0.8 ]; [ -0.11; 0.81; -0.92 ]; [ -0.93; 0.37; -0.29 ] ] let b = [| -0.3727; 0.4319; -1.4247 |] let ipiv = Array.create n 0 let info = XLPack.Dgesv(n, a, ipiv, b) printfn "x = %A, info = %d" b info TestDgesv()
x = [|0.86; 0.64; 0.51|], info = 0
F# example program (Example (2))
In Example (2), the integral of f(x) is computed using qk15. qk15 requires the external function defining f(x). It can be coded in F# and qk15 will call it when necessary.
open XLPack let TestQk15() = let f(x: double) = 1.0/(1.0 + x*x) let a, b = (0.0, 4.0) let result, abserr = XLPack.Qk15(f, a, b) printfn "result = %f, abserr = %g" result abserr TestQk15()
result = 1.325818, abserr = 0.00148272