34 { coeffs(pos) = val; }
37 {
return coeffs.get( pos ); }
40 T getValue3D(
float x0,
float x1,
float x2 )
const;
60 template <
class T>
inline
65 const int ndim = coeffs.info().getNDim();
72 for (
int idx=0; idx<ndim; idx++ )
75 res += posproduct * coeffs.getND( coeffiter.
getPos() );
76 }
while ( coeffiter.
next() );
81 template <
class T>
inline
88 pos[0] = p0; pos[1] = p1; pos[2] = p2;
90 return getValue( pos );
93 float p0_2 = p0 * p0;
float p0_3 = p0_2 * p0;
94 float p1_2 = p1 * p1;
float p1_3 = p1_2 * p1;
95 float p2_2 = p2 * p2;
float p2_3 = p2_2 * p2;
97 const float p0p1 = p0 * p1;
98 const float p0p1_2 = p0p1 * p1;
99 const float p0p1_3 = p0p1_2 * p1;
100 const float p0_2p1 = p0_2 * p1;
101 const float p0_2p1_2 = p0_2p1 * p1;
102 const float p0_2p1_3 = p0_2p1_2 * p1;
103 const float p0_3p1 = p0_3 * p1;
104 const float p0_3p1_2 = p0_3p1 * p1;
105 const float p0_3p1_3 = p0_3p1_2 * p1;
107 const T* ptr = coeffs.getData();
121 ptr[10] * p1_2 * p2_2 +
122 ptr[11] * p1_2 * p2_3 +
125 ptr[13] * p1_3 * p2 +
126 ptr[14] * p1_3 * p2_2 +
127 ptr[15] * p1_3 * p2_3 +
132 ptr[18] * p0 * p2_2 +
133 ptr[19] * p0 * p2_3 +
136 ptr[21] * p0p1 * p2 +
137 ptr[22] * p0p1 * p2_2 +
138 ptr[23] * p0p1 * p2_3 +
141 ptr[25] * p0p1_2 * p2 +
142 ptr[26] * p0p1_2 * p2_2 +
143 ptr[27] * p0p1_2 * p2_3 +
146 ptr[29] * p0p1_3 * p2 +
147 ptr[30] * p0p1_3 * p2_2 +
148 ptr[31] * p0p1_3 * p2_3 +
152 ptr[33] * p0_2 * p2 +
153 ptr[34] * p0_2 * p2_2 +
154 ptr[35] * p0_2 * p2_3 +
157 ptr[37] * p0_2p1 * p2 +
158 ptr[38] * p0_2p1 * p2_2 +
159 ptr[39] * p0_2p1 * p2_3 +
162 ptr[41] * p0_2p1_2 * p2 +
163 ptr[42] * p0_2p1_2 * p2_2 +
164 ptr[43] * p0_2p1_2 * p2_3 +
167 ptr[45] * p0_2p1_3 * p2 +
168 ptr[46] * p0_2p1_3 * p2_2 +
169 ptr[47] * p0_2p1_3 * p2_3 +
174 ptr[49] * p0_3 * p2 +
175 ptr[50] * p0_3 * p2_2 +
176 ptr[51] * p0_3 * p2_3 +
179 ptr[53] * p0_3p1 * p2 +
180 ptr[54] * p0_3p1 * p2_2 +
181 ptr[55] * p0_3p1 * p2_3 +
184 ptr[57] * p0_3p1_2 * p2 +
185 ptr[58] * p0_3p1_2 * p2_2 +
186 ptr[59] * p0_3p1_2 * p2_3 +
189 ptr[61] * p0_3p1_3 * p2 +
190 ptr[62] * p0_3p1_3 * p2_2 +
191 ptr[63] * p0_3p1_3 * p2_3;
202 if ( !solver || solver->size() != totalsz )
204 if ( solver )
delete solver;
219 for (
int idx=0; idx<ndim; idx++ )
222 poscoeffs.
set( row, col, (T)coeff );
224 }
while ( powiter.
next() );
227 }
while ( positer.
next() );
230 if ( !solver->init() )
234 solver->apply( input.
getData(), coeffs.getData() );