function dgen,n,range, $
LOG = log, $
RESOLUTION = res, $
pixel_res = pixels, $
RANGE = krange , $
XRANGE = xrange, $
YRANGE = yrange
if keyword_set(krange) then range=krange
if keyword_set(xrange) eq 0 and keyword_set(yrange) eq 0 $
and keyword_set(range) eq 0 then xrange = 1
if keyword_set(xrange) then begin
r = !x.crange
log = !x.type
pixval = !x.window * !d.x_vsize
if keyword_set(pixels) then n = round((pixval[1]-pixval[0])/pixels+1)
endif
if keyword_set(yrange) then begin
r = !y.crange
log = !y.type
pixval = !y.window * !d.y_vsize
if keyword_set(pixels) then n = round((pixval[1]-pixval[0])/pixels+1)
endif
nr = n_elements(range)
if nr ne 0 then begin
r = range[[0,nr-1]]
if keyword_set(log) then r = alog10(r)
endif
if keyword_set(res) then n = (round(abs((r[1]-r[0])/res)) > 1)+1
if n_elements(n) le 0 then n = 100
if n eq 1 then x = [(r[1]+r[0])/2] $
else x = dindgen(n)*(r[1] - r[0])/(n-1) + r[0]
if keyword_set(log) then x = 10d^x
return, x
end