-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtodo.txt
237 lines (154 loc) · 16.5 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
> sin = ?(x) then sin(2)?
> doc: hidden function change
> doc: functions as variables and assignment change
> doc: new == vs. = display behavior
> doc: new integration behavior
> doc: caveats with variable mapping and functions like integrate, summation due to their unfree vars being remapped
> ERROR! assign to ufuncs from iterable?
> \. ?F (x, 0)' |_{x = 0} ---> \. ?F (x, y) |_{x = 0, y = 0}
> keep track of what undefined functions are created during processing?
> somehow allow \. u (x, y) |_{u = v} when u and v are ufunc variables
> subs autocomplete
> subs_diff_any_ufunc and other ufunc implicit multiply with invalid call paren show as cdot
> next (t) (2) at end of iterator t gives IndexError instead of StopIteration
> "d / 2" is "(d) / 2", fix it
> a / -{b \int x dx} * c -> py: a / (-(b*Integral(x, x))) * c
> redo _expr_diff "a d/dx b"? - * Differentiation now has higher precedence than implicit multiplication ahead of it: "a d/dx b" -> "a * d/dx (b)", "\int a dx d / dx b"
> test_server for semicolon stuff - multiple returns
> display ufunc as \operatorname{func} in loose tex mode?
> mark \operatorname funcs so they can't be rewound? doesn't seem to be necessary.
> test_sym cases - call derivative of lambda
> "d / dx (2)" vs. "d**2 / dx (2)" when dx is a lambda, intricate - would need to analyze parser stack to see if valid diff, but if someone is naming their lambdas "dx" that is their problem
> better potential derivative test than self.stack_has_sym ('DIVIDE')
> again redo spt2ast_Add?
> \int doesn't need curlys for star multiply
> subs clarity parentheses for tex display like d/dx (f), attr, etc...?
> (a or b) or (a and b) - result parenthesizing for clarity
> @ and % without parentheses consistency?
> \sum and \lim parens for clarity
> clean up safety parens from grammar tail element overhaul
> clean up sym lambda keyword safety wrapping
> test parse (ast2tex (spt2ast(spt))) vs. parse (latex (spt))?
> "__" subscript shortcut with rules like "**"?
> change AST._free_vars in sym to try to use ast2spt().free_symbols without .doit() and fall back to AST function if that fails?
> allow funcs as vars for like symbols (..., cls = Functions)?
> allow N**2 y?
> N -N x -> N (-N (x))
> \sum, \lim accept only body of paren if paren follows directly
> \sum, \lim and \intg to take expr_add for body
> test_sym - test parsing sympy latex
> logic xor operator
> Boolean .could_extract_minus_sign() for calculations
> relocate error hint text in web client to input area
> improve error reporting with position of error returned from reduction functions if possible lalr1.Syntax (text, pos)
> syntax error of diffp of multivar ufunc in sparser?
> more informative syntax errors from ics functions
> test_sym check for VarNulls and reject expression if detected
> add slice() to test_sym
> add back "forbidden" functions to test_sym (reject NullVars sxlats)? - remove or reject null vars after
> patch dsolve to do: dsolve (y'' + 11 y' + 24 y, y (0) = 0, y'(0) = -7)?
> CREATE SYMPY OBJECTS FOR PYTHON OBJECTS IN SYM?!?
> double check all _ast2? (AST (...)) for parent issues
> test_server multi maths from semicolon expressions
> f (x) = x**2; f (x)
> allow log_base without the \?
> sum_{start <= x < stop} -> \sum_{x = start}^{stop - 1}?
> do not write out parentheses for integration where not needed - \int {d / dx (x**2)} dx -> \int d / dx (x**2) dx?
> verify all is_var -> is_var_nonconst where consts not allowed
> worry about invalid varnames (reserved function names) or leave as convenience?
> SymPy function aliases as vars? "D = Derivative"?
> set full result of assignment to previous variable '_'?
> make semicolon separated plots work
> overhaul function call keyword arguments: expr -> ('kw', expr)?
> overhaul lambda AST variable storage: ('@', 'var') -> 'var'?
> allow leading underscore for vars and funcs and leading \_ for tex?
> clean up sparser TOKENS and centralize repeated patterns
> evil extra spacing before single-quote strings!
> # comment end of line?
> importing modules to allow custom code execution
> module and function asts?
> better plotting limits specification
> test_python module
> vector calculus
> nabla - gradient, laplacian
> Proper implementation of vectors with "\vec{x}" and "\hat{i}" variables?
> random server port selection / fallback
> ProductSet?
> ImageSet?
> formatting: no spacing for nums - 3 x -> 3x?
> formatting: quick mode no spacing for vars x y z -> xyz?
> formatting: non-quick mode explicit tex spacing for vars x y -> x\ y?
> SYM.PY REFACTOR!
> make sympad importable?
> Custom Contains and other set operation fallbacks to allow symbols to stand in for sets?
> 1 in x and other sets to accept symbols, how?
> plots as objects?
> flush sys.stdout to msg before sending exception?
> xlat different types and initializations of matrices?
> long variable name shortcut in quick mode? $? @?
> rewrite sqrt during autocomplete to show radix?
> floor / ceiling
> break out state machine from server
> server send back AST from validaiton to facilitate evaluation?
> sequence (factorial (k), (k, 1, oo)) (ellipsis)
> ImageSet (Lambda (n, 2 n pi + pi / 2), Integers)
> more graphical plots
> numpy support
Slow parse - These are slow due to abuse of regex!
--------------------------------------------------
283.53125s: \[[ \arccot() or \[[ \lambda ,],[ w_{1} ,],[ 0 ,],] \cdot $zRF(real = True) \cdot d^{5} / dy^{3} dy^{2} \emptyset or x0 if 1e100 else None if 1.0 \cdot \Phi_{27} / \partialy \cdot False \cdot 1.0 \cdot 0.01466869603275454 ,\int \frac "s" eta / lambda_{4} ; .1 ; b ; 1. dCneFiF4u , oo || -4.383422266575117e-14 in \log_ \omega Pi in \int dz dh \cdot dx \cdot \psi_{84} \cdot True ' ,],[\[ \left| a \right|*\left| z20 \right| , w_{1} ! || a or 1 || Theta or 1. ,],\. \[ \partial x , 1. ,]* \emptyset ; dy ; xyzd ; \tilde\infty * None if 26320873337533.05 else 21134.155295076693 |_{\substack{ 1.2227127498338437e+19 ^^ "s" ^^ \partialy / \. \Xi |_{ c = y1 , eta = \Gamma_{51} , sigma = -.1 } = $QV(commutative = True) \\ None and \emptyset and partial^{4} / partialz^{2} partialx^{1} partialz^{1} -0.0008452535981829209 = difference_delta((())) and None && \xi && beta }},\sum_{x = {{{ 1e100 , c , 2 }}}** partial in 0 not in False not in \Lambda }^ -7.85992240533836e+20 [ None , b ]^ \infty zoo and \Psi_{93} { 0 , "s" }^\sum_{x = \partial x }^ oo dx ,],]
163.28125s: lambda: - xyzd if u(x, y, z) and ( : 62313.47619053531 : , dy ', 1.0 [ z20 , \partial x ]) && \left. 1e+100 or 1e+100 \right|_{\substack{ dx ! = \sqrt[ \phi_{29} ] -5.529339448748291e-09 }} and \sum_{x = \[ dx .bO0xI.z4rtZp4N() ,\int 0 dT ,\left. 0 \right|_{\substack{ None = partial \\ 1e+100 = 6.352354272671388e-16 }},]}^ \left| \partialy \right| and \partial || \partial x -1.0 && 1.0 && -1.5418373774276718e-05 && \tilde\infty \cdot \partial x \cdot 0 && \tilde\infty ; oo
28.453125s: {\.(:)|_{Sigma_{12}::'=-0>a,\left|\partial\right|&&chinotin-.1=lambdax,y,z:$qqq(real=True,commutative=True),Segment({})=\frac-88183020.84443538/-.1\s um_{x=0}^NONE\partialx}:\[\[[\emptyset,\emptyset,dz,],[\nu,\Lambda,dz,],]in\lim_{x\toz20}\partialyin-.1,]:\.4499484.467734945|_{\substack{1e+100=2067.693449705334\\y1=1e100}}\cdotxyzdif\partialelse-1.0ifcelse-5.542490885645353e-09if-1^\lim_{x\toz20^^1.}$B6uENQP()}
20.671875s: {{partial^{5}/partialx^{2}partialy^{3}xyzd!,\fracDelta'' 'dz**1e+100}}if\.0andband6.191305469846304e-09[\partialif0.0010151362451333347]|_{\substack{\gcd(({1,1.0},\int_-.1^-.1partialxdq))=\sqrtdxifFalse>y1else(dy,"s","s")if\partialx*c*-4.4653096888116064e-21elseNone==1e-100>=-2.0251011102347307e-18if\partial||2else1+1e+100+\partial}}elselambdax:\{x0,0,b,d/dy(u()(x,y))(0,1)}if\sqrt[d^{1}/dz^{1}{}]\{Falsein0,-1,1.,((b,-9.580303685500166e-07,phi))}else{True+x0:::Monomial((()))/\int\emptysetdP,notpartialx+\emptyset+2:::,(((1.))),\sigma[\partial]:dx=249.84211067914106and\left.\partialx\right|_{-2.3110629421441234e+20,1,\emptyset=c,c,False}and\sum_{x=1e100}^1.y1}
17.671875s: \int\{}dG*"s"'=dx**dxif\partial^\partialy&&\mu=\partialy.HZm7Ur.Xaiyk.OO1M()else\[[[[1.or\emptysetor\partial,nth_power_roots_poly((w_{1})),\sqrt[\partialy]oo]]],(not\partialy),\lim_{x\to\log_\partialy0}\[[-4.469111038573928e-16,],],]if{1,x0&&c[5.6422000714431704e+16,dx,"s"]&&RealField((-1,y1)):\sqrt[(7.668680606727133e-14::)]\left|oo\right|,d^{1}/dy^{1}iotaand1.0and.1:{$bd(commutative=True),1.0/\partial}}else\frac$mjVIF(commutative=True)\cdot3.2935527643376255e-06:-1sqrtlambda;b;2
14.71875s: {\lim_{x\to"s"'}\lim_{x\to\partialx}.1:\[[d^{4}/dy^{1}dy^{1}dz^{2}-1,notTrue,],[\fracdy\iota,\logdx,],[lambdax,y:.1,dx.SkjaV().xAaTvJE(),],]}^-\.g(x,y,z)|_{\.1e-100|_{\zeta,None,\Gamma_{47}=\emptyset,y1,\em ptyset}=\left.partialx\right|_{\substack{dx=tau\\\partialx=False}},\left|a\right|=\left|-9.408023550902053e+16\right|}
13.4375s: \left.-\emptyset**False/"s"'\right|_{\substack{\.lambdax,y,z:0*y1*dz|_{b^munotinlambda:y1notin\fracPix0notin[[False,-1.217383816320693e-12,a]]={{:w_{1}}:((a)),((oo,1e+100)):\sum_{x=False}^\pix0,{\partial:1.5165219116286896e-05}:\{w_{1},\xi,-.1}},\{((Complexes)),$nvQUW(real=True,commutative=True)}={},\frac\{y1,1310759352132.995}\left.\partialx\right|_{-1.0=2}=\partialx!andy1\cdot\partialxandnotw_{1}}={{{8.752331030243382e+16,oo}}}*:\left.1.0\right|_{True=False}>=sqrt_mod_iter(1e100)lnpartialx/Lambda_{63}oraor\xi}}
10.125s: {NONE:':1**3.480067056030083e-12\cdot36094604.0569791^2,\sum_{x=\sum_{x=\partialx}^dydz}^minpoly(((\emptyset)))\sqrt[-1.7454803239022647e-10]kappa:lambdax,y,z:b.teI5N().dH()},-1e+100^^\[\partialx,]^^$ouQVqO(real=True)+\.\left.\partialy\right|_{\tilde\infty=z20}|_{\substack{-2.335660686903354e-20;partial;2.9245005768789054e-13;1.8693689910922626e-21=\.z20|_{None=1e+100,1.458621 6274097632e-09=oo_{76},partial=0}\\w_{1}&&-3.357729778121166e-11&&x0=\upsilon,\partial\\-.1!=b+\partialy}}
5.859375s: \left.notb[-0.012450983090926753,partial,True]*\frac ()1e-100**\partialx*"s"'/partialx&&\iota\right|_{\int_partialx.xU5FHek()^1e+100>=dzd**3/dydxdx(h(x,y,real=True))dd&&\lim_{x\to1}1.0,?()(),\lim_{x\to-1.0}dz=-1.CvNb.IU().W5vX6rtI[\[[$tBZvdy(real=True,commutative=True),lambdax,y:\alpha,],[\partialx=2.745117662780435e-08,a&&w_{1},],[\lim_{x\topartial}xyzd,\tilde\infty,\partialx,],],\sum_{x=BlockDiagMatrix(1e100,c,\partialy)}^--11.0.dg.FcNr]=\{},{{1.0[1.,False,\inftyzoo]}}^[[[-7.141733656844623e-16,"s"]]]/\emptyset^^xyzd}
2.765625s: {lambda:{\tilde\infty:None,y1:\partialx}[partial^{2}/partialy^{2}\sqrt[\tilde\infty]\partial,Function('',)(x)(0),\sum_{x=0}^c1.*"s"'*\ln\partial] :\partialx\cdot1e100\cdot-.1/False,1.0if1.,-1,1e-100**1.0[-1],\lim_{x\to{{{oo}}}}\lim_{x\to0}\partialyand\left|\partialy\right|\cdot\tilde\infty^^"s"^^Lambda:d^{3}/dx^{1}dz^{2}\[\partialyifpartialxelse1e-100ifTrueelse-1,\partialyor1e-100,]}
f = free variable for func name
x = nonconst variable
C = constant
E = non-constant expression
A = any of (x, C, E) not covered by rule yet
f () = f () - _expr_varfunc ()
f (E) = f * (E)
f (A) = f (A)
?f () = ?f () - _expr_ufunc ()
?f (A) = ?f (A)
?f () (A) = ?f (A) - _expr_ufunc_ics () - from here on kw disallowed
?f (x) (A) = ?f (A)
?f (A) (A) = ?f (A) * (A)
Quick Mode Errors:
------------------
text: \[[9.08830^1 e-100.LRPl().qtXX().ojbKXNA||-\int a dm20^1 e-100.LRPl().qtXX().ojbKXNA||-\int a dm9S,],]
ast: ('-mat', ((('||', (('+', (('*', (('^', ('#', '9.08830'), ('#', '1')), ('@', 'e'))), ('-', ('*', (('#', '100.'), ('@', 'L'), ('@', 'R'), ('@', 'P'), ('.', ('.', ('-ufunc', 'l', ()), 'qtXX', ()), 'ojbKXNA')))))), ('+', (('*', (('-', ('^', ('-intg', ('@', 'a'), ('@', 'dm20')), ('#', '1'))), ('@', 'e'))), ('-', ('*', (('#', '100.'), ('@', 'L'), ('@', 'R'), ('@', 'P'), ('.', ('.', ('-ufunc', 'l', ()), 'qtXX', ()), 'ojbKXNA')))))), ('*', (('-', ('-intg', ('@', 'a'), ('@', 'dm9'))), ('@', 'S'))))),),))
ast: ('-mat', ((('||', (('+', (('*', (('^', ('#', '9.08830'), ('#', '1')), ('@', 'e'))), ('-', ('*', (('#', '100.'), ('@', 'L'), ('@', 'R'), ('@', 'P'), ('.', ('.', ('-ufunc', 'l', ()), 'qtXX', ()), 'ojbKXNA')), {1})))), ('+', (('*', (('-', ('^', ('(', ('-intg', ('@', 'a'), ('@', 'dm20'))), ('#', '1'))), ('@', 'e'))), ('-', ('*', (('#', '100.'), ('@', 'L'), ('@', 'R'), ('@', 'P'), ('.', ('.', ('-ufunc', 'l', ()), 'qtXX', ()), 'ojbKXNA')), {1})))), ('-', ('*', (('-intg', ('@', 'a'), ('@', 'dm9')), ('@', 'S')), {1})))),),))
tex1: \begin{bmatrix} 9.08830^1 e - 100. \cdot L\ R\ P\ l\left( \right).\operatorname{qtXX}\left( \right).ojbKXNA \cup -\left(\int a \ dm_{20} \right)^1 e - 100. \cdot L\ R\ P\ l\left( \right).\operatorname{qtXX}\left( \right).ojbKXNA \cup -\int a \ dm_{9} \cdot S \end{bmatrix}
tex2: \begin{bmatrix} 9.08830^1 e - 100. \cdot L\ R\ P\ l\left( \right).\operatorname{qtXX}\left( \right).ojbKXNA \cup -\left(\int a \ dm_{20} \right)^1 e - 100. \cdot L\ R\ P\ l\left( \right).\operatorname{qtXX}\left( \right).ojbKXNA \cup -{\int a \ dm_{9} \cdot S} \end{bmatrix}
text: h(r(r eal=True)True)()
ast: ('*', (('@', 'h'), ('(', ('*', (('-ufunc', 'r', (), (('real', ('@', 'True')),)), ('@', 'True')))), ('(', (',', ()))))
ast: ('*', (('@', 'h'), ('(', ('*', (('@', 'r'), ('(', ('=', ('*', (('-func', 're', (('@', 'a'),)), ('@', 'l'))), ('@', 'True'))), ('@', 'True')))), ('(', (',', ()))))
tex1: {h}\left(r\left(real = True \right) True \right) \left( \right)
tex2: {h}\left({r}\left(\Re{\left(a \right)} l = True \right) True \right) \left( \right)
text: ?h(r eal=True,coh(r eal=True,commutative=True)(x,y,z)utative=True)(x,y,z)(0,1,2)
ast: ('*', (('-ufunc', '?h', (('=', ('*', (('@', 'r'), ('@', 'e'), ('@', 'a'), ('@', 'l'))), ('@', 'True')), ('=', ('*', (('@', 'c'), ('@', 'o'), ('-ufunc', 'h', (), (('commutative', ('@', 'True')), ('real', ('@', 'True')))), ('(', (',', (('@', 'x'), ('@', 'y'), ('@', 'z')))), ('@', 'u'), ('@', 't'), ('@', 'a'), ('@', 't'), ('@', 'i'), ('@', 'v'), ('@', 'e'))), ('@', 'True')))), ('(', (',', (('@', 'x'), ('@', 'y'), ('@', 'z')))), ('(', (',', (('#', '0'), ('#', '1'), ('#', '2'))))))
ast: ('*', (('-ufunc', '?h', (('=', ('*', (('@', 'r'), ('@', 'e'), ('@', 'a'), ('@', 'l'))), ('@', 'True')), ('=', ('*', (('@', 'c'), ('@', 'o'), ('@', 'h'), ('(', (',', (('=', ('*', (('@', 'c'), ('@', 'o'), ('@', 'm'), ('@', 'mu'), ('@', 't'), ('@', 'a'), ('@', 't'), ('@', 'i'), ('@', 'v'), ('@', 'e'))), ('@', 'True')), ('=', ('*', (('-func', 're', (('@', 'a'),)), ('@', 'l'))), ('@', 'True'))))), ('(', (',', (('@', 'x'), ('@', 'y'), ('@', 'z')))), ('@', 'u'), ('@', 't'), ('@', 'a'), ('@', 't'), ('@', 'i'), ('@', 'v'), ('@', 'e'))), ('@', 'True')))), ('(', (',', (('@', 'x'), ('@', 'y'), ('@', 'z')))), ('(', (',', (('#', '0'), ('#', '1'), ('#', '2'))))))
tex1: {?h\left(r\ e\ a\ l = True, c\ o\ {h\left(commutative = True, real = True \right)}\left(x, y, z \right) u\ t\ a\ t\ i\ v\ e = True \right)}\left(x, y, z \right) \left(0, 1, 2 \right)
tex2: {?h\left(r\ e\ a\ l = True, c\ o\ {h}\left(c\ o\ m\ \mu\ t\ a\ t\ i\ v\ e = True, \Re{\left(a \right)} l = True \right) \left(x, y, z \right) u\ t\ a\ t\ i\ v\ e = True \right)}\left(x, y, z \right) \left(0, 1, 2 \right)
text: ?(x,y,r eal=e)(0,1)
ast: ('*', (('-ufunc', '?', (('@', 'x'), ('@', 'y')), (('real', ('@', 'e')),)), ('(', (',', (('#', '0'), ('#', '1'))))))
ast: ('*', (('-ufunc', '?', (('@', 'x'), ('@', 'y'), ('=', ('*', (('-func', 're', (('@', 'a'),)), ('@', 'l'))), ('@', 'e')))), ('(', (',', (('#', '0'), ('#', '1'))))))
tex1: {?\left(x, y, real = e \right)}\left(0, 1 \right)
tex2: {?\left(x, y, \Re{\left(a \right)} l = e \right)}\left(0, 1 \right)
text: d**2/dzdydz?h(r eal=True,)
ast: ('-diff', ('*', (('@', 'dz'), ('-ufunc', '?h', (), (('real', ('@', 'True')),)))), 'd', (('z', 1), ('y', 1)))
ast: ('-diff', ('(', ('*', (('@', 'dz'), ('@', 'h'), ('(', ('=', ('*', (('-func', 're', (('@', 'a'),)), ('@', 'l'))), ('@', 'True')))))), 'partial', (('z', 1), ('y', 1)))
tex1: \frac{\partial^2}{\partial z \partial y}\left(dz\ h\left(real = True \right) \right)
tex2: \frac{\partial^2}{\partial z \partial y}\left(dz\ {h}\left(\Re{\left(a \right)} l = True \right) \right)
text: \[notintt((\partialx)),not-1.31=\emptyset.lyTD0S1I.FoVz,\partial'''^^1=Vz,\partial'''^^1=oo,]!
ast: ('!', ('-mat', ((('-not', ('-func', 'intt', (('(', ('@', 'partialx')),))),), (('=', ('-not', ('#', '-1.31')), ('.', ('.', ('-set', ()), 'lyTD0S1I'), 'FoVz')),), (('=', ('^^', (('-diffp', ('@', 'partial'), 3), ('#', '1'))), ('*', (('@', 'V'), ('@', 'z')))),), (('=', ('^^', (('-diffp', ('@', 'partial'), 3), ('#', '1'))), ('@', 'oo')),))))
nat1: \[not intt((partialx)), not -1.31 = \{}.lyTD0S1I.FoVz, partial''' ^^ 1 = V z, partial''' ^^ 1 = oo]!
parse ()
Errors:
-------