22#include "ruby_basic.h"
33#include "ruby_symbol.h"
44#include "ruby_integer.h"
5- #include "ruby_rational.h"
65#include "ruby_constant.h"
6+ #include "ruby_complex.h"
77#include "ruby_function.h"
88#include "ruby_ntheory.h"
9+ #include "ruby_utils.h"
10+ #include "symengine_utils.h"
911#include "symengine.h"
1012
1113///////////////////
@@ -20,6 +22,7 @@ VALUE msymengine_ascii_art(VALUE self) {
2022}
2123
2224void Init_symengine () {
25+
2326 m_symengine = rb_define_module ("SymEngine" );
2427 rb_define_singleton_method (m_symengine , "ascii_art" , msymengine_ascii_art , 0 );
2528
@@ -44,6 +47,10 @@ void Init_symengine() {
4447 rb_define_method (c_basic , "subs" , cbasic_subs , -1 );
4548 rb_define_method (c_basic , "coerce" , cbasic_coerce , 1 );
4649
50+ //Sympify as a Module Level Function
51+ rb_define_module_function (m_symengine , "convert" , cutils_sympify , 1 );
52+ rb_define_global_function ("SymEngine" , cutils_sympify , 1 );
53+
4754 //Symbol class
4855 c_symbol = rb_define_class_under (m_symengine , "Symbol" , c_basic );
4956 rb_define_alloc_func (c_symbol , cbasic_alloc );
@@ -58,7 +65,16 @@ void Init_symengine() {
5865 //Rational class
5966 c_rational = rb_define_class_under (m_symengine , "Rational" , c_basic );
6067 rb_define_alloc_func (c_rational , cbasic_alloc );
61- rb_define_method (c_rational , "initialize" , crational_init , 1 );
68+
69+ //Complex class
70+ c_complex = rb_define_class_under (m_symengine , "Complex" , c_basic );
71+ rb_define_alloc_func (c_complex , cbasic_alloc );
72+ rb_define_method (c_complex , "real" , ccomplex_real_part , 0 );
73+ rb_define_method (c_complex , "imaginary" , ccomplex_imaginary_part , 0 );
74+
75+ //ComplexDouble class
76+ c_complex_double = rb_define_class_under (m_symengine , "ComplexDouble" , c_basic );
77+ rb_define_alloc_func (c_complex_double , cbasic_alloc );
6278
6379 //Constant class
6480 c_constant = rb_define_class_under (m_symengine , "Constant" , c_basic );
@@ -67,6 +83,7 @@ void Init_symengine() {
6783 rb_define_const (m_symengine , "PI" , cconstant_pi ());
6884 rb_define_const (m_symengine , "E" , cconstant_e ());
6985 rb_define_const (m_symengine , "EULER_GAMMA" , cconstant_euler_gamma ());
86+ rb_define_const (m_symengine , "I" , cconstant_i ());
7087
7188 //Add class
7289 c_add = rb_define_class_under (m_symengine , "Add" , c_basic );
0 commit comments