Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Sep 26 16:48
    lwJi starred symengine/symengine
  • Sep 25 15:58
    rikardn opened #1932
  • Sep 22 12:47
    AlexanderLasar commented #1931
  • Sep 22 11:06
    rikardn commented #1931
  • Sep 22 08:56
    AlexanderLasar opened #1931
  • Sep 18 22:45

    isuruf on master

    check before casting to Boolean Add sympy names add test and 5 more (compare)

  • Sep 18 22:45
    isuruf closed #1930
  • Sep 18 22:45
    isuruf commented #1930
  • Sep 17 04:24
    isuruf review_requested #1930
  • Sep 16 21:44
    isuruf synchronize #1930
  • Sep 16 21:22
    isuruf synchronize #1930
  • Sep 16 16:55
    isuruf synchronize #1930
  • Sep 16 16:47
    isuruf synchronize #1930
  • Sep 16 16:37
    isuruf opened #1930
  • Sep 16 09:14
    ashryramadhan10 starred symengine/symengine
  • Sep 15 16:33
    wills31415 starred symengine/symengine
  • Sep 14 12:02
    TJStienstra commented #1929
  • Sep 13 23:40
    Aurelius-Nero starred symengine/symengine
  • Sep 11 06:12
    kirioh starred symengine/symengine
  • Sep 09 08:05
    TJStienstra commented #1929
Naveen Sai

I'm trying to build symengine and I am running into some errors when I set the -DCMAKE_BUILD_TYPE=Debug and -DWITH_BFD=yes.

/home/naveen/dev/symengine/symengine/utilities/teuchos/Teuchos_stacktrace.cpp: In function ‘void {anonymous}::process_section(bfd*, asection*, void*)’:
/home/naveen/dev/symengine/symengine/utilities/teuchos/Teuchos_stacktrace.cpp:193:8: error: ‘bfd_get_section_flags’ was not declared in this scope; did you mean ‘bfd_set_section_flags’?
  193 |   if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0) {
      |        ^~~~~~~~~~~~~~~~~~~~~
      |        bfd_set_section_flags
/home/naveen/dev/symengine/symengine/utilities/teuchos/Teuchos_stacktrace.cpp:197:25: error: ‘bfd_get_section_vma’ was not declared in this scope; did you mean ‘bfd_set_section_vma’?
  197 |   bfd_vma section_vma = bfd_get_section_vma(abfd, section);
      |                         ^~~~~~~~~~~~~~~~~~~
      |                         bfd_set_section_vma
/home/naveen/dev/symengine/symengine/utilities/teuchos/Teuchos_stacktrace.cpp:203:49: error: cannot convert ‘bfd*’ to ‘const asection*’ {aka ‘const bfd_section*’}
  203 |   bfd_size_type section_size = bfd_section_size(abfd, section);
      |                                                 ^~~~
      |                                                 |
      |                                                 bfd*
In file included from /home/naveen/dev/symengine/symengine/utilities/teuchos/Teuchos_stacktrace.cpp:73:
/usr/include/bfd.h:1206:35: note:   initializing argument 1 of ‘bfd_size_type bfd_section_size(const asection*)’
 1206 | bfd_section_size (const asection *sec)
      |                   ~~~~~~~~~~~~~~~~^~~
make[2]: *** [symengine/utilities/teuchos/CMakeFiles/teuchos.dir/build.make:128: symengine/utilities/teuchos/CMakeFiles/teuchos.dir/Teuchos_stacktrace.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:784: symengine/utilities/teuchos/CMakeFiles/teuchos.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

I did search a little and found out that binutils-dev>2.34 has a change in its API. Can anyone help me out in fixing this?

Ondřej Čertík
Hi @naveensaigit, we'll have to figure out how to fix it. In the mean time, can you compile with WITH_BFD=no?
Can you open up an issue for this at github please?
Naveen Sai
Yes, compiling without debug works fine. I'll open an issue on Github
Naveen Sai

I compiled without these options and the build was successful. Even ctest works. However, I have a question. Can I actually use the library directly in C++? I tried to compile this piece of code, but I get an error again.

#include <symengine/basic.h>
#include <symengine/symbol.h>

using SymEngine::Basic;
using SymEngine::Symbol;
using SymEngine::RCP;
using SymEngine::symbol;

int main()
    RCP<const Basic> x = symbol("x");

This is the error I get.

(base) naveen@naveen-Legion-Y545:~/dev/projects$ g++ symengine.cpp
/usr/bin/ld: /tmp/ccSCjgXA.o: in function `SymEngine::RCP<SymEngine::Symbol const> SymEngine::make_rcp<SymEngine::Symbol const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
symengine.cpp:(.text._ZN9SymEngine8make_rcpIKNS_6SymbolEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_3RCPIT_EEDpOT0_[_ZN9SymEngine8make_rcpIKNS_6SymbolEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_3RCPIT_EEDpOT0_]+0x48): undefined reference to `SymEngine::Symbol::Symbol(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
@naveensaigit you can write a CMakeLists.txt and have cmake generate your compile commands, see e.g. https://gist.github.com/bjodah/85fbf793da29a405e71ee382746db94d
or you can call cmake on the command-line and have it provide compile & link flags (CXXFLAGS & LDFLAGS typically), see e.g. https://github.com/symengine/symengine/wiki/Using-SymEngine-from-a-Cpp-project
Naveen Sai
@bjodah Thank you for the response. Using compile and link flags compiles the code. I have another question. Is there a way to set the compile links by default? I am right now defining the flags each time I open a new shell
Naveen Sai
@bjodah I went through your gist and using a build.sh is a good way to do it. Thank you, I understood it now :)
@naveensaigit glad I could help!
Daniel Shapero
Hi all! I was curious about how expressions are represented internally in symengine so I started browsing the source code. It looks like every expression is always canonicalized before it's stored in, say an Add or a Mul object. So for example (a + b) * (c + d) wouldn't be represented that way internally, it would first be expanded to a * c + ...etc. Is that impression correct or is there something I've missed?
Sorry if this is documented somewhere obvious, I didn't see anything on the sympy website
Isuru Fernando
@danshapero, no it's not expanded
x + x is canonicalized to 2*x
Devesh Sawant
Hi, I am trying to build symengine on windows on my MSYS shell. I ran the cmake command successfully with -DGMP_LIBRARY="c:/.../lib -DGMP_INCLUDE_DIR="c:/.../lib" -DCMAKE_BUILD_TYPE="Debug" where it was able to find the directory of the manually built gmp library.
On running make it fails, throwing cannot find C:/gmp/lib: Permission denied, which is weird since it exists & is accessible .
Any ideas on what it could be?
Isuru Fernando
@dsaw, use -DGMP_LIBRARY_DIR instead of -DGMP_LIBRARY
Sayandip Halder
Hi! Is there any update to symengine/symengine#1719? I would love to take it up as my GSoC Project!
Hi i'm totally new to c++ and Symengine and i just managed to use it with VS 2019. I'm struggling with printing anything else than symbols. For example i try to print: RCP<const Basic>x= integer(1);
with the command cout << *x << endl; it triggers a breakpoint in basic-inl.h in line 97
and throws the exception: Unhandled exception at 0x00007FFC1F796AFB (ntdll.dll) in Test-symengine.exe: 0xC0000005: Access violation reading location 0x0000000000000009.
Hey! I enjoy mathematics and programming, and I wish to learn more computational algebra --- in particular, computational group theory and ring theory. Is there an interest for Symengine to have algorithms to compute with permutation groups? How about ring algorithms? (eg. grobner basis computation and the like)?
Joseph Donato
Hello everyone, I am trying to build the example provided on symengine.org and I get the following error when running make after running cmake .
-- Could NOT find SymEngine (missing: SymEngine_DIR)
This is what my CMakeLists.txt contains
cmake_minimum_required(VERSION 3.15.5)
find_package(SymEngine 0.8.1 CONFIG PATHS ~/.conan/data/symengine/0.8.1)

add_executable(example main_example.cpp)
target_link_libraries(example ${SYMENGINE_LIBRARIES})
Am I missing something in order for cmake to find symengine? I used conan to install symengine
Hey! How to define a symbol/integer matrix? Just like this: DenseMatrix A = DenseMatrix(3, 3,
{integer(1), symbol("b"), symbol("c"),
symbol("d"), symbol("e"), symbol("f"),
symbol("g"), symbol("h"), symbol("i")});
Isuru Fernando
Does it not work?
It does not work
Isuru Fernando
What's the error?
You can also do
vec_basic vec;
DenseMatrix A = DenseMatrix(3, 3, vec);
/home/zhangfq/work/HMO/symengine/test/main.cpp:28:72: error: no matching function for call to ‘SymEngine::DenseMatrix::DenseMatrix(int, int, <brace-enclosed initializer list>)’
28 | symbol("g"), symbol("h"), symbol("i")});
| ^
@isuruf Thanks! How to determinant a symbol matrix?
Rafael de Conde
Hello everyone! can we ask for help setting up symengine here?
Isuru Fernando
@Rafael-Conde, sure.
Rafael de Conde

Ok, so I installed miniconda and installed the symengine successfully(all following the instructions from github and the install page). but when I try to run the command conda env create -f symedocs.ymlit returns what I think it's an error message, the following:

EnvironmentFileNotFound: 'C:\Users\me\miniconda3\symedocs.yml' file not found

I tried creating the file manually and searching for solutions online but wasn't successfull

I think my problem is with anaconda but as I said, I couldn't find a solution so far
I think you can see by the file path but I'm using windows, I think this might be relevant
Isuru Fernando
@Rafael-Conde, that file is at https://raw.githubusercontent.com/symengine/symengine.github.io/sources/symedocs.yml, but that is needed only if you want to build the docs
you can just do conda install python-symengine if you don't want to build the docs yourself
Or even pip install symengine
what language do you want use symengine from?
Rafael de Conde
I would like to use symengine in C++
Isuru Fernando
Ah okay, then conda install symengine is all you need
Rafael de Conde
hum... and then I statically link the symengine.lib to my project and leave the .dll file in the same directory of the final executable?
Isuru Fernando
Rafael de Conde
Awesome! I thought there were extra steps haha
but one last question