mathai 0.5.2__py3-none-any.whl → 0.5.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mathai/__init__.py +1 -1
- mathai/base.py +3 -1
- mathai/integrate.py +15 -3
- mathai/limit.py +93 -69
- mathai/parser.py +2 -2
- mathai/simplify.py +5 -0
- {mathai-0.5.2.dist-info → mathai-0.5.4.dist-info}/METADATA +1 -1
- {mathai-0.5.2.dist-info → mathai-0.5.4.dist-info}/RECORD +10 -10
- {mathai-0.5.2.dist-info → mathai-0.5.4.dist-info}/WHEEL +0 -0
- {mathai-0.5.2.dist-info → mathai-0.5.4.dist-info}/top_level.txt +0 -0
mathai/__init__.py
CHANGED
|
@@ -39,7 +39,7 @@ from .logic import logic0, logic1, logic2, logic3
|
|
|
39
39
|
|
|
40
40
|
from .apart import apart, apart2
|
|
41
41
|
|
|
42
|
-
from .limit import
|
|
42
|
+
from .limit import limit1, limit2, limit0, limit3
|
|
43
43
|
|
|
44
44
|
from .univariate_inequality import wavycurvy, absolute, domain, handle_sqrt
|
|
45
45
|
from .bivariate_inequality import inequality_solve
|
mathai/base.py
CHANGED
|
@@ -168,9 +168,11 @@ def factor_generation(eq):
|
|
|
168
168
|
if eq.name == "f_mul":
|
|
169
169
|
for child in eq.children:
|
|
170
170
|
if child.name == "f_pow":
|
|
171
|
+
'''
|
|
171
172
|
if child.children[0].name[:2] == "s_":
|
|
172
173
|
output.append(child)
|
|
173
174
|
continue
|
|
175
|
+
'''
|
|
174
176
|
if child.children[1].name[:2] != "d_":
|
|
175
177
|
output.append(child)
|
|
176
178
|
continue
|
|
@@ -332,7 +334,7 @@ def string_equation_helper(equation_tree):
|
|
|
332
334
|
if equation_tree.name == "f_index":
|
|
333
335
|
return string_equation_helper(equation_tree.children[0])+"["+",".join([string_equation_helper(child) for child in equation_tree.children[1:]])+"]"
|
|
334
336
|
s = "("
|
|
335
|
-
if len(equation_tree.children) == 1 or equation_tree.name[2:] in [chr(ord("A")+i) for i in range(26)]+["subs", "try", "ref", "integrate", "exist", "forall", "sum2", "int", "pdif", "dif", "A", "B", "C", "covariance", "sum"]:
|
|
337
|
+
if len(equation_tree.children) == 1 or equation_tree.name[2:] in [chr(ord("A")+i) for i in range(26)]+["limitpinf", "subs", "try", "ref","limit", "integrate", "exist", "forall", "sum2", "int", "pdif", "dif", "A", "B", "C", "covariance", "sum"]:
|
|
336
338
|
s = equation_tree.name[2:] + s
|
|
337
339
|
sign = {"f_not":"~", "f_addw":"+", "f_mulw":"*", "f_intersection":"&", "f_union":"|", "f_sum2":",", "f_exist":",", "f_forall":",", "f_sum":",","f_covariance": ",", "f_B":",", "f_imply":"->", "f_ge":">=", "f_le":"<=", "f_gt":">", "f_lt":"<", "f_cosec":"?" , "f_equiv": "<->", "f_sec":"?", "f_cot": "?", "f_dot": ".", "f_circumcenter":"?", "f_transpose":"?", "f_exp":"?", "f_abs":"?", "f_log":"?", "f_and":"&", "f_or":"|", "f_sub":"-", "f_neg":"?", "f_inv":"?", "f_add": "+", "f_mul": "*", "f_pow": "^", "f_poly": ",", "f_div": "/", "f_sub": "-", "f_dif": ",", "f_sin": "?", "f_cos": "?", "f_tan": "?", "f_eq": "=", "f_sqrt": "?"}
|
|
338
340
|
arr = []
|
mathai/integrate.py
CHANGED
|
@@ -79,8 +79,10 @@ def subs_heuristic(eq, var):
|
|
|
79
79
|
try_index = []
|
|
80
80
|
try_lst = []
|
|
81
81
|
def ref(eq):
|
|
82
|
+
'''
|
|
82
83
|
if eq.name in ["f_try", "f_ref"]:
|
|
83
84
|
return eq
|
|
85
|
+
'''
|
|
84
86
|
if eq.name == "f_integrate":
|
|
85
87
|
return TreeNode("f_try", [eq.fx("ref"), eq])
|
|
86
88
|
return TreeNode(eq.name, [ref(child) for child in eq.children])
|
|
@@ -98,12 +100,12 @@ def _solve_integrate(eq):
|
|
|
98
100
|
if eq.name == "f_ref":
|
|
99
101
|
return eq
|
|
100
102
|
if eq.name == "f_subs":
|
|
101
|
-
if
|
|
103
|
+
if all(item not in str_form(eq.children[0]) for item in ["f_integrate", "f_subs", "f_try"]):
|
|
102
104
|
return replace(eq.children[0], eq.children[1], eq.children[2])
|
|
103
105
|
|
|
104
106
|
if eq.name == "f_try":
|
|
105
107
|
for child in eq.children:
|
|
106
|
-
if
|
|
108
|
+
if all(item not in str_form(child) for item in ["f_integrate", "f_subs", "f_try"]):
|
|
107
109
|
return child
|
|
108
110
|
return TreeNode(eq.name, [_solve_integrate(child) for child in eq.children])
|
|
109
111
|
def handle_try(eq):
|
|
@@ -131,6 +133,7 @@ def inteq(eq):
|
|
|
131
133
|
break
|
|
132
134
|
if eq2 is None:
|
|
133
135
|
return eq
|
|
136
|
+
printeq(eq)
|
|
134
137
|
for child in eq.children:
|
|
135
138
|
if child.name == "f_ref":
|
|
136
139
|
output.append(child)
|
|
@@ -144,6 +147,8 @@ def inteq(eq):
|
|
|
144
147
|
output.append(out)
|
|
145
148
|
else:
|
|
146
149
|
output.append(child)
|
|
150
|
+
printeq(TreeNode("f_try", output))
|
|
151
|
+
print()
|
|
147
152
|
return TreeNode("f_try", output)
|
|
148
153
|
else:
|
|
149
154
|
return TreeNode(eq.name, [inteq(child) for child in eq.children])
|
|
@@ -330,13 +335,20 @@ def byparts(eq):
|
|
|
330
335
|
lst = factor_generation(eq)
|
|
331
336
|
if len(lst) == 3 and len(list(set(lst))) == 1:
|
|
332
337
|
lst = [(lst[0]**2).copy_tree(), lst[0].copy_tree()]
|
|
338
|
+
if len(lst) == 3 and len(list(set(lst))) == 2:
|
|
339
|
+
lst2 = list(set(lst))
|
|
340
|
+
a, b = lst2
|
|
341
|
+
a = a**lst.count(a)
|
|
342
|
+
b = b**lst.count(b)
|
|
343
|
+
lst = [a.copy_tree(), b.copy_tree()]
|
|
333
344
|
if len(lst) == 1:
|
|
334
345
|
lst += [tree_form("d_1")]
|
|
335
346
|
if len(lst) == 2:
|
|
336
347
|
for i in range(2):
|
|
337
348
|
|
|
338
349
|
f, g = [lst[i], lst[1-i]]
|
|
339
|
-
|
|
350
|
+
if contain(f, tree_form("s_e")):
|
|
351
|
+
continue
|
|
340
352
|
out1 = TreeNode("f_integrate", [g.copy_tree(), wrt])
|
|
341
353
|
|
|
342
354
|
|
mathai/limit.py
CHANGED
|
@@ -6,7 +6,7 @@ from .expand import expand
|
|
|
6
6
|
from .diff import diff
|
|
7
7
|
from .trig import trig0
|
|
8
8
|
from .fraction import fraction
|
|
9
|
-
from .printeq import
|
|
9
|
+
from .printeq import printeq
|
|
10
10
|
tab=0
|
|
11
11
|
def substitute_val(eq, val, var="v_0"):
|
|
12
12
|
eq = replace(eq, tree_form(var), tree_form("d_"+str(val)))
|
|
@@ -33,100 +33,124 @@ def check(num, den, var):
|
|
|
33
33
|
return simplify(n/d)
|
|
34
34
|
return False
|
|
35
35
|
def lhospital(num, den, steps,var):
|
|
36
|
-
logs = []
|
|
37
36
|
|
|
38
37
|
out = check(num, den, var)
|
|
39
38
|
|
|
40
39
|
if isinstance(out, TreeNode):
|
|
41
|
-
return out
|
|
40
|
+
return out
|
|
42
41
|
for _ in range(steps):
|
|
43
42
|
num2, den2 = map(lambda e: simplify(diff(e, var)), (num, den))
|
|
44
43
|
out = check(num2, den2, var)
|
|
45
44
|
if out is True:
|
|
46
45
|
num, den = num2, den2
|
|
47
|
-
logs += [(0,"lim x->0 "+printeq_str(simplify(num/den)))]
|
|
48
46
|
continue
|
|
49
47
|
if out is False:
|
|
50
48
|
eq2 = simplify(fraction(simplify(num/den)))
|
|
51
|
-
return eq2
|
|
52
|
-
return out
|
|
49
|
+
return eq2
|
|
50
|
+
return out
|
|
53
51
|
def lhospital2(eq, var):
|
|
54
52
|
eq= simplify(eq)
|
|
55
53
|
if eq is None:
|
|
56
54
|
return None
|
|
57
55
|
if not contain(eq, tree_form(var)):
|
|
58
|
-
return eq
|
|
56
|
+
return eq
|
|
59
57
|
num, dem = [simplify(item) for item in num_dem(eq)]
|
|
60
58
|
if num is None or dem is None:
|
|
61
|
-
return eq
|
|
59
|
+
return eq
|
|
62
60
|
|
|
63
61
|
return lhospital(num, dem, 10,var)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
equation = equation/item
|
|
83
|
-
equation = equation*(tree_form("s_pi") - tmp["v_-1"])
|
|
84
|
-
break
|
|
85
|
-
tmp = structure(item, ls[1])
|
|
86
|
-
if tmp is not None and contain(tmp["v_-1"], var) and not contain(tmp["v_-2"], var):
|
|
87
|
-
item2 = substitute_val(tmp["v_-1"], 0, var.name)
|
|
88
|
-
item2 = expand(solve(item2))
|
|
89
|
-
if tree_form("d_0") == item2:
|
|
90
|
-
equation = equation/item
|
|
91
|
-
equation = solve(equation*tmp["v_-1"]*tmp["v_-2"].fx("log"))
|
|
92
|
-
break
|
|
93
|
-
tmp = structure(item, ls[2])
|
|
94
|
-
if tmp is not None and contain(tmp["v_-1"], var):
|
|
95
|
-
|
|
96
|
-
item2 = substitute_val(tmp["v_-1"], 0, var.name)
|
|
97
|
-
item2 = expand(solve(item2))
|
|
98
|
-
if tree_form("d_0") == item2:
|
|
99
|
-
equation = equation/item
|
|
100
|
-
equation = solve(equation*tmp["v_-1"])
|
|
101
|
-
break
|
|
102
|
-
tmp = structure(item, ls[3])
|
|
103
|
-
if tmp is not None and contain(tmp["v_-1"], var):
|
|
104
|
-
item2 = substitute_val(item, 0, var.name)
|
|
105
|
-
|
|
106
|
-
if tree_form("d_0") == expand(solve(item2)):
|
|
107
|
-
|
|
108
|
-
equation = equation/item
|
|
109
|
-
equation = equation*(tree_form("d_1") - tmp["v_-1"]**tree_form("d_2"))
|
|
110
|
-
break
|
|
62
|
+
def limit0(equation):
|
|
63
|
+
if equation.name == "f_ref":
|
|
64
|
+
return equation
|
|
65
|
+
eq2 = equation
|
|
66
|
+
g = ["f_limit", "f_limitpinf", "f_limitninf"]
|
|
67
|
+
if eq2.name in g and contain(eq2.children[0], eq2.children[1]):
|
|
68
|
+
equation = eq2.children[0]
|
|
69
|
+
wrt = eq2.children[1]
|
|
70
|
+
lst = factor_generation(equation)
|
|
71
|
+
|
|
72
|
+
lst_const = [item for item in lst if not contain(item, wrt)]
|
|
73
|
+
if lst_const != []:
|
|
74
|
+
|
|
75
|
+
equation = product([item for item in lst if contain(item, wrt)]).copy_tree()
|
|
76
|
+
const = product(lst_const)
|
|
77
|
+
const = simplify(const)
|
|
78
|
+
|
|
79
|
+
if not contain(const, tree_form("s_i")):
|
|
111
80
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return
|
|
115
|
-
def
|
|
116
|
-
|
|
81
|
+
return limit0(TreeNode(equation.name,[equation, wrt])) *const
|
|
82
|
+
equation = eq2
|
|
83
|
+
return TreeNode(equation.name, [limit0(child) for child in equation.children])
|
|
84
|
+
def limit2(eq):
|
|
85
|
+
g = ["f_limit", "f_limitpinf", "f_limitninf"]
|
|
86
|
+
if eq.name in g and eq.children[0].name == "f_add":
|
|
87
|
+
eq = summation([TreeNode(eq.name, [child, eq.children[1]]) for child in eq.children[0].children])
|
|
88
|
+
return TreeNode(eq.name, [limit2(child) for child in eq.children])
|
|
89
|
+
def limit1(eq):
|
|
90
|
+
if eq.name == "f_limit":
|
|
91
|
+
a, b = limit(eq.children[0], eq.children[1].name)
|
|
92
|
+
if b:
|
|
93
|
+
return a
|
|
94
|
+
else:
|
|
95
|
+
return TreeNode(eq.name, [a, eq.children[1]])
|
|
96
|
+
return TreeNode(eq.name, [limit1(child) for child in eq.children])
|
|
97
|
+
def fxinf(eq):
|
|
98
|
+
if eq is None:
|
|
99
|
+
return None
|
|
100
|
+
if eq.name == "f_add":
|
|
101
|
+
if tree_form("s_inf") in eq.children and -tree_form("s_inf") in eq.children:
|
|
102
|
+
return None
|
|
103
|
+
if tree_form("s_inf") in eq.children:
|
|
104
|
+
return tree_form("s_inf")
|
|
105
|
+
if -tree_form("s_inf") in eq.children:
|
|
106
|
+
return -tree_form("s_inf")
|
|
107
|
+
if eq.name == "f_mul":
|
|
108
|
+
lst = factor_generation(eq)
|
|
109
|
+
if tree_form("s_inf") in lst:
|
|
110
|
+
eq = TreeNode(eq.name, [dowhile(child, fxinf) for child in eq.children])
|
|
111
|
+
if None in eq.children:
|
|
112
|
+
return None
|
|
113
|
+
lst = factor_generation(eq)
|
|
114
|
+
if tree_form("d_0") in lst:
|
|
115
|
+
return tree_form("d_0")
|
|
116
|
+
lst2 = [item for item in lst if "v_" in str_form(item)]
|
|
117
|
+
sign = True
|
|
118
|
+
if len([item for item in lst if "v_" not in str_form(item) and not contain(item, tree_form("s_inf")) and compute(item)<0]) % 2==1:
|
|
119
|
+
sign = False
|
|
120
|
+
if lst2 == []:
|
|
121
|
+
if sign:
|
|
122
|
+
return tree_form("s_inf")
|
|
123
|
+
else:
|
|
124
|
+
return -tree_form("s_inf")
|
|
125
|
+
if eq.name == "f_pow":
|
|
126
|
+
if "v_" not in str_form(eq.children[0]) and not contain(eq.children[0], tree_form("s_inf")) and compute(eq.children[0])>0:
|
|
127
|
+
if eq.children[1] == -tree_form("s_inf"):
|
|
128
|
+
return tree_form("d_0")
|
|
129
|
+
|
|
130
|
+
eq = TreeNode(eq.name, [fxinf(child) for child in eq.children])
|
|
131
|
+
if None in eq.children:
|
|
132
|
+
return None
|
|
133
|
+
return eq
|
|
134
|
+
def limit3(eq):
|
|
135
|
+
|
|
136
|
+
if eq.name == "f_limitpinf":
|
|
137
|
+
if not contain(eq, eq.children[1]):
|
|
138
|
+
return eq.children[0]
|
|
139
|
+
eq2 = replace(eq.children[0], eq.children[1], tree_form("s_inf"))
|
|
140
|
+
eq2 = dowhile(eq2, fxinf)
|
|
141
|
+
if not contain(eq2, tree_form("s_inf")) and not contain(eq2, eq.children[1]):
|
|
142
|
+
return simplify(eq2)
|
|
143
|
+
return TreeNode(eq.name, [limit3(child) for child in eq.children])
|
|
117
144
|
|
|
118
145
|
def limit(equation, var="v_0"):
|
|
119
|
-
|
|
146
|
+
|
|
120
147
|
eq2 = dowhile(replace(equation, tree_form(var), tree_form("d_0")), lambda x: trig0(simplify(x)))
|
|
121
148
|
if eq2 is not None and not contain(equation, tree_form(var)):
|
|
122
|
-
return eq2,
|
|
149
|
+
return eq2, True
|
|
123
150
|
|
|
124
|
-
equation
|
|
151
|
+
equation = lhospital2(equation, var)
|
|
125
152
|
equation = simplify(expand(simplify(equation)))
|
|
126
153
|
if not contain(equation, tree_form(var)):
|
|
127
|
-
return equation,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return simplify(summation([limit(child, var) for child in equation.children]))
|
|
131
|
-
'''
|
|
132
|
-
return equation,logs+tmp
|
|
154
|
+
return equation, True
|
|
155
|
+
|
|
156
|
+
return equation, False
|
mathai/parser.py
CHANGED
|
@@ -59,7 +59,7 @@ grammar = """
|
|
|
59
59
|
| ESCAPED_STRING -> string
|
|
60
60
|
| CAPITAL_ID -> matrix
|
|
61
61
|
|
|
62
|
-
FUNC_NAME: "midpoint" | "ref" | "subs" | "try" | "forall" | "imply" | "exist" | "len" | "sum" | "angle" | "line" | "sum2" | "charge" | "electricfield" | "perm" | "point" | "equationrhs" | "transpose" | "equationlhs" | "equation" | "error" | "covariance" | "variance" | "expect" | "mag" | "rad" | "laplace" | "diverge" | "pdif" | "gradient" | "curl" | "point1" | "point2" | "dot" | "point3" | "line1" | "line2" | "line3" | "sin" | "circumcenter" | "eqtri" | "linesegment" | "cos" | "tan" | "log" | "sqrt" | "integrate" | "dif" | "abs" | "cosec" | "sec" | "cot" | "arctan" | "arcsin" | "arccos" | "log10"
|
|
62
|
+
FUNC_NAME: "midpoint" | "ref" | "subs" | "try" | "limit" | "forall" | "limitpinf" | "imply" | "exist" | "len" | "sum" | "angle" | "line" | "sum2" | "charge" | "electricfield" | "perm" | "point" | "equationrhs" | "transpose" | "equationlhs" | "equation" | "error" | "covariance" | "variance" | "expect" | "mag" | "rad" | "laplace" | "diverge" | "pdif" | "gradient" | "curl" | "point1" | "point2" | "dot" | "point3" | "line1" | "line2" | "line3" | "sin" | "circumcenter" | "eqtri" | "linesegment" | "cos" | "tan" | "log" | "sqrt" | "integrate" | "dif" | "abs" | "cosec" | "sec" | "cot" | "arctan" | "arcsin" | "arccos" | "log10"
|
|
63
63
|
|
|
64
64
|
VARIABLE: /[a-z]/ | "nabla" | "pi" | "kc" | "hbar" | "em" | "ec" | "anot" | "false" | "true"
|
|
65
65
|
|
|
@@ -130,7 +130,7 @@ def parse(equation, funclist=None):
|
|
|
130
130
|
if tree_node.name == "pass_through":
|
|
131
131
|
return fxchange(tree_node.children[0])
|
|
132
132
|
return TreeNode(
|
|
133
|
-
"f_" + tree_node.name if tree_node.name in tmp3 + ["try", "ref", "sqrt","imply","forall","exist","exclude","union","intersection","len","index","angle","charge","sum2","electricfield","line","point","sum","transpose","equationrhs","equationlhs","equation","covariance","variance","expect","error","laplace","dot","curl","pdif","diverge","gradient","rad","ge","le","gt","lt","eqtri","linesegment","midpoint","mag","point1","point2","point3","line1","line2","line3","log10","arcsin","arccos","arctan","list","cosec","sec","cot","equiv","or","not","and","circumcenter","eq","sub","add","sin","cos","tan","mul","integrate","dif","pow","div","log","abs"] else "d_" + tree_node.name,
|
|
133
|
+
"f_" + tree_node.name if tree_node.name in tmp3 + ["limitpinf", "limit", "try", "ref", "sqrt","imply","forall","exist","exclude","union","intersection","len","index","angle","charge","sum2","electricfield","line","point","sum","transpose","equationrhs","equationlhs","equation","covariance","variance","expect","error","laplace","dot","curl","pdif","diverge","gradient","rad","ge","le","gt","lt","eqtri","linesegment","midpoint","mag","point1","point2","point3","line1","line2","line3","log10","arcsin","arccos","arctan","list","cosec","sec","cot","equiv","or","not","and","circumcenter","eq","sub","add","sin","cos","tan","mul","integrate","dif","pow","div","log","abs"] else "d_" + tree_node.name,
|
|
134
134
|
[fxchange(child) for child in tree_node.children]
|
|
135
135
|
)
|
|
136
136
|
|
mathai/simplify.py
CHANGED
|
@@ -173,6 +173,7 @@ def clear_div(eq, denom=False):
|
|
|
173
173
|
return solve(product(lst2)),sign
|
|
174
174
|
|
|
175
175
|
def simplify(eq):
|
|
176
|
+
|
|
176
177
|
if "v_" not in str_form(eq):
|
|
177
178
|
n = frac(eq)
|
|
178
179
|
if n is not None:
|
|
@@ -182,6 +183,9 @@ def simplify(eq):
|
|
|
182
183
|
return tree_form("d_"+str(n.numerator))/tree_form("d_"+str(n.denominator))
|
|
183
184
|
else:
|
|
184
185
|
return tree_form("d_"+str(n.numerator))
|
|
186
|
+
|
|
187
|
+
if contain(eq, tree_form("s_inf")):
|
|
188
|
+
return eq
|
|
185
189
|
error = False
|
|
186
190
|
eq = flatten_tree(eq)
|
|
187
191
|
if eq.name in ["f_and", "f_or", "f_not"]:
|
|
@@ -301,6 +305,7 @@ def simplify(eq):
|
|
|
301
305
|
error = True
|
|
302
306
|
else:
|
|
303
307
|
eq = tree_form("d_0")
|
|
308
|
+
|
|
304
309
|
if eq.name =="f_pow" and eq.children[0] == tree_form("s_i") and frac(eq.children[1])is not None and frac(eq.children[1]).denominator == 1:
|
|
305
310
|
n = frac(eq.children[1]).numerator
|
|
306
311
|
eq = {0:tree_form("d_1"), 1:tree_form("s_i"), 2:tree_form("d_-1"), 3:-tree_form("s_i")}[n%4]
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
mathai/__init__.py,sha256=
|
|
1
|
+
mathai/__init__.py,sha256=LNmGQztU8xBh7mjgbPemQZKRXythLwif56rDv3ksjs4,1539
|
|
2
2
|
mathai/apart.py,sha256=VSS3khE9PNuxiRvdU5JDl4IN-KJBSIFjwR17pkhviXI,4197
|
|
3
|
-
mathai/base.py,sha256=
|
|
3
|
+
mathai/base.py,sha256=pduS0fRpFZR8O-MP-7lDuq1dU603mwfDpmBcT2FyJgI,12793
|
|
4
4
|
mathai/bivariate_inequality.py,sha256=FJOC2zKU5zWCMybCrhEQ7nVDgRO_w19Zko8WPTaDTSo,11411
|
|
5
5
|
mathai/console.py,sha256=Sn58iwYE79MLEh67s8X3q6vZjw6g7f9XM1T8_dBBR2o,3048
|
|
6
6
|
mathai/diff.py,sha256=YUBpRsz0qmBkq5vGxeGnvR4nMKjdOQiIXlNMxpij2ns,3051
|
|
7
7
|
mathai/expand.py,sha256=SnBltkpIENMGkP0AYmbMlSc4H-CF5RslO2PcBEkn1BQ,3359
|
|
8
8
|
mathai/factor.py,sha256=muPDOcClrqc2XyVlbyIrhiIqI0QxauYL3e2mq3qa6OI,11533
|
|
9
9
|
mathai/fraction.py,sha256=Q2ztsh5Bpz6YhML2QU0tfufbAs0Q6J319AhlzKephIY,4396
|
|
10
|
-
mathai/integrate.py,sha256=
|
|
10
|
+
mathai/integrate.py,sha256=LMj7om6vTGbYiUwqN-y11fiD4YR_XMbL33AWgI2893o,16982
|
|
11
11
|
mathai/inverse.py,sha256=QCvDrzKquWsZv-BDAzZd9HnU0c3gZvcc44UztHVO5LQ,2919
|
|
12
|
-
mathai/limit.py,sha256=
|
|
12
|
+
mathai/limit.py,sha256=DoTBMGdbc47WPN2yo6XwES6Gc-GDDArDhF5uyDFPSC4,5710
|
|
13
13
|
mathai/linear.py,sha256=Mmmnn4IdnADRMuv6crB0a_Ba2drGUFXOh7eqIIkirYA,5709
|
|
14
14
|
mathai/logic.py,sha256=UvHzRmKcO9AD51tRzHmpNSEhgW5gmaf4XPaQKFjGfC4,9653
|
|
15
15
|
mathai/matrix.py,sha256=dWIXF5oInIL3SZ3naRzKN5ElI5drXJNiVTDM48hfZOw,972
|
|
16
16
|
mathai/ode.py,sha256=zxxTXAOpt7oSsfpgI4vHsCWKXevmM96ZOBZWWs-vj8Y,4801
|
|
17
|
-
mathai/parser.py,sha256=
|
|
17
|
+
mathai/parser.py,sha256=K6O5TR1PGl9LbSdGpcbwiwQva8r5-SwZ5fSp84oA8co,7025
|
|
18
18
|
mathai/printeq.py,sha256=gIes-pstFOa6FcnpVIVvkjVKuWdsVdo11LlEnmHhakU,1303
|
|
19
|
-
mathai/simplify.py,sha256=
|
|
19
|
+
mathai/simplify.py,sha256=4-7yps_I_OQBd8NthF96H0R-ofA3cFSxgM4wDE45OvU,17217
|
|
20
20
|
mathai/structure.py,sha256=4Ww2IAx62RcQSO7_17TZES-DjMWBpcFQtL939FBIHwY,4103
|
|
21
21
|
mathai/tool.py,sha256=r8ejBY4Bnk_t8USYQCuxwmmJ4M-5H5OR6A3VbV7W-5w,6066
|
|
22
22
|
mathai/trig.py,sha256=BQd_Gl_u0g5ZuZIwKozuXKbMinqb6K-OYicrtftn7eg,11174
|
|
23
23
|
mathai/univariate_inequality.py,sha256=3Yr7d9mE-mUNkwOPQyFPBDp0-gKkqrpzEYeHFQ8JcXA,15060
|
|
24
|
-
mathai-0.5.
|
|
25
|
-
mathai-0.5.
|
|
26
|
-
mathai-0.5.
|
|
27
|
-
mathai-0.5.
|
|
24
|
+
mathai-0.5.4.dist-info/METADATA,sha256=WIcw95PJtFwsEyhCKVJJuNpQLUlROTfErTRC76nqUX8,7103
|
|
25
|
+
mathai-0.5.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
26
|
+
mathai-0.5.4.dist-info/top_level.txt,sha256=ROP4l3OhGYw3ihkQGASr18xM9GsK4z3_6whV5AyXLwE,7
|
|
27
|
+
mathai-0.5.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|