aboutsummaryrefslogtreecommitdiff
path: root/src/Analysis
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-10-30 15:58:08 +0100
committerTom Smeding <tom@tomsmeding.com>2025-10-30 15:58:08 +0100
commit4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f (patch)
treee371c4962f1beee96cc68d55accffab16e18b97a /src/Analysis
parent4d456e4d34b1e4fb3725051d1b8a0c376b704692 (diff)
Simplify foldD2 to not sum x0 contributions
Diffstat (limited to 'src/Analysis')
-rw-r--r--src/Analysis/Identity.hs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/Analysis/Identity.hs b/src/Analysis/Identity.hs
index b3a6664..6301dc1 100644
--- a/src/Analysis/Identity.hs
+++ b/src/Analysis/Identity.hs
@@ -261,21 +261,17 @@ idana env expr = case expr of
res <- VIPair <$> (VIArr <$> genId <*> pure sh) <*> (VIArr <$> genId <*> pure sh')
pure (res, EFold1InnerD1 res cm e1' e2' e3')
- EFold1InnerD2 _ cm ef ez eplus ebog ed -> do
+ EFold1InnerD2 _ cm ef ebog ed -> do
let STArr _ tB = typeOf ebog
- t2 = typeOf ez
+ STArr _ t2 = typeOf ed
xf1 <- genIds t2
xf2 <- genIds tB
(_, e1') <- idana (xf1 `SCons` xf2 `SCons` env) ef
- (_, e2') <- idana env ez
- xp1 <- genIds t2
- xp2 <- genIds t2
- (_, e3') <- idana (xp1 `SCons` xp2 `SCons` env) eplus
- (v4, e4') <- idana env ebog
- (_, e5') <- idana env ed
- let VIArr _ sh = v4
- res <- VIPair <$> genIds t2 <*> (VIArr <$> genId <*> pure sh)
- pure (res, EFold1InnerD2 res cm e1' e2' e3' e4' e5')
+ (v2, e2') <- idana env ebog
+ (_, e3') <- idana env ed
+ let VIArr _ sh@(_ :< sh') = v2
+ res <- VIPair <$> (VIArr <$> genId <*> pure sh') <*> (VIArr <$> genId <*> pure sh)
+ pure (res, EFold1InnerD2 res cm e1' e2' e3')
EConst _ t val -> do
res <- VIScal <$> genId