c can.f Analog to Digital Convertor c IRCOM Group - A. Layec c REVISION HISTORY : c $Log$ c subroutine can(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec, & rpar,nrpar,ipar,nipar,u,nu,y,ny) double precision t,xd(*),x(*),z(*),tvec(*),rpar(*),u(*),y(*) integer flag,nevprt,nx,nz,ntvec,nrpar,ipar(*) integer nipar,nu,ny integer i,j double precision fsr do 15 i=1,nu y(i)=ANINT(u(i)) c qztrn.f if(ipar(i).eq.1)then if (u(i).lt.0.0d0)then y(i)=rpar(i)*(ANINT(u(i)/rpar(i)+0.5d0)) else y(i)=rpar(i)*(ANINT(u(i)/rpar(i)-0.5d0)) endif elseif(ipar(i).eq.2)then c qzrnd.f if (u(i).lt.0.0d0)then y(i)=rpar(i)*(ANINT(u(i)/rpar(i)+0.5d0)-0.5d0) else y(i)=rpar(i)*(ANINT(u(i)/rpar(i)-0.5d0)+0.5d0) endif elseif(ipar(i).eq.3) then c qzflr.f y(i)=rpar(i)*ANINT(u(i)/rpar(i)+0.5d0) elseif(ipar(i).eq.4) then c qzcel.f y(i)=rpar(i)*ANINT(u(i)/rpar(i)-0.5d0) endif 15 continue do 20 i=1,nu fsr=(2**ipar(i+nu))*rpar(i) if(y(i).lt.rpar(nu+i)) then y(i)=rpar(nu+i) elseif(y(i).gt.(rpar(nu+i)+fsr))then y(i)=rpar(nu+i)+fsr endif c write(6,'(''F: y(i)='',e10.3)') y(i) c write(6,'(''F: fsr='',e10.3,'' ipar(i+nu)='',i1)') fsr,ipar(i+nu) c write(6,'(''F: rpar(nu+i)+fsr='',e10.3)') rpar(nu+i)+fsr 20 continue do 30 i=1,nu y(i)=aint( (y(i)-rpar(nu+i))/rpar(i)) ! y(i)=(y(i)-rpar(nu+i))/rpar(i) write(6,'(''F: s= '',i3)') 2**(ipar(i+nu)-1) if(ipar(2*nu+i).eq.1)then y(i)=y(i)-(2**(ipar(i+nu)-1)) endif 30 continue end