Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
29171: move giacpy_sage into Sage source code
Browse files Browse the repository at this point in the history
  • Loading branch information
videlec authored and Matthias Koeppe committed Aug 11, 2020
1 parent 415221a commit d095c37
Show file tree
Hide file tree
Showing 13 changed files with 6,715 additions and 49 deletions.
31 changes: 0 additions & 31 deletions build/pkgs/giacpy_sage/SPKG.rst

This file was deleted.

4 changes: 0 additions & 4 deletions build/pkgs/giacpy_sage/checksums.ini

This file was deleted.

6 changes: 0 additions & 6 deletions build/pkgs/giacpy_sage/dependencies

This file was deleted.

1 change: 0 additions & 1 deletion build/pkgs/giacpy_sage/package-version.txt

This file was deleted.

3 changes: 0 additions & 3 deletions build/pkgs/giacpy_sage/spkg-check.in

This file was deleted.

3 changes: 0 additions & 3 deletions build/pkgs/giacpy_sage/spkg-install.in

This file was deleted.

1 change: 0 additions & 1 deletion build/pkgs/giacpy_sage/type

This file was deleted.

4 changes: 4 additions & 0 deletions src/module_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,10 @@
Extension('sage.libs.flint.arith',
sources = ["sage/libs/flint/arith.pyx"]),

Extension('sage.libs.giac.giac',
sources = ["sage/libs/giac/giac.pyx"],
libraries = ["giac"]),

Extension("sage.libs.glpk.error",
["sage/libs/glpk/error.pyx"]),

Expand Down
Empty file added src/sage/libs/giac/__init__.py
Empty file.
202 changes: 202 additions & 0 deletions src/sage/libs/giac/giac.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
# distutils: language = c++
# ****************************************************************************
# Copyright (C) 2012, Frederic Han <frederic.han@imj-prg.fr>
# 2020, Vincent Delecroix <20100.delecroix@gmail.com>
#
# Distributed under the terms of the GNU General Public License (GPL)
# as published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
# https://www.gnu.org/licenses/
#*****************************************************************************

from sage.libs.gmp.mpz cimport mpz_t, mpz_set
from libcpp.string cimport string

cdef extern from "giac/giac.h" namespace "giac":
cdef cppclass context:
context()

cdef struct ref_mpz_t:
pass
cdef struct ref_real_object:
pass
cdef struct ref_complex:
pass
cdef struct ref_identificateur:
pass
cdef struct ref_symbolic:
pass
cdef struct ref_modulo:
pass
cdef struct ref_algext:
pass
cdef struct giac_float:
pass
cdef cppclass Tref_fraction[T]:
pass
cdef cppclass Tref_tensor[T]:
pass
cdef cppclass vecteur:
vecteur(int)
vecteur()
void push_back(gen &)
cdef struct ref_vecteur:
pass
cdef struct ref_sparse_poly1:
pass
cdef struct ref_string:
pass
cdef struct ref_gen_user:
pass
cdef struct ref_gen_map:
pass
cdef struct ref_eqwdata:
pass
cdef struct ref_grob:
pass
cdef struct ref_void_pointer:
pass

cdef cppclass gen:
gen() except +
gen(char *, context *) except +
gen(string , context *) except +
gen(int ) except +
gen(long long ) except +
gen(double ) except +
#gen(ref_mpz_t * ) except +
gen(mpz_t & ) except +
gen(void *ptr,short int subt) except +
gen(gen ) except +
gen (vecteur & v,short int s) except +
gen (ref_vecteur * vptr,short int s) except +

mpz_t * ref_ZINTptr() except +
gen * ref_MODptr() except +

#
unsigned char type
signed char subtype
# (the meaning of types from dispatch.h)
# // immediate type (without mem allocation) should be < _ZINT
# _INT_= 0, // int val
# _DOUBLE_= 1, // double _DOUBLE_val
# // all type below or equal to _DOUBLE_ must be non pointers
# _ZINT= 2, // mpz_t * _ZINTptr
# _REAL= 3, // mpf_t * _REALptr
# // all type strictly below _CPLX must be real types
# _CPLX= 4, // gen * _CPLXptr
# _POLY= 5, // polynome * _POLYptr
# _IDNT= 6, // identificateur * _IDNTptr
# _VECT= 7, // vecteur * _VECTptr
# _SYMB= 8, // symbolic * _SYMBptr
# _SPOL1= 9, // sparse_poly1 * _SPOL1ptr
# _FRAC= 10, // fraction * _FRACptr
# _EXT= 11, // gen * _EXTptr
# _STRNG= 12, // string * _STRNGptr
# _FUNC= 13, // unary_fonction_ptr * _FUNCptr
# _ROOT= 14, // real_complex_rootof *_ROOTptr
# _MOD= 15, // gen * _MODptr
# _USER= 16, // gen_user * _USERptr
# _MAP=17, // map<gen.gen> * _MAPptr
# _EQW=18, // eqwdata * _EQWptr
# _GROB=19, // grob * _GROBptr
# _POINTER_=20, // void * _POINTER_val
# _FLOAT_=21 // immediate, _FLOAT_val


# immediate types
int val # immediate int (type _INT_)
double _DOUBLE_val # immediate float (type _DOUBLE_)
giac_float _FLOAT_val

# pointer types
ref_mpz_t * __ZINTptr # long int (type _ZINT)
ref_real_object * __REALptr # extended double (type _REAL)
ref_complex * __CPLXptr # complex as an gen[2] array (type _CPLX)
ref_identificateur * __IDNTptr # global name identifier (type _IDNT)
ref_symbolic * __SYMBptr # for symbolic objects (type _SYMB)
ref_modulo * __MODptr
ref_algext * __EXTptr # 2 gens for alg. extension (type ext)
# alg ext: 1st gen is a std::vector or a fraction, 2nd gen is
# a/ a std::vector, the minimal monic polynomial (the roots are permutable)
# b/ a real_complex_rootof given by it's min poly and
# c/ another type meaning that the root is expressed in terms
# of another rootof, in this case ext_reduce should be called
# For 2nd order extension, X^2=d is used if d!=1 mod 4
# X is the positive solution
# if d=1 mod 4 the equation is X^2-X=(d-1)/4
Tref_fraction[gen] * __FRACptr # fraction (type _FRAC)
Tref_tensor[gen] * __POLYptr # multidim. sparse polynomials (type poly)
# _VECTosite types (std::vector<>)
ref_vecteur * __VECTptr # vecteur: std::vectors & dense_POLY1 (type _VECT)
ref_sparse_poly1 * __SPOL1ptr # std::vector<monome>: sparse 1-d poly (type _SPOL1)
ref_string * __STRNGptr
unsigned _FUNC_ # ref_unary_function_ptr * __FUNCptr;
ref_gen_user * __USERptr
ref_gen_map * __MAPptr
ref_eqwdata * __EQWptr
ref_grob * __GROBptr
ref_void_pointer * __POINTERptr

#operators
gen operator[](int i) except +
gen operator[](gen & i) except +
gen operator()(gen & i,context * contextptr) except +
gen operator()(gen & i,gen & progname,context * contextptr) except +

gen operator+(gen & b) except +
gen operator-(gen & b) except +
gen operator*(gen & b) except +
gen operator/(gen & b) except +


gen GIAC_rdiv "rdiv"(gen & a,gen & b) except + # rational division
gen GIAC_eval "eval" (gen &,int , context *) except +
gen GIAC_protecteval "protecteval" (gen , int, context *) except +
gen GIAC_pow "pow"(gen & ,gen & , context * ) except +
gen GIAC_neg "operator-"(gen & ) except +
gen GIAC_pos "operator+"(gen & ) except +
gen GIAC_factor "_factor" (gen &, context *) except +
gen GIAC_factors "_factors" (gen &, context *) except +
gen GIAC_normal "normal" (gen &, context *) except +
gen GIAC_gcd "_gcd" (gen & args, context *) except +
gen GIAC_smod "_smod" (gen & args, context * ) except +
gen GIAC_mods "_mods" (gen & args, context * ) except +
gen GIAC_makemod "_makemod" (gen & , context * ) except +
string GIAC_print "print" (gen &, context *) except +
string GIAC_gen2tex "gen2tex" (gen &, context *) except +
ref_vecteur * GIAC_makenewvecteur "makenewvecteur"(gen & a,gen & b) except +
gen GIAC_size "_size"(gen & , context *) except +
gen GIAC_pari_unlock "_pari_unlock"(gen & , context *) except +

unsigned int GIAC_taille "taille"(gen & , unsigned int) except +
void GIAC_try_parse_i "try_parse_i"(bool , context *) except +

string GIAC_giac_aide_dir "giac_aide_dir"() except +
string GIAC_set_langage "_set_langage"(int , context *) except +

gen GIAC_sto "sto" (gen &, gen &, bool, context *) except +

int GIACctrl_c "ctrl_c"

#test
gen GIAC_Airy_Ai "_Airy_Ai" (gen &, context *) except +
gen GIAC_ifactor "_ifactor" (gen &, context *) except +


cdef extern from "misc.h":
void ressetctrl_c() except +
int testctrl_c() except +
int giacgencmp( gen & , gen & , context *) except +
int giacgenrichcmp( gen & , gen & , int, context *) except +
#NB: we use the following multiplication otherwise some giac errors make python quit:
#l=giac([1,2]); l.tranpose()*l
gen GIAC_giacmul "giacmul"( gen & , gen & , context *) except +
gen GIAC_giacdiv "giacdiv"( gen & , gen & , context *) except +
gen GIAC_giacmod "giacmod"( gen & , gen & , context *) except +
#
string browser_help(gen & , int lang) except +

void GIAC_archive "archivegen"( string , gen & , context *) except +
gen GIAC_unarchive "unarchivegen"( string , context *) except +
Loading

0 comments on commit d095c37

Please sign in to comment.