@@ -134,18 +134,6 @@ basic_unaryop f a = unsafePerformIO $ do
134
134
return s
135
135
136
136
137
- basic_add :: BasicSym -> BasicSym -> BasicSym
138
- basic_add = basic_binaryop basic_add_ffi
139
-
140
- basic_sub :: BasicSym -> BasicSym -> BasicSym
141
- basic_sub = basic_binaryop basic_sub_ffi
142
-
143
- basic_mul :: BasicSym -> BasicSym -> BasicSym
144
- basic_mul = basic_binaryop basic_mul_ffi
145
-
146
- basic_div :: BasicSym -> BasicSym -> BasicSym
147
- basic_div = basic_binaryop basic_div_ffi
148
-
149
137
basic_pow :: BasicSym -> BasicSym -> BasicSym
150
138
basic_pow = basic_binaryop basic_pow_ffi
151
139
@@ -167,19 +155,39 @@ basic_rational_set_signed i j = unsafePerformIO $ do
167
155
168
156
169
157
instance Num BasicSym where
170
- (+) = basic_add
171
- (-) = basic_sub
172
- (*) = basic_mul
173
- negate = basic_neg
174
- abs = basic_abs
158
+ (+) = basic_binaryop basic_add_ffi
159
+ (-) = basic_binaryop basic_sub_ffi
160
+ (*) = basic_binaryop basic_mul_ffi
161
+ negate = basic_unaryop basic_neg_ffi
162
+ abs = basic_unaryop basic_abs_ffi
175
163
signum = undefined
176
164
fromInteger = basic_from_integer
177
165
178
166
instance Fractional BasicSym where
179
- (/) = basic_div
167
+ (/) = basic_binaryop basic_div_ffi
180
168
fromRational (num :% denom) = basic_rational_set_signed num denom
181
169
recip r = basic_const_one / r
182
170
171
+ instance Floating BasicSym where
172
+ pi = basic_const_pi
173
+ -- exp :: basic_binaryop basic_pow_ffi
174
+ log = undefined
175
+ sqrt x = basic_pow x 0.5
176
+ (**) = basic_pow
177
+ logBase = undefined
178
+ sin = basic_unaryop basic_sin_ffi
179
+ cos = basic_unaryop basic_cos_ffi
180
+ tan = basic_unaryop basic_tan_ffi
181
+ asin = basic_unaryop basic_asin_ffi
182
+ acos = basic_unaryop basic_acos_ffi
183
+ atan = basic_unaryop basic_atan_ffi
184
+ sinh = basic_unaryop basic_sinh_ffi
185
+ cosh = basic_unaryop basic_cosh_ffi
186
+ tanh = basic_unaryop basic_tanh_ffi
187
+ asinh = basic_unaryop basic_asinh_ffi
188
+ acosh = basic_unaryop basic_acosh_ffi
189
+ atanh = basic_unaryop basic_atanh_ffi
190
+
183
191
foreign import ccall " symengine/cwrapper.h ascii_art_str" ascii_art_str_ffi :: IO CString
184
192
foreign import ccall " symengine/cwrapper.h basic_new_heap" basic_new_heap_ffi :: Ptr BasicStruct -> IO ()
185
193
foreign import ccall " symengine/cwrapper.h &basic_free_heap" ptr_basic_free_heap_ffi :: FunPtr (Ptr BasicStruct -> IO () )
@@ -205,4 +213,20 @@ foreign import ccall "symengine/cwrapper.h basic_mul" basic_mul_ffi :: Ptr Basic
205
213
foreign import ccall " symengine/cwrapper.h basic_div" basic_div_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> Ptr BasicStruct -> IO ()
206
214
foreign import ccall " symengine/cwrapper.h basic_pow" basic_pow_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> Ptr BasicStruct -> IO ()
207
215
foreign import ccall " symengine/cwrapper.h basic_neg" basic_neg_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
208
- foreign import ccall " symengine/cwrapper.h basic_abs" basic_abs_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
216
+ foreign import ccall " symengine/cwrapper.h basic_abs" basic_abs_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
217
+
218
+ foreign import ccall " symengine/cwrapper.h basic_sin" basic_sin_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
219
+ foreign import ccall " symengine/cwrapper.h basic_cos" basic_cos_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
220
+ foreign import ccall " symengine/cwrapper.h basic_tan" basic_tan_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
221
+
222
+ foreign import ccall " symengine/cwrapper.h basic_asin" basic_asin_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
223
+ foreign import ccall " symengine/cwrapper.h basic_acos" basic_acos_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
224
+ foreign import ccall " symengine/cwrapper.h basic_atan" basic_atan_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
225
+
226
+ foreign import ccall " symengine/cwrapper.h basic_sinh" basic_sinh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
227
+ foreign import ccall " symengine/cwrapper.h basic_cosh" basic_cosh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
228
+ foreign import ccall " symengine/cwrapper.h basic_tanh" basic_tanh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
229
+
230
+ foreign import ccall " symengine/cwrapper.h basic_asinh" basic_asinh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
231
+ foreign import ccall " symengine/cwrapper.h basic_acosh" basic_acosh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
232
+ foreign import ccall " symengine/cwrapper.h basic_atanh" basic_atanh_ffi :: Ptr BasicStruct -> Ptr BasicStruct -> IO ()
0 commit comments