Skip to content

Commit 6d6521f

Browse files
committed
matrix spec update
1 parent ff06faa commit 6d6521f

File tree

3 files changed

+335
-34
lines changed

3 files changed

+335
-34
lines changed

ext/symengine/ruby_matrix.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,6 @@ VALUE cmatrix_dense_add(VALUE self, VALUE operand)
352352
result = Data_Wrap_Struct(c_dense_matrix, NULL, dense_matrix_free,
353353
cresult);
354354

355-
dense_matrix_free(coperand);
356355
} else {
357356
// Scalar Addition
358357
basic_struct *coperand = basic_new_heap();
@@ -388,8 +387,6 @@ VALUE cmatrix_dense_mul(VALUE self, VALUE operand)
388387

389388
result = Data_Wrap_Struct(c_dense_matrix, NULL, dense_matrix_free,
390389
cresult);
391-
392-
dense_matrix_free(coperand);
393390
} else {
394391
// Scalar Multiplication
395392
basic_struct *coperand = basic_new_heap();

notebooks/beginner.ipynb

Lines changed: 295 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -62,35 +62,6 @@
6262
"SymEngine.ascii_art"
6363
]
6464
},
65-
{
66-
"cell_type": "markdown",
67-
"metadata": {},
68-
"source": [
69-
"or create a variable"
70-
]
71-
},
72-
{
73-
"cell_type": "code",
74-
"execution_count": 3,
75-
"metadata": {
76-
"collapsed": false
77-
},
78-
"outputs": [
79-
{
80-
"data": {
81-
"text/plain": [
82-
"#<SymEngine::Basic:0x00000001e95290>"
83-
]
84-
},
85-
"execution_count": 3,
86-
"metadata": {},
87-
"output_type": "execute_result"
88-
}
89-
],
90-
"source": [
91-
"basic = SymEngine::Basic.new"
92-
]
93-
},
9465
{
9566
"cell_type": "markdown",
9667
"metadata": {},
@@ -614,11 +585,305 @@
614585
"source": [
615586
"k.expand.to_s"
616587
]
588+
},
589+
{
590+
"cell_type": "markdown",
591+
"metadata": {},
592+
"source": [
593+
"## SymEngine::RealDouble\n",
594+
"\n",
595+
"SymEngine::RealDouble can be constructed by converting any ruby Float into SymEngine"
596+
]
597+
},
598+
{
599+
"cell_type": "code",
600+
"execution_count": null,
601+
"metadata": {
602+
"collapsed": true
603+
},
604+
"outputs": [],
605+
"source": [
606+
"d = SymEngine(1.2)"
607+
]
608+
},
609+
{
610+
"cell_type": "markdown",
611+
"metadata": {},
612+
"source": [
613+
"## SymEngine::ComplexDouble\n",
614+
"SymEngine::ComplexDouble can be constructed by converting any ruby Complex into SymEngine"
615+
]
616+
},
617+
{
618+
"cell_type": "code",
619+
"execution_count": null,
620+
"metadata": {
621+
"collapsed": true
622+
},
623+
"outputs": [],
624+
"source": [
625+
"c = SymEngine(Complex(2.3, 3.2))"
626+
]
627+
},
628+
{
629+
"cell_type": "markdown",
630+
"metadata": {},
631+
"source": [
632+
"## SymEngine::RealMPFR\n",
633+
"SymEngine::RealMPFR can be constructed either by converting any Ruby BigDecimal into SymEngine, or using the constructor to express any real number with a given number of bits of precision"
634+
]
635+
},
636+
{
637+
"cell_type": "code",
638+
"execution_count": null,
639+
"metadata": {
640+
"collapsed": true
641+
},
642+
"outputs": [],
643+
"source": [
644+
"require 'bigdecimal'\n",
645+
"r1 = SymEngine(BigDecimal(\"12.3\"))\n",
646+
"r2 = SymEngine::RealMPFR.new(12.3, 200)"
647+
]
648+
},
649+
{
650+
"cell_type": "markdown",
651+
"metadata": {},
652+
"source": [
653+
"## SymEngine::ComplexMPC\n",
654+
"SymEngine::RealMPC can be constructed by arithmatic operations of any SymEngine::RealMPFR objects, as shown below."
655+
]
656+
},
657+
{
658+
"cell_type": "code",
659+
"execution_count": null,
660+
"metadata": {
661+
"collapsed": true
662+
},
663+
"outputs": [],
664+
"source": [
665+
"i = SymEngine:I\n",
666+
"c1 = r1 + i * r2"
667+
]
668+
},
669+
{
670+
"cell_type": "markdown",
671+
"metadata": {},
672+
"source": [
673+
"## SymEngine::Constant - SymEngine Constants\n",
674+
"\n",
675+
"SymEngine offers the following constants"
676+
]
677+
},
678+
{
679+
"cell_type": "code",
680+
"execution_count": null,
681+
"metadata": {
682+
"collapsed": true
683+
},
684+
"outputs": [],
685+
"source": [
686+
"i = SymEngine::I\n",
687+
"e = SymEngine::E\n",
688+
"eg = SymEngine::EULER_GAMMA\n",
689+
"pi = SymEngine::PI\n",
690+
"\n",
691+
"i.inspect + e.inspect + eg.inspect + pi.inspect"
692+
]
693+
},
694+
{
695+
"cell_type": "markdown",
696+
"metadata": {},
697+
"source": [
698+
"## SymEngine::TrigFunction\n",
699+
"\n",
700+
"sin, cos, tan, cosec, sec, cot, asin, acos, atan, acosec, asec, acot are available as shown below:"
701+
]
702+
},
703+
{
704+
"cell_type": "code",
705+
"execution_count": null,
706+
"metadata": {
707+
"collapsed": true
708+
},
709+
"outputs": [],
710+
"source": [
711+
"i1 = SymEngine::sin(pi)\n",
712+
"i2 = SymEngine::cos(0.2)\n",
713+
"i3 = SymEngine::tan(pi/4)\n",
714+
"i4 = SymEngine::csc(pi/2)\n",
715+
"i5 = SymEngine::sec(0.2)\n",
716+
"i6 = SymEngine::cot(pi/4)\n",
717+
"\n",
718+
"print \"sin(pi): \", i1,\"\\ncos(0.2): \", i2, \"\\ntan(pi/4): \", i3, \"\\ncsc(pi/2): \", i4, \"\\nsec(0.2): \", i5,\"\\ncot(pi/4): \", i6, \"\\n\""
719+
]
720+
},
721+
{
722+
"cell_type": "code",
723+
"execution_count": null,
724+
"metadata": {
725+
"collapsed": true
726+
},
727+
"outputs": [],
728+
"source": [
729+
"i1 = SymEngine::asin(1)\n",
730+
"i2 = SymEngine::acos(0)\n",
731+
"i3 = SymEngine::atan(5)\n",
732+
"i4 = SymEngine::acsc(1)\n",
733+
"i5 = SymEngine::asec(0.2)\n",
734+
"i6 = SymEngine::acot(0.5)\n",
735+
"\n",
736+
"print \"i1: \", i1,\"\\ni2: \", i2, \"\\ni3: \", i3, \"\\ni4: \", i4, \"\\ni5: \", i5,\"\\ni6: \", i6, \"\\n\""
737+
]
738+
},
739+
{
740+
"cell_type": "markdown",
741+
"metadata": {},
742+
"source": [
743+
"## SymEngine::HyperbolicFunction\n",
744+
"sinh, cosh, tanh, cosech, sech, coth, asinh, acosh, atanh, acosech, asech, acoth are available as shown below:"
745+
]
746+
},
747+
{
748+
"cell_type": "code",
749+
"execution_count": null,
750+
"metadata": {
751+
"collapsed": true
752+
},
753+
"outputs": [],
754+
"source": [
755+
"i1 = SymEngine::sinh(pi)\n",
756+
"i2 = SymEngine::cosh(0.2)\n",
757+
"i3 = SymEngine::tanh(pi/4)\n",
758+
"i4 = SymEngine::csch(pi/2)\n",
759+
"i5 = SymEngine::sech(0.2)\n",
760+
"i6 = SymEngine::coth(pi/4)\n",
761+
"\n",
762+
"print \"sinh(pi): \", i1,\"\\ncosh(0.2): \", i2, \"\\ntanh(pi/4): \", i3, \"\\ncsch(pi/2): \", i4, \"\\nsech(0.2): \", i5,\"\\ncoth(pi/4): \", i6, \"\\n\""
763+
]
764+
},
765+
{
766+
"cell_type": "code",
767+
"execution_count": null,
768+
"metadata": {
769+
"collapsed": true
770+
},
771+
"outputs": [],
772+
"source": [
773+
"i1 = SymEngine::asinh(1)\n",
774+
"i2 = SymEngine::acosh(0)\n",
775+
"i3 = SymEngine::atanh(5)\n",
776+
"i4 = SymEngine::acsch(1)\n",
777+
"i5 = SymEngine::asech(0.2)\n",
778+
"i6 = SymEngine::acoth(0.5)\n",
779+
"\n",
780+
"print \"i1: \", i1,\"\\ni2: \", i2, \"\\ni3: \", i3, \"\\ni4: \", i4, \"\\ni5: \", i5,\"\\ni6: \", i6, \"\\n\""
781+
]
782+
},
783+
{
784+
"cell_type": "markdown",
785+
"metadata": {},
786+
"source": [
787+
"## NTheory Functions\n",
788+
"\n",
789+
"Several Number Theory functions are available in SymEngine.\n",
790+
"\n",
791+
"GCD and LCM"
792+
]
793+
},
794+
{
795+
"cell_type": "code",
796+
"execution_count": null,
797+
"metadata": {
798+
"collapsed": true
799+
},
800+
"outputs": [],
801+
"source": [
802+
"gcd = SymEngine::gcd(45, 40)\n",
803+
"lcm = SymEngine::lcm(45, 40)\n",
804+
"\n",
805+
"print \"for 45 and 40,\\ngcd is: \", gcd, \"\\nlcm is: \",lcm, \"\\n\""
806+
]
807+
},
808+
{
809+
"cell_type": "markdown",
810+
"metadata": {},
811+
"source": [
812+
"Next Prime"
813+
]
814+
},
815+
{
816+
"cell_type": "code",
817+
"execution_count": null,
818+
"metadata": {
819+
"collapsed": true
820+
},
821+
"outputs": [],
822+
"source": [
823+
"np = SymEngine::nextprime(5)"
824+
]
825+
},
826+
{
827+
"cell_type": "markdown",
828+
"metadata": {},
829+
"source": [
830+
"Quotient"
831+
]
832+
},
833+
{
834+
"cell_type": "code",
835+
"execution_count": null,
836+
"metadata": {
837+
"collapsed": true
838+
},
839+
"outputs": [],
840+
"source": [
841+
"q = SymEngine::quotient(5, 2)"
842+
]
843+
},
844+
{
845+
"cell_type": "markdown",
846+
"metadata": {},
847+
"source": [
848+
"Lucas and Fibonacci series"
849+
]
850+
},
851+
{
852+
"cell_type": "code",
853+
"execution_count": null,
854+
"metadata": {
855+
"collapsed": true
856+
},
857+
"outputs": [],
858+
"source": [
859+
"l = SymEngine::lucas(3)\n",
860+
"f = SymEngine::fibonacci(3)\n",
861+
"\n",
862+
"p l, f"
863+
]
864+
},
865+
{
866+
"cell_type": "markdown",
867+
"metadata": {},
868+
"source": [
869+
"Binomials"
870+
]
871+
},
872+
{
873+
"cell_type": "code",
874+
"execution_count": null,
875+
"metadata": {
876+
"collapsed": true
877+
},
878+
"outputs": [],
879+
"source": [
880+
"b = SymEngine::binomial(5, 2)"
881+
]
617882
}
618883
],
619884
"metadata": {
620885
"kernelspec": {
621-
"display_name": "Ruby 2.2.0",
886+
"display_name": "Ruby 2.3.0",
622887
"language": "ruby",
623888
"name": "ruby"
624889
},

0 commit comments

Comments
 (0)