diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,9 @@
 # Changelog
 
+- 0.1.5 (2026-06-07)
+  * Improves constant-time modular inverse performance on the Montgomery
+    'Curve' module by about 2x, and on the 'Scalar' module by about 1.5x.
+
 - 0.1.4 (2026-05-22)
   * Adds variable-time comparison functions to Data.Word.Wider.
 
diff --git a/lib/Numeric/Montgomery/Secp256k1/Curve.hs b/lib/Numeric/Montgomery/Secp256k1/Curve.hs
--- a/lib/Numeric/Montgomery/Secp256k1/Curve.hs
+++ b/lib/Numeric/Montgomery/Secp256k1/Curve.hs
@@ -474,514 +474,288 @@
   :: Limb4
   -> Limb4
 inv# a =
-  let -- montgomery 'one'
-      !t0 = L4 0x1000003D1## 0## 0## 0##
-      !t1 = sqr# t0
-      !t2 = mul# a t1
+  let
+      !t1 = sqr# a
+      !t2 = mul# t1 a
       !t3 = sqr# t2
-      !t4 = mul# a t3
-      !t5 = sqr# t4
-      !t6 = mul# a t5
+      !t4 = sqr# t3
+      !t5 = mul# t4 t2
+      !t6 = sqr# t5
       !t7 = sqr# t6
-      !t8 = mul# a t7
+      !t8 = sqr# t7
       !t9 = sqr# t8
-      !t10 = mul# a t9
+      !t10 = mul# t9 t5
       !t11 = sqr# t10
-      !t12 = mul# a t11
+      !t12 = sqr# t11
       !t13 = sqr# t12
-      !t14 = mul# a t13
+      !t14 = sqr# t13
       !t15 = sqr# t14
-      !t16 = mul# a t15
+      !t16 = sqr# t15
       !t17 = sqr# t16
-      !t18 = mul# a t17
-      !t19 = sqr# t18
-      !t20 = mul# a t19
+      !t18 = sqr# t17
+      !t19 = mul# t18 t10
+      !t20 = sqr# t19
       !t21 = sqr# t20
-      !t22 = mul# a t21
+      !t22 = sqr# t21
       !t23 = sqr# t22
-      !t24 = mul# a t23
+      !t24 = sqr# t23
       !t25 = sqr# t24
-      !t26 = mul# a t25
+      !t26 = sqr# t25
       !t27 = sqr# t26
-      !t28 = mul# a t27
+      !t28 = sqr# t27
       !t29 = sqr# t28
-      !t30 = mul# a t29
+      !t30 = sqr# t29
       !t31 = sqr# t30
-      !t32 = mul# a t31
+      !t32 = sqr# t31
       !t33 = sqr# t32
-      !t34 = mul# a t33
+      !t34 = sqr# t33
       !t35 = sqr# t34
-      !t36 = mul# a t35
+      !t36 = mul# t35 t19
       !t37 = sqr# t36
-      !t38 = mul# a t37
+      !t38 = sqr# t37
       !t39 = sqr# t38
-      !t40 = mul# a t39
+      !t40 = sqr# t39
       !t41 = sqr# t40
-      !t42 = mul# a t41
+      !t42 = sqr# t41
       !t43 = sqr# t42
-      !t44 = mul# a t43
+      !t44 = sqr# t43
       !t45 = sqr# t44
-      !t46 = mul# a t45
+      !t46 = sqr# t45
       !t47 = sqr# t46
-      !t48 = mul# a t47
+      !t48 = sqr# t47
       !t49 = sqr# t48
-      !t50 = mul# a t49
+      !t50 = sqr# t49
       !t51 = sqr# t50
-      !t52 = mul# a t51
+      !t52 = sqr# t51
       !t53 = sqr# t52
-      !t54 = mul# a t53
+      !t54 = sqr# t53
       !t55 = sqr# t54
-      !t56 = mul# a t55
+      !t56 = sqr# t55
       !t57 = sqr# t56
-      !t58 = mul# a t57
+      !t58 = sqr# t57
       !t59 = sqr# t58
-      !t60 = mul# a t59
+      !t60 = sqr# t59
       !t61 = sqr# t60
-      !t62 = mul# a t61
+      !t62 = sqr# t61
       !t63 = sqr# t62
-      !t64 = mul# a t63
+      !t64 = sqr# t63
       !t65 = sqr# t64
-      !t66 = mul# a t65
+      !t66 = sqr# t65
       !t67 = sqr# t66
-      !t68 = mul# a t67
-      !t69 = sqr# t68
-      !t70 = mul# a t69
+      !t68 = sqr# t67
+      !t69 = mul# t68 t36
+      !t70 = sqr# t69
       !t71 = sqr# t70
-      !t72 = mul# a t71
+      !t72 = sqr# t71
       !t73 = sqr# t72
-      !t74 = mul# a t73
+      !t74 = sqr# t73
       !t75 = sqr# t74
-      !t76 = mul# a t75
+      !t76 = sqr# t75
       !t77 = sqr# t76
-      !t78 = mul# a t77
+      !t78 = sqr# t77
       !t79 = sqr# t78
-      !t80 = mul# a t79
+      !t80 = sqr# t79
       !t81 = sqr# t80
-      !t82 = mul# a t81
+      !t82 = sqr# t81
       !t83 = sqr# t82
-      !t84 = mul# a t83
+      !t84 = sqr# t83
       !t85 = sqr# t84
-      !t86 = mul# a t85
+      !t86 = sqr# t85
       !t87 = sqr# t86
-      !t88 = mul# a t87
+      !t88 = sqr# t87
       !t89 = sqr# t88
-      !t90 = mul# a t89
+      !t90 = sqr# t89
       !t91 = sqr# t90
-      !t92 = mul# a t91
+      !t92 = sqr# t91
       !t93 = sqr# t92
-      !t94 = mul# a t93
+      !t94 = sqr# t93
       !t95 = sqr# t94
-      !t96 = mul# a t95
+      !t96 = sqr# t95
       !t97 = sqr# t96
-      !t98 = mul# a t97
+      !t98 = sqr# t97
       !t99 = sqr# t98
-      !t100 = mul# a t99
+      !t100 = sqr# t99
       !t101 = sqr# t100
-      !t102 = mul# a t101
+      !t102 = sqr# t101
       !t103 = sqr# t102
-      !t104 = mul# a t103
+      !t104 = sqr# t103
       !t105 = sqr# t104
-      !t106 = mul# a t105
+      !t106 = sqr# t105
       !t107 = sqr# t106
-      !t108 = mul# a t107
+      !t108 = sqr# t107
       !t109 = sqr# t108
-      !t110 = mul# a t109
+      !t110 = sqr# t109
       !t111 = sqr# t110
-      !t112 = mul# a t111
+      !t112 = sqr# t111
       !t113 = sqr# t112
-      !t114 = mul# a t113
+      !t114 = sqr# t113
       !t115 = sqr# t114
-      !t116 = mul# a t115
+      !t116 = sqr# t115
       !t117 = sqr# t116
-      !t118 = mul# a t117
+      !t118 = sqr# t117
       !t119 = sqr# t118
-      !t120 = mul# a t119
+      !t120 = sqr# t119
       !t121 = sqr# t120
-      !t122 = mul# a t121
+      !t122 = sqr# t121
       !t123 = sqr# t122
-      !t124 = mul# a t123
+      !t124 = sqr# t123
       !t125 = sqr# t124
-      !t126 = mul# a t125
+      !t126 = sqr# t125
       !t127 = sqr# t126
-      !t128 = mul# a t127
+      !t128 = sqr# t127
       !t129 = sqr# t128
-      !t130 = mul# a t129
+      !t130 = sqr# t129
       !t131 = sqr# t130
-      !t132 = mul# a t131
+      !t132 = sqr# t131
       !t133 = sqr# t132
-      !t134 = mul# a t133
+      !t134 = mul# t133 t69
       !t135 = sqr# t134
-      !t136 = mul# a t135
+      !t136 = sqr# t135
       !t137 = sqr# t136
-      !t138 = mul# a t137
+      !t138 = sqr# t137
       !t139 = sqr# t138
-      !t140 = mul# a t139
+      !t140 = sqr# t139
       !t141 = sqr# t140
-      !t142 = mul# a t141
+      !t142 = sqr# t141
       !t143 = sqr# t142
-      !t144 = mul# a t143
+      !t144 = sqr# t143
       !t145 = sqr# t144
-      !t146 = mul# a t145
+      !t146 = sqr# t145
       !t147 = sqr# t146
-      !t148 = mul# a t147
+      !t148 = sqr# t147
       !t149 = sqr# t148
-      !t150 = mul# a t149
+      !t150 = sqr# t149
       !t151 = sqr# t150
-      !t152 = mul# a t151
+      !t152 = sqr# t151
       !t153 = sqr# t152
-      !t154 = mul# a t153
+      !t154 = sqr# t153
       !t155 = sqr# t154
-      !t156 = mul# a t155
+      !t156 = sqr# t155
       !t157 = sqr# t156
-      !t158 = mul# a t157
+      !t158 = sqr# t157
       !t159 = sqr# t158
-      !t160 = mul# a t159
+      !t160 = sqr# t159
       !t161 = sqr# t160
-      !t162 = mul# a t161
+      !t162 = sqr# t161
       !t163 = sqr# t162
-      !t164 = mul# a t163
+      !t164 = sqr# t163
       !t165 = sqr# t164
-      !t166 = mul# a t165
+      !t166 = sqr# t165
       !t167 = sqr# t166
-      !t168 = mul# a t167
+      !t168 = sqr# t167
       !t169 = sqr# t168
-      !t170 = mul# a t169
+      !t170 = sqr# t169
       !t171 = sqr# t170
-      !t172 = mul# a t171
+      !t172 = sqr# t171
       !t173 = sqr# t172
-      !t174 = mul# a t173
+      !t174 = sqr# t173
       !t175 = sqr# t174
-      !t176 = mul# a t175
+      !t176 = sqr# t175
       !t177 = sqr# t176
-      !t178 = mul# a t177
+      !t178 = sqr# t177
       !t179 = sqr# t178
-      !t180 = mul# a t179
+      !t180 = sqr# t179
       !t181 = sqr# t180
-      !t182 = mul# a t181
+      !t182 = sqr# t181
       !t183 = sqr# t182
-      !t184 = mul# a t183
+      !t184 = sqr# t183
       !t185 = sqr# t184
-      !t186 = mul# a t185
+      !t186 = sqr# t185
       !t187 = sqr# t186
-      !t188 = mul# a t187
+      !t188 = sqr# t187
       !t189 = sqr# t188
-      !t190 = mul# a t189
+      !t190 = sqr# t189
       !t191 = sqr# t190
-      !t192 = mul# a t191
+      !t192 = sqr# t191
       !t193 = sqr# t192
-      !t194 = mul# a t193
+      !t194 = sqr# t193
       !t195 = sqr# t194
-      !t196 = mul# a t195
+      !t196 = sqr# t195
       !t197 = sqr# t196
-      !t198 = mul# a t197
-      !t199 = sqr# t198
-      !t200 = mul# a t199
+      !t198 = sqr# t197
+      !t199 = mul# t198 t69
+      !t200 = sqr# t199
       !t201 = sqr# t200
-      !t202 = mul# a t201
+      !t202 = sqr# t201
       !t203 = sqr# t202
-      !t204 = mul# a t203
+      !t204 = sqr# t203
       !t205 = sqr# t204
-      !t206 = mul# a t205
+      !t206 = sqr# t205
       !t207 = sqr# t206
-      !t208 = mul# a t207
+      !t208 = sqr# t207
       !t209 = sqr# t208
-      !t210 = mul# a t209
+      !t210 = sqr# t209
       !t211 = sqr# t210
-      !t212 = mul# a t211
+      !t212 = sqr# t211
       !t213 = sqr# t212
-      !t214 = mul# a t213
+      !t214 = sqr# t213
       !t215 = sqr# t214
-      !t216 = mul# a t215
+      !t216 = mul# t215 t19
       !t217 = sqr# t216
-      !t218 = mul# a t217
+      !t218 = sqr# t217
       !t219 = sqr# t218
-      !t220 = mul# a t219
+      !t220 = sqr# t219
       !t221 = sqr# t220
-      !t222 = mul# a t221
+      !t222 = sqr# t221
       !t223 = sqr# t222
-      !t224 = mul# a t223
-      !t225 = sqr# t224
-      !t226 = mul# a t225
+      !t224 = sqr# t223
+      !t225 = mul# t224 t10
+      !t226 = sqr# t225
       !t227 = sqr# t226
-      !t228 = mul# a t227
+      !t228 = sqr# t227
       !t229 = sqr# t228
-      !t230 = mul# a t229
+      !t230 = mul# t229 t5
       !t231 = sqr# t230
-      !t232 = mul# a t231
-      !t233 = sqr# t232
-      !t234 = mul# a t233
-      !t235 = sqr# t234
-      !t236 = mul# a t235
+      !t232 = sqr# t231
+      !t233 = mul# t232 t2
+      !t234 = sqr# t233
+      !t235 = mul# t234 a
+      !t236 = sqr# t19
       !t237 = sqr# t236
-      !t238 = mul# a t237
+      !t238 = sqr# t237
       !t239 = sqr# t238
-      !t240 = mul# a t239
+      !t240 = mul# t239 t5
       !t241 = sqr# t240
-      !t242 = mul# a t241
-      !t243 = sqr# t242
-      !t244 = mul# a t243
+      !t242 = sqr# t241
+      !t243 = mul# t242 t2
+      !t244 = sqr# t235
       !t245 = sqr# t244
-      !t246 = mul# a t245
+      !t246 = sqr# t245
       !t247 = sqr# t246
-      !t248 = mul# a t247
+      !t248 = sqr# t247
       !t249 = sqr# t248
-      !t250 = mul# a t249
+      !t250 = sqr# t249
       !t251 = sqr# t250
-      !t252 = mul# a t251
+      !t252 = sqr# t251
       !t253 = sqr# t252
-      !t254 = mul# a t253
+      !t254 = sqr# t253
       !t255 = sqr# t254
-      !t256 = mul# a t255
+      !t256 = sqr# t255
       !t257 = sqr# t256
-      !t258 = mul# a t257
+      !t258 = sqr# t257
       !t259 = sqr# t258
-      !t260 = mul# a t259
+      !t260 = sqr# t259
       !t261 = sqr# t260
-      !t262 = mul# a t261
+      !t262 = sqr# t261
       !t263 = sqr# t262
-      !t264 = mul# a t263
+      !t264 = sqr# t263
       !t265 = sqr# t264
-      !t266 = mul# a t265
-      !t267 = sqr# t266
-      !t268 = mul# a t267
+      !t266 = sqr# t265
+      !t267 = mul# t266 t243
+      !t268 = sqr# t267
       !t269 = sqr# t268
-      !t270 = mul# a t269
+      !t270 = sqr# t269
       !t271 = sqr# t270
-      !t272 = mul# a t271
-      !t273 = sqr# t272
-      !t274 = mul# a t273
+      !t272 = sqr# t271
+      !t273 = mul# t272 a
+      !t274 = sqr# t273
       !t275 = sqr# t274
-      !t276 = mul# a t275
-      !t277 = sqr# t276
-      !t278 = mul# a t277
+      !t276 = sqr# t275
+      !t277 = mul# t276 t2
+      !t278 = sqr# t277
       !t279 = sqr# t278
-      !t280 = mul# a t279
-      !t281 = sqr# t280
-      !t282 = mul# a t281
-      !t283 = sqr# t282
-      !t284 = mul# a t283
-      !t285 = sqr# t284
-      !t286 = mul# a t285
-      !t287 = sqr# t286
-      !t288 = mul# a t287
-      !t289 = sqr# t288
-      !t290 = mul# a t289
-      !t291 = sqr# t290
-      !t292 = mul# a t291
-      !t293 = sqr# t292
-      !t294 = mul# a t293
-      !t295 = sqr# t294
-      !t296 = mul# a t295
-      !t297 = sqr# t296
-      !t298 = mul# a t297
-      !t299 = sqr# t298
-      !t300 = mul# a t299
-      !t301 = sqr# t300
-      !t302 = mul# a t301
-      !t303 = sqr# t302
-      !t304 = mul# a t303
-      !t305 = sqr# t304
-      !t306 = mul# a t305
-      !t307 = sqr# t306
-      !t308 = mul# a t307
-      !t309 = sqr# t308
-      !t310 = mul# a t309
-      !t311 = sqr# t310
-      !t312 = mul# a t311
-      !t313 = sqr# t312
-      !t314 = mul# a t313
-      !t315 = sqr# t314
-      !t316 = mul# a t315
-      !t317 = sqr# t316
-      !t318 = mul# a t317
-      !t319 = sqr# t318
-      !t320 = mul# a t319
-      !t321 = sqr# t320
-      !t322 = mul# a t321
-      !t323 = sqr# t322
-      !t324 = mul# a t323
-      !t325 = sqr# t324
-      !t326 = mul# a t325
-      !t327 = sqr# t326
-      !t328 = mul# a t327
-      !t329 = sqr# t328
-      !t330 = mul# a t329
-      !t331 = sqr# t330
-      !t332 = mul# a t331
-      !t333 = sqr# t332
-      !t334 = mul# a t333
-      !t335 = sqr# t334
-      !t336 = mul# a t335
-      !t337 = sqr# t336
-      !t338 = mul# a t337
-      !t339 = sqr# t338
-      !t340 = mul# a t339
-      !t341 = sqr# t340
-      !t342 = mul# a t341
-      !t343 = sqr# t342
-      !t344 = mul# a t343
-      !t345 = sqr# t344
-      !t346 = mul# a t345
-      !t347 = sqr# t346
-      !t348 = mul# a t347
-      !t349 = sqr# t348
-      !t350 = mul# a t349
-      !t351 = sqr# t350
-      !t352 = mul# a t351
-      !t353 = sqr# t352
-      !t354 = mul# a t353
-      !t355 = sqr# t354
-      !t356 = mul# a t355
-      !t357 = sqr# t356
-      !t358 = mul# a t357
-      !t359 = sqr# t358
-      !t360 = mul# a t359
-      !t361 = sqr# t360
-      !t362 = mul# a t361
-      !t363 = sqr# t362
-      !t364 = mul# a t363
-      !t365 = sqr# t364
-      !t366 = mul# a t365
-      !t367 = sqr# t366
-      !t368 = mul# a t367
-      !t369 = sqr# t368
-      !t370 = mul# a t369
-      !t371 = sqr# t370
-      !t372 = mul# a t371
-      !t373 = sqr# t372
-      !t374 = mul# a t373
-      !t375 = sqr# t374
-      !t376 = mul# a t375
-      !t377 = sqr# t376
-      !t378 = mul# a t377
-      !t379 = sqr# t378
-      !t380 = mul# a t379
-      !t381 = sqr# t380
-      !t382 = mul# a t381
-      !t383 = sqr# t382
-      !t384 = mul# a t383
-      !t385 = sqr# t384
-      !t386 = mul# a t385
-      !t387 = sqr# t386
-      !t388 = mul# a t387
-      !t389 = sqr# t388
-      !t390 = mul# a t389
-      !t391 = sqr# t390
-      !t392 = mul# a t391
-      !t393 = sqr# t392
-      !t394 = mul# a t393
-      !t395 = sqr# t394
-      !t396 = mul# a t395
-      !t397 = sqr# t396
-      !t398 = mul# a t397
-      !t399 = sqr# t398
-      !t400 = mul# a t399
-      !t401 = sqr# t400
-      !t402 = mul# a t401
-      !t403 = sqr# t402
-      !t404 = mul# a t403
-      !t405 = sqr# t404
-      !t406 = mul# a t405
-      !t407 = sqr# t406
-      !t408 = mul# a t407
-      !t409 = sqr# t408
-      !t410 = mul# a t409
-      !t411 = sqr# t410
-      !t412 = mul# a t411
-      !t413 = sqr# t412
-      !t414 = mul# a t413
-      !t415 = sqr# t414
-      !t416 = mul# a t415
-      !t417 = sqr# t416
-      !t418 = mul# a t417
-      !t419 = sqr# t418
-      !t420 = mul# a t419
-      !t421 = sqr# t420
-      !t422 = mul# a t421
-      !t423 = sqr# t422
-      !t424 = mul# a t423
-      !t425 = sqr# t424
-      !t426 = mul# a t425
-      !t427 = sqr# t426
-      !t428 = mul# a t427
-      !t429 = sqr# t428
-      !t430 = mul# a t429
-      !t431 = sqr# t430
-      !t432 = mul# a t431
-      !t433 = sqr# t432
-      !t434 = mul# a t433
-      !t435 = sqr# t434
-      !t436 = mul# a t435
-      !t437 = sqr# t436
-      !t438 = mul# a t437
-      !t439 = sqr# t438
-      !t440 = mul# a t439
-      !t441 = sqr# t440
-      !t442 = mul# a t441
-      !t443 = sqr# t442
-      !t444 = mul# a t443
-      !t445 = sqr# t444
-      !t446 = mul# a t445
-      !t447 = sqr# t446
-      !t448 = sqr# t447
-      !t449 = mul# a t448
-      !t450 = sqr# t449
-      !t451 = mul# a t450
-      !t452 = sqr# t451
-      !t453 = mul# a t452
-      !t454 = sqr# t453
-      !t455 = mul# a t454
-      !t456 = sqr# t455
-      !t457 = mul# a t456
-      !t458 = sqr# t457
-      !t459 = mul# a t458
-      !t460 = sqr# t459
-      !t461 = mul# a t460
-      !t462 = sqr# t461
-      !t463 = mul# a t462
-      !t464 = sqr# t463
-      !t465 = mul# a t464
-      !t466 = sqr# t465
-      !t467 = mul# a t466
-      !t468 = sqr# t467
-      !t469 = mul# a t468
-      !t470 = sqr# t469
-      !t471 = mul# a t470
-      !t472 = sqr# t471
-      !t473 = mul# a t472
-      !t474 = sqr# t473
-      !t475 = mul# a t474
-      !t476 = sqr# t475
-      !t477 = mul# a t476
-      !t478 = sqr# t477
-      !t479 = mul# a t478
-      !t480 = sqr# t479
-      !t481 = mul# a t480
-      !t482 = sqr# t481
-      !t483 = mul# a t482
-      !t484 = sqr# t483
-      !t485 = mul# a t484
-      !t486 = sqr# t485
-      !t487 = mul# a t486
-      !t488 = sqr# t487
-      !t489 = mul# a t488
-      !t490 = sqr# t489
-      !t491 = mul# a t490
-      !t492 = sqr# t491
-      !t493 = sqr# t492
-      !t494 = sqr# t493
-      !t495 = sqr# t494
-      !t496 = sqr# t495
-      !t497 = mul# a t496
-      !t498 = sqr# t497
-      !t499 = sqr# t498
-      !t500 = mul# a t499
-      !t501 = sqr# t500
-      !t502 = mul# a t501
-      !t503 = sqr# t502
-      !t504 = sqr# t503
-      !t505 = mul# a t504
-      !r = t505
+      !t280 = mul# t279 a
+      !r = t280
   in  r
 {-# INLINE inv# #-}
 
diff --git a/lib/Numeric/Montgomery/Secp256k1/Scalar.hs b/lib/Numeric/Montgomery/Secp256k1/Scalar.hs
--- a/lib/Numeric/Montgomery/Secp256k1/Scalar.hs
+++ b/lib/Numeric/Montgomery/Secp256k1/Scalar.hs
@@ -480,461 +480,313 @@
   :: Limb4
   -> Limb4
 inv# a =
-  let !t0 = L4 0x402DA1732FC9BEBF## 0x4551231950B75FC4##
-               0x0000000000000001## 0x0000000000000000##
-      !t1 = sqr# t0
-      !t2 = mul# a t1
+  let
+      !t1 = sqr# a
+      !t2 = mul# t1 a
       !t3 = sqr# t2
-      !t4 = mul# a t3
-      !t5 = sqr# t4
-      !t6 = mul# a t5
+      !t4 = sqr# t3
+      !t5 = mul# t4 t2
+      !t6 = sqr# t5
       !t7 = sqr# t6
-      !t8 = mul# a t7
+      !t8 = sqr# t7
       !t9 = sqr# t8
-      !t10 = mul# a t9
+      !t10 = mul# t9 t5
       !t11 = sqr# t10
-      !t12 = mul# a t11
+      !t12 = sqr# t11
       !t13 = sqr# t12
-      !t14 = mul# a t13
+      !t14 = sqr# t13
       !t15 = sqr# t14
-      !t16 = mul# a t15
+      !t16 = sqr# t15
       !t17 = sqr# t16
-      !t18 = mul# a t17
-      !t19 = sqr# t18
-      !t20 = mul# a t19
+      !t18 = sqr# t17
+      !t19 = mul# t18 t10
+      !t20 = sqr# t19
       !t21 = sqr# t20
-      !t22 = mul# a t21
+      !t22 = sqr# t21
       !t23 = sqr# t22
-      !t24 = mul# a t23
+      !t24 = sqr# t23
       !t25 = sqr# t24
-      !t26 = mul# a t25
+      !t26 = sqr# t25
       !t27 = sqr# t26
-      !t28 = mul# a t27
+      !t28 = sqr# t27
       !t29 = sqr# t28
-      !t30 = mul# a t29
+      !t30 = sqr# t29
       !t31 = sqr# t30
-      !t32 = mul# a t31
+      !t32 = sqr# t31
       !t33 = sqr# t32
-      !t34 = mul# a t33
+      !t34 = sqr# t33
       !t35 = sqr# t34
-      !t36 = mul# a t35
+      !t36 = mul# t35 t19
       !t37 = sqr# t36
-      !t38 = mul# a t37
+      !t38 = sqr# t37
       !t39 = sqr# t38
-      !t40 = mul# a t39
+      !t40 = sqr# t39
       !t41 = sqr# t40
-      !t42 = mul# a t41
+      !t42 = sqr# t41
       !t43 = sqr# t42
-      !t44 = mul# a t43
+      !t44 = sqr# t43
       !t45 = sqr# t44
-      !t46 = mul# a t45
+      !t46 = sqr# t45
       !t47 = sqr# t46
-      !t48 = mul# a t47
+      !t48 = sqr# t47
       !t49 = sqr# t48
-      !t50 = mul# a t49
+      !t50 = sqr# t49
       !t51 = sqr# t50
-      !t52 = mul# a t51
+      !t52 = sqr# t51
       !t53 = sqr# t52
-      !t54 = mul# a t53
+      !t54 = sqr# t53
       !t55 = sqr# t54
-      !t56 = mul# a t55
+      !t56 = sqr# t55
       !t57 = sqr# t56
-      !t58 = mul# a t57
+      !t58 = sqr# t57
       !t59 = sqr# t58
-      !t60 = mul# a t59
+      !t60 = sqr# t59
       !t61 = sqr# t60
-      !t62 = mul# a t61
+      !t62 = sqr# t61
       !t63 = sqr# t62
-      !t64 = mul# a t63
+      !t64 = sqr# t63
       !t65 = sqr# t64
-      !t66 = mul# a t65
+      !t66 = sqr# t65
       !t67 = sqr# t66
-      !t68 = mul# a t67
-      !t69 = sqr# t68
-      !t70 = mul# a t69
+      !t68 = sqr# t67
+      !t69 = mul# t68 t36
+      !t70 = sqr# t69
       !t71 = sqr# t70
-      !t72 = mul# a t71
+      !t72 = sqr# t71
       !t73 = sqr# t72
-      !t74 = mul# a t73
+      !t74 = sqr# t73
       !t75 = sqr# t74
-      !t76 = mul# a t75
+      !t76 = sqr# t75
       !t77 = sqr# t76
-      !t78 = mul# a t77
+      !t78 = sqr# t77
       !t79 = sqr# t78
-      !t80 = mul# a t79
+      !t80 = sqr# t79
       !t81 = sqr# t80
-      !t82 = mul# a t81
+      !t82 = sqr# t81
       !t83 = sqr# t82
-      !t84 = mul# a t83
+      !t84 = sqr# t83
       !t85 = sqr# t84
-      !t86 = mul# a t85
+      !t86 = sqr# t85
       !t87 = sqr# t86
-      !t88 = mul# a t87
+      !t88 = sqr# t87
       !t89 = sqr# t88
-      !t90 = mul# a t89
+      !t90 = sqr# t89
       !t91 = sqr# t90
-      !t92 = mul# a t91
+      !t92 = sqr# t91
       !t93 = sqr# t92
-      !t94 = mul# a t93
+      !t94 = sqr# t93
       !t95 = sqr# t94
-      !t96 = mul# a t95
+      !t96 = sqr# t95
       !t97 = sqr# t96
-      !t98 = mul# a t97
+      !t98 = sqr# t97
       !t99 = sqr# t98
-      !t100 = mul# a t99
+      !t100 = sqr# t99
       !t101 = sqr# t100
-      !t102 = mul# a t101
+      !t102 = mul# t101 t36
       !t103 = sqr# t102
-      !t104 = mul# a t103
+      !t104 = sqr# t103
       !t105 = sqr# t104
-      !t106 = mul# a t105
+      !t106 = sqr# t105
       !t107 = sqr# t106
-      !t108 = mul# a t107
+      !t108 = sqr# t107
       !t109 = sqr# t108
-      !t110 = mul# a t109
+      !t110 = sqr# t109
       !t111 = sqr# t110
-      !t112 = mul# a t111
+      !t112 = sqr# t111
       !t113 = sqr# t112
-      !t114 = mul# a t113
+      !t114 = sqr# t113
       !t115 = sqr# t114
-      !t116 = mul# a t115
+      !t116 = sqr# t115
       !t117 = sqr# t116
-      !t118 = mul# a t117
-      !t119 = sqr# t118
-      !t120 = mul# a t119
+      !t118 = sqr# t117
+      !t119 = mul# t118 t19
+      !t120 = sqr# t119
       !t121 = sqr# t120
-      !t122 = mul# a t121
+      !t122 = sqr# t121
       !t123 = sqr# t122
-      !t124 = mul# a t123
+      !t124 = sqr# t123
       !t125 = sqr# t124
-      !t126 = mul# a t125
+      !t126 = sqr# t125
       !t127 = sqr# t126
-      !t128 = mul# a t127
+      !t128 = mul# t127 t10
       !t129 = sqr# t128
-      !t130 = mul# a t129
+      !t130 = sqr# t129
       !t131 = sqr# t130
-      !t132 = mul# a t131
-      !t133 = sqr# t132
-      !t134 = mul# a t133
+      !t132 = sqr# t131
+      !t133 = mul# t132 t5
+      !t134 = sqr# t133
       !t135 = sqr# t134
-      !t136 = mul# a t135
+      !t136 = mul# t135 t2
       !t137 = sqr# t136
-      !t138 = mul# a t137
-      !t139 = sqr# t138
-      !t140 = mul# a t139
-      !t141 = sqr# t140
-      !t142 = mul# a t141
-      !t143 = sqr# t142
-      !t144 = mul# a t143
+      !t138 = mul# t137 a
+      !t139 = sqr# t2
+      !t140 = mul# t139 a
+      !t141 = sqr# t5
+      !t142 = sqr# t141
+      !t143 = mul# t142 t2
+      !t144 = sqr# t138
       !t145 = sqr# t144
-      !t146 = mul# a t145
+      !t146 = mul# t145 a
       !t147 = sqr# t146
-      !t148 = mul# a t147
+      !t148 = sqr# t147
       !t149 = sqr# t148
-      !t150 = mul# a t149
-      !t151 = sqr# t150
-      !t152 = mul# a t151
+      !t150 = sqr# t149
+      !t151 = mul# t150 t140
+      !t152 = sqr# t151
       !t153 = sqr# t152
-      !t154 = mul# a t153
+      !t154 = mul# t153 a
       !t155 = sqr# t154
-      !t156 = mul# a t155
-      !t157 = sqr# t156
-      !t158 = mul# a t157
+      !t156 = sqr# t155
+      !t157 = mul# t156 a
+      !t158 = sqr# t157
       !t159 = sqr# t158
-      !t160 = mul# a t159
+      !t160 = mul# t159 a
       !t161 = sqr# t160
-      !t162 = mul# a t161
+      !t162 = sqr# t161
       !t163 = sqr# t162
-      !t164 = mul# a t163
-      !t165 = sqr# t164
-      !t166 = mul# a t165
+      !t164 = sqr# t163
+      !t165 = mul# t164 t140
+      !t166 = sqr# t165
       !t167 = sqr# t166
-      !t168 = mul# a t167
-      !t169 = sqr# t168
-      !t170 = mul# a t169
+      !t168 = sqr# t167
+      !t169 = mul# t168 t2
+      !t170 = sqr# t169
       !t171 = sqr# t170
-      !t172 = mul# a t171
+      !t172 = sqr# t171
       !t173 = sqr# t172
-      !t174 = mul# a t173
+      !t174 = mul# t173 t140
       !t175 = sqr# t174
-      !t176 = mul# a t175
+      !t176 = sqr# t175
       !t177 = sqr# t176
-      !t178 = mul# a t177
+      !t178 = sqr# t177
       !t179 = sqr# t178
-      !t180 = mul# a t179
+      !t180 = mul# t179 t140
       !t181 = sqr# t180
-      !t182 = mul# a t181
+      !t182 = sqr# t181
       !t183 = sqr# t182
-      !t184 = mul# a t183
-      !t185 = sqr# t184
-      !t186 = mul# a t185
+      !t184 = sqr# t183
+      !t185 = mul# t184 t2
+      !t186 = sqr# t185
       !t187 = sqr# t186
-      !t188 = mul# a t187
+      !t188 = mul# t187 a
       !t189 = sqr# t188
-      !t190 = mul# a t189
-      !t191 = sqr# t190
-      !t192 = mul# a t191
+      !t190 = sqr# t189
+      !t191 = mul# t190 a
+      !t192 = sqr# t191
       !t193 = sqr# t192
-      !t194 = mul# a t193
+      !t194 = sqr# t193
       !t195 = sqr# t194
-      !t196 = mul# a t195
-      !t197 = sqr# t196
-      !t198 = mul# a t197
+      !t196 = sqr# t195
+      !t197 = mul# t196 t5
+      !t198 = sqr# t197
       !t199 = sqr# t198
-      !t200 = mul# a t199
+      !t200 = mul# t199 a
       !t201 = sqr# t200
-      !t202 = mul# a t201
+      !t202 = sqr# t201
       !t203 = sqr# t202
-      !t204 = mul# a t203
+      !t204 = mul# t203 a
       !t205 = sqr# t204
-      !t206 = mul# a t205
+      !t206 = sqr# t205
       !t207 = sqr# t206
-      !t208 = mul# a t207
-      !t209 = sqr# t208
-      !t210 = mul# a t209
+      !t208 = sqr# t207
+      !t209 = mul# t208 a
+      !t210 = sqr# t209
       !t211 = sqr# t210
-      !t212 = mul# a t211
+      !t212 = mul# t211 a
       !t213 = sqr# t212
-      !t214 = mul# a t213
+      !t214 = sqr# t213
       !t215 = sqr# t214
-      !t216 = mul# a t215
+      !t216 = sqr# t215
       !t217 = sqr# t216
-      !t218 = mul# a t217
+      !t218 = sqr# t217
       !t219 = sqr# t218
-      !t220 = mul# a t219
+      !t220 = sqr# t219
       !t221 = sqr# t220
-      !t222 = mul# a t221
-      !t223 = sqr# t222
-      !t224 = mul# a t223
+      !t222 = sqr# t221
+      !t223 = mul# t222 t140
+      !t224 = sqr# t223
       !t225 = sqr# t224
-      !t226 = mul# a t225
+      !t226 = sqr# t225
       !t227 = sqr# t226
-      !t228 = mul# a t227
+      !t228 = mul# t227 t140
       !t229 = sqr# t228
-      !t230 = mul# a t229
+      !t230 = sqr# t229
       !t231 = sqr# t230
-      !t232 = mul# a t231
+      !t232 = sqr# t231
       !t233 = sqr# t232
-      !t234 = mul# a t233
+      !t234 = sqr# t233
       !t235 = sqr# t234
-      !t236 = mul# a t235
+      !t236 = sqr# t235
       !t237 = sqr# t236
-      !t238 = mul# a t237
+      !t238 = mul# t237 t10
       !t239 = sqr# t238
-      !t240 = mul# a t239
-      !t241 = sqr# t240
-      !t242 = mul# a t241
+      !t240 = sqr# t239
+      !t241 = mul# t240 a
+      !t242 = sqr# t241
       !t243 = sqr# t242
-      !t244 = mul# a t243
-      !t245 = sqr# t244
-      !t246 = mul# a t245
+      !t244 = sqr# t243
+      !t245 = mul# t244 a
+      !t246 = sqr# t245
       !t247 = sqr# t246
-      !t248 = mul# a t247
-      !t249 = sqr# t248
-      !t250 = mul# a t249
+      !t248 = sqr# t247
+      !t249 = mul# t248 a
+      !t250 = sqr# t249
       !t251 = sqr# t250
-      !t252 = mul# a t251
+      !t252 = sqr# t251
       !t253 = sqr# t252
-      !t254 = mul# a t253
-      !t255 = sqr# t254
+      !t254 = sqr# t253
+      !t255 = mul# t254 t5
       !t256 = sqr# t255
-      !t257 = mul# a t256
-      !t258 = sqr# t257
+      !t257 = sqr# t256
+      !t258 = mul# t257 a
       !t259 = sqr# t258
-      !t260 = mul# a t259
+      !t260 = sqr# t259
       !t261 = sqr# t260
-      !t262 = mul# a t261
+      !t262 = sqr# t261
       !t263 = sqr# t262
-      !t264 = mul# a t263
+      !t264 = mul# t263 t2
       !t265 = sqr# t264
       !t266 = sqr# t265
-      !t267 = mul# a t266
+      !t267 = sqr# t266
       !t268 = sqr# t267
-      !t269 = sqr# t268
-      !t270 = mul# a t269
+      !t269 = mul# t268 t2
+      !t270 = sqr# t269
       !t271 = sqr# t270
-      !t272 = sqr# t271
-      !t273 = mul# a t272
+      !t272 = mul# t271 a
+      !t273 = sqr# t272
       !t274 = sqr# t273
       !t275 = sqr# t274
-      !t276 = mul# a t275
+      !t276 = sqr# t275
       !t277 = sqr# t276
-      !t278 = mul# a t277
+      !t278 = sqr# t277
       !t279 = sqr# t278
-      !t280 = mul# a t279
-      !t281 = sqr# t280
+      !t280 = sqr# t279
+      !t281 = mul# t280 t2
       !t282 = sqr# t281
-      !t283 = mul# a t282
+      !t283 = sqr# t282
       !t284 = sqr# t283
-      !t285 = mul# a t284
+      !t285 = mul# t284 t2
       !t286 = sqr# t285
       !t287 = sqr# t286
-      !t288 = mul# a t287
-      !t289 = sqr# t288
-      !t290 = mul# a t289
+      !t288 = sqr# t287
+      !t289 = mul# t288 a
+      !t290 = sqr# t289
       !t291 = sqr# t290
-      !t292 = mul# a t291
+      !t292 = sqr# t291
       !t293 = sqr# t292
       !t294 = sqr# t293
       !t295 = sqr# t294
-      !t296 = mul# a t295
+      !t296 = mul# t295 a
       !t297 = sqr# t296
-      !t298 = mul# a t297
+      !t298 = sqr# t297
       !t299 = sqr# t298
-      !t300 = mul# a t299
+      !t300 = sqr# t299
       !t301 = sqr# t300
       !t302 = sqr# t301
       !t303 = sqr# t302
-      !t304 = mul# a t303
-      !t305 = sqr# t304
-      !t306 = mul# a t305
-      !t307 = sqr# t306
-      !t308 = sqr# t307
-      !t309 = mul# a t308
-      !t310 = sqr# t309
-      !t311 = sqr# t310
-      !t312 = mul# a t311
-      !t313 = sqr# t312
-      !t314 = sqr# t313
-      !t315 = mul# a t314
-      !t316 = sqr# t315
-      !t317 = mul# a t316
-      !t318 = sqr# t317
-      !t319 = mul# a t318
-      !t320 = sqr# t319
-      !t321 = mul# a t320
-      !t322 = sqr# t321
-      !t323 = sqr# t322
-      !t324 = mul# a t323
-      !t325 = sqr# t324
-      !t326 = sqr# t325
-      !t327 = sqr# t326
-      !t328 = mul# a t327
-      !t329 = sqr# t328
-      !t330 = sqr# t329
-      !t331 = sqr# t330
-      !t332 = sqr# t331
-      !t333 = mul# a t332
-      !t334 = sqr# t333
-      !t335 = sqr# t334
-      !t336 = mul# a t335
-      !t337 = sqr# t336
-      !t338 = sqr# t337
-      !t339 = sqr# t338
-      !t340 = sqr# t339
-      !t341 = sqr# t340
-      !t342 = sqr# t341
-      !t343 = sqr# t342
-      !t344 = sqr# t343
-      !t345 = mul# a t344
-      !t346 = sqr# t345
-      !t347 = mul# a t346
-      !t348 = sqr# t347
-      !t349 = mul# a t348
-      !t350 = sqr# t349
-      !t351 = sqr# t350
-      !t352 = mul# a t351
-      !t353 = sqr# t352
-      !t354 = mul# a t353
-      !t355 = sqr# t354
-      !t356 = mul# a t355
-      !t357 = sqr# t356
-      !t358 = sqr# t357
-      !t359 = mul# a t358
-      !t360 = sqr# t359
-      !t361 = mul# a t360
-      !t362 = sqr# t361
-      !t363 = mul# a t362
-      !t364 = sqr# t363
-      !t365 = mul# a t364
-      !t366 = sqr# t365
-      !t367 = mul# a t366
-      !t368 = sqr# t367
-      !t369 = mul# a t368
-      !t370 = sqr# t369
-      !t371 = mul# a t370
-      !t372 = sqr# t371
-      !t373 = mul# a t372
-      !t374 = sqr# t373
-      !t375 = sqr# t374
-      !t376 = mul# a t375
-      !t377 = sqr# t376
-      !t378 = sqr# t377
-      !t379 = sqr# t378
-      !t380 = mul# a t379
-      !t381 = sqr# t380
-      !t382 = sqr# t381
-      !t383 = sqr# t382
-      !t384 = mul# a t383
-      !t385 = sqr# t384
-      !t386 = sqr# t385
-      !t387 = mul# a t386
-      !t388 = sqr# t387
-      !t389 = mul# a t388
-      !t390 = sqr# t389
-      !t391 = mul# a t390
-      !t392 = sqr# t391
-      !t393 = mul# a t392
-      !t394 = sqr# t393
-      !t395 = sqr# t394
-      !t396 = mul# a t395
-      !t397 = sqr# t396
-      !t398 = sqr# t397
-      !t399 = sqr# t398
-      !t400 = sqr# t399
-      !t401 = mul# a t400
-      !t402 = sqr# t401
-      !t403 = mul# a t402
-      !t404 = sqr# t403
-      !t405 = sqr# t404
-      !t406 = sqr# t405
-      !t407 = mul# a t406
-      !t408 = sqr# t407
-      !t409 = mul# a t408
-      !t410 = sqr# t409
-      !t411 = sqr# t410
-      !t412 = mul# a t411
-      !t413 = sqr# t412
-      !t414 = sqr# t413
-      !t415 = sqr# t414
-      !t416 = sqr# t415
-      !t417 = sqr# t416
-      !t418 = sqr# t417
-      !t419 = sqr# t418
-      !t420 = mul# a t419
-      !t421 = sqr# t420
-      !t422 = mul# a t421
-      !t423 = sqr# t422
-      !t424 = sqr# t423
-      !t425 = mul# a t424
-      !t426 = sqr# t425
-      !t427 = mul# a t426
-      !t428 = sqr# t427
-      !t429 = sqr# t428
-      !t430 = sqr# t429
-      !t431 = mul# a t430
-      !t432 = sqr# t431
-      !t433 = sqr# t432
-      !t434 = sqr# t433
-      !t435 = sqr# t434
-      !t436 = sqr# t435
-      !t437 = sqr# t436
-      !t438 = mul# a t437
-      !t439 = sqr# t438
-      !t440 = sqr# t439
-      !t441 = sqr# t440
-      !t442 = mul# a t441
-      !t443 = sqr# t442
-      !t444 = mul# a t443
-      !t445 = sqr# t444
-      !t446 = mul# a t445
-      !t447 = sqr# t446
-      !t448 = mul# a t447
-      !t449 = sqr# t448
-      !t450 = mul# a t449
-      !t451 = sqr# t450
-      !t452 = mul# a t451
-      !r = t452
+      !t304 = sqr# t303
+      !t305 = mul# t304 t143
+      !r = t305
   in  r
 {-# INLINE inv# #-}
 
diff --git a/ppad-fixed.cabal b/ppad-fixed.cabal
--- a/ppad-fixed.cabal
+++ b/ppad-fixed.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               ppad-fixed
-version:            0.1.4
+version:            0.1.5
 synopsis:           Large fixed-width words and constant-time arithmetic.
 license:            MIT
 license-file:       LICENSE
