GiNaC | Special purpose C library for symbolic computations | Cryptography library

 by   AlexeiSheplyakov C++ Version: Current License: GPL-2.0

kandi X-RAY | GiNaC Summary

kandi X-RAY | GiNaC Summary

GiNaC is a C++ library typically used in Security, Cryptography, Ethereum applications. GiNaC has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has low support. You can download it from GitHub.

GiNaC (which stands for "GiNaC is Not a CAS" (computer algebra system)) is a C++ library for symbolic mathematical calculations. It is designed to allow the creation of integrated systems that embed symbolic manipulations together with more established areas of computer science (like computation-intense numeric applications, graphical interfaces, etc.) under one roof. The official ftp site is: The official web site is: A mailing list is located at: You need to be subscribed to be able to post to the list. To subscribe, please follow the instructions on See for the list policy.

            kandi-support Support

              GiNaC has a low active ecosystem.
              It has 38 star(s) with 5 fork(s). There are 3 watchers for this library.
              It had no major release in the last 6 months.
              GiNaC has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of GiNaC is current.

            kandi-Quality Quality

              GiNaC has no bugs reported.

            kandi-Security Security

              GiNaC has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              GiNaC is licensed under the GPL-2.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              GiNaC releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of GiNaC
            Get all kandi verified functions for this library.

            GiNaC Key Features

            No Key Features are available at this moment for GiNaC.

            GiNaC Examples and Code Snippets

            No Code Snippets are available at this moment for GiNaC.

            Community Discussions


            Qt external library duplicate symbols linking error
            Asked 2020-Jan-07 at 01:54

            This is my first question on here so please bear with.

            I need to add an external library to my qt project in the form of a header file and .so file. If I include the header file (figure.h) only in main.cpp the program compiles and works as intended. If I include the header file only in scene.cpp the program again compiles. However when I go to add the header file to scene.h the compiler states that there are duplicate symbols, even though the header file hasn't been included anywhere else in the project. Is there anyone that could help out? This has had me stumped for a while.

            .pro file:



            Answered 2018-Jul-29 at 12:24

            You can't define global variables in a header file. For example you have:



            Binary splitting in Pari/GP
            Asked 2019-Aug-15 at 22:26

            While trying to implement a sine-function without a FPU I recognized that all of the input is already rational, so I decided to try an all-rational approach. Probably slower but: why not? The series is linearly convergent and hence has a chance for a runtime-optimization with binary-splitting. There is even highly detailed literature for how to do it and which I used.

            So far, so good.

            My prototyping tool for numerical algorithms is Pari/GP, so I ported the code from the paper mentioned above to Pari/GP and, as you might have guessed from the fact that I post a question here, it did not work. Well, it did work but it was not possible to minimize the error. The paper has several other recipes for different functions but all showed the same behavior. Assuming a typo in the paper I checked the author's implementation in CLN. Heavily optimized but is based on the code in the paper, quite verbatim even.

            To get a MWE I used their recipe for exp(p/q) (the simplest recipe besides the factorial) and simplified the Pari/GP code.



            Answered 2019-Aug-15 at 19:22

            You are going to hate yourself/PARI for this (but love stack-overflow).

            In the first line you have:



            Is there a way to take a number as a string, and without using float or double, round it to the exact number of digits?
            Asked 2019-Apr-06 at 23:13

            I have a very large Decimal number as a string, it cannot be accurately represented by a float or double, so I cannot use any function that works with numbers, I have to keep my number as string, and do all functions with strings.

            For example: PI:



            Answered 2019-Apr-04 at 19:27

            Given you need precise decimal places, all of the libraries you mentioned are either out of bounds or will require setting absurd levels of precision to guarantee your results are rounded accurately.

            The problem is they're all based on binary floating point, so when you specify a precision, e.g. with mpf_set_default_prec in GMP/MPIR (or the equivalent call in MPFR, a fork of GMP that provides more guarantees on exact, portable precision), you're saying how many bits will be used for the significand (roughly, how many bits of integer precision exist before it is scaled by the exponent). While there is a rough correspondence to decimal precision (so using four bits of significand for every one decimal digit of precision needed is usually good enough for most purposes), the lack of decimal precision means explicit output rounding is always needed to avoid false precision, and there is always the risk of inconsistent rounding: a number that logically ends in 5 and should be subjected to rounding rules like round half-even, round half-up or round half-down might end up with false precision that makes it appear to not end exactly with 5, so the rounding rules aren't applied.

            What you want is a decimal math library, like Java's BigDecimal, Python's decimal, etc. The C/C++ standard library for this is libmpdec, the core of the mpdecimal package (on Python 3.3+, this is the backend for the decimal module, so you can experiment with its behavior on Python before committing to using it in your C/C++ project). Since it's decimal based, you have guaranteed precision levels; if you set the precision to 4 and mode to ROUND_HALF_EVEN, then parsing "XX.X45" will consistently produce "XX.X4", while "XX.X75" will consistently produce "XX.X8" (the final 5 rounds the next digit to even numbers). You can also "quantize" to round to a specific precision after the decimal point (so your precision might be 100 to allow for 100 digits combined on left and right hand sides of the decimal point, but you can quantize relative to "0.0000" to force rounding of the right hand of the decimal to exactly four digits).

            Point is, if you want to perform exact decimal rounding of strings representing numbers in the reals in C/C++, take a look at libmpdec.

            For your particular use case, a Python version of the code (using the moneyfmt recipe, because formatting numbers like "1.1E-26" to avoid scientific notation is a pain) would look roughly like:



            C++ weird third-party function constructor
            Asked 2019-Mar-09 at 19:40

            I have a third-party library, and I want to use one of the supplied constructors.




            Answered 2017-Mar-27 at 16:02

            You need to provide an ex reference, not a symbol reference; Try this:



            How to download older version of ginac through git
            Asked 2019-Mar-09 at 19:13

            I want to download older libraries from a git repository to desktop. How one does it? For example I am trying to download ginac_1-6-5 from



            Answered 2017-Mar-02 at 04:10
            1. Clone the repository.

            The link you gave is to the web interface to the repository. The actual repo is at git://



            Compiling C++ code to static library (.a)
            Asked 2017-Mar-16 at 16:41

            So i asked some questions before regarding this, but i think i am finally getting closer to my goal of using a C++ Library in a Swift iOS Project. I have downloaded a C++ Library as tar.gz. To use this library i am supposed to install it on my computer using make, but i want it as a a static library (.a to my knowledge) to use it in a Swift App. I know how to use C++ in a Swift project thats working and running. But i can't find any helpful advice on how to compile this source to a static Library. You can download the Library here. I just need it in a .a file and don't really know how to start. Everything i am finding is using headers and things i absolutely do not know. Please excuse my confusion, I am an absolute newbie in C++.

            Thanks a lot for future advice =)

            And this is the structure of the archive.



            Answered 2017-Mar-16 at 16:41

            You need to compile the code and link it with your compiler. Suggested steps:

            1. Run make in the top-most folder of the source code

            2. Find the location of the library file by running find . -type f | grep "\.a$" in the terminal.

            3. Add the path to the library file in your IDE or compiler.


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install GiNaC

            See the file "INSTALL".


            If you have identified a bug in GiNaC you are welcome to send a detailed bug report to <>. Please think about your bug! This means that you should include. Patches are most welcome. If possible please make them with diff -c and include ChangeLog entries.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone AlexeiSheplyakov/GiNaC

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Cryptography Libraries


            by dogecoin


            by google


            by brix


            by Ciphey


            by jedisct1

            Try Top Libraries by AlexeiSheplyakov


            by AlexeiSheplyakovC


            by AlexeiSheplyakovShell