Code from CAPD Author
#include <iostream>
#include "capd/capdlib.h"
using namespace std;
using namespace capd;
int main(){
  cout.precision(17);
  // two oscillators
  // vf1 will operarate for x>0
  IMap vf1("var:x,y;fun:-y,x;");
  // vf2 will operarate for x<0
  IMap vf2("var:x,y;fun:-2*y,2*x;");
  
  // The Poincare section is x=0
  
  IOdeSolver s1(vf1,20);
  IOdeSolver s2(vf2,20);
  
  
  ICoordinateSection section(2,0);
  IPoincareMap p1(s1,section);
  IPoincareMap p2(s2,section);
  
  interval returnTime;
  
  IVector x(2);  
  x[0] = 1;
  x[1] = 1;
  // we are in x>0 region. So we are using vf1
  C0Rect2Set set1(x);
  IVector y = p1(set1,returnTime);
  
  cout << "over the time: [0," << returnTime.leftBound() << "] the solution remains in region x>=0.\n";
  cout << "intersection with x=0: " << y[1] << endl;
  // set y[0]=0 because we are on the section
  y[0] = 0;
  // and integrate second system
  C0Rect2Set set2(y);
  y = p2(set2,returnTime);
  cout << "over the time: [0," << returnTime.leftBound() << "] the solution remains in region x<=0.\n";
  cout << "intersection with x=0: " << y[1] << endl;
}Output
over the time: [0,0.78539816339744684] the solution remains in region x>=0.
intersection with x=0: [1.4142135623730929, 1.4142135623731089]
over the time: [0,1.5707963267948957] the solution remains in region x<=0.
intersection with x=0: [-1.4142135623731129, -1.4142135623730909]