// Test multidimensional sin() and subrange
using namespace oadl;

#include "libstd.oah"

proc sayer(a)
{
    if (a.isarray()) {
        forall (a[i]) {
            if ((i > 0) && !a[i].isarray()) " ";
            sayer(a[i]);
        }
        "\n";
    }
    else {
        say(a);
    }
}

proc main()
{
    var a, b, sa, sb, i, j, k;
    a = new PackFloat(4,4,4);

    for (i = 0; i < 2; i++) {
        j = 0;
            for (k = 0; k < 2; k++) {
                a[i+1,j+1,k+1] = math::PI_4;
            }
    }
    b = a[1:2,1,1:2];
    sa = math::sin(a);
    sb = math::sin(b);
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            for (k = 0; k < 4; k++) {
                if (k > 0) " ";
                say(sa[i][j][k]);
            }
            "\n";
        }
        "\n";
    }
    for (i = 0; i < 2; i++) {
        j = 0;
            for (k = 0; k < 2; k++) {
                if (k > 0) " ";
                say(sb[i][j][k]);
            }
            "\n";
        "\n";
    }
}