proc main()
{
var lscl = 16;
var lvec = [16].reshape(4);
var lmat = [16].reshape(4,4);
var scl = 15;
var vec = [0,7,15,15];
var mat = [16,16,16,16].encode([511,1023,2047,4095]);
"scl dec scl:\n", lscl.decode(scl), '\n';
"\nvec dec scl:\n", lvec.decode(scl), '\n';
"\nmat dec scl:\n", lmat.decode(scl), '\n';
"\nscl dec vec:\n", lscl.decode(vec), '\n';
"\nvec dec vec:\n", lvec.decode(vec), '\n';
"\nmat dec vec:\n", lmat.decode(vec), '\n';
"\nscl dec mat:\n", lscl.decode(mat), '\n';
"\nvec dec mat:\n", lvec.decode(mat), '\n';
"\nmat dec mat:\n", lmat.decode(mat), '\n';
"\nexample 1 (3269):\n", 10 .decode([3,2,6,9]), '\n';
"\nexample 2 (25):\n", 8 .decode([3,1]), '\n';
"\nexample 3 (68):\n", [1760,3,12].decode([1,2,8]), '\n';
"\nexample 4 (7):\n", [2,2,2].decode(1), '\n';
"\nexample 5 (2667):\n", [0,20,12,4].decode([2,15,6,3]), '\n';
"\nexample 6 (60 37 80):\n",
[1760,3,12].decode([[1,1,1],[2,0,3],[0,1,8]]), '\n';
}