AngouriMath

Navigation

← Back to list of members

Power

 Property

Summary

PowerRules(AngouriMath.Entity), as data.

Remarks

The largest set converted so far, and the one whose rules are least alike. It
carries the branch-cut guards that #752, #801, #802, #902 and #721 each put on one
rewrite, and those guards are the reason nearly every rule here is
SoundUnderAssumptions rather than
Sound: the identity is true, and it is true on a region.
The conditions stay where they were — Patterns.Power.cs holds
MayTakeLogOfPower, MayGatherLogarithms and ReduceRadical, and the
rules here ask them. Copying a branch-cut condition into a second file is how the two
copies come to disagree, and one of them has already been wrong in both directions at
once.
Two commutative rules stand for six arms here, and that is affordable only because
of #1079.
A commutative pattern is not IsDeterministic, and before
bounded matching that meant enumerating its two candidates through an iterator state
machine per pattern node, at every node of every pass: 165.05 MB to 171.37 MB on
SolveMediumHard, +3.8%, past the kernel gate's 3% allocation band. Walked by
index instead, the same two rules cost +0.94% and the six arms need not be written out.
Two rules read something a Bindings cannot carry. log_b(b) = 1 needs the node's own DomainCondition rather than a condition written out
here, and takes the overload that is handed the matched node; and the radical reduction
asks ReduceRadical in both its when and its replacement, because whether
the rule applies and what it produces are the same computation.

























Angouri © 2019-2023 · Project's repo · Site's repo · Octicons · Transparency · 4378 pages online