acos.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ACADO Toolkit.
3  *
4  * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
5  * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau,
6  * Milan Vukov, Rien Quirynen, KU Leuven.
7  * Developed within the Optimization in Engineering Center (OPTEC)
8  * under supervision of Moritz Diehl. All rights reserved.
9  *
10  * ACADO Toolkit is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 3 of the License, or (at your option) any later version.
14  *
15  * ACADO Toolkit is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with ACADO Toolkit; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
26 
27 
37 
38 double dAcos(double x){
39  return -1/sqrt(1-x*x);
40 }
41 
42 
43 double ddAcos(double x){
44  double v1 = sqrt(1-x*x);
45  return 2*x*(-0.5/v1/v1/v1);
46 }
47 
49 
50 
52  cName = "acos";
53 
54  fcn = &acos;
55  dfcn = &dAcos;
56  ddfcn = &ddAcos;
57 
59 
60 }
61 
62 Acos::Acos( Operator *_argument ):UnaryOperator(_argument){
63  cName = "acos";
64 
65  fcn = &acos;
66  dfcn = &dAcos;
67  ddfcn = &ddAcos;
68 
70 }
71 
72 
73 Acos::Acos( const Acos &arg ):UnaryOperator(arg){
74  cName = "acos";
75 
76  fcn = &acos;
77  dfcn = &dAcos;
78  ddfcn = &ddAcos;
79 
81 }
82 
83 
85 
86 }
87 
88 
89 Acos& Acos::operator=( const Acos &arg ){
90 
92 
93  return *this;
94 }
95 
96 
98 
99  x->Acos(*argument);
100  return SUCCESSFUL_RETURN;
101 }
102 
103 
104 Operator* Acos::substitute( int index, const Operator *sub ){
105 
106  return new Acos( argument->substitute( index , sub ) );
107 
108 }
109 
111 
112  return new Acos(*this);
113 }
114 
116 
117  if( initialized ) return SUCCESSFUL_RETURN;
119 
122  new Power(
123  new Addition(
124  new DoubleConstant(1.0 , NE_ONE),
125  new Product(
127  new Power_Int(
128  argument->clone(),
129  2
130  )
131  )
132  ),
134  )
135  ));
138  new Product(
139  new Power(
140  new Addition(
141  new DoubleConstant(1.0 , NE_ONE),
142  new Product(
144  new Power_Int(
145  argument->clone(),
146  2
147  )
148  )
149  ),
151  ),
152  argument->clone()
153  )
154  ));
155 
156  return argument->initDerivative();
157 }
158 
159 
161 
162 // end of file.
Operator * derivative2
IntermediateState sqrt(const Expression &arg)
Abstract base class for all scalar-valued symbolic operators.
Definition: operator.hpp:60
double(* ddfcn)(double)
Operator * derivative
Abstract base class for all scalar-valued unary operators within the symbolic operators family...
Allows to pass back messages to the calling function.
Implements the scalar power operator within the symbolic operators family.
Definition: power.hpp:56
virtual Operator * clone() const =0
virtual Operator * substitute(int index, const Operator *sub)=0
#define CLOSE_NAMESPACE_ACADO
Operator * argument
BooleanType initialized
Definition: operator.hpp:642
double(* dfcn)(double)
UnaryOperator & operator=(const UnaryOperator &arg)
Acos & operator=(const Acos &arg)
Definition: acos.cpp:89
IntermediateState acos(const Expression &arg)
virtual Operator * clone() const
Definition: acos.cpp:110
Implements the scalar power operator with integer exponent within the symbolic operators family...
Definition: powerint.hpp:55
virtual returnValue initDerivative()
Definition: acos.cpp:115
virtual returnValue initDerivative()
Definition: operator.cpp:519
Implements the scalar addition operator within the symbolic expressions family.
Definition: addition.hpp:54
virtual returnValue evaluate(EvaluationBase *x)
Definition: acos.cpp:97
double ddAcos(double x)
Definition: acos.cpp:43
#define BT_TRUE
Definition: acado_types.hpp:47
virtual void Acos(Operator &arg)=0
std::string cName
OperatorName operatorName
~Acos()
Definition: acos.cpp:84
virtual TreeProjection * convert2TreeProjection(Operator *a) const
Definition: operator.cpp:312
Implements the scalar inverse cosine operator (arccos) within the symbolic operators family...
Definition: acos.hpp:55
Acos()
Definition: acos.cpp:51
#define BEGIN_NAMESPACE_ACADO
Abstract base class for templated evaluation of operators.
double dAcos(double x)
Definition: acos.cpp:38
double(* fcn)(double)
Implements a scalar constant within the symbolic operators family.
virtual Operator * substitute(int index, const Operator *sub)
Definition: acos.cpp:104
Implements the scalar product operator within the symbolic operators family.
Definition: product.hpp:55


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:34:27