double computeAverageAPSP(int adjMatrix[][100], int numV) {
  int i, j, k, newPath, numPath, sumLength;
  for (k = 0; k < numV; k++)
    for (i = 0; i < numV; i++)
      for (j = 0; j < numV; j++) {
        if (adjMatrix[i][k] && adjMatrix[k][j]) {
          newPath = adjMatrix[i][k] + adjMatrix[k][j];
          if (newPath < adjMatrix[i][j] || adjMatrix[i][j] == 0)
            adjMatrix[i][j] = newPath;
        }
      }
  numPath = 0;
  sumLength = 0;
  for (i = 0; i < numV; i++)
    for (j = 0; j < numV; j++)
      if (i != j && adjMatrix[i][j]) {
        numPath++;
        sumLength += adjMatrix[i][j];
      }
  return sumLength * 1.0 / numPath;
}


x86 assembly (clang, -O0):
<computeAverageAPSP>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1255 <computeAverageAPSP+0x155>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1242 <computeAverageAPSP+0x142>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    122f <computeAverageAPSP+0x12f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     121c <computeAverageAPSP+0x11c>
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     121c <computeAverageAPSP+0x11c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
movslq -0x18(%rbp),%rdx
imul   $0x190,%rdx,%rdx
add    %rdx,%rcx
movslq -0x14(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
movslq -0x10(%rbp),%rdx
imul   $0x190,%rdx,%rdx
add    %rdx,%rcx
movslq -0x14(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jl     11fb <computeAverageAPSP+0xfb>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1217 <computeAverageAPSP+0x117>
mov    -0x1c(%rbp),%edx
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    121c <computeAverageAPSP+0x11c>
jmp    1221 <computeAverageAPSP+0x121>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1138 <computeAverageAPSP+0x38>
jmp    1234 <computeAverageAPSP+0x134>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1125 <computeAverageAPSP+0x25>
jmp    1247 <computeAverageAPSP+0x147>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1112 <computeAverageAPSP+0x12>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1303 <computeAverageAPSP+0x203>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    12f0 <computeAverageAPSP+0x1f0>
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
je     12dd <computeAverageAPSP+0x1dd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     12dd <computeAverageAPSP+0x1dd>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
imul   $0x190,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    12e2 <computeAverageAPSP+0x1e2>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    127d <computeAverageAPSP+0x17d>
jmp    12f5 <computeAverageAPSP+0x1f5>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    126a <computeAverageAPSP+0x16a>
cvtsi2sdl -0x24(%rbp),%xmm0
movsd  0xcf0(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<computeAverageAPSP>:
push   %r14
push   %rbx
test   %esi,%esi
jle    1278 <computeAverageAPSP+0x178>
mov    %esi,%r14d
xor    %r8d,%r8d
mov    %rdi,%r10
jmp    1130 <computeAverageAPSP+0x30>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r8
add    $0x190,%r10
cmp    %r14,%r8
je     1197 <computeAverageAPSP+0x97>
mov    %rdi,%r11
xor    %r9d,%r9d
jmp    1150 <computeAverageAPSP+0x50>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r9
add    $0x190,%r11
cmp    %r14,%r9
je     1120 <computeAverageAPSP+0x20>
imul   $0x190,%r9,%rax
add    %rdi,%rax
lea    (%rax,%r8,4),%rbx
xor    %eax,%eax
jmp    1179 <computeAverageAPSP+0x79>
mov    %edx,(%r11,%rax,4)
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %rax,%r14
je     1140 <computeAverageAPSP+0x40>
mov    (%rbx),%ecx
test   %ecx,%ecx
je     1170 <computeAverageAPSP+0x70>
mov    (%r10,%rax,4),%edx
test   %edx,%edx
je     1170 <computeAverageAPSP+0x70>
add    %ecx,%edx
mov    (%r11,%rax,4),%ecx
cmp    %ecx,%edx
jl     1162 <computeAverageAPSP+0x62>
test   %ecx,%ecx
jne    1170 <computeAverageAPSP+0x70>
jmp    1162 <computeAverageAPSP+0x62>
test   %esi,%esi
jle    1278 <computeAverageAPSP+0x178>
mov    %r14d,%r8d
and    $0xfffffffe,%r8d
lea    0x4(%rdi),%r11
xor    %edx,%edx
xor    %r10d,%r10d
xor    %r9d,%r9d
jmp    11d4 <computeAverageAPSP+0xd4>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rdx
add    $0x190,%r11
cmp    %r14,%rdx
je     127e <computeAverageAPSP+0x17e>
cmp    $0x1,%esi
jne    11f0 <computeAverageAPSP+0xf0>
xor    %ecx,%ecx
test   $0x1,%r14b
je     11c0 <computeAverageAPSP+0xc0>
jmp    124e <computeAverageAPSP+0x14e>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %ebx,%ebx
jmp    1209 <computeAverageAPSP+0x109>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rbx
cmp    %r8,%rbx
je     1240 <computeAverageAPSP+0x140>
mov    %rbx,%rcx
cmp    %rbx,%rdx
je     1221 <computeAverageAPSP+0x121>
mov    -0x4(%r11,%rcx,4),%eax
test   %eax,%eax
je     1221 <computeAverageAPSP+0x121>
add    $0x1,%r9d
add    %eax,%r10d
lea    0x1(%rcx),%rbx
cmp    %rbx,%rdx
je     1200 <computeAverageAPSP+0x100>
mov    (%r11,%rcx,4),%eax
test   %eax,%eax
je     1200 <computeAverageAPSP+0x100>
add    $0x1,%r9d
add    %eax,%r10d
jmp    1200 <computeAverageAPSP+0x100>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rcx
test   $0x1,%r14b
je     11c0 <computeAverageAPSP+0xc0>
cmp    %rcx,%rdx
je     11c0 <computeAverageAPSP+0xc0>
imul   $0x190,%rdx,%rax
add    %rdi,%rax
mov    (%rax,%rcx,4),%eax
test   %eax,%eax
je     11c0 <computeAverageAPSP+0xc0>
add    $0x1,%r9d
add    %eax,%r10d
jmp    11c0 <computeAverageAPSP+0xc0>
xor    %r9d,%r9d
xor    %r10d,%r10d
cvtsi2sd %r10d,%xmm0
cvtsi2sd %r9d,%xmm1
divsd  %xmm1,%xmm0
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define double @computeAverageAPSP([100 x i32]* nocapture %0, i32 %1) {
%3 = icmp sgt i32 %1, 0
br i1 %3, label %4, label %98
4: ; preds = %2
%5 = zext i32 %1 to i64
br label %6
6: ; preds = %40, %4
%7 = phi i64 [ 0, %4 ], [ %41, %40 ]
br label %15
8: ; preds = %40
br i1 %3, label %9, label %98
9: ; preds = %8
%10 = zext i32 %1 to i64
%11 = and i64 %5, 1
%12 = icmp eq i32 %1, 1
%13 = and i64 %5, 4294967294
%14 = icmp eq i64 %11, 0
br label %43
15: ; preds = %37, %6
%16 = phi i64 [ 0, %6 ], [ %38, %37 ]
%17 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %16, i64 %7
br label %18
18: ; preds = %15, %34
%19 = phi i64 [ 0, %15 ], [ %35, %34 ]
%20 = load i32, i32* %17
%21 = icmp eq i32 %20, 0
br i1 %21, label %34, label %22
22: ; preds = %18
%23 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %7, i64 %19
%24 = load i32, i32* %23
%25 = icmp eq i32 %24, 0
br i1 %25, label %34, label %26
26: ; preds = %22
%27 = add nsw i32 %24, %20
%28 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %16, i64 %19
%29 = load i32, i32* %28
%30 = icmp slt i32 %27, %29
%31 = icmp eq i32 %29, 0
%32 = or i1 %30, %31
br i1 %32, label %33, label %34
33: ; preds = %26
store i32 %27, i32* %28
br label %34
34: ; preds = %26, %18, %22, %33
%35 = add nuw nsw i64 %19, 1
%36 = icmp eq i64 %35, %5
br i1 %36, label %37, label %18
37: ; preds = %34
%38 = add nuw nsw i64 %16, 1
%39 = icmp eq i64 %38, %5
br i1 %39, label %40, label %15
40: ; preds = %37
%41 = add nuw nsw i64 %7, 1
%42 = icmp eq i64 %41, %5
br i1 %42, label %8, label %6
43: ; preds = %93, %9
%44 = phi i64 [ 0, %9 ], [ %96, %93 ]
%45 = phi i32 [ 0, %9 ], [ %95, %93 ]
%46 = phi i32 [ 0, %9 ], [ %94, %93 ]
br i1 %12, label %78, label %47
47: ; preds = %43, %72
%48 = phi i64 [ %75, %72 ], [ 0, %43 ]
%49 = phi i32 [ %74, %72 ], [ %45, %43 ]
%50 = phi i32 [ %73, %72 ], [ %46, %43 ]
%51 = phi i64 [ %76, %72 ], [ 0, %43 ]
%52 = icmp eq i64 %44, %48
br i1 %52, label %60, label %53
53: ; preds = %47
%54 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %44, i64 %48
%55 = load i32, i32* %54
%56 = icmp eq i32 %55, 0
br i1 %56, label %60, label %57
57: ; preds = %53
%58 = add nsw i32 %50, 1
%59 = add nsw i32 %55, %49
br label %60
60: ; preds = %47, %53, %57
%61 = phi i32 [ %58, %57 ], [ %50, %53 ], [ %50, %47 ]
%62 = phi i32 [ %59, %57 ], [ %49, %53 ], [ %49, %47 ]
%63 = or i64 %48, 1
%64 = icmp eq i64 %44, %63
br i1 %64, label %72, label %65
65: ; preds = %60
%66 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %44, i64 %63
%67 = load i32, i32* %66
%68 = icmp eq i32 %67, 0
br i1 %68, label %72, label %69
69: ; preds = %65
%70 = add nsw i32 %61, 1
%71 = add nsw i32 %67, %62
br label %72
72: ; preds = %69, %65, %60
%73 = phi i32 [ %70, %69 ], [ %61, %65 ], [ %61, %60 ]
%74 = phi i32 [ %71, %69 ], [ %62, %65 ], [ %62, %60 ]
%75 = add nuw nsw i64 %48, 2
%76 = add i64 %51, 2
%77 = icmp eq i64 %76, %13
br i1 %77, label %78, label %47
78: ; preds = %72, %43
%79 = phi i32 [ undef, %43 ], [ %73, %72 ]
%80 = phi i32 [ undef, %43 ], [ %74, %72 ]
%81 = phi i64 [ 0, %43 ], [ %75, %72 ]
%82 = phi i32 [ %45, %43 ], [ %74, %72 ]
%83 = phi i32 [ %46, %43 ], [ %73, %72 ]
br i1 %14, label %93, label %84
84: ; preds = %78
%85 = icmp eq i64 %44, %81
br i1 %85, label %93, label %86
86: ; preds = %84
%87 = getelementptr inbounds [100 x i32], [100 x i32]* %0, i64 %44, i64 %81
%88 = load i32, i32* %87
%89 = icmp eq i32 %88, 0
br i1 %89, label %93, label %90
90: ; preds = %86
%91 = add nsw i32 %83, 1
%92 = add nsw i32 %88, %82
br label %93
93: ; preds = %84, %86, %90, %78
%94 = phi i32 [ %79, %78 ], [ %91, %90 ], [ %83, %86 ], [ %83, %84 ]
%95 = phi i32 [ %80, %78 ], [ %92, %90 ], [ %82, %86 ], [ %82, %84 ]
%96 = add nuw nsw i64 %44, 1
%97 = icmp eq i64 %96, %10
br i1 %97, label %98, label %43
98: ; preds = %93, %2, %8
%99 = phi i32 [ 0, %8 ], [ 0, %2 ], [ %94, %93 ]
%100 = phi i32 [ 0, %8 ], [ 0, %2 ], [ %95, %93 ]
%101 = sitofp i32 %100 to double
%102 = sitofp i32 %99 to double
%103 = fdiv double %101, %102
ret double %103
}