~ubuntu-branches/ubuntu/raring/ffc/raring

« back to all changes in this revision

Viewing changes to test/regression/references/r_quadrature/RestrictedElement.h

  • Committer: Package Import Robot
  • Author(s): Johannes Ring
  • Date: 2011-10-26 17:52:20 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20111026175220-ope1dzqv4jn2b8pq
Tags: 1.0-beta2-1
* New upstream release. This release includes some performance
  improvements for evaluating basis functions. It also adds support
  for Bessel functions and error functions.
* debian/control: Bump version numbers for python-ufc, python-fiat,
  python-instant, and python-ufl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// This code conforms with the UFC specification version 2.0.0
2
 
// and was automatically generated by FFC version 0.9.10.
 
1
// This code conforms with the UFC specification version 2.0.2
 
2
// and was automatically generated by FFC version 1.0-beta+.
3
3
// 
4
4
// This code was generated with the following parameters:
5
5
// 
130
130
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
131
131
      
132
132
      // Declare helper variables.
133
 
      unsigned int rr = 0;
134
 
      unsigned int ss = 0;
135
 
      unsigned int tt = 0;
136
 
      double tmp5 = 0.0;
137
 
      double tmp6 = 0.0;
138
 
      double tmp7 = 0.0;
139
133
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
140
134
      double tmp1 = (1.0 - Y)/2.0;
141
135
      double tmp2 = tmp1*tmp1;
143
137
      // Compute basisvalues.
144
138
      basisvalues[0] = 1.0;
145
139
      basisvalues[1] = tmp0;
146
 
      for (unsigned int r = 1; r < 4; r++)
147
 
      {
148
 
        rr = (r + 1)*((r + 1) + 1)/2;
149
 
        ss = r*(r + 1)/2;
150
 
        tt = (r - 1)*((r - 1) + 1)/2;
151
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
152
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
153
 
      }// end loop over 'r'
154
 
      for (unsigned int r = 0; r < 4; r++)
155
 
      {
156
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
157
 
        ss = r*(r + 1)/2;
158
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
159
 
      }// end loop over 'r'
160
 
      for (unsigned int r = 0; r < 3; r++)
161
 
      {
162
 
        for (unsigned int s = 1; s < 4 - r; s++)
163
 
        {
164
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
165
 
          ss = (r + s)*(r + s + 1)/2 + s;
166
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
167
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
168
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
169
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
170
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
171
 
        }// end loop over 's'
172
 
      }// end loop over 'r'
173
 
      for (unsigned int r = 0; r < 5; r++)
174
 
      {
175
 
        for (unsigned int s = 0; s < 5 - r; s++)
176
 
        {
177
 
          rr = (r + s)*(r + s + 1)/2 + s;
178
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
179
 
        }// end loop over 's'
180
 
      }// end loop over 'r'
 
140
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
141
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
142
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
143
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
144
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
145
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
146
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
147
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
148
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
149
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
150
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
151
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
152
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
153
      basisvalues[0] *= std::sqrt(0.5);
 
154
      basisvalues[2] *= std::sqrt(1.0);
 
155
      basisvalues[5] *= std::sqrt(1.5);
 
156
      basisvalues[9] *= std::sqrt(2.0);
 
157
      basisvalues[14] *= std::sqrt(2.5);
 
158
      basisvalues[1] *= std::sqrt(3.0);
 
159
      basisvalues[4] *= std::sqrt(4.5);
 
160
      basisvalues[8] *= std::sqrt(6.0);
 
161
      basisvalues[13] *= std::sqrt(7.5);
 
162
      basisvalues[3] *= std::sqrt(7.5);
 
163
      basisvalues[7] *= std::sqrt(10.0);
 
164
      basisvalues[12] *= std::sqrt(12.5);
 
165
      basisvalues[6] *= std::sqrt(14.0);
 
166
      basisvalues[11] *= std::sqrt(17.5);
 
167
      basisvalues[10] *= std::sqrt(22.5);
181
168
      
182
169
      // Table(s) of coefficients.
183
170
      static const double coefficients0[15] = \
197
184
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
198
185
      
199
186
      // Declare helper variables.
200
 
      unsigned int rr = 0;
201
 
      unsigned int ss = 0;
202
 
      unsigned int tt = 0;
203
 
      double tmp5 = 0.0;
204
 
      double tmp6 = 0.0;
205
 
      double tmp7 = 0.0;
206
187
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
207
188
      double tmp1 = (1.0 - Y)/2.0;
208
189
      double tmp2 = tmp1*tmp1;
210
191
      // Compute basisvalues.
211
192
      basisvalues[0] = 1.0;
212
193
      basisvalues[1] = tmp0;
213
 
      for (unsigned int r = 1; r < 4; r++)
214
 
      {
215
 
        rr = (r + 1)*((r + 1) + 1)/2;
216
 
        ss = r*(r + 1)/2;
217
 
        tt = (r - 1)*((r - 1) + 1)/2;
218
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
219
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
220
 
      }// end loop over 'r'
221
 
      for (unsigned int r = 0; r < 4; r++)
222
 
      {
223
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
224
 
        ss = r*(r + 1)/2;
225
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
226
 
      }// end loop over 'r'
227
 
      for (unsigned int r = 0; r < 3; r++)
228
 
      {
229
 
        for (unsigned int s = 1; s < 4 - r; s++)
230
 
        {
231
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
232
 
          ss = (r + s)*(r + s + 1)/2 + s;
233
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
234
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
235
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
236
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
237
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
238
 
        }// end loop over 's'
239
 
      }// end loop over 'r'
240
 
      for (unsigned int r = 0; r < 5; r++)
241
 
      {
242
 
        for (unsigned int s = 0; s < 5 - r; s++)
243
 
        {
244
 
          rr = (r + s)*(r + s + 1)/2 + s;
245
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
246
 
        }// end loop over 's'
247
 
      }// end loop over 'r'
 
194
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
195
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
196
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
197
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
198
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
199
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
200
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
201
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
202
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
203
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
204
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
205
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
206
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
207
      basisvalues[0] *= std::sqrt(0.5);
 
208
      basisvalues[2] *= std::sqrt(1.0);
 
209
      basisvalues[5] *= std::sqrt(1.5);
 
210
      basisvalues[9] *= std::sqrt(2.0);
 
211
      basisvalues[14] *= std::sqrt(2.5);
 
212
      basisvalues[1] *= std::sqrt(3.0);
 
213
      basisvalues[4] *= std::sqrt(4.5);
 
214
      basisvalues[8] *= std::sqrt(6.0);
 
215
      basisvalues[13] *= std::sqrt(7.5);
 
216
      basisvalues[3] *= std::sqrt(7.5);
 
217
      basisvalues[7] *= std::sqrt(10.0);
 
218
      basisvalues[12] *= std::sqrt(12.5);
 
219
      basisvalues[6] *= std::sqrt(14.0);
 
220
      basisvalues[11] *= std::sqrt(17.5);
 
221
      basisvalues[10] *= std::sqrt(22.5);
248
222
      
249
223
      // Table(s) of coefficients.
250
224
      static const double coefficients0[15] = \
264
238
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
265
239
      
266
240
      // Declare helper variables.
267
 
      unsigned int rr = 0;
268
 
      unsigned int ss = 0;
269
 
      unsigned int tt = 0;
270
 
      double tmp5 = 0.0;
271
 
      double tmp6 = 0.0;
272
 
      double tmp7 = 0.0;
273
241
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
274
242
      double tmp1 = (1.0 - Y)/2.0;
275
243
      double tmp2 = tmp1*tmp1;
277
245
      // Compute basisvalues.
278
246
      basisvalues[0] = 1.0;
279
247
      basisvalues[1] = tmp0;
280
 
      for (unsigned int r = 1; r < 4; r++)
281
 
      {
282
 
        rr = (r + 1)*((r + 1) + 1)/2;
283
 
        ss = r*(r + 1)/2;
284
 
        tt = (r - 1)*((r - 1) + 1)/2;
285
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
286
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
287
 
      }// end loop over 'r'
288
 
      for (unsigned int r = 0; r < 4; r++)
289
 
      {
290
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
291
 
        ss = r*(r + 1)/2;
292
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
293
 
      }// end loop over 'r'
294
 
      for (unsigned int r = 0; r < 3; r++)
295
 
      {
296
 
        for (unsigned int s = 1; s < 4 - r; s++)
297
 
        {
298
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
299
 
          ss = (r + s)*(r + s + 1)/2 + s;
300
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
301
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
302
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
303
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
304
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
305
 
        }// end loop over 's'
306
 
      }// end loop over 'r'
307
 
      for (unsigned int r = 0; r < 5; r++)
308
 
      {
309
 
        for (unsigned int s = 0; s < 5 - r; s++)
310
 
        {
311
 
          rr = (r + s)*(r + s + 1)/2 + s;
312
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
313
 
        }// end loop over 's'
314
 
      }// end loop over 'r'
 
248
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
249
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
250
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
251
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
252
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
253
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
254
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
255
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
256
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
257
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
258
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
259
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
260
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
261
      basisvalues[0] *= std::sqrt(0.5);
 
262
      basisvalues[2] *= std::sqrt(1.0);
 
263
      basisvalues[5] *= std::sqrt(1.5);
 
264
      basisvalues[9] *= std::sqrt(2.0);
 
265
      basisvalues[14] *= std::sqrt(2.5);
 
266
      basisvalues[1] *= std::sqrt(3.0);
 
267
      basisvalues[4] *= std::sqrt(4.5);
 
268
      basisvalues[8] *= std::sqrt(6.0);
 
269
      basisvalues[13] *= std::sqrt(7.5);
 
270
      basisvalues[3] *= std::sqrt(7.5);
 
271
      basisvalues[7] *= std::sqrt(10.0);
 
272
      basisvalues[12] *= std::sqrt(12.5);
 
273
      basisvalues[6] *= std::sqrt(14.0);
 
274
      basisvalues[11] *= std::sqrt(17.5);
 
275
      basisvalues[10] *= std::sqrt(22.5);
315
276
      
316
277
      // Table(s) of coefficients.
317
278
      static const double coefficients0[15] = \
331
292
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
332
293
      
333
294
      // Declare helper variables.
334
 
      unsigned int rr = 0;
335
 
      unsigned int ss = 0;
336
 
      unsigned int tt = 0;
337
 
      double tmp5 = 0.0;
338
 
      double tmp6 = 0.0;
339
 
      double tmp7 = 0.0;
340
295
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
341
296
      double tmp1 = (1.0 - Y)/2.0;
342
297
      double tmp2 = tmp1*tmp1;
344
299
      // Compute basisvalues.
345
300
      basisvalues[0] = 1.0;
346
301
      basisvalues[1] = tmp0;
347
 
      for (unsigned int r = 1; r < 4; r++)
348
 
      {
349
 
        rr = (r + 1)*((r + 1) + 1)/2;
350
 
        ss = r*(r + 1)/2;
351
 
        tt = (r - 1)*((r - 1) + 1)/2;
352
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
353
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
354
 
      }// end loop over 'r'
355
 
      for (unsigned int r = 0; r < 4; r++)
356
 
      {
357
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
358
 
        ss = r*(r + 1)/2;
359
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
360
 
      }// end loop over 'r'
361
 
      for (unsigned int r = 0; r < 3; r++)
362
 
      {
363
 
        for (unsigned int s = 1; s < 4 - r; s++)
364
 
        {
365
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
366
 
          ss = (r + s)*(r + s + 1)/2 + s;
367
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
368
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
369
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
370
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
371
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
372
 
        }// end loop over 's'
373
 
      }// end loop over 'r'
374
 
      for (unsigned int r = 0; r < 5; r++)
375
 
      {
376
 
        for (unsigned int s = 0; s < 5 - r; s++)
377
 
        {
378
 
          rr = (r + s)*(r + s + 1)/2 + s;
379
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
380
 
        }// end loop over 's'
381
 
      }// end loop over 'r'
 
302
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
303
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
304
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
305
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
306
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
307
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
308
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
309
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
310
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
311
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
312
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
313
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
314
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
315
      basisvalues[0] *= std::sqrt(0.5);
 
316
      basisvalues[2] *= std::sqrt(1.0);
 
317
      basisvalues[5] *= std::sqrt(1.5);
 
318
      basisvalues[9] *= std::sqrt(2.0);
 
319
      basisvalues[14] *= std::sqrt(2.5);
 
320
      basisvalues[1] *= std::sqrt(3.0);
 
321
      basisvalues[4] *= std::sqrt(4.5);
 
322
      basisvalues[8] *= std::sqrt(6.0);
 
323
      basisvalues[13] *= std::sqrt(7.5);
 
324
      basisvalues[3] *= std::sqrt(7.5);
 
325
      basisvalues[7] *= std::sqrt(10.0);
 
326
      basisvalues[12] *= std::sqrt(12.5);
 
327
      basisvalues[6] *= std::sqrt(14.0);
 
328
      basisvalues[11] *= std::sqrt(17.5);
 
329
      basisvalues[10] *= std::sqrt(22.5);
382
330
      
383
331
      // Table(s) of coefficients.
384
332
      static const double coefficients0[15] = \
398
346
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
399
347
      
400
348
      // Declare helper variables.
401
 
      unsigned int rr = 0;
402
 
      unsigned int ss = 0;
403
 
      unsigned int tt = 0;
404
 
      double tmp5 = 0.0;
405
 
      double tmp6 = 0.0;
406
 
      double tmp7 = 0.0;
407
349
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
408
350
      double tmp1 = (1.0 - Y)/2.0;
409
351
      double tmp2 = tmp1*tmp1;
411
353
      // Compute basisvalues.
412
354
      basisvalues[0] = 1.0;
413
355
      basisvalues[1] = tmp0;
414
 
      for (unsigned int r = 1; r < 4; r++)
415
 
      {
416
 
        rr = (r + 1)*((r + 1) + 1)/2;
417
 
        ss = r*(r + 1)/2;
418
 
        tt = (r - 1)*((r - 1) + 1)/2;
419
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
420
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
421
 
      }// end loop over 'r'
422
 
      for (unsigned int r = 0; r < 4; r++)
423
 
      {
424
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
425
 
        ss = r*(r + 1)/2;
426
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
427
 
      }// end loop over 'r'
428
 
      for (unsigned int r = 0; r < 3; r++)
429
 
      {
430
 
        for (unsigned int s = 1; s < 4 - r; s++)
431
 
        {
432
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
433
 
          ss = (r + s)*(r + s + 1)/2 + s;
434
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
435
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
436
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
437
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
438
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
439
 
        }// end loop over 's'
440
 
      }// end loop over 'r'
441
 
      for (unsigned int r = 0; r < 5; r++)
442
 
      {
443
 
        for (unsigned int s = 0; s < 5 - r; s++)
444
 
        {
445
 
          rr = (r + s)*(r + s + 1)/2 + s;
446
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
447
 
        }// end loop over 's'
448
 
      }// end loop over 'r'
 
356
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
357
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
358
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
359
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
360
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
361
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
362
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
363
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
364
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
365
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
366
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
367
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
368
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
369
      basisvalues[0] *= std::sqrt(0.5);
 
370
      basisvalues[2] *= std::sqrt(1.0);
 
371
      basisvalues[5] *= std::sqrt(1.5);
 
372
      basisvalues[9] *= std::sqrt(2.0);
 
373
      basisvalues[14] *= std::sqrt(2.5);
 
374
      basisvalues[1] *= std::sqrt(3.0);
 
375
      basisvalues[4] *= std::sqrt(4.5);
 
376
      basisvalues[8] *= std::sqrt(6.0);
 
377
      basisvalues[13] *= std::sqrt(7.5);
 
378
      basisvalues[3] *= std::sqrt(7.5);
 
379
      basisvalues[7] *= std::sqrt(10.0);
 
380
      basisvalues[12] *= std::sqrt(12.5);
 
381
      basisvalues[6] *= std::sqrt(14.0);
 
382
      basisvalues[11] *= std::sqrt(17.5);
 
383
      basisvalues[10] *= std::sqrt(22.5);
449
384
      
450
385
      // Table(s) of coefficients.
451
386
      static const double coefficients0[15] = \
465
400
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
466
401
      
467
402
      // Declare helper variables.
468
 
      unsigned int rr = 0;
469
 
      unsigned int ss = 0;
470
 
      unsigned int tt = 0;
471
 
      double tmp5 = 0.0;
472
 
      double tmp6 = 0.0;
473
 
      double tmp7 = 0.0;
474
403
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
475
404
      double tmp1 = (1.0 - Y)/2.0;
476
405
      double tmp2 = tmp1*tmp1;
478
407
      // Compute basisvalues.
479
408
      basisvalues[0] = 1.0;
480
409
      basisvalues[1] = tmp0;
481
 
      for (unsigned int r = 1; r < 4; r++)
482
 
      {
483
 
        rr = (r + 1)*((r + 1) + 1)/2;
484
 
        ss = r*(r + 1)/2;
485
 
        tt = (r - 1)*((r - 1) + 1)/2;
486
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
487
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
488
 
      }// end loop over 'r'
489
 
      for (unsigned int r = 0; r < 4; r++)
490
 
      {
491
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
492
 
        ss = r*(r + 1)/2;
493
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
494
 
      }// end loop over 'r'
495
 
      for (unsigned int r = 0; r < 3; r++)
496
 
      {
497
 
        for (unsigned int s = 1; s < 4 - r; s++)
498
 
        {
499
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
500
 
          ss = (r + s)*(r + s + 1)/2 + s;
501
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
502
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
503
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
504
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
505
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
506
 
        }// end loop over 's'
507
 
      }// end loop over 'r'
508
 
      for (unsigned int r = 0; r < 5; r++)
509
 
      {
510
 
        for (unsigned int s = 0; s < 5 - r; s++)
511
 
        {
512
 
          rr = (r + s)*(r + s + 1)/2 + s;
513
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
514
 
        }// end loop over 's'
515
 
      }// end loop over 'r'
 
410
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
411
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
412
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
413
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
414
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
415
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
416
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
417
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
418
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
419
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
420
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
421
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
422
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
423
      basisvalues[0] *= std::sqrt(0.5);
 
424
      basisvalues[2] *= std::sqrt(1.0);
 
425
      basisvalues[5] *= std::sqrt(1.5);
 
426
      basisvalues[9] *= std::sqrt(2.0);
 
427
      basisvalues[14] *= std::sqrt(2.5);
 
428
      basisvalues[1] *= std::sqrt(3.0);
 
429
      basisvalues[4] *= std::sqrt(4.5);
 
430
      basisvalues[8] *= std::sqrt(6.0);
 
431
      basisvalues[13] *= std::sqrt(7.5);
 
432
      basisvalues[3] *= std::sqrt(7.5);
 
433
      basisvalues[7] *= std::sqrt(10.0);
 
434
      basisvalues[12] *= std::sqrt(12.5);
 
435
      basisvalues[6] *= std::sqrt(14.0);
 
436
      basisvalues[11] *= std::sqrt(17.5);
 
437
      basisvalues[10] *= std::sqrt(22.5);
516
438
      
517
439
      // Table(s) of coefficients.
518
440
      static const double coefficients0[15] = \
532
454
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
533
455
      
534
456
      // Declare helper variables.
535
 
      unsigned int rr = 0;
536
 
      unsigned int ss = 0;
537
 
      unsigned int tt = 0;
538
 
      double tmp5 = 0.0;
539
 
      double tmp6 = 0.0;
540
 
      double tmp7 = 0.0;
541
457
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
542
458
      double tmp1 = (1.0 - Y)/2.0;
543
459
      double tmp2 = tmp1*tmp1;
545
461
      // Compute basisvalues.
546
462
      basisvalues[0] = 1.0;
547
463
      basisvalues[1] = tmp0;
548
 
      for (unsigned int r = 1; r < 4; r++)
549
 
      {
550
 
        rr = (r + 1)*((r + 1) + 1)/2;
551
 
        ss = r*(r + 1)/2;
552
 
        tt = (r - 1)*((r - 1) + 1)/2;
553
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
554
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
555
 
      }// end loop over 'r'
556
 
      for (unsigned int r = 0; r < 4; r++)
557
 
      {
558
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
559
 
        ss = r*(r + 1)/2;
560
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
561
 
      }// end loop over 'r'
562
 
      for (unsigned int r = 0; r < 3; r++)
563
 
      {
564
 
        for (unsigned int s = 1; s < 4 - r; s++)
565
 
        {
566
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
567
 
          ss = (r + s)*(r + s + 1)/2 + s;
568
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
569
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
570
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
571
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
572
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
573
 
        }// end loop over 's'
574
 
      }// end loop over 'r'
575
 
      for (unsigned int r = 0; r < 5; r++)
576
 
      {
577
 
        for (unsigned int s = 0; s < 5 - r; s++)
578
 
        {
579
 
          rr = (r + s)*(r + s + 1)/2 + s;
580
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
581
 
        }// end loop over 's'
582
 
      }// end loop over 'r'
 
464
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
465
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
466
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
467
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
468
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
469
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
470
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
471
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
472
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
473
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
474
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
475
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
476
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
477
      basisvalues[0] *= std::sqrt(0.5);
 
478
      basisvalues[2] *= std::sqrt(1.0);
 
479
      basisvalues[5] *= std::sqrt(1.5);
 
480
      basisvalues[9] *= std::sqrt(2.0);
 
481
      basisvalues[14] *= std::sqrt(2.5);
 
482
      basisvalues[1] *= std::sqrt(3.0);
 
483
      basisvalues[4] *= std::sqrt(4.5);
 
484
      basisvalues[8] *= std::sqrt(6.0);
 
485
      basisvalues[13] *= std::sqrt(7.5);
 
486
      basisvalues[3] *= std::sqrt(7.5);
 
487
      basisvalues[7] *= std::sqrt(10.0);
 
488
      basisvalues[12] *= std::sqrt(12.5);
 
489
      basisvalues[6] *= std::sqrt(14.0);
 
490
      basisvalues[11] *= std::sqrt(17.5);
 
491
      basisvalues[10] *= std::sqrt(22.5);
583
492
      
584
493
      // Table(s) of coefficients.
585
494
      static const double coefficients0[15] = \
599
508
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
600
509
      
601
510
      // Declare helper variables.
602
 
      unsigned int rr = 0;
603
 
      unsigned int ss = 0;
604
 
      unsigned int tt = 0;
605
 
      double tmp5 = 0.0;
606
 
      double tmp6 = 0.0;
607
 
      double tmp7 = 0.0;
608
511
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
609
512
      double tmp1 = (1.0 - Y)/2.0;
610
513
      double tmp2 = tmp1*tmp1;
612
515
      // Compute basisvalues.
613
516
      basisvalues[0] = 1.0;
614
517
      basisvalues[1] = tmp0;
615
 
      for (unsigned int r = 1; r < 4; r++)
616
 
      {
617
 
        rr = (r + 1)*((r + 1) + 1)/2;
618
 
        ss = r*(r + 1)/2;
619
 
        tt = (r - 1)*((r - 1) + 1)/2;
620
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
621
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
622
 
      }// end loop over 'r'
623
 
      for (unsigned int r = 0; r < 4; r++)
624
 
      {
625
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
626
 
        ss = r*(r + 1)/2;
627
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
628
 
      }// end loop over 'r'
629
 
      for (unsigned int r = 0; r < 3; r++)
630
 
      {
631
 
        for (unsigned int s = 1; s < 4 - r; s++)
632
 
        {
633
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
634
 
          ss = (r + s)*(r + s + 1)/2 + s;
635
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
636
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
637
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
638
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
639
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
640
 
        }// end loop over 's'
641
 
      }// end loop over 'r'
642
 
      for (unsigned int r = 0; r < 5; r++)
643
 
      {
644
 
        for (unsigned int s = 0; s < 5 - r; s++)
645
 
        {
646
 
          rr = (r + s)*(r + s + 1)/2 + s;
647
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
648
 
        }// end loop over 's'
649
 
      }// end loop over 'r'
 
518
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
519
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
520
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
521
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
522
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
523
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
524
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
525
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
526
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
527
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
528
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
529
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
530
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
531
      basisvalues[0] *= std::sqrt(0.5);
 
532
      basisvalues[2] *= std::sqrt(1.0);
 
533
      basisvalues[5] *= std::sqrt(1.5);
 
534
      basisvalues[9] *= std::sqrt(2.0);
 
535
      basisvalues[14] *= std::sqrt(2.5);
 
536
      basisvalues[1] *= std::sqrt(3.0);
 
537
      basisvalues[4] *= std::sqrt(4.5);
 
538
      basisvalues[8] *= std::sqrt(6.0);
 
539
      basisvalues[13] *= std::sqrt(7.5);
 
540
      basisvalues[3] *= std::sqrt(7.5);
 
541
      basisvalues[7] *= std::sqrt(10.0);
 
542
      basisvalues[12] *= std::sqrt(12.5);
 
543
      basisvalues[6] *= std::sqrt(14.0);
 
544
      basisvalues[11] *= std::sqrt(17.5);
 
545
      basisvalues[10] *= std::sqrt(22.5);
650
546
      
651
547
      // Table(s) of coefficients.
652
548
      static const double coefficients0[15] = \
666
562
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
667
563
      
668
564
      // Declare helper variables.
669
 
      unsigned int rr = 0;
670
 
      unsigned int ss = 0;
671
 
      unsigned int tt = 0;
672
 
      double tmp5 = 0.0;
673
 
      double tmp6 = 0.0;
674
 
      double tmp7 = 0.0;
675
565
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
676
566
      double tmp1 = (1.0 - Y)/2.0;
677
567
      double tmp2 = tmp1*tmp1;
679
569
      // Compute basisvalues.
680
570
      basisvalues[0] = 1.0;
681
571
      basisvalues[1] = tmp0;
682
 
      for (unsigned int r = 1; r < 4; r++)
683
 
      {
684
 
        rr = (r + 1)*((r + 1) + 1)/2;
685
 
        ss = r*(r + 1)/2;
686
 
        tt = (r - 1)*((r - 1) + 1)/2;
687
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
688
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
689
 
      }// end loop over 'r'
690
 
      for (unsigned int r = 0; r < 4; r++)
691
 
      {
692
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
693
 
        ss = r*(r + 1)/2;
694
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
695
 
      }// end loop over 'r'
696
 
      for (unsigned int r = 0; r < 3; r++)
697
 
      {
698
 
        for (unsigned int s = 1; s < 4 - r; s++)
699
 
        {
700
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
701
 
          ss = (r + s)*(r + s + 1)/2 + s;
702
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
703
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
704
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
705
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
706
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
707
 
        }// end loop over 's'
708
 
      }// end loop over 'r'
709
 
      for (unsigned int r = 0; r < 5; r++)
710
 
      {
711
 
        for (unsigned int s = 0; s < 5 - r; s++)
712
 
        {
713
 
          rr = (r + s)*(r + s + 1)/2 + s;
714
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
715
 
        }// end loop over 's'
716
 
      }// end loop over 'r'
 
572
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
573
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
574
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
575
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
576
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
577
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
578
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
579
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
580
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
581
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
582
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
583
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
584
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
585
      basisvalues[0] *= std::sqrt(0.5);
 
586
      basisvalues[2] *= std::sqrt(1.0);
 
587
      basisvalues[5] *= std::sqrt(1.5);
 
588
      basisvalues[9] *= std::sqrt(2.0);
 
589
      basisvalues[14] *= std::sqrt(2.5);
 
590
      basisvalues[1] *= std::sqrt(3.0);
 
591
      basisvalues[4] *= std::sqrt(4.5);
 
592
      basisvalues[8] *= std::sqrt(6.0);
 
593
      basisvalues[13] *= std::sqrt(7.5);
 
594
      basisvalues[3] *= std::sqrt(7.5);
 
595
      basisvalues[7] *= std::sqrt(10.0);
 
596
      basisvalues[12] *= std::sqrt(12.5);
 
597
      basisvalues[6] *= std::sqrt(14.0);
 
598
      basisvalues[11] *= std::sqrt(17.5);
 
599
      basisvalues[10] *= std::sqrt(22.5);
717
600
      
718
601
      // Table(s) of coefficients.
719
602
      static const double coefficients0[15] = \
733
616
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
734
617
      
735
618
      // Declare helper variables.
736
 
      unsigned int rr = 0;
737
 
      unsigned int ss = 0;
738
 
      unsigned int tt = 0;
739
 
      double tmp5 = 0.0;
740
 
      double tmp6 = 0.0;
741
 
      double tmp7 = 0.0;
742
619
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
743
620
      double tmp1 = (1.0 - Y)/2.0;
744
621
      double tmp2 = tmp1*tmp1;
746
623
      // Compute basisvalues.
747
624
      basisvalues[0] = 1.0;
748
625
      basisvalues[1] = tmp0;
749
 
      for (unsigned int r = 1; r < 4; r++)
750
 
      {
751
 
        rr = (r + 1)*((r + 1) + 1)/2;
752
 
        ss = r*(r + 1)/2;
753
 
        tt = (r - 1)*((r - 1) + 1)/2;
754
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
755
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
756
 
      }// end loop over 'r'
757
 
      for (unsigned int r = 0; r < 4; r++)
758
 
      {
759
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
760
 
        ss = r*(r + 1)/2;
761
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
762
 
      }// end loop over 'r'
763
 
      for (unsigned int r = 0; r < 3; r++)
764
 
      {
765
 
        for (unsigned int s = 1; s < 4 - r; s++)
766
 
        {
767
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
768
 
          ss = (r + s)*(r + s + 1)/2 + s;
769
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
770
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
771
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
772
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
773
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
774
 
        }// end loop over 's'
775
 
      }// end loop over 'r'
776
 
      for (unsigned int r = 0; r < 5; r++)
777
 
      {
778
 
        for (unsigned int s = 0; s < 5 - r; s++)
779
 
        {
780
 
          rr = (r + s)*(r + s + 1)/2 + s;
781
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
782
 
        }// end loop over 's'
783
 
      }// end loop over 'r'
 
626
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
627
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
628
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
629
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
630
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
631
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
632
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
633
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
634
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
635
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
636
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
637
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
638
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
639
      basisvalues[0] *= std::sqrt(0.5);
 
640
      basisvalues[2] *= std::sqrt(1.0);
 
641
      basisvalues[5] *= std::sqrt(1.5);
 
642
      basisvalues[9] *= std::sqrt(2.0);
 
643
      basisvalues[14] *= std::sqrt(2.5);
 
644
      basisvalues[1] *= std::sqrt(3.0);
 
645
      basisvalues[4] *= std::sqrt(4.5);
 
646
      basisvalues[8] *= std::sqrt(6.0);
 
647
      basisvalues[13] *= std::sqrt(7.5);
 
648
      basisvalues[3] *= std::sqrt(7.5);
 
649
      basisvalues[7] *= std::sqrt(10.0);
 
650
      basisvalues[12] *= std::sqrt(12.5);
 
651
      basisvalues[6] *= std::sqrt(14.0);
 
652
      basisvalues[11] *= std::sqrt(17.5);
 
653
      basisvalues[10] *= std::sqrt(22.5);
784
654
      
785
655
      // Table(s) of coefficients.
786
656
      static const double coefficients0[15] = \
800
670
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
801
671
      
802
672
      // Declare helper variables.
803
 
      unsigned int rr = 0;
804
 
      unsigned int ss = 0;
805
 
      unsigned int tt = 0;
806
 
      double tmp5 = 0.0;
807
 
      double tmp6 = 0.0;
808
 
      double tmp7 = 0.0;
809
673
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
810
674
      double tmp1 = (1.0 - Y)/2.0;
811
675
      double tmp2 = tmp1*tmp1;
813
677
      // Compute basisvalues.
814
678
      basisvalues[0] = 1.0;
815
679
      basisvalues[1] = tmp0;
816
 
      for (unsigned int r = 1; r < 4; r++)
817
 
      {
818
 
        rr = (r + 1)*((r + 1) + 1)/2;
819
 
        ss = r*(r + 1)/2;
820
 
        tt = (r - 1)*((r - 1) + 1)/2;
821
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
822
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
823
 
      }// end loop over 'r'
824
 
      for (unsigned int r = 0; r < 4; r++)
825
 
      {
826
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
827
 
        ss = r*(r + 1)/2;
828
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
829
 
      }// end loop over 'r'
830
 
      for (unsigned int r = 0; r < 3; r++)
831
 
      {
832
 
        for (unsigned int s = 1; s < 4 - r; s++)
833
 
        {
834
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
835
 
          ss = (r + s)*(r + s + 1)/2 + s;
836
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
837
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
838
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
839
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
840
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
841
 
        }// end loop over 's'
842
 
      }// end loop over 'r'
843
 
      for (unsigned int r = 0; r < 5; r++)
844
 
      {
845
 
        for (unsigned int s = 0; s < 5 - r; s++)
846
 
        {
847
 
          rr = (r + s)*(r + s + 1)/2 + s;
848
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
849
 
        }// end loop over 's'
850
 
      }// end loop over 'r'
 
680
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
681
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
682
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
683
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
684
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
685
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
686
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
687
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
688
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
689
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
690
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
691
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
692
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
693
      basisvalues[0] *= std::sqrt(0.5);
 
694
      basisvalues[2] *= std::sqrt(1.0);
 
695
      basisvalues[5] *= std::sqrt(1.5);
 
696
      basisvalues[9] *= std::sqrt(2.0);
 
697
      basisvalues[14] *= std::sqrt(2.5);
 
698
      basisvalues[1] *= std::sqrt(3.0);
 
699
      basisvalues[4] *= std::sqrt(4.5);
 
700
      basisvalues[8] *= std::sqrt(6.0);
 
701
      basisvalues[13] *= std::sqrt(7.5);
 
702
      basisvalues[3] *= std::sqrt(7.5);
 
703
      basisvalues[7] *= std::sqrt(10.0);
 
704
      basisvalues[12] *= std::sqrt(12.5);
 
705
      basisvalues[6] *= std::sqrt(14.0);
 
706
      basisvalues[11] *= std::sqrt(17.5);
 
707
      basisvalues[10] *= std::sqrt(22.5);
851
708
      
852
709
      // Table(s) of coefficients.
853
710
      static const double coefficients0[15] = \
867
724
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
868
725
      
869
726
      // Declare helper variables.
870
 
      unsigned int rr = 0;
871
 
      unsigned int ss = 0;
872
 
      unsigned int tt = 0;
873
 
      double tmp5 = 0.0;
874
 
      double tmp6 = 0.0;
875
 
      double tmp7 = 0.0;
876
727
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
877
728
      double tmp1 = (1.0 - Y)/2.0;
878
729
      double tmp2 = tmp1*tmp1;
880
731
      // Compute basisvalues.
881
732
      basisvalues[0] = 1.0;
882
733
      basisvalues[1] = tmp0;
883
 
      for (unsigned int r = 1; r < 4; r++)
884
 
      {
885
 
        rr = (r + 1)*((r + 1) + 1)/2;
886
 
        ss = r*(r + 1)/2;
887
 
        tt = (r - 1)*((r - 1) + 1)/2;
888
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
889
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
890
 
      }// end loop over 'r'
891
 
      for (unsigned int r = 0; r < 4; r++)
892
 
      {
893
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
894
 
        ss = r*(r + 1)/2;
895
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
896
 
      }// end loop over 'r'
897
 
      for (unsigned int r = 0; r < 3; r++)
898
 
      {
899
 
        for (unsigned int s = 1; s < 4 - r; s++)
900
 
        {
901
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
902
 
          ss = (r + s)*(r + s + 1)/2 + s;
903
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
904
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
905
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
906
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
907
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
908
 
        }// end loop over 's'
909
 
      }// end loop over 'r'
910
 
      for (unsigned int r = 0; r < 5; r++)
911
 
      {
912
 
        for (unsigned int s = 0; s < 5 - r; s++)
913
 
        {
914
 
          rr = (r + s)*(r + s + 1)/2 + s;
915
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
916
 
        }// end loop over 's'
917
 
      }// end loop over 'r'
 
734
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
735
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
736
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
737
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
738
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
739
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
740
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
741
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
742
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
743
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
744
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
745
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
746
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
747
      basisvalues[0] *= std::sqrt(0.5);
 
748
      basisvalues[2] *= std::sqrt(1.0);
 
749
      basisvalues[5] *= std::sqrt(1.5);
 
750
      basisvalues[9] *= std::sqrt(2.0);
 
751
      basisvalues[14] *= std::sqrt(2.5);
 
752
      basisvalues[1] *= std::sqrt(3.0);
 
753
      basisvalues[4] *= std::sqrt(4.5);
 
754
      basisvalues[8] *= std::sqrt(6.0);
 
755
      basisvalues[13] *= std::sqrt(7.5);
 
756
      basisvalues[3] *= std::sqrt(7.5);
 
757
      basisvalues[7] *= std::sqrt(10.0);
 
758
      basisvalues[12] *= std::sqrt(12.5);
 
759
      basisvalues[6] *= std::sqrt(14.0);
 
760
      basisvalues[11] *= std::sqrt(17.5);
 
761
      basisvalues[10] *= std::sqrt(22.5);
918
762
      
919
763
      // Table(s) of coefficients.
920
764
      static const double coefficients0[15] = \
1053
897
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1054
898
      
1055
899
      // Declare helper variables.
1056
 
      unsigned int rr = 0;
1057
 
      unsigned int ss = 0;
1058
 
      unsigned int tt = 0;
1059
 
      double tmp5 = 0.0;
1060
 
      double tmp6 = 0.0;
1061
 
      double tmp7 = 0.0;
1062
900
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1063
901
      double tmp1 = (1.0 - Y)/2.0;
1064
902
      double tmp2 = tmp1*tmp1;
1066
904
      // Compute basisvalues.
1067
905
      basisvalues[0] = 1.0;
1068
906
      basisvalues[1] = tmp0;
1069
 
      for (unsigned int r = 1; r < 4; r++)
1070
 
      {
1071
 
        rr = (r + 1)*((r + 1) + 1)/2;
1072
 
        ss = r*(r + 1)/2;
1073
 
        tt = (r - 1)*((r - 1) + 1)/2;
1074
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1075
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1076
 
      }// end loop over 'r'
1077
 
      for (unsigned int r = 0; r < 4; r++)
1078
 
      {
1079
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1080
 
        ss = r*(r + 1)/2;
1081
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1082
 
      }// end loop over 'r'
1083
 
      for (unsigned int r = 0; r < 3; r++)
1084
 
      {
1085
 
        for (unsigned int s = 1; s < 4 - r; s++)
1086
 
        {
1087
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1088
 
          ss = (r + s)*(r + s + 1)/2 + s;
1089
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1090
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1091
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1092
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1093
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1094
 
        }// end loop over 's'
1095
 
      }// end loop over 'r'
1096
 
      for (unsigned int r = 0; r < 5; r++)
1097
 
      {
1098
 
        for (unsigned int s = 0; s < 5 - r; s++)
1099
 
        {
1100
 
          rr = (r + s)*(r + s + 1)/2 + s;
1101
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1102
 
        }// end loop over 's'
1103
 
      }// end loop over 'r'
 
907
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
908
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
909
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
910
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
911
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
912
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
913
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
914
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
915
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
916
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
917
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
918
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
919
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
920
      basisvalues[0] *= std::sqrt(0.5);
 
921
      basisvalues[2] *= std::sqrt(1.0);
 
922
      basisvalues[5] *= std::sqrt(1.5);
 
923
      basisvalues[9] *= std::sqrt(2.0);
 
924
      basisvalues[14] *= std::sqrt(2.5);
 
925
      basisvalues[1] *= std::sqrt(3.0);
 
926
      basisvalues[4] *= std::sqrt(4.5);
 
927
      basisvalues[8] *= std::sqrt(6.0);
 
928
      basisvalues[13] *= std::sqrt(7.5);
 
929
      basisvalues[3] *= std::sqrt(7.5);
 
930
      basisvalues[7] *= std::sqrt(10.0);
 
931
      basisvalues[12] *= std::sqrt(12.5);
 
932
      basisvalues[6] *= std::sqrt(14.0);
 
933
      basisvalues[11] *= std::sqrt(17.5);
 
934
      basisvalues[10] *= std::sqrt(22.5);
1104
935
      
1105
936
      // Table(s) of coefficients.
1106
937
      static const double coefficients0[15] = \
1286
1117
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1287
1118
      
1288
1119
      // Declare helper variables.
1289
 
      unsigned int rr = 0;
1290
 
      unsigned int ss = 0;
1291
 
      unsigned int tt = 0;
1292
 
      double tmp5 = 0.0;
1293
 
      double tmp6 = 0.0;
1294
 
      double tmp7 = 0.0;
1295
1120
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1296
1121
      double tmp1 = (1.0 - Y)/2.0;
1297
1122
      double tmp2 = tmp1*tmp1;
1299
1124
      // Compute basisvalues.
1300
1125
      basisvalues[0] = 1.0;
1301
1126
      basisvalues[1] = tmp0;
1302
 
      for (unsigned int r = 1; r < 4; r++)
1303
 
      {
1304
 
        rr = (r + 1)*((r + 1) + 1)/2;
1305
 
        ss = r*(r + 1)/2;
1306
 
        tt = (r - 1)*((r - 1) + 1)/2;
1307
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1308
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1309
 
      }// end loop over 'r'
1310
 
      for (unsigned int r = 0; r < 4; r++)
1311
 
      {
1312
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1313
 
        ss = r*(r + 1)/2;
1314
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1315
 
      }// end loop over 'r'
1316
 
      for (unsigned int r = 0; r < 3; r++)
1317
 
      {
1318
 
        for (unsigned int s = 1; s < 4 - r; s++)
1319
 
        {
1320
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1321
 
          ss = (r + s)*(r + s + 1)/2 + s;
1322
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1323
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1324
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1325
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1326
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1327
 
        }// end loop over 's'
1328
 
      }// end loop over 'r'
1329
 
      for (unsigned int r = 0; r < 5; r++)
1330
 
      {
1331
 
        for (unsigned int s = 0; s < 5 - r; s++)
1332
 
        {
1333
 
          rr = (r + s)*(r + s + 1)/2 + s;
1334
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1335
 
        }// end loop over 's'
1336
 
      }// end loop over 'r'
 
1127
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1128
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1129
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
1130
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1131
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1132
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1133
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
1134
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1135
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1136
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
1137
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1138
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
1139
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
1140
      basisvalues[0] *= std::sqrt(0.5);
 
1141
      basisvalues[2] *= std::sqrt(1.0);
 
1142
      basisvalues[5] *= std::sqrt(1.5);
 
1143
      basisvalues[9] *= std::sqrt(2.0);
 
1144
      basisvalues[14] *= std::sqrt(2.5);
 
1145
      basisvalues[1] *= std::sqrt(3.0);
 
1146
      basisvalues[4] *= std::sqrt(4.5);
 
1147
      basisvalues[8] *= std::sqrt(6.0);
 
1148
      basisvalues[13] *= std::sqrt(7.5);
 
1149
      basisvalues[3] *= std::sqrt(7.5);
 
1150
      basisvalues[7] *= std::sqrt(10.0);
 
1151
      basisvalues[12] *= std::sqrt(12.5);
 
1152
      basisvalues[6] *= std::sqrt(14.0);
 
1153
      basisvalues[11] *= std::sqrt(17.5);
 
1154
      basisvalues[10] *= std::sqrt(22.5);
1337
1155
      
1338
1156
      // Table(s) of coefficients.
1339
1157
      static const double coefficients0[15] = \
1519
1337
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1520
1338
      
1521
1339
      // Declare helper variables.
1522
 
      unsigned int rr = 0;
1523
 
      unsigned int ss = 0;
1524
 
      unsigned int tt = 0;
1525
 
      double tmp5 = 0.0;
1526
 
      double tmp6 = 0.0;
1527
 
      double tmp7 = 0.0;
1528
1340
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1529
1341
      double tmp1 = (1.0 - Y)/2.0;
1530
1342
      double tmp2 = tmp1*tmp1;
1532
1344
      // Compute basisvalues.
1533
1345
      basisvalues[0] = 1.0;
1534
1346
      basisvalues[1] = tmp0;
1535
 
      for (unsigned int r = 1; r < 4; r++)
1536
 
      {
1537
 
        rr = (r + 1)*((r + 1) + 1)/2;
1538
 
        ss = r*(r + 1)/2;
1539
 
        tt = (r - 1)*((r - 1) + 1)/2;
1540
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1541
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1542
 
      }// end loop over 'r'
1543
 
      for (unsigned int r = 0; r < 4; r++)
1544
 
      {
1545
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1546
 
        ss = r*(r + 1)/2;
1547
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1548
 
      }// end loop over 'r'
1549
 
      for (unsigned int r = 0; r < 3; r++)
1550
 
      {
1551
 
        for (unsigned int s = 1; s < 4 - r; s++)
1552
 
        {
1553
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1554
 
          ss = (r + s)*(r + s + 1)/2 + s;
1555
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1556
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1557
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1558
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1559
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1560
 
        }// end loop over 's'
1561
 
      }// end loop over 'r'
1562
 
      for (unsigned int r = 0; r < 5; r++)
1563
 
      {
1564
 
        for (unsigned int s = 0; s < 5 - r; s++)
1565
 
        {
1566
 
          rr = (r + s)*(r + s + 1)/2 + s;
1567
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1568
 
        }// end loop over 's'
1569
 
      }// end loop over 'r'
 
1347
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1348
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1349
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
1350
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1351
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1352
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1353
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
1354
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1355
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1356
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
1357
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1358
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
1359
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
1360
      basisvalues[0] *= std::sqrt(0.5);
 
1361
      basisvalues[2] *= std::sqrt(1.0);
 
1362
      basisvalues[5] *= std::sqrt(1.5);
 
1363
      basisvalues[9] *= std::sqrt(2.0);
 
1364
      basisvalues[14] *= std::sqrt(2.5);
 
1365
      basisvalues[1] *= std::sqrt(3.0);
 
1366
      basisvalues[4] *= std::sqrt(4.5);
 
1367
      basisvalues[8] *= std::sqrt(6.0);
 
1368
      basisvalues[13] *= std::sqrt(7.5);
 
1369
      basisvalues[3] *= std::sqrt(7.5);
 
1370
      basisvalues[7] *= std::sqrt(10.0);
 
1371
      basisvalues[12] *= std::sqrt(12.5);
 
1372
      basisvalues[6] *= std::sqrt(14.0);
 
1373
      basisvalues[11] *= std::sqrt(17.5);
 
1374
      basisvalues[10] *= std::sqrt(22.5);
1570
1375
      
1571
1376
      // Table(s) of coefficients.
1572
1377
      static const double coefficients0[15] = \
1752
1557
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1753
1558
      
1754
1559
      // Declare helper variables.
1755
 
      unsigned int rr = 0;
1756
 
      unsigned int ss = 0;
1757
 
      unsigned int tt = 0;
1758
 
      double tmp5 = 0.0;
1759
 
      double tmp6 = 0.0;
1760
 
      double tmp7 = 0.0;
1761
1560
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1762
1561
      double tmp1 = (1.0 - Y)/2.0;
1763
1562
      double tmp2 = tmp1*tmp1;
1765
1564
      // Compute basisvalues.
1766
1565
      basisvalues[0] = 1.0;
1767
1566
      basisvalues[1] = tmp0;
1768
 
      for (unsigned int r = 1; r < 4; r++)
1769
 
      {
1770
 
        rr = (r + 1)*((r + 1) + 1)/2;
1771
 
        ss = r*(r + 1)/2;
1772
 
        tt = (r - 1)*((r - 1) + 1)/2;
1773
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1774
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1775
 
      }// end loop over 'r'
1776
 
      for (unsigned int r = 0; r < 4; r++)
1777
 
      {
1778
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1779
 
        ss = r*(r + 1)/2;
1780
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1781
 
      }// end loop over 'r'
1782
 
      for (unsigned int r = 0; r < 3; r++)
1783
 
      {
1784
 
        for (unsigned int s = 1; s < 4 - r; s++)
1785
 
        {
1786
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1787
 
          ss = (r + s)*(r + s + 1)/2 + s;
1788
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1789
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1790
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1791
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1792
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1793
 
        }// end loop over 's'
1794
 
      }// end loop over 'r'
1795
 
      for (unsigned int r = 0; r < 5; r++)
1796
 
      {
1797
 
        for (unsigned int s = 0; s < 5 - r; s++)
1798
 
        {
1799
 
          rr = (r + s)*(r + s + 1)/2 + s;
1800
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1801
 
        }// end loop over 's'
1802
 
      }// end loop over 'r'
 
1567
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1568
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1569
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
1570
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1571
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1572
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1573
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
1574
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1575
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1576
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
1577
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1578
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
1579
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
1580
      basisvalues[0] *= std::sqrt(0.5);
 
1581
      basisvalues[2] *= std::sqrt(1.0);
 
1582
      basisvalues[5] *= std::sqrt(1.5);
 
1583
      basisvalues[9] *= std::sqrt(2.0);
 
1584
      basisvalues[14] *= std::sqrt(2.5);
 
1585
      basisvalues[1] *= std::sqrt(3.0);
 
1586
      basisvalues[4] *= std::sqrt(4.5);
 
1587
      basisvalues[8] *= std::sqrt(6.0);
 
1588
      basisvalues[13] *= std::sqrt(7.5);
 
1589
      basisvalues[3] *= std::sqrt(7.5);
 
1590
      basisvalues[7] *= std::sqrt(10.0);
 
1591
      basisvalues[12] *= std::sqrt(12.5);
 
1592
      basisvalues[6] *= std::sqrt(14.0);
 
1593
      basisvalues[11] *= std::sqrt(17.5);
 
1594
      basisvalues[10] *= std::sqrt(22.5);
1803
1595
      
1804
1596
      // Table(s) of coefficients.
1805
1597
      static const double coefficients0[15] = \
1985
1777
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1986
1778
      
1987
1779
      // Declare helper variables.
1988
 
      unsigned int rr = 0;
1989
 
      unsigned int ss = 0;
1990
 
      unsigned int tt = 0;
1991
 
      double tmp5 = 0.0;
1992
 
      double tmp6 = 0.0;
1993
 
      double tmp7 = 0.0;
1994
1780
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1995
1781
      double tmp1 = (1.0 - Y)/2.0;
1996
1782
      double tmp2 = tmp1*tmp1;
1998
1784
      // Compute basisvalues.
1999
1785
      basisvalues[0] = 1.0;
2000
1786
      basisvalues[1] = tmp0;
2001
 
      for (unsigned int r = 1; r < 4; r++)
2002
 
      {
2003
 
        rr = (r + 1)*((r + 1) + 1)/2;
2004
 
        ss = r*(r + 1)/2;
2005
 
        tt = (r - 1)*((r - 1) + 1)/2;
2006
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2007
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2008
 
      }// end loop over 'r'
2009
 
      for (unsigned int r = 0; r < 4; r++)
2010
 
      {
2011
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2012
 
        ss = r*(r + 1)/2;
2013
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2014
 
      }// end loop over 'r'
2015
 
      for (unsigned int r = 0; r < 3; r++)
2016
 
      {
2017
 
        for (unsigned int s = 1; s < 4 - r; s++)
2018
 
        {
2019
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2020
 
          ss = (r + s)*(r + s + 1)/2 + s;
2021
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2022
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2023
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2024
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2025
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2026
 
        }// end loop over 's'
2027
 
      }// end loop over 'r'
2028
 
      for (unsigned int r = 0; r < 5; r++)
2029
 
      {
2030
 
        for (unsigned int s = 0; s < 5 - r; s++)
2031
 
        {
2032
 
          rr = (r + s)*(r + s + 1)/2 + s;
2033
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2034
 
        }// end loop over 's'
2035
 
      }// end loop over 'r'
 
1787
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1788
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
1789
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
1790
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1791
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1792
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
1793
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
1794
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1795
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
1796
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
1797
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
1798
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
1799
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
1800
      basisvalues[0] *= std::sqrt(0.5);
 
1801
      basisvalues[2] *= std::sqrt(1.0);
 
1802
      basisvalues[5] *= std::sqrt(1.5);
 
1803
      basisvalues[9] *= std::sqrt(2.0);
 
1804
      basisvalues[14] *= std::sqrt(2.5);
 
1805
      basisvalues[1] *= std::sqrt(3.0);
 
1806
      basisvalues[4] *= std::sqrt(4.5);
 
1807
      basisvalues[8] *= std::sqrt(6.0);
 
1808
      basisvalues[13] *= std::sqrt(7.5);
 
1809
      basisvalues[3] *= std::sqrt(7.5);
 
1810
      basisvalues[7] *= std::sqrt(10.0);
 
1811
      basisvalues[12] *= std::sqrt(12.5);
 
1812
      basisvalues[6] *= std::sqrt(14.0);
 
1813
      basisvalues[11] *= std::sqrt(17.5);
 
1814
      basisvalues[10] *= std::sqrt(22.5);
2036
1815
      
2037
1816
      // Table(s) of coefficients.
2038
1817
      static const double coefficients0[15] = \
2218
1997
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2219
1998
      
2220
1999
      // Declare helper variables.
2221
 
      unsigned int rr = 0;
2222
 
      unsigned int ss = 0;
2223
 
      unsigned int tt = 0;
2224
 
      double tmp5 = 0.0;
2225
 
      double tmp6 = 0.0;
2226
 
      double tmp7 = 0.0;
2227
2000
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2228
2001
      double tmp1 = (1.0 - Y)/2.0;
2229
2002
      double tmp2 = tmp1*tmp1;
2231
2004
      // Compute basisvalues.
2232
2005
      basisvalues[0] = 1.0;
2233
2006
      basisvalues[1] = tmp0;
2234
 
      for (unsigned int r = 1; r < 4; r++)
2235
 
      {
2236
 
        rr = (r + 1)*((r + 1) + 1)/2;
2237
 
        ss = r*(r + 1)/2;
2238
 
        tt = (r - 1)*((r - 1) + 1)/2;
2239
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2240
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2241
 
      }// end loop over 'r'
2242
 
      for (unsigned int r = 0; r < 4; r++)
2243
 
      {
2244
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2245
 
        ss = r*(r + 1)/2;
2246
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2247
 
      }// end loop over 'r'
2248
 
      for (unsigned int r = 0; r < 3; r++)
2249
 
      {
2250
 
        for (unsigned int s = 1; s < 4 - r; s++)
2251
 
        {
2252
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2253
 
          ss = (r + s)*(r + s + 1)/2 + s;
2254
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2255
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2256
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2257
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2258
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2259
 
        }// end loop over 's'
2260
 
      }// end loop over 'r'
2261
 
      for (unsigned int r = 0; r < 5; r++)
2262
 
      {
2263
 
        for (unsigned int s = 0; s < 5 - r; s++)
2264
 
        {
2265
 
          rr = (r + s)*(r + s + 1)/2 + s;
2266
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2267
 
        }// end loop over 's'
2268
 
      }// end loop over 'r'
 
2007
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2008
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2009
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
2010
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2011
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2012
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2013
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
2014
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2015
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2016
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
2017
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2018
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
2019
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
2020
      basisvalues[0] *= std::sqrt(0.5);
 
2021
      basisvalues[2] *= std::sqrt(1.0);
 
2022
      basisvalues[5] *= std::sqrt(1.5);
 
2023
      basisvalues[9] *= std::sqrt(2.0);
 
2024
      basisvalues[14] *= std::sqrt(2.5);
 
2025
      basisvalues[1] *= std::sqrt(3.0);
 
2026
      basisvalues[4] *= std::sqrt(4.5);
 
2027
      basisvalues[8] *= std::sqrt(6.0);
 
2028
      basisvalues[13] *= std::sqrt(7.5);
 
2029
      basisvalues[3] *= std::sqrt(7.5);
 
2030
      basisvalues[7] *= std::sqrt(10.0);
 
2031
      basisvalues[12] *= std::sqrt(12.5);
 
2032
      basisvalues[6] *= std::sqrt(14.0);
 
2033
      basisvalues[11] *= std::sqrt(17.5);
 
2034
      basisvalues[10] *= std::sqrt(22.5);
2269
2035
      
2270
2036
      // Table(s) of coefficients.
2271
2037
      static const double coefficients0[15] = \
2451
2217
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2452
2218
      
2453
2219
      // Declare helper variables.
2454
 
      unsigned int rr = 0;
2455
 
      unsigned int ss = 0;
2456
 
      unsigned int tt = 0;
2457
 
      double tmp5 = 0.0;
2458
 
      double tmp6 = 0.0;
2459
 
      double tmp7 = 0.0;
2460
2220
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2461
2221
      double tmp1 = (1.0 - Y)/2.0;
2462
2222
      double tmp2 = tmp1*tmp1;
2464
2224
      // Compute basisvalues.
2465
2225
      basisvalues[0] = 1.0;
2466
2226
      basisvalues[1] = tmp0;
2467
 
      for (unsigned int r = 1; r < 4; r++)
2468
 
      {
2469
 
        rr = (r + 1)*((r + 1) + 1)/2;
2470
 
        ss = r*(r + 1)/2;
2471
 
        tt = (r - 1)*((r - 1) + 1)/2;
2472
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2473
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2474
 
      }// end loop over 'r'
2475
 
      for (unsigned int r = 0; r < 4; r++)
2476
 
      {
2477
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2478
 
        ss = r*(r + 1)/2;
2479
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2480
 
      }// end loop over 'r'
2481
 
      for (unsigned int r = 0; r < 3; r++)
2482
 
      {
2483
 
        for (unsigned int s = 1; s < 4 - r; s++)
2484
 
        {
2485
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2486
 
          ss = (r + s)*(r + s + 1)/2 + s;
2487
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2488
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2489
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2490
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2491
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2492
 
        }// end loop over 's'
2493
 
      }// end loop over 'r'
2494
 
      for (unsigned int r = 0; r < 5; r++)
2495
 
      {
2496
 
        for (unsigned int s = 0; s < 5 - r; s++)
2497
 
        {
2498
 
          rr = (r + s)*(r + s + 1)/2 + s;
2499
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2500
 
        }// end loop over 's'
2501
 
      }// end loop over 'r'
 
2227
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2228
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2229
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
2230
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2231
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2232
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2233
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
2234
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2235
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2236
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
2237
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2238
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
2239
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
2240
      basisvalues[0] *= std::sqrt(0.5);
 
2241
      basisvalues[2] *= std::sqrt(1.0);
 
2242
      basisvalues[5] *= std::sqrt(1.5);
 
2243
      basisvalues[9] *= std::sqrt(2.0);
 
2244
      basisvalues[14] *= std::sqrt(2.5);
 
2245
      basisvalues[1] *= std::sqrt(3.0);
 
2246
      basisvalues[4] *= std::sqrt(4.5);
 
2247
      basisvalues[8] *= std::sqrt(6.0);
 
2248
      basisvalues[13] *= std::sqrt(7.5);
 
2249
      basisvalues[3] *= std::sqrt(7.5);
 
2250
      basisvalues[7] *= std::sqrt(10.0);
 
2251
      basisvalues[12] *= std::sqrt(12.5);
 
2252
      basisvalues[6] *= std::sqrt(14.0);
 
2253
      basisvalues[11] *= std::sqrt(17.5);
 
2254
      basisvalues[10] *= std::sqrt(22.5);
2502
2255
      
2503
2256
      // Table(s) of coefficients.
2504
2257
      static const double coefficients0[15] = \
2684
2437
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2685
2438
      
2686
2439
      // Declare helper variables.
2687
 
      unsigned int rr = 0;
2688
 
      unsigned int ss = 0;
2689
 
      unsigned int tt = 0;
2690
 
      double tmp5 = 0.0;
2691
 
      double tmp6 = 0.0;
2692
 
      double tmp7 = 0.0;
2693
2440
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2694
2441
      double tmp1 = (1.0 - Y)/2.0;
2695
2442
      double tmp2 = tmp1*tmp1;
2697
2444
      // Compute basisvalues.
2698
2445
      basisvalues[0] = 1.0;
2699
2446
      basisvalues[1] = tmp0;
2700
 
      for (unsigned int r = 1; r < 4; r++)
2701
 
      {
2702
 
        rr = (r + 1)*((r + 1) + 1)/2;
2703
 
        ss = r*(r + 1)/2;
2704
 
        tt = (r - 1)*((r - 1) + 1)/2;
2705
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2706
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2707
 
      }// end loop over 'r'
2708
 
      for (unsigned int r = 0; r < 4; r++)
2709
 
      {
2710
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2711
 
        ss = r*(r + 1)/2;
2712
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2713
 
      }// end loop over 'r'
2714
 
      for (unsigned int r = 0; r < 3; r++)
2715
 
      {
2716
 
        for (unsigned int s = 1; s < 4 - r; s++)
2717
 
        {
2718
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2719
 
          ss = (r + s)*(r + s + 1)/2 + s;
2720
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2721
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2722
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2723
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2724
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2725
 
        }// end loop over 's'
2726
 
      }// end loop over 'r'
2727
 
      for (unsigned int r = 0; r < 5; r++)
2728
 
      {
2729
 
        for (unsigned int s = 0; s < 5 - r; s++)
2730
 
        {
2731
 
          rr = (r + s)*(r + s + 1)/2 + s;
2732
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2733
 
        }// end loop over 's'
2734
 
      }// end loop over 'r'
 
2447
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2448
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2449
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
2450
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2451
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2452
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2453
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
2454
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2455
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2456
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
2457
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2458
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
2459
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
2460
      basisvalues[0] *= std::sqrt(0.5);
 
2461
      basisvalues[2] *= std::sqrt(1.0);
 
2462
      basisvalues[5] *= std::sqrt(1.5);
 
2463
      basisvalues[9] *= std::sqrt(2.0);
 
2464
      basisvalues[14] *= std::sqrt(2.5);
 
2465
      basisvalues[1] *= std::sqrt(3.0);
 
2466
      basisvalues[4] *= std::sqrt(4.5);
 
2467
      basisvalues[8] *= std::sqrt(6.0);
 
2468
      basisvalues[13] *= std::sqrt(7.5);
 
2469
      basisvalues[3] *= std::sqrt(7.5);
 
2470
      basisvalues[7] *= std::sqrt(10.0);
 
2471
      basisvalues[12] *= std::sqrt(12.5);
 
2472
      basisvalues[6] *= std::sqrt(14.0);
 
2473
      basisvalues[11] *= std::sqrt(17.5);
 
2474
      basisvalues[10] *= std::sqrt(22.5);
2735
2475
      
2736
2476
      // Table(s) of coefficients.
2737
2477
      static const double coefficients0[15] = \
2917
2657
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2918
2658
      
2919
2659
      // Declare helper variables.
2920
 
      unsigned int rr = 0;
2921
 
      unsigned int ss = 0;
2922
 
      unsigned int tt = 0;
2923
 
      double tmp5 = 0.0;
2924
 
      double tmp6 = 0.0;
2925
 
      double tmp7 = 0.0;
2926
2660
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2927
2661
      double tmp1 = (1.0 - Y)/2.0;
2928
2662
      double tmp2 = tmp1*tmp1;
2930
2664
      // Compute basisvalues.
2931
2665
      basisvalues[0] = 1.0;
2932
2666
      basisvalues[1] = tmp0;
2933
 
      for (unsigned int r = 1; r < 4; r++)
2934
 
      {
2935
 
        rr = (r + 1)*((r + 1) + 1)/2;
2936
 
        ss = r*(r + 1)/2;
2937
 
        tt = (r - 1)*((r - 1) + 1)/2;
2938
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2939
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2940
 
      }// end loop over 'r'
2941
 
      for (unsigned int r = 0; r < 4; r++)
2942
 
      {
2943
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2944
 
        ss = r*(r + 1)/2;
2945
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2946
 
      }// end loop over 'r'
2947
 
      for (unsigned int r = 0; r < 3; r++)
2948
 
      {
2949
 
        for (unsigned int s = 1; s < 4 - r; s++)
2950
 
        {
2951
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2952
 
          ss = (r + s)*(r + s + 1)/2 + s;
2953
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2954
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2955
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2956
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2957
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2958
 
        }// end loop over 's'
2959
 
      }// end loop over 'r'
2960
 
      for (unsigned int r = 0; r < 5; r++)
2961
 
      {
2962
 
        for (unsigned int s = 0; s < 5 - r; s++)
2963
 
        {
2964
 
          rr = (r + s)*(r + s + 1)/2 + s;
2965
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2966
 
        }// end loop over 's'
2967
 
      }// end loop over 'r'
 
2667
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2668
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2669
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
2670
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2671
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2672
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2673
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
2674
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2675
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2676
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
2677
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2678
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
2679
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
2680
      basisvalues[0] *= std::sqrt(0.5);
 
2681
      basisvalues[2] *= std::sqrt(1.0);
 
2682
      basisvalues[5] *= std::sqrt(1.5);
 
2683
      basisvalues[9] *= std::sqrt(2.0);
 
2684
      basisvalues[14] *= std::sqrt(2.5);
 
2685
      basisvalues[1] *= std::sqrt(3.0);
 
2686
      basisvalues[4] *= std::sqrt(4.5);
 
2687
      basisvalues[8] *= std::sqrt(6.0);
 
2688
      basisvalues[13] *= std::sqrt(7.5);
 
2689
      basisvalues[3] *= std::sqrt(7.5);
 
2690
      basisvalues[7] *= std::sqrt(10.0);
 
2691
      basisvalues[12] *= std::sqrt(12.5);
 
2692
      basisvalues[6] *= std::sqrt(14.0);
 
2693
      basisvalues[11] *= std::sqrt(17.5);
 
2694
      basisvalues[10] *= std::sqrt(22.5);
2968
2695
      
2969
2696
      // Table(s) of coefficients.
2970
2697
      static const double coefficients0[15] = \
3150
2877
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3151
2878
      
3152
2879
      // Declare helper variables.
3153
 
      unsigned int rr = 0;
3154
 
      unsigned int ss = 0;
3155
 
      unsigned int tt = 0;
3156
 
      double tmp5 = 0.0;
3157
 
      double tmp6 = 0.0;
3158
 
      double tmp7 = 0.0;
3159
2880
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3160
2881
      double tmp1 = (1.0 - Y)/2.0;
3161
2882
      double tmp2 = tmp1*tmp1;
3163
2884
      // Compute basisvalues.
3164
2885
      basisvalues[0] = 1.0;
3165
2886
      basisvalues[1] = tmp0;
3166
 
      for (unsigned int r = 1; r < 4; r++)
3167
 
      {
3168
 
        rr = (r + 1)*((r + 1) + 1)/2;
3169
 
        ss = r*(r + 1)/2;
3170
 
        tt = (r - 1)*((r - 1) + 1)/2;
3171
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3172
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3173
 
      }// end loop over 'r'
3174
 
      for (unsigned int r = 0; r < 4; r++)
3175
 
      {
3176
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3177
 
        ss = r*(r + 1)/2;
3178
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3179
 
      }// end loop over 'r'
3180
 
      for (unsigned int r = 0; r < 3; r++)
3181
 
      {
3182
 
        for (unsigned int s = 1; s < 4 - r; s++)
3183
 
        {
3184
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3185
 
          ss = (r + s)*(r + s + 1)/2 + s;
3186
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3187
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3188
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3189
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3190
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3191
 
        }// end loop over 's'
3192
 
      }// end loop over 'r'
3193
 
      for (unsigned int r = 0; r < 5; r++)
3194
 
      {
3195
 
        for (unsigned int s = 0; s < 5 - r; s++)
3196
 
        {
3197
 
          rr = (r + s)*(r + s + 1)/2 + s;
3198
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3199
 
        }// end loop over 's'
3200
 
      }// end loop over 'r'
 
2887
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
2888
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
2889
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
2890
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
2891
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
2892
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
2893
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
2894
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
2895
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
2896
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
2897
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
2898
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
2899
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
2900
      basisvalues[0] *= std::sqrt(0.5);
 
2901
      basisvalues[2] *= std::sqrt(1.0);
 
2902
      basisvalues[5] *= std::sqrt(1.5);
 
2903
      basisvalues[9] *= std::sqrt(2.0);
 
2904
      basisvalues[14] *= std::sqrt(2.5);
 
2905
      basisvalues[1] *= std::sqrt(3.0);
 
2906
      basisvalues[4] *= std::sqrt(4.5);
 
2907
      basisvalues[8] *= std::sqrt(6.0);
 
2908
      basisvalues[13] *= std::sqrt(7.5);
 
2909
      basisvalues[3] *= std::sqrt(7.5);
 
2910
      basisvalues[7] *= std::sqrt(10.0);
 
2911
      basisvalues[12] *= std::sqrt(12.5);
 
2912
      basisvalues[6] *= std::sqrt(14.0);
 
2913
      basisvalues[11] *= std::sqrt(17.5);
 
2914
      basisvalues[10] *= std::sqrt(22.5);
3201
2915
      
3202
2916
      // Table(s) of coefficients.
3203
2917
      static const double coefficients0[15] = \
3383
3097
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3384
3098
      
3385
3099
      // Declare helper variables.
3386
 
      unsigned int rr = 0;
3387
 
      unsigned int ss = 0;
3388
 
      unsigned int tt = 0;
3389
 
      double tmp5 = 0.0;
3390
 
      double tmp6 = 0.0;
3391
 
      double tmp7 = 0.0;
3392
3100
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3393
3101
      double tmp1 = (1.0 - Y)/2.0;
3394
3102
      double tmp2 = tmp1*tmp1;
3396
3104
      // Compute basisvalues.
3397
3105
      basisvalues[0] = 1.0;
3398
3106
      basisvalues[1] = tmp0;
3399
 
      for (unsigned int r = 1; r < 4; r++)
3400
 
      {
3401
 
        rr = (r + 1)*((r + 1) + 1)/2;
3402
 
        ss = r*(r + 1)/2;
3403
 
        tt = (r - 1)*((r - 1) + 1)/2;
3404
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3405
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3406
 
      }// end loop over 'r'
3407
 
      for (unsigned int r = 0; r < 4; r++)
3408
 
      {
3409
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3410
 
        ss = r*(r + 1)/2;
3411
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3412
 
      }// end loop over 'r'
3413
 
      for (unsigned int r = 0; r < 3; r++)
3414
 
      {
3415
 
        for (unsigned int s = 1; s < 4 - r; s++)
3416
 
        {
3417
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3418
 
          ss = (r + s)*(r + s + 1)/2 + s;
3419
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3420
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3421
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3422
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3423
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3424
 
        }// end loop over 's'
3425
 
      }// end loop over 'r'
3426
 
      for (unsigned int r = 0; r < 5; r++)
3427
 
      {
3428
 
        for (unsigned int s = 0; s < 5 - r; s++)
3429
 
        {
3430
 
          rr = (r + s)*(r + s + 1)/2 + s;
3431
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3432
 
        }// end loop over 's'
3433
 
      }// end loop over 'r'
 
3107
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3108
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3109
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
3110
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3111
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3112
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3113
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
3114
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3115
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3116
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
3117
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3118
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
3119
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
3120
      basisvalues[0] *= std::sqrt(0.5);
 
3121
      basisvalues[2] *= std::sqrt(1.0);
 
3122
      basisvalues[5] *= std::sqrt(1.5);
 
3123
      basisvalues[9] *= std::sqrt(2.0);
 
3124
      basisvalues[14] *= std::sqrt(2.5);
 
3125
      basisvalues[1] *= std::sqrt(3.0);
 
3126
      basisvalues[4] *= std::sqrt(4.5);
 
3127
      basisvalues[8] *= std::sqrt(6.0);
 
3128
      basisvalues[13] *= std::sqrt(7.5);
 
3129
      basisvalues[3] *= std::sqrt(7.5);
 
3130
      basisvalues[7] *= std::sqrt(10.0);
 
3131
      basisvalues[12] *= std::sqrt(12.5);
 
3132
      basisvalues[6] *= std::sqrt(14.0);
 
3133
      basisvalues[11] *= std::sqrt(17.5);
 
3134
      basisvalues[10] *= std::sqrt(22.5);
3434
3135
      
3435
3136
      // Table(s) of coefficients.
3436
3137
      static const double coefficients0[15] = \
3616
3317
      double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
3617
3318
      
3618
3319
      // Declare helper variables.
3619
 
      unsigned int rr = 0;
3620
 
      unsigned int ss = 0;
3621
 
      unsigned int tt = 0;
3622
 
      double tmp5 = 0.0;
3623
 
      double tmp6 = 0.0;
3624
 
      double tmp7 = 0.0;
3625
3320
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
3626
3321
      double tmp1 = (1.0 - Y)/2.0;
3627
3322
      double tmp2 = tmp1*tmp1;
3629
3324
      // Compute basisvalues.
3630
3325
      basisvalues[0] = 1.0;
3631
3326
      basisvalues[1] = tmp0;
3632
 
      for (unsigned int r = 1; r < 4; r++)
3633
 
      {
3634
 
        rr = (r + 1)*((r + 1) + 1)/2;
3635
 
        ss = r*(r + 1)/2;
3636
 
        tt = (r - 1)*((r - 1) + 1)/2;
3637
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
3638
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
3639
 
      }// end loop over 'r'
3640
 
      for (unsigned int r = 0; r < 4; r++)
3641
 
      {
3642
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
3643
 
        ss = r*(r + 1)/2;
3644
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
3645
 
      }// end loop over 'r'
3646
 
      for (unsigned int r = 0; r < 3; r++)
3647
 
      {
3648
 
        for (unsigned int s = 1; s < 4 - r; s++)
3649
 
        {
3650
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
3651
 
          ss = (r + s)*(r + s + 1)/2 + s;
3652
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
3653
 
          tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
3654
 
          tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3655
 
          tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
3656
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
3657
 
        }// end loop over 's'
3658
 
      }// end loop over 'r'
3659
 
      for (unsigned int r = 0; r < 5; r++)
3660
 
      {
3661
 
        for (unsigned int s = 0; s < 5 - r; s++)
3662
 
        {
3663
 
          rr = (r + s)*(r + s + 1)/2 + s;
3664
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
3665
 
        }// end loop over 's'
3666
 
      }// end loop over 'r'
 
3327
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
3328
      basisvalues[6] = basisvalues[3]*1.6666667*tmp0 - basisvalues[1]*0.66666667*tmp2;
 
3329
      basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2;
 
3330
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
3331
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
3332
      basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y);
 
3333
      basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y);
 
3334
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
3335
      basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7;
 
3336
      basisvalues[14] = basisvalues[9]*(0.028571429 + Y*1.8) - basisvalues[5]*0.77142857;
 
3337
      basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56;
 
3338
      basisvalues[13] = basisvalues[8]*(0.28571429 + Y*2.0) - basisvalues[4]*0.71428571;
 
3339
      basisvalues[12] = basisvalues[7]*(1.0204082 + Y*2.5714286) - basisvalues[3]*0.55102041;
 
3340
      basisvalues[0] *= std::sqrt(0.5);
 
3341
      basisvalues[2] *= std::sqrt(1.0);
 
3342
      basisvalues[5] *= std::sqrt(1.5);
 
3343
      basisvalues[9] *= std::sqrt(2.0);
 
3344
      basisvalues[14] *= std::sqrt(2.5);
 
3345
      basisvalues[1] *= std::sqrt(3.0);
 
3346
      basisvalues[4] *= std::sqrt(4.5);
 
3347
      basisvalues[8] *= std::sqrt(6.0);
 
3348
      basisvalues[13] *= std::sqrt(7.5);
 
3349
      basisvalues[3] *= std::sqrt(7.5);
 
3350
      basisvalues[7] *= std::sqrt(10.0);
 
3351
      basisvalues[12] *= std::sqrt(12.5);
 
3352
      basisvalues[6] *= std::sqrt(14.0);
 
3353
      basisvalues[11] *= std::sqrt(17.5);
 
3354
      basisvalues[10] *= std::sqrt(22.5);
3667
3355
      
3668
3356
      // Table(s) of coefficients.
3669
3357
      static const double coefficients0[15] = \