Chris_T avatar Chris_T committed 5aff877

Add NAG PBSV example.

Comments (0)

Files changed (2)

   Install:        false
   CompiledObject: best
 
+Executable nag_pbsv
+  Path:           examples/nag
+  MainIs:         nag_pbsv.ml
+  Build$:         flag(examples)
+  BuildDepends:   lacaml
+  Install:        false
+  CompiledObject: best
+
 #
 
 Document API

examples/nag/nag_pbsv.ml

+(* File: nag_pbsv.ml
+
+   Copyright (C) 2013-
+
+     Christophe Troestler
+     email: Christophe.Troestler@umons.ac.be
+     WWW: http://www.umh.ac.be/math/an/
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+(* Example from http://www.nag.com/lapack-ex/node9.html *)
+open Format
+open Lacaml.D
+open Lacaml.Io
+
+(* Symmetric positive definite band matrix.  Only the upper triangle
+   of the matrix is stored (default behavior of [pbsv]).  Each line
+   correspond to a diagonal, the columns being the same as the
+   original matrix. *)
+let ab = Mat.of_array [| [|  nan;  2.68;  -2.39;  -2.22 |];
+                         [| 5.49;  5.63;   2.60;   5.17 |] |]
+
+let b = Vec.of_array [| 22.09;  9.31; -5.24; 11.83 |]
+
+let () =
+  let x = copy b in
+  pbsv ab (Mat.from_col_vec x);
+  printf "Solution: X = @[%a@]@\n" pp_rfvec x;
+  printf "Cholesky factor U (each line is a diagonal):@\n  @[%a@]@\n"
+         pp_fmat ab
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.