>>392
#include <stdio.h>
#include <math.h>

double * mmul44(double * am, double * lm, double * rm, int rc)
{
  int i, j, k;
  for(i=0; i<4; i++) for(j=0; j<rc; j++) for(k=0; k<4; k++)
    am[i*rc+j] += lm[k+i*4]*rm[j+k*rc];
  return am;
}

int main()
{
  int i;
  double theta1=1.0, theta2=2.0;
  double cs1=cos(theta1), sn1=sin(theta1), cs2=cos(theta2), sn2=sin(theta2);
  double T[16]={cs1,-sn1,0,0, sn1,cs1,0,0, 0,0,1,0, 0,0,0,1};
  double U[16]={cs2,-sn2,0,1, sn2,cs2,0,0, 0,0,1,0, 0,0,0,1};
  double b[4] ={2,0,0,1}, a[4],tmp[16];
  mmul44(a,mmul44(tmp,T,U,4),b,1);
  printf("a=TUb\n");
  for(i=0; i<4; i++) printf(" %f\n",a[i]);
  return 0;
}