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

« back to all changes in this revision

Viewing changes to test/regression/references/r_quadrature/QuadratureElement.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
// 
711
711
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
712
712
      
713
713
      // Declare helper variables.
714
 
      unsigned int rr = 0;
715
 
      unsigned int ss = 0;
716
 
      unsigned int tt = 0;
717
 
      double tmp5 = 0.0;
718
 
      double tmp6 = 0.0;
719
 
      double tmp7 = 0.0;
720
714
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
721
715
      double tmp1 = (1.0 - Y)/2.0;
722
716
      double tmp2 = tmp1*tmp1;
724
718
      // Compute basisvalues.
725
719
      basisvalues[0] = 1.0;
726
720
      basisvalues[1] = tmp0;
727
 
      for (unsigned int r = 1; r < 2; r++)
728
 
      {
729
 
        rr = (r + 1)*((r + 1) + 1)/2;
730
 
        ss = r*(r + 1)/2;
731
 
        tt = (r - 1)*((r - 1) + 1)/2;
732
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
733
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
734
 
      }// end loop over 'r'
735
 
      for (unsigned int r = 0; r < 2; r++)
736
 
      {
737
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
738
 
        ss = r*(r + 1)/2;
739
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
740
 
      }// end loop over 'r'
741
 
      for (unsigned int r = 0; r < 1; r++)
742
 
      {
743
 
        for (unsigned int s = 1; s < 2 - r; s++)
744
 
        {
745
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
746
 
          ss = (r + s)*(r + s + 1)/2 + s;
747
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
748
 
          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));
749
 
          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));
750
 
          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));
751
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
752
 
        }// end loop over 's'
753
 
      }// end loop over 'r'
754
 
      for (unsigned int r = 0; r < 3; r++)
755
 
      {
756
 
        for (unsigned int s = 0; s < 3 - r; s++)
757
 
        {
758
 
          rr = (r + s)*(r + s + 1)/2 + s;
759
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
760
 
        }// end loop over 's'
761
 
      }// end loop over 'r'
 
721
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
722
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
723
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
724
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
725
      basisvalues[0] *= std::sqrt(0.5);
 
726
      basisvalues[2] *= std::sqrt(1.0);
 
727
      basisvalues[5] *= std::sqrt(1.5);
 
728
      basisvalues[1] *= std::sqrt(3.0);
 
729
      basisvalues[4] *= std::sqrt(4.5);
 
730
      basisvalues[3] *= std::sqrt(7.5);
762
731
      
763
732
      // Table(s) of coefficients.
764
733
      static const double coefficients0[6] = \
778
747
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
779
748
      
780
749
      // Declare helper variables.
781
 
      unsigned int rr = 0;
782
 
      unsigned int ss = 0;
783
 
      unsigned int tt = 0;
784
 
      double tmp5 = 0.0;
785
 
      double tmp6 = 0.0;
786
 
      double tmp7 = 0.0;
787
750
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
788
751
      double tmp1 = (1.0 - Y)/2.0;
789
752
      double tmp2 = tmp1*tmp1;
791
754
      // Compute basisvalues.
792
755
      basisvalues[0] = 1.0;
793
756
      basisvalues[1] = tmp0;
794
 
      for (unsigned int r = 1; r < 2; r++)
795
 
      {
796
 
        rr = (r + 1)*((r + 1) + 1)/2;
797
 
        ss = r*(r + 1)/2;
798
 
        tt = (r - 1)*((r - 1) + 1)/2;
799
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
800
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
801
 
      }// end loop over 'r'
802
 
      for (unsigned int r = 0; r < 2; r++)
803
 
      {
804
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
805
 
        ss = r*(r + 1)/2;
806
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
807
 
      }// end loop over 'r'
808
 
      for (unsigned int r = 0; r < 1; r++)
809
 
      {
810
 
        for (unsigned int s = 1; s < 2 - r; s++)
811
 
        {
812
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
813
 
          ss = (r + s)*(r + s + 1)/2 + s;
814
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
815
 
          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));
816
 
          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));
817
 
          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));
818
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
819
 
        }// end loop over 's'
820
 
      }// end loop over 'r'
821
 
      for (unsigned int r = 0; r < 3; r++)
822
 
      {
823
 
        for (unsigned int s = 0; s < 3 - r; s++)
824
 
        {
825
 
          rr = (r + s)*(r + s + 1)/2 + s;
826
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
827
 
        }// end loop over 's'
828
 
      }// end loop over 'r'
 
757
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
758
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
759
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
760
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
761
      basisvalues[0] *= std::sqrt(0.5);
 
762
      basisvalues[2] *= std::sqrt(1.0);
 
763
      basisvalues[5] *= std::sqrt(1.5);
 
764
      basisvalues[1] *= std::sqrt(3.0);
 
765
      basisvalues[4] *= std::sqrt(4.5);
 
766
      basisvalues[3] *= std::sqrt(7.5);
829
767
      
830
768
      // Table(s) of coefficients.
831
769
      static const double coefficients0[6] = \
845
783
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
846
784
      
847
785
      // Declare helper variables.
848
 
      unsigned int rr = 0;
849
 
      unsigned int ss = 0;
850
 
      unsigned int tt = 0;
851
 
      double tmp5 = 0.0;
852
 
      double tmp6 = 0.0;
853
 
      double tmp7 = 0.0;
854
786
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
855
787
      double tmp1 = (1.0 - Y)/2.0;
856
788
      double tmp2 = tmp1*tmp1;
858
790
      // Compute basisvalues.
859
791
      basisvalues[0] = 1.0;
860
792
      basisvalues[1] = tmp0;
861
 
      for (unsigned int r = 1; r < 2; r++)
862
 
      {
863
 
        rr = (r + 1)*((r + 1) + 1)/2;
864
 
        ss = r*(r + 1)/2;
865
 
        tt = (r - 1)*((r - 1) + 1)/2;
866
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
867
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
868
 
      }// end loop over 'r'
869
 
      for (unsigned int r = 0; r < 2; r++)
870
 
      {
871
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
872
 
        ss = r*(r + 1)/2;
873
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
874
 
      }// end loop over 'r'
875
 
      for (unsigned int r = 0; r < 1; r++)
876
 
      {
877
 
        for (unsigned int s = 1; s < 2 - r; s++)
878
 
        {
879
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
880
 
          ss = (r + s)*(r + s + 1)/2 + s;
881
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
882
 
          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));
883
 
          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));
884
 
          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));
885
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
886
 
        }// end loop over 's'
887
 
      }// end loop over 'r'
888
 
      for (unsigned int r = 0; r < 3; r++)
889
 
      {
890
 
        for (unsigned int s = 0; s < 3 - r; s++)
891
 
        {
892
 
          rr = (r + s)*(r + s + 1)/2 + s;
893
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
894
 
        }// end loop over 's'
895
 
      }// end loop over 'r'
 
793
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
794
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
795
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
796
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
797
      basisvalues[0] *= std::sqrt(0.5);
 
798
      basisvalues[2] *= std::sqrt(1.0);
 
799
      basisvalues[5] *= std::sqrt(1.5);
 
800
      basisvalues[1] *= std::sqrt(3.0);
 
801
      basisvalues[4] *= std::sqrt(4.5);
 
802
      basisvalues[3] *= std::sqrt(7.5);
896
803
      
897
804
      // Table(s) of coefficients.
898
805
      static const double coefficients0[6] = \
912
819
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
913
820
      
914
821
      // Declare helper variables.
915
 
      unsigned int rr = 0;
916
 
      unsigned int ss = 0;
917
 
      unsigned int tt = 0;
918
 
      double tmp5 = 0.0;
919
 
      double tmp6 = 0.0;
920
 
      double tmp7 = 0.0;
921
822
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
922
823
      double tmp1 = (1.0 - Y)/2.0;
923
824
      double tmp2 = tmp1*tmp1;
925
826
      // Compute basisvalues.
926
827
      basisvalues[0] = 1.0;
927
828
      basisvalues[1] = tmp0;
928
 
      for (unsigned int r = 1; r < 2; r++)
929
 
      {
930
 
        rr = (r + 1)*((r + 1) + 1)/2;
931
 
        ss = r*(r + 1)/2;
932
 
        tt = (r - 1)*((r - 1) + 1)/2;
933
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
934
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
935
 
      }// end loop over 'r'
936
 
      for (unsigned int r = 0; r < 2; r++)
937
 
      {
938
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
939
 
        ss = r*(r + 1)/2;
940
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
941
 
      }// end loop over 'r'
942
 
      for (unsigned int r = 0; r < 1; r++)
943
 
      {
944
 
        for (unsigned int s = 1; s < 2 - r; s++)
945
 
        {
946
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
947
 
          ss = (r + s)*(r + s + 1)/2 + s;
948
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
949
 
          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));
950
 
          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));
951
 
          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));
952
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
953
 
        }// end loop over 's'
954
 
      }// end loop over 'r'
955
 
      for (unsigned int r = 0; r < 3; r++)
956
 
      {
957
 
        for (unsigned int s = 0; s < 3 - r; s++)
958
 
        {
959
 
          rr = (r + s)*(r + s + 1)/2 + s;
960
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
961
 
        }// end loop over 's'
962
 
      }// end loop over 'r'
 
829
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
830
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
831
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
832
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
833
      basisvalues[0] *= std::sqrt(0.5);
 
834
      basisvalues[2] *= std::sqrt(1.0);
 
835
      basisvalues[5] *= std::sqrt(1.5);
 
836
      basisvalues[1] *= std::sqrt(3.0);
 
837
      basisvalues[4] *= std::sqrt(4.5);
 
838
      basisvalues[3] *= std::sqrt(7.5);
963
839
      
964
840
      // Table(s) of coefficients.
965
841
      static const double coefficients0[6] = \
979
855
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
980
856
      
981
857
      // Declare helper variables.
982
 
      unsigned int rr = 0;
983
 
      unsigned int ss = 0;
984
 
      unsigned int tt = 0;
985
 
      double tmp5 = 0.0;
986
 
      double tmp6 = 0.0;
987
 
      double tmp7 = 0.0;
988
858
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
989
859
      double tmp1 = (1.0 - Y)/2.0;
990
860
      double tmp2 = tmp1*tmp1;
992
862
      // Compute basisvalues.
993
863
      basisvalues[0] = 1.0;
994
864
      basisvalues[1] = tmp0;
995
 
      for (unsigned int r = 1; r < 2; r++)
996
 
      {
997
 
        rr = (r + 1)*((r + 1) + 1)/2;
998
 
        ss = r*(r + 1)/2;
999
 
        tt = (r - 1)*((r - 1) + 1)/2;
1000
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1001
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1002
 
      }// end loop over 'r'
1003
 
      for (unsigned int r = 0; r < 2; r++)
1004
 
      {
1005
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1006
 
        ss = r*(r + 1)/2;
1007
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1008
 
      }// end loop over 'r'
1009
 
      for (unsigned int r = 0; r < 1; r++)
1010
 
      {
1011
 
        for (unsigned int s = 1; s < 2 - r; s++)
1012
 
        {
1013
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1014
 
          ss = (r + s)*(r + s + 1)/2 + s;
1015
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1016
 
          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));
1017
 
          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));
1018
 
          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));
1019
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1020
 
        }// end loop over 's'
1021
 
      }// end loop over 'r'
1022
 
      for (unsigned int r = 0; r < 3; r++)
1023
 
      {
1024
 
        for (unsigned int s = 0; s < 3 - r; s++)
1025
 
        {
1026
 
          rr = (r + s)*(r + s + 1)/2 + s;
1027
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1028
 
        }// end loop over 's'
1029
 
      }// end loop over 'r'
 
865
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
866
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
867
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
868
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
869
      basisvalues[0] *= std::sqrt(0.5);
 
870
      basisvalues[2] *= std::sqrt(1.0);
 
871
      basisvalues[5] *= std::sqrt(1.5);
 
872
      basisvalues[1] *= std::sqrt(3.0);
 
873
      basisvalues[4] *= std::sqrt(4.5);
 
874
      basisvalues[3] *= std::sqrt(7.5);
1030
875
      
1031
876
      // Table(s) of coefficients.
1032
877
      static const double coefficients0[6] = \
1046
891
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1047
892
      
1048
893
      // Declare helper variables.
1049
 
      unsigned int rr = 0;
1050
 
      unsigned int ss = 0;
1051
 
      unsigned int tt = 0;
1052
 
      double tmp5 = 0.0;
1053
 
      double tmp6 = 0.0;
1054
 
      double tmp7 = 0.0;
1055
894
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1056
895
      double tmp1 = (1.0 - Y)/2.0;
1057
896
      double tmp2 = tmp1*tmp1;
1059
898
      // Compute basisvalues.
1060
899
      basisvalues[0] = 1.0;
1061
900
      basisvalues[1] = tmp0;
1062
 
      for (unsigned int r = 1; r < 2; r++)
1063
 
      {
1064
 
        rr = (r + 1)*((r + 1) + 1)/2;
1065
 
        ss = r*(r + 1)/2;
1066
 
        tt = (r - 1)*((r - 1) + 1)/2;
1067
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1068
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1069
 
      }// end loop over 'r'
1070
 
      for (unsigned int r = 0; r < 2; r++)
1071
 
      {
1072
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1073
 
        ss = r*(r + 1)/2;
1074
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1075
 
      }// end loop over 'r'
1076
 
      for (unsigned int r = 0; r < 1; r++)
1077
 
      {
1078
 
        for (unsigned int s = 1; s < 2 - r; s++)
1079
 
        {
1080
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1081
 
          ss = (r + s)*(r + s + 1)/2 + s;
1082
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1083
 
          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));
1084
 
          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));
1085
 
          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));
1086
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1087
 
        }// end loop over 's'
1088
 
      }// end loop over 'r'
1089
 
      for (unsigned int r = 0; r < 3; r++)
1090
 
      {
1091
 
        for (unsigned int s = 0; s < 3 - r; s++)
1092
 
        {
1093
 
          rr = (r + s)*(r + s + 1)/2 + s;
1094
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1095
 
        }// end loop over 's'
1096
 
      }// end loop over 'r'
 
901
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
902
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
903
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
904
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
905
      basisvalues[0] *= std::sqrt(0.5);
 
906
      basisvalues[2] *= std::sqrt(1.0);
 
907
      basisvalues[5] *= std::sqrt(1.5);
 
908
      basisvalues[1] *= std::sqrt(3.0);
 
909
      basisvalues[4] *= std::sqrt(4.5);
 
910
      basisvalues[3] *= std::sqrt(7.5);
1097
911
      
1098
912
      // Table(s) of coefficients.
1099
913
      static const double coefficients0[6] = \
1232
1046
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1233
1047
      
1234
1048
      // Declare helper variables.
1235
 
      unsigned int rr = 0;
1236
 
      unsigned int ss = 0;
1237
 
      unsigned int tt = 0;
1238
 
      double tmp5 = 0.0;
1239
 
      double tmp6 = 0.0;
1240
 
      double tmp7 = 0.0;
1241
1049
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1242
1050
      double tmp1 = (1.0 - Y)/2.0;
1243
1051
      double tmp2 = tmp1*tmp1;
1245
1053
      // Compute basisvalues.
1246
1054
      basisvalues[0] = 1.0;
1247
1055
      basisvalues[1] = tmp0;
1248
 
      for (unsigned int r = 1; r < 2; r++)
1249
 
      {
1250
 
        rr = (r + 1)*((r + 1) + 1)/2;
1251
 
        ss = r*(r + 1)/2;
1252
 
        tt = (r - 1)*((r - 1) + 1)/2;
1253
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1254
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1255
 
      }// end loop over 'r'
1256
 
      for (unsigned int r = 0; r < 2; r++)
1257
 
      {
1258
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1259
 
        ss = r*(r + 1)/2;
1260
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1261
 
      }// end loop over 'r'
1262
 
      for (unsigned int r = 0; r < 1; r++)
1263
 
      {
1264
 
        for (unsigned int s = 1; s < 2 - r; s++)
1265
 
        {
1266
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1267
 
          ss = (r + s)*(r + s + 1)/2 + s;
1268
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1269
 
          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));
1270
 
          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));
1271
 
          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));
1272
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1273
 
        }// end loop over 's'
1274
 
      }// end loop over 'r'
1275
 
      for (unsigned int r = 0; r < 3; r++)
1276
 
      {
1277
 
        for (unsigned int s = 0; s < 3 - r; s++)
1278
 
        {
1279
 
          rr = (r + s)*(r + s + 1)/2 + s;
1280
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1281
 
        }// end loop over 's'
1282
 
      }// end loop over 'r'
 
1056
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1057
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1058
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1059
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1060
      basisvalues[0] *= std::sqrt(0.5);
 
1061
      basisvalues[2] *= std::sqrt(1.0);
 
1062
      basisvalues[5] *= std::sqrt(1.5);
 
1063
      basisvalues[1] *= std::sqrt(3.0);
 
1064
      basisvalues[4] *= std::sqrt(4.5);
 
1065
      basisvalues[3] *= std::sqrt(7.5);
1283
1066
      
1284
1067
      // Table(s) of coefficients.
1285
1068
      static const double coefficients0[6] = \
1429
1212
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1430
1213
      
1431
1214
      // Declare helper variables.
1432
 
      unsigned int rr = 0;
1433
 
      unsigned int ss = 0;
1434
 
      unsigned int tt = 0;
1435
 
      double tmp5 = 0.0;
1436
 
      double tmp6 = 0.0;
1437
 
      double tmp7 = 0.0;
1438
1215
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1439
1216
      double tmp1 = (1.0 - Y)/2.0;
1440
1217
      double tmp2 = tmp1*tmp1;
1442
1219
      // Compute basisvalues.
1443
1220
      basisvalues[0] = 1.0;
1444
1221
      basisvalues[1] = tmp0;
1445
 
      for (unsigned int r = 1; r < 2; r++)
1446
 
      {
1447
 
        rr = (r + 1)*((r + 1) + 1)/2;
1448
 
        ss = r*(r + 1)/2;
1449
 
        tt = (r - 1)*((r - 1) + 1)/2;
1450
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1451
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1452
 
      }// end loop over 'r'
1453
 
      for (unsigned int r = 0; r < 2; r++)
1454
 
      {
1455
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1456
 
        ss = r*(r + 1)/2;
1457
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1458
 
      }// end loop over 'r'
1459
 
      for (unsigned int r = 0; r < 1; r++)
1460
 
      {
1461
 
        for (unsigned int s = 1; s < 2 - r; s++)
1462
 
        {
1463
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1464
 
          ss = (r + s)*(r + s + 1)/2 + s;
1465
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1466
 
          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));
1467
 
          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));
1468
 
          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));
1469
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1470
 
        }// end loop over 's'
1471
 
      }// end loop over 'r'
1472
 
      for (unsigned int r = 0; r < 3; r++)
1473
 
      {
1474
 
        for (unsigned int s = 0; s < 3 - r; s++)
1475
 
        {
1476
 
          rr = (r + s)*(r + s + 1)/2 + s;
1477
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1478
 
        }// end loop over 's'
1479
 
      }// end loop over 'r'
 
1222
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1223
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1224
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1225
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1226
      basisvalues[0] *= std::sqrt(0.5);
 
1227
      basisvalues[2] *= std::sqrt(1.0);
 
1228
      basisvalues[5] *= std::sqrt(1.5);
 
1229
      basisvalues[1] *= std::sqrt(3.0);
 
1230
      basisvalues[4] *= std::sqrt(4.5);
 
1231
      basisvalues[3] *= std::sqrt(7.5);
1480
1232
      
1481
1233
      // Table(s) of coefficients.
1482
1234
      static const double coefficients0[6] = \
1626
1378
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1627
1379
      
1628
1380
      // Declare helper variables.
1629
 
      unsigned int rr = 0;
1630
 
      unsigned int ss = 0;
1631
 
      unsigned int tt = 0;
1632
 
      double tmp5 = 0.0;
1633
 
      double tmp6 = 0.0;
1634
 
      double tmp7 = 0.0;
1635
1381
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1636
1382
      double tmp1 = (1.0 - Y)/2.0;
1637
1383
      double tmp2 = tmp1*tmp1;
1639
1385
      // Compute basisvalues.
1640
1386
      basisvalues[0] = 1.0;
1641
1387
      basisvalues[1] = tmp0;
1642
 
      for (unsigned int r = 1; r < 2; r++)
1643
 
      {
1644
 
        rr = (r + 1)*((r + 1) + 1)/2;
1645
 
        ss = r*(r + 1)/2;
1646
 
        tt = (r - 1)*((r - 1) + 1)/2;
1647
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1648
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1649
 
      }// end loop over 'r'
1650
 
      for (unsigned int r = 0; r < 2; r++)
1651
 
      {
1652
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1653
 
        ss = r*(r + 1)/2;
1654
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1655
 
      }// end loop over 'r'
1656
 
      for (unsigned int r = 0; r < 1; r++)
1657
 
      {
1658
 
        for (unsigned int s = 1; s < 2 - r; s++)
1659
 
        {
1660
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1661
 
          ss = (r + s)*(r + s + 1)/2 + s;
1662
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1663
 
          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));
1664
 
          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));
1665
 
          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));
1666
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1667
 
        }// end loop over 's'
1668
 
      }// end loop over 'r'
1669
 
      for (unsigned int r = 0; r < 3; r++)
1670
 
      {
1671
 
        for (unsigned int s = 0; s < 3 - r; s++)
1672
 
        {
1673
 
          rr = (r + s)*(r + s + 1)/2 + s;
1674
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1675
 
        }// end loop over 's'
1676
 
      }// end loop over 'r'
 
1388
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1389
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1390
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1391
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1392
      basisvalues[0] *= std::sqrt(0.5);
 
1393
      basisvalues[2] *= std::sqrt(1.0);
 
1394
      basisvalues[5] *= std::sqrt(1.5);
 
1395
      basisvalues[1] *= std::sqrt(3.0);
 
1396
      basisvalues[4] *= std::sqrt(4.5);
 
1397
      basisvalues[3] *= std::sqrt(7.5);
1677
1398
      
1678
1399
      // Table(s) of coefficients.
1679
1400
      static const double coefficients0[6] = \
1823
1544
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1824
1545
      
1825
1546
      // Declare helper variables.
1826
 
      unsigned int rr = 0;
1827
 
      unsigned int ss = 0;
1828
 
      unsigned int tt = 0;
1829
 
      double tmp5 = 0.0;
1830
 
      double tmp6 = 0.0;
1831
 
      double tmp7 = 0.0;
1832
1547
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1833
1548
      double tmp1 = (1.0 - Y)/2.0;
1834
1549
      double tmp2 = tmp1*tmp1;
1836
1551
      // Compute basisvalues.
1837
1552
      basisvalues[0] = 1.0;
1838
1553
      basisvalues[1] = tmp0;
1839
 
      for (unsigned int r = 1; r < 2; r++)
1840
 
      {
1841
 
        rr = (r + 1)*((r + 1) + 1)/2;
1842
 
        ss = r*(r + 1)/2;
1843
 
        tt = (r - 1)*((r - 1) + 1)/2;
1844
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1845
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1846
 
      }// end loop over 'r'
1847
 
      for (unsigned int r = 0; r < 2; r++)
1848
 
      {
1849
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1850
 
        ss = r*(r + 1)/2;
1851
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1852
 
      }// end loop over 'r'
1853
 
      for (unsigned int r = 0; r < 1; r++)
1854
 
      {
1855
 
        for (unsigned int s = 1; s < 2 - r; s++)
1856
 
        {
1857
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1858
 
          ss = (r + s)*(r + s + 1)/2 + s;
1859
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1860
 
          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));
1861
 
          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));
1862
 
          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));
1863
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1864
 
        }// end loop over 's'
1865
 
      }// end loop over 'r'
1866
 
      for (unsigned int r = 0; r < 3; r++)
1867
 
      {
1868
 
        for (unsigned int s = 0; s < 3 - r; s++)
1869
 
        {
1870
 
          rr = (r + s)*(r + s + 1)/2 + s;
1871
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1872
 
        }// end loop over 's'
1873
 
      }// end loop over 'r'
 
1554
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1555
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1556
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1557
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1558
      basisvalues[0] *= std::sqrt(0.5);
 
1559
      basisvalues[2] *= std::sqrt(1.0);
 
1560
      basisvalues[5] *= std::sqrt(1.5);
 
1561
      basisvalues[1] *= std::sqrt(3.0);
 
1562
      basisvalues[4] *= std::sqrt(4.5);
 
1563
      basisvalues[3] *= std::sqrt(7.5);
1874
1564
      
1875
1565
      // Table(s) of coefficients.
1876
1566
      static const double coefficients0[6] = \
2020
1710
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2021
1711
      
2022
1712
      // Declare helper variables.
2023
 
      unsigned int rr = 0;
2024
 
      unsigned int ss = 0;
2025
 
      unsigned int tt = 0;
2026
 
      double tmp5 = 0.0;
2027
 
      double tmp6 = 0.0;
2028
 
      double tmp7 = 0.0;
2029
1713
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2030
1714
      double tmp1 = (1.0 - Y)/2.0;
2031
1715
      double tmp2 = tmp1*tmp1;
2033
1717
      // Compute basisvalues.
2034
1718
      basisvalues[0] = 1.0;
2035
1719
      basisvalues[1] = tmp0;
2036
 
      for (unsigned int r = 1; r < 2; r++)
2037
 
      {
2038
 
        rr = (r + 1)*((r + 1) + 1)/2;
2039
 
        ss = r*(r + 1)/2;
2040
 
        tt = (r - 1)*((r - 1) + 1)/2;
2041
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2042
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2043
 
      }// end loop over 'r'
2044
 
      for (unsigned int r = 0; r < 2; r++)
2045
 
      {
2046
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2047
 
        ss = r*(r + 1)/2;
2048
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2049
 
      }// end loop over 'r'
2050
 
      for (unsigned int r = 0; r < 1; r++)
2051
 
      {
2052
 
        for (unsigned int s = 1; s < 2 - r; s++)
2053
 
        {
2054
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2055
 
          ss = (r + s)*(r + s + 1)/2 + s;
2056
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2057
 
          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));
2058
 
          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));
2059
 
          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));
2060
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2061
 
        }// end loop over 's'
2062
 
      }// end loop over 'r'
2063
 
      for (unsigned int r = 0; r < 3; r++)
2064
 
      {
2065
 
        for (unsigned int s = 0; s < 3 - r; s++)
2066
 
        {
2067
 
          rr = (r + s)*(r + s + 1)/2 + s;
2068
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2069
 
        }// end loop over 's'
2070
 
      }// end loop over 'r'
 
1720
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1721
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1722
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1723
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1724
      basisvalues[0] *= std::sqrt(0.5);
 
1725
      basisvalues[2] *= std::sqrt(1.0);
 
1726
      basisvalues[5] *= std::sqrt(1.5);
 
1727
      basisvalues[1] *= std::sqrt(3.0);
 
1728
      basisvalues[4] *= std::sqrt(4.5);
 
1729
      basisvalues[3] *= std::sqrt(7.5);
2071
1730
      
2072
1731
      // Table(s) of coefficients.
2073
1732
      static const double coefficients0[6] = \
2217
1876
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2218
1877
      
2219
1878
      // Declare helper variables.
2220
 
      unsigned int rr = 0;
2221
 
      unsigned int ss = 0;
2222
 
      unsigned int tt = 0;
2223
 
      double tmp5 = 0.0;
2224
 
      double tmp6 = 0.0;
2225
 
      double tmp7 = 0.0;
2226
1879
      double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2227
1880
      double tmp1 = (1.0 - Y)/2.0;
2228
1881
      double tmp2 = tmp1*tmp1;
2230
1883
      // Compute basisvalues.
2231
1884
      basisvalues[0] = 1.0;
2232
1885
      basisvalues[1] = tmp0;
2233
 
      for (unsigned int r = 1; r < 2; r++)
2234
 
      {
2235
 
        rr = (r + 1)*((r + 1) + 1)/2;
2236
 
        ss = r*(r + 1)/2;
2237
 
        tt = (r - 1)*((r - 1) + 1)/2;
2238
 
        tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2239
 
        basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2240
 
      }// end loop over 'r'
2241
 
      for (unsigned int r = 0; r < 2; r++)
2242
 
      {
2243
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2244
 
        ss = r*(r + 1)/2;
2245
 
        basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2246
 
      }// end loop over 'r'
2247
 
      for (unsigned int r = 0; r < 1; r++)
2248
 
      {
2249
 
        for (unsigned int s = 1; s < 2 - r; s++)
2250
 
        {
2251
 
          rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2252
 
          ss = (r + s)*(r + s + 1)/2 + s;
2253
 
          tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2254
 
          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));
2255
 
          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));
2256
 
          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));
2257
 
          basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2258
 
        }// end loop over 's'
2259
 
      }// end loop over 'r'
2260
 
      for (unsigned int r = 0; r < 3; r++)
2261
 
      {
2262
 
        for (unsigned int s = 0; s < 3 - r; s++)
2263
 
        {
2264
 
          rr = (r + s)*(r + s + 1)/2 + s;
2265
 
          basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2266
 
        }// end loop over 's'
2267
 
      }// end loop over 'r'
 
1886
      basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
 
1887
      basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
 
1888
      basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
 
1889
      basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
 
1890
      basisvalues[0] *= std::sqrt(0.5);
 
1891
      basisvalues[2] *= std::sqrt(1.0);
 
1892
      basisvalues[5] *= std::sqrt(1.5);
 
1893
      basisvalues[1] *= std::sqrt(3.0);
 
1894
      basisvalues[4] *= std::sqrt(4.5);
 
1895
      basisvalues[3] *= std::sqrt(7.5);
2268
1896
      
2269
1897
      // Table(s) of coefficients.
2270
1898
      static const double coefficients0[6] = \