@@ -130,48 +130,36 @@ function term_matcher_constructor(term, acSets)
130130 data = car (data) # from (..., ) to ...
131131 ! iscall (data) && return nothing # if first element is not a call, return nothing
132132
133- # if data is of the alternative form (1/...)^(...), it might match with negative exponent
133+ result = loop (data, bindings, matchers)
134+ result != = nothing && return success (result, 1 )
135+
136+ frankestein = nothing
134137 if (operation (data) === ^ ) && iscall (arguments (data)[1 ]) && (operation (arguments (data)[1 ]) === / ) && isequal (arguments (arguments (data)[1 ])[1 ], 1 )
138+ # if data is of the alternative form (1/...)^(...)
135139 one_over_smth = arguments (data)[1 ]
136140 T = symtype (one_over_smth)
137141 frankestein = Term {T} (^ , [arguments (one_over_smth)[2 ], - arguments (data)[2 ]])
138- result = loop (frankestein, bindings, matchers)
139- result != = nothing && return success (result, 1 )
140- end
141-
142- result = loop (data, bindings, matchers)
143- result != = nothing && return success (result, 1 )
144-
145- # if data is of the alternative form 1/(...)^(...), it might match with negative exponent
146- if (operation (data) === / ) && isequal (arguments (data)[1 ], 1 ) && iscall (arguments (data)[2 ]) && (operation (arguments (data)[2 ]) === ^ )
142+ elseif (operation (data) === / ) && isequal (arguments (data)[1 ], 1 ) && iscall (arguments (data)[2 ]) && (operation (arguments (data)[2 ]) === ^ )
143+ # if data is of the alternative form 1/(...)^(...)
147144 denominator = arguments (data)[2 ]
148145 T = symtype (denominator)
149146 frankestein = Term {T} (^ , [arguments (denominator)[1 ], - arguments (denominator)[2 ]])
150- result = loop (frankestein, bindings, matchers)
151- result != = nothing && return success (result, 1 )
152- end
153-
154- # if data is of the alternative form 1/(...), it might match with exponent = -1
155- if (operation (data) === / ) && isequal (arguments (data)[1 ], 1 )
147+ elseif (operation (data) === / ) && isequal (arguments (data)[1 ], 1 )
148+ # if data is of the alternative form 1/(...), it might match with exponent = -1
156149 denominator = arguments (data)[2 ]
157150 T = symtype (denominator)
158151 frankestein = Term {T} (^ , [denominator, - 1 ])
159- result = loop (frankestein, bindings, matchers)
160- result != = nothing && return success (result, 1 )
161- end
162-
163- # if data is a exp call, it might match with base e
164- if operation (data)=== exp
152+ elseif operation (data)=== exp
153+ # if data is a exp call, it might match with base e
165154 T = symtype (arguments (data)[1 ])
166- frankestein = Term {T} (^ ,[ℯ,arguments (data)[1 ]])
167- result = loop (frankestein, bindings, matchers)
168- result != = nothing && return success (result, 1 )
169- end
170-
171- # if data is a sqrt call, it might match with exponent 1//2
172- if operation (data)=== sqrt
155+ frankestein = Term {T} (^ ,[ℯ, arguments (data)[1 ]])
156+ elseif operation (data)=== sqrt
157+ # if data is a sqrt call, it might match with exponent 1//2
173158 T = symtype (arguments (data)[1 ])
174159 frankestein = Term {T} (^ ,[arguments (data)[1 ], 1 // 2 ])
160+ end
161+
162+ if frankestein != = nothing
175163 result = loop (frankestein, bindings, matchers)
176164 result != = nothing && return success (result, 1 )
177165 end
0 commit comments