From 4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Thu, 30 Oct 2025 15:58:08 +0100 Subject: Simplify foldD2 to not sum x0 contributions --- src/Analysis/Identity.hs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'src/Analysis/Identity.hs') 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 -- cgit v1.2.3-70-g09d2