c subroutine nicer(xmin,xmax,nomaj,nomin,fmt,nfmt) character*10 fmt real*4 xmin,xmax,dx,scale,ceil,floor integer iscale,nomin,nomaj,nfmt,il,ir if(xmax.eq.xmin)xmax=xmin+1.0e-8 dx=(xmax-xmin)/10 iscale=-floor(alog10(dx)) scale=10.0**(iscale) dx=ceil(dx*scale) if(dx.ge.3.and.dx.le.5) dx=5 if(dx.ge.6.and.dx.le.9) dx=10 nomin=dx if(nomin.gt.5) nomin=1 dx=dx/scale xmin=floor(xmin/dx)*dx xmax=ceil(xmax/dx)*dx nomaj=nint((xmax-xmin)/dx) il=ceil(alog10(max(abs(xmin),abs(xmax)))) ir=iscale if(abs(il).le.3) then c nfmt=max(1,il)+2+max(0,ir) nfmt=max(1,il)+3+max(0,ir) write(fmt,'(a,i2,a,i2,a)') 1 '(f', 2 nfmt, 3 '.', 4 max(0,ir), 5 ')' else nfmt=il+8+ir write(fmt,'(a,i2,a,i2,a)') 1 '(1pe', 2 nfmt, 3 '.', 4 il+ir, 5 ')' endif return end