@@ -64,158 +64,182 @@ def __new__(cls, name):
64
64
return symengine .UndefFunction (name )
65
65
66
66
67
- class log (Function ):
67
+ from types import ModuleType
68
+
69
+ functions = ModuleType (__name__ + ".functions" )
70
+ import sys
71
+ sys .modules [functions .__name__ ] = functions
72
+
73
+ functions .sqrt = sqrt
74
+ functions .exp = exp
75
+
76
+
77
+ class _FunctionRegistrarMeta (BasicMeta ):
78
+
79
+ def __new__ (mcls , name , bases , dict ):
80
+ cls = BasicMeta .__new__ (mcls , name , bases , dict )
81
+ if not name .startswith ("_" ):
82
+ setattr (functions , name , cls )
83
+ return cls
84
+
85
+
86
+ class _RegisteredFunction (with_metaclass (_FunctionRegistrarMeta , Function )):
87
+ pass
88
+
89
+
90
+ class log (_RegisteredFunction ):
68
91
_classes = (symengine .Log ,)
69
92
70
93
def __new__ (cls , a , b = E ):
71
94
return symengine .log (a , b )
72
95
73
96
74
- class sin (Function ):
97
+ class sin (_RegisteredFunction ):
75
98
_classes = (symengine .Sin ,)
76
99
77
100
def __new__ (cls , a ):
78
101
return symengine .sin (a )
79
102
80
103
81
- class cos (Function ):
104
+ class cos (_RegisteredFunction ):
82
105
_classes = (symengine .Cos ,)
83
106
84
107
def __new__ (cls , a ):
85
108
return symengine .cos (a )
86
109
87
110
88
- class tan (Function ):
111
+ class tan (_RegisteredFunction ):
89
112
_classes = (symengine .Tan ,)
90
113
91
114
def __new__ (cls , a ):
92
115
return symengine .tan (a )
93
116
94
- class gamma (Function ):
117
+ class gamma (_RegisteredFunction ):
95
118
_classes = (symengine .Gamma ,)
96
119
97
120
def __new__ (cls , a ):
98
121
return symengine .gamma (a )
99
122
100
123
101
- class cot (Function ):
124
+ class cot (_RegisteredFunction ):
102
125
_classes = (symengine .Cot ,)
103
126
104
127
def __new__ (cls , a ):
105
128
return symengine .cot (a )
106
129
107
130
108
- class csc (Function ):
131
+ class csc (_RegisteredFunction ):
109
132
_classes = (symengine .Csc ,)
110
133
111
134
def __new__ (cls , a ):
112
135
return symengine .csc (a )
113
136
114
137
115
- class sec (Function ):
138
+ class sec (_RegisteredFunction ):
116
139
_classes = (symengine .Sec ,)
117
140
118
141
def __new__ (cls , a ):
119
142
return symengine .sec (a )
120
143
121
144
122
- class asin (Function ):
145
+ class asin (_RegisteredFunction ):
123
146
_classes = (symengine .ASin ,)
124
147
125
148
def __new__ (cls , a ):
126
149
return symengine .asin (a )
127
150
128
151
129
- class acos (Function ):
152
+ class acos (_RegisteredFunction ):
130
153
_classes = (symengine .ACos ,)
131
154
132
155
def __new__ (cls , a ):
133
156
return symengine .acos (a )
134
157
135
158
136
- class atan (Function ):
159
+ class atan (_RegisteredFunction ):
137
160
_classes = (symengine .ATan ,)
138
161
139
162
def __new__ (cls , a ):
140
163
return symengine .atan (a )
141
164
142
165
143
- class acot (Function ):
166
+ class acot (_RegisteredFunction ):
144
167
_classes = (symengine .ACot ,)
145
168
146
169
def __new__ (cls , a ):
147
170
return symengine .acot (a )
148
171
149
172
150
- class acsc (Function ):
173
+ class acsc (_RegisteredFunction ):
151
174
_classes = (symengine .ACsc ,)
152
175
153
176
def __new__ (cls , a ):
154
177
return symengine .acsc (a )
155
178
156
179
157
- class asec (Function ):
180
+ class asec (_RegisteredFunction ):
158
181
_classes = (symengine .ASec ,)
159
182
160
183
def __new__ (cls , a ):
161
184
return symengine .asec (a )
162
185
163
186
164
- class sinh (Function ):
187
+ class sinh (_RegisteredFunction ):
165
188
_classes = (symengine .Sinh ,)
166
189
167
190
def __new__ (cls , a ):
168
191
return symengine .sinh (a )
169
192
170
193
171
- class cosh (Function ):
194
+ class cosh (_RegisteredFunction ):
172
195
_classes = (symengine .Cosh ,)
173
196
174
197
def __new__ (cls , a ):
175
198
return symengine .cosh (a )
176
199
177
200
178
- class tanh (Function ):
201
+ class tanh (_RegisteredFunction ):
179
202
_classes = (symengine .Tanh ,)
180
203
181
204
def __new__ (cls , a ):
182
205
return symengine .tanh (a )
183
206
184
207
185
- class coth (Function ):
208
+ class coth (_RegisteredFunction ):
186
209
_classes = (symengine .Coth ,)
187
210
188
211
def __new__ (cls , a ):
189
212
return symengine .coth (a )
190
213
191
214
192
- class asinh (Function ):
215
+ class asinh (_RegisteredFunction ):
193
216
_classes = (symengine .ASinh ,)
194
217
195
218
def __new__ (cls , a ):
196
219
return symengine .asinh (a )
197
220
198
221
199
- class acosh (Function ):
222
+ class acosh (_RegisteredFunction ):
200
223
_classes = (symengine .ACosh ,)
201
224
202
225
def __new__ (cls , a ):
203
226
return symengine .acosh (a )
204
227
205
228
206
- class atanh (Function ):
229
+ class atanh (_RegisteredFunction ):
207
230
_classes = (symengine .ATanh ,)
208
231
209
232
def __new__ (cls , a ):
210
233
return symengine .atanh (a )
211
234
212
235
213
- class acoth (Function ):
236
+ class acoth (_RegisteredFunction ):
214
237
_classes = (symengine .ACoth ,)
215
238
216
239
def __new__ (cls , a ):
217
240
return symengine .acoth (a )
218
241
242
+
219
243
'''
220
244
for i in ("""Sin Cos Tan Gamma Cot Csc Sec ASin ACos ATan
221
245
ACot ACsc ASec Sinh Cosh Tanh Coth ASinh ACosh ATanh
0 commit comments