Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/common/PolySolver.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2005-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file PolySolver.h
15
/// @author Jakub Sevcik (RICE)
16
/// @author Jan Prikryl (RICE)
17
/// @date 2019-12-06
18
///
19
//
20
/****************************************************************************/
21
#pragma once
22
#include <config.h>
23
#include <tuple>
24
25
// ===========================================================================
26
// class definitions
27
// ===========================================================================
28
/**
29
* @class PolySolver
30
* @brief Utility functions for solving quadratic and cubic equations in real domain.
31
*/
32
class PolySolver {
33
public:
34
35
/** @brief Solver of quadratic equation ax^2 + bx + c = 0
36
*
37
* Returns only real-valued roots.
38
*
39
* @param[in] a The coefficient of the quadratic term x^2
40
* @param[in] b The coefficient of the linear term x
41
* @param[in] c The coefficient of the constant term
42
* @return The number of real roots and these real roots
43
*/
44
static std::tuple<int, double, double> quadraticSolve(double a, double b, double c);
45
46
/** @brief Solver of cubic equation ax^3 + bx^2 + cx + d = 0
47
*
48
* Returns only real-valued roots.
49
*
50
* @param[in] a The coefficient of the cubic term x^3
51
* @param[in] b The coefficient of the quadratic term x^2
52
* @param[in] c The coefficient of the linear term x
53
* @param[in] d The coefficient of the constant term
54
* @return The number of real roots and these real roots
55
*/
56
static std::tuple<int, double, double, double> cubicSolve(double a, double b, double c, double d);
57
58
};
59
60