Main MRPT website > C++ reference for MRPT 1.9.9
poly_roots.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <cstdlib>
13 
14 namespace mrpt
15 {
16 namespace math
17 {
18 /** @addtogroup polynomial_roots Find polynomial roots (`#include
19  * <mrpt/math/poly_roots.h>`)
20  * \ingroup mrpt_math_grp
21  * @{ */
22 
23 /** Solves cubic equation `x^3 + a*x^2 + b*x + c = 0`. Returns the number of
24  * real roots `N`<=3.
25  * The roots are returned in the first entries of `x`, i.e. `x[0]` if N=1,
26  * `x[0]` and `x[1]` if N=2, etc.
27  * \param x array of size 3
28  * \note Based on `poly34.h`, by Khashin S.I.
29  * http://math.ivanovo.ac.ru/dalgebra/Khashin/index.html - khash2 (at) gmail.com
30  */
31 int solve_poly3(double* x, double a, double b, double c) noexcept;
32 
33 /** Solves quartic equation `x^4 + a*x^3 + b*x^2 + c*x + d = 0` by Dekart-Euler
34  * method.
35  * Returns the number of real roots `N`<=4:
36  * - return 4: 4 real roots x[0], x[1], x[2], x[3], possible multiple roots
37  * - return 2: 2 real roots x[0], x[1] and complex x[2]+-i*x[3],
38  * - return 0: two pair of complex roots: x[0]+-i*x[1], x[2]+-i*x[3],
39  *
40  * The roots are returned in the first entries of `x`, i.e. `x[0]` if N=1,
41  * `x[0]` and `x[1]` if N=2, etc.
42  * \param x array of size 4
43  * \note Based on `poly34.h`, by Khashin S.I.
44  * http://math.ivanovo.ac.ru/dalgebra/Khashin/index.html - khash2 (at) gmail.com
45  */
46 int solve_poly4(double* x, double a, double b, double c, double d) noexcept;
47 
48 /** Solves equation `x^5 + a*x^4 + b*x^3 + c*x^2 + d*x + e = 0`.
49  * Returns the number of real roots `N`<=5.
50  * The roots are returned in the first entries of `x`, i.e. `x[0]` if N=1,
51  * `x[0]` and `x[1]` if N=2, etc.
52  * \param x array of size 5
53  * \note Based on `poly34.h`, by Khashin S.I.
54  * http://math.ivanovo.ac.ru/dalgebra/Khashin/index.html - khash2 (at) gmail.com
55  */
56 int solve_poly5(
57  double* x, double a, double b, double c, double d, double e) noexcept;
58 
59 /** Solve equation x^4 + b*x^2 + d = 0 */
60 int solve_poly4Bi(double* x, double b, double d) noexcept;
61 /** Solve equation x^4 + b*x^2 + c*x + d = 0 */
62 int solve_poly4De(double* x, double b, double c, double d) noexcept;
63 
64 /** Solves equation `a*x^2 + b*x + c = 0`.
65  * Returns the number of real roots: either 0 or 2; or 1 if a=0 (in this case
66  * the root is in r1).
67  * r1, r2 are the roots. (r1<=r2)
68  * \note Based on `poly34.h`, by Khashin S.I.
69  * http://math.ivanovo.ac.ru/dalgebra/Khashin/index.html - khash2 (at) gmail.com
70  */
71 int solve_poly2(double a, double b, double c, double& r1, double& r2) noexcept;
72 
73 /** @} */
74 
75 } // End of MATH namespace
76 
77 } // End of namespace
mrpt::math::solve_poly4Bi
int solve_poly4Bi(double *x, double b, double d) noexcept
Solve equation x^4 + b*x^2 + d = 0.
c
const GLubyte * c
Definition: glext.h:6313
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
mrpt::math::solve_poly3
int solve_poly3(double *x, double a, double b, double c) noexcept
Solves cubic equation x^3 + a*x^2 + b*x + c = 0.
Definition: poly_roots.cpp:29
mrpt::math::solve_poly5
int solve_poly5(double *x, double a, double b, double c, double d, double e) noexcept
Solves equation x^5 + a*x^4 + b*x^3 + c*x^2 + d*x + e = 0.
Definition: poly_roots.cpp:388
b
GLubyte GLubyte b
Definition: glext.h:6279
mrpt::math::solve_poly2
int solve_poly2(double a, double b, double c, double &r1, double &r2) noexcept
Solves equation a*x^2 + b*x + c = 0.
Definition: poly_roots.cpp:401
mrpt::math::solve_poly4
int solve_poly4(double *x, double a, double b, double c, double d) noexcept
Solves quartic equation x^4 + a*x^3 + b*x^2 + c*x + d = 0 by Dekart-Euler method.
Definition: poly_roots.cpp:254
mrpt::math::solve_poly4De
int solve_poly4De(double *x, double b, double c, double d) noexcept
Solve equation x^4 + b*x^2 + c*x + d = 0.
x
GLenum GLint x
Definition: glext.h:3538
a
GLubyte GLubyte GLubyte a
Definition: glext.h:6279



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST