Package: sagemath Version: 9.2-1 Severity: important Dear Maintainers,
Starting sage in a terminal to get a prompt makes it segfault (it seems related to pari). The end of the terminal output follows and the complete log file is attached. Sage also segfaults when started by jupyter. --- $ sage [...] 3310 return new_gen(pari_float) SignalError: Segmentation fault ********************************************************************** Oops, Sage crashed. We do our best to make it stable, but... A crash report was automatically generated with the following information: - A verbatim copy of the crash traceback. - A copy of your input history during this session. - Data on your current Sage configuration. It was left in the file named: '/home/restricted/.ipython/Sage_crash_report.txt' If you can email this file to the developers, the information in it will help them in understanding and correcting the problem. You can mail it to: sage-support at sage-supp...@googlegroups.com with the subject 'Sage Crash Report'. If you want to do it now, the following command will work (under Unix): mail -s 'Sage Crash Report' sage-supp...@googlegroups.com < /home/restricted/.ipython/Sage_crash_report.txt In your email, please also include information about: - The operating system under which the crash happened: Linux, macOS, Windows, other, and which exact version (for example: Ubuntu 16.04.3, macOS 10.13.2, Windows 10 Pro), and whether it is 32-bit or 64-bit; - How Sage was installed: using pip or conda, from GitHub, as part of a Docker container, or other, providing more detail if possible; - How to reproduce the crash: what exact sequence of instructions can one input to get the same crash? Ideally, find a minimal yet complete sequence of instructions that yields the crash. To ensure accurate tracking of this issue, please file a report about it at: http://trac.sagemath.org Hit <Enter> to quit (your terminal may close): --- -- System Information: Debian Release: bullseye/sid APT prefers unstable APT policy: (800, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (99, 'xenial-updates'), (99, 'xenial-security'), (99, 'xenial'), (10, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.19.0-12-amd64 (SMP w/2 CPU threads) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: unable to detect Versions of packages sagemath depends on: ii curl 7.72.0-1 ii cysignals-tools 1.10.2+ds-5 ii cython3 0.29.21-3 ii ecl 20.4.24+ds-2 ii eclib-tools 20190909-3+b1 ii fflas-ffpack 2.4.3-2 ii flintqs 1:1.0-3+b1 ii gap-atlasrep 2.1.0-3 ii gap-dev 4.11.0-4 ii gap-online-help 4.11.0-4 ii gap-primgrp 3.4.0-1 ii gap-smallgrp 1.4.1-1 ii gap-table-of-marks 1.2.9-1 ii gap-transgrp 2.0.4-1 ii gfan 0.6.2-2 ii glpk-utils 4.65-2 ii gmp-ecm 7.0.4+ds-5 ii ipython3 7.19.0-1 ii iso-codes 4.5.0-1 ii jmol 14.6.4+2016.11.05+dfsg1-4 ii lcalc 1.23+dfsg-11+b1 ii less 551-2 ii libatlas3-base [libblas.so.3] 3.10.3-10 ii libblas3 [libblas.so.3] 3.9.0-3 ii libbraiding0 1.0-1+b1 ii libbrial-groebner3 1.2.10-1+b1 ii libbrial3 1.2.10-1+b1 ii libc6 2.31-4 ii libcdd-tools 094j-2 ii libcliquer1 1.21-2 ii libec5 20190909-3+b1 ii libecm1 7.0.4+ds-5 ii libflint-2.6.3 2.6.3-3 ii libflint-arb2 1:2.18.1-3 ii libgap7 4.11.0-4 ii libgcc-s1 10.2.0-17 ii libgd3 2.3.0-2 ii libgiac0 1.6.0.25+dfsg1-3 ii libgivaro9 4.1.1-2 ii libglpk40 4.65-2 ii libgmp10 2:6.2.1+dfsg-1 ii libgmpxx4ldbl 2:6.2.1+dfsg-1 ii libgomp1 10.2.0-17 ii libgsl25 2.6+dfsg-2 ii libhomfly0 1.02r6-1 ii libiml0 1.0.4-1+b2 ii libjs-mathjax 2.7.9+dfsg-1 ii libjs-three 111+dfsg1-1 ii liblfunction0 1.23+dfsg-11+b1 ii liblrcalc1 1.2-2+b1 ii libm4ri-0.0.20200125 20200125-1+b1 ii libm4rie-0.0.20200125 20200125-1+b2 ii libmpc3 1.2.0-1 ii libmpfi0 1.5.3+ds-5 ii libmpfr6 4.1.0-3 ii libntl43 11.4.3-1+b1 ii libopenblas0 0.3.12+ds-2 ii libopenblas0-pthread [libblas.so.3] 0.3.12+ds-2 ii libpari-gmp-tls6 2.11.4-3 ii libplanarity0 3.0.1.0-1 ii libpynac18py3 0.7.26-5 ii libratpoints-2.1.3 1:2.1.3-1+b2 ii libreadline8 8.1~rc2-2 ii librw0 0.9+ds1-1 ii libsingular4m1 1:4.1.1-p2+ds-4+b2 ii libstdc++6 10.2.0-17 ii libsymmetrica2 2.0+ds-6 ii libzn-poly-0.9 0.9.2-1 ii maxima-sage 5.44.0-1 ii maxima-sage-share 5.44.0-1 ii nauty 2.7r1+ds-1 ii palp 2.20-1 ii pari-elldata 0.20190911-1 ii pari-galdata 0.20080411-3 ii pari-galpol 4.0-1 ii pari-gp 2.13.0-2 ii pari-gp2c 0.0.12-1 ii pari-seadata 0.20090618-2 ii python-ppl-doc 0.8.4-4 ii python3 3.8.6-1 ii python3-alabaster 0.7.8-1.1 ii python3-babel 2.8.0+dfsg.1-4 ii python3-cvxopt 1.2.5+dfsg-3 ii python3-cycler 0.10.0-3 ii python3-cypari2 2.1.2-1 ii python3-cysignals-pari 1.10.2+ds-5 ii python3-decorator 4.4.2-2 ii python3-docutils 0.16+dfsg-3 ii python3-fpylll 0.5.2+ds1-2+b1 ii python3-future 0.18.2-4 ii python3-gmpy2 2.1.0~b5-0.1+b1 ii python3-imagesize 1.2.0-2 ii python3-ipython-genutils 0.2.0-4 ii python3-itsdangerous 1.1.0-3 ii python3-matplotlib 3.3.2-2 ii python3-mistune 0.8.4-4 ii python3-mpmath 1.1.0-2 ii python3-networkx 2.5+ds-2 ii python3-nose 1.3.7-7 ii python3-numpy [python3-numpy-abi9] 1:1.19.4-1 ii python3-packaging 20.4-1 ii python3-path 15.0.0-1 ii python3-pexpect 4.6.0-4 ii python3-pickleshare 0.7.5-3 ii python3-pil 8.0.1-1 ii python3-pip 20.1.1-2 ii python3-pkgconfig 1.5.1-3 ii python3-ppl 0.8.4-4+b2 ii python3-psutil 5.7.3-1 ii python3-ptyprocess 0.6.0-3 ii python3-pygments 2.7.1+dfsg-1 ii python3-rpy2 [python3-rpy2] 3.3.6-1+b1 ii python3-scipy 1.5.4-1 ii python3-setuptools 50.3.0-1 ii python3-setuptools-scm 4.1.2-4 ii python3-simplegeneric 0.8.1-3 ii python3-singledispatch 3.4.0.3-3 ii python3-snowballstemmer 2.0.0-2 ii python3-sphinx 3.3.1-1 ii python3-stemmer 2.0.1+dfsg-1+b1 ii python3-sympy 1.6.2-2 ii python3-terminado 0.9.1-1 ii python3-tk 3.8.6-1 ii python3-tornado 6.1.0-1 ii python3-traitlets 5.0.5-1 ii python3-tz 2020.4-2 ii python3-vcversioner 2.16.0.0-3 ii python3-wcwidth 0.1.9+dfsg1-2 ii python3-werkzeug 1.0.1+dfsg1-2 ii python3-zmq 20.0.0-1 ii python3-zope.interface 5.1.2-1 ii r-base-core 4.0.3-1 ii rubiks 20070912-5 ii sagemath-common 9.2-1 ii sagemath-database-conway-polynomials 0.5-8 ii sagemath-database-elliptic-curves 0.8.1-5 ii sagemath-database-graphs 20161026+dfsg-5 ii sagemath-database-mutually-combinatorial-designs 20140630-6 ii sagemath-database-polytopes 20170220-5 ii singular 1:4.1.1-p2+ds-4+b2 ii sqlite3 3.33.0-1 ii sympow 2.023.6-1 ii tachyon 0.99~b6+dsx-9 ii xcas 1.6.0.25+dfsg1-3 ii yasm 1.3.0-2+b1 Versions of packages sagemath recommends: ii maxima-sage-doc 5.44.0-1 ii pari-doc 2.13.0-2 ii python3-sagenb-export 3.2-4 ii r-cran-lattice 0.20-41-1+b1 ii sagemath-doc 9.2-1 ii sagemath-jupyter 9.2-1 ii sagetex 3.4+ds-2 ii singular-doc 1:4.1.1-p2+ds-4 ii texlive-latex-base 2020.20200925-1 Versions of packages sagemath suggests: ii dot2tex 2.11.3-2 pn gap-design <none> ii gap-factint 1.6.3+ds-1 pn gap-grape <none> pn gap-guava <none> pn gap-laguna <none> pn gap-sonata <none> pn gap-toric <none> -- no debconf information
*************************************************************************** IPython post-mortem report {'commit_hash': '<not found>', 'commit_source': '(none found)', 'default_encoding': 'utf-8', 'ipython_path': '/usr/lib/python3/dist-packages/IPython', 'ipython_version': '7.19.0', 'os_name': 'posix', 'platform': 'Linux-4.19.0-12-amd64-x86_64-with-glibc2.29', 'sys_executable': '/usr/bin/python3', 'sys_platform': 'linux', 'sys_version': '3.8.6 (default, Sep 25 2020, 09:36:53) \n[GCC 10.2.0]'} *************************************************************************** *************************************************************************** Crash traceback: --------------------------------------------------------------------------- --------------------------------------------------------------------------- SignalError Python 3.8.6: /usr/bin/python3 Tue Nov 17 18:14:51 2020 A problem occurred executing Python code. Here is the sequence of function calls leading up to the error, with the most recent (innermost) call last. /usr/share/sagemath/bin/sage-ipython in <module> 1 #!/usr/bin/env sage-python 2 # -*- coding: utf-8 -*- 3 """ 4 Sage IPython startup script. 5 """ 6 7 # Display startup banner. Do this before anything else to give the user 8 # early feedback that Sage is starting. 9 from sage.misc.banner import banner 10 banner() 11 12 from sage.repl.interpreter import SageTerminalApp 13 14 app = SageTerminalApp.instance() ---> 15 app.initialize() global app.initialize = <bound method TerminalIPythonApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7f426061f880>> 16 app.start() /usr/lib/python3/dist-packages/traitlets/config/application.py in inner(app=<sage.repl.interpreter.SageTerminalApp object>, *args=(), **kwargs={}) 72 else: 73 raise ValueError("Unsupported value for environment variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none of {'0', '1', 'false', 'true', ''}."% _envvar ) 74 75 76 def catch_config_error(method): 77 """Method decorator for catching invalid config (Trait/ArgumentErrors) during init. 78 79 On a TraitError (generally caused by bad config), this will print the trait's 80 message, and exit the app. 81 82 For use on init methods, to prevent invoking excepthook on invalid input. 83 """ 84 @functools.wraps(method) 85 def inner(app, *args, **kwargs): 86 try: ---> 87 return method(app, *args, **kwargs) global method = undefined app = <sage.repl.interpreter.SageTerminalApp object at 0x7f426061f880> args = () kwargs = {} 88 except (TraitError, ArgumentError) as e: 89 app.log.fatal("Bad config encountered during initialization: %s", e) 90 app.log.debug("Config at the time: %s", app.config) 91 app.exit(1) 92 93 return inner 94 95 class ApplicationError(Exception): 96 pass 97 98 99 class LevelFormatter(logging.Formatter): 100 """Formatter with additional `highlevel` record 101 102 This field is empty if log level is less than highlevel_limit, /usr/lib/python3/dist-packages/IPython/terminal/ipapp.py in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None) 302 303 return super(TerminalIPythonApp, self).parse_command_line(argv) 304 305 @catch_config_error 306 def initialize(self, argv=None): 307 """Do actions after construct, but before starting the app.""" 308 super(TerminalIPythonApp, self).initialize(argv) 309 if self.subapp is not None: 310 # don't bother initializing further, starting subapp 311 return 312 # print self.extra_args 313 if self.extra_args and not self.something_to_run: 314 self.file_to_run = self.extra_args[0] 315 self.init_path() 316 # create the shell --> 317 self.init_shell() self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0x7f426061f880>> 318 # and draw the banner 319 self.init_banner() 320 # Now a variety of things that happen after the banner is printed. 321 self.init_gui_pylab() 322 self.init_extensions() 323 self.init_code() 324 325 def init_shell(self): 326 """initialize the InteractiveShell instance""" 327 # Create an InteractiveShell instance. 328 # shell.display_banner should always be False for the terminal 329 # based app, because we call shell.show_banner() by hand below 330 # so the banner shows *before* all extension loading stuff. 331 self.shell = self.interactive_shell_class.instance(parent=self, 332 profile_dir=self.profile_dir, /usr/lib/python3/dist-packages/sage/repl/interpreter.py in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>) 776 self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions 777 778 # Load the %lprun extension if available 779 try: 780 import line_profiler 781 except ImportError: 782 pass 783 else: 784 self.extensions.append('line_profiler') 785 786 if self.shell.has_sage_extensions: 787 self.extensions.remove(SAGE_EXTENSION) 788 789 # load sage extension here to get a crash if 790 # something is wrong with the sage library --> 791 self.shell.extension_manager.load_extension(SAGE_EXTENSION) self.shell.extension_manager.load_extension = <bound method ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager object at 0x7f425cef9670>> global SAGE_EXTENSION = 'sage' 792 793 /usr/lib/python3/dist-packages/IPython/core/extensions.py in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage') 72 if module_str in self.loaded: 73 return "already loaded" 74 75 from IPython.utils.syspathcontext import prepended_to_syspath 76 77 with self.shell.builtin_trap: 78 if module_str not in sys.modules: 79 with prepended_to_syspath(self.ipython_extension_dir): 80 mod = import_module(module_str) 81 if mod.__file__.startswith(self.ipython_extension_dir): 82 print(("Loading extensions from {dir} is deprecated. " 83 "We recommend managing extensions like any " 84 "other Python packages, in site-packages.").format( 85 dir=compress_user(self.ipython_extension_dir))) 86 mod = sys.modules[module_str] ---> 87 if self._call_load_ipython_extension(mod): self._call_load_ipython_extension = <bound method ExtensionManager._call_load_ipython_extension of <IPython.core.extensions.ExtensionManager object at 0x7f425cef9670>> mod = <module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'> 88 self.loaded.add(module_str) 89 else: 90 return "no load function" 91 92 def unload_extension(self, module_str): 93 """Unload an IPython extension by its module name. 94 95 This function looks up the extension's name in ``sys.modules`` and 96 simply calls ``mod.unload_ipython_extension(self)``. 97 98 Returns the string "no unload function" if the extension doesn't define 99 a function to unload itself, "not loaded" if the extension isn't loaded, 100 otherwise None. 101 """ 102 if module_str not in self.loaded: /usr/lib/python3/dist-packages/IPython/core/extensions.py in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager object>, mod=<module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'>) 119 """ 120 from IPython.utils.syspathcontext import prepended_to_syspath 121 122 if (module_str in self.loaded) and (module_str in sys.modules): 123 self.unload_extension(module_str) 124 mod = sys.modules[module_str] 125 with prepended_to_syspath(self.ipython_extension_dir): 126 reload(mod) 127 if self._call_load_ipython_extension(mod): 128 self.loaded.add(module_str) 129 else: 130 self.load_extension(module_str) 131 132 def _call_load_ipython_extension(self, mod): 133 if hasattr(mod, 'load_ipython_extension'): --> 134 mod.load_ipython_extension(self.shell) mod.load_ipython_extension = <function load_ipython_extension at 0x7f42605c8f70> self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f425ed46fa0> 135 return True 136 137 def _call_unload_ipython_extension(self, mod): 138 if hasattr(mod, 'unload_ipython_extension'): 139 mod.unload_ipython_extension(self.shell) 140 return True 141 142 @undoc 143 def install_extension(self, url, filename=None): 144 """ 145 Deprecated. 146 """ 147 # Ensure the extension directory exists 148 raise DeprecationWarning( 149 '`install_extension` and the `install_ext` magic have been deprecated since IPython 4.0' /usr/lib/python3/dist-packages/sage/__init__.py in load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,)) 1 __all__ = ['all'] 2 3 # Set sage.__version__ to the current version number. This is analogous 4 # to many other Python packages. 5 from sage.version import version as __version__ 6 7 import sys 8 # Make sure that the correct zlib library is loaded. This is needed 9 # to prevent the system zlib to be loaded instead of the Sage one. 10 # See https://trac.sagemath.org/ticket/23122 11 import zlib 12 13 # IPython calls this when starting up 14 def load_ipython_extension(*args): 15 import sage.repl.ipython_extension ---> 16 sage.repl.ipython_extension.load_ipython_extension(*args) sage.repl.ipython_extension.load_ipython_extension = <function load_ipython_extension at 0x7f425cc628b0> args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f425ed46fa0>,) 17 18 19 # Monkey-patch inspect.isfunction() to support Cython functions. 20 def isfunction(obj): 21 """ 22 Check whether something is a function. 23 24 We assume that anything which has a genuine ``__code__`` 25 attribute (not using ``__getattr__`` overrides) is a function. 26 This is meant to support Cython functions. 27 28 EXAMPLES:: 29 30 sage: from inspect import isfunction 31 sage: def f(): pass /usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={}) 548 ....: if work: 549 ....: return 'foo worked' 550 ....: raise RuntimeError("foo didn't work") 551 sage: foo(False) 552 Traceback (most recent call last): 553 ... 554 RuntimeError: foo didn't work 555 sage: foo(True) 556 'foo worked' 557 sage: foo(False) 558 sage: foo(True) 559 """ 560 @wraps(func) 561 def wrapper(*args, **kwargs): 562 if not wrapper.has_run: --> 563 result = func(*args, **kwargs) result = undefined global func = undefined args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f425ed46fa0>,) kwargs = {} 564 wrapper.has_run = True 565 return result 566 wrapper.has_run = False 567 return wrapper 568 569 570 @run_once 571 def load_ipython_extension(ip): 572 """ 573 Load the extension in IPython. 574 """ 575 # this modifies ip 576 SageCustomizations(shell=ip) /usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell object>) 561 def wrapper(*args, **kwargs): 562 if not wrapper.has_run: 563 result = func(*args, **kwargs) 564 wrapper.has_run = True 565 return result 566 wrapper.has_run = False 567 return wrapper 568 569 570 @run_once 571 def load_ipython_extension(ip): 572 """ 573 Load the extension in IPython. 574 """ 575 # this modifies ip --> 576 SageCustomizations(shell=ip) global SageCustomizations = <class 'sage.repl.ipython_extension.SageCustomizations'> global shell = undefined ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7f425ed46fa0> /usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>) 420 def __init__(self, shell=None): 421 """ 422 Initialize the Sage plugin. 423 """ 424 self.shell = shell 425 426 self.auto_magics = SageMagics(shell) 427 self.shell.register_magics(self.auto_magics) 428 429 import sage.misc.edit_module as edit_module 430 self.shell.set_hook('editor', edit_module.edit_devel) 431 432 self.init_inspector() 433 self.init_line_transforms() 434 --> 435 import sage.all # until sage's import hell is fixed sage.all = undefined 436 437 self.shell.verbose_quit = True 438 self.set_quit_hook() 439 440 self.register_interface_magics() 441 442 if SAGE_IMPORTALL == 'yes': 443 self.init_environment() 444 445 def register_interface_magics(self): 446 """ 447 Register magics for each of the Sage interfaces 448 """ 449 from sage.repl.interface_magic import InterfaceMagic 450 InterfaceMagic.register_all(self.shell) /usr/lib/python3/dist-packages/sage/all.py in <module> 127 from sage.misc.all import * # takes a while 128 from sage.typeset.all import * 129 from sage.repl.all import * 130 131 from sage.misc.sh import sh 132 133 from sage.libs.all import * 134 from sage.data_structures.all import * 135 from sage.doctest.all import * 136 137 from sage.structure.all import * 138 from sage.rings.all import * 139 from sage.arith.all import * 140 from sage.matrix.all import * 141 --> 142 from sage.symbolic.all import * global sage.symbolic.all = undefined 143 from sage.modules.all import * 144 from sage.monoids.all import * 145 from sage.algebras.all import * 146 from sage.modular.all import * 147 from sage.sat.all import * 148 from sage.schemes.all import * 149 from sage.graphs.all import * 150 from sage.groups.all import * 151 from sage.arith.power import generic_power as power 152 from sage.databases.all import * 153 from sage.categories.all import * 154 from sage.sets.all import * 155 from sage.probability.all import * 156 from sage.interfaces.all import * 157 /usr/lib/python3/dist-packages/sage/symbolic/all.py in <module> 1 from __future__ import absolute_import 2 ----> 3 from sage.libs.pynac.pynac import I global sage.libs.pynac.pynac = undefined global I = undefined 4 i = I 5 6 from .ring import SR 7 from .constants import (pi, e, NaN, golden_ratio, log2, euler_gamma, catalan, 8 khinchin, twinprime, mertens, glaisher) 9 from .expression import Expression, solve_diophantine, hold 10 from .callable import CallableSymbolicExpressionRing 11 12 from sage.symbolic.relation import solve, solve_mod, solve_ineq 13 from sage.symbolic.assumptions import assume, forget, assumptions, assuming 14 15 from .units import units 16 17 π = pi /usr/lib/python3/dist-packages/sage/libs/pynac/pynac.pyx in init sage.libs.pynac.pynac (build/cythonized/sage/libs/pynac/pynac.cpp:32185)() 2515 py_funcs.ex_to_pyExpression = &ex_to_pyExpression 2516 py_funcs.subs_args_to_PyTuple = &subs_args_to_PyTuple 2517 py_funcs.py_print_function = &py_print_function 2518 py_funcs.py_latex_function = &py_latex_function 2519 py_funcs.py_get_ginac_serial = &py_get_ginac_serial 2520 py_funcs.py_get_sfunction_from_serial = &py_get_sfunction_from_serial 2521 py_funcs.py_get_serial_from_sfunction = &py_get_serial_from_sfunction 2522 py_funcs.py_get_serial_for_new_sfunction = &py_get_serial_for_new_sfunction 2523 2524 py_funcs.py_get_constant = &py_get_constant 2525 py_funcs.py_print_fderivative = &py_print_fderivative 2526 py_funcs.py_latex_fderivative = &py_latex_fderivative 2527 py_funcs.paramset_to_PyTuple = ¶mset_to_PyTuple 2528 2529 init_function_table() -> 2530 init_pynac_I() global init_pynac_I = <built-in function init_pynac_I> 2531 2532 set_ginac_fn_serial() /usr/lib/python3/dist-packages/sage/libs/pynac/pynac.pyx in sage.libs.pynac.pynac.init_pynac_I (build/cythonized/sage/libs/pynac/pynac.cpp:27284)() 2417 <type 'sage.rings.number_field.number_field_element_quadratic.NumberFieldElement_quadratic'> 2418 2419 Check that :trac:`10064` is fixed:: 2420 2421 sage: y = I*I*x / x # so y is the expression -1 2422 sage: y.is_positive() 2423 False 2424 sage: z = -x / x 2425 sage: z.is_positive() 2426 False 2427 sage: bool(z == y) 2428 True 2429 """ 2430 global pynac_I, I 2431 from sage.rings.number_field.number_field import QuadraticField -> 2432 K = QuadraticField(-1, 'I', embedding=CC.gen(), latex_name='i') global K = undefined global QuadraticField = undefined global embedding = undefined global CC.gen = <bound method ComplexField_class.gen of Complex Field with 53 bits of precision> global latex_name = undefined 2433 pynac_I = K.gen() 2434 ginac_pyinit_I(pynac_I) 2435 I = new_Expression_from_GEx(ring.SR, g_I) 2436 2437 2438 def init_function_table(): 2439 """ 2440 Initializes the function pointer table in Pynac. This must be 2441 called before Pynac is used; otherwise, there will be segfaults. 2442 """ 2443 2444 py_funcs.py_gcd = &py_gcd 2445 py_funcs.py_lcm = &py_lcm 2446 py_funcs.py_real = &py_real 2447 py_funcs.py_imag = &py_imag /usr/lib/python3/dist-packages/sage/rings/number_field/number_field.py in QuadraticField(D=-1, name='I', check=True, embedding=1.00000000000000*I, latex_name='i', **args={}) 965 D = QQ(D) 966 if check: 967 if D.is_square(): 968 raise ValueError("D must not be a perfect square.") 969 R = QQ['x'] 970 f = R([-D, 0, 1]) 971 if embedding is True: 972 if D > 0: 973 embedding = RLF(D).sqrt() 974 else: 975 embedding = CLF(D).sqrt() 976 elif embedding is False: 977 embedding = None 978 if latex_name == 'sqrt': 979 latex_name = r'\sqrt{%s}' % D --> 980 return NumberField(f, name, check=False, embedding=embedding, latex_name=latex_name, **args) global NumberField = <function NumberField at 0x7f41c559af70> f = x^2 + 1 name = 'I' check = True embedding = 1.00000000000000*I latex_name = 'i' args = {} 981 982 def is_AbsoluteNumberField(x): 983 """ 984 Return True if x is an absolute number field. 985 986 EXAMPLES:: 987 988 sage: from sage.rings.number_field.number_field import is_AbsoluteNumberField 989 sage: is_AbsoluteNumberField(NumberField(x^2+1,'a')) 990 True 991 sage: is_AbsoluteNumberField(NumberField([x^3 + 17, x^2+1],'a')) 992 False 993 994 The rationals are a number field, but they're not of the absolute 995 number field class. /usr/lib/python3/dist-packages/sage/rings/number_field/number_field.py in NumberField(polynomial=x^2 + 1, name='I', check=False, names=None, embedding=1.00000000000000*I, latex_name='i', assume_disc_small=False, maximize_at_primes=None, structure=None, latex_names=None, **kwds={}) 543 [0 0 0 1] 544 [2 0 0 0] 545 """ 546 if names is not None: 547 name = names 548 if latex_names is not None: 549 latex_name = latex_names 550 for key, val in kwds.items(): 551 if key not in ['implementation', 'prec']: 552 raise TypeError("NumberField() got an unexpected keyword argument '%s'"%key) 553 if not (val is None or isinstance(val, list) and all(c is None for c in val)): 554 raise NotImplementedError("Number field with prescribed %s is not implemented"%key) 555 if isinstance(polynomial, (list,tuple)): 556 return NumberFieldTower(polynomial, names=name, check=check, embeddings=embedding, latex_names=latex_name, assume_disc_small=assume_disc_small, maximize_at_primes=maximize_at_primes, structures=structure) 557 --> 558 return NumberField_version2(polynomial=polynomial, name=name, check=check, embedding=embedding, latex_name=latex_name, assume_disc_small=assume_disc_small, maximize_at_primes=maximize_at_primes, structure=structure) global NumberField_version2 = <sage.rings.number_field.number_field.NumberFieldFactory object at 0x7f41c515b4f0> polynomial = x^2 + 1 name = 'I' check = False embedding = 1.00000000000000*I latex_name = 'i' assume_disc_small = False maximize_at_primes = None structure = None 559 560 class NumberFieldFactory(UniqueFactory): 561 r""" 562 Factory for number fields. 563 564 This should usually not be called directly, use :meth:`NumberField` 565 instead. 566 567 INPUT: 568 569 - ``polynomial`` - a polynomial over `\QQ` or a number field. 570 - ``name`` - a string (default: ``'a'``), the name of the generator 571 - ``check`` - a boolean (default: ``True``); do type checking and 572 irreducibility checking. 573 - ``embedding`` - ``None`` or an element, the images of the generator /usr/lib/python3/dist-packages/sage/structure/factory.pyx in sage.structure.factory.UniqueFactory.__call__ (build/cythonized/sage/structure/factory.c:2257)() 354 It already created one, so don't re-create:: 355 356 sage: test_factory(1,2,3) 357 <sage.structure.test_factory.A object at ...> 358 sage: test_factory(1,2,3) is test_factory(1,2,3) 359 True 360 361 Of course, with a different key, a new object will be created:: 362 363 sage: test_factory(1,2,3) is test_factory(1,2,4) 364 Making object (1, 2, 4) 365 False 366 """ 367 key, kwds = self.create_key_and_extra_args(*args, **kwds) 368 version = self.get_version(sage_version) --> 369 return self.get_object(version, key, kwds) global self.get_object = undefined global version = undefined global key = undefined global kwds = undefined 370 371 cpdef get_object(self, version, key, extra_args): 372 """ 373 Returns the object corresponding to ``key``, creating it with 374 ``extra_args`` if necessary (for example, it isn't in the cache 375 or it is unpickling from an older version of Sage). 376 377 EXAMPLES:: 378 379 sage: from sage.structure.test_factory import test_factory 380 sage: a = test_factory.get_object(3.0, 'a', {}); a 381 Making object a 382 <sage.structure.test_factory.A object at ...> 383 sage: test_factory.get_object(3.0, 'a', {}) is test_factory.get_object(3.0, 'a', {}) 384 True /usr/lib/python3/dist-packages/sage/structure/factory.pyx in sage.structure.factory.UniqueFactory.get_object (build/cythonized/sage/structure/factory.c:2464)() 391 392 TESTS: 393 394 Check that :trac:`16317` has been fixed, i.e., caching works for 395 unhashable objects:: 396 397 sage: K.<u> = Qq(4) 398 sage: test_factory.get_object(3.0, (K(1), 'c'), {}) is test_factory.get_object(3.0, (K(1), 'c'), {}) 399 Making object (1 + O(2^20), 'c') 400 True 401 402 """ 403 cache_key = key 404 try: 405 try: --> 406 return self._cache[version, cache_key] global self._cache = undefined global version = undefined global cache_key = undefined 407 except TypeError: # key is unhashable 408 cache_key = _cache_key(cache_key) 409 return self._cache[version, cache_key] 410 except KeyError: 411 pass 412 obj = self.create_object(version, key, **extra_args) 413 self._cache[version, cache_key] = obj 414 try: 415 for key in self.other_keys(key, obj): 416 try: 417 self._cache[version, key] = obj 418 except TypeError: # key is unhashable 419 self._cache[version, _cache_key(key)] = obj 420 obj._factory_data = self, version, key, extra_args 421 /usr/lib/python3/dist-packages/sage/misc/weak_dict.pyx in sage.misc.weak_dict.WeakValueDictionary.__getitem__ (build/cythonized/sage/misc/weak_dict.c:3685)() 687 688 sage: D[10] = ZZ 689 sage: D[int(10)] 690 Integer Ring 691 692 Check that :trac:`15956` has been fixed, i.e., a ``TypeError`` is 693 raised for unhashable objects:: 694 695 sage: D = sage.misc.weak_dict.WeakValueDictionary() 696 sage: D[matrix([])] 697 Traceback (most recent call last): 698 ... 699 TypeError: mutable matrices are unhashable 700 701 """ --> 702 cdef PyObject* wr = PyDict_GetItemWithError(self, k) global cdef = undefined global PyObject = undefined global wr = undefined global PyDict_GetItemWithError = undefined global self = undefined global k = undefined 703 if wr == NULL: 704 raise KeyError(k) 705 out = PyWeakref_GetObject(wr) 706 if out == Py_None: 707 raise KeyError(k) 708 return <object>out 709 710 def __contains__(self, k): 711 """ 712 Containment in the set of keys. 713 714 TESTS:: 715 716 sage: import sage.misc.weak_dict 717 sage: class Vals(object): pass /usr/lib/python3/dist-packages/sage/rings/real_lazy.pyx in sage.rings.real_lazy.LazyFieldElement.__hash__ (build/cythonized/sage/rings/real_lazy.c:9288)() 673 except TypeError: 674 pass 675 left, right = self.approx(), other.approx() 676 return richcmp(left.endpoints(), right.endpoints(), op) 677 678 def __hash__(self): 679 """ 680 Return the hash value of ``self``. 681 682 EXAMPLES:: 683 684 sage: a = RLF(3) 685 sage: hash(a) 686 3 687 """ --> 688 return hash(complex(self)) global hash = undefined global complex = undefined global self = undefined 689 690 cdef LazyFieldElement _new_wrapper(self, value): 691 cdef LazyWrapper e = <LazyWrapper>LazyWrapper.__new__(LazyWrapper) 692 e._parent = self._parent 693 e._value = value 694 return e 695 696 cdef LazyFieldElement _new_binop(self, LazyFieldElement left, LazyFieldElement right, op): 697 cdef LazyBinop e = <LazyBinop>LazyBinop.__new__(LazyBinop) 698 e._parent = self._parent 699 e._left = left 700 e._right = right 701 e._op = op 702 return e 703 /usr/lib/python3/dist-packages/sage/rings/real_lazy.pyx in sage.rings.real_lazy.LazyFieldElement.__complex__ (build/cythonized/sage/rings/real_lazy.c:10067)() 787 """ 788 return self.eval(R) 789 790 _real_mpfi_ = _complex_mpfi_ =_mpfr_ = _complex_mpfr_field_ = _generic_ 791 792 def __complex__(self): 793 """ 794 Return ``self`` as a complex. 795 796 EXAMPLES:: 797 798 sage: complex(CLF(-1)^(1/4)) 799 (0.707106781186547...+0.707106781186547...j) 800 """ 801 try: --> 802 return self.eval(complex) global self.eval = undefined global complex = undefined 803 except Exception: 804 from .complex_field import ComplexField 805 return complex(self.eval(ComplexField(53))) 806 807 cpdef eval(self, R): 808 """ 809 Abstract method for converting ``self`` into an element of ``R``. 810 811 EXAMPLES:: 812 813 sage: a = RLF(12) 814 sage: a.eval(ZZ) 815 12 816 """ 817 raise NotImplementedError("Subclasses must override this method.") /usr/lib/python3/dist-packages/sage/rings/real_lazy.pyx in sage.rings.real_lazy.LazyAlgebraic.eval (build/cythonized/sage/rings/real_lazy.c:18284)() 1612 sage: from sage.rings.real_lazy import LazyAlgebraic 1613 sage: a = LazyAlgebraic(CLF, QQ['x'].cyclotomic_polynomial(7), 0.6+0.8*CC.0) 1614 sage: a 1615 0.6234898018587335? + 0.7818314824680299?*I 1616 sage: ComplexField(150)(a) # indirect doctest 1617 0.62348980185873353052500488400423981063227473 + 0.78183148246802980870844452667405775023233452*I 1618 1619 sage: a = LazyAlgebraic(CLF, QQ['x'].0^2-7, -2.0) 1620 sage: RR(a) 1621 -2.64575131106459 1622 sage: RR(a)^2 1623 7.00000000000000 1624 """ 1625 if isinstance(R, type): 1626 if self._prec < 53: -> 1627 self.eval(self.parent().interval_field(64)) # up the prec global self.eval = undefined global self.parent.interval_field = undefined 1628 elif R.is_exact() or self._prec < R.prec(): 1629 # Carl Witty said: 1630 # Quadratic equation faster and more accurate than roots(), 1631 # but the current code doesn't do the right thing with interval 1632 # arithmetic (it returns a point interval) so it's being disabled 1633 # for now 1634 # if self._quadratic_disc is not None: 1635 # c, b, a = self._poly.list() 1636 # if self._root_approx.real() < -b/2*a: 1637 # z = (-b - R(self._quadratic_disc).sqrt()) / (2*a) 1638 # else: 1639 # z = (-b + R(self._quadratic_disc).sqrt()) / (2*a) 1640 # if z.parent() is not R: 1641 # z = R(z) 1642 # self._root_approx = z /usr/lib/python3/dist-packages/sage/rings/real_lazy.pyx in sage.rings.real_lazy.LazyAlgebraic.eval (build/cythonized/sage/rings/real_lazy.c:18435)() 1638 # else: 1639 # z = (-b + R(self._quadratic_disc).sqrt()) / (2*a) 1640 # if z.parent() is not R: 1641 # z = R(z) 1642 # self._root_approx = z 1643 # from sage.rings.complex_interval_field import is_IntervalField 1644 # if is_IntervalField(R): 1645 # self._root_approx = (self._root_approx.upper() + self._root_approx.lower()) / 2 1646 # self._prec = R.prec() 1647 # return R(self._root_approx) 1648 if self._root is None: 1649 # This could be done much more efficiently with Newton iteration, 1650 # but will require some care to make sure we get the right root, and 1651 # to the correct precision. 1652 from sage.rings.qqbar import AA, QQbar -> 1653 roots = self._poly.roots(ring = AA if isinstance(self._parent, RealLazyField_class) else QQbar) global roots = undefined global self._poly.roots = undefined global ring = undefined global AA = undefined global isinstance = undefined global self._parent = undefined global RealLazyField_class = <class 'sage.rings.real_lazy.RealLazyField_class'> global QQbar = undefined 1654 best_root = roots[0][0] 1655 min_dist = abs(self._root_approx - best_root) 1656 for r, e in roots[1:]: 1657 dist = abs(self._root_approx - r) 1658 if dist < min_dist: 1659 best_root = r 1660 min_dist = dist 1661 self._root = best_root 1662 if self._root is not None: 1663 return R(self._root) 1664 1665 def __float__(self): 1666 """ 1667 TESTS:: 1668 /usr/lib/python3/dist-packages/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial.roots (build/cythonized/sage/rings/polynomial/polynomial_element.c:64123)() 7895 7896 if multiplicities: 7897 return rts 7898 else: 7899 return [rt for (rt, mult) in rts] 7900 7901 if (is_IntegerRing(K) or is_RationalField(K) 7902 or is_AlgebraicField_common(K) or input_gaussian) and \ 7903 (is_ComplexIntervalField(L) or is_AlgebraicField_common(L)): 7904 7905 from sage.rings.polynomial.complex_roots import complex_roots 7906 7907 if is_ComplexIntervalField(L): 7908 rts = complex_roots(self, min_prec=L.prec()) 7909 elif is_AlgebraicField(L): -> 7910 rts = complex_roots(self, retval='algebraic') global rts = undefined global complex_roots = undefined global self = undefined global retval = undefined 7911 else: 7912 rts = complex_roots(self, retval='algebraic_real') 7913 7914 if multiplicities: 7915 return rts 7916 else: 7917 return [rt for (rt, mult) in rts] 7918 7919 if output_fp and output_complex and not input_gaussian: 7920 # If we want the complex roots, and the input is not 7921 # floating point, we convert to a real polynomial 7922 # (except when the input coefficients are Gaussian rationals). 7923 if is_ComplexDoubleField(L): 7924 real_field = RDF 7925 else: /usr/lib/python3/dist-packages/sage/rings/polynomial/complex_roots.py in complex_roots(p=x^2 + 1, skip_squarefree=False, retval='algebraic', min_prec=0) 243 if skip_squarefree: 244 factors = [(p, 1)] 245 else: 246 factors = p.squarefree_decomposition() 247 248 prec = 53 249 while True: 250 CC = ComplexField(prec) 251 CCX = CC['x'] 252 253 all_rts = [] 254 ok = True 255 256 for (factor, exp) in factors: 257 cfac = CCX(factor) --> 258 rts = cfac.roots(multiplicities=False) rts = undefined cfac.roots = <built-in method roots of PolynomialRing_field_with_category.element_class object at 0x7f41bfd829a0> global multiplicities = undefined 259 # Make sure the number of roots we found is the degree. If 260 # we don't find that many roots, it's because the 261 # precision isn't big enough and though the (possibly 262 # exact) polynomial "factor" is squarefree, it is not 263 # squarefree as an element of CCX. 264 if len(rts) < factor.degree(): 265 ok = False 266 break 267 irts = interval_roots(factor, rts, max(prec, min_prec)) 268 if irts is None: 269 ok = False 270 break 271 if retval != 'interval': 272 factor = QQbar.common_polynomial(factor) 273 for irt in irts: /usr/lib/python3/dist-packages/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial.roots (build/cythonized/sage/rings/polynomial/polynomial_element.c:61454)() 7801 ext_rts1 = numpy.roots(numpy_array) 7802 rts = [] 7803 for rt in ext_rts1: 7804 rts.append(CDF(rt)) 7805 rts.sort() 7806 ext_rts = rts 7807 except (ValueError, LinAlgError): 7808 if algorithm == 'either': 7809 algorithm = 'pari' 7810 else: 7811 raise 7812 7813 if algorithm == 'pari': 7814 if not input_arbprec: 7815 self = self.change_ring(CC if input_complex else RR) -> 7816 ext_rts = self.__pari__().polroots(precision=L.prec()) global ext_rts = undefined global self.__pari__.polroots = undefined global precision = undefined global L.prec = undefined 7817 7818 if output_complex: 7819 rts = sort_complex_numbers_for_display([L(root) for root in ext_rts]) 7820 else: 7821 rts = sorted([L(root.real()) for root in ext_rts if root.imag() == 0]) 7822 7823 rts_mult = [] 7824 j = 0 7825 while j < len(rts): 7826 rt = rts[j] 7827 mult = rts.count(rt) 7828 rts_mult.append((rt, mult)) 7829 j += mult 7830 7831 if multiplicities: /usr/lib/python3/dist-packages/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial.__pari__ (build/cythonized/sage/rings/polynomial/polynomial_element.c:49914)() 6098 sage: R.<x> = S['x'] 6099 sage: pari(x^2 + 9*x) 6100 x^2 + 2*x 6101 sage: pari(a*x + 9*b*x^3) 6102 2*b*x^3 + a*x 6103 6104 :: 6105 6106 sage: S.<a> = Integers(8)['a'] 6107 sage: R.<x> = S['x'] 6108 sage: pari(x^2 + 2*x) 6109 Mod(1, 8)*x^2 + Mod(2, 8)*x 6110 sage: pari(a*x + 10*x^3) 6111 Mod(2, 8)*x^3 + Mod(1, 8)*a*x 6112 """ -> 6113 return self._pari_with_name(self._parent.variable_name()) global self._pari_with_name = undefined global self._parent.variable_name = undefined 6114 6115 def _pari_or_constant(self, name=None): 6116 r""" 6117 Convert ``self`` to PARI. This behaves identical to :meth:`__pari__` 6118 or :meth:`_pari_with_name` except for constant polynomials: 6119 then the constant is returned instead of a constant polynomial. 6120 6121 INPUT: 6122 6123 - ``name`` -- (default: None) Variable name. If not given, use 6124 ``self.parent().variable_name()``. This argument is irrelevant 6125 for constant polynomials. 6126 6127 EXAMPLES:: 6128 /usr/lib/python3/dist-packages/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial._pari_with_name (build/cythonized/sage/rings/polynomial/polynomial_element.c:50319)() 6151 def _pari_with_name(self, name='x'): 6152 r""" 6153 Return polynomial as a PARI object with topmost variable 6154 ``name``. By default, use 'x' for the variable name. 6155 6156 For internal use only. 6157 6158 EXAMPLES:: 6159 6160 sage: R.<a> = PolynomialRing(ZZ) 6161 sage: (2*a^2 + a)._pari_with_name() 6162 2*x^2 + x 6163 sage: (2*a^2 + a)._pari_with_name('y') 6164 2*y^2 + y 6165 """ -> 6166 vals = [x.__pari__() for x in self.list()] global vals = undefined global x.__pari__ = undefined global x = undefined global self.list = undefined 6167 return pari(vals).Polrev(name) 6168 6169 def _pari_init_(self): 6170 return repr(self.__pari__()) 6171 6172 def _magma_init_(self, magma): 6173 """ 6174 Return a string that evaluates in Magma to this polynomial. 6175 6176 EXAMPLES:: 6177 6178 sage: magma = Magma() # new session 6179 sage: R.<y> = ZZ[] 6180 sage: f = y^3 - 17*y + 5 6181 sage: f._magma_init_(magma) # optional - magma /usr/lib/python3/dist-packages/sage/rings/complex_number.pyx in sage.rings.complex_number.ComplexNumber.__pari__ (build/cythonized/sage/rings/complex_number.c:7535)() 634 <type 'cypari2.gen.Gen'> 635 sage: a.__pari__() 636 2.00000000000000 + 1.00000000000000*I 637 sage: type(a.__pari__()) 638 <type 'cypari2.gen.Gen'> 639 sage: a = CC(pi) 640 sage: pari(a) 641 3.14159265358979 642 sage: pari(a).type() 643 't_REAL' 644 sage: a = CC(-2).sqrt() 645 sage: pari(a) 646 1.41421356237310*I 647 """ 648 if self.is_real(): --> 649 return self.real().__pari__() global self.real.__pari__ = undefined 650 return sage.libs.pari.all.pari.complex(self.real() or 0, self.imag()) 651 652 def __mpc__(self): 653 """ 654 Convert Sage ``ComplexNumber`` to gmpy2 ``mpc``. 655 656 EXAMPLES:: 657 658 sage: c = ComplexNumber(2,1) 659 sage: c.__mpc__() 660 mpc('2.0+1.0j') 661 sage: from gmpy2 import mpc 662 sage: mpc(c) 663 mpc('2.0+1.0j') 664 sage: CF = ComplexField(134) /usr/lib/python3/dist-packages/sage/rings/real_mpfr.pyx in sage.rings.real_mpfr.RealNumber.__pari__ (build/cythonized/sage/rings/real_mpfr.c:22906)() 3280 cdef int prec 3281 prec = (<RealField_class>self._parent).__prec 3282 3283 # We round up the precision to the nearest multiple of wordsize. 3284 cdef int rounded_prec 3285 rounded_prec = (self.prec() + wordsize - 1) & ~(wordsize - 1) 3286 3287 # Yes, assigning to self works fine, even in Cython. 3288 if rounded_prec > prec: 3289 self = RealField(rounded_prec)(self) 3290 3291 cdef mpz_t mantissa 3292 cdef mp_exp_t exponent 3293 cdef GEN pari_float 3294 -> 3295 sig_on() global sig_on = undefined 3296 if mpfr_zero_p(self.value): 3297 pari_float = real_0_bit(-rounded_prec) 3298 else: 3299 # Now we can extract the mantissa, and it will be normalized 3300 # (the most significant bit of the most significant word will be 1). 3301 mpz_init(mantissa) 3302 exponent = mpfr_get_z_exp(mantissa, self.value) 3303 3304 # Create a PARI REAL 3305 pari_float = cgetr(2 + rounded_prec / wordsize) 3306 pari_float[1] = evalexpo(exponent + rounded_prec - 1) + evalsigne(mpfr_sgn(self.value)) 3307 mpz_export(&pari_float[2], NULL, 1, wordsize // 8, 0, 0, mantissa) 3308 mpz_clear(mantissa) 3309 3310 return new_gen(pari_float) SignalError: Segmentation fault *************************************************************************** History of session input: *** Last line of input (may not be in above history):