void Zu(double *Z, double *u, int len) {
  Z[0 + 0 * len * 7] = -1;
  Z[0 + 6 * len * 7] = (u[0]);
  Z[1 + 1 * len * 7] = -1;
  Z[1 + 7 * len * 7] = (u[0]);
  Z[2 + 2 * len * 7] = -1;
  Z[2 + 6 * len * 7] = -(u[0]) * (u[5]);
  Z[2 + 7 * len * 7] = -(u[0]) * (u[6]);
  Z[3 + 3 * len * 7] = -1;
  Z[3 + 6 * len * 7] = (u[1]);
  Z[4 + 4 * len * 7] = -1;
  Z[4 + 7 * len * 7] = (u[1]);
  Z[5 + 5 * len * 7] = -1;
  Z[5 + 6 * len * 7] = -(u[1]) * (u[5]);
  Z[5 + 7 * len * 7] = -(u[1]) * (u[6]);
  Z[6 + 8 * len * 7] = -1;
  Z[6 + 6 * len * 7] = -(u[5]);
  Z[6 + 7 * len * 7] = -(u[6]);
}


x86 assembly (clang, -O0):
<Zu>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x8(%rbp),%rax
imul   $0x0,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  0xed8(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x6,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x0,%ecx
imul   $0x7,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  0xe9a(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x7,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
imul   $0x7,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  0xe5c(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x6,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x7,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x3,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  0xdc2(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x6,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
imul   $0x7,%ecx,%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  0xd83(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x7,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x5,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  0xd46(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x6,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
imul   $0x7,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x3,%ecx
imul   $0x7,%ecx,%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  0xca8(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
imul   $0x6,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
imul   $0x7,-0x14(%rbp),%ecx
imul   $0x7,%ecx,%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
pop    %rbp
ret

x86 assembly (clang, -O2):
<Zu>:
movabs $0xbff0000000000000,%r8
mov    %r8,(%rdi)
movsd  (%rsi),%xmm0
imul   $0x2a,%edx,%eax
movslq %eax,%r9
movsd  %xmm0,(%rdi,%r9,8)
lea    0x0(,%rdx,8),%eax
sub    %edx,%eax
cltq
mov    %r8,0x8(%rdi,%rax,8)
movsd  (%rsi),%xmm0
imul   $0x31,%edx,%eax
cltq
movsd  %xmm0,0x8(%rdi,%rax,8)
mov    %edx,%ecx
shl    $0x4,%ecx
sub    %edx,%ecx
sub    %edx,%ecx
movslq %ecx,%rcx
mov    %r8,0x10(%rdi,%rcx,8)
movsd  (%rsi),%xmm1
movapd 0xea7(%rip),%xmm0
xorpd  %xmm0,%xmm1
mulsd  0x28(%rsi),%xmm1
movsd  %xmm1,0x10(%rdi,%r9,8)
movsd  (%rsi),%xmm1
xorpd  %xmm0,%xmm1
mulsd  0x30(%rsi),%xmm1
movsd  %xmm1,0x10(%rdi,%rax,8)
lea    (%rdx,%rdx,4),%ecx
lea    (%rdx,%rcx,4),%ecx
movslq %ecx,%rcx
mov    %r8,0x18(%rdi,%rcx,8)
movsd  0x8(%rsi),%xmm1
movsd  %xmm1,0x18(%rdi,%r9,8)
lea    (%rdx,%rdx,8),%ecx
lea    (%rcx,%rcx,2),%ecx
add    %edx,%ecx
movslq %ecx,%rcx
mov    %r8,0x20(%rdi,%rcx,8)
movsd  0x8(%rsi),%xmm1
movsd  %xmm1,0x20(%rdi,%rax,8)
imul   $0x23,%edx,%ecx
movslq %ecx,%rcx
mov    %r8,0x28(%rdi,%rcx,8)
movsd  0x8(%rsi),%xmm1
xorpd  %xmm0,%xmm1
mulsd  0x28(%rsi),%xmm1
movsd  %xmm1,0x28(%rdi,%r9,8)
movsd  0x8(%rsi),%xmm1
xorpd  %xmm0,%xmm1
mulsd  0x30(%rsi),%xmm1
movsd  %xmm1,0x28(%rdi,%rax,8)
imul   $0x38,%edx,%ecx
or     $0x6,%ecx
movslq %ecx,%rcx
mov    %r8,(%rdi,%rcx,8)
movsd  0x28(%rsi),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x30(%rdi,%r9,8)
movsd  0x30(%rsi),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x30(%rdi,%rax,8)
ret

LLVM IR (-O0):
define void @Zu(double* %0, double* %1, i32 %2) {
%4 = alloca double*
%5 = alloca double*
%6 = alloca i32
store double* %0, double** %4
store double* %1, double** %5
store i32 %2, i32* %6
%7 = load double*, double** %4
%8 = load i32, i32* %6
%9 = mul nsw i32 0, %8
%10 = mul nsw i32 %9, 7
%11 = add nsw i32 0, %10
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds double, double* %7, i64 %12
store double -1.000000e+00, double* %13
%14 = load double*, double** %5
%15 = getelementptr inbounds double, double* %14, i64 0
%16 = load double, double* %15
%17 = load double*, double** %4
%18 = load i32, i32* %6
%19 = mul nsw i32 6, %18
%20 = mul nsw i32 %19, 7
%21 = add nsw i32 0, %20
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds double, double* %17, i64 %22
store double %16, double* %23
%24 = load double*, double** %4
%25 = load i32, i32* %6
%26 = mul nsw i32 1, %25
%27 = mul nsw i32 %26, 7
%28 = add nsw i32 1, %27
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds double, double* %24, i64 %29
store double -1.000000e+00, double* %30
%31 = load double*, double** %5
%32 = getelementptr inbounds double, double* %31, i64 0
%33 = load double, double* %32
%34 = load double*, double** %4
%35 = load i32, i32* %6
%36 = mul nsw i32 7, %35
%37 = mul nsw i32 %36, 7
%38 = add nsw i32 1, %37
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds double, double* %34, i64 %39
store double %33, double* %40
%41 = load double*, double** %4
%42 = load i32, i32* %6
%43 = mul nsw i32 2, %42
%44 = mul nsw i32 %43, 7
%45 = add nsw i32 2, %44
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %41, i64 %46
store double -1.000000e+00, double* %47
%48 = load double*, double** %5
%49 = getelementptr inbounds double, double* %48, i64 0
%50 = load double, double* %49
%51 = fneg double %50
%52 = load double*, double** %5
%53 = getelementptr inbounds double, double* %52, i64 5
%54 = load double, double* %53
%55 = fmul double %51, %54
%56 = load double*, double** %4
%57 = load i32, i32* %6
%58 = mul nsw i32 6, %57
%59 = mul nsw i32 %58, 7
%60 = add nsw i32 2, %59
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds double, double* %56, i64 %61
store double %55, double* %62
%63 = load double*, double** %5
%64 = getelementptr inbounds double, double* %63, i64 0
%65 = load double, double* %64
%66 = fneg double %65
%67 = load double*, double** %5
%68 = getelementptr inbounds double, double* %67, i64 6
%69 = load double, double* %68
%70 = fmul double %66, %69
%71 = load double*, double** %4
%72 = load i32, i32* %6
%73 = mul nsw i32 7, %72
%74 = mul nsw i32 %73, 7
%75 = add nsw i32 2, %74
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds double, double* %71, i64 %76
store double %70, double* %77
%78 = load double*, double** %4
%79 = load i32, i32* %6
%80 = mul nsw i32 3, %79
%81 = mul nsw i32 %80, 7
%82 = add nsw i32 3, %81
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds double, double* %78, i64 %83
store double -1.000000e+00, double* %84
%85 = load double*, double** %5
%86 = getelementptr inbounds double, double* %85, i64 1
%87 = load double, double* %86
%88 = load double*, double** %4
%89 = load i32, i32* %6
%90 = mul nsw i32 6, %89
%91 = mul nsw i32 %90, 7
%92 = add nsw i32 3, %91
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %88, i64 %93
store double %87, double* %94
%95 = load double*, double** %4
%96 = load i32, i32* %6
%97 = mul nsw i32 4, %96
%98 = mul nsw i32 %97, 7
%99 = add nsw i32 4, %98
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds double, double* %95, i64 %100
store double -1.000000e+00, double* %101
%102 = load double*, double** %5
%103 = getelementptr inbounds double, double* %102, i64 1
%104 = load double, double* %103
%105 = load double*, double** %4
%106 = load i32, i32* %6
%107 = mul nsw i32 7, %106
%108 = mul nsw i32 %107, 7
%109 = add nsw i32 4, %108
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %105, i64 %110
store double %104, double* %111
%112 = load double*, double** %4
%113 = load i32, i32* %6
%114 = mul nsw i32 5, %113
%115 = mul nsw i32 %114, 7
%116 = add nsw i32 5, %115
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds double, double* %112, i64 %117
store double -1.000000e+00, double* %118
%119 = load double*, double** %5
%120 = getelementptr inbounds double, double* %119, i64 1
%121 = load double, double* %120
%122 = fneg double %121
%123 = load double*, double** %5
%124 = getelementptr inbounds double, double* %123, i64 5
%125 = load double, double* %124
%126 = fmul double %122, %125
%127 = load double*, double** %4
%128 = load i32, i32* %6
%129 = mul nsw i32 6, %128
%130 = mul nsw i32 %129, 7
%131 = add nsw i32 5, %130
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %127, i64 %132
store double %126, double* %133
%134 = load double*, double** %5
%135 = getelementptr inbounds double, double* %134, i64 1
%136 = load double, double* %135
%137 = fneg double %136
%138 = load double*, double** %5
%139 = getelementptr inbounds double, double* %138, i64 6
%140 = load double, double* %139
%141 = fmul double %137, %140
%142 = load double*, double** %4
%143 = load i32, i32* %6
%144 = mul nsw i32 7, %143
%145 = mul nsw i32 %144, 7
%146 = add nsw i32 5, %145
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %142, i64 %147
store double %141, double* %148
%149 = load double*, double** %4
%150 = load i32, i32* %6
%151 = mul nsw i32 8, %150
%152 = mul nsw i32 %151, 7
%153 = add nsw i32 6, %152
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds double, double* %149, i64 %154
store double -1.000000e+00, double* %155
%156 = load double*, double** %5
%157 = getelementptr inbounds double, double* %156, i64 5
%158 = load double, double* %157
%159 = fneg double %158
%160 = load double*, double** %4
%161 = load i32, i32* %6
%162 = mul nsw i32 6, %161
%163 = mul nsw i32 %162, 7
%164 = add nsw i32 6, %163
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds double, double* %160, i64 %165
store double %159, double* %166
%167 = load double*, double** %5
%168 = getelementptr inbounds double, double* %167, i64 6
%169 = load double, double* %168
%170 = fneg double %169
%171 = load double*, double** %4
%172 = load i32, i32* %6
%173 = mul nsw i32 7, %172
%174 = mul nsw i32 %173, 7
%175 = add nsw i32 6, %174
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds double, double* %171, i64 %176
store double %170, double* %177
ret void
}

LLVM IR (-O2):
define void @Zu(double* nocapture writeonly %0, double* nocapture %1, i32 %2) {
store double -1.000000e+00, double* %0
%4 = load double, double* %1
%5 = mul i32 %2, 42
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds double, double* %0, i64 %6
store double %4, double* %7
%8 = mul nsw i32 %2, 7
%9 = add nsw i32 %8, 1
%10 = sext i32 %9 to i64
%11 = getelementptr inbounds double, double* %0, i64 %10
store double -1.000000e+00, double* %11
%12 = load double, double* %1
%13 = mul i32 %2, 49
%14 = add nsw i32 %13, 1
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds double, double* %0, i64 %15
store double %12, double* %16
%17 = mul nsw i32 %2, 14
%18 = add nsw i32 %17, 2
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds double, double* %0, i64 %19
store double -1.000000e+00, double* %20
%21 = load double, double* %1
%22 = fneg double %21
%23 = getelementptr inbounds double, double* %1, i64 5
%24 = load double, double* %23
%25 = fmul double %24, %22
%26 = add nsw i32 %5, 2
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds double, double* %0, i64 %27
store double %25, double* %28
%29 = load double, double* %1
%30 = fneg double %29
%31 = getelementptr inbounds double, double* %1, i64 6
%32 = load double, double* %31
%33 = fmul double %32, %30
%34 = add nsw i32 %13, 2
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds double, double* %0, i64 %35
store double %33, double* %36
%37 = mul i32 %2, 21
%38 = add nsw i32 %37, 3
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds double, double* %0, i64 %39
store double -1.000000e+00, double* %40
%41 = getelementptr inbounds double, double* %1, i64 1
%42 = load double, double* %41
%43 = add nsw i32 %5, 3
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds double, double* %0, i64 %44
store double %42, double* %45
%46 = mul nsw i32 %2, 28
%47 = add nsw i32 %46, 4
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds double, double* %0, i64 %48
store double -1.000000e+00, double* %49
%50 = load double, double* %41
%51 = add nsw i32 %13, 4
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds double, double* %0, i64 %52
store double %50, double* %53
%54 = mul i32 %2, 35
%55 = add nsw i32 %54, 5
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %0, i64 %56
store double -1.000000e+00, double* %57
%58 = load double, double* %41
%59 = fneg double %58
%60 = load double, double* %23
%61 = fmul double %60, %59
%62 = add nsw i32 %5, 5
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %0, i64 %63
store double %61, double* %64
%65 = load double, double* %41
%66 = fneg double %65
%67 = load double, double* %31
%68 = fmul double %67, %66
%69 = add nsw i32 %13, 5
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds double, double* %0, i64 %70
store double %68, double* %71
%72 = mul nsw i32 %2, 56
%73 = or i32 %72, 6
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds double, double* %0, i64 %74
store double -1.000000e+00, double* %75
%76 = load double, double* %23
%77 = fneg double %76
%78 = add nsw i32 %5, 6
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds double, double* %0, i64 %79
store double %77, double* %80
%81 = load double, double* %31
%82 = fneg double %81
%83 = add nsw i32 %13, 6
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds double, double* %0, i64 %84
store double %82, double* %85
ret void
}