Pass beta_sq to util_c instead of env
Keeps Util module free of Env dependency.

Assisted-by: Claude Opus 4.6 via pi
change pvtvmkrlsrwvwwpmyxpytrpyruvsxpyn
commit 09ebfca192d43e7d38a29531afc43a99b51b88c5
author Alpha Chen <alpha@kejadlen.dev>
date
parent yvmuvwzo
diff --git a/lib/open_skill/plackett_luce.rb b/lib/open_skill/plackett_luce.rb
index 6483d3d..1b22b96 100644
--- a/lib/open_skill/plackett_luce.rb
+++ b/lib/open_skill/plackett_luce.rb
@@ -8,7 +8,7 @@ module OpenSkill
       return game if game.length <= 1
 
       team_ratings = Util.team_rating(game, rank: rank)
-      c = Util.util_c(team_ratings, env)
+      c = Util.util_c(team_ratings, env.beta_sq)
       sum_q = Util.util_sum_q(team_ratings, c)
       a = Util.util_a(team_ratings)
 
diff --git a/lib/open_skill/util.rb b/lib/open_skill/util.rb
index d42666d..5e6366c 100644
--- a/lib/open_skill/util.rb
+++ b/lib/open_skill/util.rb
@@ -41,8 +41,8 @@ module OpenSkill
       }
     end
 
-    def self.util_c(team_ratings, env)
-      Math.sqrt(team_ratings.sum { |tr| tr.sigma_sq + env.beta_sq })
+    def self.util_c(team_ratings, beta_sq)
+      Math.sqrt(team_ratings.sum { |tr| tr.sigma_sq + beta_sq })
     end
 
     def self.util_sum_q(team_ratings, c)
diff --git a/test/test_open_skill.rb b/test/test_open_skill.rb
index b2fa551..4d544bb 100644
--- a/test/test_open_skill.rb
+++ b/test/test_open_skill.rb
@@ -357,14 +357,14 @@ class TestUtilC < Minitest::Test
     team1 = [r]
     team2 = [r, r]
     team_ratings = OpenSkill::Util.team_rating([team2, team1])
-    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants)
+    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants.beta_sq)
     assert_in_delta 15.590239, c, 0.001
   end
 
   def test_util_c_5v5
     r = OpenSkill.rating
     team_ratings = OpenSkill::Util.team_rating([[r] * 5, [r] * 5])
-    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants)
+    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants.beta_sq)
     assert_in_delta 27.003, c, 0.001
   end
 end
@@ -376,7 +376,7 @@ class TestUtilSumQ < Minitest::Test
     team1 = [r]
     team2 = [r, r]
     team_ratings = OpenSkill::Util.team_rating([team1, team2])
-    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants)
+    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants.beta_sq)
     sum_q = OpenSkill::Util.util_sum_q(team_ratings, c)
     assert_equal [29.67892702634643, 24.70819334370875], sum_q
   end
@@ -384,7 +384,7 @@ class TestUtilSumQ < Minitest::Test
   def test_util_sum_q_5v5
     r = OpenSkill.rating
     team_ratings = OpenSkill::Util.team_rating([[r] * 5, [r] * 5])
-    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants)
+    c = OpenSkill::Util.util_c(team_ratings, OpenSkill.constants.beta_sq)
     sum_q = OpenSkill::Util.util_sum_q(team_ratings, c)
     assert_in_delta 204.84, sum_q[0], 0.01
     assert_in_delta 102.42, sum_q[1], 0.01