shivamvats / ccas

A simple CAS written in C.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CCAS v0.1
---------

A simple CAS written entirely in C.

The aim of the library is to implement asymptotically fast algorithms, but not
to do any insane optimisations. All the code is maximally readable, for
teaching purposes.

We try to have classical algorithms, algorithms with divide and conquer
complexity and algorithms with optimal asymptotics, e.g. FFT style algorithms.

Currently Toom-Cook and Lehmer GCD are not implemented. It is questionable
whether these belong in a library focused on simplicity.

File structure is as follows:

   config.h - build options, e.g. whether asserts should be used
   ccas.h - platform dependent defines and macros and type definitions
   wide.h - routines for arithmetic involving double width integers
   nn/ - routines for arithmetic of multiprecision natural numbers
   zz/ - routines for arithmetic of multiprecision integers
   fft/ - fast fourier transform convolution routines
   rand/ - routines for generating random words
   Poly/ - routines for generic polynomials
   parent/ - creating/handling of parent objects

Performance measurements suggest that with asserts turned on (see config.h)
the code is approximately 5-10 times slower than GMP up to operations with
a billion bits or so (where cache misses start to slow things down a lot).

There are sure to be many bugs currently. There is no test code. Do not rely
on this code for anything important.

William Hart - 2015.

About

A simple CAS written in C.

License:BSD 2-Clause "Simplified" License


Languages

Language:C 93.9%Language:C++ 5.4%Language:Makefile 0.7%