# This test computes a matrix exponential from a truncated series
# expansion.

a = symmetric( fill( 100,100; 1:10000 )/1000000 );

for ( k in 1:8 ) { # Do it a few times to get the run times up.

    ap = a;
    ea = diag( fill( 100; 1 ) );

    for ( i in 1:20 ) {
        ea += ap;
        ap = ap * a / (i+1);
    }

    x = ea * ( 1:100 );

    if ( norm( ( x[2:100]-x[1:99] ) - 1.34472 ) > 1e-4 ) {
        fprintf( "/dev/stderr"; "algae: error: Wrong answer in \"mult\"." );
        exception();
    }
}



syntax highlighted by Code2HTML, v. 0.9.1