Listing 7: Selecting an integrator at run time.

Integrator<valarray<complex<double> >,double> *dSchrodinger;
switch (method) {
    case 1:
        dSchrodinger = new Euler<valarray<complex<double> >,
                                 double,complex<double> >
                                (psi,t,h,discretized_odes);
        break;

    case 2:
        dSchrodinger = new Gear<valarray<complex<double> >,
                                double,complex<double> >
                               (order,psi,t,h,maxiterations,
                                discretized_odes,approx_equal);
        break;
}