0025720: Incorrect code of math classes can lead to unpredicted behavior of algorithms
[occt.git] / src / math / math_NewtonMinimum.lxx
CommitLineData
b311480e 1// Created on: 1996-05-03
2// Created by: Philippe MANGIN
3// Copyright (c) 1996-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
17#include <StdFail_NotDone.hxx>
18
859a47c3 19inline void math_NewtonMinimum::Delete() const
20{
21}
22
23inline Standard_Boolean math_NewtonMinimum::IsConverged() const
24{
25 return ( (TheStep.Norm() <= XTol ) ||
26 ( Abs(TheMinimum-PreviousMinimum) <= XTol * Abs(PreviousMinimum) ));
27}
28
7fd59977 29inline Standard_Boolean math_NewtonMinimum::IsDone() const
30{
31 return Done;
32}
33
34inline const math_Vector& math_NewtonMinimum::Location() const
35{
36 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
37 return TheLocation;
38}
39
40inline void math_NewtonMinimum::Location(math_Vector& Loc) const
41{
42 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
43 Loc = TheLocation;
44}
45
46inline Standard_Real math_NewtonMinimum::Minimum() const
47{
48 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
49 return TheMinimum;
50}
51
52inline const math_Vector& math_NewtonMinimum::Gradient() const
53{
54 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
55 return TheGradient;
56}
57
58inline void math_NewtonMinimum::Gradient(math_Vector& Grad) const
59{
60 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
61 Grad = TheGradient;
62}
63
64inline Standard_Integer math_NewtonMinimum::NbIterations() const
65{
66 StdFail_NotDone_Raise_if(!Done, "NewtonMinimum");
67 return nbiter;
68}
69