I am afraid I didn't explain my problem well enough. My problem is not to write c++ code with mpfr. That is solved It is also not to call c++ libraries from cython code that involves plain mpfr numbers. That is also solved. My problem is to do so with functions that involve *arrays *(or lists, or vectors) of mpfr numbers.
In particular, assume that i have writen a c++ library that provides a function my_function that takes an array of mpfr numbers and returns another array of mpfr numbers. So I try to write some cython code to interface in from sage: #clang C++ #clib my_library include 'cysignals/signals.pxi' from sage.libs.mpfr cimport * from sage.rings.real_mpfr cimport RealNumber from sage.rings.real_mpfr import RealField cdef extern from "my_library.h": mpfr_t* my_function (mpfr_t *_coef) def my_cython_function(values): cdef mpfr_t* cvalues = <mpfr_t*> sage_malloc(sizeof(mpfr_t)*len(values)) cdef mpfr_t tempnum cdef mpfr_t* rop for i,v in enumerate(values): tempnum = values[i].value mpfr_init(cvalues[i]) mpfr_set(cvalues[i], tempnum, MPFR_RNDN) sig_on rop = my_function(cvalues) sig_off This code is suppopsed to just create an array of mpfr objects to be passed to my_function, and another array to get the result of that function. When I try to compile it I get the following error: --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ interactiveshell.pyc in run_code(self, code_obj, result) 2896 if result is not None: 2897 result.error_in_exec = sys.exc_info()[1] -> 2898 self.showtraceback() 2899 else: 2900 outflag = 0 /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ interactiveshell.pyc in showtraceback(self, exc_tuple, filename, tb_offset, exception_only) 1822 except Exception: 1823 stb = self.InteractiveTB. structured_traceback(etype, -> 1824 value, tb, tb_offset= tb_offset) 1825 1826 self._showtraceback(etype, value, stb) /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in structured_traceback(self, etype, value, tb, tb_offset, number_of_lines_of_context) 1404 self.tb = tb 1405 return FormattedTB.structured_traceback( -> 1406 self, etype, value, tb, tb_offset, number_of_lines_of_context) 1407 1408 /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in structured_traceback(self, etype, value, tb, tb_offset, number_of_lines_of_context) 1312 # Verbose modes need a full traceback 1313 return VerboseTB.structured_traceback( -> 1314 self, etype, value, tb, tb_offset, number_of_lines_of_context 1315 ) 1316 else: /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in structured_traceback(self, etype, evalue, etb, tb_offset, number_of_lines_of_context) 1162 1163 formatted_exception = self.format_exception_as_a_whole(etype , evalue, etb, number_of_lines_of_context, -> 1164 tb_offset) 1165 1166 colors = self.Colors # just a shorthand + quicker name lookup /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in format_exception_as_a_whole(self, etype, evalue, etb, number_of_lines_of_context, tb_offset) 1111 return "" 1112 -> 1113 last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records) 1114 1115 frames = self.format_records(records, last_unique, recursion_repeat) /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in find_recursion(etype, value, records) 453 # quarter of the traceback (250 frames by default) is repeats, and find the 454 # first frame (from in to out) that looks different. --> 455 if not is_recursion_error(etype, value, records): 456 return len(records), 0 457 /home/mmarco/sage/local/lib/python2.7/site-packages/IPython/core/ultratb.pyc in is_recursion_error(etype, value, records) 439 # a recursion error. 440 return (etype is recursion_error_type) \ --> 441 and "recursion" in str(value).lower() \ 442 and len(records) > 500 443 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1158: ordinal not in range(128) I tried to circunvent this problem by using c++ vectors instead of malloc'ed arrays, but then it is the c++ compilet which complains abput creating vectors of mpfr_t objects. Thoughts? -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.