program mill2mat real mat(3,3),pqr(3) integer uvw(3),hkl(3) real rnorm1,rnorm2,ruvw(3),rhkl(3) write(*,*) 'Enter [U V W] as integers' read(*,*) uvw write(*,*) 'Enter (H K L) as integers' read(*,*) hkl rnorm1=0. rnorm2=0. do 10, i=1,3 ruvw(i)=uvw(i) rnorm1=rnorm1+ruvw(i)**2 rhkl(i)=hkl(i) rnorm2=rnorm2+rhkl(i)**2 10 continue c scalar=0. do 15, i=1,3 scalar=scalar+ruvw(i)*rhkl(i) 15 continue write(*,*) 'Check: scalar product = ',scalar write(*,*) 'If not =zero, then try again!' if(abs(scalar).gt.1e-5) stop c rnorm1=sqrt(rnorm1) rnorm2=sqrt(rnorm2) do 20, i=1,3 ruvw(i)=ruvw(i)/rnorm1 rhkl(i)=rhkl(i)/rnorm2 20 continue c pqr(1)=rhkl(2)*ruvw(3)-rhkl(3)*ruvw(2) pqr(2)=rhkl(3)*ruvw(1)-rhkl(1)*ruvw(3) pqr(3)=rhkl(1)*ruvw(2)-rhkl(2)*ruvw(1) c do 30, i=1,3 mat(1,i)=ruvw(i) mat(3,i)=rhkl(i) mat(2,i)=pqr(i) 30 continue c write(*,*) 'Active Rotation matrix: ' do 40, i=1,3 write(*,35) (mat(i,j),j=1,3) 35 format(3x,3f10.3) 40 continue c write(*,*) 'Passive Rotation matrix: ' do 50, i=1,3 write(*,45) (mat(j,i),j=1,3) 45 format(3x,3f10.3) 50 continue c write(*,*) 'finished!' call exit end