MCPcopy Create free account
hub / github.com/google-deepmind/alphageometry / add_expr

Method add_expr

ar.py:299–337  ·  view source on GitHub ↗

Add a new equality, represented by the list of tuples vc=[(v, c), ..].

(self, vc: list[tuple[str, float]])

Source from the content-addressed store, hash-verified

297 self.v2e[v] = replace(e, v0, e0)
298
299 def add_expr(self, vc: list[tuple[str, float]]) -> bool:
300 """Add a new equality, represented by the list of tuples vc=[(v, c), ..]."""
301 result = {}
302 free = []
303
304 for v, c in vc:
305 c = frac(c)
306 if v in self.v2e:
307 result = plus(result, mult(self.v2e[v], c))
308 else:
309 free += [(v, c)]
310
311 if free == []: # pylint: disable=g-explicit-bool-comparison
312 if is_zero(self.modulo(result)):
313 return False
314 result = recon(result, self.const)
315 if result is None:
316 return False
317 v, e = result
318 self.replace(v, e)
319
320 elif len(free) == 1:
321 v, m = free[0]
322 self.v2e[v] = mult(result, frac(-1, m))
323
324 else:
325 dependent_v = None
326 for v, m in free:
327 if dependent_v is None and v != self.const:
328 dependent_v = (v, m)
329 continue
330
331 self.add_free(v)
332 result = plus(result, {v: m})
333
334 v, m = dependent_v
335 self.v2e[v] = mult(result, frac(-1, m))
336
337 return True
338
339 def register(self, vc: list[tuple[str, float]], dep: pr.Dependency) -> None:
340 """Register a new equality vc=[(v, c), ..] with traceback dependency dep."""

Callers 4

add_eq2Method · 0.95
add_eq3Method · 0.95
add_eq4Method · 0.95
add_eqangleMethod · 0.80

Calls 7

moduloMethod · 0.95
replaceMethod · 0.95
add_freeMethod · 0.95
plusFunction · 0.85
multFunction · 0.85
is_zeroFunction · 0.85
reconFunction · 0.85

Tested by

no test coverage detected