GithubHelp home page GithubHelp logo

thomasbreuer / chevie.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jmichel7/chevie.jl

1.0 1.0 0.0 12.44 MB

Port to Julia of the Gap3 package Chevie

Home Page: https://jmichel7.github.io/Chevie.jl/

License: Other

Julia 100.00% Makefile 0.01%

chevie.jl's Introduction

Chevie.jl

This is my attempt to port the Chevie package from GAP3 to Julia. I started this project at the end of 2018 and it is still in flux so some function names or interfaces may still change. Pull requests and issues are welcome.

I have implemented the GAP functionality (infrastructure) needed to make Chevie work. I have already registered most of this infrastructure as separate packages; the following packages are loaded and re-exported so that their functionality is automatically available when you use Chevie. In other words, Chevie is a meta-package for the following packages:

Have a look at the documentation of the above packages to see how to use their features.

I have implemented some other infrastructure which currently resides in Chevie but may eventually become separate packages:

  • factorizing polynomials over finite fields (module FFfac)
  • factorizing polynomials over the rationals (module Fact)
  • Number fields which are subfields of the Cyclotomics (module Nf)

For permutation groups I have often replaced GAP's sophisticated algorithms with naive but easy-to-write methods suitable only for small groups (sufficient for the rest of the package but perhaps not for your needs). Otherwise the infrastructure code is often competitive with GAP, despite using much less code (often 100 lines of Julia replace 1000 lines of C); and I am sure it could be optimised better than I did. Comments on code and design are welcome. For functions that are too inefficient or difficult to implement (such as character tables of arbitrary groups), Chevie uses the GAP package as an extension. This means that if you have the GAP package installed, Chevie will automatically call GAP to implement these functions.

Functions in the Chevie.jl package are often 10 times faster than the equivalent functions in GAP3/Chevie (after the maddeningly long compilation time on the first run --- Julia's TTFP).

The Chevie package currently contains about 95% of the GAP3 Chevie functionality. If you are a user of GAP3/Chevie, the gap function can help you to find the equivalent functionality in Chevie.jl to a Gap3 function: it takes a string and gives you Julia translations of functions in Gap3 that match that string.

julia> gap("words")
CharRepresentationWords  =>  traces_words_mats
CoxeterWords(W[,l])      =>  word.(Ref(W),elements(W[,l]))
GarsideWords             =>  elements

You can then access online help for the functions you have found.

The port to Julia is not complete in the sense that 80% of the code is the data library from Chevie, which was automatically ported by a transpiler so its code is "strange". When the need to maintain the GAP3 and Julia versions simultaneously subsides, I will do a proper translation of the data library, which should give an additional speed boost.

Installing

This is a registered package that can be installed/upgraded in the standard way. For Julia newbies, we will remind you what this is. To install, do this at the REPL command line:

  • enter package mode with ]
  • do the command
(@v1.10) pkg> add Chevie
  • exit package mode with backspace and then do
julia> using Chevie

and you are set up. For first help, type "?Chevie".

To update later to the latest version, do

(@v1.10) pkg> update

Chevie.jl requires julia 1.10 or later.

chevie.jl's People

Contributors

blegat avatar jmichel7 avatar tlienart avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.