Chris_T avatar Chris_T committed 98213a0

Add NAG POSV example.

Comments (0)

Files changed (2)

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

examples/nag/nag_posv.ml

+(* File: nag_posv.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/node11.html *)
+open Format
+open Lacaml.D
+open Lacaml.Io
+
+(* Symmetric positive definite matrix.  By default, [posv] only uses
+   the upper triangular part of the matrix. *)
+let a = Mat.of_array [| [| 4.16;  -3.12;   0.56;  -0.10 |];
+                        [|  nan;   5.03;  -0.83;   1.18 |];
+                        [|  nan;    nan;   0.76;   0.34 |];
+                        [|  nan;    nan;    nan;   1.18 |] |]
+
+let b = Vec.of_array [| 8.70; -13.35;  1.89; -4.14 |]
+
+let () =
+  let x = copy b in
+  posv a (Mat.from_col_vec x);
+  printf "Solution: X = @[%a@]@\n" pp_rfvec x;
+  printf "Cholesky factor U: @[%a@]@\n" pp_fmat a
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.