85 
provided that X*Y, X/Y, X+Y, XY are already supported. 
provided that X*Y, X/Y, X+Y, XY are already supported. 
86 
Nearly every Diderot program would be simplified by this. 
Nearly every Diderot program would be simplified by this. 
87 


88 
Want: nontrivial field expressions & functions: 
[GLK:5] Want: nontrivial field expressions & functions: 
89 
image(2)[2] Vimg = load(...); 
image(2)[2] Vimg = load(...); 
90 
field#0(2)[] Vlen = Vimg ⊛ bspln3; 
field#0(2)[] Vlen = Vimg ⊛ bspln3; 
91 
to get a scalar field of vector length, or 
to get a scalar field of vector length, or 
112 
other MEDIUM TERM ============ (needed for particles) 
other MEDIUM TERM ============ (needed for particles) 
113 
============================== 
============================== 
114 



[GLK:5] runtime death of strands; test/iso2d.diderot provides 


great initial test for "die" command. 




115 
Put small 1D and 2D fields, when reconstructed specifically by tent 
Put small 1D and 2D fields, when reconstructed specifically by tent 
116 
and when differentiation is not needed, into faster texture buffers. 
and when differentiation is not needed, into faster texture buffers. 
117 
test/illustvr.diderot is good example of program that uses multiple 
test/illustvr.diderot is good example of program that uses multiple 
151 


152 
Python/ctypes interface to runtime 
Python/ctypes interface to runtime 
153 


154 

Allow the convolution to be specified either as a single 1D kernel 
155 

(as we have it now): 
156 

field#2(3)[] F = bspln3 ⊛ img; 
157 

or, as a tensor product of kernels, one for each axis, e.g. 
158 

field#0(3)[] F = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; 
159 

This is especially important for things like timevarying data, or 
160 

other multidimensional fields where one axis of the domain is very 
161 

different from the rest. What is very unclear is how, in such cases, 
162 

we should notate the gradient, when we only want to differentiate with 
163 

respect to some of the axes. 
164 


165 
============================== 
============================== 
166 
LONG TERM ==================== 
LONG TERM ==================== 
167 
============================== 
============================== 
189 
BUGS ================= 
BUGS ================= 
190 
====================== 
====================== 
191 



test/read2vecs.diderot: 


// HEY (BUG?) shouldn't it be a type error to load this 2D array of 


// 2vectors into a 2D *scalar* field? Instead, get: 


// uncaught exception Fail [Fail: Error in compiling lic.diderot] 


// raised at driver/main.sml:31.3931.76 


image(2)[] Vimg = load("../data/vorttest.nrrd"); 




192 
test/zslice2.diderot: 
test/zslice2.diderot: 
193 
// HEY (bug) bspln5 leads to problems ... 
// HEY (bug) bspln5 leads to problems ... 
194 
// uncaught exception Size [size] 
// uncaught exception Size [size] 