Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sign_of_determinant.h
Go to the documentation of this file.
1 // ======================================================================
2 //
3 // Copyright (c) 1999 The CGAL Consortium
4 
5 // This software and related documentation is part of the Computational
6 // Geometry Algorithms Library (CGAL).
7 // This software and documentation is provided "as-is" and without warranty
8 // of any kind. In no event shall the CGAL Consortium be liable for any
9 // damage of any kind.
10 //
11 // Every use of CGAL requires a license.
12 //
13 // Academic research and teaching license
14 // - For academic research and teaching purposes, permission to use and copy
15 // the software and its documentation is hereby granted free of charge,
16 // provided that it is not a component of a commercial product, and this
17 // notice appears in all copies of the software and related documentation.
18 //
19 // Commercial licenses
20 // - A commercial license is available through Algorithmic Solutions, who also
21 // markets LEDA (http://www.algorithmic-solutions.de).
22 // - Commercial users may apply for an evaluation license by writing to
23 // Algorithmic Solutions (contact@algorithmic-solutions.com).
24 //
25 // The CGAL Consortium consists of Utrecht University (The Netherlands),
26 // ETH Zurich (Switzerland), Free University of Berlin (Germany),
27 // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
28 // (Germany), Max-Planck-Institute Saarbrucken (Germany), RISC Linz (Austria),
29 // and Tel-Aviv University (Israel).
30 //
31 // ----------------------------------------------------------------------
32 //
33 // release : CGAL-2.2
34 // release_date : 2000, September 30
35 //
36 // source : determinant.fw
37 // file : include/CGAL/predicates/sign_of_determinant.h
38 // package : Kernel_basic (3.14)
39 // revision : 3.14
40 // revision_date : 15 Sep 2000
41 // author(s) : Sylvain Pion
42 // Stefan Schirra
43 //
44 // coordinator : MPI, Saarbruecken (<Stefan.Schirra>)
45 // email : contact@cgal.org
46 // www : http://www.cgal.org
47 //
48 // ======================================================================
49 
50 
51 #ifndef CGAL_PREDICATES_SIGN_OF_DETERMINANT_H
52 #define CGAL_PREDICATES_SIGN_OF_DETERMINANT_H
53 
54 #ifndef CGAL_DETERMINANT_H
55 #include <CGAL/determinant.h>
56 #endif // CGAL_DETERMINANT_H
57 
59 
60 template <class FT>
61 inline
62 Sign
63 sign_of_determinant2x2( const FT& a00, const FT& a01,
64  const FT& a10, const FT& a11)
65 {
66  return
67  static_cast<Sign>(static_cast<int>(CGAL_NTS compare( a00*a11, a10*a01)));
68 }
69 
70 template <class FT>
71 inline
72 Sign
73 sign_of_determinant3x3( const FT& a00, const FT& a01, const FT& a02,
74  const FT& a10, const FT& a11, const FT& a12,
75  const FT& a20, const FT& a21, const FT& a22)
76 {
77  return CGAL_NTS sign(det3x3_by_formula(a00, a01, a02,
78  a10, a11, a12,
79  a20, a21, a22));
80 }
81 
82 template <class FT>
83 inline
84 Sign
86  const FT& a00, const FT& a01, const FT& a02, const FT& a03,
87  const FT& a10, const FT& a11, const FT& a12, const FT& a13,
88  const FT& a20, const FT& a21, const FT& a22, const FT& a23,
89  const FT& a30, const FT& a31, const FT& a32, const FT& a33)
90 {
91  return CGAL_NTS sign(det4x4_by_formula(a00, a01, a02, a03,
92  a10, a11, a12, a13,
93  a20, a21, a22, a23,
94  a30, a31, a32, a33));
95 }
96 
97 template <class FT>
99 Sign
101  const FT& a00, const FT& a01, const FT& a02, const FT& a03, const FT& a04,
102  const FT& a10, const FT& a11, const FT& a12, const FT& a13, const FT& a14,
103  const FT& a20, const FT& a21, const FT& a22, const FT& a23, const FT& a24,
104  const FT& a30, const FT& a31, const FT& a32, const FT& a33, const FT& a34,
105  const FT& a40, const FT& a41, const FT& a42, const FT& a43, const FT& a44)
106 {
107  return CGAL_NTS sign(det5x5_by_formula(a00, a01, a02, a03, a04,
108  a10, a11, a12, a13, a14,
109  a20, a21, a22, a23, a24,
110  a30, a31, a32, a33, a34,
111  a40, a41, a42, a43, a44));
112 }
113 
114 template <class FT>
116 Sign
118  const FT& a00, const FT& a01, const FT& a02, const FT& a03, const FT& a04, const FT& a05,
119  const FT& a10, const FT& a11, const FT& a12, const FT& a13, const FT& a14, const FT& a15,
120  const FT& a20, const FT& a21, const FT& a22, const FT& a23, const FT& a24, const FT& a25,
121  const FT& a30, const FT& a31, const FT& a32, const FT& a33, const FT& a34, const FT& a35,
122  const FT& a40, const FT& a41, const FT& a42, const FT& a43, const FT& a44, const FT& a45,
123  const FT& a50, const FT& a51, const FT& a52, const FT& a53, const FT& a54, const FT& a55)
124 {
125  return CGAL_NTS sign(det6x6_by_formula(a00, a01, a02, a03, a04, a05,
126  a10, a11, a12, a13, a14, a15,
127  a20, a21, a22, a23, a24, a25,
128  a30, a31, a32, a33, a34, a35,
129  a40, a41, a42, a43, a44, a45,
130  a50, a51, a52, a53, a54, a55));
131 }
132 
134 
135 
136 #ifdef CGAL_ARITHMETIC_FILTER_H
137 #include <CGAL/Arithmetic_filter/predicates/sign_of_determinant.h>
138 #endif // CGAL_ARITHMETIC_FILTER_H
139 
140 #endif // CGAL_PREDICATES_SIGN_OF_DETERMINANT_H
static SURF_BEGIN_NAMESPACE double sign(double x)
Sign sign_of_determinant3x3(const FT &a00, const FT &a01, const FT &a02, const FT &a10, const FT &a11, const FT &a12, const FT &a20, const FT &a21, const FT &a22)
CGAL_BEGIN_NAMESPACE Sign sign_of_determinant2x2(const FT &a00, const FT &a01, const FT &a10, const FT &a11)
CGAL_KERNEL_MEDIUM_INLINE FT det3x3_by_formula(const FT &a00, const FT &a01, const FT &a02, const FT &a10, const FT &a11, const FT &a12, const FT &a20, const FT &a21, const FT &a22)
Definition: determinant.h:71
CGAL_KERNEL_LARGE_INLINE FT det5x5_by_formula(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a04, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a14, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a24, const FT &a30, const FT &a31, const FT &a32, const FT &a33, const FT &a34, const FT &a40, const FT &a41, const FT &a42, const FT &a43, const FT &a44)
Definition: determinant.h:114
FT det6x6_by_formula(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a04, const FT &a05, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a14, const FT &a15, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a24, const FT &a25, const FT &a30, const FT &a31, const FT &a32, const FT &a33, const FT &a34, const FT &a35, const FT &a40, const FT &a41, const FT &a42, const FT &a43, const FT &a44, const FT &a45, const FT &a50, const FT &a51, const FT &a52, const FT &a53, const FT &a54, const FT &a55)
Definition: determinant.h:156
CGAL_KERNEL_LARGE_INLINE FT det4x4_by_formula(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a30, const FT &a31, const FT &a32, const FT &a33)
Definition: determinant.h:88
Sign
Definition: enum.h:57
#define CGAL_KERNEL_LARGE_INLINE
Definition: kernel_basic.h:56
Sign sign_of_determinant4x4(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a30, const FT &a31, const FT &a32, const FT &a33)
CGAL_KERNEL_LARGE_INLINE Sign sign_of_determinant5x5(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a04, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a14, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a24, const FT &a30, const FT &a31, const FT &a32, const FT &a33, const FT &a34, const FT &a40, const FT &a41, const FT &a42, const FT &a43, const FT &a44)
CGAL_KERNEL_LARGE_INLINE Sign sign_of_determinant6x6(const FT &a00, const FT &a01, const FT &a02, const FT &a03, const FT &a04, const FT &a05, const FT &a10, const FT &a11, const FT &a12, const FT &a13, const FT &a14, const FT &a15, const FT &a20, const FT &a21, const FT &a22, const FT &a23, const FT &a24, const FT &a25, const FT &a30, const FT &a31, const FT &a32, const FT &a33, const FT &a34, const FT &a35, const FT &a40, const FT &a41, const FT &a42, const FT &a43, const FT &a44, const FT &a45, const FT &a50, const FT &a51, const FT &a52, const FT &a53, const FT &a54, const FT &a55)
#define CGAL_BEGIN_NAMESPACE
Definition: kdtree_d.h:86
CGAL_KERNEL_INLINE Comparison_result compare(const NT &n1, const NT &n2)
Definition: number_utils.h:143
#define CGAL_NTS
#define CGAL_END_NAMESPACE
Definition: kdtree_d.h:87