|
from sympy.abc import a, b, c, x |
|
from output_util import to_latex, sign2cmp |
|
from sgntools import sq_func_sgn |
|
from solution import * |
|
|
|
|
|
class PiIntegrate(GetIntegrateFromData): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data = { |
|
1: { |
|
"pi_term": (a - b - c) / 4, |
|
"log2_term": (a + b - c) / 2, |
|
CONSTANT_TERM_KEY: -a + b / 2 + 7 * c / 6, |
|
}, |
|
2: { |
|
"pi_term": -b / 2, |
|
"log2_term": a - c, |
|
CONSTANT_TERM_KEY: (-2 * a / 3 + 19 * b / 12 + 7 * c / 10), |
|
}, |
|
3: { |
|
"pi_term": (-a - b + c) / 2, |
|
"log2_term": a - b - c, |
|
CONSTANT_TERM_KEY: 53 * a / 60 + 34 * b / 15 - 92 * c / 105, |
|
}, |
|
4: { |
|
"pi_term": -a + c, |
|
"log2_term": 2 * b, |
|
CONSTANT_TERM_KEY: 22 * a / 7 + 233 * b / 168 - 1979 * c / 630, |
|
}, |
|
5: { |
|
"pi_term": -a + b + c, |
|
"log2_term": 2 * (-a - b + c), |
|
CONSTANT_TERM_KEY: 11411 * a / 2520 - 4423 * b / 2520 - 41837 * c / 9240, |
|
}, |
|
6: { |
|
"pi_term": 2 * b, |
|
"log2_term": -4 * a + 4 * c, |
|
CONSTANT_TERM_KEY: (38429 * a) / 13860 |
|
- (174169 * b) / 27720 |
|
- (35683 * c) / 12870, |
|
}, |
|
7: { |
|
"pi_term": 2 * (a + b - c), |
|
"log2_term": 4 * (-a + b + c), |
|
CONSTANT_TERM_KEY: -((421691 * a) / 120120) |
|
- (407917 * b) / 45045 |
|
+ (31627 * c) / 9009, |
|
}, |
|
8: { |
|
"pi_term": 4 * (a - c), |
|
"log2_term": 8 * b, |
|
CONSTANT_TERM_KEY: -(188684 * a) / 15015 |
|
- (1332173 * b) / 240240 |
|
+ (3849155 * c) / 306306, |
|
}, |
|
9: { |
|
"pi_term": 4 * (a - b - c), |
|
"log2_term": 8 * (-c + a + b), |
|
CONSTANT_TERM_KEY: -((17069771 * a) / 942480) |
|
+ (86025349 * b) / 12252240 |
|
+ (4216233689 * c) / 232792560, |
|
}, |
|
10: { |
|
"pi_term": -8 * b, |
|
"log2_term": 16 * (a - c), |
|
CONSTANT_TERM_KEY: -((1290876029 * a) / 116396280) |
|
+ (325039733 * b) / 12932920 |
|
+ (117352369 * c) / 10581480, |
|
}, |
|
11: { |
|
"pi_term": 8 * (-a - b + c), |
|
"log2_term": 16 * (a - b - c), |
|
CONSTANT_TERM_KEY: (817240769 * a) / 58198140 |
|
+ (4216233641 * b) / 116396280 |
|
- (37593075209 * c) / 2677114440, |
|
}, |
|
12: { |
|
"pi_term": -16 * a + 16 * c, |
|
"log2_term": -32 * b, |
|
CONSTANT_TERM_KEY: (431302721 * a) / 8580495 |
|
+ (9135430531 * b) / 411863760 |
|
- (5902037233 * c) / 117417300, |
|
}, |
|
} |
|
|
|
def get_integrate_args(self, n): |
|
return x**n * (1 - x) ** n * (a + b * x + c * x**2) / (1 + x**2), (x, 0, 1) |
|
|
|
|
|
class PiSolution(Solution): |
|
def __init__(self, p, q): |
|
self.p = p |
|
self.q = q |
|
|
|
if self.q == 0: |
|
raise BadInput() |
|
|
|
self.get_integrate = PiIntegrate() |
|
self.symbols = (a, b, c) |
|
|
|
self.integrate_result_classes_eq = { |
|
"pi_term": q, |
|
"log2_term": 0, |
|
CONSTANT_TERM_KEY: -p, |
|
} |
|
|
|
self.check_sgn = sq_func_sgn |
|
|
|
@staticmethod |
|
def get_tries_args(): |
|
return PiIntegrate.data.keys() |
|
|
|
def get_latex_ans(self): |
|
try_arg, symbol_val, sgn = self.try_times() |
|
print(f"{(try_arg, symbol_val, sgn)=}") |
|
|
|
if try_arg is None: |
|
return None |
|
|
|
p = to_latex(self.p) |
|
q = to_latex(self.q, is_coeff=True) |
|
I = self.get_integrate.get_latex(try_arg, symbol_val) |
|
return rf"{q}\pi-{p} = {I} {sign2cmp[sgn]} 0" |
|
|
|
|
|
register("π", PiSolution, top=True) |
|
|
|
if __name__ == "__main__": |
|
while True: |
|
p = int(input(">>> ")) |
|
q = int(input(" / ")) |
|
print(PiSolution(p, q).get_latex_ans()) |
|
|