diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2025-10-30 15:58:08 +0100 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2025-10-30 15:58:08 +0100 |
| commit | 4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f (patch) | |
| tree | e371c4962f1beee96cc68d55accffab16e18b97a /src/Analysis | |
| parent | 4d456e4d34b1e4fb3725051d1b8a0c376b704692 (diff) | |
Simplify foldD2 to not sum x0 contributions
Diffstat (limited to 'src/Analysis')
| -rw-r--r-- | src/Analysis/Identity.hs | 18 |
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 |
