list := 0; adjust := 0; elem := @Elements(values); @If(elem = 1; @Return(values); elem > 8192; @Do(@Prompt([OK]; "Error"; "Number of elements to add exceeded 8192"); @Return("")); ""); f := @Power(2; @Integer((@Log(elem) / @Log(2)))); @Set("adjust"; elem - f); @If(adjust = 0; @Set("list"; values); @Do(@Set("list"; ((@Subset(values; adjust) + @Subset(values; -adjust)) : @Subset(@Subset(values; f); adjust - f))))); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); @If(f > 1; @Do(@Set("f"; f / 2); @Set("list"; ((@Subset(list; f) + @Subset(list; -f))))); @Return(list)); list