VTK
vtkPolynomialSolversUnivariate.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPolynomialSolversUnivariate.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================
15  Copyright 2011 Sandia Corporation.
16  Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
17  license for use of this work by or on behalf of the
18  U.S. Government. Redistribution and use in source and binary forms, with
19  or without modification, are permitted provided that this Notice and any
20  statement of authorship are reproduced on all copies.
21 
22  Contact: pppebay@sandia.gov,dcthomp@sandia.gov
23 
24 =========================================================================*/
49 #ifndef vtkPolynomialSolversUnivariate_h
50 #define vtkPolynomialSolversUnivariate_h
51 
52 #include "vtkCommonMathModule.h" // For export macro
53 #include "vtkObject.h"
54 
55 class VTKCOMMONMATH_EXPORT vtkPolynomialSolversUnivariate : public vtkObject
56 {
57 public:
60  void PrintSelf(ostream& os, vtkIndent indent) override;
61  static ostream& PrintPolynomial( ostream& os, double* P, int degP );
62 
64 
103  static int HabichtBisectionSolve(
104  double* P, int d, double* a, double* upperBnds, double tol );
105  static int HabichtBisectionSolve(
106  double* P, int d, double* a, double* upperBnds, double tol,
107  int intervalType );
108  static int HabichtBisectionSolve(
109  double* P, int d, double* a, double* upperBnds, double tol,
110  int intervalType, bool divideGCD );
112 
114 
144  static int SturmBisectionSolve(
145  double* P, int d, double* a, double* upperBnds, double tol );
146  static int SturmBisectionSolve(
147  double* P, int d, double* a, double* upperBnds, double tol,
148  int intervalType );
149  static int SturmBisectionSolve(
150  double* P, int d, double* a, double* upperBnds, double tol,
151  int intervalType, bool divideGCD );
153 
161  static int FilterRoots(
162  double* P, int d, double *upperBnds, int rootcount, double diameter );
163 
175  static int LinBairstowSolve( double* c, int d, double* r, double& tolerance );
176 
187  static int FerrariSolve( double* c, double* r, int* m, double tol );
188 
204  static int TartagliaCardanSolve( double* c, double* r, int* m, double tol );
205 
214  static double* SolveCubic(double c0, double c1, double c2, double c3);
215 
224  static double* SolveQuadratic(double c0, double c1, double c2);
225 
231  static double* SolveLinear(double c0, double c1);
232 
246  static int SolveCubic(double c0, double c1, double c2, double c3,
247  double *r1, double *r2, double *r3, int *num_roots);
248 
256  static int SolveQuadratic(double c0, double c1, double c2,
257  double *r1, double *r2, int *num_roots);
258 
266  static int SolveQuadratic( double* c, double* r, int* m );
267 
274  static int SolveLinear(double c0, double c1, double *r1, int *num_roots);
275 
277 
283  static void SetDivisionTolerance( double tol );
284  static double GetDivisionTolerance();
286 
287 protected:
290 
291  static double DivisionTolerance;
292 
293 private:
295  void operator=(const vtkPolynomialSolversUnivariate&) = delete;
296 };
297 
298 #endif
vtkPolynomialSolversUnivariate
polynomial solvers
Definition: vtkPolynomialSolversUnivariate.h:55
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkPolynomialSolversUnivariate::~vtkPolynomialSolversUnivariate
~vtkPolynomialSolversUnivariate() override
Definition: vtkPolynomialSolversUnivariate.h:289
vtkPolynomialSolversUnivariate::vtkPolynomialSolversUnivariate
vtkPolynomialSolversUnivariate()
Definition: vtkPolynomialSolversUnivariate.h:288
vtkPolynomialSolversUnivariate::DivisionTolerance
static double DivisionTolerance
Definition: vtkPolynomialSolversUnivariate.h:291
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkObject.h