Ask Your Question
2

What's the best way to access sage from a C program?

asked 2014-09-12 22:42:23 +0200

Andrew732 gravatar image

I'm new to Python/Sage and confused about what my options are here. I have a C++ program and occasionally I want to process some data with Sage. It would be far too slow to simply have Sage running like a server and then use the C++ program like a client that queries the server.

What I really want to do is write a standalone Python function that uses Sage library functions, convert that function and any relevant portions of Sage into C, and then with my own compiler, compile that C code into a library that my C++ program can call.

I'm confused about how all this could work with Cython and spyx files and so forth. Is this even possible? Would it be possible but slower to instead embed the Python function in the C++ program? Thanks for any help.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
1

answered 2014-09-14 12:30:26 +0200

Andrew732 gravatar image

Anybody else ever need to do something like this?

edit flag offensive delete link more

Comments

I have: https://ask.sagemath.org/question/691... and still no good answers.

cduston gravatar imagecduston ( 2023-06-15 21:27:04 +0200 )edit
1

answered 2014-09-21 19:38:44 +0200

Volker Braun gravatar image

I would turn it around, instead of controlling Sage from within your C++ program make Sage/IPython your user interface. Then call into your C++ code for whatever you want it to do quickly. Will be a much nicer interface than calling your binary with different arguments.

Typically C/C++ code does some fast numerics after you have done some symbolic preprocessing, so usually you don't need to call back into Python then. But you definitely can using the Python C API (tedious), or by linking against Cython module and calling cdef functions, or boost:python.

Simple example of a C++ lattice simulation code controlled from the Sage commandline: https://github.com/vbraun/lattice_phi4

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-09-12 22:42:23 +0200

Seen: 937 times

Last updated: Sep 21 '14