printf( "Starting the max test...\n" );

rnd_pos = 0;
rnd_vec = fill( 2500; (magic(50)-0.5)/2500 );
rnd = function( n )
{
    local( r );

    if ( n == NULL )
    {
        r = rnd_vec[ rnd_pos += 1 ];
    else
        r = rnd_vec[ rnd_pos+1 : rnd_pos+n ];
        rnd_pos += n;
    }

    return r;
};

fail = 0;

r = rnd(314); r[23] = r[79] = 0;
if ( imin(r) != 79 | r[imin(r)] != 0 ) { fail = 1; }

I = isort(r)-314/2;
if ( I.type != "integer" ) { fail = 1; }

random_char = function() {
    return 65+25*rnd();
};

c = fill( 100; "" );
for ( i in 1:100 ) {
    c[i] = sprintf( "%c%c%c"; random_char(); random_char(); random_char() );
}

z = sparse(r);
zz = z; zz[1] = zz[314] = 0;

if (imax(I) != 31 | I[imax(I)] != 157 |
    imin(I) != 252 | I[imin(I)] != -156 |
    imax(r) != 12 | imin(r) != 79 |
    c[imax(c)] != "YYY" | imin(c) != 17 |
    imax(z) != imax(r) | imin(z) != imin(r) |
    imax(-zz) != 1 | imin(zz) != zz.ne)
{ fail = 1; }

fail += max (sparse (1,0,0,0,0)) != 1;
fail += max (sparse (0,1,0,0,0)) != 1;
fail += max (sparse (-1,0,0,0,0)) != 0;
fail += imax (sparse (-1,0,0,0,0)) != 2;
fail += max (sparse (-1,0,1,0,0)) != 1;
fail += imax (sparse (-1,0,1,0,0)) != 3;
fail += imax (sparse (0,0,0,0,0)) != 1;
fail += imax (sparse (0,0,0,-1,0)) != 1;
fail += imax(sparse(0,0,0,0,0)&sparse(0,0,1,0,0)) != 1;
fail += imax(sparse(0,0,0,0,0)|sparse(0,0,1,0,0)) != 3;
fail += imax(sparse("","","","","")) != 1;
fail += imax(sparse("","","","x","")) != 4;

fail += imin(sparse(0,0,0,0,0)&sparse(0,0,1,0,0)) != 5;
fail += imin(-(sparse(0,0,0,0,0)|sparse(0,0,1,0,0))) != 3;
fail += imin(sparse("","","","","")) != 5;
fail += imin(sparse("x","","","","")) != 5;
fail += imin(sparse("","","","","x")) != 4;
fail += imin(sparse("","","","x","")) != 5;

fail += !equal (imax(magic(6)); 1,6,5,1,3,2);
fail += !equal (imin(ident(5)); 5,5,5,5,4);
fail += !equal (max(magic(6)); 35,36,34,26,27,25);
fail += test (min(ident(5)));
fail += max(ident(5)) != 1.0;

if ( fail ) {
    printf( "...failed.\a\n" );
    exception();
else
    printf( "...passed.\n" );
}


syntax highlighted by Code2HTML, v. 0.9.1