MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
bisec.cc
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/libraries/libmbmath/bisec.cc,v 1.12 2017/01/12 14:43:53 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
33 
34 #include <cmath>
35 
36 #include "ac/f2c.h"
37 #include "bisec.h"
38 
39 /*
40  * algoritmo di bisezione per ricerca efficiente degli angoli
41  *
42  * v: array dei valori
43  * val: valore da cercare
44  * lb: indice inferiore
45  * ub: indice superiore
46  *
47  * restituisce l'indice corrispondente al valore di v
48  * che approssima per eccesso val;
49  * se val > v[ub] restituisce ub + 1;
50  * se val < v[lb] restituisce lb.
51  * quindi v[ret - 1] <= val <= v[ret]
52  *
53  * Nota: ovviamente si presuppone che i valori di v siano ordinati in modo
54  * crescente e strettamente monotono, ovvero v[i] < v[i + 1].
55  */
56 extern "C" int
57 bisec_d(doublereal* v, doublereal val, int lb, int ub)
58 {
59  return bisec<doublereal>(v, val, lb, ub);
60 }
61 
int bisec_d(doublereal *v, doublereal val, int lb, int ub)
Definition: bisec.cc:57
double doublereal
Definition: colamd.c:52