476 real dx3 = dx*dx*dx - dx;
477 real dx3dx = 3*dx*dx - 1.0;
479 real dxi3 = dxi*dxi*dxi - dxi;
480 real dxi3dx = -3*dxi*dxi + 1.0;
490 real dy3 = dy*dy*dy-dy;
491 real dy3dy = 3*dy*dy - 1.0;
493 real dyi3 = dyi*dyi*dyi - dyi;
494 real dyi3dy = -3*dyi*dyi + 1.0;
504 real dz3 = dz*dz*dz - dz;
505 real dz3dz = 3*dz*dz - 1.0;
507 real dzi3 = dzi*dzi*dzi - dzi;
508 real dzi3dz = -3*dzi*dzi + 1.0;
514 int n = i_z*str->
n_y*str->
n_x*8 + i_y*str->
n_x*8 + i_x*8;
517 int z1 = str->
n_y*str->
n_x*8;
523 x1 = -(str->
n_x-1)*x1;
529 y1 = -(str->
n_y-1)*y1;
535 z1 = -(str->
n_z-1)*z1;
548 real c0000 = str->
c[n+0];
549 real c0001 = str->
c[n+1];
550 real c0002 = str->
c[n+2];
551 real c0003 = str->
c[n+3];
552 real c0004 = str->
c[n+4];
553 real c0005 = str->
c[n+5];
554 real c0006 = str->
c[n+6];
555 real c0007 = str->
c[n+7];
557 real c0010 = str->
c[n+x1+0];
558 real c0011 = str->
c[n+x1+1];
559 real c0012 = str->
c[n+x1+2];
560 real c0013 = str->
c[n+x1+3];
561 real c0014 = str->
c[n+x1+4];
562 real c0015 = str->
c[n+x1+5];
563 real c0016 = str->
c[n+x1+6];
564 real c0017 = str->
c[n+x1+7];
566 real c0100 = str->
c[n+y1+0];
567 real c0101 = str->
c[n+y1+1];
568 real c0102 = str->
c[n+y1+2];
569 real c0103 = str->
c[n+y1+3];
570 real c0104 = str->
c[n+y1+4];
571 real c0105 = str->
c[n+y1+5];
572 real c0106 = str->
c[n+y1+6];
573 real c0107 = str->
c[n+y1+7];
575 real c1000 = str->
c[n+z1+0];
576 real c1001 = str->
c[n+z1+1];
577 real c1002 = str->
c[n+z1+2];
578 real c1003 = str->
c[n+z1+3];
579 real c1004 = str->
c[n+z1+4];
580 real c1005 = str->
c[n+z1+5];
581 real c1006 = str->
c[n+z1+6];
582 real c1007 = str->
c[n+z1+7];
584 real c0110 = str->
c[n+y1+x1+0];
585 real c0111 = str->
c[n+y1+x1+1];
586 real c0112 = str->
c[n+y1+x1+2];
587 real c0113 = str->
c[n+y1+x1+3];
588 real c0114 = str->
c[n+y1+x1+4];
589 real c0115 = str->
c[n+y1+x1+5];
590 real c0116 = str->
c[n+y1+x1+6];
591 real c0117 = str->
c[n+y1+x1+7];
593 real c1010 = str->
c[n+z1+x1+0];
594 real c1011 = str->
c[n+z1+x1+1];
595 real c1012 = str->
c[n+z1+x1+2];
596 real c1013 = str->
c[n+z1+x1+3];
597 real c1014 = str->
c[n+z1+x1+4];
598 real c1015 = str->
c[n+z1+x1+5];
599 real c1016 = str->
c[n+z1+x1+6];
600 real c1017 = str->
c[n+z1+x1+7];
602 real c1100 = str->
c[n+z1+y1+0];
603 real c1101 = str->
c[n+z1+y1+1];
604 real c1102 = str->
c[n+z1+y1+2];
605 real c1103 = str->
c[n+z1+y1+3];
606 real c1104 = str->
c[n+z1+y1+4];
607 real c1105 = str->
c[n+z1+y1+5];
608 real c1106 = str->
c[n+z1+y1+6];
609 real c1107 = str->
c[n+z1+y1+7];
611 real c1110 = str->
c[n+z1+y1+x1+0];
612 real c1111 = str->
c[n+z1+y1+x1+1];
613 real c1112 = str->
c[n+z1+y1+x1+2];
614 real c1113 = str->
c[n+z1+y1+x1+3];
615 real c1114 = str->
c[n+z1+y1+x1+4];
616 real c1115 = str->
c[n+z1+y1+x1+5];
617 real c1116 = str->
c[n+z1+y1+x1+6];
618 real c1117 = str->
c[n+z1+y1+x1+7];
625 dxi*(dyi*c0000+dy*c0100)
626 +dx*(dyi*c0010+dy*c0110))
628 dxi*(dyi*c1000+dy*c1100)
629 +dx*(dyi*c1010+dy*c1110)))
632 dxi3*(dyi*c0001+dy*c0101)
633 +dx3*(dyi*c0011+dy*c0111))
635 dxi3*(dyi*c1001+dy*c1101)
636 +dx3*(dyi*c1011+dy*c1111)))
639 dxi*(dyi3*c0002+dy3*c0102)
640 +dx*(dyi3*c0012+dy3*c0112))
642 dxi*(dyi3*c1002+dy3*c1102)
643 +dx*(dyi3*c1012+dy3*c1112)))
646 dxi*(dyi*c0003+dy*c0103)
647 +dx*(dyi*c0013+dy*c0113))
649 dxi*(dyi*c1003+dy*c1103)
650 +dx*(dyi*c1013+dy*c1113)))
653 dxi3*(dyi3*c0004+dy3*c0104)
654 +dx3*(dyi3*c0014+dy3*c0114))
656 dxi3*(dyi3*c1004+dy3*c1104)
657 +dx3*(dyi3*c1014+dy3*c1114)))
660 dxi3*(dyi*c0005+dy*c0105)
661 +dx3*(dyi*c0015+dy*c0115))
663 dxi3*(dyi*c1005+dy*c1105)
664 +dx3*(dyi*c1015+dy*c1115)))
667 dxi*(dyi3*c0006+dy3*c0106)
668 +dx*(dyi3*c0016+dy3*c0116))
670 dxi*(dyi3*c1006+dy3*c1106)
671 +dx*(dyi3*c1016+dy3*c1116)))
674 dxi3*(dyi3*c0007+dy3*c0107)
675 +dx3*(dyi3*c0017+dy3*c0117))
677 dxi3*(dyi3*c1007+dy3*c1107)
678 +dx3*(dyi3*c1017+dy3*c1117)));
683 -(dyi*c0000+dy*c0100)
684 +(dyi*c0010+dy*c0110))
686 -(dyi*c1000+dy*c1100)
687 +(dyi*c1010+dy*c1110)))
690 dxi3dx*(dyi*c0001+dy*c0101)
691 +dx3dx*(dyi*c0011+dy*c0111))
693 dxi3dx*(dyi*c1001 +dy*c1101)
694 +dx3dx*(dyi*c1011+dy*c1111)))
697 -(dyi3*c0002+dy3*c0102)
698 +(dyi3*c0012+dy3*c0112))
700 -(dyi3*c1002+dy3*c1102)
701 +(dyi3*c1012+dy3*c1112)))
704 -(dyi*c0003+dy*c0103)
705 +(dyi*c0013+dy*c0113))
707 -(dyi*c1003+dy*c1103)
708 +(dyi*c1013+dy*c1113)))
711 dxi3dx*(dyi3*c0004+dy3*c0104)
712 +dx3dx*(dyi3*c0014+dy3*c0114))
714 dxi3dx*(dyi3*c1004+dy3*c1104)
715 +dx3dx*(dyi3*c1014+dy3*c1114)))
718 dxi3dx*(dyi*c0005+dy*c0105)
719 +dx3dx*(dyi*c0015+dy*c0115))
721 dxi3dx*(dyi*c1005+dy*c1105)
722 +dx3dx*(dyi*c1015+dy*c1115)))
725 -(dyi3*c0006+dy3*c0106)
726 +(dyi3*c0016+dy3*c0116))
728 -(dyi3*c1006+dy3*c1106)
729 +(dyi3*c1016+dy3*c1116)))
732 dxi3dx*(dyi3*c0007+dy3*c0107)
733 +dx3dx*(dyi3*c0017+dy3*c0117))
735 dxi3dx*(dyi3*c1007+dy3*c1107)
736 +dx3dx*(dyi3*c1017+dy3*c1117)));
752 +dx3*(-c1011+c1111)))
755 dxi*(dyi3dy*c0002+dy3dy*c0102)
756 +dx*(dyi3dy*c0012+dy3dy*c0112))
758 dxi*(dyi3dy*c1002+dy3dy*c1102)
759 +dx*(dyi3dy*c1012+dy3dy*c1112)))
769 dxi3*(dyi3dy*c0004+dy3dy*c0104)
770 +dx3*(dyi3dy*c0014+dy3dy*c0114))
772 dxi3*(dyi3dy*c1004+dy3dy*c1104)
773 +dx3*(dyi3dy*c1014+dy3dy*c1114)))
780 +dx3*(-c1015+c1115)))
783 dxi*(dyi3dy*c0006+dy3dy*c0106)
784 +dx*(dyi3dy*c0016+dy3dy*c0116))
786 dxi*(dyi3dy*c1006+dy3dy*c1106)
787 +dx*(dyi3dy*c1016+dy3dy*c1116)))
790 dxi3*(dyi3dy*c0007+dy3dy*c0107)
791 +dx3*(dyi3dy*c0017+dy3dy*c0117))
793 dxi3*(dyi3dy*c1007+dy3dy*c1107)
794 +dx3*(dyi3dy*c1017+dy3dy*c1117)));
799 dxi*(dyi*c0000+dy*c0100)
800 +dx*(dyi*c0010+dy*c0110))
802 dxi*(dyi*c1000+dy*c1100)
803 +dx*(dyi*c1010+dy*c1110)))
806 dxi3*(dyi*c0001+dy*c0101)
807 +dx3*(dyi*c0011+dy*c0111))
809 dxi3*(dyi*c1001+dy*c1101)
810 +dx3*(dyi*c1011+dy*c1111)))
813 dxi*(dyi3*c0002+dy3*c0102)
814 +dx*(dyi3*c0012+dy3*c0112))
816 dxi*(dyi3*c1002+dy3*c1102)
817 +dx*(dyi3*c1012+dy3*c1112)))
820 dxi*(dyi*c0003+dy*c0103)
821 +dx*(dyi*c0013+dy*c0113))
823 dxi*(dyi*c1003+dy*c1103)
824 +dx*(dyi*c1013+dy*c1113)))
827 dxi3*(dyi3*c0004+dy3*c0104)
828 +dx3*(dyi3*c0014+dy3*c0114))
830 dxi3*(dyi3*c1004+dy3*c1104)
831 +dx3*(dyi3*c1014+dy3*c1114)))
834 dxi3*(dyi*c0005+dy*c0105)
835 +dx3*(dyi*c0015+dy*c0115))
837 dxi3*(dyi*c1005+dy*c1105)
838 +dx3*(dyi*c1015+dy*c1115)))
841 dxi*(dyi3*c0006+dy3*c0106)
842 +dx*(dyi3*c0016+dy3*c0116))
844 dxi*(dyi3*c1006+dy3*c1106)
845 +dx*(dyi3*c1016+dy3*c1116)))
848 dxi3*(dyi3*c0007+dy3*c0107)
849 +dx3*(dyi3*c0017+dy3*c0117))
851 dxi3*(dyi3*c1007+dy3*c1107)
852 +dx3*(dyi3*c1017+dy3*c1117)));
857 dxi*(dyi*c0001+dy*c0101)
858 +dx*(dyi*c0011+dy*c0111))
860 dxi*(dyi*c1001+dy*c1101)
861 +dx*(dyi*c1011+dy*c1111)))
864 dxi*(dyi3*c0004+dy3*c0104)
865 +dx*(dyi3*c0014+dy3*c0114))
867 dxi*(dyi3*c1004+dy3*c1104)
868 +dx*(dyi3*c1014+dy3*c1114)))
871 dxi*(dyi*c0005+dy*c0105)
872 +dx*(dyi*c0015+dy*c0115))
874 dxi*(dyi*c1005+dy*c1105)
875 +dx*(dyi*c1015+dy*c1115)))
878 dxi*(dyi3*c0007+dy3*c0107)
879 +dx*(dyi3*c0017+dy3*c0117))
881 dxi*(dyi3*c1007+dy3*c1107)
882 +dx*(dyi3*c1017+dy3*c1117)));
887 dxi*(dyi*c0002+dy*c0102)
888 +dx*(dyi*c0012+dy*c0112))
890 dxi*(dyi*c1002+dy*c1102)
891 +dx*(dyi*c1012+dy*c1112)))
894 dxi3*(dyi*c0004+dy*c0104)
895 +dx3*(dyi*c0014+dy*c0114))
897 dxi3*(dyi*c1004+dy*c1104)
898 +dx3*(dyi*c1014+dy*c1114)))
901 dxi*(dyi*c0006+dy*c0106)
902 +dx*(dyi*c0016+dy*c0116))
904 dxi*(dyi*c1006+dy*c1106)
905 +dx*(dyi*c1016+dy*c1116)))
908 dxi3*(dyi*c0007+dy*c0107)
909 +dx3*(dyi*c0017+dy*c0117))
911 dxi3*(dyi*c1007+dy*c1107)
912 +dx3*(dyi*c1017+dy*c1117)));
917 dxi*(dyi*c0003+dy*c0103)
918 +dx*(dyi*c0013+dy*c0113))
920 dxi*(dyi*c1003+dy*c1103)
921 +dx*(dyi*c1013+dy*c1113)))
924 dxi3*(dyi*c0005+dy*c0105)
925 +dx3*(dyi*c0015+dy*c0115))
927 dxi3*(dyi*c1005+dy*c1105)
928 +dx3*(dyi*c1015+dy*c1115)))
931 dxi*(dyi3*c0006+dy3*c0106)
932 +dx*(dyi3*c0016+dy3*c0116))
934 dxi*(dyi3*c1006+dy3*c1106)
935 +dx*(dyi3*c1016+dy3*c1116)))
938 dxi3*(dyi3*c0007+dy3*c0107)
939 +dx3*(dyi3*c0017+dy3*c0117))
941 dxi3*(dyi3*c1007+dy3*c1107)
942 +dx3*(dyi3*c1017+dy3*c1117)));
954 dxi3dx*(-c0001+c0101)
955 +dx3dx*(-c0011+c0111))
957 dxi3dx*(-c1001+c1101)
958 +dx3dx*(-c1011+c1111)))
961 -(dyi3dy*c0002+dy3dy*c0102)
962 +(dyi3dy*c0012+dy3dy*c0112))
964 -(dyi3dy*c1002+dy3dy*c1102)
965 +(dyi3dy*c1012+dy3dy*c1112)))
975 dxi3dx*(dyi3dy*c0004+dy3dy*c0104)
976 +dx3dx*(dyi3dy*c0014+dy3dy*c0114))
978 dxi3dx*(dyi3dy*c1004+dy3dy*c1104)
979 +dx3dx*(dyi3dy*c1014+dy3dy*c1114)))
982 dxi3dx*(-c0005+c0105)
983 +dx3dx*(-c0015+c0115))
985 dxi3dx*(-c1005+c1105)
986 +dx3dx*(-c1015+c1115)))
989 -(dyi3dy*c0006+dy3dy*c0106)
990 +(dyi3dy*c0016+dy3dy*c0116))
992 -(dyi3dy*c1006+dy3dy*c1106)
993 +(dyi3dy*c1016+dy3dy*c1116)))
996 dxi3dx*(dyi3dy*c0007+dy3dy*c0107)
997 +dx3dx*(dyi3dy*c0017+dy3dy*c0117))
999 dxi3dx*(dyi3dy*c1007+dy3dy*c1107)
1000 +dx3dx*(dyi3dy*c1017+dy3dy*c1117)));
1005 (dyi*c0000+dy*c0100)
1006 -(dyi*c0010+dy*c0110))
1008 (dyi*c1000+dy*c1100)
1009 -(dyi*c1010+dy*c1110)))
1012 dxi3dx*(dyi*c0001+dy*c0101)
1013 +dx3dx*(dyi*c0011+dy*c0111))
1015 dxi3dx*(dyi*c1001+dy*c1101)
1016 +dx3dx*(dyi*c1011+dy*c1111)))
1019 (dyi3*c0002+dy3*c0102)
1020 -(dyi3*c0012+dy3*c0112))
1022 (dyi3*c1002+dy3*c1102)
1023 -(dyi3*c1012+dy3*c1112)))
1026 -(dyi*c0003+dy*c0103)
1027 +(dyi*c0013+dy*c0113))
1029 -(dyi*c1003+dy*c1103)
1030 +(dyi*c1013+dy*c1113)))
1033 dxi3dx*(dyi3*c0004+dy3*c0104)
1034 +dx3dx*(dyi3*c0014+dy3*c0114))
1036 dxi3dx*(dyi3*c1004+dy3*c1104)
1037 +dx3dx*(dyi3*c1014+dy3*c1114)))
1040 dxi3dx*(dyi*c0005+dy*c0105)
1041 +dx3dx*(dyi*c0015+dy*c0115))
1043 dxi3dx*(dyi*c1005+dy*c1105)
1044 +dx3dx*(dyi*c1015+dy*c1115)))
1047 -(dyi3*c0006+dy3*c0106)
1048 +(dyi3*c0016+dy3*c0116))
1050 -(dyi3*c1006+dy3*c1106)
1051 +(dyi3*c1016+dy3*c1116)))
1054 dxi3dx*(dyi3*c0007+dy3*c0107)
1055 +dx3dx*(dyi3*c0017+dy3*c0117))
1057 dxi3dx*(dyi3*c1007+dy3*c1107)
1058 +dx3dx*(dyi3*c1017+dy3*c1117)));
1074 +dx3*(c1011-c1111)))
1077 dxi*(dyi3dy*c0002+dy3dy*c0102)
1078 +dx*(dyi3dy*c0012+dy3dy*c0112))
1080 dxi*(dyi3dy*c1002+dy3dy*c1102)
1081 +dx*(dyi3dy*c1012+dy3dy*c1112)))
1088 +dx*(-c1013+c1113)))
1091 dxi3*(dyi3dy*c0004+dy3dy*c0104)
1092 +dx3*(dyi3dy*c0014+dy3dy*c0114))
1094 dxi3*(dyi3dy*c1004+dy3dy*c1104)
1095 +dx3*(dyi3dy*c1014+dy3dy*c1114)))
1099 +dx3*(-c0015+c0115))
1102 +dx3*(-c1015+c1115)))
1105 dxi*(dyi3dy*c0006+dy3dy*c0106)
1106 +dx*(dyi3dy*c0016+dy3dy*c0116))
1108 dxi*(dyi3dy*c1006+dy3dy*c1106)
1109 +dx*(dyi3dy*c1016+dy3dy*c1116)))
1112 dxi3*(dyi3dy*c0007+dy3dy*c0107)
1113 +dx3*(dyi3dy*c0017+dy3dy*c0117))
1115 dxi3*(dyi3dy*c1007+dy3dy*c1107)
1116 +dx3*(dyi3dy*c1017+dy3dy*c1117)));