From 67c7b211fea5c01af3d0f3ed35f738e9568c4c5a Mon Sep 17 00:00:00 2001 From: Niels Date: Thu, 2 Jan 2025 14:47:04 +0100 Subject: [PATCH] Fix most cost models --- uplc/cost_model.py | 5 +++-- uplc/cost_model_files/base/builtinCostModel.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/uplc/cost_model.py b/uplc/cost_model.py index 79d7c65..f39e437 100644 --- a/uplc/cost_model.py +++ b/uplc/cost_model.py @@ -301,7 +301,7 @@ def update_from_network_config( f"{prefix}-arguments-constant", DEFAULT_COST_COEFF ) self.model_above_equal_diagonal.update_from_network_config( - network_config, f"{prefix}-arguments-model" + network_config, f"{prefix}-arguments-model" if not isinstance(self.model_above_equal_diagonal, QuadraticInXAndY) else prefix ) @dataclasses.dataclass @@ -355,7 +355,8 @@ class QuadraticInXAndY(CostingFun): minimum: int = 0 def cost(self, *memories: int, values=[]) -> int: - poly = self.c00 + self.c10 * memories[0] + self.c01 * memories[1] + + self.c20 * memories[0] ** 2 + self.c11 * memories[0] * memories[1] + self.c02 * memories[1] ** 2 + x, y = memories[0], memories[1] + poly = self.c00 + self.c10 * x + self.c01 * y + + self.c20 * x * x + self.c11 * x * y + self.c02 * y * y return max(poly, self.minimum) @classmethod diff --git a/uplc/cost_model_files/base/builtinCostModel.json b/uplc/cost_model_files/base/builtinCostModel.json index 0de45a4..25e49c1 100644 --- a/uplc/cost_model_files/base/builtinCostModel.json +++ b/uplc/cost_model_files/base/builtinCostModel.json @@ -724,7 +724,7 @@ "type": "quadratic_in_x_and_y" } }, - "type": "const_above_diagonal" + "type": "const_below_diagonal" }, "memory": { "arguments": {