Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
NNLS.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2013.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Chris Bielow $
32 // $Authors: Chris Bielow $
33 // --------------------------------------------------------------------------
34 
35 #ifndef OPENMS_MATH_MISC_NNLS_NNLS_H
36 #define OPENMS_MATH_MISC_NNLS_NNLS_H
37 
38 #include <OpenMS/config.h>
39 
40 namespace OpenMS
41 {
42 
43  namespace NNLS
44  {
45  typedef int integer;
46  typedef double doublereal;
47 
48  /* SUBROUTINE NNLS (A,MDA,M,N,B,X,RNORM,W,ZZ,INDEX,MODE) */
49 
50  /* Algorithm NNLS: NONNEGATIVE LEAST SQUARES */
51 
52  /* The original version of this code was developed by */
53  /* Charles L. Lawson and Richard J. Hanson at Jet Propulsion Laboratory */
54  /* 1973 JUN 15, and published in the book */
55  /* "SOLVING LEAST SQUARES PROBLEMS", Prentice-HalL, 1974. */
56  /* Revised FEB 1995 to accompany reprinting of the book by SIAM. */
57 
58  /* GIVEN AN M BY N MATRIX, A, AND AN M-VECTOR, B, COMPUTE AN */
59  /* N-VECTOR, X, THAT SOLVES THE LEAST SQUARES PROBLEM */
60 
61  /* A * X = B SUBJECT TO X .GE. 0 */
62  /* ------------------------------------------------------------------ */
63  /* Subroutine Arguments */
64 
65  /* A(),MDA,M,N MDA IS THE FIRST DIMENSIONING PARAMETER FOR THE */
66  /* ARRAY, A(). ON ENTRY A() CONTAINS THE M BY N */
67  /* MATRIX, A. ON EXIT A() CONTAINS */
68  /* THE PRODUCT MATRIX, Q*A , WHERE Q IS AN */
69  /* M BY M ORTHOGONAL MATRIX GENERATED IMPLICITLY BY */
70  /* THIS SUBROUTINE. */
71  /* B() ON ENTRY B() CONTAINS THE M-VECTOR, B. ON EXIT B() CON- */
72  /* TAINS Q*B. */
73  /* X() ON ENTRY X() NEED NOT BE INITIALIZED. ON EXIT X() WILL */
74  /* CONTAIN THE SOLUTION VECTOR. */
75  /* RNORM ON EXIT RNORM CONTAINS THE EUCLIDEAN NORM OF THE */
76  /* RESIDUAL VECTOR. */
77  /* W() AN N-ARRAY OF WORKING SPACE. ON EXIT W() WILL CONTAIN */
78  /* THE DUAL SOLUTION VECTOR. W WILL SATISFY W(I) = 0. */
79  /* FOR ALL I IN SET P AND W(I) .LE. 0. FOR ALL I IN SET Z */
80  /* ZZ() AN M-ARRAY OF WORKING SPACE. */
81  /* INDEX() AN INTEGER WORKING ARRAY OF LENGTH AT LEAST N. */
82  /* ON EXIT THE CONTENTS OF THIS ARRAY DEFINE THE SETS */
83  /* P AND Z AS FOLLOWS.. */
84 
85  /* INDEX(1) THRU INDEX(NSETP) = SET P. */
86  /* INDEX(IZ1) THRU INDEX(IZ2) = SET Z. */
87  /* IZ1 = NSETP + 1 = NPP1 */
88  /* IZ2 = N */
89  /* MODE THIS IS A SUCCESS-FAILURE FLAG WITH THE FOLLOWING */
90  /* MEANINGS. */
91  /* 1 THE SOLUTION HAS BEEN COMPUTED SUCCESSFULLY. */
92  /* 2 THE DIMENSIONS OF THE PROBLEM ARE BAD. */
93  /* EITHER M .LE. 0 OR N .LE. 0. */
94  /* 3 ITERATION COUNT EXCEEDED. MORE THAN 3*N ITERATIONS. */
95  int OPENMS_DLLAPI nnls_(doublereal * a, integer * mda, integer * m, integer *
96  n, doublereal * b, doublereal * x, doublereal * rnorm, doublereal * w,
97  doublereal * zz, integer * index, integer * mode);
98 
99  /* Subroutine */
100  int OPENMS_DLLAPI g1_(doublereal *, doublereal *, doublereal *, doublereal *, doublereal *);
101 
102  /* Subroutine */
103  int OPENMS_DLLAPI h12_(integer *, integer *, integer *, integer *, doublereal *, integer *, doublereal *, doublereal *, integer *, integer *, integer *);
104 
105  /* Subroutine */
106  doublereal OPENMS_DLLAPI diff_(doublereal *, doublereal *);
107 
108  /* Subroutine */
109  double OPENMS_DLLAPI d_sign_(double & a, double & b);
110  }
111 
112 }
113 
114 #endif //OPENMS_MATH_MISC_NNLS_NNLS_H
int g1_(doublereal *, doublereal *, doublereal *, doublereal *, doublereal *)
int nnls_(doublereal *a, integer *mda, integer *m, integer *n, doublereal *b, doublereal *x, doublereal *rnorm, doublereal *w, doublereal *zz, integer *index, integer *mode)
double d_sign_(double &a, double &b)
int integer
Definition: NNLS.h:45
doublereal diff_(doublereal *, doublereal *)
int h12_(integer *, integer *, integer *, integer *, doublereal *, integer *, doublereal *, doublereal *, integer *, integer *, integer *)
double doublereal
Definition: NNLS.h:46

OpenMS / TOPP release 1.11.1 Documentation generated on Thu Nov 14 2013 11:19:18 using doxygen 1.8.5