// section 6.5.6
void f(){
	int n=4, m=3;
	int a[n][m];
	int (*p)[m] = a;
	p += 1;
	(*p)[2] = 99;
	n = p - a;
}

// section 6.7.5.3
void g(int n, int m, double a[n][n*m+100]);

double m1(int n, int m, double a[n][m]);
double m2(int n, int m, double a[*][*]);
double m3(int n, int m, double a[][*]);
double m4(int n, int m, double a[][m]);

void f1(double (* restrict a)[5]);
void f2(double a[restrict][5]);
void f3(double a[restrict 3][5]);
void f4(double a[restrict static 3][5]);

