; LLVM IR from zhenrong-wang/co2 :: co2_property_calc_origeqns (phirdd)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@coeffr1 = external dso_local constant [7 x [3 x double]], align 16
@coeffr2 = external dso_local constant [27 x [4 x double]], align 16
@coeffr3 = external dso_local constant [5 x [7 x double]], align 16
@coeffr4 = external dso_local constant [3 x [8 x double]], align 16

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

; Function Attrs: nounwind
declare double @exp(double noundef) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
declare dso_local double @deltd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @deltdd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local double @deltabid(double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local double @deltabidd(double noundef, double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local double @psid(double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local double @psidd(double noundef, double noundef, double noundef) #3

; Function Attrs: nounwind uwtable
define dso_local double @phirdd(double noundef %0, double noundef %1) #3 {
  %3 = alloca double, align 8
  %4 = alloca double, align 8
  %5 = alloca i32, align 4
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  store double %0, ptr %3, align 8, !tbaa !5
  store double %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  store double 0.000000e+00, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %26

26:                                               ; preds = %61, %2
  %27 = load i32, ptr %5, align 4, !tbaa !9
  %28 = icmp slt i32 %27, 7
  br i1 %28, label %29, label %64

29:                                               ; preds = %26
  %30 = load i32, ptr %5, align 4, !tbaa !9
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds [7 x [3 x double]], ptr @coeffr1, i64 0, i64 %31
  %33 = getelementptr inbounds [3 x double], ptr %32, i64 0, i64 0
  %34 = load double, ptr %33, align 8, !tbaa !5
  store double %34, ptr %6, align 8, !tbaa !5
  %35 = load i32, ptr %5, align 4, !tbaa !9
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds [7 x [3 x double]], ptr @coeffr1, i64 0, i64 %36
  %38 = getelementptr inbounds [3 x double], ptr %37, i64 0, i64 1
  %39 = load double, ptr %38, align 8, !tbaa !5
  store double %39, ptr %7, align 8, !tbaa !5
  %40 = load i32, ptr %5, align 4, !tbaa !9
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [7 x [3 x double]], ptr @coeffr1, i64 0, i64 %41
  %43 = getelementptr inbounds [3 x double], ptr %42, i64 0, i64 2
  %44 = load double, ptr %43, align 8, !tbaa !5
  store double %44, ptr %8, align 8, !tbaa !5
  %45 = load double, ptr %6, align 8, !tbaa !5
  %46 = load double, ptr %7, align 8, !tbaa !5
  %47 = fmul double %45, %46
  %48 = load double, ptr %7, align 8, !tbaa !5
  %49 = fsub double %48, 1.000000e+00
  %50 = fmul double %47, %49
  %51 = load double, ptr %3, align 8, !tbaa !5
  %52 = load double, ptr %7, align 8, !tbaa !5
  %53 = fsub double %52, 2.000000e+00
  %54 = call double @pow(double noundef %51, double noundef %53) #4
  %55 = fmul double %50, %54
  %56 = load double, ptr %4, align 8, !tbaa !5
  %57 = load double, ptr %8, align 8, !tbaa !5
  %58 = call double @pow(double noundef %56, double noundef %57) #4
  %59 = load double, ptr %25, align 8, !tbaa !5
  %60 = call double @llvm.fmuladd.f64(double %55, double %58, double %59)
  store double %60, ptr %25, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %29
  %62 = load i32, ptr %5, align 4, !tbaa !9
  %63 = add nsw i32 %62, 1
  store i32 %63, ptr %5, align 4, !tbaa !9
  br label %26, !llvm.loop !11

64:                                               ; preds = %26
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %131, %64
  %66 = load i32, ptr %5, align 4, !tbaa !9
  %67 = icmp slt i32 %66, 27
  br i1 %67, label %68, label %134

68:                                               ; preds = %65
  %69 = load i32, ptr %5, align 4, !tbaa !9
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [27 x [4 x double]], ptr @coeffr2, i64 0, i64 %70
  %72 = getelementptr inbounds [4 x double], ptr %71, i64 0, i64 0
  %73 = load double, ptr %72, align 16, !tbaa !5
  store double %73, ptr %6, align 8, !tbaa !5
  %74 = load i32, ptr %5, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds [27 x [4 x double]], ptr @coeffr2, i64 0, i64 %75
  %77 = getelementptr inbounds [4 x double], ptr %76, i64 0, i64 1
  %78 = load double, ptr %77, align 8, !tbaa !5
  store double %78, ptr %7, align 8, !tbaa !5
  %79 = load i32, ptr %5, align 4, !tbaa !9
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [27 x [4 x double]], ptr @coeffr2, i64 0, i64 %80
  %82 = getelementptr inbounds [4 x double], ptr %81, i64 0, i64 2
  %83 = load double, ptr %82, align 16, !tbaa !5
  store double %83, ptr %8, align 8, !tbaa !5
  %84 = load i32, ptr %5, align 4, !tbaa !9
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds [27 x [4 x double]], ptr @coeffr2, i64 0, i64 %85
  %87 = getelementptr inbounds [4 x double], ptr %86, i64 0, i64 3
  %88 = load double, ptr %87, align 8, !tbaa !5
  store double %88, ptr %9, align 8, !tbaa !5
  %89 = load double, ptr %6, align 8, !tbaa !5
  %90 = load double, ptr %3, align 8, !tbaa !5
  %91 = load double, ptr %9, align 8, !tbaa !5
  %92 = call double @pow(double noundef %90, double noundef %91) #4
  %93 = fneg double %92
  %94 = call double @exp(double noundef %93) #4
  %95 = fmul double %89, %94
  %96 = load double, ptr %3, align 8, !tbaa !5
  %97 = load double, ptr %7, align 8, !tbaa !5
  %98 = fsub double %97, 2.000000e+00
  %99 = call double @pow(double noundef %96, double noundef %98) #4
  %100 = load double, ptr %4, align 8, !tbaa !5
  %101 = load double, ptr %8, align 8, !tbaa !5
  %102 = call double @pow(double noundef %100, double noundef %101) #4
  %103 = fmul double %99, %102
  %104 = load double, ptr %7, align 8, !tbaa !5
  %105 = load double, ptr %9, align 8, !tbaa !5
  %106 = load double, ptr %3, align 8, !tbaa !5
  %107 = load double, ptr %9, align 8, !tbaa !5
  %108 = call double @pow(double noundef %106, double noundef %107) #4
  %109 = fneg double %105
  %110 = call double @llvm.fmuladd.f64(double %109, double %108, double %104)
  %111 = load double, ptr %7, align 8, !tbaa !5
  %112 = fsub double %111, 1.000000e+00
  %113 = load double, ptr %9, align 8, !tbaa !5
  %114 = load double, ptr %3, align 8, !tbaa !5
  %115 = load double, ptr %9, align 8, !tbaa !5
  %116 = call double @pow(double noundef %114, double noundef %115) #4
  %117 = fneg double %113
  %118 = call double @llvm.fmuladd.f64(double %117, double %116, double %112)
  %119 = load double, ptr %9, align 8, !tbaa !5
  %120 = load double, ptr %9, align 8, !tbaa !5
  %121 = fmul double %119, %120
  %122 = load double, ptr %3, align 8, !tbaa !5
  %123 = load double, ptr %9, align 8, !tbaa !5
  %124 = call double @pow(double noundef %122, double noundef %123) #4
  %125 = fmul double %121, %124
  %126 = fneg double %125
  %127 = call double @llvm.fmuladd.f64(double %110, double %118, double %126)
  %128 = fmul double %103, %127
  %129 = load double, ptr %25, align 8, !tbaa !5
  %130 = call double @llvm.fmuladd.f64(double %95, double %128, double %129)
  store double %130, ptr %25, align 8, !tbaa !5
  br label %131

131:                                              ; preds = %68
  %132 = load i32, ptr %5, align 4, !tbaa !9
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %5, align 4, !tbaa !9
  br label %65, !llvm.loop !13

134:                                              ; preds = %65
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %248, %134
  %136 = load i32, ptr %5, align 4, !tbaa !9
  %137 = icmp slt i32 %136, 5
  br i1 %137, label %138, label %251

138:                                              ; preds = %135
  %139 = load i32, ptr %5, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %140
  %142 = getelementptr inbounds [7 x double], ptr %141, i64 0, i64 0
  %143 = load double, ptr %142, align 8, !tbaa !5
  store double %143, ptr %6, align 8, !tbaa !5
  %144 = load i32, ptr %5, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %145
  %147 = getelementptr inbounds [7 x double], ptr %146, i64 0, i64 1
  %148 = load double, ptr %147, align 8, !tbaa !5
  store double %148, ptr %7, align 8, !tbaa !5
  %149 = load i32, ptr %5, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %150
  %152 = getelementptr inbounds [7 x double], ptr %151, i64 0, i64 2
  %153 = load double, ptr %152, align 8, !tbaa !5
  store double %153, ptr %8, align 8, !tbaa !5
  %154 = load i32, ptr %5, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %155
  %157 = getelementptr inbounds [7 x double], ptr %156, i64 0, i64 3
  %158 = load double, ptr %157, align 8, !tbaa !5
  store double %158, ptr %10, align 8, !tbaa !5
  %159 = load i32, ptr %5, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %160
  %162 = getelementptr inbounds [7 x double], ptr %161, i64 0, i64 4
  %163 = load double, ptr %162, align 8, !tbaa !5
  store double %163, ptr %11, align 8, !tbaa !5
  %164 = load i32, ptr %5, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %165
  %167 = getelementptr inbounds [7 x double], ptr %166, i64 0, i64 5
  %168 = load double, ptr %167, align 8, !tbaa !5
  store double %168, ptr %12, align 8, !tbaa !5
  %169 = load i32, ptr %5, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [5 x [7 x double]], ptr @coeffr3, i64 0, i64 %170
  %172 = getelementptr inbounds [7 x double], ptr %171, i64 0, i64 6
  %173 = load double, ptr %172, align 8, !tbaa !5
  store double %173, ptr %13, align 8, !tbaa !5
  %174 = load double, ptr %6, align 8, !tbaa !5
  %175 = load double, ptr %4, align 8, !tbaa !5
  %176 = load double, ptr %8, align 8, !tbaa !5
  %177 = call double @pow(double noundef %175, double noundef %176) #4
  %178 = fmul double %174, %177
  %179 = load double, ptr %10, align 8, !tbaa !5
  %180 = fneg double %179
  %181 = load double, ptr %3, align 8, !tbaa !5
  %182 = load double, ptr %13, align 8, !tbaa !5
  %183 = fsub double %181, %182
  %184 = fmul double %180, %183
  %185 = load double, ptr %3, align 8, !tbaa !5
  %186 = load double, ptr %13, align 8, !tbaa !5
  %187 = fsub double %185, %186
  %188 = load double, ptr %11, align 8, !tbaa !5
  %189 = load double, ptr %4, align 8, !tbaa !5
  %190 = load double, ptr %12, align 8, !tbaa !5
  %191 = fsub double %189, %190
  %192 = fmul double %188, %191
  %193 = load double, ptr %4, align 8, !tbaa !5
  %194 = load double, ptr %12, align 8, !tbaa !5
  %195 = fsub double %193, %194
  %196 = fmul double %192, %195
  %197 = fneg double %196
  %198 = call double @llvm.fmuladd.f64(double %184, double %187, double %197)
  %199 = call double @exp(double noundef %198) #4
  %200 = fmul double %178, %199
  %201 = load double, ptr %10, align 8, !tbaa !5
  %202 = fmul double -2.000000e+00, %201
  %203 = load double, ptr %3, align 8, !tbaa !5
  %204 = load double, ptr %7, align 8, !tbaa !5
  %205 = call double @pow(double noundef %203, double noundef %204) #4
  %206 = load double, ptr %10, align 8, !tbaa !5
  %207 = fmul double 4.000000e+00, %206
  %208 = load double, ptr %10, align 8, !tbaa !5
  %209 = fmul double %207, %208
  %210 = load double, ptr %3, align 8, !tbaa !5
  %211 = load double, ptr %7, align 8, !tbaa !5
  %212 = call double @pow(double noundef %210, double noundef %211) #4
  %213 = fmul double %209, %212
  %214 = load double, ptr %3, align 8, !tbaa !5
  %215 = load double, ptr %13, align 8, !tbaa !5
  %216 = fsub double %214, %215
  %217 = fmul double %213, %216
  %218 = load double, ptr %3, align 8, !tbaa !5
  %219 = load double, ptr %13, align 8, !tbaa !5
  %220 = fsub double %218, %219
  %221 = fmul double %217, %220
  %222 = call double @llvm.fmuladd.f64(double %202, double %205, double %221)
  %223 = load double, ptr %7, align 8, !tbaa !5
  %224 = fmul double 4.000000e+00, %223
  %225 = load double, ptr %10, align 8, !tbaa !5
  %226 = fmul double %224, %225
  %227 = load double, ptr %3, align 8, !tbaa !5
  %228 = load double, ptr %7, align 8, !tbaa !5
  %229 = fsub double %228, 1.000000e+00
  %230 = call double @pow(double noundef %227, double noundef %229) #4
  %231 = fmul double %226, %230
  %232 = load double, ptr %3, align 8, !tbaa !5
  %233 = load double, ptr %13, align 8, !tbaa !5
  %234 = fsub double %232, %233
  %235 = fneg double %231
  %236 = call double @llvm.fmuladd.f64(double %235, double %234, double %222)
  %237 = load double, ptr %7, align 8, !tbaa !5
  %238 = load double, ptr %7, align 8, !tbaa !5
  %239 = fsub double %238, 1.000000e+00
  %240 = fmul double %237, %239
  %241 = load double, ptr %3, align 8, !tbaa !5
  %242 = load double, ptr %7, align 8, !tbaa !5
  %243 = fsub double %242, 2.000000e+00
  %244 = call double @pow(double noundef %241, double noundef %243) #4
  %245 = call double @llvm.fmuladd.f64(double %240, double %244, double %236)
  %246 = load double, ptr %25, align 8, !tbaa !5
  %247 = call double @llvm.fmuladd.f64(double %200, double %245, double %246)
  store double %247, ptr %25, align 8, !tbaa !5
  br label %248

248:                                              ; preds = %138
  %249 = load i32, ptr %5, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %5, align 4, !tbaa !9
  br label %135, !llvm.loop !14

251:                                              ; preds = %135
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %394, %251
  %253 = load i32, ptr %5, align 4, !tbaa !9
  %254 = icmp slt i32 %253, 3
  br i1 %254, label %255, label %397

255:                                              ; preds = %252
  %256 = load i32, ptr %5, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %257
  %259 = getelementptr inbounds [8 x double], ptr %258, i64 0, i64 0
  %260 = load double, ptr %259, align 16, !tbaa !5
  store double %260, ptr %6, align 8, !tbaa !5
  %261 = load i32, ptr %5, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %262
  %264 = getelementptr inbounds [8 x double], ptr %263, i64 0, i64 1
  %265 = load double, ptr %264, align 8, !tbaa !5
  store double %265, ptr %14, align 8, !tbaa !5
  %266 = load i32, ptr %5, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %267
  %269 = getelementptr inbounds [8 x double], ptr %268, i64 0, i64 2
  %270 = load double, ptr %269, align 16, !tbaa !5
  store double %270, ptr %15, align 8, !tbaa !5
  %271 = load i32, ptr %5, align 4, !tbaa !9
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %272
  %274 = getelementptr inbounds [8 x double], ptr %273, i64 0, i64 3
  %275 = load double, ptr %274, align 8, !tbaa !5
  store double %275, ptr %11, align 8, !tbaa !5
  %276 = load i32, ptr %5, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %277
  %279 = getelementptr inbounds [8 x double], ptr %278, i64 0, i64 4
  %280 = load double, ptr %279, align 16, !tbaa !5
  store double %280, ptr %16, align 8, !tbaa !5
  %281 = load i32, ptr %5, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %282
  %284 = getelementptr inbounds [8 x double], ptr %283, i64 0, i64 5
  %285 = load double, ptr %284, align 8, !tbaa !5
  store double %285, ptr %17, align 8, !tbaa !5
  %286 = load i32, ptr %5, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %287
  %289 = getelementptr inbounds [8 x double], ptr %288, i64 0, i64 6
  %290 = load double, ptr %289, align 16, !tbaa !5
  store double %290, ptr %18, align 8, !tbaa !5
  %291 = load i32, ptr %5, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds [3 x [8 x double]], ptr @coeffr4, i64 0, i64 %292
  %294 = getelementptr inbounds [8 x double], ptr %293, i64 0, i64 7
  %295 = load double, ptr %294, align 8, !tbaa !5
  store double %295, ptr %19, align 8, !tbaa !5
  %296 = load double, ptr %4, align 8, !tbaa !5
  %297 = fsub double 1.000000e+00, %296
  %298 = load double, ptr %16, align 8, !tbaa !5
  %299 = load double, ptr %3, align 8, !tbaa !5
  %300 = fsub double %299, 1.000000e+00
  %301 = load double, ptr %3, align 8, !tbaa !5
  %302 = fsub double %301, 1.000000e+00
  %303 = fmul double %300, %302
  %304 = load double, ptr %11, align 8, !tbaa !5
  %305 = fdiv double 5.000000e-01, %304
  %306 = call double @pow(double noundef %303, double noundef %305) #4
  %307 = call double @llvm.fmuladd.f64(double %298, double %306, double %297)
  store double %307, ptr %22, align 8, !tbaa !5
  %308 = load double, ptr %22, align 8, !tbaa !5
  %309 = load double, ptr %22, align 8, !tbaa !5
  %310 = load double, ptr %17, align 8, !tbaa !5
  %311 = load double, ptr %3, align 8, !tbaa !5
  %312 = fsub double %311, 1.000000e+00
  %313 = load double, ptr %3, align 8, !tbaa !5
  %314 = fsub double %313, 1.000000e+00
  %315 = fmul double %312, %314
  %316 = load double, ptr %14, align 8, !tbaa !5
  %317 = call double @pow(double noundef %315, double noundef %316) #4
  %318 = fmul double %310, %317
  %319 = call double @llvm.fmuladd.f64(double %308, double %309, double %318)
  store double %319, ptr %20, align 8, !tbaa !5
  %320 = load double, ptr %18, align 8, !tbaa !5
  %321 = fneg double %320
  %322 = load double, ptr %3, align 8, !tbaa !5
  %323 = fsub double %322, 1.000000e+00
  %324 = fmul double %321, %323
  %325 = load double, ptr %3, align 8, !tbaa !5
  %326 = fsub double %325, 1.000000e+00
  %327 = load double, ptr %19, align 8, !tbaa !5
  %328 = load double, ptr %4, align 8, !tbaa !5
  %329 = fsub double %328, 1.000000e+00
  %330 = fmul double %327, %329
  %331 = load double, ptr %4, align 8, !tbaa !5
  %332 = fsub double %331, 1.000000e+00
  %333 = fmul double %330, %332
  %334 = fneg double %333
  %335 = call double @llvm.fmuladd.f64(double %324, double %326, double %334)
  %336 = call double @exp(double noundef %335) #4
  store double %336, ptr %21, align 8, !tbaa !5
  %337 = load double, ptr %3, align 8, !tbaa !5
  %338 = load double, ptr %20, align 8, !tbaa !5
  %339 = load double, ptr %16, align 8, !tbaa !5
  %340 = load double, ptr %22, align 8, !tbaa !5
  %341 = load double, ptr %11, align 8, !tbaa !5
  %342 = load double, ptr %17, align 8, !tbaa !5
  %343 = load double, ptr %14, align 8, !tbaa !5
  %344 = call double @deltd(double noundef %337, double noundef %338, double noundef %339, double noundef %340, double noundef %341, double noundef %342, double noundef %343)
  store double %344, ptr %23, align 8, !tbaa !5
  %345 = load double, ptr %23, align 8, !tbaa !5
  %346 = load double, ptr %3, align 8, !tbaa !5
  %347 = load double, ptr %20, align 8, !tbaa !5
  %348 = load double, ptr %16, align 8, !tbaa !5
  %349 = load double, ptr %22, align 8, !tbaa !5
  %350 = load double, ptr %11, align 8, !tbaa !5
  %351 = load double, ptr %17, align 8, !tbaa !5
  %352 = load double, ptr %14, align 8, !tbaa !5
  %353 = call double @deltdd(double noundef %345, double noundef %346, double noundef %347, double noundef %348, double noundef %349, double noundef %350, double noundef %351, double noundef %352)
  store double %353, ptr %24, align 8, !tbaa !5
  %354 = load double, ptr %6, align 8, !tbaa !5
  %355 = load double, ptr %20, align 8, !tbaa !5
  %356 = load double, ptr %15, align 8, !tbaa !5
  %357 = call double @pow(double noundef %355, double noundef %356) #4
  %358 = load double, ptr %3, align 8, !tbaa !5
  %359 = load double, ptr %21, align 8, !tbaa !5
  %360 = load double, ptr %18, align 8, !tbaa !5
  %361 = call double @psid(double noundef %358, double noundef %359, double noundef %360)
  %362 = load double, ptr %3, align 8, !tbaa !5
  %363 = load double, ptr %3, align 8, !tbaa !5
  %364 = load double, ptr %21, align 8, !tbaa !5
  %365 = load double, ptr %18, align 8, !tbaa !5
  %366 = call double @psidd(double noundef %363, double noundef %364, double noundef %365)
  %367 = fmul double %362, %366
  %368 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %361, double %367)
  %369 = load double, ptr %15, align 8, !tbaa !5
  %370 = load double, ptr %20, align 8, !tbaa !5
  %371 = load double, ptr %23, align 8, !tbaa !5
  %372 = call double @deltabid(double noundef %369, double noundef %370, double noundef %371)
  %373 = fmul double 2.000000e+00, %372
  %374 = load double, ptr %21, align 8, !tbaa !5
  %375 = load double, ptr %3, align 8, !tbaa !5
  %376 = load double, ptr %3, align 8, !tbaa !5
  %377 = load double, ptr %21, align 8, !tbaa !5
  %378 = load double, ptr %18, align 8, !tbaa !5
  %379 = call double @psid(double noundef %376, double noundef %377, double noundef %378)
  %380 = call double @llvm.fmuladd.f64(double %375, double %379, double %374)
  %381 = fmul double %373, %380
  %382 = call double @llvm.fmuladd.f64(double %357, double %368, double %381)
  %383 = load double, ptr %15, align 8, !tbaa !5
  %384 = load double, ptr %20, align 8, !tbaa !5
  %385 = load double, ptr %23, align 8, !tbaa !5
  %386 = load double, ptr %24, align 8, !tbaa !5
  %387 = call double @deltabidd(double noundef %383, double noundef %384, double noundef %385, double noundef %386)
  %388 = load double, ptr %3, align 8, !tbaa !5
  %389 = fmul double %387, %388
  %390 = load double, ptr %21, align 8, !tbaa !5
  %391 = call double @llvm.fmuladd.f64(double %389, double %390, double %382)
  %392 = load double, ptr %25, align 8, !tbaa !5
  %393 = call double @llvm.fmuladd.f64(double %354, double %391, double %392)
  store double %393, ptr %25, align 8, !tbaa !5
  br label %394

394:                                              ; preds = %255
  %395 = load i32, ptr %5, align 4, !tbaa !9
  %396 = add nsw i32 %395, 1
  store i32 %396, ptr %5, align 4, !tbaa !9
  br label %252, !llvm.loop !15

397:                                              ; preds = %252
  %398 = load double, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  ret double %398
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@coeffr1 = external dso_local local_unnamed_addr constant [7 x [3 x double]], align 16
@coeffr2 = external dso_local local_unnamed_addr constant [27 x [4 x double]], align 16
@coeffr3 = external dso_local local_unnamed_addr constant [5 x [7 x double]], align 16
@coeffr4 = external dso_local local_unnamed_addr constant [3 x [8 x double]], align 16

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @exp(double noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local double @deltd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local double @deltdd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @deltabid(double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @deltabidd(double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @psid(double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @psidd(double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local double @phirdd(double noundef %0, double noundef %1) local_unnamed_addr #2 {
.preheader155.preheader:
  %2 = load double, ptr @coeffr1, align 16, !tbaa !5
  %3 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 8), align 8, !tbaa !5
  %4 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 16), align 16, !tbaa !5
  %5 = fmul double %2, %3
  %6 = fadd double %3, -1.000000e+00
  %7 = fmul double %5, %6
  %8 = fadd double %3, -2.000000e+00
  %9 = tail call double @pow(double noundef %0, double noundef %8) #3
  %10 = fmul double %7, %9
  %11 = tail call double @pow(double noundef %1, double noundef %4) #3
  %12 = tail call double @llvm.fmuladd.f64(double %10, double %11, double 0.000000e+00)
  %13 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 24), align 8, !tbaa !5
  %14 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 32), align 16, !tbaa !5
  %15 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 40), align 8, !tbaa !5
  %16 = fmul double %13, %14
  %17 = fadd double %14, -1.000000e+00
  %18 = fmul double %16, %17
  %19 = fadd double %14, -2.000000e+00
  %20 = tail call double @pow(double noundef %0, double noundef %19) #3
  %21 = fmul double %18, %20
  %22 = tail call double @pow(double noundef %1, double noundef %15) #3
  %23 = tail call double @llvm.fmuladd.f64(double %21, double %22, double %12)
  %24 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 48), align 16, !tbaa !5
  %25 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 56), align 8, !tbaa !5
  %26 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 64), align 16, !tbaa !5
  %27 = fmul double %24, %25
  %28 = fadd double %25, -1.000000e+00
  %29 = fmul double %27, %28
  %30 = fadd double %25, -2.000000e+00
  %31 = tail call double @pow(double noundef %0, double noundef %30) #3
  %32 = fmul double %29, %31
  %33 = tail call double @pow(double noundef %1, double noundef %26) #3
  %34 = tail call double @llvm.fmuladd.f64(double %32, double %33, double %23)
  %35 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 72), align 8, !tbaa !5
  %36 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 80), align 16, !tbaa !5
  %37 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 88), align 8, !tbaa !5
  %38 = fmul double %35, %36
  %39 = fadd double %36, -1.000000e+00
  %40 = fmul double %38, %39
  %41 = fadd double %36, -2.000000e+00
  %42 = tail call double @pow(double noundef %0, double noundef %41) #3
  %43 = fmul double %40, %42
  %44 = tail call double @pow(double noundef %1, double noundef %37) #3
  %45 = tail call double @llvm.fmuladd.f64(double %43, double %44, double %34)
  %46 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 96), align 16, !tbaa !5
  %47 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 104), align 8, !tbaa !5
  %48 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 112), align 16, !tbaa !5
  %49 = fmul double %46, %47
  %50 = fadd double %47, -1.000000e+00
  %51 = fmul double %49, %50
  %52 = fadd double %47, -2.000000e+00
  %53 = tail call double @pow(double noundef %0, double noundef %52) #3
  %54 = fmul double %51, %53
  %55 = tail call double @pow(double noundef %1, double noundef %48) #3
  %56 = tail call double @llvm.fmuladd.f64(double %54, double %55, double %45)
  %57 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 120), align 8, !tbaa !5
  %58 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 128), align 16, !tbaa !5
  %59 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 136), align 8, !tbaa !5
  %60 = fmul double %57, %58
  %61 = fadd double %58, -1.000000e+00
  %62 = fmul double %60, %61
  %63 = fadd double %58, -2.000000e+00
  %64 = tail call double @pow(double noundef %0, double noundef %63) #3
  %65 = fmul double %62, %64
  %66 = tail call double @pow(double noundef %1, double noundef %59) #3
  %67 = tail call double @llvm.fmuladd.f64(double %65, double %66, double %56)
  %68 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 144), align 16, !tbaa !5
  %69 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 152), align 8, !tbaa !5
  %70 = load double, ptr getelementptr inbounds (i8, ptr @coeffr1, i64 160), align 16, !tbaa !5
  %71 = fmul double %68, %69
  %72 = fadd double %69, -1.000000e+00
  %73 = fmul double %71, %72
  %74 = fadd double %69, -2.000000e+00
  %75 = tail call double @pow(double noundef %0, double noundef %74) #3
  %76 = fmul double %73, %75
  %77 = tail call double @pow(double noundef %1, double noundef %70) #3
  %78 = tail call double @llvm.fmuladd.f64(double %76, double %77, double %67)
  br label %.preheader155

.preheader155:                                    ; preds = %.preheader155.preheader, %.preheader155
  %indvars.iv = phi i64 [ 0, %.preheader155.preheader ], [ %indvars.iv.next, %.preheader155 ]
  %.1159 = phi double [ %78, %.preheader155.preheader ], [ %106, %.preheader155 ]
  %79 = getelementptr inbounds [27 x [4 x double]], ptr @coeffr2, i64 0, i64 %indvars.iv
  %80 = load double, ptr %79, align 16, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %79, i64 8
  %82 = load double, ptr %81, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %79, i64 16
  %84 = load double, ptr %83, align 16, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %79, i64 24
  %86 = load double, ptr %85, align 8, !tbaa !5
  %87 = tail call double @pow(double noundef %0, double noundef %86) #3
  %88 = fneg double %87
  %89 = tail call double @exp(double noundef %88) #3
  %90 = fmul double %80, %89
  %91 = fadd double %82, -2.000000e+00
  %92 = tail call double @pow(double noundef %0, double noundef %91) #3
  %93 = tail call double @pow(double noundef %1, double noundef %84) #3
  %94 = fmul double %92, %93
  %95 = tail call double @pow(double noundef %0, double noundef %86) #3
  %96 = fneg double %86
  %97 = tail call double @llvm.fmuladd.f64(double %96, double %95, double %82)
  %98 = fadd double %82, -1.000000e+00
  %99 = tail call double @pow(double noundef %0, double noundef %86) #3
  %100 = tail call double @llvm.fmuladd.f64(double %96, double %99, double %98)
  %101 = tail call double @pow(double noundef %0, double noundef %86) #3
  %102 = fmul double %86, %96
  %103 = fmul double %102, %101
  %104 = tail call double @llvm.fmuladd.f64(double %97, double %100, double %103)
  %105 = fmul double %94, %104
  %106 = tail call double @llvm.fmuladd.f64(double %90, double %105, double %.1159)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 27
  br i1 %exitcond.not, label %.preheader154.preheader, label %.preheader155, !llvm.loop !9

.preheader154.preheader:                          ; preds = %.preheader155
  %107 = load double, ptr @coeffr3, align 16, !tbaa !5
  %108 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 8), align 8, !tbaa !5
  %109 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 16), align 16, !tbaa !5
  %110 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 24), align 8, !tbaa !5
  %111 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 32), align 16, !tbaa !5
  %112 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 40), align 8, !tbaa !5
  %113 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 48), align 16, !tbaa !5
  %114 = tail call double @pow(double noundef %1, double noundef %109) #3
  %115 = fmul double %107, %114
  %116 = fneg double %110
  %117 = fsub double %0, %113
  %118 = fmul double %117, %116
  %119 = fsub double %1, %112
  %120 = fneg double %111
  %121 = fmul double %119, %120
  %122 = fmul double %119, %121
  %123 = tail call double @llvm.fmuladd.f64(double %118, double %117, double %122)
  %124 = tail call double @exp(double noundef %123) #3
  %125 = fmul double %115, %124
  %126 = fmul double %110, -2.000000e+00
  %127 = tail call double @pow(double noundef %0, double noundef %108) #3
  %128 = fmul double %110, 4.000000e+00
  %129 = fmul double %110, %128
  %130 = tail call double @pow(double noundef %0, double noundef %108) #3
  %131 = fmul double %129, %130
  %132 = fmul double %117, %131
  %133 = fmul double %117, %132
  %134 = tail call double @llvm.fmuladd.f64(double %126, double %127, double %133)
  %135 = fadd double %108, -1.000000e+00
  %136 = tail call double @pow(double noundef %0, double noundef %135) #3
  %137 = fmul double %108, -4.000000e+00
  %138 = fmul double %137, %110
  %139 = fmul double %138, %136
  %140 = tail call double @llvm.fmuladd.f64(double %139, double %117, double %134)
  %141 = fmul double %108, %135
  %142 = fadd double %108, -2.000000e+00
  %143 = tail call double @pow(double noundef %0, double noundef %142) #3
  %144 = tail call double @llvm.fmuladd.f64(double %141, double %143, double %140)
  %145 = tail call double @llvm.fmuladd.f64(double %125, double %144, double %106)
  %146 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 56), align 8, !tbaa !5
  %147 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 64), align 16, !tbaa !5
  %148 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 72), align 8, !tbaa !5
  %149 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 80), align 16, !tbaa !5
  %150 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 88), align 8, !tbaa !5
  %151 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 96), align 16, !tbaa !5
  %152 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 104), align 8, !tbaa !5
  %153 = tail call double @pow(double noundef %1, double noundef %148) #3
  %154 = fmul double %146, %153
  %155 = fneg double %149
  %156 = fsub double %0, %152
  %157 = fmul double %156, %155
  %158 = fsub double %1, %151
  %159 = fneg double %150
  %160 = fmul double %158, %159
  %161 = fmul double %158, %160
  %162 = tail call double @llvm.fmuladd.f64(double %157, double %156, double %161)
  %163 = tail call double @exp(double noundef %162) #3
  %164 = fmul double %154, %163
  %165 = fmul double %149, -2.000000e+00
  %166 = tail call double @pow(double noundef %0, double noundef %147) #3
  %167 = fmul double %149, 4.000000e+00
  %168 = fmul double %149, %167
  %169 = tail call double @pow(double noundef %0, double noundef %147) #3
  %170 = fmul double %168, %169
  %171 = fmul double %156, %170
  %172 = fmul double %156, %171
  %173 = tail call double @llvm.fmuladd.f64(double %165, double %166, double %172)
  %174 = fadd double %147, -1.000000e+00
  %175 = tail call double @pow(double noundef %0, double noundef %174) #3
  %176 = fmul double %147, -4.000000e+00
  %177 = fmul double %176, %149
  %178 = fmul double %177, %175
  %179 = tail call double @llvm.fmuladd.f64(double %178, double %156, double %173)
  %180 = fmul double %147, %174
  %181 = fadd double %147, -2.000000e+00
  %182 = tail call double @pow(double noundef %0, double noundef %181) #3
  %183 = tail call double @llvm.fmuladd.f64(double %180, double %182, double %179)
  %184 = tail call double @llvm.fmuladd.f64(double %164, double %183, double %145)
  %185 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 112), align 16, !tbaa !5
  %186 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 120), align 8, !tbaa !5
  %187 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 128), align 16, !tbaa !5
  %188 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 136), align 8, !tbaa !5
  %189 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 144), align 16, !tbaa !5
  %190 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 152), align 8, !tbaa !5
  %191 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 160), align 16, !tbaa !5
  %192 = tail call double @pow(double noundef %1, double noundef %187) #3
  %193 = fmul double %185, %192
  %194 = fneg double %188
  %195 = fsub double %0, %191
  %196 = fmul double %195, %194
  %197 = fsub double %1, %190
  %198 = fneg double %189
  %199 = fmul double %197, %198
  %200 = fmul double %197, %199
  %201 = tail call double @llvm.fmuladd.f64(double %196, double %195, double %200)
  %202 = tail call double @exp(double noundef %201) #3
  %203 = fmul double %193, %202
  %204 = fmul double %188, -2.000000e+00
  %205 = tail call double @pow(double noundef %0, double noundef %186) #3
  %206 = fmul double %188, 4.000000e+00
  %207 = fmul double %188, %206
  %208 = tail call double @pow(double noundef %0, double noundef %186) #3
  %209 = fmul double %207, %208
  %210 = fmul double %195, %209
  %211 = fmul double %195, %210
  %212 = tail call double @llvm.fmuladd.f64(double %204, double %205, double %211)
  %213 = fadd double %186, -1.000000e+00
  %214 = tail call double @pow(double noundef %0, double noundef %213) #3
  %215 = fmul double %186, -4.000000e+00
  %216 = fmul double %215, %188
  %217 = fmul double %216, %214
  %218 = tail call double @llvm.fmuladd.f64(double %217, double %195, double %212)
  %219 = fmul double %186, %213
  %220 = fadd double %186, -2.000000e+00
  %221 = tail call double @pow(double noundef %0, double noundef %220) #3
  %222 = tail call double @llvm.fmuladd.f64(double %219, double %221, double %218)
  %223 = tail call double @llvm.fmuladd.f64(double %203, double %222, double %184)
  %224 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 168), align 8, !tbaa !5
  %225 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 176), align 16, !tbaa !5
  %226 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 184), align 8, !tbaa !5
  %227 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 192), align 16, !tbaa !5
  %228 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 200), align 8, !tbaa !5
  %229 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 208), align 16, !tbaa !5
  %230 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 216), align 8, !tbaa !5
  %231 = tail call double @pow(double noundef %1, double noundef %226) #3
  %232 = fmul double %224, %231
  %233 = fneg double %227
  %234 = fsub double %0, %230
  %235 = fmul double %234, %233
  %236 = fsub double %1, %229
  %237 = fneg double %228
  %238 = fmul double %236, %237
  %239 = fmul double %236, %238
  %240 = tail call double @llvm.fmuladd.f64(double %235, double %234, double %239)
  %241 = tail call double @exp(double noundef %240) #3
  %242 = fmul double %232, %241
  %243 = fmul double %227, -2.000000e+00
  %244 = tail call double @pow(double noundef %0, double noundef %225) #3
  %245 = fmul double %227, 4.000000e+00
  %246 = fmul double %227, %245
  %247 = tail call double @pow(double noundef %0, double noundef %225) #3
  %248 = fmul double %246, %247
  %249 = fmul double %234, %248
  %250 = fmul double %234, %249
  %251 = tail call double @llvm.fmuladd.f64(double %243, double %244, double %250)
  %252 = fadd double %225, -1.000000e+00
  %253 = tail call double @pow(double noundef %0, double noundef %252) #3
  %254 = fmul double %225, -4.000000e+00
  %255 = fmul double %254, %227
  %256 = fmul double %255, %253
  %257 = tail call double @llvm.fmuladd.f64(double %256, double %234, double %251)
  %258 = fmul double %225, %252
  %259 = fadd double %225, -2.000000e+00
  %260 = tail call double @pow(double noundef %0, double noundef %259) #3
  %261 = tail call double @llvm.fmuladd.f64(double %258, double %260, double %257)
  %262 = tail call double @llvm.fmuladd.f64(double %242, double %261, double %223)
  %263 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 224), align 16, !tbaa !5
  %264 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 232), align 8, !tbaa !5
  %265 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 240), align 16, !tbaa !5
  %266 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 248), align 8, !tbaa !5
  %267 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 256), align 16, !tbaa !5
  %268 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 264), align 8, !tbaa !5
  %269 = load double, ptr getelementptr inbounds (i8, ptr @coeffr3, i64 272), align 16, !tbaa !5
  %270 = tail call double @pow(double noundef %1, double noundef %265) #3
  %271 = fmul double %263, %270
  %272 = fneg double %266
  %273 = fsub double %0, %269
  %274 = fmul double %273, %272
  %275 = fsub double %1, %268
  %276 = fneg double %267
  %277 = fmul double %275, %276
  %278 = fmul double %275, %277
  %279 = tail call double @llvm.fmuladd.f64(double %274, double %273, double %278)
  %280 = tail call double @exp(double noundef %279) #3
  %281 = fmul double %271, %280
  %282 = fmul double %266, -2.000000e+00
  %283 = tail call double @pow(double noundef %0, double noundef %264) #3
  %284 = fmul double %266, 4.000000e+00
  %285 = fmul double %266, %284
  %286 = tail call double @pow(double noundef %0, double noundef %264) #3
  %287 = fmul double %285, %286
  %288 = fmul double %273, %287
  %289 = fmul double %273, %288
  %290 = tail call double @llvm.fmuladd.f64(double %282, double %283, double %289)
  %291 = fadd double %264, -1.000000e+00
  %292 = tail call double @pow(double noundef %0, double noundef %291) #3
  %293 = fmul double %264, -4.000000e+00
  %294 = fmul double %293, %266
  %295 = fmul double %294, %292
  %296 = tail call double @llvm.fmuladd.f64(double %295, double %273, double %290)
  %297 = fmul double %264, %291
  %298 = fadd double %264, -2.000000e+00
  %299 = tail call double @pow(double noundef %0, double noundef %298) #3
  %300 = tail call double @llvm.fmuladd.f64(double %297, double %299, double %296)
  %301 = tail call double @llvm.fmuladd.f64(double %281, double %300, double %262)
  %302 = fsub double 1.000000e+00, %1
  %303 = fadd double %0, -1.000000e+00
  %304 = fmul double %303, %303
  %305 = fadd double %1, -1.000000e+00
  %306 = load double, ptr @coeffr4, align 16, !tbaa !5
  %307 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 8), align 8, !tbaa !5
  %308 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 16), align 16, !tbaa !5
  %309 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 24), align 8, !tbaa !5
  %310 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 32), align 16, !tbaa !5
  %311 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 40), align 8, !tbaa !5
  %312 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 48), align 16, !tbaa !5
  %313 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 56), align 8, !tbaa !5
  %314 = fdiv double 5.000000e-01, %309
  %315 = tail call double @pow(double noundef %304, double noundef %314) #3
  %316 = tail call double @llvm.fmuladd.f64(double %310, double %315, double %302)
  %317 = tail call double @pow(double noundef %304, double noundef %307) #3
  %318 = fmul double %311, %317
  %319 = tail call double @llvm.fmuladd.f64(double %316, double %316, double %318)
  %320 = fneg double %312
  %321 = fmul double %303, %320
  %322 = fneg double %313
  %323 = fmul double %305, %322
  %324 = fmul double %305, %323
  %325 = tail call double @llvm.fmuladd.f64(double %321, double %303, double %324)
  %326 = tail call double @exp(double noundef %325) #3
  %327 = tail call double @deltd(double noundef %0, double noundef %319, double noundef %310, double noundef %316, double noundef %309, double noundef %311, double noundef %307)
  %328 = tail call double @deltdd(double noundef %327, double noundef %0, double noundef %319, double noundef %310, double noundef %316, double noundef %309, double noundef %311, double noundef %307)
  %329 = tail call double @pow(double noundef %319, double noundef %308) #3
  %330 = tail call double @psid(double noundef %0, double noundef %326, double noundef %312)
  %331 = tail call double @psidd(double noundef %0, double noundef %326, double noundef %312)
  %332 = fmul double %331, %0
  %333 = tail call double @llvm.fmuladd.f64(double %330, double 2.000000e+00, double %332)
  %334 = tail call double @deltabid(double noundef %308, double noundef %319, double noundef %327)
  %335 = fmul double %334, 2.000000e+00
  %336 = tail call double @psid(double noundef %0, double noundef %326, double noundef %312)
  %337 = tail call double @llvm.fmuladd.f64(double %0, double %336, double %326)
  %338 = fmul double %335, %337
  %339 = tail call double @llvm.fmuladd.f64(double %329, double %333, double %338)
  %340 = tail call double @deltabidd(double noundef %308, double noundef %319, double noundef %327, double noundef %328)
  %341 = fmul double %340, %0
  %342 = tail call double @llvm.fmuladd.f64(double %341, double %326, double %339)
  %343 = tail call double @llvm.fmuladd.f64(double %306, double %342, double %301)
  %344 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 64), align 16, !tbaa !5
  %345 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 72), align 8, !tbaa !5
  %346 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 80), align 16, !tbaa !5
  %347 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 88), align 8, !tbaa !5
  %348 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 96), align 16, !tbaa !5
  %349 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 104), align 8, !tbaa !5
  %350 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 112), align 16, !tbaa !5
  %351 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 120), align 8, !tbaa !5
  %352 = fdiv double 5.000000e-01, %347
  %353 = tail call double @pow(double noundef %304, double noundef %352) #3
  %354 = tail call double @llvm.fmuladd.f64(double %348, double %353, double %302)
  %355 = tail call double @pow(double noundef %304, double noundef %345) #3
  %356 = fmul double %349, %355
  %357 = tail call double @llvm.fmuladd.f64(double %354, double %354, double %356)
  %358 = fneg double %350
  %359 = fmul double %303, %358
  %360 = fneg double %351
  %361 = fmul double %305, %360
  %362 = fmul double %305, %361
  %363 = tail call double @llvm.fmuladd.f64(double %359, double %303, double %362)
  %364 = tail call double @exp(double noundef %363) #3
  %365 = tail call double @deltd(double noundef %0, double noundef %357, double noundef %348, double noundef %354, double noundef %347, double noundef %349, double noundef %345)
  %366 = tail call double @deltdd(double noundef %365, double noundef %0, double noundef %357, double noundef %348, double noundef %354, double noundef %347, double noundef %349, double noundef %345)
  %367 = tail call double @pow(double noundef %357, double noundef %346) #3
  %368 = tail call double @psid(double noundef %0, double noundef %364, double noundef %350)
  %369 = tail call double @psidd(double noundef %0, double noundef %364, double noundef %350)
  %370 = fmul double %369, %0
  %371 = tail call double @llvm.fmuladd.f64(double %368, double 2.000000e+00, double %370)
  %372 = tail call double @deltabid(double noundef %346, double noundef %357, double noundef %365)
  %373 = fmul double %372, 2.000000e+00
  %374 = tail call double @psid(double noundef %0, double noundef %364, double noundef %350)
  %375 = tail call double @llvm.fmuladd.f64(double %0, double %374, double %364)
  %376 = fmul double %373, %375
  %377 = tail call double @llvm.fmuladd.f64(double %367, double %371, double %376)
  %378 = tail call double @deltabidd(double noundef %346, double noundef %357, double noundef %365, double noundef %366)
  %379 = fmul double %378, %0
  %380 = tail call double @llvm.fmuladd.f64(double %379, double %364, double %377)
  %381 = tail call double @llvm.fmuladd.f64(double %344, double %380, double %343)
  %382 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 128), align 16, !tbaa !5
  %383 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 136), align 8, !tbaa !5
  %384 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 144), align 16, !tbaa !5
  %385 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 152), align 8, !tbaa !5
  %386 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 160), align 16, !tbaa !5
  %387 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 168), align 8, !tbaa !5
  %388 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 176), align 16, !tbaa !5
  %389 = load double, ptr getelementptr inbounds (i8, ptr @coeffr4, i64 184), align 8, !tbaa !5
  %390 = fdiv double 5.000000e-01, %385
  %391 = tail call double @pow(double noundef %304, double noundef %390) #3
  %392 = tail call double @llvm.fmuladd.f64(double %386, double %391, double %302)
  %393 = tail call double @pow(double noundef %304, double noundef %383) #3
  %394 = fmul double %387, %393
  %395 = tail call double @llvm.fmuladd.f64(double %392, double %392, double %394)
  %396 = fneg double %388
  %397 = fmul double %303, %396
  %398 = fneg double %389
  %399 = fmul double %305, %398
  %400 = fmul double %305, %399
  %401 = tail call double @llvm.fmuladd.f64(double %397, double %303, double %400)
  %402 = tail call double @exp(double noundef %401) #3
  %403 = tail call double @deltd(double noundef %0, double noundef %395, double noundef %386, double noundef %392, double noundef %385, double noundef %387, double noundef %383)
  %404 = tail call double @deltdd(double noundef %403, double noundef %0, double noundef %395, double noundef %386, double noundef %392, double noundef %385, double noundef %387, double noundef %383)
  %405 = tail call double @pow(double noundef %395, double noundef %384) #3
  %406 = tail call double @psid(double noundef %0, double noundef %402, double noundef %388)
  %407 = tail call double @psidd(double noundef %0, double noundef %402, double noundef %388)
  %408 = fmul double %407, %0
  %409 = tail call double @llvm.fmuladd.f64(double %406, double 2.000000e+00, double %408)
  %410 = tail call double @deltabid(double noundef %384, double noundef %395, double noundef %403)
  %411 = fmul double %410, 2.000000e+00
  %412 = tail call double @psid(double noundef %0, double noundef %402, double noundef %388)
  %413 = tail call double @llvm.fmuladd.f64(double %0, double %412, double %402)
  %414 = fmul double %411, %413
  %415 = tail call double @llvm.fmuladd.f64(double %405, double %409, double %414)
  %416 = tail call double @deltabidd(double noundef %384, double noundef %395, double noundef %403, double noundef %404)
  %417 = fmul double %416, %0
  %418 = tail call double @llvm.fmuladd.f64(double %417, double %402, double %415)
  %419 = tail call double @llvm.fmuladd.f64(double %382, double %418, double %381)
  ret double %419
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass