Comments (6)
take a look at things like CppAD::CondExpLt
from cppadcodegen.
I would suggest looking at
https://coin-or.github.io/CppAD/doc/condexp.htm
from cppadcodegen.
Hi,
You can write conditions which will generate if
and else
in the generated source code.
Since it is not possible to overload the keywords if
/else
, you need to write your model using special functions for this purpose.
Information about these functions is available at (as suggested by Brad):
https://coin-or.github.io/CppAD/doc/condexp.htm
You just need to use the active data type AD<CG<scalar>>
(scalar can be a double for instance) and register the branches as you would normally with CppAD (using AD<scalar>
).
Please also take a look at:
https://github.com/joaoleal/CppADCodeGen/blob/master/test/cppad/cg/operations/cond_exp.hpp
from cppadcodegen.
Thank you very much for your help.
I have another similar question, I did not find a way to do "if...elseif....else".
I basically need to do something similar to what this guy is doing here(beginif/BeginElseIf) with his own AD lib =>here and here.
Is there a way to do something equivalent with CppAD ?
from cppadcodegen.
It is possible to do this sort of thing by making the output of one conditional expression the input to another. For example; see
https://github.com/coin-or/CppAD/blob/master/include/cppad/core/atan2.hpp
from cppadcodegen.
CppAD(Codegen) conditional expressions (if/else) can be implemented using;:
out = CondExpLt(a,b,c,d)
-->if(a < b) {out = c} else {out = d}
,out = CondExpLe(a,b,c,d)
-->if(a <= b) {out = c} else {out = d}
,out = CondExpEq(a,b,c,d)
-->if(a == b) {out = c} else {out = d}
,out = CondExpGe(a,b,c,d)
-->if(a >= b) {out = c} else {out = d}
, andout = CondExpGt(a,b,c,d)
-->if(a > b) {out = c} else {out = d}
.
from cppadcodegen.
Related Issues (20)
- CppADCodeGen support for Eigen `.transpose()` operation HOT 6
- Found CppAD version '' but at least version '20200000.1' is required HOT 5
- Loops reusing intermediate results HOT 1
- Using LLVM to improve CppAD HOT 4
- Question about wrong type argument error
- Examples on using CppADCodeGen with Eigen HOT 5
- Use CppADCodeGen with variable number of independent variable arrays HOT 2
- GreaterThanZero cannot be called for non-parameters for eigen determinant HOT 2
- Code generation with if/else statements HOT 18
- Large computational graphs fail at link time HOT 4
- cppad_ipopt dependency HOT 3
- Calling CppAD::ipopt::solve from CppADCodeGen HOT 8
- How to get the value of a CppADCodeGen scalar type HOT 1
- Generating Jacobians as Tensors HOT 12
- icpc build fails for dynamic_linux.cpp example HOT 1
- make build_tests fails HOT 1
- Supporting runtime compilation and dynamic linking in MacOSX M1,2 chips HOT 2
- model->Domain() returns size for previous model
- Running the test program Jacobian module listwith cppAD library gives a lot of errors HOT 6
- error when complie function library
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cppadcodegen.