gp2c-0.0.14/0000755000175000017500000000000014700755151007435 500000000000000gp2c-0.0.14/configure0000755000175000017500000060106114676603632011300 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for gp2c 0.0.14. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gp2c' PACKAGE_TARNAME='gp2c' PACKAGE_VERSION='0.0.14' PACKAGE_STRING='gp2c 0.0.14' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/gp2c.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_func_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS mybindir ECHOT ECHOC ECHON PARI_RUNTEST GP2C_DBG1 GP2C_DBG GP_PATH_DBG PARI_MODULE_DEBUG PARI_DESC PARI_DATADIR GP_PATH PARI_MODULE_BUILD PARI_VERSION PERL_PATH YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking with_perl with_paricfg with_paricfg_dbg ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS YACC YFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gp2c 0.0.14 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gp2c] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gp2c 0.0.14:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-perl=FILE Perl is needed to compile the description files. But gp2c comes with precompiled descriptions for PARI 2.17, so can be used without perl. Default is to use perl if we find it. You can specify the path to perl with --with-perl=PATH. --with-paricfg=FILE Details about PARI configuration are needed to build plug-ins. Without them, gp2c itself can be compiled, but gp2c-run and 'make check' will not work. You must specify the path to the 'pari.cfg' file with --with-paricfg=PATH. --with-paricfg-dbg=FILE gp2c-dbg is more useful with the debugging version of PARI. You can specify the path to the 'pari.cfg' file of a debugging version with --with-paricfg-dbg=PATH while still using the optimised version with gp2c-run. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gp2c configure 0.0.14 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gp2c $as_me 0.0.14, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF" # Auxiliary files required by this configure script. ac_aux_files="compile missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/config" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gp2c' VERSION='0.0.14' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers src/config.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LEX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 printf "%s\n" "$LEX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %{ #ifdef __cplusplus extern "C" #endif int yywrap(void); %} %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ #ifdef __cplusplus yyless ((yyinput () != 0)); #else yyless ((input () != 0)); #endif } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int yywrap (void) { return 1; } int main (void) { return ! yylex (); } _ACEOF { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5 printf %s "checking for lex output file root... " >&6; } if test ${ac_cv_prog_lex_root+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_lex_root=unknown { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 printf "%s\n" "$ac_cv_prog_lex_root" >&6; } if test "$ac_cv_prog_lex_root" = unknown then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;} LEX=: LEXLIB= fi LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test ${LEXLIB+y} then : else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5 printf %s "checking for lex library... " >&6; } if test ${ac_cv_lib_lex+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_LIBS="$LIBS" ac_found=false for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do case $ac_cv_lib_lex in #( 'none needed') : ;; #( 'not found') : break ;; #( *) : LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #( *) : ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_found=: fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if $ac_found; then break fi done LIBS="$ac_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 printf "%s\n" "$ac_cv_lib_lex" >&6; } if test "$ac_cv_lib_lex" = 'not found' then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;} LEX=: LEXLIB= elif test "$ac_cv_lib_lex" = 'none needed' then : LEXLIB='' else $as_nop LEXLIB=$ac_cv_lib_lex fi ac_save_LIBS="$LIBS" if test -n "$LEXLIB" then : LIBS="$LEXLIB" ac_fn_c_check_func "$LINENO" "yywrap" "ac_cv_func_yywrap" if test "x$ac_cv_func_yywrap" = xyes then : : else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $LEXLIB does not contain yywrap; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: $LEXLIB does not contain yywrap; giving up on $LEX" >&2;} LEX=: LEXLIB= fi else $as_nop LIBS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yywrap" >&5 printf %s "checking for library containing yywrap... " >&6; } if test ${ac_cv_search_yywrap+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char yywrap (); int main (void) { return yywrap (); ; return 0; } _ACEOF for ac_lib in '' fl l do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_yywrap=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_yywrap+y} then : break fi done if test ${ac_cv_search_yywrap+y} then : else $as_nop ac_cv_search_yywrap=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yywrap" >&5 printf "%s\n" "$ac_cv_search_yywrap" >&6; } ac_res=$ac_cv_search_yywrap if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" LEXLIB="$LIBS" fi if test x"$ac_cv_search_yywrap" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: yywrap not found; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: yywrap not found; giving up on $LEX" >&2;} LEX=: LEXLIB= fi fi LIBS="$ac_save_LIBS" fi if test "$LEX" != : then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 printf %s "checking whether yytext is a pointer... " >&6; } if test ${ac_cv_prog_lex_yytext_pointer+y} then : printf %s "(cached) " >&6 else $as_nop # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h fi fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_YACC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 printf "%s\n" "$YACC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" # Check whether --with-perl was given. if test ${with_perl+y} then : withval=$with_perl; fi if test "$with_perl" = "no"; then PERL_PATH=/bin/false elif test -x "$with_perl"; then PERL_PATH="$with_perl" else # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL_PATH+y} then : printf %s "(cached) " >&6 else $as_nop case $PERL_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_PERL_PATH="$PERL_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL_PATH="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PERL_PATH" && ac_cv_path_PERL_PATH="/bin/false" ;; esac fi PERL_PATH=$ac_cv_path_PERL_PATH if test -n "$PERL_PATH"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_PATH" >&5 printf "%s\n" "$PERL_PATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi # Check whether --with-paricfg was given. if test ${with_paricfg+y} then : withval=$with_paricfg; fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multiarch system" >&5 printf %s "checking for multiarch system... " >&6; } multiarch=`$CC $CFLAGS -print-multiarch 2>/dev/null` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $multiarch" >&5 printf "%s\n" "$multiarch" >&6; } if test "$with_paricfg" = "no" ; then PARI_CONFIG= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI configuration" >&5 printf %s "checking for PARI configuration... " >&6; } if test "$with_paricfg" = "yes" || test "x$with_paricfg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i"; then PARI_CONFIG="$i"; fi; done; else test -f "$with_paricfg" && PARI_CONFIG="$with_paricfg" fi if test "x$with_paricfg" != "x" && test "x$PARI_CONFIG" = "x" ; then as_fn_error $? "pari.cfg file not found. Please use --with-paricfg=PATH where PATH is the path to pari.cfg or dft.Config.in file." "$LINENO" 5 fi if test "x$PARI_CONFIG" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 printf "%s\n" "not found" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_CONFIG" >&5 printf "%s\n" "$PARI_CONFIG" >&6; } fi fi # Check whether --with-paricfg-dbg was given. if test ${with_paricfg_dbg+y} then : withval=$with_paricfg_dbg; fi if test "$with_paricfg_dbg" = "no" ; then PARI_CONFIG_DBG= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI configuration (debugging)" >&5 printf %s "checking for PARI configuration (debugging)... " >&6; } if test "$with_paricfg_dbg" = "yes" || test "x$with_paricfg_dbg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i.dbg"; then PARI_CONFIG_DBG="$i.dbg"; fi; done; else test -f "$with_paricfg_dbg" && PARI_CONFIG_DBG="$with_paricfg_dbg" fi if test "x$with_paricfg_dbg" != "x" && test "x$PARI_CONFIG_DBG" = "x" ; then as_fn_error $? "pari.cfg.dbg file not found. Please use --with-paricfg-dbg=PATH where PATH is the path to pari.cfg.dbg or dft.Config.in file." "$LINENO" 5 fi if test "x$PARI_CONFIG_DBG" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 printf "%s\n" "not found" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_CONFIG_DBG" >&5 printf "%s\n" "$PARI_CONFIG_DBG" >&6; } fi fi if test "x$PARI_CONFIG" != "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI version" >&5 printf %s "checking for PARI version... " >&6; } PARI_VERSION=`$srcdir/config/pari-version $PARI_CONFIG` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_VERSION" >&5 printf "%s\n" "$PARI_VERSION" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI module build" >&5 printf %s "checking for PARI module build... " >&6; } PARI_MODULE_BUILD=`$srcdir/config/module-build $PARI_CONFIG` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_MODULE_BUILD" >&5 printf "%s\n" "$PARI_MODULE_BUILD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GP path" >&5 printf %s "checking for GP path... " >&6; } GP_PATH=`$srcdir/config/pari-conf $PARI_CONFIG bindir`/gp { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GP_PATH" >&5 printf "%s\n" "$GP_PATH" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI data directory" >&5 printf %s "checking for PARI data directory... " >&6; } PARI_DATADIR=`$srcdir/config/pari-conf $PARI_CONFIG datadir` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_DATADIR" >&5 printf "%s\n" "$PARI_DATADIR" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI description database" >&5 printf %s "checking for PARI description database... " >&6; } PARI_DESC="$PARI_DATADIR/pari.desc"; if test -f "$PARI_DESC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_DESC" >&5 printf "%s\n" "$PARI_DESC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 printf "%s\n" "not found" >&6; } PARI_DESC= fi else PARI_VERSION='2.17.x (released)' PARI_MODULE_BUILD="`pwd`/$srcdir/config/missing $PARI_CONFIG"; GP_PATH="gp" fi if test "x$PARI_CONFIG_DBG" != "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PARI module build (debugging)" >&5 printf %s "checking for PARI module build (debugging)... " >&6; } PARI_MODULE_DEBUG=`$srcdir/config/module-build $PARI_CONFIG_DBG` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_MODULE_DEBUG" >&5 printf "%s\n" "$PARI_MODULE_DEBUG" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GP path (debugging)" >&5 printf %s "checking for GP path (debugging)... " >&6; } GP_PATH_DBG=`$srcdir/config/pari-conf $PARI_CONFIG_DBG bindir`/gp { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GP_PATH_DBG" >&5 printf "%s\n" "$GP_PATH_DBG" >&6; } GP2C_DBG="gp2c-dbg" GP2C_DBG1="gp2c-dbg.1" else PARI_MODULE_DEBUG=$PARI_MODULE_BUILD GP_PATH_DBG=$GP_PATH GP2C_DBG="" GP2C_DBG1="" fi printf "%s\n" "#define PARI_VERSION \"$PARI_VERSION\"" >>confdefs.h printf "%s\n" "#define PARI_MODULE_BUILD \"$PARI_MODULE_BUILD\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for RUNTEST (if needed)" >&5 printf %s "checking for RUNTEST (if needed)... " >&6; } if test "x$RUNTEST" = "x" && test "x$PARI_CONFIG" != "x" ; then PARI_RUNTEST=`$srcdir/config/pari-conf $PARI_CONFIG RUNTEST` else PARI_RUNTEST="$RUNTEST" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PARI_RUNTEST" >&5 printf "%s\n" "$PARI_RUNTEST" >&6; } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" if test "x$ac_cv_header_malloc_h" = xyes then : printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else $as_nop ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 printf %s "checking for inline... " >&6; } if test ${ac_cv_c_inline+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo (void) {return 0; } $ac_kw foo_t foo (void) {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else $as_nop printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test ${ac_cv_struct_tm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_struct_tm=time.h else $as_nop ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 printf "%s\n" "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done if test "x$ac_cv_func_vprintf" = xno then : ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes then : printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h fi fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" if test "x$ac_cv_func_strtol" = xyes then : printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt" if test "x$ac_cv_func_getopt" = xyes then : printf "%s\n" "#define HAVE_GETOPT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcmp" "ac_cv_func_strcmp" if test "x$ac_cv_func_strcmp" = xyes then : printf "%s\n" "#define HAVE_STRCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memccpy" "ac_cv_func_memccpy" if test "x$ac_cv_func_memccpy" = xyes then : printf "%s\n" "#define HAVE_MEMCCPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strrchr" "ac_cv_func_strrchr" if test "x$ac_cv_func_strrchr" = xyes then : printf "%s\n" "#define HAVE_STRRCHR 1" >>confdefs.h fi ECHON=${ECHO_N-"$ac_n"} ECHOC=${ECHO_C-"$ac_c"} ECHOT=${ECHO_T-"$ac_t"} if test "$bindir" = '${exec_prefix}/bin'; then if test "x${exec_prefix}" != xNONE; then mybindir=${exec_prefix}/bin elif test "x${prefix}" != xNONE; then mybindir=${prefix}/bin else mybindir=${ac_default_prefix}/bin fi else mybindir=$bindir fi ac_config_files="$ac_config_files Makefile src/Makefile desc/Makefile doc/Makefile test/Makefile test2/Makefile test3/Makefile test4/Makefile scripts/Makefile scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg doc/gp2c-run.1 doc/gp2c-dbg.1" ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gp2c $as_me 0.0.14, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ gp2c config.status 0.0.14 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "desc/Makefile") CONFIG_FILES="$CONFIG_FILES desc/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test2/Makefile") CONFIG_FILES="$CONFIG_FILES test2/Makefile" ;; "test3/Makefile") CONFIG_FILES="$CONFIG_FILES test3/Makefile" ;; "test4/Makefile") CONFIG_FILES="$CONFIG_FILES test4/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "scripts/822_desc.pl") CONFIG_FILES="$CONFIG_FILES scripts/822_desc.pl" ;; "scripts/runtest") CONFIG_FILES="$CONFIG_FILES scripts/runtest" ;; "scripts/dotest") CONFIG_FILES="$CONFIG_FILES scripts/dotest" ;; "scripts/gp2c-run") CONFIG_FILES="$CONFIG_FILES scripts/gp2c-run" ;; "scripts/gp2c-dbg") CONFIG_FILES="$CONFIG_FILES scripts/gp2c-dbg" ;; "doc/gp2c-run.1") CONFIG_FILES="$CONFIG_FILES doc/gp2c-run.1" ;; "doc/gp2c-dbg.1") CONFIG_FILES="$CONFIG_FILES doc/gp2c-dbg.1" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "default":C) chmod a+x scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gp2c-0.0.14/Makefile.in0000644000175000017500000007011614676603632011437 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/compile \ $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing \ AUTHORS COPYING ChangeLog INSTALL NEWS README config/compile \ config/depcomp config/install-sh config/missing config/ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src desc scripts doc test test2 test3 test4 EXTRA_DIST = BUGS gp2c gp2c-run gp2c-dbg TESTS = scripts/runtest all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ col="$$grn"; \ else \ col="$$red"; \ fi; \ echo "$${col}$$dashes$${std}"; \ echo "$${col}$$banner$${std}"; \ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ test -z "$$report" || echo "$${col}$$report$${std}"; \ echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-TESTS check-am clean clean-cscope \ clean-generic cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am .PRECIOUS: Makefile dist-hook: test -d $(distdir)/config || mkdir $(distdir)/config for i in $(srcdir)/config/*; do \ test -f $$i && $(INSTALL_SCRIPT) $$i $(distdir)/config; done checkspaces: config/checkspaces # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/gp2c-run0000755000175000017500000000042613623476440010746 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f scripts/gp2c-run; then cat <&2 Package has not been configured. Please type ./configure to configure it. EOF exit 1; fi GP2C=./gp2c exec scripts/gp2c-run "$@" gp2c-0.0.14/NEWS0000644000175000017500000000357613614057635010074 00000000000000gp2c 0.0.7 -- This version is targeted to PARI 2.5 by default, though PARI 2.3 is still supported. -- This release fixes support for some PARI 2.5 GP extensions. -- This release adds support for declaring local variables declared inside blocks. gp2c 0.0.6 -- This release add support for most PARI 2.5 GP extensions. -- When used with PARI 2.4.4 and up, this release adds support for closures, and iterators like intnum, sumalt, forsubgroup, etc. gp2c 0.0.5 -- This version handles PARI 2.3 and later release, but not the 2.1 and 2.2 release. -- This release allows to use a PARI debug build for configuring gp2c-dbg separatly from gp2c-run. -- gp2c-run and gp2c-dbg create a .gp.run file instead of gp2c_start.gp and gp2c_gprc. -- This release adds support for &a[b] and break(n)/next(n). gp2c 0.0.4 -- This version handles PARI 2.2.8 release and above, 2.1 stable release, but no more the release 2.2.0 to 2.2.6, and mostly the 2.2.7 release. -- All references to libpari API is made through the description system. -- When used with PARI 2.2.8 and above, this release fully supports forvec(). -- The documentation has been extended to cover types. -- This version generates cleaner and more ANSI-C compliant C code. gp2c 0.0.3 -- This version handles PARI 2.2.7 release and above, 2.1 stable release, but no more the release 2.2.0 to 2.2.6. -- When used with PARI 2.2.7 and above, this release has full support for member function and functions taking a variable number of strings as arguments, usually text-based I/O functions. gp2c 0.0.2 -- This version handles automatic concatenation and supports more functions. gp2c 0.0.1 -- This version comes with a manual. This is doc/gp2c.tex LaTeX source doc/gp2c.dvi DVI format doc/html/index.html HTML format -- There is now a script gp2c-run to simplify the use of gp2c. gp2c 0.0.0 -- Add NEWS file to be computer-friendly with automake. gp2c-0.0.14/BUGS0000644000175000017500000000257313743651463010056 00000000000000Probably not countable. --- bittest(x:small,y:small) is wrong if y>31 --- x:small%y:small cannot use % in C because -2%3 would be wrong --- || and && are not always fully short-circuiting if second argument is a block. -- modifying loop index of vector does not work Things that are poorly implemented: ---------------------------------- --- Array (vector, matrix) may be disconnected in the stack. --- vector() and matrix() do not garbage collect. --- Garbage collecting should always be done after a loop. --- Code generated for "a=if(b,c,d)" constructs is ugly. --- user-defined member functions should be inlined --- local() variables are treated identically to my() variables. Thus the scope of local() variable after function call are not the same in GP and in C. Things that are not implemented: -------------------------------- --- a[b,]+=c --- issquare(4,&a[b,]) Discrepancy between gp2c and gp: -------------------------------- --- =\n= is allowed by gp, but not by gp2c. Don't cry. --- Spaces in middle of term like (a b==ab) are not allowed. Be sensible. --- gp2c does not allow functions named local() to be called. --- "error" output PARI errors, not user errors. --- gp2c is generally more lenient than gp about syntax. --- Do not catch misuse of GP 'global()' vars. --- Use of small may lead to overflow problems. --- return() can return 0 instead of nothing. gp2c-0.0.14/README0000644000175000017500000000354514676602037010252 00000000000000GP2C, GP to C translator Copyright (C) 2000-2024 The PARI Group, Bordeaux. GP2C is part of the PARI/GP system, http://pari.math.u-bordeaux.fr/. New versions are available at and ========================================================================== To get started, read the manual in doc/gp2c.dvi or doc/html. You need PARI/GP installed to compile this package. The command provided are: gp2c file.gp Translate file.gp to C and output the resulting code to stdout. gp2c-run file.gp This will translate file.gp to C, compile it, and run a GP session including the compiled functions. This rely on install() working for external module so is not as portable as GP2C. However it is known to work on Linux, Solaris, OSF/1, Mac OS X, and Cygwin. gp2c-dbg file.gp [not installed by default] This does the same as gp2c-run but launch GP inside the C debugger, so you can debug your script. See the configure option '--with-paricfg-dbg' to enable it. Thanks for your support, and have fun ! Bill Allombert ======================================================================== GP2C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. gp2c-0.0.14/src/0000755000175000017500000000000014700755151010224 500000000000000gp2c-0.0.14/src/Makefile.in0000644000175000017500000005640314676603632012231 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = gp2c$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_gp2c_OBJECTS = gp2c.$(OBJEXT) context.$(OBJEXT) funcdesc.$(OBJEXT) \ funcspec.$(OBJEXT) genblock.$(OBJEXT) gencast.$(OBJEXT) \ gencode.$(OBJEXT) genfunc.$(OBJEXT) gentype.$(OBJEXT) \ gerepile.$(OBJEXT) lang.$(OBJEXT) moveblock.$(OBJEXT) \ node.$(OBJEXT) parse.$(OBJEXT) printnode.$(OBJEXT) \ toplevel.$(OBJEXT) topfunc.$(OBJEXT) util.$(OBJEXT) \ varlist.$(OBJEXT) stack.$(OBJEXT) gp2c_OBJECTS = $(am_gp2c_OBJECTS) gp2c_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/context.Po ./$(DEPDIR)/funcdesc.Po \ ./$(DEPDIR)/funcspec.Po ./$(DEPDIR)/genblock.Po \ ./$(DEPDIR)/gencast.Po ./$(DEPDIR)/gencode.Po \ ./$(DEPDIR)/genfunc.Po ./$(DEPDIR)/gentype.Po \ ./$(DEPDIR)/gerepile.Po ./$(DEPDIR)/gp2c.Po \ ./$(DEPDIR)/lang.Po ./$(DEPDIR)/moveblock.Po \ ./$(DEPDIR)/node.Po ./$(DEPDIR)/parse.Po \ ./$(DEPDIR)/printnode.Po ./$(DEPDIR)/stack.Po \ ./$(DEPDIR)/topfunc.Po ./$(DEPDIR)/toplevel.Po \ ./$(DEPDIR)/util.Po ./$(DEPDIR)/varlist.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = @MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) AM_V_LEX = $(am__v_LEX_@AM_V@) am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) am__v_LEX_0 = @echo " LEX " $@; am__v_LEX_1 = YLWRAP = $(top_srcdir)/config/ylwrap @MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ -e s/c++$$/h++/ -e s/c$$/h/ YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) AM_V_YACC = $(am__v_YACC_@AM_V@) am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = SOURCES = $(gp2c_SOURCES) DIST_SOURCES = $(gp2c_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \ lang.c parse.c parse.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = -DFUNCDSC_PATH=\"@datadir@/@PACKAGE@/func.dsc\" BUILT_SOURCES = parse.h gp2c_SOURCES = gp2c.c context.c funcdesc.c funcspec.c genblock.c gencast.c gencode.c genfunc.c gentype.c gerepile.c header.h lang.l moveblock.c node.c optable.h parse.y patchfunc.h printnode.c toplevel.c topfunc.c type.h util.c varlist.c stack.h stack.c AM_YFLAGS = -d -Wno-yacc am__skipyacc = am__skiplex = all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .l .o .obj .y $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) parse.h: parse.c @if test ! -f $@; then rm -f parse.c; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parse.c; else :; fi gp2c$(EXEEXT): $(gp2c_OBJECTS) $(gp2c_DEPENDENCIES) $(EXTRA_gp2c_DEPENDENCIES) @rm -f gp2c$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gp2c_OBJECTS) $(gp2c_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcdesc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcspec.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gencast.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gencode.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genfunc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gentype.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gerepile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gp2c.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lang.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moveblock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printnode.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topfunc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/toplevel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varlist.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .l.c: $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) config.h installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f lang.c -rm -f parse.c -rm -f parse.h -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/context.Po -rm -f ./$(DEPDIR)/funcdesc.Po -rm -f ./$(DEPDIR)/funcspec.Po -rm -f ./$(DEPDIR)/genblock.Po -rm -f ./$(DEPDIR)/gencast.Po -rm -f ./$(DEPDIR)/gencode.Po -rm -f ./$(DEPDIR)/genfunc.Po -rm -f ./$(DEPDIR)/gentype.Po -rm -f ./$(DEPDIR)/gerepile.Po -rm -f ./$(DEPDIR)/gp2c.Po -rm -f ./$(DEPDIR)/lang.Po -rm -f ./$(DEPDIR)/moveblock.Po -rm -f ./$(DEPDIR)/node.Po -rm -f ./$(DEPDIR)/parse.Po -rm -f ./$(DEPDIR)/printnode.Po -rm -f ./$(DEPDIR)/stack.Po -rm -f ./$(DEPDIR)/topfunc.Po -rm -f ./$(DEPDIR)/toplevel.Po -rm -f ./$(DEPDIR)/util.Po -rm -f ./$(DEPDIR)/varlist.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/context.Po -rm -f ./$(DEPDIR)/funcdesc.Po -rm -f ./$(DEPDIR)/funcspec.Po -rm -f ./$(DEPDIR)/genblock.Po -rm -f ./$(DEPDIR)/gencast.Po -rm -f ./$(DEPDIR)/gencode.Po -rm -f ./$(DEPDIR)/genfunc.Po -rm -f ./$(DEPDIR)/gentype.Po -rm -f ./$(DEPDIR)/gerepile.Po -rm -f ./$(DEPDIR)/gp2c.Po -rm -f ./$(DEPDIR)/lang.Po -rm -f ./$(DEPDIR)/moveblock.Po -rm -f ./$(DEPDIR)/node.Po -rm -f ./$(DEPDIR)/parse.Po -rm -f ./$(DEPDIR)/printnode.Po -rm -f ./$(DEPDIR)/stack.Po -rm -f ./$(DEPDIR)/topfunc.Po -rm -f ./$(DEPDIR)/toplevel.Po -rm -f ./$(DEPDIR)/util.Po -rm -f ./$(DEPDIR)/varlist.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: all check install install-am install-exec install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile ctags: ctags $(gp2c_SOURCES) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/src/util.c0000644000175000017500000001124013740627221011262 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" static void msgprefix(int n) { if (n>0) fprintf(stderr,"%s:%d: ",srcfile[tree[n].fileno],tree[n].lineno); else { switch(n) { case err_func: fprintf(stderr,"%s:%s: ",srcfile[filecount],currfunc==-1?"toplevel":lfunc[currfunc].gpname); break; case err_parse: fprintf(stderr,"%s:%d: ",srcfile[filecount],linecount); break; case err_desc: fprintf(stderr,"func.dsc:: "); break; } } } void die(int n, const char *format, ...) { va_list ap; static int dead; va_start(ap, format); fprintf(stderr,"Error:"); msgprefix(n); vfprintf(stderr,format,ap); if (dead++) exit(1); fprintf(stderr,"\n"); printnode(stderr,n); fprintf(stderr,"\n"); va_end(ap); exit(1); } void warning(int n, const char *format, ...) { va_list ap; va_start(ap, format); if (do_warning) { fprintf(stderr,"Warning:"); msgprefix(n); vfprintf(stderr,format,ap); fprintf(stderr,"\n"); printnode(stderr,n); fprintf(stderr,"\n"); } va_end(ap); } int listtostack(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr) { int x,i,nb; if (n==-1) return 0; for(x=n,i=0;tree[x].f==f && i0;stack[i]=tree[x].y,x=tree[x].x,i--); stack[0]=x; return nb; } int listcalltostack(int n, int fnum, int *stack, int nbmax, const char *error,int nerr) { int x=n, i=0, nb; if (n==-1) return 0; while(1) { int xx=tree[x].x; int xy=tree[x].y; if (tree[x].f!=Ffunction || xx!=fnum) break; x=tree[xy].x; i++; if (i>=nbmax) die(nerr,"Too many args for `%s'",error); } nb=i+1; for(x=n;i>0;i--) { int y=tree[x].y; x=tree[y].x; stack[i]=tree[y].y; } stack[0]=x; return nb; } int listtostackparent(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr) { int x,i,nb; if (n==-1) return 0; nbmax--; for(x=n,i=0;tree[x].f==f && i=0;stack[i]=x,x=tree[x].x,i--); return nb; } int genlistargs(int n,int *stack,int min,int max) { const char *name=value[tree[n].x].val.str; int y=tree[n].y; int nb=(y==GNOARG)?0:listtostack(y,Flistarg,stack,max,name,n); if(nb header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the `memccpy' function. */ #undef HAVE_MEMCCPY /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcmp' function. */ #undef HAVE_STRCMP /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* target PARI module build */ #undef PARI_MODULE_BUILD /* target PARI version */ #undef PARI_VERSION /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `unsigned int' if does not define. */ #undef size_t gp2c-0.0.14/src/funcdesc.c0000644000175000017500000004301214213374573012106 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" gpdesc *newdesc(int nb) { gpdesc *gd = (gpdesc *) malloc(sizeof(*gd)); gd->nb=nb; gd->a=nb?(gpdescarg *)calloc(nb,sizeof(*(gd->a))):NULL; return gd; } gpwrap *newwrap(int nb) { gpwrap *gw = (gpwrap *) malloc(sizeof(*gw)); gw->nb=nb; gw->w=nb?(int *)calloc(nb,sizeof(*(gw->w))):NULL; return gw; } static void strtoargsdefault(char *s, descargatom *aa, int opt) { if (isdigit(*s) || *s=='-' || *s=='+') { aa->t=opt?AAoptsmall:AAsmall; aa->type=Gsmall; aa->misc=atol(s); } else { int t=strtotype(s); aa->t=opt?AAopttype:AAtype; aa->type=t; } } /*modify s*/ descargatom strtoargs(char *s) { descargatom aa; int t; char *mstr=s; aa.mode=0; aa.type=Gnotype; aa.misc=0; while ((mstr=strrchr(mstr,':'))) { aa.mode|=1<"); buf[strlen(buf)-1]=0; } int readnumber(FILE *f, char *buf, int len) { readentry(f,buf,len); return atol(buf); } int readtypemode(FILE *f,char *buf, int len, int *mode) { int nb=readnumber(f,buf,len); int type; *mode=0; if (nb) { int j; readentry(f,buf,len); type=strtotype(buf); for(j=1;jgpname); for(i=0;idsc=gd; else func->iter=gd; } for(j=0; ja+j; if (type==0) { readentry(dfile,buf,BUFFER_SIZE); da->cname=strdup(buf); } else { gpiterator *iter = &(da->iter); int niter=readnumber(dfile,buf,BUFFER_SIZE); if (niter<3 || niter>4) die(err_desc,"unsupported iterator"); readentry(dfile,buf,BUFFER_SIZE); iter->type=strtotype(buf); readentry(dfile,buf,BUFFER_SIZE); iter->init=getfunc(buf); func = lfunc+nf; readentry(dfile,buf,BUFFER_SIZE); iter->next=getfunc(buf); func = lfunc+nf; if (niter==4) { readentry(dfile,buf,BUFFER_SIZE); iter->end=getfunc(buf); func = lfunc+nf; } else iter->end=-1; } nargs=readnumber(dfile,buf,BUFFER_SIZE); da->nargs=nargs; if (nargs) da->args=(descargatom *) calloc(nargs,sizeof(*da->args)); else da->args=NULL; for(k=0; kargs[k]=strtoargs(buf); } da->type=readtypemode(dfile,buf,BUFFER_SIZE,&da->mode); } break; case 1: /*This is a prototype*/ readentry(dfile,buf,BUFFER_SIZE); func->proto.cname=strdup(buf); readentry(dfile,buf,BUFFER_SIZE); func->proto.code=strdup(buf); functype(*func)=readtypemode(dfile,buf,BUFFER_SIZE,&funcmode(*func)); break; case 2: /*This is a wrapper*/ nargs=readnumber(dfile,buf,BUFFER_SIZE); func->wrap = newwrap(nargs); for(j=0;jwrap->w[j]=*buf?(buf[1]?nw:-1):-2; } break; default: die(err_desc,"Unknown description type %d in %s",type,descfile); } } } fclose(dfile); } int descrulescore(int nb, int *args, gpdescarg *ga, int * const psc,int * const pesc) { int sc=0, esc=0; int i,j; descargatom *da=ga->args; for (i=0, j=0;jnargs;j++, i++) { int t; int arg=(i=nb) break; j--; } if (arg==GNOARG) { if (da[j].t==AAnoarg || da[j].t==AAoptsmall || da[j].t==AAopttype) { esc++; if (i>=nb) sc++; continue; } return 1; } if (arg<0) die(err_desc,"Internal error: Bad argument in descfindrules"); if (da[j].mode>=0) { if ((tree[arg].m&da[j].mode)==da[j].mode) esc++; else return 1; } t=tree[arg].t; switch(da[j].t) { case AAopttype: /* Since arg is not GNOARG, arg is present */ case AAtype: if (t==da[j].type) esc++; if (is_subtype(t,da[j].type)) break; if (is_subtype(da[j].type,t)) sc++; else return 1; break; case AActype: if (ctype[t]==da[j].misc) esc++; else return 1; break; case AAoptsmall: /* Since arg is not GNOARG, arg is present */ case AAsmall: if (tree[arg].f==Fsmall && tree[arg].x==da[j].misc) esc++; else return 1; break; case AAstring: if (is_const(arg,CSTstr) && strcmp(entryname(arg),da[j].str)==0) esc++; else return 1; break; case AAreftype: if (t==da[j].type) esc++; if (tree[arg].f==Frefarg && is_subtype(da[j].type,t) && ctype[t]==ctype[da[j].type]) break; return 1; case AAherevalue: if (t==da[j].type && (tree[arg].f==Fsmall || tree[arg].f==Fconst)) { esc++; break; } return 1; case AAlvalue: if (getlvalue(arg)<0) return 1; if (t==da[j].type) esc++; else if (ctype[t]!=ctype[da[j].type] || !is_subtype(t,da[j].type)) return 1; break; case AAmulti: if (tree[arg].f==Fentry || tree[arg].f==Fsmall) break; return 1; case AAnoarg:/* Since arg is not GNOARG, reject*/ return 1; default: die(err_desc,"Internal error unknown AAvalue in descrulescore"); } } if (ia; for(i=0;inb;i++) { int sc=0, esc=0; if (descrulescore(nb,arg,ga+i,&sc,&esc)) continue; if (best==-1 || scescore )) { score=sc; escore=esc; best=i; } } return (best==-1)?NULL:ga+best; } gpdescarg *descfindrules(int nb, int *arg, gpfunc *gp) { return descfindrulesdsc(nb, arg, gp->dsc); } gpdescarg *descfindrules1(int arg, int nf) { return descfindrules(1, &arg, lfunc+nf); } int gentypefuncdesc(int n, gpfunc *gp) { int arg[STACKSZ]; int i, nb; int y=tree[n].y; gpdescarg *rule; if ( y!=-1 ) { gentype(y); tree[n].m|=tree[y].m&MODHERIT; } nb=genlistargs(n,arg,0,STACKSZ); rule=descfindrules(nb,arg,gp); if (!rule) return Gnotype; for(i=0;inargs;i++) if (rule->args[i].t==AAlvalue) { int ta=tree[arg[i]].t, ts=rule->args[i].type; if (!is_subtype(ts,ta)) warning(n,"Assignement to a less precise type: %s<-%s",GPname(ta),GPname(ts)); } tree[n].m|=rule->mode; return rule->type; } enum FBenum {FBparens, FBstdref} flagbit; struct rpn_data { FILE *fout; gpdescarg *rule; int nbarg; int *arg; int nerr; int nf; int sp; long flag; }; static int get_arg(struct rpn_data *d, int n) { if (n<=d->nbarg) return d->arg[n-1]; return GNOARG; } static int get_str(struct rpn_data *d, int n) { int x=get_arg(d,n); if (tree[x].f!=Fconst && value[tree[x].x].type!=CSTstr) die(n,"Constant string expected"); return x; } static descargatom* get_atom(struct rpn_data *d, int n) { if(n>d->rule->nargs) die(d->nerr,"Too few parameters"); return d->rule->args+n-1; } static void cast_flag(struct rpn_data *d, int n, int t) { gencastf(d->fout,n,t,d->flag&(1<sp-=(n) #define push(n) d->sp+=(n) #define LVL(n) (stk[d->sp-1-(n)]) #define NOLVL ((void)stk) RPN(rpn_add) {LVL(1)+=LVL(0); pop(1);} RPN(rpn_sub) {LVL(1)-=LVL(0); pop(1);} RPN(rpn_mul) {LVL(1)*=LVL(0); pop(1);} RPN(rpn_div) {LVL(1)/=LVL(0); pop(1);} RPN(rpn_mod) {LVL(1)%=LVL(0); pop(1);} RPN(rpn_and) {LVL(1)&=LVL(0); pop(1);} RPN(rpn_or) {LVL(1)|=LVL(0); pop(1);} RPN(rpn_xor) {LVL(1)^=LVL(0); pop(1);} RPN(rpn_neg) {LVL(0)=-LVL(0);} RPN(rpn_not) {LVL(0)=!LVL(0);} RPN(rpn_nbarg) {push(1);LVL(0)=d->nbarg;} RPN(rpn_parens) {NOLVL;d->flag|=1<flag|=1<fout, get_str(d, LVL(0))); pop(1); } RPN(rpn_str_raw) { fputs(entryname(get_str(d, LVL(0))),d->fout); pop(1); } RPN(rpn_type) { LVL(0)=get_atom(d, LVL(0))->type; } RPN(rpn_value) { int n=get_arg(d,LVL(0)); if (tree[n].f!=Fsmall) die(n,"Not an immediate small"); LVL(0)=tree[n].x; } RPN(rpn_cast) { int n=get_arg(d,LVL(1)); int cast=LVL(0); descargatom *r=get_atom(d, LVL(1)); int t=(cast==-1)?r->type:cast; switch(r->t) { case AAstdarg: { int i; int x=LVL(1)-1; if (x==0) die(d->nerr,"No argument before ellipsis (...)"); t=r[-1].type; for(i=x-1;inbarg;i++) { if (i>=x) fprintf(d->fout,", "); if (d->flag&(1<fout,"&"); gencast(d->fout,d->arg[i],t); } } break; case AAoptsmall: fprintf(d->fout,"%d",r->misc); break; case AAopttype: if (n==GNOARG) gencodenoarg(d->fout,t,n); else cast_flag(d,n,t); break; case AActype: if (cast==-1) t=tree[n].t; default: /*Fall through*/ cast_flag(d,n,t); break; } pop(2); } RPN(rpn_prec) { genprec(d->fout, preclevel); } RPN(rpn_bitprec) { genbitprec(d->fout, preclevel); } RPN(rpn_code) { push(1); LVL(0)=-1; rpn_cast(d,stk); } RPN(rpn_wrapper) { int idx = LVL(0); int n = get_arg(d,idx); gpfunc *gp; pop(1); if (isfunc(n,"_closure")) { int y = tree[n].y; while(tree[y].f==Flistarg) y=tree[y].x; gp = lfunc+findfunction(entryname(y)); if (gp->spec==GPuser && gp->user->wrapper>=0) { fprintf(d->fout, "wrap_%s", gp->proto.cname); return; } } gp = lfunc+lfunc[d->nf].wrap->w[idx-1]; fputs(gp->proto.cname, d->fout); } RPN(rpn_cookie) { int arg[STACKSZ]; int n=get_arg(d,LVL(0)); if (isfunc(n,"_closure")) { int nb=genlistargs(n,arg,1,STACKSZ-1); gpfunc *gp = lfunc + findfunction(entryname(arg[0])); if (gp->spec==GPuser && gp->user->wrapper>=0) { gpfunc *wr = lfunc + gp->user->wrapper; if ((funcmode(*gp)&(1<fout, nb-1,arg+1,FC_tovecprec,d->nerr); else { if (nb==1) fputs("NULL", d->fout); else genfuncbydesc(d->fout, nb-1,arg+1,FC_tovec,d->nerr); } pop(1); return; } } rpn_code(d,stk); } RPN(rpn_format_string) { int x=LVL(0)-1; int i,j; int arg[STACKSZ]; if (x==0) die(d->nerr,"Ellipsis at start of description"); for(j=x-1;jnbarg;j++) { int nb=genlistcats(d->arg[j],arg,STACKSZ); for(i=0;ifout,n,FC_formatcode,n)) die(n,"No format for %s arg",GPname(tree[n].t)); } } pop(1); } RPN(rpn_format_args) { int x=LVL(0)-1; int arg[STACKSZ]; int i,j; if (x==0) die(d->nerr,"Ellipsis at start of description"); for(j=x-1;jnbarg;j++) { int nb=genlistcats(d->arg[j],arg,STACKSZ); for(i=0;itype!=Gvoid) { fprintf(d->fout,", "); gencast(d->fout,arg[i],rule->type); } } } pop(1); } const char *gencoderpn(FILE *fout, const char *p, gpdescarg *rule, int nbarg, int *arg, int nerr, int nf) { int stk[STACKSZ]; struct rpn_data data; const char *ps = p+1; struct rpn_func rpn[] = { {"add",2,rpn_add},{"sub",2,rpn_sub},{"neg",1,rpn_neg}, {"mul",2,rpn_mul},{"div",2,rpn_div},{"mod",2,rpn_mod}, {"and",2,rpn_and},{"or",2,rpn_or},{"xor",2,rpn_xor},{"not",1,rpn_not}, {"value",1,rpn_value},{"type",1,rpn_type},{"nbarg",0,rpn_nbarg}, {"parens",0,rpn_parens},{"stdref",0,rpn_stdref}, {"str_format",1,rpn_str_format},{"str_raw",1,rpn_str_raw}, {"code",1,rpn_code},{"cast",2,rpn_cast}, {"prec",0,rpn_prec},{"bitprec",0,rpn_bitprec}, {"format_string",1,rpn_format_string}, {"format_args",1,rpn_format_args}, {"cookie",1,rpn_cookie}, {"wrapper",1,rpn_wrapper}, {NULL,0,NULL} }; data.fout=fout; data.rule=rule; data.nbarg=nbarg; data.arg=arg; data.nerr=nerr; data.nf=nf; data.flag=0; data.sp=0; for(;;p++) { if (!*p) die(nerr,"Unfinished ${} in description"); if (*p==' ' || *p=='}' ) { size_t l=p-ps; if (isdigit(ps[0]) || ps[0]=='-') stk[data.sp++]=strtol(ps,NULL,10); else if (ps[0]==':') stk[data.sp++]=strtotype_len(ps+1,l-1); else { int r; for(r=0; rpn[r].name; r++) { const char *name=rpn[r].name; if (l==strlen(name) && !strncmp(ps,name,l)) { if (rpn[r].arity>data.sp) die(nerr,"Too few arguments for %s",name); rpn[r].function(&data,stk); break; } } if(!rpn[r].name) die(nerr,"Unknown description command %s",xstrndup(ps,l)); } ps=p+1; if(*p=='}') break; } } if (data.sp) fprintf(fout,"%d",stk[--data.sp]); return p; } void gencodedesc(FILE *fout, int nb, int *arg, gpdescarg *rule, int nerr, int nf) { char buf[STACKSZ]; const char *p; int mode; p=rule->cname; mode=0; do { switch(mode) { case 0: if (*p=='$') mode=1; else if (*p) fputc(*p,fout); break; case 1: switch(*p) { case '$': mode=0; fprintf(fout,"$"); break; case '"': { char *s=(char*) memccpy(buf,p+1,'"',STACKSZ-1); if (!s) die(nerr,"Unfinished \" in description"); *(s-1)=0; die(nerr,buf); } case 0: die(nerr,"Unfinished $ in description"); case '{': p=gencoderpn(fout, p, rule, nb, arg, nerr, nf); mode=0; break; default: die(nerr,"Unknown description"); } } } while(*p++); } int genfuncbydesc(FILE *fout, int nb, int *arg, int nf, int nerr) { gpdescarg *rule=descfindrules(nb, arg, lfunc+nf); if (!rule) return 1; gencodedesc(fout,nb, arg, rule, nerr, nf); return 0; } int genfuncbydesc1(FILE *fout, int arg, int nf, int nerr) { return genfuncbydesc(fout, 1, &arg, nf, nerr); } gp2c-0.0.14/src/topfunc.c0000644000175000017500000001525113740627076012001 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int newanonvar=0; int newanon(void) { char s[33]; sprintf(s,"anon_%d",newanonvar++); return newentry(strdup(s)); } int newfun(const char *name) { char *s = malloc(5+strlen(name)); sprintf(s,"fun_%s",name); if (findfunction(s)<0) return newentry(s); free(s); return newanon(); } void mkfunc(int n, int p, int flag, int wr) { int x = tree[n].x; gpfunc *gp; const char *name=entryname(x); int nf=findfunction(name); if (nf==-1) { nf = newuserfunc(name); gp = lfunc+nf; } else { gp=lfunc+nf; if (gp->spec!=GPuser) die(n,"Trying to redefine function %s",name); else { userfunc *ufunc=gp->user; int parent=ufunc->pdefnode; int node=ufunc->defnode; if (tree[node].y>=0) warning(node,"Function %s redefined in file %s, line %d", name, srcfile[tree[n].fileno], tree[n].lineno); if (tree[parent].x==node) tree[parent].x=GNIL; else tree[parent].y=GNIL; } } gp->user->flag=flag; gp->user->wrapper=wr; gp->user->pdefnode=p; gp->user->defnode=n; } static void topfunc(int n, int p, int fun, int pfun, int nf, int wr) { int code = tree[n].y, arglist = tree[n].x; int args = arglist>=0 ? tree[arglist].y : -1; int fl = wr<0?(1<=0) tree[n] = tree[seq]; } static int topfuncproto(int n, int fun, int pfun, int nf) { int arg[STACKSZ+1]; int nb=genlistargs(n,arg,0,STACKSZ); gpfunc *gp = lfunc+nf; gpwrap *gw = gp->wrap; int nbwr = gw ? gw->nb: 0; const char *proto=gp->proto.code; int i=0; int var=-1, seq, a, t, binf, wr, kvar=-1; char const *p=proto; char c; PPproto mod; gpdesc *iter = lfunc[nf].iter; if (!proto) return 1; while((mod=parseproto(&p,&c))) { switch(mod) { case PPauto: break; case PPstd: if (i>=nb || arg[i]==GNOARG) die(n,"missing mandatory argument"); a = arg[i++]; wr = i<=nbwr ? gw->w[i-1]:-2; switch(c) { case 'G': if (wr>=0 && tree[a].f==Flambda) topfunclambda(a, n, fun, pfun, wr); break; case 'V': var = a; if (!iter) killlistarg(n,a); break; case '=': genequal(a,lfunc[nf].gpname,&var,&binf,&t); kvar = a; break; case 'I': case 'E': if (iter || wr<-1) break; case 'J': /* Fall through */ if (kvar>=0 && !iter) { tree[kvar]=tree[binf]; kvar=-1; } seq = newnode(Flambda,var,newleaf(a)); tree[a] = tree[seq]; topfunclambda(a, n, fun, pfun, wr); break; } break; case PPdefault: i++; a = i<=nb ? arg[i-1]: GNOARG; wr = i<=nbwr ? gw->w[i-1]:-2; switch(c) { case 'I': case 'E': if (!iter && a!=GNOARG && (wr>=-1 || var==-1)) { if (kvar>=0) { tree[kvar]=tree[binf]; kvar=-1; } seq = newnode(Flambda,var,newleaf(a)); tree[a]=tree[seq]; topfunclambda(a, n, fun, pfun, wr); } break; } break; case PPdefaultmulti: i++; break; case PPstar: break; default: die(n,"internal error: PPproto %d in genfuncbycode",mod); } } return 0; } /* n: node p:parent node */ void gentopfunc(int n, int p, int fun, int pfun) { int x,y; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Flambda: topfunclambda(n,p,fun,pfun,-1); break; case Fdeffunc: if (fun>=0) { int nn = newfun(entryname(x)); int seq= newnode(Fassign,newnode(Fentry,tree[x].x,-1),newnode(Fentry,nn,-1)); int nf = newnode(Fdeffunc,newnode(Ffunction,nn,tree[x].y),tree[n].y); topfunc(n,p,fun,pfun,nf,-1); tree[n] = tree[seq]; } else topfunc(n,p,fun,pfun,n,-1); break; case Fassign: if (tree[x].f==Fentry && tree[y].f==Flambda) { int nn = newfun(entryname(x)); int seq= newnode(Fentry,nn,-1); int nf = newnode(Fdeffunc,newnode(Ffunction,nn,tree[y].x),tree[y].y); topfunc(y,n,fun,pfun,nf,-1); if (fun>=0) tree[y] = tree[seq]; } else { gentopfunc(x,n,fun,pfun); gentopfunc(y,n,fun,pfun); } break; case Ffunction: { int nf; if (x==OPn) { if (tree[y].f==Fsmall) { tree[n]=tree[y]; tree[n].x=-tree[n].x; break; } else if (tree[y].f==Fconst) { value_t *val = value + tree[y].x; if (val->type==CSTsmall || val->type==CSTsmallreal) { tree[n]=tree[y]; val->val.small=-val->val.small; break; } } } nf = findfunction(entryname(n)); if (nf>=0 && lfunc[nf].spec<0) topfuncproto(n,fun,pfun,nf); gentopfunc(y,n,fun,pfun); } break; case Fentry: case Fconst: case Fsmall: case Fnoarg: break; case Frefarg: case Ftag: gentopfunc(x,n,fun,pfun); break; default: if (tree[n].f>=FneedENTRY) die(n,"Internal error: unknown func %s in gentopfunc",funcname(tree[n].f)); else { gentopfunc(x,n,fun,pfun); gentopfunc(y,n,fun,pfun); } } } gp2c-0.0.14/src/parse.y0000644000175000017500000002067514532107402011453 00000000000000%{ /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #define YYDEBUG 1 #include "config.h" #include #include #include #include "header.h" int yyerror(const char *s); int yylex(void); static int once=0; static int newcommand(int x, int y) { return (x==GNOARG)?y:(y==GNOARG)?x:newnode(Fseq,x,y); } %} %define parse.error verbose %union { int val; strcom str; } %token KPARROW ")->" %token KARROW "->" %token KDOTDOT ".." %token KPE "+=" %token KSE "-=" %token KME "*=" %token KDE "/=" %token KDRE "\\/=" %token KEUCE "\\=" %token KMODE "%=" %token KAND "&&" %token KOR "||" %token KID "===" %token KEQ "==" %token KNE "!=" %token KGE ">=" %token KLE "<=" %token KSRE ">>=" %token KSLE "<<=" %token KSR ">>" %token KSL "<<" %token KDR "\\/" %token KPP "++" %token KSS "--" %token KINTEGER "integer" %token KREAL "real number" %token KENTRY "variable name" %token KSTRING "character string" %left '\n' %left SEQ DEFFUNC %left INT LVAL %right ")->" "->" %left ';' ',' %right '=' "+=" "-=" "*=" "/=" "\\/=" "\\=" "%=" ">>=" "<<=" %left '&' "&&" "||" %left "===" "==" "!=" '>' ">=" '<' "<=" %left '+' '-' %left '%' "\\/" '\\' '/' '*' ">>" "<<" %left SIGN %right '^' %left '#' %left '!' '~' '[' DERIV %left '\'' %left '.' MAT %left "++" "--" %left '(' %left ':' %type commands seq %type range matrix matrix_index expr exprno %type lvalue deriv %type matrixelts matrixeltsno matrixlines arg listarg definition %type funcid memberid %type backticks history %type compr in inseq %% commands: seq {$$=$1;} | commands '\n' seq {$$=newcommand($1,$3);} ; seq: /**/ %prec SEQ {$$=GNOARG;} | expr %prec SEQ {$$=$1;} | seq ';' {$$=$1;} | seq ';' expr {$$=newcommand($1,$3);} ; range: /* */ { $$=newnode(Frange,GNORANGE,GNORANGE); } | expr { $$=newnode(Frange,$1,GNORANGE); } | expr ".." expr { $$=newnode(Frange,$1,$3); } | '^' expr { $$=newnode(Frange,GNORANGE,$2); } ; matrix_index: '[' range ',' range ']' {$$=newnode(Fmatrix,$2,$4);} | '[' range ']' {$$=newnode(Fmatrix,$2,-1);} ; backticks: '`' {$$=1;} | backticks '`' {$$=$1+1;} ; history: '%' {$$=newopcall(OPhist,-1,-1);} | '%' KINTEGER {$$=newopcall(OPhist,newintnode($2.s,$2.c),-1);} | '%' backticks {$$=newopcall(OPhist,newnode(Fsmall,-$2,-1),-1);} | '%' '#' {$$=newopcall(OPhisttime,-1,-1);} | '%' '#' KINTEGER {$$=newopcall(OPhisttime,newintnode($3.s,$3.c),-1);} | '%' '#' backticks{$$=newopcall(OPhisttime,newnode(Fsmall,-$3,-1),-1);} ; deriv: '\'' {$$ = 1;} | deriv '\'' {$$ = $1+1;} ; expr: KINTEGER %prec INT {$$=newintnode($1.s,$1.c);} | KREAL {$$=newrealnode($1.s,$1.c);} | '.' {$$=newnode(Fconst,newsmallrealvalue(0),-1);} | KINTEGER '.' KENTRY {$$=newnodecom(Ffunction,newmember($3.s),newintnode($1.s,$1.c), $3.c);} | KSTRING {$$=newstringnode($1.s,$1.c);} | '\'' KENTRY {$$=newquotenode($2.s,$2.c);} | history {$$=$1;} | expr '(' listarg ')' {$$=newnode(Fcall,$1,$3);} | funcid {$$=$1;} | lvalue %prec LVAL {$$=$1;} | matrix {$$=$1;} | compr {$$=$1;} | definition {$$=$1;} | matrix '=' expr {$$=newnode(Fassign,$1,$3);} | lvalue '=' expr {$$=newnode(Fassign,$1,$3);} | lvalue "++" {$$=newopcall(OPpp,$1,-1);} | lvalue "--" {$$=newopcall(OPss,$1,-1);} | lvalue "*=" expr {$$=newopcall(OPme,$1,$3);} | lvalue "/=" expr {$$=newopcall(OPde,$1,$3);} | lvalue "\\/=" expr {$$=newopcall(OPdre,$1,$3);} | lvalue "\\=" expr {$$=newopcall(OPeuce,$1,$3);} | lvalue "%=" expr {$$=newopcall(OPmode,$1,$3);} | lvalue "<<=" expr {$$=newopcall(OPsle,$1,$3);} | lvalue ">>=" expr {$$=newopcall(OPsre,$1,$3);} | lvalue "+=" expr {$$=newopcall(OPpe,$1,$3);} | lvalue "-=" expr {$$=newopcall(OPse,$1,$3);} | '!' expr {$$=newopcall(OPnb,$2,-1);} | '#' expr {$$=newopcall(OPlength,$2,-1);} | expr "||" expr {$$=newopcall(OPor,$1,$3);} | expr "&&" expr {$$=newopcall(OPand,$1,$3);} | expr '&' expr {$$=newopcall(OPand,$1,$3);} | expr "===" expr {$$=newopcall(OPid,$1,$3);} | expr "==" expr {$$=newopcall(OPeq,$1,$3);} | expr "!=" expr {$$=newopcall(OPne,$1,$3);} | expr ">=" expr {$$=newopcall(OPge,$1,$3);} | expr '>' expr {$$=newopcall(OPg,$1,$3);} | expr "<=" expr {$$=newopcall(OPle,$1,$3);} | expr '<' expr {$$=newopcall(OPl,$1,$3);} | expr '-' expr {$$=newopcall(OPs,$1,$3);} | expr '+' expr {$$=newopcall(OPp,$1,$3);} | expr "<<" expr {$$=newopcall(OPsl,$1,$3);} | expr ">>" expr {$$=newopcall(OPsr,$1,$3);} | expr '%' expr {$$=newopcall(OPmod,$1,$3);} | expr "\\/" expr {$$=newopcall(OPdr,$1,$3);} | expr '\\' expr {$$=newopcall(OPeuc,$1,$3);} | expr '/' expr {$$=newopcall(OPd,$1,$3);} | expr '*' expr {$$=newopcall(OPm,$1,$3);} | '+' expr %prec SIGN {$$=newopcall(OPpl,$2,-1);} | '-' expr %prec SIGN {$$=newopcall(OPn,$2,-1);} | expr '^' expr {$$=newopcall(OPpow,$1,$3);} | expr '~' {$$=newopcall(OPtrans,$1,-1);} | expr deriv %prec DERIV { $$=newderivn($1,$2); } | expr '!' {$$=newopcall(OPfact,$1,-1);} | expr '#' {$$=newopcall(OPprim,$1,-1);} | expr matrix_index %prec MAT {$$=newnode(Fmatcoeff,$1,$2);} | memberid {$$=$1;} | expr ':' KENTRY {$$=newtag($1,$3.s,$3.c);} | '(' expr ')' {$$=$2;} ; lvalue: KENTRY %prec LVAL {$$=newnodecom(Fentry,newentry($1.s),-1,$1.c);} | lvalue matrix_index {$$=newnode(Fmatcoeff,$1,$2);} | lvalue ':' KENTRY {$$=newtag($1,$3.s,$3.c);} ; exprno: expr {$$=$1;} | /**/ {$$=GNOARG;} ; matrixeltsno: matrixelts {$$=$1;} | /**/ {$$=GNOARG;} ; matrixelts: expr {$$=$1;} | matrixeltsno ',' exprno {$$=newnode(Fmatrixelts,$1,$3);} ; matrixlines: matrixelts ';' matrixelts {$$=newnode(Fmatrixlines,$1,$3);} | matrixlines ';' matrixelts {$$=newnode(Fmatrixlines,$1,$3);} ; matrix: '[' ']' {$$=newnode(Fvec,-1,-1);} | '[' expr ".." expr ']' {$$=newopcall(OPrange,$2,$4);} | '[' ';' ']' {$$=newnode(Fmat,-1,-1);} | '[' matrixelts ']' {$$=newnode(Fvec,$2,-1);} | '[' matrixlines ']' {$$=newnode(Fmat,$2,-1);} | '[' error ']' {YYABORT;} ; in: lvalue '<' '-' expr {$$=newnode(Flistarg,$4,$1);} ; inseq: in {$$=newopcall(OPcompr,$1,-2);} | in ',' expr {$$=newopcall3(OPcompr,$1,-2,$3);} | in ';' inseq {$$=newopcall(OPcomprc,$1,$3);} | in ',' expr ';' inseq {$$=newopcall3(OPcomprc,$1,$5,$3);} ; compr: '[' expr '|' inseq ']' {$$=addcurrexpr($4,$2);} ; arg: seq {$$=$1;} | lvalue '[' ".." ']' {$$=newnode(Fvararg,$1,-1);} | '&' lvalue {$$=newnode(Frefarg,$2,-1);} | '~' lvalue {$$=newnode(Findarg,$2,-1);} | arg error {if (!once) { yyerrok; s_errors.n--;} once=1;} expr {once=0; $$=newopcall(OPcat,$1,$4);} ; listarg: arg {$$=$1;} | listarg ',' arg {$$=newnode(Flistarg,$1,$3);} ; funcid: KENTRY '(' listarg ')' {$$=newnodecom(Ffunction,newentry($1.s),$3,$1.c);} ; memberid: expr '.' KENTRY {$$=newnodecom(Ffunction,newmember($3.s),$1,$3.c);} ; definition: funcid '=' seq %prec DEFFUNC {$$=newnode(Fdeffunc,$1,$3);} | memberid '=' seq %prec DEFFUNC {$$=newnode(Fdeffunc,$1,$3);} | lvalue "->" seq {$$=newnode(Flambda, $1,$3);} | '(' listarg ")->" seq {$$=newnode(Flambda, $2,$4);} ; %% int yyerror(const char *s) { int n=stack_new(&s_errors); errors[n].fileno=filecount; errors[n].lineno=linecount; errors[n].txt=strdup(s); if (yydebug) fprintf(stderr,"%s:%d: %s\n",srcfile[filecount],linecount,s); return 0; } gp2c-0.0.14/src/stack.h0000644000175000017500000000213613623476440011430 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ extern int debug_stack; typedef struct { long offset; int n; int alloc; size_t size; } stack; void **stack_base(stack *s); void stack_init(stack *s, int size, void **data); int stack_new(stack *s); void stack_pop(stack *s); void stack_pop_safe(stack *s, int n); void stack_push(stack *s, stack *t); void stack_replace(stack *s, stack *t); void stack_push_int(stack *s, int val); int stack_has_int(stack *s, int val); void stack_remove_int(stack *s, int val); void stack_int_sort(stack *s); void stack_int_merge(stack *s, stack *t); gp2c-0.0.14/src/genfunc.c0000644000175000017500000004471414204164220011735 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int newcvar=1; /*Use getfunc or newuserfunc instead*/ static int newfunc(const char *gpname) { int nf=stack_new(&s_func); gpfunc *f=lfunc+nf; f->gpname=gpname; f->proto.cname=gpname; f->proto.code=NULL; f->proto.origin=NULL; f->proto.help=-1; f->node=newnode(Ffun,nf,-1); functype(*f)=Gempty; funcmode(*f)=0; f->spec=GPpari; f->iter=NULL; f->wrap=NULL; f->dsc=NULL; f->user=NULL; return nf; } int newuserfunc(const char *gpname) { int nf=newfunc(gpname); gpfunc *f=lfunc+nf; userfunc *uf; if (gpname[0]=='_' && gpname[1]=='.') { char *s=strdup(gpname); s[0]='m'; s[1]='_'; f->proto.cname=usercname(s); if (s!= f->proto.cname) free(s); } else f->proto.cname=usercname(gpname); f->spec=GPuser; f->proto.origin=namelib; uf=f->user=(userfunc*) malloc(sizeof(*f->user)); stack_init(&uf->v,sizeof(*uf->var),(void **)&uf->var); stack_init(&uf->g,sizeof(*uf->gcvar),(void **)&uf->gcvar); return nf; } int findfunction_len(const char *s, size_t n) { int i; for(i=0; i=0 && !lfunc[n].dsc) die(err_desc,"Function %s has no description",s); return n; } int findfunctype(const char *s) { int nf=findfuncdesc(s); gpdescarg *da=descfindrules(0,NULL,lfunc+nf); return da->type; } int findfunctypeopt(const char *s) { gpdescarg *da; int nf=findfuncdescopt(s); if (nf<0) return -1; da=descfindrules(0,NULL,lfunc+nf); return da->type; } int getfunc(const char *gpname) { int r=findfunction(gpname); if (r>=0) return r; return newfunc(strdup(gpname)); } void genprec(FILE *fout, int level) { if (level) { char buf[64]; sprintf(buf, "bitprec%d", level); if (getvarbyname(buf)>=0) fprintf(fout, "nbits2prec(%s)",buf); else if (getvarbyname(buf+3)>=0) fprintf(fout, "%s",buf+3); else die(-1,"Internal error: prec not found!"); } else fprintf(fout, "prec"); } void genbitprec(FILE *fout, int level) { if (level) { char buf[64]; sprintf(buf, "bitprec%d", level); if (getvarbyname(buf)>=0) fprintf(fout, "%s",buf); else if (getvarbyname(buf+3)>=0) fprintf(fout, "prec2nbits(%s)",buf+3); else die(-1,"Internal error: prec not found!"); } else fprintf(fout, "prec2nbits(prec)"); } void genautoarg(FILE *fout, char c, int nerr) { switch(c) { case 'p': genprec(fout, preclevel); break; case 'b': genbitprec(fout, preclevel); break; case 'P': fprintf(fout,"precdl"); break; default: die(nerr,"unhandled letter '%c' in prototype",c); } } int genarg(int nerr, FILE *fout, char c, int n, PPproto pr) { if (n==-1) die(n,"missing mandatory argument in function call"); switch(c) { case 'I': case 'E': case 'G': gencast(fout,n,Ggen); return 1; case 'U': gencast(fout,n,Gusmall); return 1; case 'L': case 'P': gencast(fout,n,Gsmall); return 1; case '&': if (tree[n].f!=Frefarg && pr == PPdefault) die(nerr,"Missing & for reference"); case '*': /* Fall through */ fprintf(fout,"&"); gencode(fout,n); return 1; case 'W': if (tree[n].f==Findarg) n=tree[n].x; gencode(fout,n); return 1; case 'r': case 's': gencast(fout,n,Gstr); return 1; case 'n': gencast(fout,n,Gvar); return 1; default: die(nerr,"Unsupported letter `%c' in prototype.\n" "This function is not supported by the compiler." ,c); return 0; } } void gendefarg(int n, FILE *fout, char c, const char *name) { switch(c) { case 'G': case '&': case 'r': case 's': case 'E': case 'I': case 'V': fprintf(fout,"NULL"); break; case 'n': fprintf(fout,"-1"); break; case 'P': fprintf(fout,"precdl"); break; default: die(n,"Unknown default in prototype code `%c' for `%s'",c,name); } } void gendefargmulti(FILE *fout, char const *q, char const *p) { for(p++;puser; context *fc=block+gp->user->bl; int narg = ufunc->narg; if (narg && fc->c[ufunc->sarg+narg-1].flag&(1<proto.cname); for(j=0;jc+ufunc->sarg+j; int t=vartype(*v); if (firstarg) fprintf(fout,", "); firstarg=1; if (v->flag&(1<=0 && arg[j]!=GNOARG) gencast(fout,arg[j],t); else if (v->flag&(1<initval<0) die(n,"a mandatory argument is missing"); else gencast(fout,v->initval,t); } if (funcmode(*gp)&(1<= 0) { gpfunc *gp=lfunc+nf; if (gp->spec==0) { genuserfunc(fout,n,nf); return; } else if (gp->spec>0) { genentryspec(fout,n,gp); return; } nb=genlistargs(n,stack,0,STACKSZ); if (genfunc(fout,nb,stack,nf,n)==0) return; if (gp->dsc) { int i; for(i=0;iproto.cname) name=gp->proto.cname; } else if (FC_call>=0 && v>=0) { nb=genlistargs(n,stack+1,0,STACKSZ-1)+1; stack[0] = ctxstack[v].node; if (!genfuncbydesc(fout,nb,stack,FC_call,n)) return; } /*copy verbatim*/ nb=genlistargs(n,stack,0,STACKSZ); fprintf(fout,"%s(",name); for(i=0;icvar); } void genvarproto(FILE *fout, int n, int nerr) { if (genfuncbydesc1(fout,n,FC_decl_base,nerr)) die(nerr,"type not suitable for a variable"); fprintf(fout," "); if (genfuncbydesc1(fout,n,FC_decl_ext,nerr)) gencode(fout,n); } void genfuncproto(FILE *fout, int nf, const char *sep, int nerr) { gpfunc *gp=lfunc+nf; int n=gp->node; if (genfuncbydesc1(fout,n,FC_decl_base,nerr)) die(nerr,"type not suitable for a function"); fprintf(fout,"%s",sep); if (genfuncbydesc1(fout,n,FC_decl_ext,nerr)) gencode(fout,n); } static void gendecvarend(FILE *fout, int t) { if (t>=0) { if (t!=Ggen && t!=Gsmall && t!=Gpari_sp && t!=Gvoid) fprintf(fout,";\t /* %s */\n",GPname(t)); else fprintf(fout,";\n"); } } void gendecvar(FILE *fout, context *fc, int nerr) { int oldt=-1; int idx; if (fc->s.n>0) genlineno(fout, fc->c->node); for(idx=0;idxs.n;idx++) { ctxvar *v=fc->c+idx; int t=vartype(*v); if ((v->flag&(1<val!=-1) continue; if (v->flag&(1<s.n-1) genlineno(fout, (v+1)->node); genindent(fout); if (genfuncbydesc1(fout,v->node,FC_decl_base,nerr)) die(nerr,"type `%s' not suitable for a variable",GPname(t)); fprintf(fout, " "); } else fprintf(fout, ", "); if (genfuncbydesc1(fout,v->node,FC_decl_ext,nerr)) gencode(fout,v->node); if (v->initval>=0) { fprintf(fout," = "); gencast(fout,v->initval,vartype(*v)); } else if (ctype[t]==Vgen && autogc) { /* We want to protect gerepile from uninitialized values*/ fprintf(fout," = "); gencast(fout, GNIL, Ggen); } oldt=t; } gendecvarend(fout,oldt); } static void genprotoargs(FILE *fout, int nf, int firstarg, int nb, int *name) { gpfunc *gp=lfunc+nf; int i = 0; char const *p=gp->proto.code; char c; PPproto mod; while((mod=parseproto(&p,&c))) { if (firstarg) fprintf(fout,", "); firstarg=1; switch(c) { case 'b': case 'p': case 'P': case 'L': case 'n': fprintf(fout,"long"); break; case 'U': fprintf(fout,"ulong"); break; case 'f': fprintf(fout,"long *"); break; case 'W': case 'G': case 'E': case 'I': fprintf(fout,"GEN"); break; case 'F': case '*': case '&': fprintf(fout,"GEN *"); break; case 'r': case 's': fprintf(fout,"const char *"); break; default: die(err_func,"prototype letter `%c' not known",c); } if (name) { fputs(" ",fout); if (c=='p') fprintf(fout,"prec"); else if (c=='b') fprintf(fout,"bitprec"); else { if (i>=nb) die(err_func,"too few arguments in lambda"); gencode(fout, name[i++]); } } } if (name && iuser->defnode; int savc=s_ctx.n; context *fc=block+gp->user->bl; if (gp->user->flag&(1<s.n;i++) { ctxvar *v=fc->c+i; if( v->flag&(1<node, nerr); if (v->initval>=0 && !(v->flag&(1<proto.code; char c; PPproto mod; while((mod=parseproto(&p,&c))) { switch(c) { case 'b': case 'p': case 'P': case 'L': t = Gsmall; break; case 'n': t = Gvar; break; case 'W': case 'G': case 'E': case 'I': t = Ggen; break; case 'r': case 's': t = Gstr; break; default: die(err_func,"prototype letter `%c' not known",c); } if (c=='p' || c=='b') { if (mode&(1<=nb) die(err_func,"too few arguments in lambda"); if (!firstarg) fprintf(fout,", "); firstarg=0; ot = tree[name[i]].t; tree[name[i]].t = t; gencast(fout, name[i], ot); tree[name[i]].t = ot; i++; } } if (name && iuser->defnode; int savc=s_ctx.n; int stack[STACKSZ]; int nb=0, nbc=0, par=0; int res; ctxvar *vres; context *fc=block+gp->user->bl; gpdescarg *rule; if (!wr->proto.code) die(wr->node,"Wrapper not defined"); pushctx(fc); for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if( v->flag&(1<flag&(1<node; } } fprintf(fout,"static "); genfuncbydesc1(fout,wr->node,FC_decl_base,nerr); fprintf(fout,"\nwrap_%s(void * _cargs",gp->proto.cname); genprotoargs(fout, wrap, 1, nb, stack); fprintf(fout,")\n{\n"); indent++; if (nbc || has_prec) { genindent(fout); fprintf(fout,"GEN _args = (GEN) _cargs;\n"); } res = pushvar(newnode(Fentry, newentry("_res"), -1), 0, t, -1); vres = ctxstack+res; genindent(fout); if (ctype[t]==ctype[Gvoid]) fprintf(fout,"(void) "); else { genfuncbydesc1(fout,vres->node,FC_decl_base,nerr); fprintf(fout," "); if (genfuncbydesc1(fout,vres->node,FC_decl_ext,nerr)) gencode(fout,vres->node); fprintf(fout," = "); } fprintf(fout,"%s(",gp->proto.cname); firstarg=genwrapargs(fout, wrap, nb, stack, m); for (i=0,d=1;is.n;i++) { ctxvar *v=fc->c+i; if (v->flag&(1<node, wr); if (rule) { if (rule->type==Gvoid) gencodedesc(fout,1, &vres->node, rule, nerr, nf); else { fprintf(fout,"return "); gencodedesc(fout,1, &vres->node, rule, nerr, nf); fprintf(fout,";\n"); } } fprintf(fout,"}\n\n"); indent--; s_ctx.n=savc; } void gendeffunc(FILE *fout, int n) { int funcid=tree[n].x; int seq=tree[n].y; const char *name=entryname(funcid); int savcf=currfunc; gpfunc *gp; int t; /*get func number and context*/ currfunc=findfunction(name); newcvar=1; if (currfunc==-1) die(n,"Internal error in gendeffunc : func %s not found",name); gp=lfunc+currfunc; gencomment(fout,funcid,0); genlineno(fout, funcid); genprototype(fout,currfunc,1); t=functype(*gp); if (t!=Ggen && t!=Gsmall) fprintf(fout,"\t /* %s */",GPname(t)); fprintf(fout,"\n"); gencode(fout,seq); fprintf(fout,"\n"); if (gp->user->wrapper>=0) genwrapper(fout,currfunc,gp->user->wrapper); currfunc=savcf; } void gendefblock(FILE *fout, int n) { int b=tree[n].x; int seq=tree[n].y; int i; int m; int savc; int level = preclevel; context *fc=block+b; savc=s_ctx.n; for(i=0;is.n;i++) { ctxvar *v=fc->c+i; int t=vartype(*v); if ((v->flag&(1<val!=-1) continue; if (t!=Gvoid && isdigit(*varstr(*v))) { char s[33]; sprintf(s,"%c%d",(ctype[t]==Vgen?'p':'l'),newcvar++); v->cvar=strdup(s); } } pushctx(fc); m=tree[n].m; if(!(m&(1< #include #include #include #include #include "header.h" #define GP2C_MAX_INT_32 2147483647L const char *Ffuncname[]={"Fseq", "Fmatrix","Frange","Fnorange", "Fassign", "Fmatcoeff", "Fmatrixelts","Fmatrixlines", "Fmat","Fvec", "Flistarg", "Frefarg","Findarg","Fvararg", "Fcall", "Fconst","Fsmall","Fnoarg", "Ftag", "Fentry","Ffunction","Flambda","Fdeffunc", /*These nodes are generated by genblock, not by parser*/ "Fblock", "Ffun" }; /* 0 not an integer * 1 a true integer * 2 a real which is an integer (1.,17.00) */ int isarealint(const char *s) { while (*s>='0' && *s<='9') s++; if (!*s) return 1; if (*s != '.') return 0; while(*++s) if (*s != '0') return 0; return 2; } int newsrcfile(char *f) { int n=stack_new(&s_srcfile); srcfile[n]=f; return n; } int newcomment(void) { int n=stack_new(&s_comment); comment *c=com+n; stack_init(&c->s,sizeof(*c->txt),(void **)&c->txt); return n; } void pushcomment(int n, char x) { comment *c=com+n; int m=stack_new(&c->s); c->txt[m]=x; } int newnodeall(Ffunc f, int x, int y, int file, int line, int com) { int n=stack_new(&s_node); tree[n].f=f; tree[n].x=x; tree[n].y=y; tree[n].t=Gnotype; tree[n].m=0; tree[n].fileno=file; tree[n].lineno=line; tree[n].comment=com; return n; } int newnodecom(Ffunc f, int x, int y, int com) { return newnodeall(f,x,y,filecount,linecount,com); } int newnode1(Ffunc f, int x, int y) { return newnodeall(f,x,y,tree[x].fileno,tree[x].lineno,-1); } int newnode(Ffunc f, int x, int y) { return newnodeall(f,x,y,filecount,linecount,-1); } int newsmall(int val) { return newnode(Fsmall,val,-1); } int newopcall(OPerator op, int x, int y) { if (y==-1) return newnode(Ffunction,op,x); else return newnode(Ffunction,op,newnode(Flistarg,x,y)); } int newopcall3(OPerator op, int x, int y, int z) { return newopcall(op,newnode(Flistarg,x,y),z); } int newderivn(int x, int n) { if (FC_derivn >= 0) x=newopcall(OPderivn,x, newnode(Fsmall,n,-1)); else { long i; for(i=1; i<=n; i++) x=newopcall(OPderiv, x, -1); } return x; } static int countarg(int n) { int i; for(i=1; tree[n].f==Flistarg; i++) n = tree[n].x; return i; } int addcurrexpr(int n, int currexpr) { int y, m = n; while (tree[m].x==OPcomprc) { y = tree[m].y; if (countarg(y)==4) y = tree[y].x; m = tree[y].y; } y = tree[m].y; if (countarg(y)==4) y = tree[y].x; tree[y].y = currexpr; return n; } int newstringvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTstr; value[n].val.str=s; return n++; } int newsmallrealvalue(long small) { int n=stack_new(&s_value); value[n].type=CSTsmallreal; value[n].val.small=small; return n++; } int newintvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTint; value[n].val.str=s; return n++; } int newrealvalue(const char *s) { int n=stack_new(&s_value); value[n].type=CSTreal; value[n].val.str=s; return n++; } /* newxxxnode functions * These functions take a token value as a string and a comment index. * They must return a new Fconst or Fsmall node. * They must free the string if they do not reference it. * the cast free((char *)s) is to remove the const qualifier. */ int newintnode(const char *s, int c) { long small; char *endptr; /* We do not want to inline 64bit integers to preserve the portability * of the resulting C code.*/ errno=0;/* for catching strtol overflows*/ small=strtol(s,&endptr,10); if (!*endptr && !errno && small<=GP2C_MAX_INT_32) { free((char *)s); return newnodecom(Fsmall,small,-1,c); } else return newnodecom(Fconst,newintvalue(s),-1,c); } int newrealnode(const char *s, int c) { char *endptr; int val; if (!isarealint(s)) val=newrealvalue(s); else { long small; errno=0;/* for catching strtol overflows*/ small=strtol(s,&endptr,10); if (*endptr=='.' && !errno && small<=GP2C_MAX_INT_32) { val=newsmallrealvalue(small); free((char *)s); } else val=newrealvalue(s); } return newnodecom(Fconst,val,-1,c); } int newstringnode(const char *s, int c) { return newnodecom(Fconst,newstringvalue(s),-1,c); } int newquotenode(const char *s, int c) { return newcall("_const_quote",newstringnode(s,c)); } int is_const(int n, CSTtype t) { int f=tree[n].f; int x=tree[n].x; return f==Fconst && value[x].type==t; } int newentry(const char *s) { return newstringvalue(s); } int isfunc(int n, const char *s) { return tree[n].f==Ffunction && !strcmp(s,value[tree[n].x].val.str); } const char *usercname(const char *s) { const char *p; if (!optprefix) { if (s[0]=='p' || s[0]=='l') { for(p=s+1; *p=='_'; p++); if (isdigit(*p)) { for ( ; isdigit(*p); p++); if (!*p) { char *q=calloc(sizeof(*s),2+strlen(s)); sprintf(q,"%c_%s",s[0],s+1); return q; } } } } else { char *q=calloc(sizeof(*s),strlen(optprefix)+1+strlen(s)); sprintf(q,"%s%s",optprefix,s); return q; } return s; } int newmember(const char *s) { char *p; int n; p=calloc(sizeof(*s),3+strlen(s)); sprintf(p,"_.%s",s); n=newentry(p); free((char *)s); return n; } void initoperators(void) { int i; for (i=0;it) die(n,"Unknown type '%s' or unexpected ':'",s); return n; } int detag(int n) { while(tree[n].f==Ftag) n=tree[n].x; return n; } int getlvaluerr(int n) { int ret=getlvalue(n); if (ret==-1) die(n,"not an lvalue"); return ret; } int newctype(const char *s) { int n=stack_new(&s_Ctype); Ctype[n].name=strdup(s); return n; } int strtoctype(const char *s) { int i; for(i=0;i= 8*sizeof(long)) die(err_desc,"GP2C only supports %ld modes",8*sizeof(long)); Mmode[n].name=strdup(s); return n; } int strtomode(char *s) { int i; for(i=0;iFlastfunc) return "Funknown"; else return Ffuncname[f]; } const char *GPname(int f) { if (f<0 || f>s_GPtype.n) return "Gunknown"; else return GPtype[f].name; } static int currlabel=0; int newlabel(int type) { int n=stack_new(&s_label); label[n].num=currlabel; label[n].type=type; label[n].go=0; label[n].ne=0; currlabel+=2; return n; } gp2c-0.0.14/src/optable.h0000644000175000017500000000250714532107352011744 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ typedef enum {OPor, OPand, OPid, OPeq, OPne, OPge, OPg, OPle, OPl, OPs, OPp, OPsl, OPsr, OPmod, OPdr, OPeuc, OPd, OPm, OPpow, OPcat, OPss, OPpp, OPse ,OPpe ,OPsle ,OPsre ,OPmode ,OPdre ,OPeuce ,OPde ,OPme, OPpl, OPn, OPnb, OPfact, OPprim, OPderivn, OPtrans, OPrange, OPcompr, OPcomprc, OPhist, OPhisttime, OPlength, OPcoeff, OPderiv, OPnboperator} OPerator; #ifndef TYPE extern const char *opname[]; #else const char *opname[]={"_||_", "_&&_", "_===_", "_==_", "_!=_", "_>=_", "_>_", "_<=_", "_<_", "_-_","_+_","_<<_", "_>>_", "_%_", "_\\/_", "_\\_", "_/_", "_*_","_^_","__","_--","_++","_-=_", "_+=_", "_<<=_", "_>>=_", "_%=_", "_\\/=_", "_\\=_", "_/=_", "_*=_","+_","-_","!_","_!","_#","_'_","_~","[_.._]","[_|_<-_,_]","[_|_<-_,_;_]","%","%#","#_","_[_,_]","_'", ""}; #endif gp2c-0.0.14/src/gencode.c0000644000175000017500000002424513623476440011727 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" void genindent(FILE *fout) { int i; for (i=0;is.n-1;i++) { if (c->txt[i]=='\n') { if (!flag) fputc('\n',fout); genindent(fout); while(c->txt[i+1]==' ' || c->txt[i+1]=='\t') i++; } else fputc(c->txt[i],fout); } if (c->txt[i]=='\n') { if (!flag) fputc('\n',fout); if (!(tree[n].m&(1<txt[i],fout); } void gensemicolon(FILE *fout, int x) { if (x!=-1 && !(tree[x].m&(1<proto.help; int nb, i; if (h<0) return; fprintf(fout,"GP;addhelp(%s%s, \"", gp->gpname,(optsuffix?optsuffix:"")); nb=genlistcats(h,stack,STACKSZ); for(i=0;iuser->bl; if (!descfindrules1(gp->node, FC_proto_ret)) return 1; for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if ( v->flag&(1<node, FC_proto_code)) nargs++; else return 1; } } if (max_args>0 && nargs>max_args) return 1; return 0; } /*If there is no suitable GP prototype, just print nothing*/ void geninstall(FILE *fout, int nf) { int i; gpfunc *gp=lfunc+nf; if(gp->spec==GPuser) { context *fc=block+gp->user->bl; if (checkinstall(gp)) return; fprintf(fout,"GP;install(\"%s\",\"",gp->proto.cname); genfuncbydesc1(fout,gp->node,FC_proto_ret,-1); for (i=0;is.n;i++) { ctxvar *v=fc->c+i; if ( v->flag&(1<flag&(1<flag&(1<node,FC_proto_code,-1); } else if (v->initval<0) genfuncbydesc1(fout,v->node,FC_proto_code,-1); else { fputc('D',fout); printnode(fout,v->initval); fputc(',',fout); genfuncbydesc1(fout,v->node,FC_proto_code,-1); fputc(',',fout); } } } if (funcmode(*gp)&(1<proto.cname); genfuncbydesc1(fout,gp->node,FC_proto_ret,-1); fprintf(fout,"%s",gp->proto.code); } /* Member function has a gpname of "_.func" which is not a valid * GP func name. * we use "m_" instead. */ if( gp->gpname[0]=='_' && gp->gpname[1]=='.' ) fprintf(fout,"\",\"m_%s%s\"",gp->gpname+2,(optsuffix?optsuffix:"")); else fprintf(fout,"\",\"%s%s\"",gp->gpname,(optsuffix?optsuffix:"")); if (gp->proto.origin) fprintf(fout,",\"%s\"",gp->proto.origin); fprintf(fout,");\n"); } const char * genoutfile(void) { if (outfile) { long n = strlen(outfile); if (n > 2 && outfile[n-1]=='c' && outfile[n-2]=='.') { char *s = strdup(outfile); s[n-2] = 0; return s; } } return strdup(nameparse); } void genheader(FILE *fout) { int i; const char *file = genoutfile(); char * modb; fprintf(fout,"/*-*- compile-command: \""); modb = malloc(strlen(PARI_MODULE_BUILD)+4*strlen(file)+1); sprintf(modb,PARI_MODULE_BUILD,file,file,file,file); free((void*)file); for (i=0; modb[i]; i++) { if (modb[i]=='"') fputc('\\', fout); fputc(modb[i], fout); } free((void*)modb); fprintf(fout,"\"; -*-*/\n"); fprintf(fout,"#include \n"); fprintf(fout,"/*\n"); for(i=0;iflag&(1<flag&(1<node,v->node); fprintf(fout,";\n"); } fprintf(fout,"/*End of global vars*/\n\n"); } } void gencode(FILE *fout, int n) { int x=tree[n].x; int y=tree[n].y; if (n<0) return; if (tree[n].comment>=0) { if (tree[n].m&(1<=3) fprintf(fout,"/*%s:%d*/",GPname(tree[n].t),tree[n].m); switch(tree[n].f) { case Fseq: genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); genindentseq(fout,y); gencode(fout,y); gensemicolon(fout,y); break; case Fassign: genfacteuraff(fout,x,y); break; case Fconst: { long val=value[x].val.small; const char *str=value[x].val.str; long typ=value[x].type; switch (typ) { case CSTsmall: fprintf(fout,"%ld",val); break; case CSTsmallreal: { int arg=newsmall(val); tree[arg].t=Gsmall; if (genfuncbydesc1(fout,arg,FC_const_smallreal,n)) die(n,"Bad description for _const_smallreal"); stack_pop_safe(&s_node,arg); } break; case CSTint: case CSTreal: { int arg=newstringnode(str,-1); int fc=FC_const_expr; tree[arg].t=Gstr; if (FC_const_real>=0 && typ==CSTreal) fc=FC_const_real; if (genfuncbydesc1(fout,arg,fc,n)) die(n,"Bad description for _const_expr"); stack_pop_safe(&s_value,tree[arg].x); stack_pop_safe(&s_node,arg); } break; case CSTstr: genstring(fout,str); break; } break; } case Fsmall: fprintf(fout,"%d",tree[n].x); break; case Frefarg: gencode(fout,x); break; case Findarg: gencode(fout,x); break; case Fentry: genentry(fout,n); break; case Ffun: { gpfunc *gp=lfunc+tree[n].x; fprintf(fout,"%s",gp->proto.cname); } break; case Ffunction: genentryfunc(fout,n); break; case Fdeffunc: gendeffunc(fout,n); break; case Fblock: gendefblock(fout,n); break; case Fnoarg: fputc('0',fout); break; case Fnorange: if (FC_norange >= 0) genfuncbydesc(fout, 0, NULL, FC_norange, n); else fprintf(fout,"0"); break; case Ftag: gencast(fout,x,y); break; default: die(n,"Internal error : unknown func %s in gencode",funcname(tree[n].f)); break; } } void genparensg(FILE *fout, int n) { if (n!=-1 && (tree[n].m&(1< #include #include #include #include "header.h" void gencastf(FILE *fout, int n, int nt, int f) { int t=tree[n].t; int tnt=typemax[t][nt]; int i; if (t==nt) { /*bottom of the recursion*/ if (f) genparens(fout,n); else gencode(fout,n); return; } if (gencastcode(fout,n,t,nt,f)) return; /*the interesting case */ if (is_subtype(t,nt)) for (i=0;i%s",GPname(t),GPname(nt)); for(i=0;i%s",GPname(t),GPname(nt)); } void gencast(FILE *fout, int n, int nt) { if (ntdsc; for(i=0; inb; i++) { gpdescarg *rule=dsc->a+i; descargatom atom=rule->args[0]; if (rule->type!=nt || (atom.mode&tree[n].m)!=atom.mode) continue; switch(atom.t) { case AAherevalue: if(tree[n].f!=Fsmall && tree[n].f!=Fconst) continue; case AAtype: if(atom.type!=t) continue; break; case AAsmall: if (tree[n].f!=Fsmall || atom.misc!=tree[n].x) continue; break; default: continue; } if (rule->cname[0]==0) gencastf(fout,n,t,f); else { if (f && rule->mode&(1<mode&(1< #include #include #include "stack.h" int debug_stack; void ** stack_base(stack *s) { return (void **) ((unsigned long)s + (unsigned long)s->offset); } void stack_init(stack *s, int size, void **data) { s->offset=(unsigned long)data-(unsigned long)s; *data=NULL; s->n=0; s->alloc=0; s->size=size; } void stack_alloc(stack *s, int nb) { void **sdat=(void **)((char *)s+s->offset); if (s->n+nb <= s->alloc) return; while (s->n+nb > s->alloc) s->alloc=s->alloc?s->alloc<<1:1; if (debug_stack) fprintf(stderr,"data=%lx (%d/%ld)\n", (unsigned long) sdat,s->n,(long) s->alloc); *sdat=realloc(*sdat,s->alloc*s->size); if (*sdat==NULL) fprintf(stderr,"Cannot alloc memory (%ld bytes)\n",(long)s->alloc*s->size); } int stack_new(stack *s) { stack_alloc(s, 1); return s->n++; } void stack_push_int(stack *s, int val) { int *sdat; stack_alloc(s, 1); sdat = * (int **) ((char *)s+s->offset); sdat[s->n++] = val; } int stack_has_int(stack *s, int val) { int *sdat= * (int **) ((char *)s+s->offset); int i; for (i=0; in; i++) if (sdat[i]==val) return 1; return 0; } void stack_remove_int(stack *s, int val) { int *sdat= * (int **) ((char *)s+s->offset); int i, k; for (i=0, k=0; in; i++) { if (sdat[i]==val) k++; else sdat[i-k]=sdat[i]; } s->n-=k; } static int cmpss(const void *a, const void *b) { return *(int*)a - *(int*)b; } void stack_int_sort(stack *s) { int *sdat= * (int **) ((char *)s+s->offset); qsort(sdat, s->n, s->size, cmpss); } void stack_int_merge(stack *s, stack *t) { int *sdat= * (int **) ((char *)s+s->offset); int *tdat= * (int **) ((char *)t+t->offset); int *var; int i,j; int sn = s->n, tn = t->n; stack v; if (t->n==0) return; stack_init(&v,sizeof(*var),(void *)&var); for(i=0,j=0; i tdat[j]) stack_push_int(&v,tdat[j++]); else { stack_push_int(&v,sdat[i]); i++; j++; } } for (;in) s->n--; else fprintf(stderr,"stack_pop: stack is already empty\n"); } void stack_pop_safe(stack *s, int n) { if (n == s->n-1) stack_pop(s); else fprintf(stderr,"stack_pop: unexpected stack level\n"); } /*Push stack t on stack s*/ void stack_push(stack *s, stack *t) { if ( s->size!=t->size ) fprintf(stderr,"Incompatible stack size in stack_push: %ld!=%ld\n", (long)s->size,(long)t->size); if ( t->n>0 ) { void **sdat=(void **) ((char *)s+s->offset); void **tdat=(void **) ((char *)t+t->offset); stack_alloc(s, t->n); memcpy((char *)*(sdat)+s->n*s->size,*tdat,t->n*t->size); s->n+=t->n; } } void stack_replace(stack *s, stack *t) { void **sdat=(void **) ((char *)s+s->offset); void **tdat=(void **) ((char *)t+t->offset); *sdat=realloc(*sdat,0); *sdat=*tdat; s->n=t->n; s->alloc=t->alloc; } gp2c-0.0.14/src/parse.c0000644000175000017500000027506414532110043011424 00000000000000/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define YYBISON 30705 /* Bison version string. */ #define YYBISON_VERSION "3.7.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* First part of user prologue. */ #line 1 "parse.y" /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #define YYDEBUG 1 #include "config.h" #include #include #include #include "header.h" int yyerror(const char *s); int yylex(void); static int once=0; static int newcommand(int x, int y) { return (x==GNOARG)?y:(y==GNOARG)?x:newnode(Fseq,x,y); } #line 101 "parse.c" # ifndef YY_CAST # ifdef __cplusplus # define YY_CAST(Type, Val) static_cast (Val) # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define YY_CAST(Type, Val) ((Type) (Val)) # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif /* Use api.header.include to #include this header instead of duplicating it here. */ #ifndef YY_YY_PARSE_H_INCLUDED # define YY_YY_PARSE_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { YYEMPTY = -2, YYEOF = 0, /* "end of file" */ YYerror = 256, /* error */ YYUNDEF = 257, /* "invalid token" */ KPARROW = 258, /* ")->" */ KARROW = 259, /* "->" */ KDOTDOT = 260, /* ".." */ KPE = 261, /* "+=" */ KSE = 262, /* "-=" */ KME = 263, /* "*=" */ KDE = 264, /* "/=" */ KDRE = 265, /* "\\/=" */ KEUCE = 266, /* "\\=" */ KMODE = 267, /* "%=" */ KAND = 268, /* "&&" */ KOR = 269, /* "||" */ KID = 270, /* "===" */ KEQ = 271, /* "==" */ KNE = 272, /* "!=" */ KGE = 273, /* ">=" */ KLE = 274, /* "<=" */ KSRE = 275, /* ">>=" */ KSLE = 276, /* "<<=" */ KSR = 277, /* ">>" */ KSL = 278, /* "<<" */ KDR = 279, /* "\\/" */ KPP = 280, /* "++" */ KSS = 281, /* "--" */ KINTEGER = 282, /* "integer" */ KREAL = 283, /* "real number" */ KENTRY = 284, /* "variable name" */ KSTRING = 285, /* "character string" */ SEQ = 286, /* SEQ */ DEFFUNC = 287, /* DEFFUNC */ INT = 288, /* INT */ LVAL = 289, /* LVAL */ SIGN = 290, /* SIGN */ DERIV = 291, /* DERIV */ MAT = 292 /* MAT */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ #define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 #define KPARROW 258 #define KARROW 259 #define KDOTDOT 260 #define KPE 261 #define KSE 262 #define KME 263 #define KDE 264 #define KDRE 265 #define KEUCE 266 #define KMODE 267 #define KAND 268 #define KOR 269 #define KID 270 #define KEQ 271 #define KNE 272 #define KGE 273 #define KLE 274 #define KSRE 275 #define KSLE 276 #define KSR 277 #define KSL 278 #define KDR 279 #define KPP 280 #define KSS 281 #define KINTEGER 282 #define KREAL 283 #define KENTRY 284 #define KSTRING 285 #define SEQ 286 #define DEFFUNC 287 #define INT 288 #define LVAL 289 #define SIGN 290 #define DERIV 291 #define MAT 292 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 31 "parse.y" int val; strcom str; #line 233 "parse.c" }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_PARSE_H_INCLUDED */ /* Symbol kind. */ enum yysymbol_kind_t { YYSYMBOL_YYEMPTY = -2, YYSYMBOL_YYEOF = 0, /* "end of file" */ YYSYMBOL_YYerror = 1, /* error */ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ YYSYMBOL_KPARROW = 3, /* ")->" */ YYSYMBOL_KARROW = 4, /* "->" */ YYSYMBOL_KDOTDOT = 5, /* ".." */ YYSYMBOL_KPE = 6, /* "+=" */ YYSYMBOL_KSE = 7, /* "-=" */ YYSYMBOL_KME = 8, /* "*=" */ YYSYMBOL_KDE = 9, /* "/=" */ YYSYMBOL_KDRE = 10, /* "\\/=" */ YYSYMBOL_KEUCE = 11, /* "\\=" */ YYSYMBOL_KMODE = 12, /* "%=" */ YYSYMBOL_KAND = 13, /* "&&" */ YYSYMBOL_KOR = 14, /* "||" */ YYSYMBOL_KID = 15, /* "===" */ YYSYMBOL_KEQ = 16, /* "==" */ YYSYMBOL_KNE = 17, /* "!=" */ YYSYMBOL_KGE = 18, /* ">=" */ YYSYMBOL_KLE = 19, /* "<=" */ YYSYMBOL_KSRE = 20, /* ">>=" */ YYSYMBOL_KSLE = 21, /* "<<=" */ YYSYMBOL_KSR = 22, /* ">>" */ YYSYMBOL_KSL = 23, /* "<<" */ YYSYMBOL_KDR = 24, /* "\\/" */ YYSYMBOL_KPP = 25, /* "++" */ YYSYMBOL_KSS = 26, /* "--" */ YYSYMBOL_KINTEGER = 27, /* "integer" */ YYSYMBOL_KREAL = 28, /* "real number" */ YYSYMBOL_KENTRY = 29, /* "variable name" */ YYSYMBOL_KSTRING = 30, /* "character string" */ YYSYMBOL_31_n_ = 31, /* '\n' */ YYSYMBOL_SEQ = 32, /* SEQ */ YYSYMBOL_DEFFUNC = 33, /* DEFFUNC */ YYSYMBOL_INT = 34, /* INT */ YYSYMBOL_LVAL = 35, /* LVAL */ YYSYMBOL_36_ = 36, /* ';' */ YYSYMBOL_37_ = 37, /* ',' */ YYSYMBOL_38_ = 38, /* '=' */ YYSYMBOL_39_ = 39, /* '&' */ YYSYMBOL_40_ = 40, /* '>' */ YYSYMBOL_41_ = 41, /* '<' */ YYSYMBOL_42_ = 42, /* '+' */ YYSYMBOL_43_ = 43, /* '-' */ YYSYMBOL_44_ = 44, /* '%' */ YYSYMBOL_45_ = 45, /* '\\' */ YYSYMBOL_46_ = 46, /* '/' */ YYSYMBOL_47_ = 47, /* '*' */ YYSYMBOL_SIGN = 48, /* SIGN */ YYSYMBOL_49_ = 49, /* '^' */ YYSYMBOL_50_ = 50, /* '#' */ YYSYMBOL_51_ = 51, /* '!' */ YYSYMBOL_52_ = 52, /* '~' */ YYSYMBOL_53_ = 53, /* '[' */ YYSYMBOL_DERIV = 54, /* DERIV */ YYSYMBOL_55_ = 55, /* '\'' */ YYSYMBOL_56_ = 56, /* '.' */ YYSYMBOL_MAT = 57, /* MAT */ YYSYMBOL_58_ = 58, /* '(' */ YYSYMBOL_59_ = 59, /* ':' */ YYSYMBOL_60_ = 60, /* ']' */ YYSYMBOL_61_ = 61, /* '`' */ YYSYMBOL_62_ = 62, /* ')' */ YYSYMBOL_63_ = 63, /* '|' */ YYSYMBOL_YYACCEPT = 64, /* $accept */ YYSYMBOL_commands = 65, /* commands */ YYSYMBOL_seq = 66, /* seq */ YYSYMBOL_range = 67, /* range */ YYSYMBOL_matrix_index = 68, /* matrix_index */ YYSYMBOL_backticks = 69, /* backticks */ YYSYMBOL_history = 70, /* history */ YYSYMBOL_deriv = 71, /* deriv */ YYSYMBOL_expr = 72, /* expr */ YYSYMBOL_lvalue = 73, /* lvalue */ YYSYMBOL_exprno = 74, /* exprno */ YYSYMBOL_matrixeltsno = 75, /* matrixeltsno */ YYSYMBOL_matrixelts = 76, /* matrixelts */ YYSYMBOL_matrixlines = 77, /* matrixlines */ YYSYMBOL_matrix = 78, /* matrix */ YYSYMBOL_in = 79, /* in */ YYSYMBOL_inseq = 80, /* inseq */ YYSYMBOL_compr = 81, /* compr */ YYSYMBOL_arg = 82, /* arg */ YYSYMBOL_83_1 = 83, /* $@1 */ YYSYMBOL_listarg = 84, /* listarg */ YYSYMBOL_funcid = 85, /* funcid */ YYSYMBOL_memberid = 86, /* memberid */ YYSYMBOL_definition = 87 /* definition */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ yytype_int8; #elif defined YY_STDINT_H typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ yytype_int16; #elif defined YY_STDINT_H typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t yytype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; #else typedef short yytype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ yytype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t yytype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short yytype_uint16; #else typedef int yytype_uint16; #endif #ifndef YYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define YYPTRDIFF_T __PTRDIFF_TYPE__ # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define YYPTRDIFF_T ptrdiff_t # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define YYPTRDIFF_T long # define YYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM \ YY_CAST (YYPTRDIFF_T, \ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ? YYPTRDIFF_MAXIMUM \ : YY_CAST (YYSIZE_T, -1))) #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef yytype_uint8 yy_state_t; /* State numbers in computations. */ typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define YY_ATTRIBUTE_PURE # endif #endif #ifndef YY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YY_USE(E) ((void) (E)) #else # define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define YY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define YY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_END #endif #define YY_ASSERT(E) ((void) (0 && (E))) #if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 49 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 737 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 64 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 24 /* YYNRULES -- Number of rules. */ #define YYNRULES 118 /* YYNSTATES -- Number of states. */ #define YYNSTATES 201 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 292 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 2, 50, 2, 44, 39, 55, 58, 62, 47, 42, 37, 43, 56, 46, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 59, 36, 41, 38, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 53, 45, 60, 49, 2, 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 48, 54, 57 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 91, 91, 92, 95, 96, 97, 98, 101, 102, 103, 104, 107, 108, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 189, 190, 194, 195, 198, 199, 202, 203, 206, 207, 210, 211, 212, 213, 214, 215, 218, 221, 222, 223, 224, 227, 230, 231, 232, 233, 234, 234, 238, 239, 242, 245, 248, 250, 252, 253 }; #endif /** Accessing symbol of state STATE. */ #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) #if 1 /* The user-facing name of the symbol whose (internal) number is YYSYMBOL. No bounds checking. */ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "\")->\"", "\"->\"", "\"..\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"\\\\/=\"", "\"\\\\=\"", "\"%=\"", "\"&&\"", "\"||\"", "\"===\"", "\"==\"", "\"!=\"", "\">=\"", "\"<=\"", "\">>=\"", "\"<<=\"", "\">>\"", "\"<<\"", "\"\\\\/\"", "\"++\"", "\"--\"", "\"integer\"", "\"real number\"", "\"variable name\"", "\"character string\"", "'\\n'", "SEQ", "DEFFUNC", "INT", "LVAL", "';'", "','", "'='", "'&'", "'>'", "'<'", "'+'", "'-'", "'%'", "'\\\\'", "'/'", "'*'", "SIGN", "'^'", "'#'", "'!'", "'~'", "'['", "DERIV", "'\\''", "'.'", "MAT", "'('", "':'", "']'", "'`'", "')'", "'|'", "$accept", "commands", "seq", "range", "matrix_index", "backticks", "history", "deriv", "expr", "lvalue", "exprno", "matrixeltsno", "matrixelts", "matrixlines", "matrix", "in", "inseq", "compr", "arg", "$@1", "listarg", "funcid", "memberid", "definition", YY_NULLPTR }; static const char * yysymbol_name (yysymbol_kind_t yysymbol) { return yytname[yysymbol]; } #endif #ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 10, 286, 287, 288, 289, 59, 44, 61, 38, 62, 60, 43, 45, 37, 92, 47, 42, 290, 94, 35, 33, 126, 91, 291, 39, 46, 292, 40, 58, 93, 96, 41, 124 }; #endif #define YYPACT_NINF (-171) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) #define YYTABLE_NINF (-113) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 679, -44, -171, -36, -171, 679, 679, -17, 679, 679, 90, 3, -171, 643, 77, -2, -171, 511, 238, 37, -171, 38, 50, -171, 61, 643, 104, 104, -171, 11, -171, 34, 115, 132, 43, 49, -171, 180, 57, 33, 51, -171, 67, 67, -2, 366, 261, 6, 8, -171, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, -171, -171, -171, 661, -171, 68, 643, 81, -171, 60, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, -171, -171, 679, 83, -171, 679, 679, 679, -171, -22, -171, 34, -171, -171, -171, 679, 67, 679, 679, -171, 679, -171, -171, -33, -33, -171, 320, -171, 679, 643, -2, 511, 556, 556, 594, 594, 594, 594, 594, 104, 104, 104, 556, 594, 594, 610, 610, 104, 104, 104, 104, 104, 679, -18, 287, -171, -21, -171, -171, -2, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, -171, 511, -2, -2, -171, 416, -28, -9, 56, 511, -171, 511, 84, 84, 64, 679, -2, 36, 511, 661, -171, 679, -171, -171, 82, 67, 679, -171, -171, 511, 69, 511, 679, -171, 464, -171, 511, 67, -171 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_int8 yydefact[] = { 4, 24, 25, 82, 28, 0, 0, 16, 0, 0, 0, 0, 26, 4, 0, 2, 30, 5, 33, 34, 35, 32, 79, 36, 0, 4, 71, 72, 17, 19, 14, 18, 51, 50, 0, 0, 93, 89, 0, 87, 0, 29, 0, 0, 105, 5, 33, 0, 0, 1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 76, 74, 8, 22, 0, 4, 0, 78, 75, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 83, 0, 4, 4, 27, 0, 20, 21, 15, 98, 95, 0, 0, 86, 88, 96, 88, 97, 82, 107, 108, 81, 8, 109, 4, 4, 3, 7, 53, 52, 55, 56, 57, 58, 60, 65, 64, 67, 54, 59, 61, 63, 62, 66, 68, 69, 70, 73, 0, 0, 9, 114, 0, 80, 23, 117, 48, 49, 41, 42, 43, 44, 45, 47, 46, 38, 84, 37, 115, 116, 113, 0, 0, 100, 0, 85, 90, 89, 91, 92, 0, 0, 118, 0, 11, 8, 13, 0, 31, 94, 0, 0, 0, 104, 106, 110, 0, 10, 0, 102, 101, 12, 99, 0, 103 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -171, -171, 24, -53, -16, 101, -171, -171, -5, -7, -171, -171, -89, -171, -171, -171, -170, -171, 10, -171, -11, -171, -171, -171 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_uint8 yydefgoto[] = { 0, 14, 44, 145, 80, 31, 16, 81, 17, 18, 172, 38, 39, 40, 19, 169, 170, 20, 47, 177, 48, 21, 22, 23 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 26, 27, 96, 32, 33, 37, 46, 119, 45, -111, 28, 120, 24, 186, 101, 121, 121, 195, 46, 181, 75, 174, 25, 175, 15, 75, 95, 187, 188, 200, 96, 95, 41, 29, 51, 115, 116, 119, 102, -112, 166, 184, 182, -111, 30, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 148, -111, 110, 146, 46, 30, -112, 122, 97, 98, 49, 152, 153, 154, 155, 156, 157, 158, 159, 160, 112, 99, 161, 100, 34, 163, 111, 109, 104, 114, 147, -112, 96, 96, 168, 167, 105, 171, 173, 151, 173, 50, 106, 149, 113, 162, 146, 46, 150, 189, 1, 2, 3, 4, -87, 164, 165, 190, 194, 35, -88, 192, 197, 103, 179, 5, 6, 7, 0, 0, 0, 0, 180, 8, 9, 0, 10, 178, 11, 12, 0, 13, 0, 36, 0, 96, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 0, 0, 73, 74, 75, 0, 76, 77, 191, 78, 79, 0, 146, 0, 193, 0, 168, 0, 0, 196, 0, 107, 0, 76, 77, 198, 78, 79, 168, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 0, 0, 82, 108, 83, 84, 85, 86, 87, 88, 89, 0, 0, 0, 0, 0, 0, 0, 90, 91, 0, 0, 0, 92, 93, 82, 0, 83, 84, 85, 86, 87, 88, 89, 0, 0, 94, 0, 0, 0, 0, 90, 91, 0, 0, 0, 92, 93, 0, 0, 0, 75, 183, 0, 0, 0, 0, 95, 0, 94, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 118, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 176, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 144, 8, 9, 0, 10, 0, 11, 12, 0, 13, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 0, 0, 117, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 185, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 52, 53, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 54, 55, 56, 57, 58, 0, 0, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 0, 65, 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 67, 68, 69, 70, 0, 71, 72, 73, 74, 75, 0, 76, 77, 0, 78, 79, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 5, 6, 7, 1, 2, 3, 4, 0, 8, 9, 43, 10, 0, 11, 12, 0, 13, 0, 5, 6, 7, 1, 2, 3, 4, 144, 8, 9, 0, 10, 0, 11, 12, 0, 13, 0, 5, 6, 7, 0, 0, 0, 0, 0, 8, 9, 0, 10, 0, 11, 12, 0, 13 }; static const yytype_int16 yycheck[] = { 5, 6, 18, 8, 9, 10, 13, 1, 13, 3, 27, 3, 56, 41, 25, 37, 37, 187, 25, 37, 53, 110, 58, 112, 0, 53, 59, 36, 37, 199, 46, 59, 29, 50, 36, 42, 43, 1, 27, 3, 62, 62, 60, 37, 61, 37, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 78, 62, 36, 75, 78, 61, 37, 50, 38, 38, 0, 83, 84, 85, 86, 87, 88, 89, 90, 91, 36, 38, 94, 29, 1, 97, 60, 37, 61, 29, 29, 62, 115, 116, 108, 107, 60, 109, 110, 82, 112, 31, 60, 29, 60, 29, 118, 121, 55, 60, 27, 28, 29, 30, 37, 98, 99, 60, 43, 36, 37, 181, 60, 29, 121, 42, 43, 44, -1, -1, -1, -1, 144, 50, 51, -1, 53, 120, 55, 56, -1, 58, -1, 60, -1, 168, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, 51, 52, 53, -1, 55, 56, 177, 58, 59, -1, 181, -1, 183, -1, 187, -1, -1, 188, -1, 5, -1, 55, 56, 194, 58, 59, 199, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, 4, 63, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, -1, 25, 26, 4, -1, 6, 7, 8, 9, 10, 11, 12, -1, -1, 38, -1, -1, -1, -1, 20, 21, -1, -1, -1, 25, 26, -1, -1, -1, 53, 5, -1, -1, -1, -1, 59, -1, 38, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, 53, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 5, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, -1, -1, 49, 50, 51, -1, 53, -1, 55, 56, -1, 58, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, -1, -1, 62, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 60, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 13, 14, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 15, 16, 17, 18, 19, -1, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, -1, 42, 43, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 44, 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 27, 28, 29, 30, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, 27, 28, 29, 30, -1, 50, 51, 52, 53, -1, 55, 56, -1, 58, -1, 42, 43, 44, 27, 28, 29, 30, 49, 50, 51, -1, 53, -1, 55, 56, -1, 58, -1, 42, 43, 44, -1, -1, -1, -1, -1, 50, 51, -1, 53, -1, 55, 56, -1, 58 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int8 yystos[] = { 0, 27, 28, 29, 30, 42, 43, 44, 50, 51, 53, 55, 56, 58, 65, 66, 70, 72, 73, 78, 81, 85, 86, 87, 56, 58, 72, 72, 27, 50, 61, 69, 72, 72, 1, 36, 60, 72, 75, 76, 77, 29, 39, 52, 66, 72, 73, 82, 84, 0, 31, 36, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 55, 56, 58, 59, 68, 71, 4, 6, 7, 8, 9, 10, 11, 12, 20, 21, 25, 26, 38, 59, 68, 38, 38, 38, 29, 84, 27, 69, 61, 60, 60, 5, 63, 37, 36, 60, 36, 60, 29, 73, 73, 62, 53, 1, 3, 37, 66, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 67, 72, 29, 84, 29, 55, 66, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 29, 72, 66, 66, 62, 72, 73, 79, 80, 72, 74, 72, 76, 76, 5, 83, 66, 82, 72, 37, 60, 5, 62, 60, 41, 36, 37, 60, 60, 72, 67, 72, 43, 80, 72, 60, 72, 36, 80 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int8 yyr1[] = { 0, 64, 65, 65, 66, 66, 66, 66, 67, 67, 67, 67, 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 78, 78, 78, 78, 79, 80, 80, 80, 80, 81, 82, 82, 82, 82, 83, 82, 84, 84, 85, 86, 87, 87, 87, 87 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 3, 0, 1, 2, 3, 0, 1, 3, 2, 5, 3, 1, 2, 1, 2, 2, 2, 3, 3, 1, 2, 1, 1, 1, 3, 1, 2, 1, 4, 1, 1, 1, 1, 1, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 2, 2, 2, 2, 2, 1, 3, 3, 1, 2, 3, 1, 0, 1, 0, 1, 3, 3, 3, 2, 5, 3, 3, 3, 3, 4, 1, 3, 3, 5, 5, 1, 4, 2, 2, 0, 4, 1, 3, 4, 3, 3, 3, 3, 4 }; enum { YYENOMEM = -2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use YYerror or YYUNDEF. */ #define YYERRCODE YYUNDEF /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* This macro is provided for backward compatibility. */ # ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Kind, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; YY_USE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT if (yykind < YYNTOKENS) YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); yy_symbol_value_print (yyo, yykind, yyvaluep); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), &yyvsp[(yyi + 1) - (yynrhs)]); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ((void) 0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /* Context of a parse error. */ typedef struct { yy_state_t *yyssp; yysymbol_kind_t yytoken; } yypcontext_t; /* Put in YYARG at most YYARGN of the expected tokens given the current YYCTX, and return the number of tokens stored in YYARG. If YYARG is null, return the number of expected tokens (guaranteed to be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. Return 0 if there are more than YYARGN expected tokens, yet fill YYARG up to YYARGN. */ static int yypcontext_expected_tokens (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; int yyn = yypact[+*yyctx->yyssp]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror && !yytable_value_is_error (yytable[yyx + yyn])) { if (!yyarg) ++yycount; else if (yycount == yyargn) return 0; else yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); } } if (yyarg && yycount == 0 && 0 < yyargn) yyarg[0] = YYSYMBOL_YYEMPTY; return yycount; } #ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ static YYPTRDIFF_T yystrlen (const char *yystr) { YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif #endif #ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif #endif #ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; else goto append; append: default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (yyres) return yystpcpy (yyres, yystr) - yyres; else return yystrlen (yystr); } #endif static int yy_syntax_error_arguments (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { int yyn; if (yyarg) yyarg[yycount] = yyctx->yytoken; ++yycount; yyn = yypcontext_expected_tokens (yyctx, yyarg ? yyarg + 1 : yyarg, yyargn - 1); if (yyn == YYENOMEM) return YYENOMEM; else yycount += yyn; } return yycount; } /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the required number of bytes is too large to store. */ static int yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, const yypcontext_t *yyctx) { enum { YYARGS_MAX = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat: reported tokens (one for the "unexpected", one per "expected"). */ yysymbol_kind_t yyarg[YYARGS_MAX]; /* Cumulated lengths of YYARG. */ YYPTRDIFF_T yysize = 0; /* Actual size of YYARG. */ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); if (yycount == YYENOMEM) return YYENOMEM; switch (yycount) { #define YYCASE_(N, S) \ case N: \ yyformat = S; \ break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } /* Compute error message size. Don't count the "%s"s, but reserve room for the terminator. */ yysize = yystrlen (yyformat) - 2 * yycount + 1; { int yyi; for (yyi = 0; yyi < yycount; ++yyi) { YYPTRDIFF_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return YYENOMEM; } } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return -1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else { ++yyp; ++yyformat; } } return 0; } /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (void) { yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus = 0; /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ YYPTRDIFF_T yystacksize = YYINITDEPTH; /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; yy_state_t *yyss = yyssa; yy_state_t *yyssp = yyss; /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE goto yyexhaustedlab; #else { /* Get the current used size of the three stacks, in elements. */ YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * YYSIZEOF (*yyssp), &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yy_state_t *yyss1 = yyss; union yyalloc *yyptr = YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YY_IGNORE_USELESS_CAST_BEGIN YYDPRINTF ((stderr, "Stack size increased to %ld\n", YY_CAST (long, yystacksize))); YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { yychar = YYEOF; yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else if (yychar == YYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ yychar = YYUNDEF; yytoken = YYSYMBOL_YYerror; goto yyerrlab1; } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Discard the shifted token. */ yychar = YYEMPTY; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* commands: seq */ #line 91 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 1824 "parse.c" break; case 3: /* commands: commands '\n' seq */ #line 92 "parse.y" {(yyval.val)=newcommand((yyvsp[-2].val),(yyvsp[0].val));} #line 1830 "parse.c" break; case 4: /* seq: %empty */ #line 95 "parse.y" {(yyval.val)=GNOARG;} #line 1836 "parse.c" break; case 5: /* seq: expr */ #line 96 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 1842 "parse.c" break; case 6: /* seq: seq ';' */ #line 97 "parse.y" {(yyval.val)=(yyvsp[-1].val);} #line 1848 "parse.c" break; case 7: /* seq: seq ';' expr */ #line 98 "parse.y" {(yyval.val)=newcommand((yyvsp[-2].val),(yyvsp[0].val));} #line 1854 "parse.c" break; case 8: /* range: %empty */ #line 101 "parse.y" { (yyval.val)=newnode(Frange,GNORANGE,GNORANGE); } #line 1860 "parse.c" break; case 9: /* range: expr */ #line 102 "parse.y" { (yyval.val)=newnode(Frange,(yyvsp[0].val),GNORANGE); } #line 1866 "parse.c" break; case 10: /* range: expr ".." expr */ #line 103 "parse.y" { (yyval.val)=newnode(Frange,(yyvsp[-2].val),(yyvsp[0].val)); } #line 1872 "parse.c" break; case 11: /* range: '^' expr */ #line 104 "parse.y" { (yyval.val)=newnode(Frange,GNORANGE,(yyvsp[0].val)); } #line 1878 "parse.c" break; case 12: /* matrix_index: '[' range ',' range ']' */ #line 107 "parse.y" {(yyval.val)=newnode(Fmatrix,(yyvsp[-3].val),(yyvsp[-1].val));} #line 1884 "parse.c" break; case 13: /* matrix_index: '[' range ']' */ #line 108 "parse.y" {(yyval.val)=newnode(Fmatrix,(yyvsp[-1].val),-1);} #line 1890 "parse.c" break; case 14: /* backticks: '`' */ #line 111 "parse.y" {(yyval.val)=1;} #line 1896 "parse.c" break; case 15: /* backticks: backticks '`' */ #line 112 "parse.y" {(yyval.val)=(yyvsp[-1].val)+1;} #line 1902 "parse.c" break; case 16: /* history: '%' */ #line 115 "parse.y" {(yyval.val)=newopcall(OPhist,-1,-1);} #line 1908 "parse.c" break; case 17: /* history: '%' "integer" */ #line 116 "parse.y" {(yyval.val)=newopcall(OPhist,newintnode((yyvsp[0].str).s,(yyvsp[0].str).c),-1);} #line 1914 "parse.c" break; case 18: /* history: '%' backticks */ #line 117 "parse.y" {(yyval.val)=newopcall(OPhist,newnode(Fsmall,-(yyvsp[0].val),-1),-1);} #line 1920 "parse.c" break; case 19: /* history: '%' '#' */ #line 118 "parse.y" {(yyval.val)=newopcall(OPhisttime,-1,-1);} #line 1926 "parse.c" break; case 20: /* history: '%' '#' "integer" */ #line 119 "parse.y" {(yyval.val)=newopcall(OPhisttime,newintnode((yyvsp[0].str).s,(yyvsp[0].str).c),-1);} #line 1932 "parse.c" break; case 21: /* history: '%' '#' backticks */ #line 120 "parse.y" {(yyval.val)=newopcall(OPhisttime,newnode(Fsmall,-(yyvsp[0].val),-1),-1);} #line 1938 "parse.c" break; case 22: /* deriv: '\'' */ #line 123 "parse.y" {(yyval.val) = 1;} #line 1944 "parse.c" break; case 23: /* deriv: deriv '\'' */ #line 124 "parse.y" {(yyval.val) = (yyvsp[-1].val)+1;} #line 1950 "parse.c" break; case 24: /* expr: "integer" */ #line 127 "parse.y" {(yyval.val)=newintnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1956 "parse.c" break; case 25: /* expr: "real number" */ #line 128 "parse.y" {(yyval.val)=newrealnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1962 "parse.c" break; case 26: /* expr: '.' */ #line 129 "parse.y" {(yyval.val)=newnode(Fconst,newsmallrealvalue(0),-1);} #line 1968 "parse.c" break; case 27: /* expr: "integer" '.' "variable name" */ #line 130 "parse.y" {(yyval.val)=newnodecom(Ffunction,newmember((yyvsp[0].str).s),newintnode((yyvsp[-2].str).s,(yyvsp[-2].str).c), (yyvsp[0].str).c);} #line 1975 "parse.c" break; case 28: /* expr: "character string" */ #line 132 "parse.y" {(yyval.val)=newstringnode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1981 "parse.c" break; case 29: /* expr: '\'' "variable name" */ #line 133 "parse.y" {(yyval.val)=newquotenode((yyvsp[0].str).s,(yyvsp[0].str).c);} #line 1987 "parse.c" break; case 30: /* expr: history */ #line 134 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 1993 "parse.c" break; case 31: /* expr: expr '(' listarg ')' */ #line 135 "parse.y" {(yyval.val)=newnode(Fcall,(yyvsp[-3].val),(yyvsp[-1].val));} #line 1999 "parse.c" break; case 32: /* expr: funcid */ #line 136 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2005 "parse.c" break; case 33: /* expr: lvalue */ #line 137 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2011 "parse.c" break; case 34: /* expr: matrix */ #line 138 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2017 "parse.c" break; case 35: /* expr: compr */ #line 139 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2023 "parse.c" break; case 36: /* expr: definition */ #line 140 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2029 "parse.c" break; case 37: /* expr: matrix '=' expr */ #line 141 "parse.y" {(yyval.val)=newnode(Fassign,(yyvsp[-2].val),(yyvsp[0].val));} #line 2035 "parse.c" break; case 38: /* expr: lvalue '=' expr */ #line 142 "parse.y" {(yyval.val)=newnode(Fassign,(yyvsp[-2].val),(yyvsp[0].val));} #line 2041 "parse.c" break; case 39: /* expr: lvalue "++" */ #line 143 "parse.y" {(yyval.val)=newopcall(OPpp,(yyvsp[-1].val),-1);} #line 2047 "parse.c" break; case 40: /* expr: lvalue "--" */ #line 144 "parse.y" {(yyval.val)=newopcall(OPss,(yyvsp[-1].val),-1);} #line 2053 "parse.c" break; case 41: /* expr: lvalue "*=" expr */ #line 145 "parse.y" {(yyval.val)=newopcall(OPme,(yyvsp[-2].val),(yyvsp[0].val));} #line 2059 "parse.c" break; case 42: /* expr: lvalue "/=" expr */ #line 146 "parse.y" {(yyval.val)=newopcall(OPde,(yyvsp[-2].val),(yyvsp[0].val));} #line 2065 "parse.c" break; case 43: /* expr: lvalue "\\/=" expr */ #line 147 "parse.y" {(yyval.val)=newopcall(OPdre,(yyvsp[-2].val),(yyvsp[0].val));} #line 2071 "parse.c" break; case 44: /* expr: lvalue "\\=" expr */ #line 148 "parse.y" {(yyval.val)=newopcall(OPeuce,(yyvsp[-2].val),(yyvsp[0].val));} #line 2077 "parse.c" break; case 45: /* expr: lvalue "%=" expr */ #line 149 "parse.y" {(yyval.val)=newopcall(OPmode,(yyvsp[-2].val),(yyvsp[0].val));} #line 2083 "parse.c" break; case 46: /* expr: lvalue "<<=" expr */ #line 150 "parse.y" {(yyval.val)=newopcall(OPsle,(yyvsp[-2].val),(yyvsp[0].val));} #line 2089 "parse.c" break; case 47: /* expr: lvalue ">>=" expr */ #line 151 "parse.y" {(yyval.val)=newopcall(OPsre,(yyvsp[-2].val),(yyvsp[0].val));} #line 2095 "parse.c" break; case 48: /* expr: lvalue "+=" expr */ #line 152 "parse.y" {(yyval.val)=newopcall(OPpe,(yyvsp[-2].val),(yyvsp[0].val));} #line 2101 "parse.c" break; case 49: /* expr: lvalue "-=" expr */ #line 153 "parse.y" {(yyval.val)=newopcall(OPse,(yyvsp[-2].val),(yyvsp[0].val));} #line 2107 "parse.c" break; case 50: /* expr: '!' expr */ #line 154 "parse.y" {(yyval.val)=newopcall(OPnb,(yyvsp[0].val),-1);} #line 2113 "parse.c" break; case 51: /* expr: '#' expr */ #line 155 "parse.y" {(yyval.val)=newopcall(OPlength,(yyvsp[0].val),-1);} #line 2119 "parse.c" break; case 52: /* expr: expr "||" expr */ #line 156 "parse.y" {(yyval.val)=newopcall(OPor,(yyvsp[-2].val),(yyvsp[0].val));} #line 2125 "parse.c" break; case 53: /* expr: expr "&&" expr */ #line 157 "parse.y" {(yyval.val)=newopcall(OPand,(yyvsp[-2].val),(yyvsp[0].val));} #line 2131 "parse.c" break; case 54: /* expr: expr '&' expr */ #line 158 "parse.y" {(yyval.val)=newopcall(OPand,(yyvsp[-2].val),(yyvsp[0].val));} #line 2137 "parse.c" break; case 55: /* expr: expr "===" expr */ #line 159 "parse.y" {(yyval.val)=newopcall(OPid,(yyvsp[-2].val),(yyvsp[0].val));} #line 2143 "parse.c" break; case 56: /* expr: expr "==" expr */ #line 160 "parse.y" {(yyval.val)=newopcall(OPeq,(yyvsp[-2].val),(yyvsp[0].val));} #line 2149 "parse.c" break; case 57: /* expr: expr "!=" expr */ #line 161 "parse.y" {(yyval.val)=newopcall(OPne,(yyvsp[-2].val),(yyvsp[0].val));} #line 2155 "parse.c" break; case 58: /* expr: expr ">=" expr */ #line 162 "parse.y" {(yyval.val)=newopcall(OPge,(yyvsp[-2].val),(yyvsp[0].val));} #line 2161 "parse.c" break; case 59: /* expr: expr '>' expr */ #line 163 "parse.y" {(yyval.val)=newopcall(OPg,(yyvsp[-2].val),(yyvsp[0].val));} #line 2167 "parse.c" break; case 60: /* expr: expr "<=" expr */ #line 164 "parse.y" {(yyval.val)=newopcall(OPle,(yyvsp[-2].val),(yyvsp[0].val));} #line 2173 "parse.c" break; case 61: /* expr: expr '<' expr */ #line 165 "parse.y" {(yyval.val)=newopcall(OPl,(yyvsp[-2].val),(yyvsp[0].val));} #line 2179 "parse.c" break; case 62: /* expr: expr '-' expr */ #line 166 "parse.y" {(yyval.val)=newopcall(OPs,(yyvsp[-2].val),(yyvsp[0].val));} #line 2185 "parse.c" break; case 63: /* expr: expr '+' expr */ #line 167 "parse.y" {(yyval.val)=newopcall(OPp,(yyvsp[-2].val),(yyvsp[0].val));} #line 2191 "parse.c" break; case 64: /* expr: expr "<<" expr */ #line 168 "parse.y" {(yyval.val)=newopcall(OPsl,(yyvsp[-2].val),(yyvsp[0].val));} #line 2197 "parse.c" break; case 65: /* expr: expr ">>" expr */ #line 169 "parse.y" {(yyval.val)=newopcall(OPsr,(yyvsp[-2].val),(yyvsp[0].val));} #line 2203 "parse.c" break; case 66: /* expr: expr '%' expr */ #line 170 "parse.y" {(yyval.val)=newopcall(OPmod,(yyvsp[-2].val),(yyvsp[0].val));} #line 2209 "parse.c" break; case 67: /* expr: expr "\\/" expr */ #line 171 "parse.y" {(yyval.val)=newopcall(OPdr,(yyvsp[-2].val),(yyvsp[0].val));} #line 2215 "parse.c" break; case 68: /* expr: expr '\\' expr */ #line 172 "parse.y" {(yyval.val)=newopcall(OPeuc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2221 "parse.c" break; case 69: /* expr: expr '/' expr */ #line 173 "parse.y" {(yyval.val)=newopcall(OPd,(yyvsp[-2].val),(yyvsp[0].val));} #line 2227 "parse.c" break; case 70: /* expr: expr '*' expr */ #line 174 "parse.y" {(yyval.val)=newopcall(OPm,(yyvsp[-2].val),(yyvsp[0].val));} #line 2233 "parse.c" break; case 71: /* expr: '+' expr */ #line 175 "parse.y" {(yyval.val)=newopcall(OPpl,(yyvsp[0].val),-1);} #line 2239 "parse.c" break; case 72: /* expr: '-' expr */ #line 176 "parse.y" {(yyval.val)=newopcall(OPn,(yyvsp[0].val),-1);} #line 2245 "parse.c" break; case 73: /* expr: expr '^' expr */ #line 177 "parse.y" {(yyval.val)=newopcall(OPpow,(yyvsp[-2].val),(yyvsp[0].val));} #line 2251 "parse.c" break; case 74: /* expr: expr '~' */ #line 178 "parse.y" {(yyval.val)=newopcall(OPtrans,(yyvsp[-1].val),-1);} #line 2257 "parse.c" break; case 75: /* expr: expr deriv */ #line 179 "parse.y" { (yyval.val)=newderivn((yyvsp[-1].val),(yyvsp[0].val)); } #line 2263 "parse.c" break; case 76: /* expr: expr '!' */ #line 180 "parse.y" {(yyval.val)=newopcall(OPfact,(yyvsp[-1].val),-1);} #line 2269 "parse.c" break; case 77: /* expr: expr '#' */ #line 181 "parse.y" {(yyval.val)=newopcall(OPprim,(yyvsp[-1].val),-1);} #line 2275 "parse.c" break; case 78: /* expr: expr matrix_index */ #line 182 "parse.y" {(yyval.val)=newnode(Fmatcoeff,(yyvsp[-1].val),(yyvsp[0].val));} #line 2281 "parse.c" break; case 79: /* expr: memberid */ #line 183 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2287 "parse.c" break; case 80: /* expr: expr ':' "variable name" */ #line 184 "parse.y" {(yyval.val)=newtag((yyvsp[-2].val),(yyvsp[0].str).s,(yyvsp[0].str).c);} #line 2293 "parse.c" break; case 81: /* expr: '(' expr ')' */ #line 185 "parse.y" {(yyval.val)=(yyvsp[-1].val);} #line 2299 "parse.c" break; case 82: /* lvalue: "variable name" */ #line 188 "parse.y" {(yyval.val)=newnodecom(Fentry,newentry((yyvsp[0].str).s),-1,(yyvsp[0].str).c);} #line 2305 "parse.c" break; case 83: /* lvalue: lvalue matrix_index */ #line 189 "parse.y" {(yyval.val)=newnode(Fmatcoeff,(yyvsp[-1].val),(yyvsp[0].val));} #line 2311 "parse.c" break; case 84: /* lvalue: lvalue ':' "variable name" */ #line 190 "parse.y" {(yyval.val)=newtag((yyvsp[-2].val),(yyvsp[0].str).s,(yyvsp[0].str).c);} #line 2317 "parse.c" break; case 85: /* exprno: expr */ #line 194 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2323 "parse.c" break; case 86: /* exprno: %empty */ #line 195 "parse.y" {(yyval.val)=GNOARG;} #line 2329 "parse.c" break; case 87: /* matrixeltsno: matrixelts */ #line 198 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2335 "parse.c" break; case 88: /* matrixeltsno: %empty */ #line 199 "parse.y" {(yyval.val)=GNOARG;} #line 2341 "parse.c" break; case 89: /* matrixelts: expr */ #line 202 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2347 "parse.c" break; case 90: /* matrixelts: matrixeltsno ',' exprno */ #line 203 "parse.y" {(yyval.val)=newnode(Fmatrixelts,(yyvsp[-2].val),(yyvsp[0].val));} #line 2353 "parse.c" break; case 91: /* matrixlines: matrixelts ';' matrixelts */ #line 206 "parse.y" {(yyval.val)=newnode(Fmatrixlines,(yyvsp[-2].val),(yyvsp[0].val));} #line 2359 "parse.c" break; case 92: /* matrixlines: matrixlines ';' matrixelts */ #line 207 "parse.y" {(yyval.val)=newnode(Fmatrixlines,(yyvsp[-2].val),(yyvsp[0].val));} #line 2365 "parse.c" break; case 93: /* matrix: '[' ']' */ #line 210 "parse.y" {(yyval.val)=newnode(Fvec,-1,-1);} #line 2371 "parse.c" break; case 94: /* matrix: '[' expr ".." expr ']' */ #line 211 "parse.y" {(yyval.val)=newopcall(OPrange,(yyvsp[-3].val),(yyvsp[-1].val));} #line 2377 "parse.c" break; case 95: /* matrix: '[' ';' ']' */ #line 212 "parse.y" {(yyval.val)=newnode(Fmat,-1,-1);} #line 2383 "parse.c" break; case 96: /* matrix: '[' matrixelts ']' */ #line 213 "parse.y" {(yyval.val)=newnode(Fvec,(yyvsp[-1].val),-1);} #line 2389 "parse.c" break; case 97: /* matrix: '[' matrixlines ']' */ #line 214 "parse.y" {(yyval.val)=newnode(Fmat,(yyvsp[-1].val),-1);} #line 2395 "parse.c" break; case 98: /* matrix: '[' error ']' */ #line 215 "parse.y" {YYABORT;} #line 2401 "parse.c" break; case 99: /* in: lvalue '<' '-' expr */ #line 218 "parse.y" {(yyval.val)=newnode(Flistarg,(yyvsp[0].val),(yyvsp[-3].val));} #line 2407 "parse.c" break; case 100: /* inseq: in */ #line 221 "parse.y" {(yyval.val)=newopcall(OPcompr,(yyvsp[0].val),-2);} #line 2413 "parse.c" break; case 101: /* inseq: in ',' expr */ #line 222 "parse.y" {(yyval.val)=newopcall3(OPcompr,(yyvsp[-2].val),-2,(yyvsp[0].val));} #line 2419 "parse.c" break; case 102: /* inseq: in ';' inseq */ #line 223 "parse.y" {(yyval.val)=newopcall(OPcomprc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2425 "parse.c" break; case 103: /* inseq: in ',' expr ';' inseq */ #line 224 "parse.y" {(yyval.val)=newopcall3(OPcomprc,(yyvsp[-4].val),(yyvsp[0].val),(yyvsp[-2].val));} #line 2431 "parse.c" break; case 104: /* compr: '[' expr '|' inseq ']' */ #line 227 "parse.y" {(yyval.val)=addcurrexpr((yyvsp[-1].val),(yyvsp[-3].val));} #line 2437 "parse.c" break; case 105: /* arg: seq */ #line 230 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2443 "parse.c" break; case 106: /* arg: lvalue '[' ".." ']' */ #line 231 "parse.y" {(yyval.val)=newnode(Fvararg,(yyvsp[-3].val),-1);} #line 2449 "parse.c" break; case 107: /* arg: '&' lvalue */ #line 232 "parse.y" {(yyval.val)=newnode(Frefarg,(yyvsp[0].val),-1);} #line 2455 "parse.c" break; case 108: /* arg: '~' lvalue */ #line 233 "parse.y" {(yyval.val)=newnode(Findarg,(yyvsp[0].val),-1);} #line 2461 "parse.c" break; case 109: /* $@1: %empty */ #line 234 "parse.y" {if (!once) { yyerrok; s_errors.n--;} once=1;} #line 2467 "parse.c" break; case 110: /* arg: arg error $@1 expr */ #line 235 "parse.y" {once=0; (yyval.val)=newopcall(OPcat,(yyvsp[-3].val),(yyvsp[0].val));} #line 2473 "parse.c" break; case 111: /* listarg: arg */ #line 238 "parse.y" {(yyval.val)=(yyvsp[0].val);} #line 2479 "parse.c" break; case 112: /* listarg: listarg ',' arg */ #line 239 "parse.y" {(yyval.val)=newnode(Flistarg,(yyvsp[-2].val),(yyvsp[0].val));} #line 2485 "parse.c" break; case 113: /* funcid: "variable name" '(' listarg ')' */ #line 242 "parse.y" {(yyval.val)=newnodecom(Ffunction,newentry((yyvsp[-3].str).s),(yyvsp[-1].val),(yyvsp[-3].str).c);} #line 2491 "parse.c" break; case 114: /* memberid: expr '.' "variable name" */ #line 245 "parse.y" {(yyval.val)=newnodecom(Ffunction,newmember((yyvsp[0].str).s),(yyvsp[-2].val),(yyvsp[0].str).c);} #line 2497 "parse.c" break; case 115: /* definition: funcid '=' seq */ #line 249 "parse.y" {(yyval.val)=newnode(Fdeffunc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2503 "parse.c" break; case 116: /* definition: memberid '=' seq */ #line 251 "parse.y" {(yyval.val)=newnode(Fdeffunc,(yyvsp[-2].val),(yyvsp[0].val));} #line 2509 "parse.c" break; case 117: /* definition: lvalue "->" seq */ #line 252 "parse.y" {(yyval.val)=newnode(Flambda, (yyvsp[-2].val),(yyvsp[0].val));} #line 2515 "parse.c" break; case 118: /* definition: '(' listarg ")->" seq */ #line 253 "parse.y" {(yyval.val)=newnode(Flambda, (yyvsp[-2].val),(yyvsp[0].val));} #line 2521 "parse.c" break; #line 2525 "parse.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; { yypcontext_t yyctx = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (yymsg) { yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); yymsgp = yymsg; } else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = YYENOMEM; } } yyerror (yymsgp); if (yysyntax_error_status == YYENOMEM) goto yyexhaustedlab; } } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYSYMBOL_YYerror; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if 1 /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; goto yyreturn; #endif /*-------------------------------------------------------. | yyreturn -- parsing is finished, clean up and return. | `-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); return yyresult; } #line 256 "parse.y" int yyerror(const char *s) { int n=stack_new(&s_errors); errors[n].fileno=filecount; errors[n].lineno=linecount; errors[n].txt=strdup(s); if (yydebug) fprintf(stderr,"%s:%d: %s\n",srcfile[filecount],linecount,s); return 0; } gp2c-0.0.14/src/header.h0000644000175000017500000003352614532106032011545 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "stack.h" #ifndef GP2C_DECL # define EXTERN extern #else # define EXTERN #endif EXTERN int debug; EXTERN const char *nameparse, *namelib, *outfile; EXTERN int currfunc, preclevel; EXTERN int lastpass; EXTERN int autogc; EXTERN int warn; EXTERN int indent; EXTERN int currfunc; EXTERN int indentlevel; EXTERN int linecount, filecount; EXTERN char *optprefix,*optsuffix; EXTERN int opthashline, optcleanvar, optstrict; EXTERN int safecoeff, do_warning; #define STACKSZ (1024) #define GNIL (0) #define GNOARG (1) #define GNORANGE (2) static inline int min(int x, int y) { return (x<=y)?x:y; } static inline int max(int x, int y) { return (x>=y)?x:y; } typedef struct { char *txt; long fileno; long lineno; } error_string; typedef struct { stack s; char *txt; } comment; typedef struct { char *s; int c; } strcom; typedef enum {Fseq, Fmatrix,Frange,Fnorange, Fassign, Fmatcoeff, Fmatrixelts,Fmatrixlines, Fmat,Fvec, Flistarg, Frefarg, Findarg, Fvararg, Fcall, Fconst,Fsmall,Fnoarg, Ftag, Fentry,Ffunction,Flambda,Fdeffunc, /*This node is generated by genblock, not by parser*/ Fblock, Ffun } Ffunc; #define FneedENTRY (Fconst) #define Flastfunc (Ffun) /*see parse.y for definition. Fblock x: block number y:seq */ extern const char *Ffuncname[]; #include "type.h" #include "optable.h" typedef enum {Cuser,Cauto,Cglobal,Cconst,Carg,Cindarg,Cvararg,Ccompo,Cclosed, Cimmutable,Cdefmarker,Cundeclared,Cfunction} Vtype; /* Cuser: Variable defined by user in the source Cauto: Variable get type of initialisation Cglobal: Global variable for this module. Cconst: Variable affected exactly once in the code. Carg: Variable is a function's parameter. Ccompo: Variable components are updated. Cimmutable: Variable affected exactly once in the run. Cdefmarker: Variable initialised to the default marker. Cundeclared: Variable was not declared. Cfunction: Variable belong to function scope. */ typedef struct node_s { Ffunc f; /*node function*/ int x; /*node left child*/ int y; /*node right child*/ int t; /*node type*/ int m; /*node mode bitmask*/ int fileno; /*filenumber of corresponding code*/ int lineno; /*linenumber of corresponding code*/ int comment; } node; /* Automatic variables GP names are . * Automatic variables C names are {p,l} * with number2<=number1 since we remove unused variables. */ #define varstr(y) (value[tree[(y).node].x].val.str) #define vartype(x) (tree[(x).node].t) typedef struct { int flag; /*context type, Vtype bitmask*/ int key; /*context hashkey*/ const char *cvar; /*context var C name*/ int node; int initval; /*context initial value of var*/ int val; /*context value, if constant*/ } ctxvar; enum AFenum {AFaccess,AFassign,AFassigncompo,AFassigncopy,AFrefarg, AFhide, AFclone}; typedef struct { enum AFenum f; int idx; } affnode; enum GCenum {GCneeded, GCupto, GCglobal, GCreturn}; typedef struct { ctxvar *c; /*context stack*/ stack s; int ret; /*if not -1 , node number of var holding return value*/ affnode *var; /*Data about variable*/ stack v; int savb; int egc; /*Extra var to be gerepiled*/ long gc; /*garbage collecting attribute, bitmask of GCenum*/ int *gcvar; /*List of var that need to be gerepiled*/ stack g; } context; enum AAenum {AAtype,AActype,AAnoarg,AAsmall,AAstring,AAreftype,AAherevalue,AAlvalue,AAmulti,AAstdarg,AAoptsmall,AAopttype}; typedef struct { enum AAenum t; int misc; int type; int mode; char *str; } descargatom; typedef struct { int type; int init; int next; int end; } gpiterator; typedef struct { const char *cname; /* C code */ gpiterator iter; int type; /*return type*/ int mode; /*return mode*/ int nargs; /*nb args*/ descargatom *args; /*type of args*/ } gpdescarg; typedef struct { int nb; /*nb of description*/ gpdescarg *a; /*array of description*/ } gpdesc; typedef struct { int nb; /*nb of wrappers*/ int *w; /*array of wrappers*/ } gpwrap; typedef struct { const char *cname; /* C name */ const char *code; /* GP code */ const char *origin; /* library name of the symbol, NULL for gp/libpari*/ int help; } gpproto; enum UFenum {UFclosure, UFstatic}; typedef struct { enum UFenum flag; int pdefnode; int defnode; int bl; int sarg; int narg; int bctx; int wrapper; affnode *var; /*Data about variable*/ stack v; int savb; int *gcvar; /*List of var that need to be gerepiled*/ stack g; } userfunc; /*Positive enum are private to funcspec.c/patchfunc.h*/ enum {GPinstalled=-2,GPpari=-1,GPuser=0}; typedef int GPspec; typedef struct { const char *gpname; /*name for GP*/ int node; /*Ffunction node*/ GPspec spec; /*Spec name for spec function*/ gpproto proto; gpdesc *iter; /*Iterator or NULL*/ gpwrap *wrap; /*Wrapper or NULL*/ gpdesc *dsc; /*Description or NULL*/ userfunc *user; } gpfunc; #define functype(x) (tree[(x).node].t) #define funcmode(x) (tree[(x).node].m) EXTERN int FC_badtype, FC_formatcode, FC_tovec, FC_tovecprec, FC_cast; EXTERN int FC_decl_base,FC_decl_ext; EXTERN int FC_gerepileupto, FC_gerepileall; EXTERN int FC_const_smallreal, FC_const_real, FC_const_expr; EXTERN int FC_proto_ret, FC_proto_code; EXTERN int FC_default_check, FC_default_marker; EXTERN int FC_copy, FC_avma, FC_low_stack_lim, FC_gc_needed; EXTERN int FC_forprime_next, FC_forprime_init, FC_matrixrow; EXTERN int FC_proto_max_args; EXTERN int FC_call, FC_strtoclosure; EXTERN int FC_norange, FC_derivn, FC_translength; EXTERN int Vgen; EXTERN int Gpari_sp, Gforprime, Gerror; EXTERN int max_args; typedef enum {CSTsmall, CSTsmallreal, CSTint, CSTreal, CSTstr} CSTtype; typedef struct { CSTtype type; /*type of data*/ union value_u { long small; const char *str; } val; } value_t; typedef struct { const char *name; } Ctype_t; typedef struct { const char *name; } GPtype_t; typedef struct { const char *name; } Mmode_t; typedef struct { enum {Lbreak, Lnobrk, Liferr, Liter} type; int num; int go; int ne; int ie; int iter; } Clabel_t; EXTERN char **srcfile; EXTERN node *tree; EXTERN value_t *value; EXTERN gpfunc *lfunc; EXTERN ctxvar *ctxstack; EXTERN affnode *affstack; EXTERN context *block; EXTERN comment *com; EXTERN error_string *errors; EXTERN Ctype_t *Ctype; EXTERN GPtype_t *GPtype; EXTERN Mmode_t *Mmode; EXTERN Clabel_t *label; EXTERN stack s_srcfile,s_node,s_value,s_func,s_ctx,s_aff,s_bloc,s_comment,s_errors; EXTERN stack s_Ctype, s_GPtype, s_Mmode, s_label; typedef enum { err_func=-1,err_parse=-2,err_desc=-3 } err_name; char *xstrndup(const char *s, size_t n); #ifdef __GNUC__ /*Avoid spurious warning*/ void die(int n, const char *format, ...) __attribute__ ((noreturn)); #else void die(int n, const char *format, ...); #endif void warning(int n, const char *format, ...); int listtostack(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr); int listcalltostack(int n, int fnum, int *stack, int nbmax, const char *error,int nerr); int listtostackparent(int n, Ffunc f, int *stack, int nbmax, const char *error,int nerr); int genlistargs(int n,int *stack,int min,int max); int genlistcats(int y,int *stack,int max); void killlistarg(int n, int a); int newcomment(void); void pushcomment(int n, char x); void gencomment(FILE *fout, int n, int flag); typedef enum {PPend,PPstd,PPdefault,PPdefaultmulti,PPstar,PPauto} PPproto; PPproto parseproto(char const **q, char *c); int addcurrexpr(int n, int currexpr); int newsrcfile(char *f); int newnodeall(Ffunc f, int x, int y, int file, int line, int com); int newnode(Ffunc f, int x, int y); int newnode1(Ffunc f, int x, int y); int newnodecom(Ffunc f, int x, int y, int com); int newsmall(int n); int newrealnode(const char *s, int c); int newintnode(const char *s, int c); int newstringnode(const char *s, int c); int newquotenode(const char *s, int c); int newsmallrealvalue(long small); int newentry(const char *s); int newmember(const char *s); int newleaf(int n); int newopcall(OPerator s, int x, int y); int newopcall3(OPerator s, int x, int y, int z); int newtag(int x, const char *s, int c); int newcoeff(int n, int x, int y); int newlabel(int n); int newderivn(int x, int n); const char *usercname(const char *s); int is_const(int n, CSTtype t); const char *entryname(int n); int newuserfunc(const char *gpname); int newblock(void); int stacktoargs(int *stack, int nb); int newseq(int x, int y); int newdecl(int flag, int t, int initval, int *v); int newcall(const char *s, int y); int findfunction(const char *name); int findfunction_len(const char *s, size_t n); int findfuncdesc(const char *s); int findfuncdescopt(const char *s); int findfunctype(const char *s); int findfunctypeopt(const char *s); void genequal(int aff, const char *func, int *var, int *binf, int *t); int addseqright(int seq, int n); int addseqleft(int n, int seq); int addlistleft(int n, int l); int getfunc(const char *gpname); const char *funcname(int f); const char *GPname(int f); void printnode(FILE *fout, int n); void maketree(FILE *fout,int n); int gentype(int n); int genblockdeclaration(int args, int n, int flag, int type, int *seq); const char * genoutfile(void); void genheader(FILE *fout); void gencode(FILE *fout, int n); void genblock(int n, int p); void gentopfunc(int n, int p, int fun, int pfun); void gentoplevel(int n); int addinitfunc(int n); void gendeblock(int n, int p, int ps, int *r, int *rs); void moveblock(int n, int p, int ps, int *r, int *rs); void pilelist(int n); void pileclean(int n); void varlist(int n); void gensemicolon(FILE *fout,int x); void genparens(FILE *fout, int x); void genparensg(FILE *fout, int x); void genendbrace(FILE * fout, int x); void genbrace(FILE *fout, int x); void genindent(FILE *fout); void genindentline(FILE *fout, char *s); void genindentseq(FILE *fout, int x); void genlineno(FILE *fout, int n); void genpercent(FILE *fout, int n); void genbitprec(FILE *fout, int level); void genprec(FILE *fout, int level); void gencast(FILE *fout, int n, int nt); void gencastf(FILE *fout, int n, int nt, int f); void gentypedec(FILE *fout, int t); void genvarproto(FILE *fout, int n, int nerr); void genentry(FILE *fout, int n); void genentryfunc(FILE *fout, int n); void genprotocode(FILE *fout,int nf); void genprototype(FILE *fout,int nf, int kb); void gendeffunc(FILE *fout, int n); void gendefblock(FILE *fout, int n); void genblockfuncspec(int n, int p, gpfunc *gp); void genblockfunciter(int n, gpfunc *gp); int gentypefuncspec(int n, gpfunc *gp); void genentryspec(FILE *fout, int n, gpfunc *gp); void gencodenoarg(FILE *fout, int t, int n); void checkisvar(int aff, const char *func, int *var, int *t); gpdescarg *descfindrulesdsc(int nb, int *arg, gpdesc *dsc); gpdescarg *descfindrules(int nb, int *arg, gpfunc *gp); gpdescarg *descfindrules1(int arg, int nf); int gentypefuncdesc(int n, gpfunc *gp); int gencastcode(FILE *fout, int n, int t, int nt, int f); void gencodedesc(FILE *fout, int nb, int *arg, gpdescarg *rule, int nerr, int nf); int genfuncbydesc(FILE *fout, int nb, int *arg, int nf, int nerr); int genfuncbydesc1(FILE *fout, int arg, int nf, int nerr); int genfuncbycode(FILE *fout, int nb, int *arg, int nf, int nerr); int genfuncbycode1(FILE *fout, int arg, int nf, int nerr); int genfunc(FILE *fout, int nb, int *arg, int nf, int nerr); int genfunc1(FILE *fout, int arg, int nf, int nerr); enum {MAT_range,MAT_std,MAT_line,MAT_column,VEC_std}; int matindex_type(long n); int detag(int n); int getlvalue(int n); int getlvaluerr(int n); int getvar(int n); int getvarerr(int n); int getvarbyname(const char *s); ctxvar *getvarinblock(int n, context *fc); int fillvar(int n, int flag, int t, int initval); int pushvar(int n, int ctype, int t, int initval); void affectval(int vn, int val, int *seq); void pushctx(context *fc); void restorectx(int c); void copyctx(int n, context *fc); int newctx(int flag); int newaff(enum AFenum, int idx); void copyaff(int sava, int savc, context *fc); int isfunc(int n, const char *s); int isasmall(const char *s, long *res); int newctype(const char *s); int strtoctype(const char *s); int newtype(const char *s); int strtotype(const char *s); int strtotype_len(const char *s, size_t n); int newmode(const char *s); int strtomode(char *s); int geninsertvar(int seq, int ret); int geninsertvarop(int seq, int ret, OPerator op); int newgetg(int v, int l, const char *t); void makeblock(int bl, int n, int aseq, int ret, int savx); void makeblocks(int bl1, int bl2, int n, int bseq, int aseq, int ret, int savx); void makeblocks3(int bl1, int bl2, int bl3, int n, int bseq, int aseq, int ret, int sav0, int savx); int gengerepilelist(context *fc,int **gc); void gengerepileend(int bl); typedef enum {left,right} side; int yyparse (void); void yyrestart(FILE *new_file); void patchfunclist(void); void inittype(void); void initoperators(void); void printlistfunc(FILE *fout); void outputtype(FILE *fout); void cleancode(int n, int p, int d); void cleanvar(int n); void initdesc(const char *s); void maketreeGRL(FILE *fout,int n); gp2c-0.0.14/src/printnode.c0000644000175000017500000002225713623476440012326 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include "header.h" void printentryname(FILE *fout, const char *s) { if (isdigit(*s)) fprintf(fout,"p%s",s); else fprintf(fout,"%s",s); } void printentry(FILE *fout, int x) { const char *s=value[x].val.str; printentryname(fout, s); } void printnodeparens(FILE *fout, int n, int parens) { int i,v; context *fc; int x,y; if (n<0) return; x=tree[n].x; y=tree[n].y; gencomment(fout,n,!indent); if (debug>=3) fprintf(fout,"/*%s:%d:%s*/",GPname(tree[n].t),tree[n].m,funcname(tree[n].f)); switch(tree[n].f) { case Fseq: printnode(fout,x); if (x>=0 && tree[x].f==Fseq) x=tree[x].y; if (x>=0 && tree[x].f!=Fblock && tree[x].f!=Fdeffunc) { if (indent) fprintf(fout,";\n"); else fprintf(fout,"; \\\n"); genindent(fout); } printnode(fout,y); break; case Fmatrix: fputc('[',fout); printnode(fout,x); if (y>0) { fprintf(fout,","); printnode(fout,y); } fputc(']',fout); break; case Frange: if (x!=GNORANGE) { printnode(fout,x); if (y!=GNORANGE) { fputs("..",fout); printnode(fout,y); } } else if (y!=GNORANGE) { fputc('^',fout); printnode(fout,y); } break; case Fnorange: break; case Fmatcoeff: printnodeparens(fout,x,1); printnode(fout,y); break; case Fassign: if (parens) fputc('(',fout); printnode(fout,x); fprintf(fout,"="); printnode(fout,y); if (parens) fputc(')',fout); break; case Fconst: switch(value[x].type) { case CSTsmall: fprintf(fout,"%ld",value[x].val.small); break; case CSTsmallreal: fprintf(fout,"%ld.",value[x].val.small); break; case CSTint: case CSTreal: fprintf(fout,"%s",value[x].val.str); break; case CSTstr: fprintf(fout,"\"%s\"",value[x].val.str); break; } break; case Fsmall: fprintf(fout,"%d",x); break; case Fmatrixelts: printnode(fout,x); fprintf(fout,","); printnode(fout,y); break; case Fmatrixlines: printnode(fout,x); fprintf(fout,";"); /*Would be nice to indent matrix, alas I have no way to know where is the * bottomrow*/ printnode(fout,y); break; case Fmat: case Fvec: fprintf(fout,"["); if (tree[n].f==Fmat && x==-1) fputc(';',fout); else printnode(fout,x); fprintf(fout,"]"); break; case Flistarg: printnode(fout,x); fprintf(fout,","); printnode(fout,y); break; case Fentry: printentry(fout,x); break; case Ffun: fprintf(fout,"%s",lfunc[x].gpname); break; case Ffunction: if (x=0) { fprintf(fout,"("); if (y!=GNOARG) printnode(fout,y); fprintf(fout,")"); } } break; case Frefarg: fprintf(fout,"&"); printnode(fout,x); break; case Findarg: fprintf(fout,"~"); printnode(fout,x); break; case Fvararg: printnode(fout,x); fprintf(fout,"[..]"); break; case Fcall: printnode(fout,x); fprintf(fout,"("); printnode(fout,y); fprintf(fout,")"); break; case Flambda: fprintf(fout,"("); printnode(fout,x); fprintf(fout,")->"); printnode(fout,y); break; case Fdeffunc: fprintf(fout,"\n"); printnode(fout,x); fprintf(fout,"=\n"); genindent(fout); if (tree[y].f!=Fblock) { fprintf(fout,"{\n"); indent++; genindent(fout); } printnode(fout,y); fprintf(fout,"\n"); indent--; genindent(fout); if (tree[y].f!=Fblock) { fprintf(fout,"}\n"); genindent(fout); } break; case Fblock: fprintf(fout,"{"); fc=block+x; v=fc->ret; if (v>=0) { fprintf(fout,"/*="); printentry(fout,tree[v].x); fprintf(fout,"*/"); } indent++; fprintf(fout,"\n"); genindent(fout); if (fc->s.n) { int k=fc->s.n; fprintf(fout,"my("); for(i=0;i0) fprintf(fout,", "); printentryname(fout,varstr(fc->c[i])); } fprintf(fout,");\n"); genindent(fout); } printnode(fout,y); fprintf(fout,"\n"); indent--; genindentline(fout,"}\n"); genindent(fout); break; case Fnoarg: if ( n!= GNOARG ) fprintf(fout,"gnil"); break; case Ftag: printnodeparens(fout,x,1); fprintf(fout,":%s",GPname(y)); break; } } void printnode(FILE *fout, int n) { printnodeparens(fout,n,0); } void maketreeGRL_node(FILE *fout,int n) { int x,y,f; if (n<2) return; x=tree[n].x; y=tree[n].y; f=tree[n].f; switch(tree[n].f) { case Ftag: fprintf(fout,"node: { title: \"%d\" label: \"(%s)\" }\n",n,GPname(y)); fprintf(fout,"edge: { sourcename: \"%d\" targetname: \"%d\" class:2 color: red}\n",n,x); maketreeGRL_node(fout,x); break; default: if (f #include #include #include "header.h" #include "patchfunc.h" static int iterlev = 0; int has_iter(char *s) { int nf=getfunc(s); return !!lfunc[nf].iter; } void patchfunction(struct patchfunc_s *p) { int nf=getfunc(p->gpname); lfunc[nf].proto.code=p->code; functype(lfunc[nf])=p->type; funcmode(lfunc[nf])=p->mode; lfunc[nf].spec=p->spec; } void patchfunclist(void) { int i; for(i=0;patchfunc[i].gpname;i++) patchfunction(patchfunc+i); if (!has_iter("forvec")) { struct patchfunc_s pforvec = {"forvec",NULL,Gnotype,(1<=0) arg[2]=GNOARG; else { arg[2]=newnode(Fentry,newentry("st_lim"),-1); pushvar(arg[2],0,Gpari_sp, newcall("_stack_lim",newnode(Flistarg,arg[0],newsmall(1)))); } return stacktoargs(arg,3); } int gengerepilereturn(int bl) { int arg[2]; arg[0]=newnode(Fentry,newentry("ltop"),-1); arg[1]=newsmall(bl); return stacktoargs(arg,2); } int newgetg(int v, int l, const char *t) { return newcall("_cgetg", newnode(Flistarg, newnode(Flistarg, v, l), newstringnode(t,-1))); } void makesubblock_ctx(int n, int savx) { int bl3=newblock(); int level = preclevel; genblock(n,-1); makeblock(bl3,n,newleaf(n),-1,savx); preclevel = level; } void makesubblock(int n) { makesubblock_ctx(n, s_ctx.n); } Clabel_t genblock_label(int n, int p, int type, int end) { Clabel_t t; static int labie=0; int l=newlabel(type); if (type==Liferr) label[l].ie=labie++; if (type==Liter && end >=0) label[l].iter=end; genblock(n,p); if (type==Liferr) labie--; t=label[l]; stack_pop_safe(&s_label,l); return t; } Clabel_t makesubblock_label(int n, int t, int end) { int savx=s_ctx.n; int bl3=newblock(); Clabel_t lab=genblock_label(n,-1,t,end); makeblock(bl3,n,newleaf(n),-1,savx); return lab; } int check_labels(int k, int t) { int l=s_label.n; while(k--) { if (!l) return 2; if (label[--l].type==t) return 1; } return 0; } int get_iferr(int k) { int i, l=s_label.n; for (i=s_label.n-k; i=l; i--) { if (label[i].type==Liter) aseq=addseqright(aseq,newleaf(label[i].iter)); } return aseq; } int geniterproto(int n, long fl, gpfunc *gp, int *argo, int *seq, int *var, int *tv, int *evar, int *etv) { int arg[STACKSZ]; const char *p=gp->proto.code; char c; PPproto mod; int nb=genlistargs(n,arg,0,STACKSZ); int i=0, k=0, binf; *var = -1; *evar = -1; while((mod=parseproto(&p,&c))!=PPend) { if (i=nb) die(n,"too few arguments"); switch(c) { case '=': genequal(arg[i], gp->gpname, var, &binf, tv); if (fl) { tree[*var].t = *tv; argo[k++] = *var; tree[binf].t = guesstype(binf); } argo[k++] = binf; break; case 'V': if (*var >= 0) { *evar = *var; *etv = *tv; } checkisvar(arg[i], gp->gpname, var, tv); if (fl) { tree[*var].t = *tv; argo[k++] = *var; } break; case 'I': *seq = arg[i]; break; default: if (fl) tree[arg[i]].t = guesstype(arg[i]); argo[k++] = arg[i]; } break; case PPdefault: case PPdefaultmulti: if (i < nb) { tree[arg[i]].t = guesstype(arg[i]); if (c != 'I' && c != 'V') argo[k++] = arg[i]; } break; case PPstar: i=nb-1; break; case PPauto: /* Skip */ i--; break; default: break; } i++; } return k; } void genblockfunciter(int n, gpfunc *gp) { int arg[STACKSZ]; int var, evar, vecvar=-1, tv=Gnotype, etv=Gnotype; int bseq=-1,aseq=-1,ret=-1,vprime, seq=GNOARG, cseq; int labelne=-1, labelgo=-1; int gpm=-1,bl0,bl1,bl2; int sav0, savx; Clabel_t lab; gpiterator * iter; const char * init, *next, *itername; int nb = geniterproto(n, 1, gp, arg, &seq, &var, &tv, &evar, &etv); gpdescarg * da = descfindrulesdsc(nb, arg, gp->iter); if (!da) { int i; for(i=0;iiter); init = lfunc[iter->init].gpname; next = lfunc[iter->next].gpname; sav0=s_ctx.n; bl0=newblock(); if (iterlev==0) itername = "iter"; else { char buf[64]; sprintf(buf,"iter%d",iterlev); itername = strdup(buf); } iterlev++; vprime=newnode(Fentry,newentry(itername),-1); pushvar(vprime,1<type,-1); nb = geniterproto(n, 0, gp, arg+1, &seq, &var, &tv, &evar, &etv)+1; arg[0] = vprime; bseq = newcall(init, stacktoargs(arg,nb)); genblock(bseq,-1); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (seq!=GNOARG && autogc) gpm=gengerepile(bl2); if (tv==Gnotype) { gpdescarg *dv; tree[vprime].t = iter->type; dv=descfindrules(1, &vprime, lfunc+iter->next); if (!dv) die(n, "no suitable iterator_next found"); tv = dv->type; } if (evar>=0) { etv=tv; tv=Ggen; pushvar(evar,(1<end>=0) { const char *end = lfunc[iter->end].gpname; lab=makesubblock_label(seq, Liter, newcall(end,newleaf(vprime))); } else lab=makesubblock_label(seq,Lbreak,-1); if (lab.ne) labelne=newcall("_label",newsmall(lab.ne)); if (lab.go) labelgo=newcall("_label",newsmall(lab.go)); } if (evar<0) cseq = newnode1(Fassign,var,newcall(next,vprime)); else { newdecl((1<=0) seq=newseq(seq,labelne); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); aseq=addseqright(aseq,newcall("_whilenull",newnode(Flistarg,cseq,seq))); if (labelgo>=0) aseq=newseq(aseq,labelgo); } else aseq=addseqright(aseq,newcall("_whilenull",cseq)); makeblocks3(bl0,bl1,bl2,n,bseq,aseq,ret,savx,savx); copyctx(sav0,block+bl0); restorectx(sav0); iterlev--; } /* The 6 operations which order is very important are are: pushvar/newdecl(var) gpm=gengerepile(bl2); bseq=geninsertvar(arg,var) genblock(bseq,p) seq=addseqright(seq,newcall("_gerepilemany",gpm)); savx=s_ctx.n savx=s_ctx.n start the recording of var in the block pushvar/newdecl(var) must be before geninsert(arg,var) obviously, if you use geninsertvar to store the value a a node, then geninsertvar must be called before genblock and genblock must be called on the geninsertvar node, with p=-1 since the return value is really ignored. G.N.^H^H^H^HB.A. (well it still lacks 20 lines more to really be G.N.)*/ void genblockfuncspec(int n, int p, gpfunc *gp) { int arg[STACKSZ]; int nb; int y=tree[n].y; int binf,bsup,seq; int var=-1,vinf,vsup,vprime; int bseq=-1,aseq=-1,ret=-1; int tv; int gpm=-1,bl1,bl2; int savx; Clabel_t lab; switch(gp->spec) { case GPaddhelp: { /*prototype vSs*/ gpfunc *gp; int d, nf; nb=genlistargs(n,arg,2,2); d=detag(arg[0]); if (tree[d].f!=Fentry && !is_const(d,CSTstr)) die(n,"Incorrect function name in addhelp"); tree[d].f=Fconst; nf=getfunc(entryname(d)); gp=lfunc+nf; d=detag(arg[1]); gp->proto.help=d; } break; case GPgrandO: if (tree[y].f==Ffunction && tree[y].x==OPpow) tree[y]=tree[tree[y].y]; tree[n].x=newentry("O(_^_)"); genblock(y,n); break; case GPif: nb=genlistargs(n,arg,2,STACKSZ); if (nb==3 && arg[2]==GNOARG) /*Some people type 'if(x!=0,print(x),)'*/ nb--; if (nb==3 && arg[1]==GNOARG) { /*Some people type 'if(x!=0,,print(x))'*/ arg[0]=newopcall(OPnb,arg[0],-1); arg[1]=arg[2]; nb--; } if (tree[arg[0]].f==Fsmall && tree[arg[0]].x) { /*if(1,...) expr are often used to create block. We honor it here*/ if (p>=0 && tree[p].f!=Fseq) newdecl((1<=0 && tree[p].f!=Fseq) newdecl((1<=4) { arg[2] = newcall("if", stacktoargs(arg+2,nb-2)); nb = 3; } if (arg[0]>=0 && tree[arg[0]].f==Fseq) { int pred; newdecl((1<proto.cname=entryname(d); if (nb==4 && arg[3]!=GNOARG) { d=detag(arg[3]); if (!is_const(d,CSTstr)) die(n,"Incorrect library name in install"); gp->proto.origin=entryname(d); } d=detag(arg[1]); if (tree[d].f!=Fentry && !is_const(d,CSTstr)) die(n,"Incorrect code in install"); tree[d].f=Fconst; p=entryname(d); gp->proto.code=p+1; funcmode(*gp)=0; switch(p[0]) { case 'v': functype(*gp)=Gvoid; break; case 'l': functype(*gp)=Gsmall; break; case 'u': functype(*gp)=Gusmall; break; case 'i': functype(*gp)=Gsmall_int; break; case 'm': functype(*gp)=Ggen; funcmode(*gp)=(1<proto.code--; } if (tree[arg[1]].f==Ftag) functype(*gp)=tree[arg[1]].y; for(;*p;p++) if (*p=='p' || *p=='b') funcmode(*gp)|=(1<spec=GPinstalled; } break; case GPfor: nb=genlistargs(n,arg,3,3); genequal(arg[0],gp->gpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<gpname,&var,&binf,&tv); seq=arg[1]; flag=(nb==3)?arg[2]:newsmall(0); newdecl((1<gpname,&var,&tv); newdecl((1<spec == GPfordivfactored; int vt = factored ? Gvec: Gint; nb=genlistargs(n,arg,3,3); seq=arg[2]; checkisvar(arg[1],gp->gpname,&var,&tv); newdecl((1<gpname,&var,&binf,&tv); bsup=arg[1];bstep=arg[2];seq=arg[3]; newdecl((1<0 ) arg[3]=newopcall(OPle,newleaf(var),vsup); else arg[3]=newopcall(OPge,newleaf(var),vsup); nb=4; } else { arg[3]=newleaf(vsign); arg[4]=newopcall(OPle,newleaf(var),vsup); arg[5]=newopcall(OPge,newleaf(var),vsup); nb=6; } if (isvec) { arg[2]=newopcall(OPpe,var,newcoeff(vstep,vindex,-1)); arg[6]=vindex; arg[7]=newleaf(lstep); nb=8; } else arg[2]=newopcall(OPpe,var,vstep); arg[1]=seq; if (isvec) aseq=newcall("_forstepvec",stacktoargs(arg,nb)); else aseq=newnode(tree[n].f,tree[n].x,stacktoargs(arg,nb)); if (lab.go) aseq=newseq(aseq,newcall("_label",newsmall(lab.go))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); } break; case GPprodeuler: nb=genlistargs(n,arg,3,3); seq = arg[2]; newdecl(0,Ggen,-1,&ret); savx=s_ctx.n; bl1=newblock(); arg[2]=geninsertvarop(seq,ret,OPme); aseq=newnode(Fseq, geninsertvar(newnode(Fconst,newsmallrealvalue(1),-1),newleaf(ret)), newcall("forprime",stacktoargs(arg,3))); genblock(aseq,-1); makeblock(bl1,n,aseq,ret,savx); break; case GPforprime: nb=genlistargs(n,arg,3,3); genequal(arg[0],gp->gpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<=0?Gint:Gsmall); pushvar(var,1<=0?-1:newsmall(0)); vprime=newnode(Fentry,newentry("primepointer"),-1); pushvar(vprime,1<=0?-1:newcall("_diffptr",-1)); lab=makesubblock_label(seq,Lbreak,-1); if (lab.ne) seq=newseq(seq,newcall("_label",newsmall(lab.ne))); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); if (FC_forprime_init>=0) { int args[3],bseq; int nbs=3; args[0]=vprime; args[1]=vinf; if (bsup==GNOARG) nbs=2; else args[2]=vsup; aseq=addseqleft(newcall((tv==Gsmall?"_u_forprime_init":"_forprime_init"), stacktoargs(args,nbs)),aseq); bseq=newnode1(Fassign,var,newcall(tv==Gsmall?"_u_forprime_next":"_forprime_next_",vprime)); tree[bseq].m=Mparens; aseq=addseqright(aseq,newcall("_whilenull",newnode(Flistarg,bseq,seq))); } else { /*if (vsup>maxprime()) err(primer1);*/ aseq=addseqleft(newcall("if",newnode(Flistarg, newopcall(OPg,vsup,newcall("_maxprime",-1)), newcall("_err_primes",-1))) ,aseq); if (tree[binf].f!=Fsmall || tree[binf].x>2) /*if(vargpname,&var,&binf,&tv); bsup=arg[1];seq=arg[2]; newdecl((1<spec==GPsum?0:1), newleaf(ret))); else bseq=addseqright(bseq,geninsertvar(arg[3],newleaf(ret))); genblock(bseq,-1); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (autogc) gpm=gengerepile(bl2); genequaltosmall(binf,bsup,&tv,Gint); pushvar(var,1<spec==GPsum?OPpe:OPme)); makesubblock_label(seq,Lnobrk,-1); if (autogc) seq=addseqright(seq,newcall("_gerepilemany",gpm)); arg[0]=newnode1(Fassign,var,vinf); arg[1]=newopcall(OPle,newleaf(var),vsup); arg[2]=seq; arg[3]=newopcall(OPpp,newleaf(var),-1); aseq=addseqright(aseq,newcall("for",stacktoargs(arg,4))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); break; case GPsumdiv: { int vdiv,div; int vloop; nb=genlistargs(n,arg,3,3); seq=arg[2]; checkisvar(arg[1],gp->gpname,&var,&tv); newdecl(1<spec==GPvectorsmall?Gvecsmall:Gvec,-1,&ret); savx=s_ctx.n; bl1=newblock(); bl2=newblock(); if (nb>=2) { checkisvar(arg[1],gp->gpname,&var,&tv); pushvar(var,1<spec==GPvector?"t_VEC":gp->spec==GPvectorv?"t_COL":"t_VECSMALL")); arg[0]=newnode1(Fassign,var,newsmall(1)); arg[1]=newopcall(OPle,newleaf(var),vsup); arg[2]=newcoeff(newleaf(ret),newleaf(var),-1); arg[2]=geninsertvar(seq,arg[2]); makesubblock_label(arg[2],Lnobrk,-1); arg[3]=newopcall(OPpp,newleaf(var),-1); aseq=addseqright(aseq,newcall("for",stacktoargs(arg,4))); makeblocks(bl1,bl2,n,bseq,aseq,ret,savx); break; case GPmatrix: { int var1,bsup1,vsup1,var2,bsup2,vsup2; int tv1,tv2; nb=genlistargs(n,arg,2,5); bsup2=arg[0];bsup1=arg[1]; newdecl((1<=3) { checkisvar(arg[2],gp->gpname,&var2,&tv2); pushvar(var2,1<=4) { checkisvar(arg[3],gp->gpname,&var1,&tv1); pushvar(var1,1<spec==GPglobal) flag|=(1<=0 && y!=GNOARG) { if (tree[y].f!=Fsmall || tree[y].x<=0) die(n,"%s(n) only supported for constant n>0",gp->gpname); nb=tree[y].x; } else nb=1; if (check_labels(nb,Lnobrk)) die(n,"%s not allowed here",gp->gpname); if (nb>1) { int l = s_label.n-nb; if (gp->spec==GPbreak) { if (label[l].go==0) label[l].go=++labbrk; tree[y].x=labbrk; } else { if (label[l].ne==0) label[l].ne=++labbrk; tree[y].x=labbrk; } } else tree[n].y=GNOARG; if (check_labels(nb,Liferr)) { int ie = newsmall(get_iferr(nb)); aseq=addseqleft(newcall("_iferr_CATCH_reset",ie),newleaf(n)); makeblock(newblock(),n,aseq,-1,s_ctx.n); } if (check_labels(gp->spec==GPbreak?nb:nb-1,Liter)) { aseq=addseqleft(unwind_iter(-1,nb),newleaf(n)); makeblock(newblock(),n,aseq,-1,s_ctx.n); } } break; case GPiferr: { Clabel_t lab; nb=genlistargs(n,arg,3,4); checkisvar(arg[1],gp->gpname,&var,&tv); seq=arg[0]; if (seq==GNOARG) seq=newsmall(0); bseq=arg[2]; if (tv==Gnotype) { tv=Gerror; if (tv<0) die(n,"iferr not supported by your GP version"); } if (p>=0 && tree[p].f!=Fseq) newdecl((1<spec) { case GPif: nb=genlistargs(n,arg,2,3); gentype(arg[0]); gentype(arg[1]); tree[n].m=(1<spec==GPwhile) tree[n].m=(tree[arg[0]].m|(tree[arg[1]].m&~(1<=0) { gentype(y); tree[n].m=(1<gpname,GPname(functype(*cf)),GPname(t),GPname(tree[y].t)); functype(*cf)=t; lastpass++; } } return Gempty; case GPinstall: case GPaddhelp: tree[n].m=0; return Gvoid; case GPmakevec: gentype(y); tree[n].m=(tree[y].m&MODHERIT)|(1<=0 && lfunc[nf].spec==GPuser && lfunc[nf].user->wrapper>=0 && (funcmode(lfunc[nf])&(1<spec>0) die(n,"gentypefuncspec : func spec not implemented"); else die(n,"Internal error : gentypefuncspec called with no spec"); } } void gencopyarg(FILE *fout) { gpfunc *gp=lfunc+currfunc; userfunc *ufunc=gp->user; context *fc=block+ufunc->bl; int n=tree[ufunc->defnode].y; long i; if (tree[n].x!=ufunc->bl || !fc->var) return; for (i=0;is.n;i++) if (fc->c[i].flag&(1<c[i].flag&(1<c+i; long j; for(j=0;jv.n;j++) if (fc->var[j].f==AFassigncompo && fc->var[j].idx==i+fc->savb-fc->s.n ) { genindent(fout); fprintf(fout,"%s = ",v->cvar); genfuncbydesc1(fout,v->node,FC_copy,n); gensemicolon(fout,v->node); break; } } } void geninitfunc(FILE *fout) { gpfunc *gp=lfunc+currfunc; int i; for (i=0;iuser->savb;i++) { ctxvar *v=ctxstack+i; if (!(v->flag&(1<initval is equal to 'v, this is harmless. */ gentype(v->initval); genindent(fout); fprintf(fout,"%s = ", v->cvar); gencast(fout,v->initval,vartype(*v)); fprintf(fout,";\n"); } } void genentryspec(FILE *fout, int n, gpfunc *gp) { int arg[STACKSZ]; int nb; int y=tree[n].y; int i; context *bl; switch(gp->spec) { case GPbreak: case GPnext: if (y>=0 && tree[y].f==Fsmall) fprintf(fout,"goto label%d",tree[y].x); else fprintf(fout,gp->spec==GPbreak?"break":"continue"); break; case GPif: nb=genlistargs(n,arg,2,3); genindentline(fout,"if ("); gencast(fout,arg[0],Gbool); fprintf(fout,")\n"); if (nb==2) genbrace(fout,arg[1]); else { genbrace(fout,arg[1]); genindentline(fout,"else\n"); genbrace(fout,arg[2]); } break; case GPiferr: nb=genlistargs(n,arg,4,4); genindent(fout); gencode(fout,arg[0]); fprintf(fout,"\n"); genbrace(fout,arg[1]); fprintf(fout," pari_TRY\n"); genbrace(fout,arg[2]); fprintf(fout," "); gencode(fout,arg[3]); fprintf(fout,"\n"); break; case GPwhilenull: nb=genlistargs(n,arg,1,2); genindentline(fout,"while ("); genparens(fout,arg[0]); if (nb==1) fprintf(fout,");\n"); else { fprintf(fout,")\n"); genbrace(fout,arg[1]); } break; case GPwhile: nb=genlistargs(n,arg,2,2); if (tree[arg[0]].f!=Fseq && tree[arg[0]].f!=Fblock) { genindentline(fout,"while ("); gencast(fout,arg[0],Gbool); if (tree[arg[1]].f==Fnoarg) fprintf(fout,");\n"); else { fprintf(fout,")\n"); genbrace(fout,arg[1]); } } else { int x=tree[arg[0]].x; int y=tree[arg[0]].y; if (tree[arg[0]].f==Fblock) { y=block[x].ret; x=tree[arg[0]].y; } genindentline(fout,"for(;;)\n"); genindentline(fout,"{\n"); indent++; genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); if (tree[y].f==Fblock) { gencode(fout,y); y=block[tree[y].x].ret; } genindentline(fout,"if ("); gencast(fout,y,Gnegbool); fprintf(fout,")\n"); indent++; genindentline(fout,"break;\n"); indent--; genindentseq(fout,arg[1]); gencode(fout,arg[1]); gensemicolon(fout,arg[1]); indent--; genendbrace(fout,n); } break; case GPuntil: nb=genlistargs(n,arg,2,2); if ( tree[arg[0]].f!=Fseq && tree[arg[0]].f!=Fblock) { if (arg[1]!=GNOARG) { genindentline(fout,"do\n"); genbrace(fout,arg[1]); fprintf(fout," while(");/*KB style*/ } else genindentline(fout,"while("); gencast(fout,arg[0],Gnegbool); fprintf(fout,");\n"); } else { int x=tree[arg[0]].x; int y=tree[arg[0]].y; if (tree[arg[0]].f==Fblock) { y=block[x].ret; x=tree[arg[0]].y; } genindentline(fout,"for(;;)\n"); genindentline(fout,"{\n"); indent++; genindentseq(fout,arg[1]); gencode(fout,arg[1]); gensemicolon(fout,arg[1]); genindentseq(fout,x); gencode(fout,x); gensemicolon(fout,x); if (tree[y].f==Fblock) { genindent(fout); gencode(fout,y); y=block[tree[y].x].ret; } genindentline(fout,"if ("); gencast(fout,y,Gbool); fprintf(fout,")\n"); indent++; genindentline(fout,"break;\n"); indent--; indent--; genendbrace(fout,n); } break; case GPfor: nb=genlistargs(n,arg,4,4); genindentline(fout,"for ("); if (arg[0]!=GNOARG) gencode(fout,arg[0]); else fprintf(fout," "); fprintf(fout,"; "); if (arg[1]!=GNOARG) gencode(fout,arg[1]); fprintf(fout,"; "); if (arg[3]!=GNOARG) gencode(fout,arg[3]); fprintf(fout,")\n"); genbrace(fout,arg[2]); break; case GPdoloop: genindentline(fout,"for (;;)\n"); genbrace(fout,y); break; case GPforstep: nb=genlistargs(n,arg,4,6); genindentline(fout,"for ("); gencode(fout,arg[0]); fprintf(fout,"; "); if ( nb==4 ) gencode(fout,arg[3]); else { gencode(fout,arg[3]); fprintf(fout,"?"); gencode(fout,arg[4]); fprintf(fout,":"); gencode(fout,arg[5]); } fprintf(fout,"; "); gencode(fout,arg[2]); fprintf(fout,")\n"); genbrace(fout,arg[1]); break; #if 0 forstep(x=binf,bsup,step,SEQ) { int idx; for( idx=0,x=binf; x<=bsup; i=i==lg(step)?1:i+1,x+=step[i]) { } } #endif case GPforstepvec: nb=genlistargs(n,arg,8,8); genindentline(fout,"for ("); gencode(fout,arg[6]); fprintf(fout," = 0, "); gencode(fout,arg[0]); fprintf(fout,"; "); gencode(fout,arg[3]); fprintf(fout,"?"); gencode(fout,arg[4]); fprintf(fout,":"); gencode(fout,arg[5]); fprintf(fout,"; "); gencode(fout,arg[6]); fprintf(fout," = "); gencode(fout,arg[6]); fprintf(fout," == "); gencast(fout,arg[7],Gsmall); fprintf(fout," ? 1 :"); gencode(fout,arg[6]); fprintf(fout," + 1, "); gencode(fout,arg[2]); fprintf(fout,")\n"); genbrace(fout,arg[1]); break; case GPmakevecsmall: case GPmakevec: nb=genlistargs(n,arg,1,STACKSZ); genindent(fout); gencode(fout,arg[0]); gensemicolon(fout,arg[0]); for(i=1;igc&(1<g.n) { genfuncbydesc(fout,0,NULL,FC_avma,n); fprintf(fout," = "); gencode(fout,arg[0]); fprintf(fout,";\n"); } else if (bl->gc&(1<gcvar[0]; int parg[2]; gencode(fout,var); fprintf(fout," = "); parg[0]=arg[0]; parg[1]=var; genfuncbydesc(fout,2,parg,FC_gerepileupto,n); fprintf(fout,";\n"); } else { int parg[STACKSZ+1]; /*FIXME:Putting an if statement in the wilderness is not secure*/ if (nb==3) { fprintf(fout,"if ("); if (arg[2]==GNOARG) { parg[0]=arg[0]; genfuncbydesc(fout,1,parg,FC_gc_needed,n); } else { parg[0]=arg[2]; parg[1]=arg[0]; genfuncbydesc(fout,2,parg,FC_low_stack_lim,n); } fprintf(fout,")\n"); indent++; genindent(fout); indent--; } parg[0]=arg[0]; for(i=0;ig.n;i++) parg[i+1]=bl->gcvar[i]; genfuncbydesc(fout,bl->g.n+1,parg,FC_gerepileall,n); fprintf(fout,";\n"); } break; case GPlocalprec: case GPlocalbitprec: gencode(fout, y); preclevel++; break; case GPreturn: fprintf(fout,"return"); if (functype(lfunc[currfunc])!=Gvoid) { /*I don't like to see `return ;'*/ fprintf(fout," "); gencast(fout,y,functype(lfunc[currfunc])); } break; case GPlabel: fprintf(fout,"label%d:",tree[y].x); break; case GPcopyarg: gencopyarg(fout); break; case GPinitfunc: geninitfunc(fout); break; case GPaddhelp: case GPinstall: break; case GPclosure: nb=genlistargs(n,arg,1,STACKSZ); if (FC_strtoclosure >=0) genfuncbydesc(fout,nb,arg,FC_strtoclosure,n); else die(n,"closure not available in this version"); break; default: if (gp->spec>0) die(n,"genentryspec: func spec not implemented"); else die(n,"Internal error: genentryspec called with no spec"); } } gp2c-0.0.14/src/context.c0000644000175000017500000000653313623476440012007 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" /* return hashing value for variable s*/ long varkey(const char *s) { long n = 0; while (*s) { n = (n<<1) ^ *s; s++; } return n; } int newctx(int flag) { int n; n=stack_new(&s_ctx); ctxstack[n].flag=flag; return n; } int newaff(enum AFenum func, int idx) { int n=stack_new(&s_aff); if (idx<0) die(-1,"Internal error: unknown var"); affstack[n].f=func; affstack[n].idx=idx; return n; } int newblock(void) { int n=stack_new(&s_bloc); stack_init(&block[n].s,sizeof(*block[n].c),(void **)&block[n].c); block[n].ret=-1; stack_init(&block[n].v,sizeof(*block[n].var),(void **)&block[n].var); block[n].gc=0; block[n].egc=-1; stack_init(&block[n].g,sizeof(*block[n].gcvar),(void **)&block[n].gcvar); return n; } int fillvar(int n, int flag, int t, int initval) { int c=getvarerr(n); ctxvar *v=ctxstack+c; v->flag=flag; vartype(*v)=t; v->initval=initval; return c; } int pushvar(int n, int flag, int t, int initval) { const char *s=entryname(n); int c=newctx(flag); ctxvar *v=ctxstack+c; if (flag&(1<cvar=usercname(s); else v->cvar=s; v->key=varkey(s); v->node=newnodeall(Fentry,newentry(s),-1,tree[n].fileno,tree[n].lineno,tree[n].comment); vartype(*v)=t; v->initval=initval; v->val=-1; return c; } int getvarinstack(const char *s, int n, const ctxvar *ctx) { int i,key; key=varkey(s); for(i=n-1;i>=0 && (ctx[i].key!=key || strcmp(varstr(ctx[i]),s));i--); return i; } int getvarbyname(const char *s) { return getvarinstack(s,s_ctx.n,ctxstack); } int getvar(int n) { if(tree[n].f!=Fentry && tree[n].f!=Ffunction) die(n,"Internal error : Not a Fentry/Ffunction in getvar"); return getvarbyname(value[tree[n].x].val.str); } ctxvar *getvarinblock(int n, context *fc) { int v; if (tree[n].f!=Fentry) die(n,"Internal error : %s(%d) in getvarinblock",funcname(tree[n].f),tree[n].f); v=getvarinstack(value[tree[n].x].val.str,fc->s.n,fc->c); if ( v<0 ) die(n,"Internal error : var not found in getvarinblock"); return fc->c+v; } int getvarerr(int n) { int v=getvar(n); if (v==-1) die(n,"Internal error: variable %s appears from nowhere", value[tree[n].x].val.str); return v; } void restorectx(int c) { int i,j; for(i=c,j=c;is_ctx.n) die(-1,"Internal error: restorectx"); s_ctx.n=j; } void pushctx(context *fc) { stack_push(&s_ctx,&fc->s); } void copyctx(int c, context *fc) { int i; fc->s.n=0; for (i=c; is); fc->c[n]=ctxstack[i]; } } gp2c-0.0.14/src/gerepile.c0000644000175000017500000001226313653242262012110 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" void gerepilelist(stack *s, stack *g, int savb) { affnode *an=(affnode *) *stack_base(s); int i; for(i=0;in;i++) { int idx=an[i].idx; ctxvar *v=ctxstack+idx; int t=vartype(*v); if (ctype[t]!=Vgen || ((v->flag&(1<val!=-1)) continue; /*If i is affected or referenced*/ if (an[i].f==AFclone) stack_remove_int(g,v->node); else if (an[i].f!=AFaccess && an[i].f!=AFhide) { int j; /*search the first occurence of i*/ for(j=0;j=savb && an[j].f==AFassign) continue; /*else check if it is not already in the list*/ if (stack_has_int(g,v->node)) continue; stack_push_int(g,v->node); } } stack_int_sort(g); if (debug) { int i; fprintf(stderr,"/*"); for(i=0;in;i++) fprintf(stderr,"%s%s ",varstr(ctxstack[an[i].idx]),an[i].f==AFassigncompo?"=[]":an[i].f==AFassign?"=":""); fprintf(stderr,"*/\n"); } } void pilelistvar(int idx) { ctxvar *v=ctxstack+idx; if (v->flag&(1<initval>=0) { pilelist(v->initval); newaff(AFassign,idx); } } void pilelist(int n) { int x,y; int savc; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: if (tree[x].f!=Fentry) pilelist(x); pilelist(y); x=getlvaluerr(x); if (ctype[tree[x].t]==Vgen && ctype[tree[y].t]==Vgen && (tree[detag(y)].m&(1<v,&uf->g,uf->savb); currfunc=savcf; } break; case Fblock: savc=s_ctx.n; bl=block+tree[n].x; pushctx(bl); pilelist(y); if (bl->gc&(1<v,&bl->g,bl->savb); if (bl->egc>=0) { int vret=getvar(bl->egc); ctxvar *v=ctxstack+vret; if (ctype[vartype(*v)]==Vgen && !stack_has_int(&bl->g,vret)) stack_push_int(&bl->g,v->node); } } copyctx(savc,bl); s_ctx.n=savc; break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in pilelist",funcname(tree[n].f)); pilelist(x); pilelist(y); } } void pileclean(int n) { int x,y; int savc,sava,savb; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: pileclean(x); pileclean(y); break; case Frefarg: case Findarg: case Ftag: pileclean(x); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: pileclean(y); break; case Fdeffunc: { int funcid=tree[n].x; const char *name=entryname(funcid); int savcf=currfunc; /*get func number and context*/ currfunc=findfunction(name); pileclean(y); currfunc=savcf; } break; case Fblock: savc=s_ctx.n; sava=s_aff.n; bl=block+tree[n].x; pushctx(bl); savb=s_ctx.n; pileclean(y); if (bl->gc&(1<g,&ufunc->g); if (bl->g.n!=1) bl->gc&=~(1<gc&(1<g.n || (bl->gc&(1<gc&(1<=savc && wgc&(1<g.n==0 || (bl->g.n==1 && (bl->gc&(1<=FneedENTRY) die(n,"Incorrect node %s in pileclean",funcname(tree[n].f)); pileclean(x); pileclean(y); } } gp2c-0.0.14/src/moveblock.c0000644000175000017500000002520413623476440012300 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" static int currblo; void destroynode(int p, side s) { if (p==-1) return; if (s==left) tree[p].x=GNIL; else tree[p].y=GNIL; } /* n: node p: parent (-1 for first node) ps: left/right r: root of seq rs:left/right */ void movecode(int n, int p, int ps, int *r, int *rs, int ret) { if (debug) fprintf(stderr,"movecode:%d %d %d\n",n,p,*r); if (ret==-1) ret=GNIL; if (p!=*r)/*we are not at the root of seq*/ { if ( tree[*r].f==Fseq ) { /*the interesting case*/ if (*rs==left) { int seq=newseq(n,tree[*r].x); tree[*r].x=seq; *rs=right;*r=seq; } else { int seq=newseq(tree[*r].x,n); tree[*r].x=seq; } } else /*we are at the start of a func, block or args entry*/ { if (*rs==left) { int seq=newseq(n,tree[*r].x); tree[*r].x=seq; *r=seq;*rs=right; } else { int seq=newseq(n,tree[*r].y); tree[*r].y=seq; *r=seq;*rs=right; } } if (ps==left) tree[p].x=ret; else tree[p].y=ret; } } void moveblock(int n, int p, int ps, int *r, int *rs) { int x,y; int z; int s; gpfunc *gp; int nf; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: s=left;z=n; moveblock(x,n,left,&z,&s); s=right;z=n; moveblock(y,n,right,&z,&s); break; case Findarg: case Frefarg: case Ftag: moveblock(x,n,left,r,rs); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: /*If it is a func with "seq" arg we must change the root... Yes it's a real pain. Note: normally 'E' code does not contain Fseq after parsing, but may after this stage, e.g. if it calls "vector". */ nf=findfunction(entryname(n)); gp=lfunc+nf; if (nf>=0 && gp->spec>0) tree[n].m|=funcmode(*gp)&(1<=0 && gp->spec>0 && gp->proto.code && y!=-1) { int stack[STACKSZ]; int nb=listtostackparent(y,Flistarg,stack,STACKSZ,gp->gpname,n); const char *code=gp->proto.code; int i, star=code[0]=='*'; if (code[0]==0) die(-1,"incorrect pseudoprototype for %s: %s\n",gp->gpname,code); if (nb==0) { if (star || code[0]=='I' || code[0]=='E') { z=n; s=right; moveblock(y,z,right,&z,&s); } else moveblock(y,n,right,r,rs); } else { if (star || code[0]=='I' || code[0]=='E') { z=stack[0];s=left; moveblock(tree[z].x,z,left,&z,&s); } else moveblock(tree[stack[0]].x,stack[0],left,r,rs); } for(i=0;igpname,code); if (star || code[i+1]=='I' || code[i+1]=='E') { z=stack[i];s=right; moveblock(tree[z].y,z,right,&z,&s); } else moveblock(tree[stack[i]].y,stack[i],right,r,rs); } } else moveblock(y,n,right,r,rs); break; case Fdeffunc: z=n;s=right; moveblock(y,n,right,&z,&s); break; case Fblock: z=n;s=right; movecode(n,p,ps,r,rs,newleaf(block[x].ret)); moveblock(y,n,right,&z,&s); break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in moveblock",funcname(tree[n].f)); moveblock(x,n,left,r,rs); moveblock(y,n,right,r,rs); } } int blockisempty(int n) { int i; context *fc=block+tree[n].x; for(i=0;is.n;i++) { ctxvar *v=fc->c+i; if (!(v->flag&(1<val==-1) return 0; } return 1; } /* n: node p: parent (-1 for first node) d: 0 right child, 1 left child */ void cleanvar(int n) { int x,y; int i; int v,savc,savblo; context *bl; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fassign: cleanvar(x); cleanvar(y); x=tree[n].x; y=tree[n].y; if (tree[x].f==Fentry) { v=getvarerr(x); if (ctxstack[v].flag&(1<v.n;i++) { affnode *an=bl->var+i; if (an->idx==w && an->f!=AFaccess) simple=0; } } } if (simple) { ctxstack[v].val=y; tree[n]=tree[GNIL]; } } } break; case Findarg: case Frefarg: case Ftag: cleanvar(x); break; case Fconst: case Fsmall: case Fnoarg: break; case Fentry: v=getvarerr(n); if ( (ctxstack[v].flag&(1<s.n;i++) { ctxvar *c=bl->c+i; if (c->initval!=-1) cleanvar(c->initval); } cleanvar(y); copyctx(savc,block+tree[n].x); if (blockisempty(n)) tree[n].m|=(1<=FneedENTRY) die(n,"Incorrect node %s in cleanvar",funcname(tree[n].f)); cleanvar(x); cleanvar(y); } } /* n: node p: parent (-1 for first node) d: side */ void cleancode(int n, int p, int d) { int x,fx; int y,fy; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: cleancode(x,n,left); cleancode(y,n,right); x=tree[n].x;fx=tree[detag(x)].f; y=tree[n].y;fy=tree[detag(y)].f; if ( p>=0 && ( fx==Fnoarg || fy==Fnoarg)) { if (fx==Fnoarg && fy==Fnoarg) destroynode(p,d); else { if (d==left) tree[p].x=(fx==Fnoarg)?y:x; else tree[p].y=(fx==Fnoarg)?y:x; } } else tree[n].m|=(1<=FneedENTRY) die(n,"Incorrect node %s in cleancode",funcname(tree[n].f)); cleancode(x,n,left); cleancode(y,n,right); } } /* n: node p: parent (-1 for first node) ps: child side(left/right) *r: root *rs: root child side */ void gendeblock(int n, int p, int ps, int *r, int *rs) { int x,y; int z; int s; gpfunc *gp; int nf; if (n<0) return; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: s=left;z=n; gendeblock(x,n,left,&z,&s); s=right;z=n; gendeblock(y,n,right,&z,&s); break; case Findarg: case Frefarg: case Ftag: gendeblock(x,n,left,r,rs); break; case Fconst: case Fsmall: case Fnoarg: case Fentry: break; case Ffunction: /*If it is a func with "seq" arg we must change the root... Yes it's a real pain. Note: normally 'E' code does not contain Fseq after parsing, but may after this stage, e.g. if it calls "vector". */ nf=findfunction(entryname(n)); gp=lfunc+nf; if (nf>=0 && gp->spec>0 && gp->proto.code && y!=-1) { int stack[STACKSZ]; int nb=listtostackparent(y,Flistarg,stack,STACKSZ,gp->gpname,n); const char *code=gp->proto.code; int i, star=code[0]=='*'; if (code[0]==0) die(-1,"incorrect pseudoprototype for %s: %s\n",gp->gpname,code); if (nb==0) { if (star || code[0]=='I' || code[0]=='E') { z=n; s=right; gendeblock(y,z,right,&z,&s); } else gendeblock(y,n,right,r,rs); } else { if (star || code[0]=='I' || code[0]=='E') { z=stack[0];s=left; gendeblock(tree[z].x,z,left,&z,&s); } else gendeblock(tree[stack[0]].x,stack[0],left,r,rs); } for(i=0;igpname,code); if (star || code[i+1]=='I' || code[i+1]=='E') { z=stack[i];s=right; gendeblock(tree[z].y,z,right,&z,&s); } else gendeblock(tree[stack[i]].y,stack[i],right,r,rs); } } else { gendeblock(y,n,right,r,rs); if (ps==left) n=tree[p].x; else n=tree[p].y; if (is_subtype(tree[n].t,Gvoid)) { /*C doesn't allow making anything from void, so we need to move the call here. GP cast void to zero if necessary*/ movecode(n,p,ps,r,rs,-1); } } break; case Fdeffunc: z=n;s=right; gendeblock(y,n,right,&z,&s); break; case Fblock: z=n;s=right; gendeblock(y,n,right,&z,&s); break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in gendeblock",funcname(tree[n].f)); gendeblock(x,n,left,r,rs); gendeblock(y,n,right,r,rs); } } gp2c-0.0.14/src/lang.l0000644000175000017500000002235313623476440011253 00000000000000%{ /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include "header.h" #include "parse.h" #define MAX_INCLUDE_DEPTH 10 extern int yydebug; static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; static int depth = 0; static int linecount_stack[MAX_INCLUDE_DEPTH]; static int filecount_stack[MAX_INCLUDE_DEPTH]; static enum {Mread_lines,Min_braces} mode=Mread_lines; static int start=0; static int lastcom=-1; static void countline(char *text,int len) { int i; for (i=0; i> { if ( --depth < 0 ) yyterminate(); else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer(include_stack[depth]); linecount = linecount_stack[depth]; filecount = filecount_stack[depth]; } } \\r[^\n]+ { /*With credit to flex manpage*/ char *s=yytext+2; size_t ls; while(*s==' ' || *s=='\t') s++; if ( depth >= MAX_INCLUDE_DEPTH ) die(-1,"\\r includes nested too deeply" ); linecount_stack[depth] = linecount; filecount_stack[depth] = filecount; include_stack[depth++] = YY_CURRENT_BUFFER; ls = strlen(s); if (s[0]=='"' && s[ls-1]=='"') { s[ls-1]=0; s++; } yyin = fopen(s,"r"); if (!yyin) { char *t=(char*)malloc(strlen(s)+4); sprintf(t,"%s.gp",s); yyin = fopen(t,"r"); if (!yyin) die(-1,"cannot open file `%s'",s); s=t; } else s = strdup(s); linecount=1; filecount=newsrcfile(s); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); } \\[a-qs-z][^\n]*|\?[^\n]* { fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } ##?[ \t\r]*$ { /*We cannot recognize # */ fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } ".." return KDOTDOT; "->" return KARROW; \)[ \t\r]*-> return KPARROW; "\\/" return KDR; ">>" return KSR; "<<" return KSL; "<=" return KLE; ">=" return KGE; "!="|"<>" return KNE; "===" return KID; "==" return KEQ; "&&" return KAND; "||" return KOR; "++" return KPP; "--" return KSS; "+=" return KPE; "-=" return KSE; "*=" return KME; "/=" return KDE; "\\=" return KEUCE; "\\/=" return KDRE; "%=" return KMODE; ">>=" return KSRE; "<<=" return KSLE; "\n" {linecount++;if (mode==Mread_lines) {BEGIN(toplevel);return '\n';}} "\n" {linecount++;return '\n';} "{" {mode=Min_braces;BEGIN(INITIAL);} "}" {mode=Mread_lines;BEGIN(toplevel);} "\\\n" {linecount++;} "=" { for( ; ; ) { int c, nc, star=0; for( ; ; ) { c = input(); if ( c == EOF || c == 0 ) return c; if ( c == '\n' ) linecount++; else if ( c!=' ' && c!='\t' && c!='\r') break; } /*Since only one char of look-ahead is available, we have to handle the / or \ by ourself. Fortunately: after =/, only * is valid, after =\, only \ and \\n are valid. Thus we handle them and reject the rest. */ if (c!='/' && c!='\\') { unput(c); return '='; } nc=input(); if (c=='\\' && nc=='\n') { linecount++; continue; } if ((c=='/' && nc!='*') || (c=='\\' && nc!='\\')) { fprintf(stderr,"%s:%d: parse error after =%c%c\n" ,srcfile[filecount],linecount,(char)c,(char)nc); fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (c=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) die(-1,"Unfinished comment"); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; } } } } [ \t\r]+ "/*"|"\\\\" { int star=0; int n; int nl=0; int lc=linecount; if (lastcom==-1) lastcom=newcomment(); n=lastcom; pushcomment(n,'/'); pushcomment(n,'*'); if (yytext[0]=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); pushcomment(n,c); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { nl=1; for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; pushcomment(n,c); } pushcomment(n,' '); pushcomment(n,'*'); pushcomment(n,'/'); pushcomment(n,'\n'); } /*We hack: we put white spaces after comments in the comments This makes output looking better in most cases. Sadly we can't add white spaces that are before comments. */ for( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) return '\n'; if ( c == '\n' ) { linecount++; pushcomment(n,c); nl=1; } else if ( c == ' ' || c == '\t') { if (nl==0) pushcomment(n,c); /*We only add spaces on the same line*/ } else if ( c != '\r' ) { unput(c); break; } } if (lc. {BEGIN(INITIAL); unput(yytext[0]);} . return yytext[0]; %% gp2c-0.0.14/src/toplevel.c0000644000175000017500000000731713623476440012156 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int toplevel=0; int initnode=0; static const char *basename(const char *s) { long i; long l=strlen(s); for(i=l-1;i>=0;i--) if (s[i]=='/') return s+i+1; return s; } char *nameinitfunc(void) { const char *initname="init_"; const char *absname, *p; char *name, *q; absname=basename(nameparse); name=calloc(strlen(initname)+strlen(absname)+1,sizeof(*name)); sprintf(name,"%s",initname); q=name+strlen(name); for(p=absname;*p && *p!='.';p++,q++) if (isalnum(*p)) *q=*p; else *q='_'; *q=0; return name; } int addinitfunc(int n) { int code; int ret; char *name; name=nameinitfunc(); code=toplevel?toplevel:-1; code=addseqright(code,GNIL); initnode = newentry(name); code=newnode(Fdeffunc,newnode(Ffunction,initnode,-1),code); ret=addseqright(code,n); return ret; } void genpredeclaration(int args, int n) { int stack[STACKSZ]; int i; int nb=listtostack(args,Flistarg,stack,STACKSZ,"function declaration",n); if (nb==1 && stack[0]==GNOARG) nb--; for(i=0;i=0 && tree[x].f!=Fdeffunc && tree[x].f!=Fseq) { int dx = detag(x); if (isfunc(dx,"global")) genpredeclaration(tree[dx].y,dx); if (isfunc(dx,"local")) warning(dx,"`local' at top-level discarded"); else toplevel=addseqright(toplevel,x); tree[n].x=GNIL; } else gentoplevel(x); if (y>=0 && tree[y].f!=Fdeffunc && tree[y].f!=Fseq) { int dy = detag(y); if (isfunc(dy,"global")) genpredeclaration(tree[dy].y,dy); if (isfunc(dy,"local")) warning(dy,"`local' at top-level discarded"); else toplevel=addseqright(toplevel,y); tree[n].y=GNIL; } else gentoplevel(y); break; case Ffunction: die(n,"Ffunction in toplevel"); gentoplevel(y); break; case Fdeffunc: case Fentry: case Fconst: case Fsmall: case Fnoarg: break; case Findarg: case Frefarg: case Ftag: die(n,"%s in toplevel",funcname(tree[n].f)); gentoplevel(x); break; default: if (tree[n].f>=FneedENTRY) { die(n,"Internal error: unknown func %s in gentoplevel",funcname(tree[n].f)); } else { gentoplevel(x); gentoplevel(y); } } } gp2c-0.0.14/src/parse.h0000644000175000017500000001152414204163264011427 00000000000000/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ #ifndef YY_YY_PARSE_H_INCLUDED # define YY_YY_PARSE_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { YYEMPTY = -2, YYEOF = 0, /* "end of file" */ YYerror = 256, /* error */ YYUNDEF = 257, /* "invalid token" */ KPARROW = 258, /* ")->" */ KARROW = 259, /* "->" */ KDOTDOT = 260, /* ".." */ KPE = 261, /* "+=" */ KSE = 262, /* "-=" */ KME = 263, /* "*=" */ KDE = 264, /* "/=" */ KDRE = 265, /* "\\/=" */ KEUCE = 266, /* "\\=" */ KMODE = 267, /* "%=" */ KAND = 268, /* "&&" */ KOR = 269, /* "||" */ KID = 270, /* "===" */ KEQ = 271, /* "==" */ KNE = 272, /* "!=" */ KGE = 273, /* ">=" */ KLE = 274, /* "<=" */ KSRE = 275, /* ">>=" */ KSLE = 276, /* "<<=" */ KSR = 277, /* ">>" */ KSL = 278, /* "<<" */ KDR = 279, /* "\\/" */ KPP = 280, /* "++" */ KSS = 281, /* "--" */ KINTEGER = 282, /* "integer" */ KREAL = 283, /* "real number" */ KENTRY = 284, /* "variable name" */ KSTRING = 285, /* "character string" */ SEQ = 286, /* SEQ */ DEFFUNC = 287, /* DEFFUNC */ INT = 288, /* INT */ LVAL = 289, /* LVAL */ SIGN = 290, /* SIGN */ DERIV = 291, /* DERIV */ MAT = 292 /* MAT */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ #define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 #define KPARROW 258 #define KARROW 259 #define KDOTDOT 260 #define KPE 261 #define KSE 262 #define KME 263 #define KDE 264 #define KDRE 265 #define KEUCE 266 #define KMODE 267 #define KAND 268 #define KOR 269 #define KID 270 #define KEQ 271 #define KNE 272 #define KGE 273 #define KLE 274 #define KSRE 275 #define KSLE 276 #define KSR 277 #define KSL 278 #define KDR 279 #define KPP 280 #define KSS 281 #define KINTEGER 282 #define KREAL 283 #define KENTRY 284 #define KSTRING 285 #define SEQ 286 #define DEFFUNC 287 #define INT 288 #define LVAL 289 #define SIGN 290 #define DERIV 291 #define MAT 292 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 31 "parse.y" int val; strcom str; #line 146 "parse.h" }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_PARSE_H_INCLUDED */ gp2c-0.0.14/src/genblock.c0000644000175000017500000006132314532112053012070 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include #include "header.h" static int multi=0; static int newprivvar=1; extern int initnode; int newdecl(int flag, int t, int initval, int *v) { char s[33]; sprintf(s,"%d",newprivvar++); *v=newnode(Fentry,newentry(strdup(s)),-1); return pushvar(*v,flag,t,initval); } int newcall(const char *s, int y) { return newnode(Ffunction,newentry(s),y); } int stacktofun(int fun, int *stack, int nb) { int n,i; if (nb==-1) return -1; for(n=stack[0],i=1;i=0) { if (tree[seq].f==Fseq) { bseq=newnode(Fassign,ret,tree[seq].y); bseq=newnode(Fseq,tree[seq].x,bseq); } else bseq=newnode(Fassign,ret,seq); } else bseq=seq; return bseq; } int geninsertvarop(int seq, int ret, OPerator op) { int bseq; if (seq==-1) return -1; if (ret>=0) { if (tree[seq].f==Fseq) { bseq=newopcall(op,ret,tree[seq].y); bseq=newnode(Fseq,tree[seq].x,bseq); } else bseq=newopcall(op,ret, seq); } else bseq=seq; return bseq; } int newcoeff(int n, int x, int y) { int arg[3]; int nb=y<0?2:3; arg[0]=n; arg[1]=x; arg[2]=y; return newnode(Ffunction,OPcoeff,stacktoargs(arg,nb)); } int newcoeffsafe(int n, int x, int y) { int arg[3]; int nb=y<0?2:3; arg[0]=n; arg[1]=x; arg[2]=y; if (!safecoeff) return newnode(Ffunction,OPcoeff,stacktoargs(arg,nb)); else return newcall("_safecoeff",stacktoargs(arg,nb)); } void makeblock(int bl, int n, int aseq, int ret, int savx) { /*create a block*/ tree[n].f=Fblock; tree[n].x=bl; block[bl].ret=ret; tree[n].y=aseq; copyctx(savx,block+bl); restorectx(savx); } void makeblocks(int bl1, int bl2, int n, int bseq, int aseq, int ret, int savx) { int y; tree[n].f=Fblock; tree[n].x=bl1; block[tree[n].x].ret=ret; y=addseqright(bseq,newnode(Fblock,bl2,aseq)); tree[n].y=y; copyctx(savx,block+bl2); restorectx(savx); } void makeblocks3(int bl1, int bl2, int bl3, int n, int bseq, int aseq, int ret, int sav0, int savx) { int y; tree[n].f=Fblock; tree[n].x=bl1; block[tree[n].x].ret=ret; y=addseqright(bseq,newnode(Fblock,bl2,newnode(Fblock,bl3,aseq))); tree[n].y=y; copyctx(savx,block+bl3); restorectx(savx); copyctx(sav0,block+bl2); restorectx(sav0); } void affectval(int vn, int val, int *seq) { ctxvar *v = ctxstack+vn; if (val<0) die(-1,"Internal error: affectval"); int valn=newnode(Fassign,newleaf(v->node),val); *seq=addseqright(*seq,valn); } int genblockdeclaration(int args, int n, int flag, int type, int *seq) { int stack[STACKSZ]; int i; enum {local,global,function} decl; int mint=(type>=0)?type:Ggen; int nb=listtostack(args,Flistarg,stack,STACKSZ,"function declaration",n); if (nb==1 && stack[0]==GNOARG) nb--; decl=(flag&(1<node,FC_default_check)) v->flag|=(1<narg-1;i>=0;i--) { ctxvar *v=ctxstack+sav1+i; gpdescarg *rule; int check=-1; if (!(v->flag&(1<node, FC_badtype); if (rule && rule->args[0].type==vartype(*v)) { check=newcall("_badtype",newleaf(v->node)); if (rule->type!=Gvoid) { int name=newstringnode(gp->gpname,-1); int args = descfindrules1(name,findfuncdesc("_err_type")) ? name : newnode(Flistarg,name,v->node); check=newcall("if", newnode(Flistarg,check, newcall("_err_type", args))); } } if (v->initval>=0 && (v->flag&(1<node)), newnode(Fassign,newleaf(v->node),v->initval)); check=newcall("if", (check>=0)?newnode(Flistarg,n,check):n); v->initval=-1; } if (check>=0) seq=addseqleft(check,seq); } return seq; } #if 0 /*The code for global(globalvars) f(args)=local(localvars);code;... is */ { ulong ltop=avma; GEN p1; { GEN args; GEN localvars; code; p1=...; } gerepileall(ltop,2,&p1,&globalsvar); return p1; } #endif void genblockdeffunc(int n) { int funcid=tree[n].x; int seq=tree[n].y; const char *name=entryname(funcid); int args=tree[funcid].y; int bl1,gltop=-1,level=preclevel; int savcf,savnpv; int sav1,nodebl1; userfunc *ufunc; /*save global var*/ savcf=currfunc; savnpv=newprivvar; /*reset private var counter*/ newprivvar=1; /*create function*/ currfunc=findfunction(entryname(funcid)); if (currfunc<0) die(n,"internal error: unknown function %s in genblockdeffunc",name); if (lfunc[currfunc].spec!=GPuser) { if (lfunc[currfunc].spec==GPinstalled) die(n,"Cannot redefine install'ed function %s",name); else die(n,"internal error: not a user function %s in genblockdeffunc",name); } ufunc=lfunc[currfunc].user; /*create external block*/ bl1=newblock(); sav1=s_ctx.n; ufunc->bctx=sav1; ufunc->bl=bl1; if (autogc) { /*declare ltop*/ gltop=newnode(Fentry,newentry("ltop"),-1); pushvar(gltop,0,Gpari_sp,newcall("_avma",-1)); } /*declare function arguments*/ ufunc->sarg=s_ctx.n-sav1; ufunc->narg=genblockdeclaration(args,n,(1<sarg,seq,ufunc); /*generate block*/ genblock(seq,-1); if (tree[funcid].x!=initnode) { /*FIXME: For now, clear Cglobal flag to avoid initialization problem with implicit fetch_user_var().*/ int i; for (i=sav1;iproto.code ? gp->proto.code : "&DG"; /* 2.3 compat */ char c; PPproto mod; int nb=genlistargs(n,arg,0,STACKSZ); int i=0; while((mod=parseproto(&p,&c))!=PPend) { if (i=nb) die(n,"too few arguments"); switch(c) { case 'r': if (tree[arg[i]].f==Fentry) tree[arg[i]].f=Fconst; else if (tree[arg[i]].f!=Fconst) die(n,"argument must be a raw string"); break; case '&': if (tree[arg[i]].f!=Frefarg) die(arg[i],"missing &"); arg[i]=tree[arg[i]].x; case '*': /*Fall through */ { int a = detag(arg[i]); if (tree[a].f==Fmatcoeff) { int l=getlvaluerr(a); genblock(l,n); ctxstack[getvarerr(l)].flag|=1<user->bl; for (i=0; is.n; i++) { ctxvar *v=fc->c+i; if (v->flag&(1<node)); } return n; } static int has_mand_arg(const char *code) { PPproto mod; char c; while ((mod=parseproto(&code,&c))!=PPend) if(mod==PPstd) return 1; return 0; } void genblock(int n, int p) { int x,y; if (n<0) return; filecount=tree[n].fileno; linecount=tree[n].lineno; x=tree[n].x; y=tree[n].y; switch(tree[n].f) { case Fseq: genblock(x, n); genblock(y, n); break; case Fmat: if (x==-1) { int z=newgetgvec("t_MAT"); tree[n]=tree[z]; } else genblockmatrix(n); break; case Fvec: if (x==-1) { int z=newgetgvec("t_VEC"); tree[n]=tree[z]; } else genblockvector(n, Gvec, "t_VEC"); break; case Fassign: x=detag(x); if (tree[x].f==Fvec) genblockvecaff(n); else { if (tree[x].f==Fmatcoeff) { int l=getlvaluerr(x); int m=matindex_type(tree[x].y); genblock(l,n); ctxstack[getvarerr(l)].flag|=1<=0) { genblockindex(tree[y].x); genblockindex(tree[y].y); } } break; case Fmatcoeff: { int nn; int m=matindex_type(y); int yx=tree[y].x, yy=tree[y].y; genblock(x,n); genblock(y,n); switch(m) { case VEC_std: nn=newcoeffsafe(x,tree[yx].x,-1); break; case MAT_std: nn=newcoeffsafe(x,tree[yx].x,tree[yy].x); break; case MAT_line: tree[n].y=yx; if (FC_matrixrow>=0) nn=newcall("_[_,]",newnode(Flistarg,x,tree[yx].x)); else { genblockmatrixl(n,x,tree[yx].x); nn=n; } break; case MAT_column: nn=newcoeff(x,tree[yy].x,-1); break; case MAT_range: { int arg[5]; arg[0] = x; arg[1] = tree[yx].x; arg[2] = tree[yx].y; if(yy<0) nn=newnode(Ffunction,newentry("_[_.._]"),stacktoargs(arg,3)); else { arg[3] = tree[yy].x; arg[4] = tree[yy].y; nn=newnode(Ffunction,newentry("_[_.._,_.._]"),stacktoargs(arg,5)); } } break; default: die(-1,"Unknown matindex"); } tree[n]=tree[nn]; break; } case Fcall: { int seq = newcall("_(_)",addlistleft(x,y)); if (FC_call<0) die(n,"closures not available in this version"); tree[n]=tree[seq]; genblock(n,p); } break; case Fentry: { int nf, nv = getvar(n); if (nv>=0) break; nf = findfunction(entryname(n)); if (nf<0) /*Undeclared variable*/ { gpfunc *gp = lfunc+currfunc; userfunc *uf = gp->user; if (uf->flag&(1<narg++; } else {/*The variable has not been declared. * We declare it as a function-local variable initialized * to 'var. The global flag is set to avoid being block-local. * It is discarded in genblockdeffunc. This can be changed. */ int iv=newquotenode(entryname(n),-1); pushvar(n,(1<proto.code; GPspec spec = gp->spec; if (spec==GPuser && gp->user->flag&(1<=0 && x==OPlength && tree[y].f==Ffunction && tree[y].x==OPtrans) { int z=newcall("#_~", tree[y].y); tree[n] = tree[z]; } if (x==OPtrans && tree[y].f==Fvec) { if (tree[y].x==-1) { int z=newgetgvec("t_COL"); tree[n]=tree[z]; } else { tree[n]=tree[y]; genblockvector(n,Gvec,"t_COL"); } } else if(strcmp(value[x].val.str,"Vecsmall")==0 && tree[y].f==Fvec) { if (tree[y].x==-1) { int z=newgetgvec("t_VECSMALL"); tree[n]=tree[z]; } else { tree[n]=tree[y]; genblockvector(n,Gvecsmall,"t_VECSMALL"); } } else { int nf=findfunction(value[x].val.str); gpfunc *gp = lfunc+currfunc; userfunc *uf = gp->user; int nv = getvar(n); if (nf<0 && uf->flag&(1<narg++; genblock(y,n); } else if (nf<0 && nv>=0) { int seq = newnode(Fcall,newnode(Fentry,x,-1),y); tree[n]=tree[seq]; genblock(n,p); } else if (nf>=0 && lfunc[nf].iter) genblockfunciter(n,lfunc+nf); else if (nf>=0 && lfunc[nf].spec>0) genblockfuncspec(n,p,lfunc+nf); else if (nf>=0 && lfunc[nf].proto.code) genblockproto(n,lfunc+nf); else if (nf>=0 && x>=OPss && x<=OPme) /* For compatibility with PARI 2.3 */ genblockproto(n,lfunc+nf); else genblock(y,n); } break; case Fdeffunc: if (currfunc!=-1) die(n,"Internal error : nested function"); genblockdeffunc(n); break; case Fconst: case Fsmall: case Fnoarg: break; case Ftag: genblock(x,n); break; case Fblock: die(p,"Internal error : looping in genblock"); default: if (tree[n].f>=FneedENTRY) { die(p,"Internal error : unknown func %s in genblock",funcname(tree[n].f)); } else { genblock(x, n); genblock(y, n); } } } gp2c-0.0.14/src/varlist.c0000644000175000017500000001205213623476440012000 00000000000000/* Copyright (C) 2002-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" void varlistaff(int sava, int savc, stack *v) { affnode **an=(affnode **) stack_base(v); int i; v->n=0; for (i=sava;iflag&(1<initval>=0) { varlist(v->initval); newaff(AFassign,idx); } } void varlistfunc(int n,int fc) { gpfunc *gp=lfunc+fc; gpproto pro=gp->proto; const char *proto=pro.code; int i=0; char const *p=proto; char c; PPproto mod; int arg[STACKSZ]; int nb=genlistargs(n,arg,0,STACKSZ); gpdescarg *rule=gp->dsc?descfindrules(nb,arg,gp):NULL; if (rule) { for (i=0; inargs; i++) { switch(rule->args[i].t) { case AAlvalue: case AAreftype: { int v, a=detag(arg[i]); if (tree[a].f==Frefarg) a=tree[a].x; v=getvarerr(getlvaluerr(a)); newaff(AFrefarg,v); if (tree[a].f!=Fentry) newaff(AFassigncompo,v); break; } default: break; } } return; } if (!proto) return; while((mod=parseproto(&p,&c))) { switch(mod) { case PPdefault: if (i>=nb || arg[i]==GNOARG) { i++; break; } case PPauto: case PPstd: /* Fall through */ switch(c) { case '&': case '*': case 'W': { int v, a=detag(arg[i]); if (tree[a].f==Frefarg) a=tree[a].x; v=getvarerr(getlvaluerr(a)); newaff(AFrefarg,v); if (c=='W' || tree[a].f!=Fentry) newaff(AFassigncompo,v); break; } } i++; break; case PPdefaultmulti: i++; break; case PPstar: i=nb; break; default: die(n,"internal error: PPproto %d in varlistfunc",mod); } } if(ispec==GPuser) { userfunc *uf=gp->user; int base=lfunc[currfunc].user->savb;/*currfunc!=fc*/ int i; char *c; c=calloc(base,sizeof(*c)); for(i=0;iv.n;i++) { affnode *an=uf->var+i; if (an->idxidx].flag&(1<f!=AFaccess && an->f!=AFhide && c[an->idx]==0) { c[an->idx]=1; newaff(AFassign,an->idx); } } free(c); } else varlistfunc(n,fc); } break; case Fdeffunc: { int funcid=tree[n].x; const char *name=entryname(funcid); int savcf=currfunc; userfunc *uf; /*get func number and context*/ currfunc=findfunction(name); uf=lfunc[currfunc].user; savc=s_ctx.n; uf->savb=savc; sava=s_aff.n; varlist(y); nv=uf->v.n; varlistaff(sava,savc,&uf->v); if (nv!=uf->v.n) lastpass=1; currfunc=savcf; } break; case Fblock: savc=s_ctx.n; sava=s_aff.n; bl=block+tree[n].x; for (i=0;is.n;i++) { ctxvar *v=bl->c+i; int nv=getvarbyname(varstr(*v)); if (nv!=-1) newaff(AFhide,nv); } pushctx(bl); savb=s_ctx.n; for(i=0;is.n;i++) varlistvar(savc+i); varlist(y); nv=bl->v.n; varlistaff(sava,savb,&bl->v); if (nv!=bl->v.n) lastpass=1; bl->savb=savb; copyctx(savc,bl); s_ctx.n=savc; break; default: if (tree[n].f>=FneedENTRY) die(n,"Incorrect node %s in varlist",funcname(tree[n].f)); varlist(x); varlist(y); } } gp2c-0.0.14/src/gentype.c0000644000175000017500000002132613623476440011773 00000000000000/* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include #include "header.h" int **typemax; int *ctype; void inittrans(int n,int p) { int i; for(i=0;idsc; typemax=(int **) calloc(Gnbtype,sizeof(*typemax)); for(i=0;inb; n++) { gpdescarg *ga=dsc->a+n; int oldt=-1; for (i=0; i < ga->nargs; i++) { descargatom *a=ga->args+i; int t=a->type; if (a->t!=AAtype) die(err_desc,"unexpected atom in _type_preorder"); if (oldt>=0) typemax[t][oldt]=typemax[oldt][t]=t; oldt=t; } } for(i=0;is.n;i++) { ctxvar *v=fc->c+i; int val=v->initval; if (val!=-1) { int t=gentype(val); int vt=vartype(*v); if (v->flag&(1<gpname,funcmode(*gp),tree[seq].m); /*funcmode(*gp)|(tree[seq].m&((1<ret==-1) tree[n].t=Gvoid; else { int v=getvarerr(fc->ret); tree[n].t=vartype(ctxstack[v]); } tree[n].m=mode|(tree[seq].m&MODHERIT); } int gentype(int n) { int t,tx,ty; int mx,my; int x,y,c; gpfunc *gp; int nf; if (n<0) return Gnotype; x=tree[n].x; y=tree[n].y; if (tree[n].f=0)?tree[x].m:0; ty=gentype(y); my=(y>=0)?tree[y].m:0; } else { tx=-1; mx=-1; ty=-1; my=-1; } switch(tree[n].f) { case Fseq: if (x<0 || y<0) die(n,"internal error in gentype"); if (mx&(1<flag&(1<flag&(1<flag&(1<flag&(1<=0) tree[n].m=(1<%s" ,GPname(tx),GPname(y)); tree[n].m=tree[x].m&MODHERIT; break; case Findarg: case Frefarg: gentype(x); tree[n].t=tree[x].t; tree[n].m=tree[x].m; break; case Fentry: c=getvar(n); if (c>=0) { ctxvar *v=ctxstack+c; tree[n].t=vartype(*v); tree[n].m=(1<flag&(1<=0) { gp=lfunc+nf; if (functype(*gp)==Gnotype && gp->spec>0) /* is a special function ? */ tree[n].t=gentypefuncspec(n,gp); else if (gp->dsc && (t=gentypefuncdesc(n,gp))!=Gnotype) /* else has the function a description ?*/ tree[n].t=t; else /* else use the function a type */ { gentype(y); tree[n].t=functype(*gp); my=(y==-1)?0:tree[y].m; tree[n].m=(funcmode(*gp)&(~(1< 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart ( FILE *input_file ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); void yy_delete_buffer ( YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); void yypop_buffer_state ( void ); static void yyensure_buffer_stack ( void ); static void yy_load_buffer_state ( void ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); void yyfree ( void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state ( void ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); static int yy_get_next_buffer ( void ); static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 45 #define YY_END_OF_BUFFER 46 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[110] = { 0, 0, 0, 0, 0, 46, 44, 41, 35, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 2, 2, 44, 40, 44, 1, 44, 37, 44, 38, 43, 41, 36, 43, 43, 9, 43, 41, 19, 0, 7, 0, 32, 22, 0, 0, 28, 24, 26, 25, 27, 12, 11, 5, 0, 42, 29, 0, 0, 2, 0, 0, 0, 16, 17, 21, 18, 15, 0, 1, 39, 14, 30, 23, 0, 10, 0, 9, 9, 0, 13, 0, 5, 0, 0, 5, 6, 5, 0, 5, 4, 3, 34, 20, 33, 31, 9, 8, 0, 5, 0, 5, 0, 5, 0, 4, 0, 3, 0, 5, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 1, 8, 9, 1, 1, 10, 11, 12, 1, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 1, 1, 19, 20, 21, 22, 1, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 25, 1, 1, 26, 1, 27, 28, 27, 27, 29, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27, 32, 33, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[35] = { 0, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 5, 5, 5, 1, 1, 1, 1, 6, 5, 1, 7, 6, 6, 5, 6, 6, 1, 1, 1 } ; static const flex_int16_t yy_base[119] = { 0, 0, 0, 33, 57, 145, 299, 37, 299, 120, 32, 117, 127, 40, 109, 31, 49, 69, 34, 95, 18, 46, 108, 53, 121, 75, 299, 82, 299, 299, 48, 299, 73, 103, 0, 124, 87, 299, 78, 299, 107, 299, 299, 92, 83, 299, 299, 299, 299, 299, 299, 299, 152, 104, 299, 299, 114, 117, 0, 126, 85, 0, 77, 299, 72, 299, 68, 77, 67, 299, 48, 299, 299, 104, 299, 155, 0, 0, 0, 299, 144, 0, 161, 147, 167, 299, 0, 170, 176, 185, 59, 299, 299, 299, 299, 0, 0, 179, 187, 194, 202, 205, 209, 212, 220, 52, 43, 226, 229, 299, 247, 254, 259, 266, 273, 274, 280, 287, 292 } ; static const flex_int16_t yy_def[119] = { 0, 109, 1, 110, 110, 109, 109, 109, 109, 109, 111, 109, 109, 109, 109, 109, 109, 109, 109, 109, 19, 109, 109, 109, 112, 109, 109, 109, 109, 109, 109, 109, 109, 109, 113, 109, 109, 109, 111, 109, 111, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 114, 20, 109, 109, 115, 109, 109, 109, 109, 109, 112, 112, 109, 109, 109, 109, 109, 109, 109, 113, 116, 117, 109, 109, 52, 109, 109, 109, 109, 52, 109, 109, 109, 118, 109, 109, 109, 109, 116, 117, 109, 109, 109, 109, 109, 109, 109, 109, 118, 118, 109, 109, 0, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static const flex_int16_t yy_nxt[334] = { 0, 6, 7, 8, 7, 9, 10, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 21, 22, 23, 6, 24, 24, 25, 6, 24, 24, 24, 24, 24, 26, 27, 28, 30, 31, 30, 39, 36, 32, 36, 43, 46, 43, 54, 109, 105, 33, 109, 36, 47, 36, 44, 55, 34, 105, 40, 35, 30, 31, 30, 48, 105, 32, 62, 63, 37, 94, 49, 50, 67, 33, 65, 66, 73, 74, 73, 69, 34, 75, 67, 35, 51, 39, 52, 52, 52, 93, 36, 70, 36, 92, 53, 43, 71, 43, 91, 53, 56, 54, 89, 89, 40, 79, 44, 73, 74, 73, 57, 109, 58, 58, 58, 54, 72, 83, 83, 56, 59, 84, 84, 84, 60, 59, 67, 61, 69, 64, 45, 58, 58, 58, 86, 86, 86, 42, 41, 87, 87, 37, 53, 88, 88, 88, 109, 53, 109, 80, 54, 109, 77, 77, 77, 78, 77, 80, 73, 74, 73, 81, 81, 81, 84, 84, 84, 109, 109, 81, 81, 81, 99, 109, 97, 97, 109, 82, 98, 98, 98, 101, 82, 109, 100, 100, 100, 88, 88, 88, 103, 109, 107, 102, 102, 102, 98, 98, 98, 99, 109, 109, 104, 104, 108, 108, 108, 99, 109, 109, 101, 100, 100, 100, 101, 109, 109, 103, 109, 100, 100, 100, 102, 102, 102, 103, 102, 102, 102, 104, 104, 107, 109, 109, 107, 109, 109, 104, 104, 109, 109, 109, 109, 108, 108, 108, 108, 108, 108, 29, 29, 29, 29, 29, 29, 29, 38, 38, 38, 38, 38, 38, 38, 68, 109, 68, 68, 68, 76, 109, 76, 76, 76, 76, 76, 85, 85, 85, 109, 85, 90, 90, 95, 109, 95, 95, 95, 95, 95, 96, 109, 96, 96, 96, 96, 96, 106, 109, 106, 106, 5, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static const flex_int16_t yy_chk[334] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 10, 7, 3, 7, 13, 15, 13, 18, 20, 106, 3, 20, 30, 15, 30, 13, 18, 3, 105, 10, 3, 4, 4, 4, 16, 90, 4, 21, 21, 21, 70, 16, 16, 68, 4, 23, 23, 32, 32, 32, 25, 4, 32, 67, 4, 17, 38, 17, 17, 17, 66, 36, 25, 36, 64, 17, 43, 25, 43, 62, 17, 19, 25, 60, 60, 38, 44, 43, 73, 73, 73, 19, 40, 19, 19, 19, 33, 27, 53, 53, 56, 19, 53, 53, 53, 19, 19, 24, 19, 35, 22, 14, 56, 56, 56, 57, 57, 57, 12, 11, 59, 59, 9, 57, 59, 59, 59, 5, 57, 0, 80, 35, 0, 35, 35, 35, 35, 35, 52, 75, 75, 75, 80, 80, 80, 83, 83, 83, 0, 0, 52, 52, 52, 84, 0, 82, 82, 0, 52, 82, 82, 82, 88, 52, 0, 84, 84, 84, 87, 87, 87, 89, 0, 98, 88, 88, 88, 97, 97, 97, 99, 0, 0, 89, 89, 98, 98, 98, 100, 0, 0, 101, 99, 99, 99, 102, 0, 0, 103, 0, 100, 100, 100, 101, 101, 101, 104, 102, 102, 102, 103, 103, 107, 0, 0, 108, 0, 0, 104, 104, 0, 0, 0, 0, 107, 107, 107, 108, 108, 108, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 112, 0, 112, 112, 112, 113, 0, 113, 113, 113, 113, 113, 114, 114, 114, 0, 114, 115, 115, 116, 0, 116, 116, 116, 116, 116, 117, 0, 117, 117, 117, 117, 117, 118, 0, 118, 118, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "lang.l" #line 2 "lang.l" /* Copyright (C) 2000-2013 The PARI group. This file is part of the GP2C package. PARI/GP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY WHATSOEVER. Check the License for details. You should have received a copy of it, along with the package; see the file 'COPYING'. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "config.h" #include #include #include "header.h" #include "parse.h" #define MAX_INCLUDE_DEPTH 10 extern int yydebug; static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; static int depth = 0; static int linecount_stack[MAX_INCLUDE_DEPTH]; static int filecount_stack[MAX_INCLUDE_DEPTH]; static enum {Mread_lines,Min_braces} mode=Mread_lines; static int start=0; static int lastcom=-1; static void countline(char *text,int len) { int i; for (i=0; i #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( void ); int yyget_debug ( void ); void yyset_debug ( int debug_flag ); YY_EXTRA_TYPE yyget_extra ( void ); void yyset_extra ( YY_EXTRA_TYPE user_defined ); FILE *yyget_in ( void ); void yyset_in ( FILE * _in_str ); FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); int yyget_leng ( void ); char *yyget_text ( void ); int yyget_lineno ( void ); void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( void ); #else extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT static void yyunput ( int c, char *buf_ptr ); #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_load_buffer_state( ); } { #line 90 "lang.l" #line 92 "lang.l" if (!start) {start=1; BEGIN(toplevel);} #line 851 "lang.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 299 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 93 "lang.l" copyentry(yytext); return KENTRY; YY_BREAK case 2: YY_RULE_SETUP #line 94 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 3: YY_RULE_SETUP #line 95 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 4: YY_RULE_SETUP #line 96 "lang.l" copytoken(yytext); return KINTEGER; YY_BREAK case 5: YY_RULE_SETUP #line 97 "lang.l" copytoken(yytext); return KREAL; YY_BREAK case 6: /* rule 6 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ YY_LINENO_REWIND_TO(yy_cp - 1); (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 98 "lang.l" copytoken(yytext); return KREAL; YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 99 "lang.l" copystring(yytext,yyleng); return KSTRING; YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(toplevel): #line 101 "lang.l" { if ( --depth < 0 ) yyterminate(); else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer(include_stack[depth]); linecount = linecount_stack[depth]; filecount = filecount_stack[depth]; } } YY_BREAK case 8: YY_RULE_SETUP #line 113 "lang.l" { /*With credit to flex manpage*/ char *s=yytext+2; size_t ls; while(*s==' ' || *s=='\t') s++; if ( depth >= MAX_INCLUDE_DEPTH ) die(-1,"\\r includes nested too deeply" ); linecount_stack[depth] = linecount; filecount_stack[depth] = filecount; include_stack[depth++] = YY_CURRENT_BUFFER; ls = strlen(s); if (s[0]=='"' && s[ls-1]=='"') { s[ls-1]=0; s++; } yyin = fopen(s,"r"); if (!yyin) { char *t=(char*)malloc(strlen(s)+4); sprintf(t,"%s.gp",s); yyin = fopen(t,"r"); if (!yyin) die(-1,"cannot open file `%s'",s); s=t; } else s = strdup(s); linecount=1; filecount=newsrcfile(s); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); } YY_BREAK case 9: YY_RULE_SETUP #line 146 "lang.l" { fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } YY_BREAK case 10: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 151 "lang.l" { /*We cannot recognize # */ fprintf(stderr,"Warning:%s:%d: meta commands not implemented\n%s\n", srcfile[filecount],linecount,yytext); } YY_BREAK case 11: YY_RULE_SETUP #line 156 "lang.l" return KDOTDOT; YY_BREAK case 12: YY_RULE_SETUP #line 157 "lang.l" return KARROW; YY_BREAK case 13: YY_RULE_SETUP #line 158 "lang.l" return KPARROW; YY_BREAK case 14: YY_RULE_SETUP #line 159 "lang.l" return KDR; YY_BREAK case 15: YY_RULE_SETUP #line 160 "lang.l" return KSR; YY_BREAK case 16: YY_RULE_SETUP #line 161 "lang.l" return KSL; YY_BREAK case 17: YY_RULE_SETUP #line 162 "lang.l" return KLE; YY_BREAK case 18: YY_RULE_SETUP #line 163 "lang.l" return KGE; YY_BREAK case 19: YY_RULE_SETUP #line 164 "lang.l" return KNE; YY_BREAK case 20: YY_RULE_SETUP #line 165 "lang.l" return KID; YY_BREAK case 21: YY_RULE_SETUP #line 166 "lang.l" return KEQ; YY_BREAK case 22: YY_RULE_SETUP #line 167 "lang.l" return KAND; YY_BREAK case 23: YY_RULE_SETUP #line 168 "lang.l" return KOR; YY_BREAK case 24: YY_RULE_SETUP #line 170 "lang.l" return KPP; YY_BREAK case 25: YY_RULE_SETUP #line 171 "lang.l" return KSS; YY_BREAK case 26: YY_RULE_SETUP #line 172 "lang.l" return KPE; YY_BREAK case 27: YY_RULE_SETUP #line 173 "lang.l" return KSE; YY_BREAK case 28: YY_RULE_SETUP #line 174 "lang.l" return KME; YY_BREAK case 29: YY_RULE_SETUP #line 175 "lang.l" return KDE; YY_BREAK case 30: YY_RULE_SETUP #line 176 "lang.l" return KEUCE; YY_BREAK case 31: YY_RULE_SETUP #line 177 "lang.l" return KDRE; YY_BREAK case 32: YY_RULE_SETUP #line 178 "lang.l" return KMODE; YY_BREAK case 33: YY_RULE_SETUP #line 179 "lang.l" return KSRE; YY_BREAK case 34: YY_RULE_SETUP #line 180 "lang.l" return KSLE; YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP #line 182 "lang.l" {linecount++;if (mode==Mread_lines) {BEGIN(toplevel);return '\n';}} YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP #line 183 "lang.l" {linecount++;return '\n';} YY_BREAK case 37: YY_RULE_SETUP #line 184 "lang.l" {mode=Min_braces;BEGIN(INITIAL);} YY_BREAK case 38: YY_RULE_SETUP #line 185 "lang.l" {mode=Mread_lines;BEGIN(toplevel);} YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP #line 187 "lang.l" {linecount++;} YY_BREAK case 40: YY_RULE_SETUP #line 189 "lang.l" { for( ; ; ) { int c, nc, star=0; for( ; ; ) { c = input(); if ( c == EOF || c == 0 ) return c; if ( c == '\n' ) linecount++; else if ( c!=' ' && c!='\t' && c!='\r') break; } /*Since only one char of look-ahead is available, we have to handle the / or \ by ourself. Fortunately: after =/, only * is valid, after =\, only \ and \\n are valid. Thus we handle them and reject the rest. */ if (c!='/' && c!='\\') { unput(c); return '='; } nc=input(); if (c=='\\' && nc=='\n') { linecount++; continue; } if ((c=='/' && nc!='*') || (c=='\\' && nc!='\\')) { fprintf(stderr,"%s:%d: parse error after =%c%c\n" ,srcfile[filecount],linecount,(char)c,(char)nc); fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (c=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) die(-1,"Unfinished comment"); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; } } } } YY_BREAK case 41: YY_RULE_SETUP #line 262 "lang.l" YY_BREAK case 42: YY_RULE_SETUP #line 263 "lang.l" { int star=0; int n; int nl=0; int lc=linecount; if (lastcom==-1) lastcom=newcomment(); n=lastcom; pushcomment(n,'/'); pushcomment(n,'*'); if (yytext[0]=='/') { for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); pushcomment(n,c); if ( c == '/' && star) break; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) linecount++; } } else { nl=1; for ( ; ; ) { int c = input(); if ( c == EOF || c == 0) die(-1,"Unfinished comment"); if ( c == '/' && star) c='\\'; if ( c == '*' ) star=1; else star=0; if ( c == '\n' ) { linecount++; break; } if ( c == '\r' ) continue; pushcomment(n,c); } pushcomment(n,' '); pushcomment(n,'*'); pushcomment(n,'/'); pushcomment(n,'\n'); } /*We hack: we put white spaces after comments in the comments This makes output looking better in most cases. Sadly we can't add white spaces that are before comments. */ for( ; ; ) { int c = input(); if ( c == EOF || c == 0 ) return '\n'; if ( c == '\n' ) { linecount++; pushcomment(n,c); nl=1; } else if ( c == ' ' || c == '\t') { if (nl==0) pushcomment(n,c); /*We only add spaces on the same line*/ } else if ( c != '\r' ) { unput(c); break; } } if (lcyy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 110 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 109); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT static void yyunput (int c, char * yy_bp ) { char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_init_buffer( YY_CURRENT_BUFFER, input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf ); yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 347 "lang.l" gp2c-0.0.14/src/gp2c.c0000644000175000017500000002753214676602022011154 00000000000000/* Copyright (C) 2000-2024 The PARI group. This file is part of the GP2C package. GP2C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #define TYPE #include "config.h" #include #include #include #include #include #define GP2C_DECL #include "header.h" extern int yydebug; extern FILE *yyin; static int optgen=0,opttree=0,opttype=0,optinfo=0; void dump(FILE *fout) { int i,j; for(i=0;iuser->bl; fprintf(fout,"Function:\n %s(",gp->proto.cname); for(j=0;js.n;j++) { if (fc->c[j].flag&(1<c[j])),varstr(fc->c[j])); } fprintf(fout,")\n"); if (strcmp(gp->gpname,gp->proto.cname)) fprintf(fout,"GP name: %s\n",gp->gpname); fprintf(fout,"code: %s\n",gp->proto.code); fprintf(fout,"return type: %s\n",GPname(functype(*gp))); fprintf(fout,"mode=%d \t spec=%d\n",funcmode(*gp),gp->spec); for( ;js.n;j++) { ctxvar *c=fc->c+j; if (!((c->flag&(1<flag&(1<val==-1))) fprintf(fout,"%s %s\n",GPname(vartype(*c)),varstr(*c)); } fprintf(fout,"\n"); } } void init_compiler(void) { int n; stack_init(&s_srcfile,sizeof(*srcfile),(void **)&srcfile); stack_init(&s_node,sizeof(*tree),(void **)&tree); stack_init(&s_value,sizeof(*value),(void **)&value); stack_init(&s_func,sizeof(*lfunc),(void **)&lfunc); stack_init(&s_ctx,sizeof(*ctxstack),(void **)&ctxstack); stack_init(&s_aff,sizeof(*affstack),(void **)&affstack); stack_init(&s_bloc,sizeof(*block),(void **)&block); stack_init(&s_comment,sizeof(*com),(void **)&com); stack_init(&s_errors,sizeof(*errors),(void **)&errors); stack_init(&s_Ctype,sizeof(*Ctype),(void **)&Ctype); stack_init(&s_GPtype,sizeof(*GPtype),(void **)&GPtype); stack_init(&s_Mmode,sizeof(*Mmode),(void **)&Mmode); stack_init(&s_label,sizeof(*label),(void **)&label); /*Node 0 should be a (Gvoid)Fnoarg*/ n=newnode(Fnoarg,-1,-1); tree[n].t=Gvoid; /*Node 1 should be a (Gnotype)Fnoarg*/ n=newnode(Fnoarg,-1,-1); tree[n].t=Gnotype; /*Node 2 should be a Fnorange*/ n=newnode(Fnorange,-1,-1); tree[n].t=Gsmall; } void init_stdfunc(void) { FC_badtype=findfuncdesc("_badtype"); FC_formatcode=findfuncdesc("_formatcode"); FC_tovec=findfuncdesc("_tovec"); FC_tovecprec=findfuncdescopt("_tovecprec"); FC_cast=findfuncdesc("_cast"); FC_proto_ret=findfuncdesc("_proto_ret"); FC_proto_code=findfuncdesc("_proto_code"); FC_decl_base=findfuncdesc("_decl_base"); FC_decl_ext=findfuncdesc("_decl_ext"); FC_default_check=findfuncdesc("_default_check"); FC_default_marker=findfuncdesc("_default_marker"); FC_gerepileupto=findfuncdesc("_gerepileupto"); FC_const_smallreal=findfuncdesc("_const_smallreal"); FC_const_expr=findfuncdesc("_const_expr"); FC_copy=findfuncdesc("copy"); FC_avma=findfuncdesc("_avma"); Gpari_sp=findfunctype("_avma"); FC_low_stack_lim=findfuncdesc("_low_stack_lim"); FC_gc_needed=findfuncdescopt("_gc_needed"); FC_gerepileall=findfuncdesc("_gerepileall"); FC_forprime_init=findfuncdescopt("_forprime_init"); if (FC_forprime_init>=0) Gforprime=strtotype("forprime"); else { Gforprime=findfunctype("_diffptr"); FC_forprime_next=findfuncdesc("_forprime_next"); } Gerror=findfunctypeopt("_iferr_error"); FC_matrixrow=findfuncdescopt("_[_,]"); FC_const_real=findfuncdescopt("_const_real"); FC_call=findfuncdescopt("_(_)"); FC_strtoclosure=findfuncdescopt("_strtoclosure"); FC_proto_max_args=findfuncdescopt("_proto_max_args"); max_args = FC_proto_max_args<0 ? 8 : lfunc[FC_proto_max_args].dsc->a[0].args[0].misc; if (safecoeff && findfuncdescopt("_safecoeff")<0) { warning(-1,"gp2c option -C not supported by this PARI version"); safecoeff=0; } FC_norange=findfuncdescopt("_norange"); FC_derivn=findfuncdescopt("_'_"); FC_translength=findfuncdescopt("#_~"); } void init_typedef(void) { gpdesc *def=lfunc[findfuncdesc("_typedef")].dsc; int r; ctype=(int*)calloc(s_GPtype.n,sizeof(*ctype)); for (r=0; rnb; r++) { gpdescarg *rule=def->a+r; int t=rule->args[0].type; ctype[t]=strtoctype(rule->cname); } Vgen=strtoctype("GEN"); } void compile(FILE *fin, FILE *fout, const char *nom) { const char *descfile; char *tmplib; const char *lib; int startnode; int status; int i; linecount = 1; filecount = 0; nameparse = nom; init_compiler(); filecount = newsrcfile(strdup(nom)); lib = genoutfile(); tmplib=(char*)calloc(strlen(lib)+6,sizeof(*lib)); sprintf(tmplib,"%s%s.so",lib[0]=='/'?"":"./",lib); free((void*)lib); namelib=tmplib; yyin=fin; currfunc=-1; initoperators(); if (!(descfile=getenv("GP2C_FUNC_DSC"))) descfile=FUNCDSC_PATH; for(i=0;GPneeded[i];i++) newtype(GPneeded[i]); for(i=0; Mneeded[i];i++) newmode( Mneeded[i]); initdesc(descfile); inittype(); patchfunclist(); if(opttype) {outputtype(fout);exit(0);} init_stdfunc(); init_typedef(); startnode=s_node.n-1; status=yyparse(); for(i=0;ifileno],s->lineno,s->txt); } if(status) { fprintf(stderr,"Errors found: aborting...\n"); exit(1); } if (s_errors.n) { fprintf(stderr,"%d error%s found: aborting...\n",s_errors.n,s_errors.n==1?"":"s"); exit(1); } if (startnode==s_node.n-1) startnode=GNIL; else startnode=s_node.n-1; if (optgen) { printnode(fout,startnode); printf("\n"); return; } if (yydebug) fprintf(stderr,"End of parsing\n"); startnode=addseqleft(newnode(Ffunction,newentry("_initfunc"),-1),startnode); gentoplevel(startnode); startnode=addinitfunc(startnode); if (debug>1) printnode(stderr,startnode); gentopfunc(startnode,-1,-1,-1); if (debug) { fprintf(stderr,"\n--------------END TOPFUNC------------\n"); printnode(stderr,startnode); } genblock(startnode,-1); if (opttree==1) { maketree(stderr,startnode); fprintf(stderr,";\n"); } if (debug) printnode(stderr,startnode); lastpass=0; gentype(startnode); do_warning=0; while (lastpass) { lastpass=0; gentype(startnode); } do_warning=1; if (debug>=2) { fprintf(stderr,"\n--------------END GENTYPE------------\n"); printnode(stderr,startnode); } gendeblock(startnode,-1,0,NULL,NULL); moveblock(startnode,-1,0,NULL,NULL); if (debug) { fprintf(stderr,"\n--------------END MOVEBLOCK------------\n"); printnode(stderr,startnode); } do { lastpass=0; varlist(startnode); } while(lastpass); if (!optcleanvar) cleanvar(startnode); pilelist(startnode); if (autogc) pileclean(startnode); if (optinfo) dump(stderr); if (!optcleanvar) cleanvar(startnode); cleancode(startnode,-1,left); if (tree[startnode].f==Fseq && tree[startnode].y==GNIL) startnode=tree[startnode].x; switch(opttree) { case 1: maketree(stderr,startnode); break; case 2: maketreeGRL(stderr,startnode); break; } if (debug) { fprintf(stderr,"\n--------------END CLEANCODE------------\n"); printnode(stderr,startnode); } indent=0; genheader(fout); gencode(fout,startnode); } void version(void) { printf("GP to C compiler version %s \n targeted at PARI/GP %s\n",VERSION,PARI_VERSION); printf("Copyright 2000-2024 The PARI Group\n"); printf("GP2C is free software, covered by the GNU General Public License, and \n\ you are welcome to change it and/or distribute copies of it under \n\ certain conditions. There is absolutely no warranty for GP2C.\n"); } void usage(FILE *fout, char *s) { fprintf(fout,"%s [-ghfltvydSWTGV] [-o ] [-i N] [-p ] [file.gp] \n\ GP to C translator. \n\ \n\ user option: \n\ -o : Place output in file . \n\ -g : Generate automatic garbage collection code. \n\ -iN: Set indentation level to N spaces (default 2). \n\ -W : Output warning about types and global variables usage. \n\ -C : Generate range checking code. \n\ -L : Generate #line directive for better C compiler messages. \n\ -p : Prefix user-defined symbol by to avoid conflict. \n\ -s : Add suffix to GP install names of functions. \n\ -S : Assume strict declarations for functions. \n\ query options: \n\ -h : This help. \n\ -f : Dump information about functions to stderr. \n\ -l : Output the list of functions known to the compiler. \n\ -t : Output the table of types known to the compiler. \n\ -v : Output version information and exit. \n\ debugging options: \n\ -d : Increase debugging level. \n\ -y : Switch parser to debug mode. \n\ -T : Output syntactic tree in treetool format. \n\ -TT: Output syntactic tree in VCG/GRL format. \n\ -G : Generate GP code in place of C code. Don't smile. \n\ -V : Do not clean up variables. \n\ \n\ file.gp: file to be processed, default to stdin. \n\ The generated C code is output to stdout unless the -o option is used \n\ \n\ See the script gp2c-run for an automated compilation process. \n\ ",s); } int main(int argc, char **argv) { int c; FILE *fin=stdin; FILE *fout=stdout; const char *infile = "stdin"; autogc = 0; safecoeff = 0; optprefix = NULL; optsuffix = NULL; outfile = NULL; optcleanvar = 0; opthashline = 0; optstrict = 0; indent = 0; indentlevel = 2; warn = 0; do_warning = 1; preclevel = 0; while((c=getopt(argc,argv,"gi:hflo:p:s:StvydCGLTVW"))!=-1) { switch(c) { case 'g': autogc=1-autogc; break; case 'i': indentlevel=atoi(optarg); break; case 'h': usage(stdout,argv[0]); exit(0); break; case 'f': optinfo=1-optinfo; break; case 'l': { const char *descfile; init_compiler(); if (!(descfile=getenv("GP2C_FUNC_DSC"))) descfile=FUNCDSC_PATH; initdesc(descfile); patchfunclist(); printlistfunc(fout); exit(0); } case 'o': outfile=strdup(optarg); break; case 'p': optprefix=strdup(optarg); break; case 's': optsuffix=strdup(optarg); break; case 'S': optstrict=1-optstrict; break; case 't': opttype=1-opttype; break; case 'v': version(); exit(0); case 'd': debug++; debug_stack=debug>1; break; case 'y': yydebug++; break; case 'T': opttree++; break; case 'G': optgen=1-optgen; break; case 'L': opthashline=1-opthashline; break; case 'V': optcleanvar=1-optcleanvar; break; case 'C': safecoeff=1-safecoeff; break; case 'W': warn=1-warn; break; case '?': usage(stderr,argv[0]); exit(1); break; } } if (argc-optind>1) { usage(stderr,argv[0]); exit(1); } if (argc!=optind) { infile = argv[optind]; if ((fin=fopen(infile,"r"))==NULL) { perror(argv[0]); exit(errno); } } if (outfile && ((fout=fopen(outfile,"w"))==NULL)) { perror(argv[0]); exit(errno); } compile(fin,fout,infile); if (fin!=stdin) fclose(fin); if (fout!=stdout) fclose(fout); return 0; } gp2c-0.0.14/src/Makefile.am0000644000175000017500000000067014204164223012174 00000000000000bin_PROGRAMS = gp2c AM_CFLAGS=-DFUNCDSC_PATH=\"@datadir@/@PACKAGE@/func.dsc\" BUILT_SOURCES = parse.h gp2c_SOURCES = gp2c.c context.c funcdesc.c funcspec.c genblock.c gencast.c gencode.c genfunc.c gentype.c gerepile.c header.h lang.l moveblock.c node.c optable.h parse.y patchfunc.h printnode.c toplevel.c topfunc.c type.h util.c varlist.c stack.h stack.c AM_YFLAGS = -d -Wno-yacc am__skipyacc= am__skiplex= ctags: ctags $(gp2c_SOURCES) gp2c-0.0.14/test/0000755000175000017500000000000014700755151010414 500000000000000gp2c-0.0.14/test/Makefile.in0000644000175000017500000002711014676603632012412 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/test/gp/0000755000175000017500000000000013653241534011023 500000000000000gp2c-0.0.14/test/gp/gerepile.gp0000644000175000017500000000125013653241534013065 00000000000000f1()=local(x,y);x=vector(3);y=x;x[1]=1;x+y f2()=local(x,y);x=vector(3);y=x;y[1]=1;x+y g1()=local(x,y);y=x=vector(3);x[1]=1;x+y g2()=local(x,y);y=x=vector(3);y[1]=1;x+y h1()=local(x,y);x=vector(3);y=x;x[1]++;x+y h2()=local(x,y);x=vector(3);y=x;y[1]++;x+y k1()=local(x,y);x=vector(3);y=x;x[1]+=1;x+y k2()=local(x,y);x=vector(3);y=x;y[1]+=1;x+y l1()=local(x,y);x=vector(3);y=x;issquare(1,&x[1]);x+y l2()=local(x,y);x=vector(3);y=x;issquare(1,&y[1]);x+y m1()=local(x,y,z);x=[3];y=x;z=[y];z m2()=local(x,y,z);x=[3];z=[y=x];z a1(x)=x a2(x)=local(y);y=x;y n1()=a1([1,2]) n2()=a2([1,2]) o1(x:str)=[x] k(x:vecsmall)= { my(w:vecsmall=x); for(i:small=1,#w\2,w[i]++); [w,x]; } gp2c-0.0.14/test/gp/dot.gp0000644000175000017500000000032213614057635012062 00000000000000x.eee=[x] dot()= {[ ., .e3, .e-3, .3, .3e3, .3e-3, 2., 2.e3, 2.e-3, 2.3, 2.3e3, 2.3e-3, (.).eee, .e3.eee, .e-3.eee, .3.eee, .3e3.eee, .3e-3.eee, (2.).eee, 2.e3.eee, 2.e-3.eee, 1.3.eee, 1.3e3.eee, 1.3e-3.eee ]} gp2c-0.0.14/test/gp/multiassign.gp0000644000175000017500000000067713623476440013647 00000000000000f(v,c=0)=local(a,b=[1]);[a,b[c+1]]=v;a+b[1] g(v)= { my(a,[b,c]=v,d=v,e=3); [a,b,c,d,e] } h1(v:vecsmall)= { my([a,b]=v); [b,a] } h2(v:vecsmall)= { my(a,b); [a,b]=v; [b,a] } k(n)= { my(a,b,c); a = b = c = vector(n); for(i=1,n, [a[i],b[i],c[i]] = [2*i,3*i,5*i]); [a,b,c] } global(W,X); l1(a)= { [X, W] = if (a,[2,3],[3,4]); [W, X] } l2(a)= { [X, W] = if (a,[2,3],[3,4]); } m1(V)=[X,,,W]=V;[X,W] m2(V)=my([,a,,b]=V);[a,b] gp2c-0.0.14/test/gp/cleanvar.gp0000644000175000017500000000012113162716330013054 00000000000000f(m)= { while(0, vector(h1)); if(m>0, for(j=1,m, if(j==1, print(j)))); } gp2c-0.0.14/test/gp/matrix.gp0000644000175000017500000000055012141547407012576 00000000000000vandermonde(V:vec)= { local(n:lg); n=length(V); matrix(n,n,i,j,V[i]^(j-1)) } swaprow(M:vec)= { local(n:lg); n=length(M); concat(vector(n,j,Mat(M[,if(j%2,min(j+1,n),j-1)]))); } testswap()= { print(swaprow([1,2,3;4,5,6;7,8,9])); print(swaprow([1,2;3,4;5,6;7,8])); } sideef()= { [1+print(1),2+print(2),3+print(3); 4+print(4),5+print(5),6+print(6)] } gp2c-0.0.14/test/gp/member.gp0000644000175000017500000000003213162716330012531 00000000000000polmod(a)= [a.pol, a.mod] gp2c-0.0.14/test/gp/forstep.gp0000644000175000017500000000054013623476440012757 00000000000000f(x)= { forstep(y=7,x,[2,4,6,6,6,6,6,2,4,6,6], print (y)); print("end"); forstep(y=7,-34,-2,print(y)); print("end"); forstep(y=7,34,2,print(y)); print("end"); } g(x)= { forstep(y=1,10*x,x,print(y)); print("end"); } h()=forstep(x=0,Pi,Pi/12,print(round(24*sin(x)))) k(v:vec,l)=forstep(x=0,l,v:vec,print(x)) l()=forstep(x=0,1,1/12,print(x^2)) gp2c-0.0.14/test/gp/break.gp0000644000175000017500000000120513646611246012360 00000000000000f(x)= { for(i=1,x, for(j=1,x, if(i^2+j^2==x, print(i," ",j); break(2)))); } Miller_Rabin(n:int,p:small=20)= { local(s:small,t:int,at); if (n<=2, return(n==2)); s=valuation(n-1,2); t=(n-1)\2^s; for (i=1, p, at=Mod(random(n-2)+1,n)^t; if (at==1 || at==-1, next); for (k:small=1,s-1,at=at^2;if(at==-1,next(2))); return(0)); 1 } Pzaks(N)= { my(k:small=0,m,t:small,v:vecsmall); v=vectorsmall(N,i,i); for(n=1,N!-1, m=n; for(j=2,m+1, if(m%j,k=j;break(1),m/=j)); for(q=1,k\2, t=v[k-q+1]; v[k-q+1]=v[q]; v[q]=t ); print(v) ); } gp2c-0.0.14/test/gp/forvec.gp0000644000175000017500000000063512141547407012562 00000000000000g(n,f)= { forvec(v=vector(n,i,[1,2]), s=sum(i:small=1,#v,v[i]);print1(s," "),f); print } h(n,f)= { forvec(v=vector(n,i,[2*i-1,2*i]), s=sum(i:small=1,#v,v[i]);print1(s," "),f); print } FV(R)= { local(b=vector(5,i,[0,R]),N); forvec(a=b, N+=prod(n=1,100, sum(m=0,4,a[m+1]*n^m))); N } fv(N)= { local(a); forvec(b=vector(2,k,[1,5]), if((2^b[1])*(3^b[2])==N, a=b)); print(a); a; } gp2c-0.0.14/test/gp/args.gp0000644000175000017500000000070713614057635012237 00000000000000f(a)=vecsort(subst(nfgaloisconj(x^4+1,,a),x,100)) g(a=[5,4,1,3,2],b=[[5,4,3,2,1]])= { print(vecsort(a)); print(vecsort(b,[2,3])); print(vecsort(a,,4)); print(vecsort(b,[2,3],4)); } h(x=0,y=0,z=0)=4*x+2*y+z testh()= { print(h()); print(h(1)); print(h(1,)); print(h(1,,)); print(h(,1)); print(h(,1,)); print(h(,,1)); print(h(1,1)); print(h(1,1,)); print(h(1,,1)); print(h(,1,1)); print(h(1,1,1)); } s(x)=[Str(x,,),Str(x,,x)] gp2c-0.0.14/test/gp/while.gp0000644000175000017500000000062313623476440012407 00000000000000f(a)= { local(x,y=1); x=[1,[1,1],[1,a]]; while(x[if(a,3,2)]!=[1,y],y++;print(y)); print("end"); } g(a)= { local(x,y=1); x=[1,[1,1],[1,a]]; until(x[if(a,3,2)]!=[1,y],y++;print(y)); print("end"); } h(a)= { local(j=1); while(sum(i=1,#a,a[i]),a[j]--;j=j%#a+1);a } k(a)= { local(j=1); until(sum(i=1,#a,a[i])==0,a[j]--;j=j%#a+1);a } l(a)=my(n=0);while(a[n++],);n m(a)=my(n=0);until(a[n++],);n gp2c-0.0.14/test/gp/upto.gp0000644000175000017500000000023213162716330012253 00000000000000h()= { local(M); M = vector(10); for (k = 1, 10, M[k]=k!); print(M); } p() = { local(ti=3,i2=1+I); print([Str(ti,"->"i2)]); return(i2); } gp2c-0.0.14/test/gp/moveblock.gp0000644000175000017500000000036612141547407013260 00000000000000f(V:vec)=for(i=1,length(V),print(V[i])) g(x)=for(i=1,x,print(print(i))) k(x)=a=factor(x);[-a[if(x%2,2,1),]] l(a)=if(a==[1,2,3],print(4),print(5)); m(x)=a=factor(x);print(a[1,]) n(x)=sum(i=1,x,sin(print(i)));print("end"); o(x)=if(x[1],x[2],x[3]) gp2c-0.0.14/test/gp/affect.gp0000644000175000017500000000121013614057635012521 00000000000000f(x)= { local(v,i=0,j:small=0); v=vector(x); m=matpascal(x); while(i0,x,y) th()=local(V=vector(5,i,i));vector(5,i,h(V[i],i-1)) ml(x)=local(a=x^2+1,b=a^2+1,c=b^2+1);c^2+1 col(x,a,v)=x[,if(a<=0,print("a is too small");return,a)]=v;x lin(x,a,v)=x[if(a<=0,error("a is too small"),a),]=v;x tr(v)=truncate(Pi,&v[1]);v H1(n)=GA[n]=1 H2()=truncate(Pi,&GB[1]) H3(n)=GC[n]+=1 global(seed:small=0); gp2crand31()=seed=bitand(1000276549*seed:int+12347,(1<<31)-1); gp2crand(N)=local(p);while(p0,b=[1,2],b=[3,4]); a+=b; ); a } j(x)=vector(2,i,if(i==1,12)) gp2c-0.0.14/test/gp/read.gp0000644000175000017500000000105513630265556012214 00000000000000\raffect addhelp(randprime,"randprime(N): generate a random prime number < 2^N") powmod(a,b,c)=lift(Mod(a,c)^b) buildkey(N)= { local(A,P,x); A=gp2crand(2^N); P=randprime(N+1); x=gp2crand(P); Ax=powmod(A,x,P); [[Ax,A,P],[x,P]] } addhelp(buildkey,"buildkey(N): compute a random El Gamal key of N bits"); crypt(data,key)= { local(y,Ax=key[1],A=key[2],P=key[3]); y=gp2crand(P); Ay=powmod(A,y,P); Axy=powmod(Ax,y,P); [data*Axy%P,Ay] } decrypt(data,key)= { local(Axy,Ay=data[2],x=key[1],P=key[2]); Axy=powmod(Ay,-x,P); data[1]*Axy%P } gp2c-0.0.14/test/gp/print.gp0000644000175000017500000000010212636613342012420 00000000000000f(x)= { print1(x); print(x); } g(x)=write("gp2c_test","x=",x) gp2c-0.0.14/test/gp/forprime.gp0000644000175000017500000000054113623476440013121 00000000000000f(n)=local(s);forprime(p=2,n,if(p%4==1,s++,s--);if(s==0,return(p))) fs(n)=local(s);forprime(p:small=2,n,if(p%4==1,s++,s--);if(s==0,return(p))) mf(n)= { my(s1=1,s2=1); forprime(p:small=2,n,s1*=(1/(1-p^-2))); forprime(p:small=2,n,s2*=(1/(1+p^-2))); [s1,s2] } check(a,b)=my(s);forprime(p=1,a,forprime(q=1,b,s+=p*q));s g(u)=forprime(p=a,u,print(p)) gp2c-0.0.14/test/gp/vector.gp0000644000175000017500000000065112141547407012576 00000000000000dacmul(V)=/*Divide-and-conquer multiplication*/ { local(l:small); while(length(V)>1, l=length(V); print1(l," "); V=vector((l+1)\2,i, if(2*i<=l, V[2*i]*V[2*i-1], V[2*i-1]))); print(); V[1] } f(a:small)=\\Multiply some cyclotomic polynomials { local(p:small=100,V); V=vector(a,i,p=nextprime(p+1):small;polcyclo(p)); dacmul(V); }/*parse some matrices*/ g()=print([1,2]*[1,2,3;4,5,6]*[1,2,3]~,[],[;],[]~) gp2c-0.0.14/test/gp/multiif.gp0000644000175000017500000000071013614057635012746 00000000000000f(x)= { if(x==1,print([1])); if(x==1,print([1]) ,print("default")); if(x==1,print([1]) ,x==2,print([2])); if(x==1,print([1]) ,x==2,print([2]) ,print("default")); if(x==1,print([1]) ,x==2,print([2]) ,x==3,print([3])); if(x==1,print([1]) ,x==2,print([2]) ,x==3,print([3]) ,print("default")); } g(x)= { if(x==[1,2],print(0), x==[2,3],print(1), x==[3,4],print(2), print("default")); } gp2c-0.0.14/test/gp/cast.gp0000644000175000017500000000026013623476440012226 00000000000000f(x:int)=local(y:var='y);[Str(1),Str(42),Str(4+I),Str(print(4)),Str(x),Str([y^3+y+45]),Str("a"),Str(7978886869909)] g(r:real,g:gen)=r+=g;round(r) h(v:vec)=v[1]:vecsmall[2]=7;v gp2c-0.0.14/test/gp/foreach.gp0000644000175000017500000000005013623476440012700 00000000000000t(V)=foreach(V,p,print1(" ",p));print() gp2c-0.0.14/test/gp/initfunc.gp0000644000175000017500000000111013623476440013106 00000000000000global(y:var='y,n:small=0,m:small,k=2,L:vec,T2) T=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]) T2=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]) L=[]~; mybfffo(x:small)= { local(sc:small=28); if (x > 65535, sc -= 16; x >>= 16); if (x > 255, sc -= 8; x >>= 8); if (x > 15, sc -= 4; x >>= 4); sc + T[x]; } count()=n++;y+1;m=mybfffo(n) aff()=print(n," ",m); M=[1,2;3,4] print(x^4+k); pow_M(k)=M^k global(x1:int,x2:int); global(y1,y2):int; global(z1,z2); f1(x)=my(z=x^2+1);if(z==1,x1=x,x2=x);z f2(x)=my(z=x^2+1);if(z==1,y1=x,y2=x);z f3(x)=my(z=x^2+1);if(z==1,z1=x,z2=x);z global(t1);t1=0 gp2c-0.0.14/test/gp/install.gp0000644000175000017500000000075213614057635012751 00000000000000install("gpow","GGp"); install("gp2c_gp2crand","G","gp2crand","./affect.gp.so"); install("gp2c_randprime","G","randprime","./affect.gp.so"); powmod(a,b,c)=lift(gpow(Mod(a,c),b)) buildkey(N)= { local(p,q,e,phi); p=randprime(N); q=randprime(N); phi=(p-1)*(q-1); until(gcd(e,phi)==1,e=gp2crand(p*q)); [[e,p*q],[powmod(e,-1,phi),p*q]] } crypt(data,publickey)= { powmod(data,publickey[1],publickey[2]) } decrypt(data,privatekey)= { powmod(data,privatekey[1],privatekey[2]) } gp2c-0.0.14/test/gp/sumprod.gp0000644000175000017500000000024112141547407012760 00000000000000f(x)=sum(i=1,x,if(2*i<=x,2*i,i)) g(x)=prod(i=1,x,if(i^2<=x,i^2,i)) h(x)=round(10^20*prodeuler(p=3,x,if(p%4==1,1+p^-2,1-p^-2))) k(x)=sumdiv(x,i,if(2*i<=x,2*i,i)) gp2c-0.0.14/test/gp/return.gp0000644000175000017500000000075713623476440012626 00000000000000f(x)=local(z);z=x;return(z) g(x:bool)=!x h(v:vec)=if(type(v)=="t_MAT",return(v[1,1]),return(v[1])) kk(p)= { for(i=1,p-1,if(kronecker(i,p)<0,return([i,i^2%p]))); error("not found"); } k(n)=vector(n,i,kk(prime(i+1))) t1(x) = if (1, return([0])) t2(x) = if (1, return(List([0]))) t3(x) = if (x, return([0])) t4(x) = if (x, return([0]),return([1])) global(BAD):int; init(n)=BAD=n; cl()=print(BAD);return(BAD) run(i)=my(z=i+cl());return(z); foo()=for(i=1,3,vector(100,i,213213);print(run(i))); gp2c-0.0.14/test/res/0000755000175000017500000000000013646611246011211 500000000000000gp2c-0.0.14/test/res/cleanvar.res0000644000175000017500000000000213162716330013420 000000000000001 gp2c-0.0.14/test/res/install.res0000644000175000017500000000023512141547407013306 0000000000000062156359365916137150765161741278104262 2169540938509044941783277184121659944916164088084619610420367315011133797315 4 62156359365916137150765161741278104262 gp2c-0.0.14/test/res/moveblock.res0000644000175000017500000000006411751724575013632 000000000000003 1 4 1 5 1 0 2 0 [[-2, -2]] 4 5 [2, 2] 2 1 2 3 end gp2c-0.0.14/test/res/member.res0000644000175000017500000000002313162716330013077 00000000000000[x^2 + 1, x^3 - 2] gp2c-0.0.14/test/res/matrix.res0000644000175000017500000000016012141547407013141 00000000000000[2, 1, 3; 5, 4, 6; 8, 7, 9] [2, 1; 4, 3; 6, 5; 8, 7] [1 1 1] [2 1 4] [3 1 9] 1 2 3 4 5 6 [1 2 3] [4 5 6] gp2c-0.0.14/test/res/gerepile.res0000644000175000017500000000027013653241726013437 00000000000000[1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [1, 0, 0] [[3]] [[3]] [1, 2] [1, 2] ["gp2c"] [Vecsmall([2, 3, 3, 4]), Vecsmall([1, 2, 3, 4])] gp2c-0.0.14/test/res/dot.res0000644000175000017500000000150512141547407012427 00000000000000[0.E-38, 0.E3, 0.E-3, 0.30000000000000000000000000000000000000, 300.00000000 000000000000000000000000000, 0.00030000000000000000000000000000000000000, 2. 0000000000000000000000000000000000000, 2000.00000000000000000000000000000000 00, 0.0020000000000000000000000000000000000000, 2.30000000000000000000000000 00000000000, 2300.0000000000000000000000000000000000, 0.00230000000000000000 00000000000000000000, [0.E-38], [0.E3], [0.E-3], [0.300000000000000000000000 00000000000000], [300.00000000000000000000000000000000000], [0.0003000000000 0000000000000000000000000000], [2.0000000000000000000000000000000000000], [2 000.0000000000000000000000000000000000], [0.00200000000000000000000000000000 00000000], [1.3000000000000000000000000000000000000], [1300.0000000000000000 000000000000000000], [0.0013000000000000000000000000000000000000]] gp2c-0.0.14/test/res/initfunc.res0000644000175000017500000000117113623476440013463 00000000000000x^4 + 2 [7, 10; 15, 22] [32, 31, 30, 30, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25] [32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2] 1 32 2 31 3 30 4 30 5 29 x^4 + 2 1 x^4 + 2 2 x^4 + 2 1 x^4 + 2 2 x^4 + 2 1 x^4 + 2 2 gp2c-0.0.14/test/res/if.res0000644000175000017500000000017013162716330012231 000000000000001 5 [0, 2] end 1 5 [0, 1] end 3 5 [2, 0] end 0 2 5 [1, 0] end 0 2 4 [0, 1] end g g 2 2 h 3 3 h [100000, 200000] [12, 0] gp2c-0.0.14/test/res/cast.res0000644000175000017500000000013713623476440012577 000000000000004 ["1", "42", "4 + I", "0", "45", "[y^3 + y + 45]", "a", "7978886869909"] 3 [Vecsmall([0, 7])] gp2c-0.0.14/test/res/forstep.res0000644000175000017500000000104313623476440013324 000000000000007 9 13 19 25 31 37 43 45 49 55 61 63 67 73 79 85 91 97 99 end 7 5 3 1 -1 -3 -5 -7 -9 -11 -13 -15 -17 -19 -21 -23 -25 -27 -29 -31 -33 end 7 9 11 13 15 17 19 21 23 25 27 29 31 33 end 1 -1 -3 -5 -7 -9 -11 -13 -15 -17 -19 end 1 3 5 7 9 11 13 15 17 19 end 0 6 12 17 21 23 24 23 21 17 12 6 0 0 2 5 10 17 19 22 27 34 36 39 44 51 53 56 61 68 70 73 78 85 87 90 95 0 1 0 2 3 2 4 5 4 6 7 6 8 9 8 10 0 1 2 -1 0 1 -2 -1 0 -3 -2 -1 -4 -3 -2 -5 -4 -3 -6 -5 -4 -7 -6 -5 -8 -7 -6 -9 -8 -7 -10 -9 -8 0 1/144 1/36 1/16 1/9 25/144 1/4 49/144 4/9 9/16 25/36 121/144 1 gp2c-0.0.14/test/res/return.res0000644000175000017500000000013113614057635013157 000000000000003628803 1 1 1 [[2, 1], [2, 4], [3, 2], [2, 4], [2, 4]] [0] List([0]) [0] [0] 4 5 4 6 4 7 gp2c-0.0.14/test/res/affect.res0000644000175000017500000000100013614057540013057 00000000000000[[1, 1, 1, 1, 1], [2, 0, 0, 0, 0, 0; 1, 3, 0, 0, 0, 0; 1, 2, 4, 0, 0, 0; 1, 3, 3, 5, 0, 0; 1, 4, 6, 4, 6, 0; 1, 5, 10, 10, 5, 1]] [[1, 1, 1], [2, 0, 0, 0; 1, 3, 0, 0; 1, 2, 4, 0; 1, 3, 3, 1]] [[1, 3], [2, 1/2, 1/3, 1/4; 1/2, 1/3, 1/4, 1/5; 1/3, 1/4, 1/5, 1/6; 1/4, 1/5 , 1/6, 1/7]] [1, 2] [1, 1/2, 1/3, 1/4; 1/2, 1/3, 1/4, 1/5; 1/3, 1/4, 1/5, 1/6; 1/4, 1/5, 1/6, 1/ 7] [0, 2, 3, 4, 5] 458330 [1 0] [1 1] [1 0] [2 1] [1 0] [1 1] [1 0] [1 2] [1 0] [1 1] a is too small 0 [-3, 9, 1, 3] [4, 9, 1, 3] gp2c-0.0.14/test/res/multiassign.res0000644000175000017500000000021213623476440014176 000000000000007 [0, 4, 5, [4, 5], 3] [6, 5] [7, 6] [[2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [5, 10, 15, 20, 25]] [4, 3] [3, 2] [3, 4] [2, 3] [1, 4] [2, 4] gp2c-0.0.14/test/res/foreach.res0000644000175000017500000000015513623476440013254 00000000000000 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 [1, 0, 0]~ [0, 1, 0]~ [0, 0, 1]~ gp2c-0.0.14/test/res/sumprod.res0000644000175000017500000000030412141547407013326 0000000000000070 3386621706029845412513501979616206027407101056377880279852301473829656268554 3271776172678447667677355715741901509782957394190089337511608320000000000000 0000000000000 90271489869610542397 146 gp2c-0.0.14/test/res/args.res0000644000175000017500000000104712155572710012576 00000000000000[-1000000, -100, 100, 1000000]~ [1, 2, 3, 4, 5] [[5, 1, 2, 4, 3], [5, 1, 3, 2, 4], [5, 1, 4, 3, 2], [5, 3, 1, 4, 2], [5, 4, 1, 2, 3]] [5, 4, 3, 2, 1] [[5, 4, 1, 2, 3], [5, 3, 1, 4, 2], [5, 1, 4, 3, 2], [5, 1, 3, 2, 4], [5, 1, 2, 4, 3]] [1, 2, 3, 4, 5] [[5, 4, 3, 2, 1]] [5, 4, 3, 2, 1] [[5, 4, 3, 2, 1]] [1, 2, 3, 4, 5] [[5, 1, 2, 4, 3], [5, 1, 3, 2, 4], [5, 1, 4, 3, 2], [5, 3, 1, 4, 2], [5, 4, 1, 2, 3]] [5, 4, 3, 2, 1] [[5, 4, 1, 2, 3], [5, 3, 1, 4, 2], [5, 1, 4, 3, 2], [5, 1, 3, 2, 4], [5, 1, 2, 4, 3]] 0 4 4 4 2 2 1 6 6 5 3 7 ["ab", "abab"] gp2c-0.0.14/test/res/break.res0000644000175000017500000000107313646611246012731 000000000000001 8 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 Vecsmall([2, 1, 3, 4]) Vecsmall([3, 1, 2, 4]) Vecsmall([1, 3, 2, 4]) Vecsmall([2, 3, 1, 4]) Vecsmall([3, 2, 1, 4]) Vecsmall([4, 1, 2, 3]) Vecsmall([1, 4, 2, 3]) Vecsmall([2, 4, 1, 3]) Vecsmall([4, 2, 1, 3]) Vecsmall([1, 2, 4, 3]) Vecsmall([2, 1, 4, 3]) Vecsmall([3, 4, 1, 2]) Vecsmall([4, 3, 1, 2]) Vecsmall([1, 3, 4, 2]) Vecsmall([3, 1, 4, 2]) Vecsmall([4, 1, 3, 2]) Vecsmall([1, 4, 3, 2]) Vecsmall([2, 3, 4, 1]) Vecsmall([3, 2, 4, 1]) Vecsmall([4, 2, 3, 1]) Vecsmall([2, 4, 3, 1]) Vecsmall([3, 4, 2, 1]) Vecsmall([4, 3, 2, 1]) gp2c-0.0.14/test/res/trunc.res0000644000175000017500000000001311751724575012776 00000000000000-3 -3 -3 4 gp2c-0.0.14/test/res/print.res0000644000175000017500000000014712141547407012776 00000000000000x^4 + 1x^4 + 1 [1, 1/2, 1/3; 1/2, 1/3, 1/4; 1/3, 1/4, 1/5][1, 1/2, 1/3; 1/2, 1/3, 1/4; 1/3, 1/4, 1/5] gp2c-0.0.14/test/res/forvec.res0000644000175000017500000000142412141547407013125 000000000000003 4 4 5 4 5 5 6 3 4 5 6 9 10 10 11 10 11 11 12 9 10 10 11 10 11 11 12 9 10 10 11 10 11 11 12 7723918609442037417844821879307588409406852561588760100219624258814011012043 2095155602539796609408955320659979831286242012381627657050096534990231420407 1346396411042480260305718507746494766288798698870859035531286297826743859242 1091554189424642041400325612363061180667162545314618205493105546850355020293 3930406813203132229657168686013396274515841399331299711053350396047611089528 1711342677257166459584889784809081703820196027635862366744751880730830266608 4040329159100356899945870393224912960692678547662202890807811834146011208211 7302148962254779492735958222034798357783463657812430256245866011571402442740 7362874031069199599526178887443344551249257663443982945591 [3, 2] [3, 2] gp2c-0.0.14/test/res/upto.res0000644000175000017500000000011113162716330012615 00000000000000[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800] ["3->1 + I"] 1 + I gp2c-0.0.14/test/res/forprime.res0000644000175000017500000000005313614057635013466 0000000000000026861 26861 [29645/18432, 53361/79300] 784 gp2c-0.0.14/test/res/read.res0000644000175000017500000000023612141547407012554 000000000000008186649319552898393079654597951351236 [66030319100549341396551971786221327184, 17812363643588632576460922366103285 027] 8186649319552898393079654597951351236 gp2c-0.0.14/test/res/multiif.res0000644000175000017500000000015613614057635013320 00000000000000[1] [1] [1] [1] [1] [1] default [2] [2] [2] [2] default default [3] [3] default default default 0 1 2 default gp2c-0.0.14/test/res/while.res0000644000175000017500000000007213623476440012753 00000000000000end 2 3 4 5 end 2 end 2 end [-1, 0, 1] [-2, -1, 1, 2] 2 3 gp2c-0.0.14/test/res/vector.res0000644000175000017500000021260312141547407013146 0000000000000015 8 4 2 x^2012 + 15*x^2011 + 120*x^2010 + 680*x^2009 + 3060*x^2008 + 11628*x^2007 + 38760*x^2006 + 116280*x^2005 + 319770*x^2004 + 817190*x^2003 + 1961256*x^200 2 + 4457400*x^2001 + 9657700*x^2000 + 20058300*x^1999 + 40116600*x^1998 + 77 558760*x^1997 + 145422675*x^1996 + 265182525*x^1995 + 471435600*x^1994 + 818 809200*x^1993 + 1391975640*x^1992 + 2319959400*x^1991 + 3796297200*x^1990 + 6107086800*x^1989 + 9669554100*x^1988 + 15084504396*x^1987 + 23206929840*x^1 986 + 35240152720*x^1985 + 52860229080*x^1984 + 78378960360*x^1983 + 1149558 08528*x^1982 + 166871334960*x^1981 + 239877544005*x^1980 + 341643774795*x^19 79 + 482320623240*x^1978 + 675248872536*x^1977 + 937845656300*x^1976 + 12927 06174900*x^1975 + 1768966344600*x^1974 + 2403979904200*x^1973 + 324537287067 0*x^1972 + 4353548972850*x^1971 + 5804731963800*x^1970 + 7694644696200*x^196 9 + 10142940735900*x^1968 + 13298522298180*x^1967 + 17345898649800*x^1966 + 22512762077400*x^1965 + 29078984349975*x^1964 + 37387265592825*x^1963 + 4785 5699958816*x^1962 + 60992558771040*x^1961 + 77413632286320*x^1960 + 97862516 286480*x^1959 + 123234279768160*x^1958 + 154603005527328*x^1957 + 1932537569 09160*x^1956 + 240719591939480*x^1955 + 298824321028320*x^1954 + 36973178703 5040*x^1953 + 456002537343216*x^1952 + 560658857389200*x^1951 + 687259244541 600*x^1950 + 839983521106400*x^1949 + 1023729916348425*x^1948 + 124422559063 8855*x^1947 + 1508152231077400*x^1946 + 1823288518168200*x^1945 + 2198671448 379300*x^1944 + 2644778698775100*x^1943 + 3173734438530120*x^1942 + 37995412 29226200*x^1941 + 4538340912686850*x^1940 + 5408707663065150*x^1939 + 643197 6680401800*x^1938 + 7632612327410136*x^1937 + 9038619861406740*x^1936 + 1068 2005290753420*x^1935 + 12599288291657880*x^1934 + 14832073558533960*x^1933 + 17427686431277403*x^1932 + 20439879147794485*x^1931 + 23929614612052080*x^1 930 + 27965935149024720*x^1929 + 32626924340528840*x^1928 + 3800077070249829 6*x^1927 + 44186942677323600*x^1926 + 51297485177122800*x^1925 + 59458448728 028700*x^1924 + 68811463134684900*x^1923 + 79515468511191440*x^1922 + 917486 17512913200*x^1921 + 105710363656182600*x^1920 + 121623751733457400*x^1919 + 139737927523546800*x^1918 + 160330885263858960*x^1917 + 183712472698171725* x^1916 + 210227674943268675*x^1915 + 240260199935164200*x^1914 + 27423638982 4985400*x^1913 + 312629484400483356*x^1912 + 355964264416391939*x^1911 + 404 822104630406505*x^1910 + 459846468366578159*x^1909 + 521748877569770815*x^19 08 + 591315394579071198*x^1907 + 669413654240449252*x^1906 + 757000487505526 859*x^1905 + 855130180330236697*x^1904 + 964963414500878489*x^1903 + 1087776 939982278611*x^1902 + 1224974031510342794*x^1901 + 1378095785446418477*x^190 0 + 1548833316380963848*x^1899 + 1739040916626724377*x^1898 + 19507502455848 79850*x^1897 + 2186185620009652790*x^1896 + 2447780480446148639*x^1895 + 273 8195113581500497*x^1894 + 3060335714939780009*x^1893 + 3417374881275973495*x ^1892 + 3812773627193276690*x^1891 + 4250305025931013150*x^1890 + 4734079579 957930629*x^1889 + 5268572432968103115*x^1888 + 5858652541125123701*x^1887 + 6509613927946015419*x^1886 + 7227209154070961339*x^1885 + 80176851403405638 14*x^1884 + 8887821490111249380*x^1883 + 9844971464594372643*x^1882 + 108971 05773218647191*x^1881 + 12052859349602234421*x^1880 + 13321581292694032027*x ^1879 + 14713388162017699209*x^1878 + 16239220825741415461*x^1877 + 17910905 070516384621*x^1876 + 19741216192693173685*x^1875 + 21743947801653048953*x^1 874 + 23933985077597903736*x^1873 + 26327382738243963300*x^1872 + 2894144798 1478449669*x^1871 + 31794828684182488191*x^1870 + 34907607151115893867*x^186 9 + 38301399722018706896*x^1868 + 41999462559929542630*x^1867 + 460268039591 71546695*x^1866 + 50410303527533049649*x^1865 + 55178838613892434119*x^1864 + 60363418369926292298*x^1863 + 65997325852618194606*x^1862 + 72116268593074 348588*x^1861 + 78758538076674649224*x^1860 + 85965178599866172579*x^1859 + 93780165989964630297*x^1858 + 102250596696191795198*x^1857 + 111426887782868 071338*x^1856 + 121362988379224393730*x^1855 + 132116603164722221302*x^1854 + 143749428494100792753*x^1853 + 156327401792633856996*x^1852 + 169920964879 301126600*x^1851 + 184605341903790646507*x^1850 + 200460832612475590342*x^18 49 + 217573121688781721086*x^1848 + 236033604944709471470*x^1847 + 255939733 172727465374*x^1846 + 277395374500843033109*x^1845 + 300511196128411155489*x ^1844 + 325405066356198156221*x^1843 + 352202477861402769485*x^1842 + 381036 993206787927950*x^1841 + 412050713612825302166*x^1840 + 44539477206283539895 7*x^1839 + 481229851853553584143*x^1838 + 519726731747401988561*x^1837 + 561 066858928034703838*x^1836 + 605442951007485354198*x^1835 + 65305962838151897 9011*x^1834 + 704134078279611668462*x^1833 + 758896751907389602818*x^1832 + 817592096132392641648*x^1831 + 880479321218725521600*x^1830 + 94783320617256 1714341*x^1829 + 1019944943318611264163*x^1828 + 1097123023787595184851*x^18 27 + 1179694165656526480965*x^1826 + 1268004286547223311142*x^1825 + 1362419 522554015471562*x^1824 + 1463327295439093978231*x^1823 + 1571137430103438280 105*x^1822 + 1686283324412780224849*x^1821 + 1809223173531672468344*x^1820 + 1940441250994466158964*x^1819 + 2080449248819913464651*x^1818 + 22297876790 56240293750*x^1817 + 2389027339225929246710*x^1816 + 2558770844224158676226* x^1815 + 2739654227311907357762*x^1814 + 2932348612934202672533*x^1813 + 313 7561964185910718181*x^1812 + 3356040907841887053433*x^1811 + 358857263996527 4825933*x^1810 + 3835986915207301090846*x^1809 + 4099158123014130734863*x^18 08 + 4379007454061239357408*x^1807 + 4676505160343410736123*x^1806 + 4992672 912458900328665*x^1805 + 5328586257739583028967*x^1804 + 5685377182995070650 141*x^1803 + 6064236785757892024613*x^1802 + 6466418058038925974620*x^1801 + 6893238786727414568473*x^1800 + 7346084574898110943125*x^1799 + 78264119884 19482462933*x^1798 + 8335751832391446007396*x^1797 + 8875712562078907603171* x^1796 + 9447983833148463228467*x^1795 + 10054340196160041103045*x^1794 + 10 696644940413077673814*x^1793 + 11376854092398069175828*x^1792 + 120970205742 59077238761*x^1791 + 12859298527831039415928*x^1790 + 1366594780997759234362 2*x^1789 + 14519338665120604771539*x^1788 + 15421956581021787850409*x^1787 + 16376407334049648320985*x^1786 + 17385422230341723667736*x^1785 + 184518635 49452533434352*x^1784 + 19578730197262043760628*x^1783 + 2076916357510771822 1060*x^1782 + 22026453672295462023383*x^1781 + 23354045389341002681052*x^178 0 + 24755545099493531801650*x^1779 + 26234727456297802251983*x^1778 + 277955 42455159374462636*x^1777 + 29442122757090375934921*x^1776 + 3117879128303001 9096386*x^1775 + 33010069087355253518898*x^1774 + 34940683519422347129414*x^ 1773 + 36975576682209934278221*x^1772 + 39119914197368172103159*x^1771 + 413 79094286217145054374*x^1770 + 43758757176480583970011*x^1769 + 4626479484478 8352641368*x^1768 + 48903361105233031913330*x^1767 + 51680882054522328122534 *x^1766 + 54604066884529976662791*x^1765 + 57679919073313328693715*x^1764 + 60915747965935923846915*x^1763 + 64319180756708086905895*x^1762 + 6789817488 4737962745316*x^1761 + 71661030854969440383090*x^1760 + 75616405497172130994 215*x^1759 + 79773325675641971358031*x^1758 + 84141202462669136621651*x^1757 + 88729845789132775514026*x^1756 + 93549479585889636110466*x^1755 + 9861075 7429935937548800*x^1754 + 103924778709638867035281*x^1753 + 1095031053236558 43954850*x^1752 + 115357778928486193351534*x^1751 + 121501338749931106362645 *x^1750 + 127946839974073729649530*x^1749 + 134707872733731911049549*x^1748 + 141798581706681523391857*x^1747 + 149233686342298378641828*x^1746 + 157028 501733621513312567*x^1745 + 165198960152200053455392*x^1744 + 17376163326344 9930486935*x^1743 + 182733755040615391447311*x^1742 + 1921332453958034995984 13*x^1741 + 201978734546937620840273*x^1740 + 212289588139858202134131*x^173 9 + 223085933145185930393226*x^1738 + 234388684549953571009607*x^1737 + 2462 19572864408377575099*x^1736 + 258601172464786887969963*x^1735 + 271556930793 268122593138*x^1734 + 285111198436719619990047*x^1733 + 29928926010626332145 3188*x^1732 + 314117366540104983262466*x^1731 + 329622767352491482933334*x^1 730 + 345833744852085019811573*x^1729 + 362779648853471711999819*x^1728 + 38 0490932505954377996794*x^1727 + 398999189164215275240911*x^1726 + 4183371903 25874157155591*x^1725 + 438538924661410108913274*x^1724 + 459639638162362128 951442*x^1723 + 481675875434173232558872*x^1722 + 504685522160495855091049*x ^1721 + 528707848766232410199859*x^1720 + 553783555307043892574361*x^1719 + 579954817613521279785839*x^1718 + 607265334718679053539812*x^1717 + 63576037 7597897291448681*x^1716 + 665486839250908335631893*x^1715 + 6964932861558958 78032155*x^1714 + 728830011126248262972800*x^1713 + 762549087600983738435562 *x^1712 + 797704425400343126606057*x^1711 + 834351827978524763685044*x^1710 + 872549051206017405478956*x^1709 + 912355863714468929900342*x^1708 + 953834 108837511905563902*x^1707 + 997047768181451246737604*x^1706 + 10420630268602 04042774077*x^1705 + 1088948340429367032719950*x^1704 + 11377745035547728850 88180*x^1703 + 1188614720451382224835678*x^1702 + 1241544677128844004473366* x^1701 + 1296642615480542117966574*x^1700 + 1353989409253430872599936*x^1699 + 1413668641936445827106135*x^1698 + 1475766686605759329764705*x^1697 + 154 0372787765631597355499*x^1696 + 1607579145224088108078948*x^1695 + 167748100 0043132175870415*x^1694 + 1750176722603677560714406*x^1693 + 182576790282585 9574097804*x^1692 + 1904359442585854078819312*x^1691 + 198605965037080176986 7600*x^1690 + 2070980338213899863537050*x^1689 + 2159236920952184514573740*x ^1688 + 2250948517849984618798729*x^1687 + 2346238056631480827859165*x^1686 + 2445232379966252283685050*x^1685 + 2548062354452137446716846*x^1684 + 2654 862982140174111522571*x^1683 + 2765773514646816937230772*x^1682 + 2880937569 899058223153952*x^1681 + 3000503251558498880669638*x^1680 + 3124623271170831 233208738*x^1679 + 3253455073087603053187699*x^1678 + 3387160962207532747827 636*x^1677 + 3525908234585038458782139*x^1676 + 3669869310954028660974727*x^ 1675 + 3819221873215378245576866*x^1674 + 3974149003936881656157892*x^1673 + 4134839328914833015251847*x^1672 + 4301487162846731924536542*x^1671 + 44742 92658164952333273357*x^1670 + 4653461957081540128588346*x^1669 + 48392073468 94622483843400*x^1668 + 5031747418607218078365433*x^1667 + 52313072289095316 38225506*x^1666 + 5438118465576098403167082*x^1665 + 56524196163294136533676 98*x^1664 + 5874456141221938880387654*x^1663 + 6104480648588619103132259*x^1 662 + 6342753074622274750569333*x^1661 + 6589540866624445991970172*x^1660 + 6845119169984466921396262*x^1659 + 7109771018939731120120799*x^1658 + 738378 7531170278348134657*x^1657 + 7667468106280983968850408*x^1656 + 796112062822 4767700261160*x^1655 + 8265061671720355917618663*x^1654 + 857961671271823150 9610854*x^1653 + 8905120342968486710598662*x^1652 + 924191648874435689054344 5*x^1651 + 9590358633775256473085186*x^1650 + 9950810046443161458690994*x^16 49 + 10323644011296185938541584*x^1648 + 10709244064933181977484928*x^1647 + 11108004236313152799740189*x^1646 + 11520329291543207805208067*x^1645 + 119 46634983198704050909200*x^1644 + 12387348304229111922655080*x^1643 + 1284290 7746503012265942665*x^1642 + 13313763564045477709818966*x^1641 + 13800378041 020911769049473*x^1640 + 14303225764514215012935548*x^1639 + 148227939021629 17607012247*x^1638 + 15359582484692661329169804*x^1637 + 1591410469340813119 6372986*x^1636 + 16486887152691226573589929*x^1635 + 17078470227557923534122 218*x^1634 + 17689408326324913761697541*x^1633 + 18320270208436709891268995* x^1632 + 18971639297503482339934199*x^1631 + 19644113999599437845143050*x^16 30 + 20338308026871064569015815*x^1629 + 21054850726504052211252702*x^1628 + 21794387415097147566684231*x^1627 + 22557579718490625836982630*x^1626 + 233 45105917096445231818330*x^1625 + 24157661296776506447898379*x^1624 + 2499595 8505314758972981519*x^1623 + 25860727914528182307583992*x^1622 + 26752717988 060921614791566*x^1621 + 27672695654905073487491394*x^1620 + 286214466886907 97955874799*x^1619 + 29599776092787577044348512*x^1618 + 3060850849125754762 9147273*x^1617 + 31648488525700906554443397*x^1616 + 32720581258032418449787 996*x^1615 + 33825672579227050975550505*x^1614 + 34964669624071717832332676* x^1613 + 36138501191959026338598099*x^1612 + 37348118173757803248618393*x^16 11 + 38594493984794009298466976*x^1610 + 39878625003974449287276341*x^1609 + 41201531019084439888691646*x^1608 + 42564255678289311416453220*x^1607 + 439 67866947868292020435479*x^1606 + 45413457576207952856822901*x^1605 + 4690214 5564080980259822117*x^1604 + 48435074641234585454039338*x^1603 + 50013414749 311363508678641*x^1602 + 51638362531123870680362239*x^1601 + 533111418263026 02665403941*x^1600 + 55033004173335425241394197*x^1599 + 5680522931801483299 0846932*x^1598 + 58629125728307690947946452*x^1597 + 60506031115660347787723 733*x^1596 + 62437312962750197293379423*x^1595 + 64424369057692907013950886* x^1594 + 66468628034712628997403164*x^1593 + 68571549921280557004550454*x^15 92 + 70734626691725197443174392*x^1591 + 72959382827315677191050622*x^1590 + 75247375882817320299058793*x^1589 + 77600197059516587095263480*x^1588 + 800 19471784710283278758517*x^1587 + 82506860297651713046338622*x^1586 + 8506405 8241944169001518939*x^1585 + 87692797264369822437943828*x^1584 + 90394845620 139700470162471*x^1583 + 93172008784548011325337077*x^1582 + 960261300710116 05850221263*x^1581 + 98959091255472841888936710*x^1580 + 1019728132071415486 29030397*x^1579 + 105069256525549170296871227*x^1578 + 108250422183885502730 417191*x^1577 + 111518352178585722410839085*x^1576 + 11487513018513264555921 9261*x^1575 + 118322882220036344987449066*x^1574 + 1218637773089503946429096 60*x^1573 + 125500028160881106336793025*x^1572 + 129233891848443170151510225 *x^1571 + 133067670494112109662676448*x^1570 + 137003711962420915588788621*x ^1569 + 141044410558045127024415798*x^1568 + 145192207729717488272722179*x^1 567 + 149449592779910121747731649*x^1566 + 153819103580218923768640612*x^156 5 + 158303327292381610646179576*x^1564 + 162904901094857517619103395*x^1563 + 167626512914893883318377068*x^1562 + 172470902165999937925293777*x^1561 + 177440860490746654482457411*x^1560 + 182539232508806520375500522*x^1559 + 18 7768916570144140318480840*x^1558 + 193132865513264893764958868*x^1557 + 1986 34087428425239075904644*x^1556 + 204275646425704584579430695*x^1555 + 210060 663407834933459299851*x^1554 + 215992316847680755841646881*x^1553 + 22207384 3570257748174099199*x^1552 + 228308539539175307699717695*x^1551 + 2346997606 47383679240878310*x^1550 + 241250923512102823376307194*x^1549 + 247965506273 806110199053830*x^1548 + 254847049399127961995673781*x^1547 + 26189915648756 0552229262414*x^1546 + 269125495081800618013898896*x^1545 + 2765297974816033 59739047744*x^1544 + 284115861560996285574045609*x^1543 + 291887551588701711 220628744*x^1542 + 299848799051612447482438509*x^1541 + 30800360348116100101 2842964*x^1540 + 316356033282418378045947378*x^1539 + 3249102265657543181015 80320*x^1538 + 333670391980886495706174741*x^1537 + 342640809553141914242300 802*x^1536 + 351825831521749378316317263*x^1535 + 36122988317997757073406342 0*x^1534 + 370857463716928878548297480*x^1533 + 380713147060794710969986492* x^1532 + 390801582723373631531533406*x^1531 + 401127496645649189098194395*x^ 1530 + 411695692044219878520484895*x^1529 + 422511050258369193312999975*x^15 28 + 433578531597559251172913481*x^1527 + 444903176189126979884922276*x^1526 + 456490104825957347700218738*x^1525 + 468344519813903610157920988*x^1524 + 480471705818720026101888079*x^1523 + 492877030712267970928353556*x^1522 + 5 05565946417751846505227331*x^1521 + 518543989753736656387481853*x^1520 + 531 816783276694583600104798*x^1519 + 545390036121823378085885507*x^1518 + 55926 9544841874833664630602*x^1517 + 573461194243727111797425611*x^1516 + 5879709 58222430153397450724*x^1515 + 602804900592448912209505831*x^1514 + 617969175 915824645754061434*x^1513 + 633470030326970014386604133*x^1512 + 64931380235 3809267575207721*x^1511 + 665506923734970340991802941*x^1510 + 6820559202327 31250415547366*x^1509 + 698967412441418750756423658*x^1508 + 716248116590952 832746085574*x^1507 + 733904845345226258058875561*x^1506 + 75194450859500398 7891697434*x^1505 + 770374114245023042444367131*x^1504 + 7892007689949690414 23461874*x^1503 + 808431679114001420787225362*x^1502 + 828074151208495100624 281311*x^1501 + 848135592982662195504523968*x^1500 + 86862351399171321406799 5021*x^1499 + 889545526387213091259235266*x^1498 + 9109093456542833367232934 67*x^1497 + 932722791340297568727757309*x^1496 + 954993787774713736854325083 *x^1495 + 977730364779682420923348149*x^1494 + 1000940658371066730502807634* x^1493 + 1024632911449505521253541597*x^1492 + 1048815474481147893635477225* x^1491 + 1073496806167683248520698185*x^1490 + 1098685474105287545418424790* x^1489 + 1124390155432102844718100624*x^1488 + 1150619637463863718016281807* x^1487 + 1177382818317280682639395106*x^1486 + 1204688707520787460347235139* x^1485 + 1232546426612255578351065523*x^1484 + 1260965209723276625664406856* x^1483 + 1289954404149609351891413472*x^1482 + 1319523470907385751321933897* x^1481 + 1349681985274667315125118297*x^1480 + 1380439637317939761001425752* x^1479 + 1411806232403131765357183932*x^1478 + 1443791691690740530400977992* x^1477 + 1476406052614644420023999392*x^1476 + 1509659469344180396415314224* x^1475 + 1543562213229061586576333429*x^1474 + 1578124673226708006734294322* x^1473 + 1613357356311561275608098254*x^1472 + 1649270887865952057044178481* x^1471 + 1685876012052086991203834988*x^1470 + 1723183592164720003730021439* x^1469 + 1761204610964071126627813226*x^1468 + 1799950170988554325428022803* x^1467 + 1839431494846874307028163466*x^1466 + 1879659925489050883869711318* x^1465 + 1920646926455928195254697511*x^1464 + 1962404082106724938054984419* x^1463 + 2004943097824180739237400327*x^1462 + 2048275800196852913915600845* x^1461 + 2092414137178117097427325944*x^1460 + 2137370178221424620588462479* x^1459 + 2183156114391369016139163576*x^1458 + 2229784258450113703798424725* x^1457 + 2277267044918732703586934896*x^1456 + 2325617030113016174446131603* x^1455 + 2374846892153292669932767639*x^1454 + 2424969430947820247136362035* x^1453 + 2475997568149298961158599673*x^1452 + 2527944347084057827688202572* x^1451 + 2580822932653470042552029620*x^1450 + 2634646611207151111742713053* x^1449 + 2689428790387495570402747243*x^1448 + 2745182998945109156639199275* x^1447 + 2801922886524694657872209905*x^1446 + 2859662223420951165668456239* x^1445 + 2918414900304048161624822769*x^1444 + 2978194927914237713756204091* x^1443 + 3039016436725170091873278504*x^1442 + 3100893676575480313438642702* x^1441 + 3163841016268215510147688119*x^1440 + 3227872943137675561734893216* x^1439 + 3293004062583242178952380823*x^1438 + 3359249097569774533954593655* x^1437 + 3426622888094152635051753061*x^1436 + 3495140390617552925517059930* x^1435 + 3564816677463044054349411261*x^1434 + 3635666936178094422053820055* x^1433 + 3707706468861586948001540482*x^1432 + 3780950691454940539112325813* x^1431 + 3855415132996941963747601662*x^1430 + 3931115434841896251043752351* x^1429 + 4008067349840708345618851370*x^1428 + 4086286741484513551763927236* x^1427 + 4165789583010479300930139870*x^1426 + 4246591956469405972532680208* x^1425 + 4328710051754759891733920680*x^1424 + 4412160165592777219800725493* x^1423 + 4496958700493283243646317999*x^1422 + 4583122163660877561990990680* x^1421 + 4670667165866141856865192408*x^1420 + 4759610420276533331520598655* x^1419 + 4849968741246633489726473040*x^1418 + 4941759043067428727354987892* x^1417 + 5034998338674306205472311952*x^1416 + 5129703738313455675150322862* x^1415 + 5225892448166375328119815476*x^1414 + 5323581768932187354346979975* x^1413 + 5422789094367476697700478284*x^1412 + 5523531909783374514078239162* x^1411 + 5625827790499616052593541426*x^1410 + 5729694400255311099511348867* x^1409 + 5835149489576173746329413411*x^1408 + 5942210894097967067383598175* x^1407 + 6050896532845927318209530777*x^1406 + 6161224406469941493115674890* x^1405 + 6273212595435261508434216413*x^1404 + 6386879258168547906048418775* x^1403 + 6502242629159045799294755293*x^1402 + 6619321017014705809364695836* x^1401 + 6738132802473072963956384852*x^1400 + 6858696436366776950134135982* x^1399 + 6981030437543467729038227115*x^1398 + 7105153390740051330053828102* x^1397 + 7231083944411091645010733600*x^1396 + 7358840808511255237568829812* x^1395 + 7488442752231687567680515541*x^1394 + 7619908601690220604351447300* x^1393 + 7753257237575323560193553672*x^1392 + 7888507592743720426735159345* x^1391 + 8025678649771610118285108682*x^1390 + 8164789438459437342410410207* x^1389 + 8305859033290174804755848706*x^1388 + 8448906550841090022890954913* x^1387 + 8593951147148982865902187994*x^1386 + 8741012015028892951249263891* x^1385 + 8890108381346289215572776913*x^1384 + 9041259504242767329179456856* x^1383 + 9194484670315294142250671575*x^1382 + 9349803191749052031733434773* x^1381 + 9507234403403949858600748555*x^1380 + 9666797659854881242834419301* x^1379 + 9828512332385825015118730417*x^1378 + 9992397805937897006773249847* x^1377 + 10158473476011476789739006290*x^1376 + 1032675874552254757321162380 4*x^1375 + 10497273021613402199441294017*x^1374 + 10670035712417883054852734 045*x^1373 + 10845066223781338720445443551*x^1372 + 110223839559354953237898 30209*x^1371 + 11202008300128455820120041000*x^1370 + 1138395863521005581822 9763519*x^1369 + 11568254324172820074201760126*x^1368 + 11754914710648779398 453737576*x^1367 + 11943959115362423455080596231*x^1366 + 121354068325400807 72845079854*x^1365 + 12329277126276033230155695098*x^1364 + 1252558922685568 8317625002656*x^1363 + 12724362327036148616888513667*x^1362 + 12925615578284 534158763839855*x^1361 + 13129368086974429632935616107*x^1360 + 133356389105 40844810473963944*x^1359 + 13544447053594093004859581641*x^1358 + 1375581146 3993008931941442605*x^1357 + 13969751028877943929456998386*x^1356 + 14186284 570663993157383239759*x^1355 + 14405430842994926116364775942*x^1354 + 146272 08526658308587609587315*x^1353 + 14851636225462320908705456882*x^1352 + 1507 8732462074794350466624662*x^1351 + 15308515673825004244773828755*x^1350 + 15 541004208468775426952480570*x^1349 + 15776216319917472493003626449*x^1348 + 16014170163931464326351931037*x^1347 + 16254883793778669315028110193*x^1346 + 16498375155858804652618166101*x^1345 + 16744662085293980089082413443*x^134 4 + 16993762301486293464805176307*x^1343 + 17245693403643102317052041531*x^1 342 + 17500472866270662786397650435*x^1341 + 17758118034636843965598127488*x ^1340 + 18018646120203642718718150552*x^1339 + 18282074196030240847929897794 *x^1338 + 18548419192147363293074930619*x^1337 + 188176978909037128085665047 68*x^1336 + 19089926922285273267207654855*x^1335 + 1936512275920829038466337 2453*x^1334 + 19643301712786755235264017783*x^1333 + 19924479927575232433101 687431*x^1332 + 20208673376787891275542927186*x^1331 + 204958978574946144828 14905214*x^1330 + 20786168985795075410688860927*x^1329 + 2107950219197169075 6913495852*x^1328 + 21375912715622371819341772263*x^1327 + 21675415600774013 288020145825*x^1326 + 21978025690977674358217835568*x^1325 + 222837576243864 22629791488547*x^1324 + 22592625828816826803714087264*x^1323 + 2290464451679 5099592335660720*x^1322 + 23219827680588907519262263198*x^1321 + 23538189087 225879390901817254*x^1320 + 23859742273499860167984504414*x^1319 + 241845005 40965971744968485687*x^1318 + 24512476950925556751431904430*x^1317 + 2484368 4319402095915571127881*x^1316 + 25178135212109203769016206881*x^1315 + 25515 841939411821517584933896*x^1314 + 25856816551281739747580957711*x^1313 + 262 01070832248597275063204169*x^1312 + 26548616296347515869449939286*x^1311 + 2 6899464182064543786163158519*x^1310 + 27253625447281094019077791557*x^1309 + 27611110764218575925646775844*x^1308 + 27971930514384431379082662296*x^1307 + 28336094783520798856271250350*x^1306 + 28703613356557040870584787123*x^13 05 + 29074495712567381898896218532*x^1304 + 29448751019734915425352229975*x^ 1303 + 29826388130323249924360360663*x^1302 + 30207415575657074525344895780* x^1301 + 30591841561112935735732653596*x^1300 + 3097967396112152693999582408 6*x^1299 + 31370920314182802435107806463*x^1298 + 31765587817895237500216132 250*x^1297 + 32163683324000565424517100034*x^1296 + 325652133334453315261021 78819*x^1295 + 32970183991460612979871472557*x^1294 + 3337860108266126172847 4897216*x^1293 + 33790470026166035870715905282*x^1292 + 34205795870739992701 075660239*x^1291 + 34624583289960524006201900785*x^1290 + 350468365774084213 03648013960*x^1289 + 35472559641885365429215970145*x^1288 + 3590175600265924 1236406854905*x^1287 + 36334428784738684159255969066*x^1286 + 36770580714178 271002856095287*x^1285 + 37210214113415772558874715755*x^1284 + 376533308966 42890491165700724*x^1283 + 38099932565210905394077950704*x^1282 + 3855002020 3072666988287886520*x^1281 + 39003594472262361081048133396*x^1280 + 39460655 608414491174876010789*x^1279 + 39921203416323515456236258842*x^1278 + 403852 37265545582329148273084*x^1277 + 40852756086043809673428912736*x^1276 + 4132 3758363878554599144797043*x^1275 + 41798242136944121633589860525*x^1274 + 42 276204990753358010644252037*x^1273 + 42757644054271585030753998649*x^1272 + 43242555995801314319169475856*x^1271 + 43730937018919197226797138872*x^1270 + 44222782858466654588488442545*x^1269 + 44718088776595632574382909744*x^126 8 + 45216849558870928437747068918*x^1267 + 45719059510430527574455704397*x^1 266 + 46224712452205390461837199588*x^1265 + 46733801717200124735186084024*x ^1264 + 47246320146835973886115595691*x^1263 + 47762260087357549825512730837 *x^1262 + 48281613386304731842750853510*x^1261 + 488043713890511493097469682 16*x^1260 + 49330524935410659821314300798*x^1259 + 4986006435631322833010557 5621*x^1258 + 50392979470551606223477594541*x^1257 + 50929259581600202199204 188005*x^1256 + 51468893474507529225656456538*x^1255 + 520118694128636038185 55756283*x^1254 + 52558175135843665329552327533*x^1253 + 5310779785532957392 0725651020*x^1252 + 53660724253110236392846612780*x^1251 + 54216940478162399 043263243108*x^1250 + 54776432144013136251121363310*x^1249 + 553391843261853 52523033881514*x^1248 + 55905181559727604281168822910*x^1247 + 5647440783682 9535738115013998*x^1246 + 57046846604524210779062923321*x^1245 + 57622480762 478609862243637721*x^1244 + 58201292660873547553819467752*x^1243 + 587832640 98374252434315416018*x^1242 + 59368376320192836751204912016*x^1241 + 5995661 0016243868347582939719*x^1240 + 60547945319394242071326832194*x^1239 + 61142 361803808532064296960506*x^1238 + 61739838483390990048689872294*x^1237 + 623 40353810325337969535509213*x^1236 + 62943885673713486120625656819*x^1235 + 6 3550411398314290178158253003*x^1234 + 64159907743383442394555273601*x^1233 + 64772350901615573566922776754*x^1232 + 65387716498189623293321176366*x^1231 + 66005979589918516468441637838*x^1230 + 66627114664504163951669275955*x^12 29 + 67251095639898784868273125905*x^1228 + 67877895863773527082203014170*x^ 1227 + 68507488113095341010489484860*x^1226 + 69139844593813040138518242958* x^1225 + 69774936940653459346656624542*x^1224 + 7041273621702859947620550692 7*x^1223 + 71053212915054623450982088605*x^1222 + 71696336955683545734739927 746*x^1221 + 72342077688948432949021262220*x^1220 + 729904038943229091060168 37032*x^1219 + 73641283781195734131868461894*x^1218 + 7429468498946119917306 0957924*x^1217 + 74950574590226056597767099573*x^1216 + 75608919086633676631 067035446*x^1215 + 76269684414806096203878086668*x^1214 + 769328359449045988 56396324194*x^1213 + 77598338482309437424240083669*x^1212 + 7826615626891928 3755845961185*x^1211 + 78936252984570961869722932258*x^1210 + 79608591748579 992766816274523*x^1209 + 80283135121402450573537657540*x^1208 + 809598451064 18600812218537015*x^1207 + 81638683151838762385246221217*x^1206 + 8231961015 2731805324517046296*x^1205 + 83002586453176666506824418881*x^1204 + 83687571 848537235376288441004*x^1203 + 84374525587860931254985629697*x^1202 + 850634 06376401263070766686492*x^1201 + 85754172378264631295227461714*x^1200 + 8644 6781219181600573446210886*x^1199 + 87141189989402839949092427374*x^1198 + 87 837355246719895752670347573*x^1197 + 88535233019610930135950360270*x^1196 + 89234778810511525911173326810*x^1195 + 89935947599210625798635405668*x^1194 + 90638693846371641410160565393*x^1193 + 91342971497178734308264864323*x^119 2 + 92048733985108238291162202051*x^1191 + 92755934235825158671935108815*x^1 190 + 93464524671204650756100688503*x^1189 + 94174457213478345985467281560*x ^1188 + 94885683289505360317746477326*x^1187 + 95598153835167785361117664498 *x^1186 + 96311819299890428591210025616*x^1185 + 970266296512845346552497402 88*x^1184 + 97742534379915185325002946576*x^1183 + 9845948250419204110731372 2799*x^1182 + 99177422575383052869274569623*x^1181 + 99896302682750737095252 042826*x^1180 + 100616070458810573576089869125*x^1179 + 10133667308471104944 7879922303*x^1178 + 102058057295734838559864115866*x^1177 + 1027801693869205 70169522346193*x^1176 + 103502955218804605949002375668*x^1175 + 104226360223 282209252116742542*x^1174 + 104950329409587455546595593360*x^1173 + 10567480 7370391197873631204674*x^1172 + 106399738288016366167526451083*x^1171 + 1071 25065940769844264066035217*x^1170 + 107850733709390133458716003042*x^1169 + 108576684583609976556619337880*x^1168 + 109302861168833081497329664898*x^116 7 + 110029205692924048850084327104*x^1166 + 110755660013110572771967541038*x ^1165 + 111482165622996950413386990737*x^1164 + 1122086636596879002547393380 83*x^1163 + 112935094911021655476846754716*x^1162 + 113661399822911264217596 989952*x^1161 + 114387518506792994460112628872*x^1160 + 11511339074718070734 5615099847*x^1159 + 115838956009325028918840173276*x^1158 + 1165641534469761 16707304512399*x^1157 + 117288921910248784119808850437*x^1156 + 118013199953 588712436170667198*x^1155 + 118736925843838447161167767677*x^1154 + 11946003 7568401842742881031714*x^1153 + 120182472843505587120859373097*x^1152 + 1209 04169122556405284569932163*x^1151 + 121625063604592508999182072000*x^1150 + 122345093242827828105563507580*x^1149 + 123064194753287527336093107174*x^114 8 + 123782304623533281419118664614*x^1147 + 124499359121476750384154486515*x ^1146 + 125215294304279666438707628389*x^1145 + 1259300460273389135773624146 87*x^1144 + 126643549953354951215789862889*x^1143 + 127355741561481903627956 486275*x^1142 + 128066556156557607815180991809*x^1141 + 12877592887841188366 1938903292*x^1140 + 129483794711251261846466728214*x^1139 + 1301900884931183 76985198240350*x^1138 + 130894744925424205909707139318*x^1137 + 131597698582 551303813861637177*x^1136 + 132298883921526164277939208547*x^1135 + 13299823 5291758802886014023541*x^1134 + 133695686944847638313409558705*x^1133 + 1343 91173044447719382678073207*x^1132 + 135084627676200321679575557358*x^1131 + 135775984857721912894864506597*x^1130 + 136465178548650462123382767550*x^112 9 + 137152142660747044918411963782*x^1128 + 137836811068050672976568474505*x ^1127 + 138519117617084254925681826137*x^1126 + 1391989961371095728147270682 09*x^1125 + 139876380450429137569991689849*x^1124 + 140551204382732765894277 289975*x^1123 + 141223401773486700854891852185*x^1122 + 14189290648636307874 0143325635*x^1121 + 142559652419707525671491499207*x^1120 + 1432235735170426 48947770220056*x^1119 + 143884603777605170177094497012*x^1118 + 144542677266 914429929173146601*x^1117 + 145197728127369976923527453787*x^1116 + 14584969 0588875938665150144765*x^1115 + 146498498979489854955813808935*x^1114 + 1471 44087736093640853743969299*x^1113 + 147786391415084331433699281803*x^1112 + 148425344703082247120436288171*x^1111 + 149060882427654205437658375711*x^111 0 + 149692939568049392738227719940*x^1109 + 150321451265945497865811481918*x ^1108 + 150946352836202698749179718365*x^1107 + 1515675797776230826537935369 02*x^1106 + 152185067783713071216617198040*x^1105 + 152798752753446412474531 557056*x^1104 + 153408570802025293869365396664*x^1103 + 15401445827163712267 8212669457*x^1102 + 154616351742204513480951662809*x^1101 + 1552141880421260 16142075765648*x^1100 + 155807904259005112355196587072*x^1099 + 156397437750 365004079760708953*x^1098 + 156982726154346713194261569909*x^1097 + 15756370 7400388008401914192673*x^1096 + 158140319719880672856533119052*x^1095 + 1587 12501656803624131105689806*x^1094 + 159280192078329397031926851118*x^1093 + 159843330185401499369549922151*x^1092 + 160401855523280151136349363934*x^109 1 + 160955707992053918611071420996*x^1090 + 161504827857114756714995786948*x ^1089 + 162049155759593975483618472571*x^1088 + 1625886327267566497932070331 41*x^1087 + 163123200182351995494029280789*x^1086 + 163652799956917239852110 481957*x^1085 + 164177374298032519689365750882*x^1084 + 16469686588052434683 7956095019*x^1083 + 165211217816615187488538166649*x^1082 + 1657203736660167 09713266130437*x^1081 + 166224277445964261882242728311*x^1080 + 166722873641 190153865625503265*x^1079 + 167216107213833322821529245754*x^1078 + 16770392 3613282976010719079915*x^1077 + 168186268785953814451088262892*x^1076 + 1686 63089184990453326024915442*x^1075 + 169134331779898667888693081053*x^1074 + 169599944066101107156422961295*x^1073 + 170059874074415131962997269013*x^107 2 + 170514070380450448928547437228*x^1071 + 170962482113924227613685328163*x ^1070 + 171405058967891404542782631979*x^1069 + 1718417512078878949071008581 37*x^1068 + 172272509680984450587640224568*x^1067 + 172697285824748921665728 452012*x^1066 + 173116031676114697811866381796*x^1065 + 17352869988015312585 5286977583*x^1064 + 173935243698747720432914205544*x^1063 + 1743356170191680 05891522642333*x^1062 + 174729774362540849565240772915*x^1061 + 175117670892 217169166205099633*x^1060 + 175499262422031920303005481661*x^1059 + 17587450 5424455294073166410630*x^1058 + 176243357038633079255642873230*x^1057 + 1766 05775078314168850290707633*x^1056 + 176961718039663216566378830509*x^1055 + 177311145108956475344086917477*x^1054 + 177654016170158877093985674098*x^105 3 + 177990291812380440551905009500*x^1052 + 178319933337210122462306823356*x ^1051 + 178642902765925256214016440725*x^1050 + 1789591628465747515494296436 04*x^1049 + 179268677060934259043380343524*x^1048 + 179571409631331533691789 788099*x^1047 + 179867325527340263153870499141*x^1046 + 18015639047234065794 5664976965*x^1045 + 180438570949945133177491357196*x^1044 + 1807138342102874 44253672583983*x^1043 + 180982148276173672299768818019*x^1042 + 181243481949 093488940244517596*x^1041 + 181497804815090164407718624924*x^1040 + 18174508 7250487817813115954032*x^1039 + 181985300427474443733422142606*x^1038 + 1822 18416319539285069423795299*x^1037 + 182444407706763158378692581222*x^1036 + 182663248180960374587876483522*x^1035 + 182874912150670935121653284396*x^103 4 + 183079374846001721041875809714*x^1033 + 183276612323315430757729820313*x ^1032 + 183466601469766060234211726917*x^1031 + 1836493200076797583798406106 65*x^1030 + 183824746498779929423026033945*x^1029 + 183992860348255493577555 679235*x^1028 + 184153641808671257138742617596*x^1027 + 18430707198371938333 0245150488*x^1026 + 184453132831810995724678119122*x^1025 + 1845918071695069 86875984841499*x^1024 + 184723078674787145915125869337*x^1023 + 184846931890 156760259842869341*x^1022 + 184963352225589888260842272728*x^1021 + 18507232 5961308541537378900861*x^1020 + 185173840250397057931470473857*x^1019 + 1852 67883121250988418311673483*x^1018 + 185354443479859863937264359390*x^1017 + 185433511111923250939378080770*x^1016 + 185505076684799547469963213412*x^101 5 + 185569131749287014804445749791*x^1014 + 185625668741236583018657967428*x ^1013 + 185674680982996012386880333483*x^1012 + 1857161626846850361483072987 39*x^1011 + 185750108945301153951071483648*x^1010 + 185776515753655789158389 114346*x^1009 + 185795379989140567169605353939*x^1008 + 18580669942232351595 5706728859*x^1007 + 185810472715375034119984364263*x^1006 + 1858066994223235 15955706728859*x^1005 + 185795379989140567169605353939*x^1004 + 185776515753 655789158389114346*x^1003 + 185750108945301153951071483648*x^1002 + 18571616 2684685036148307298739*x^1001 + 185674680982996012386880333483*x^1000 + 1856 25668741236583018657967428*x^999 + 185569131749287014804445749791*x^998 + 18 5505076684799547469963213412*x^997 + 185433511111923250939378080770*x^996 + 185354443479859863937264359390*x^995 + 185267883121250988418311673483*x^994 + 185173840250397057931470473857*x^993 + 185072325961308541537378900861*x^99 2 + 184963352225589888260842272728*x^991 + 184846931890156760259842869341*x^ 990 + 184723078674787145915125869337*x^989 + 184591807169506986875984841499* x^988 + 184453132831810995724678119122*x^987 + 18430707198371938333024515048 8*x^986 + 184153641808671257138742617596*x^985 + 183992860348255493577555679 235*x^984 + 183824746498779929423026033945*x^983 + 1836493200076797583798406 10665*x^982 + 183466601469766060234211726917*x^981 + 18327661232331543075772 9820313*x^980 + 183079374846001721041875809714*x^979 + 182874912150670935121 653284396*x^978 + 182663248180960374587876483522*x^977 + 1824444077067631583 78692581222*x^976 + 182218416319539285069423795299*x^975 + 18198530042747444 3733422142606*x^974 + 181745087250487817813115954032*x^973 + 181497804815090 164407718624924*x^972 + 181243481949093488940244517596*x^971 + 1809821482761 73672299768818019*x^970 + 180713834210287444253672583983*x^969 + 18043857094 9945133177491357196*x^968 + 180156390472340657945664976965*x^967 + 179867325 527340263153870499141*x^966 + 179571409631331533691789788099*x^965 + 1792686 77060934259043380343524*x^964 + 178959162846574751549429643604*x^963 + 17864 2902765925256214016440725*x^962 + 178319933337210122462306823356*x^961 + 177 990291812380440551905009500*x^960 + 177654016170158877093985674098*x^959 + 1 77311145108956475344086917477*x^958 + 176961718039663216566378830509*x^957 + 176605775078314168850290707633*x^956 + 176243357038633079255642873230*x^955 + 175874505424455294073166410630*x^954 + 175499262422031920303005481661*x^9 53 + 175117670892217169166205099633*x^952 + 174729774362540849565240772915*x ^951 + 174335617019168005891522642333*x^950 + 173935243698747720432914205544 *x^949 + 173528699880153125855286977583*x^948 + 1731160316761146978118663817 96*x^947 + 172697285824748921665728452012*x^946 + 17227250968098445058764022 4568*x^945 + 171841751207887894907100858137*x^944 + 171405058967891404542782 631979*x^943 + 170962482113924227613685328163*x^942 + 1705140703804504489285 47437228*x^941 + 170059874074415131962997269013*x^940 + 16959994406610110715 6422961295*x^939 + 169134331779898667888693081053*x^938 + 168663089184990453 326024915442*x^937 + 168186268785953814451088262892*x^936 + 1677039236132829 76010719079915*x^935 + 167216107213833322821529245754*x^934 + 16672287364119 0153865625503265*x^933 + 166224277445964261882242728311*x^932 + 165720373666 016709713266130437*x^931 + 165211217816615187488538166649*x^930 + 1646968658 80524346837956095019*x^929 + 164177374298032519689365750882*x^928 + 16365279 9956917239852110481957*x^927 + 163123200182351995494029280789*x^926 + 162588 632726756649793207033141*x^925 + 162049155759593975483618472571*x^924 + 1615 04827857114756714995786948*x^923 + 160955707992053918611071420996*x^922 + 16 0401855523280151136349363934*x^921 + 159843330185401499369549922151*x^920 + 159280192078329397031926851118*x^919 + 158712501656803624131105689806*x^918 + 158140319719880672856533119052*x^917 + 157563707400388008401914192673*x^91 6 + 156982726154346713194261569909*x^915 + 156397437750365004079760708953*x^ 914 + 155807904259005112355196587072*x^913 + 155214188042126016142075765648* x^912 + 154616351742204513480951662809*x^911 + 15401445827163712267821266945 7*x^910 + 153408570802025293869365396664*x^909 + 152798752753446412474531557 056*x^908 + 152185067783713071216617198040*x^907 + 1515675797776230826537935 36902*x^906 + 150946352836202698749179718365*x^905 + 15032145126594549786581 1481918*x^904 + 149692939568049392738227719940*x^903 + 149060882427654205437 658375711*x^902 + 148425344703082247120436288171*x^901 + 1477863914150843314 33699281803*x^900 + 147144087736093640853743969299*x^899 + 14649849897948985 4955813808935*x^898 + 145849690588875938665150144765*x^897 + 145197728127369 976923527453787*x^896 + 144542677266914429929173146601*x^895 + 1438846037776 05170177094497012*x^894 + 143223573517042648947770220056*x^893 + 14255965241 9707525671491499207*x^892 + 141892906486363078740143325635*x^891 + 141223401 773486700854891852185*x^890 + 140551204382732765894277289975*x^889 + 1398763 80450429137569991689849*x^888 + 139198996137109572814727068209*x^887 + 13851 9117617084254925681826137*x^886 + 137836811068050672976568474505*x^885 + 137 152142660747044918411963782*x^884 + 136465178548650462123382767550*x^883 + 1 35775984857721912894864506597*x^882 + 135084627676200321679575557358*x^881 + 134391173044447719382678073207*x^880 + 133695686944847638313409558705*x^879 + 132998235291758802886014023541*x^878 + 132298883921526164277939208547*x^8 77 + 131597698582551303813861637177*x^876 + 130894744925424205909707139318*x ^875 + 130190088493118376985198240350*x^874 + 129483794711251261846466728214 *x^873 + 128775928878411883661938903292*x^872 + 1280665561565576078151809918 09*x^871 + 127355741561481903627956486275*x^870 + 12664354995335495121578986 2889*x^869 + 125930046027338913577362414687*x^868 + 125215294304279666438707 628389*x^867 + 124499359121476750384154486515*x^866 + 1237823046235332814191 18664614*x^865 + 123064194753287527336093107174*x^864 + 12234509324282782810 5563507580*x^863 + 121625063604592508999182072000*x^862 + 120904169122556405 284569932163*x^861 + 120182472843505587120859373097*x^860 + 1194600375684018 42742881031714*x^859 + 118736925843838447161167767677*x^858 + 11801319995358 8712436170667198*x^857 + 117288921910248784119808850437*x^856 + 116564153446 976116707304512399*x^855 + 115838956009325028918840173276*x^854 + 1151133907 47180707345615099847*x^853 + 114387518506792994460112628872*x^852 + 11366139 9822911264217596989952*x^851 + 112935094911021655476846754716*x^850 + 112208 663659687900254739338083*x^849 + 111482165622996950413386990737*x^848 + 1107 55660013110572771967541038*x^847 + 110029205692924048850084327104*x^846 + 10 9302861168833081497329664898*x^845 + 108576684583609976556619337880*x^844 + 107850733709390133458716003042*x^843 + 107125065940769844264066035217*x^842 + 106399738288016366167526451083*x^841 + 105674807370391197873631204674*x^84 0 + 104950329409587455546595593360*x^839 + 104226360223282209252116742542*x^ 838 + 103502955218804605949002375668*x^837 + 102780169386920570169522346193* x^836 + 102058057295734838559864115866*x^835 + 10133667308471104944787992230 3*x^834 + 100616070458810573576089869125*x^833 + 998963026827507370952520428 26*x^832 + 99177422575383052869274569623*x^831 + 984594825041920411073137227 99*x^830 + 97742534379915185325002946576*x^829 + 970266296512845346552497402 88*x^828 + 96311819299890428591210025616*x^827 + 955981538351677853611176644 98*x^826 + 94885683289505360317746477326*x^825 + 941744572134783459854672815 60*x^824 + 93464524671204650756100688503*x^823 + 927559342358251586719351088 15*x^822 + 92048733985108238291162202051*x^821 + 913429714971787343082648643 23*x^820 + 90638693846371641410160565393*x^819 + 899359475992106257986354056 68*x^818 + 89234778810511525911173326810*x^817 + 885352330196109301359503602 70*x^816 + 87837355246719895752670347573*x^815 + 871411899894028399490924273 74*x^814 + 86446781219181600573446210886*x^813 + 857541723782646312952274617 14*x^812 + 85063406376401263070766686492*x^811 + 843745255878609312549856296 97*x^810 + 83687571848537235376288441004*x^809 + 830025864531766665068244188 81*x^808 + 82319610152731805324517046296*x^807 + 816386831518387623852462212 17*x^806 + 80959845106418600812218537015*x^805 + 802831351214024505735376575 40*x^804 + 79608591748579992766816274523*x^803 + 789362529845709618697229322 58*x^802 + 78266156268919283755845961185*x^801 + 775983384823094374242400836 69*x^800 + 76932835944904598856396324194*x^799 + 762696844148060962038780866 68*x^798 + 75608919086633676631067035446*x^797 + 749505745902260565977670995 73*x^796 + 74294684989461199173060957924*x^795 + 736412837811957341318684618 94*x^794 + 72990403894322909106016837032*x^793 + 723420776889484329490212622 20*x^792 + 71696336955683545734739927746*x^791 + 710532129150546234509820886 05*x^790 + 70412736217028599476205506927*x^789 + 697749369406534593466566245 42*x^788 + 69139844593813040138518242958*x^787 + 685074881130953410104894848 60*x^786 + 67877895863773527082203014170*x^785 + 672510956398987848682731259 05*x^784 + 66627114664504163951669275955*x^783 + 660059795899185164684416378 38*x^782 + 65387716498189623293321176366*x^781 + 647723509016155735669227767 54*x^780 + 64159907743383442394555273601*x^779 + 635504113983142901781582530 03*x^778 + 62943885673713486120625656819*x^777 + 623403538103253379695355092 13*x^776 + 61739838483390990048689872294*x^775 + 611423618038085320642969605 06*x^774 + 60547945319394242071326832194*x^773 + 599566100162438683475829397 19*x^772 + 59368376320192836751204912016*x^771 + 587832640983742524343154160 18*x^770 + 58201292660873547553819467752*x^769 + 576224807624786098622436377 21*x^768 + 57046846604524210779062923321*x^767 + 564744078368295357381150139 98*x^766 + 55905181559727604281168822910*x^765 + 553391843261853525230338815 14*x^764 + 54776432144013136251121363310*x^763 + 542169404781623990432632431 08*x^762 + 53660724253110236392846612780*x^761 + 531077978553295739207256510 20*x^760 + 52558175135843665329552327533*x^759 + 520118694128636038185557562 83*x^758 + 51468893474507529225656456538*x^757 + 509292595816002021992041880 05*x^756 + 50392979470551606223477594541*x^755 + 498600643563132283301055756 21*x^754 + 49330524935410659821314300798*x^753 + 488043713890511493097469682 16*x^752 + 48281613386304731842750853510*x^751 + 477622600873575498255127308 37*x^750 + 47246320146835973886115595691*x^749 + 467338017172001247351860840 24*x^748 + 46224712452205390461837199588*x^747 + 457190595104305275744557043 97*x^746 + 45216849558870928437747068918*x^745 + 447180887765956325743829097 44*x^744 + 44222782858466654588488442545*x^743 + 437309370189191972267971388 72*x^742 + 43242555995801314319169475856*x^741 + 427576440542715850307539986 49*x^740 + 42276204990753358010644252037*x^739 + 417982421369441216335898605 25*x^738 + 41323758363878554599144797043*x^737 + 408527560860438096734289127 36*x^736 + 40385237265545582329148273084*x^735 + 399212034163235154562362588 42*x^734 + 39460655608414491174876010789*x^733 + 390035944722623610810481333 96*x^732 + 38550020203072666988287886520*x^731 + 380999325652109053940779507 04*x^730 + 37653330896642890491165700724*x^729 + 372102141134157725588747157 55*x^728 + 36770580714178271002856095287*x^727 + 363344287847386841592559690 66*x^726 + 35901756002659241236406854905*x^725 + 354725596418853654292159701 45*x^724 + 35046836577408421303648013960*x^723 + 346245832899605240062019007 85*x^722 + 34205795870739992701075660239*x^721 + 337904700261660358707159052 82*x^720 + 33378601082661261728474897216*x^719 + 329701839914606129798714725 57*x^718 + 32565213333445331526102178819*x^717 + 321636833240005654245171000 34*x^716 + 31765587817895237500216132250*x^715 + 313709203141828024351078064 63*x^714 + 30979673961121526939995824086*x^713 + 305918415611129357357326535 96*x^712 + 30207415575657074525344895780*x^711 + 298263881303232499243603606 63*x^710 + 29448751019734915425352229975*x^709 + 290744957125673818988962185 32*x^708 + 28703613356557040870584787123*x^707 + 283360947835207988562712503 50*x^706 + 27971930514384431379082662296*x^705 + 276111107642185759256467758 44*x^704 + 27253625447281094019077791557*x^703 + 268994641820645437861631585 19*x^702 + 26548616296347515869449939286*x^701 + 262010708322485972750632041 69*x^700 + 25856816551281739747580957711*x^699 + 255158419394118215175849338 96*x^698 + 25178135212109203769016206881*x^697 + 248436843194020959155711278 81*x^696 + 24512476950925556751431904430*x^695 + 241845005409659717449684856 87*x^694 + 23859742273499860167984504414*x^693 + 235381890872258793909018172 54*x^692 + 23219827680588907519262263198*x^691 + 229046445167950995923356607 20*x^690 + 22592625828816826803714087264*x^689 + 222837576243864226297914885 47*x^688 + 21978025690977674358217835568*x^687 + 216754156007740132880201458 25*x^686 + 21375912715622371819341772263*x^685 + 210795021919716907569134958 52*x^684 + 20786168985795075410688860927*x^683 + 204958978574946144828149052 14*x^682 + 20208673376787891275542927186*x^681 + 199244799275752324331016874 31*x^680 + 19643301712786755235264017783*x^679 + 193651227592082903846633724 53*x^678 + 19089926922285273267207654855*x^677 + 188176978909037128085665047 68*x^676 + 18548419192147363293074930619*x^675 + 182820741960302408479298977 94*x^674 + 18018646120203642718718150552*x^673 + 177581180346368439655981274 88*x^672 + 17500472866270662786397650435*x^671 + 172456934036431023170520415 31*x^670 + 16993762301486293464805176307*x^669 + 167446620852939800890824134 43*x^668 + 16498375155858804652618166101*x^667 + 162548837937786693150281101 93*x^666 + 16014170163931464326351931037*x^665 + 157762163199174724930036264 49*x^664 + 15541004208468775426952480570*x^663 + 153085156738250042447738287 55*x^662 + 15078732462074794350466624662*x^661 + 148516362254623209087054568 82*x^660 + 14627208526658308587609587315*x^659 + 144054308429949261163647759 42*x^658 + 14186284570663993157383239759*x^657 + 139697510288779439294569983 86*x^656 + 13755811463993008931941442605*x^655 + 135444470535940930048595816 41*x^654 + 13335638910540844810473963944*x^653 + 131293680869744296329356161 07*x^652 + 12925615578284534158763839855*x^651 + 127243623270361486168885136 67*x^650 + 12525589226855688317625002656*x^649 + 123292771262760332301556950 98*x^648 + 12135406832540080772845079854*x^647 + 119439591153624234550805962 31*x^646 + 11754914710648779398453737576*x^645 + 115682543241728200742017601 26*x^644 + 11383958635210055818229763519*x^643 + 112020083001284558201200410 00*x^642 + 11022383955935495323789830209*x^641 + 108450662237813387204454435 51*x^640 + 10670035712417883054852734045*x^639 + 104972730216134021994412940 17*x^638 + 10326758745522547573211623804*x^637 + 101584734760114767897390062 90*x^636 + 9992397805937897006773249847*x^635 + 9828512332385825015118730417 *x^634 + 9666797659854881242834419301*x^633 + 9507234403403949858600748555*x ^632 + 9349803191749052031733434773*x^631 + 9194484670315294142250671575*x^6 30 + 9041259504242767329179456856*x^629 + 8890108381346289215572776913*x^628 + 8741012015028892951249263891*x^627 + 8593951147148982865902187994*x^626 + 8448906550841090022890954913*x^625 + 8305859033290174804755848706*x^624 + 8 164789438459437342410410207*x^623 + 8025678649771610118285108682*x^622 + 788 8507592743720426735159345*x^621 + 7753257237575323560193553672*x^620 + 76199 08601690220604351447300*x^619 + 7488442752231687567680515541*x^618 + 7358840 808511255237568829812*x^617 + 7231083944411091645010733600*x^616 + 710515339 0740051330053828102*x^615 + 6981030437543467729038227115*x^614 + 68586964363 66776950134135982*x^613 + 6738132802473072963956384852*x^612 + 6619321017014 705809364695836*x^611 + 6502242629159045799294755293*x^610 + 638687925816854 7906048418775*x^609 + 6273212595435261508434216413*x^608 + 61612244064699414 93115674890*x^607 + 6050896532845927318209530777*x^606 + 5942210894097967067 383598175*x^605 + 5835149489576173746329413411*x^604 + 572969440025531109951 1348867*x^603 + 5625827790499616052593541426*x^602 + 55235319097833745140782 39162*x^601 + 5422789094367476697700478284*x^600 + 5323581768932187354346979 975*x^599 + 5225892448166375328119815476*x^598 + 512970373831345567515032286 2*x^597 + 5034998338674306205472311952*x^596 + 4941759043067428727354987892* x^595 + 4849968741246633489726473040*x^594 + 4759610420276533331520598655*x^ 593 + 4670667165866141856865192408*x^592 + 4583122163660877561990990680*x^59 1 + 4496958700493283243646317999*x^590 + 4412160165592777219800725493*x^589 + 4328710051754759891733920680*x^588 + 4246591956469405972532680208*x^587 + 4165789583010479300930139870*x^586 + 4086286741484513551763927236*x^585 + 40 08067349840708345618851370*x^584 + 3931115434841896251043752351*x^583 + 3855 415132996941963747601662*x^582 + 3780950691454940539112325813*x^581 + 370770 6468861586948001540482*x^580 + 3635666936178094422053820055*x^579 + 35648166 77463044054349411261*x^578 + 3495140390617552925517059930*x^577 + 3426622888 094152635051753061*x^576 + 3359249097569774533954593655*x^575 + 329300406258 3242178952380823*x^574 + 3227872943137675561734893216*x^573 + 31638410162682 15510147688119*x^572 + 3100893676575480313438642702*x^571 + 3039016436725170 091873278504*x^570 + 2978194927914237713756204091*x^569 + 291841490030404816 1624822769*x^568 + 2859662223420951165668456239*x^567 + 28019228865246946578 72209905*x^566 + 2745182998945109156639199275*x^565 + 2689428790387495570402 747243*x^564 + 2634646611207151111742713053*x^563 + 258082293265347004255202 9620*x^562 + 2527944347084057827688202572*x^561 + 24759975681492989611585996 73*x^560 + 2424969430947820247136362035*x^559 + 2374846892153292669932767639 *x^558 + 2325617030113016174446131603*x^557 + 2277267044918732703586934896*x ^556 + 2229784258450113703798424725*x^555 + 2183156114391369016139163576*x^5 54 + 2137370178221424620588462479*x^553 + 2092414137178117097427325944*x^552 + 2048275800196852913915600845*x^551 + 2004943097824180739237400327*x^550 + 1962404082106724938054984419*x^549 + 1920646926455928195254697511*x^548 + 1 879659925489050883869711318*x^547 + 1839431494846874307028163466*x^546 + 179 9950170988554325428022803*x^545 + 1761204610964071126627813226*x^544 + 17231 83592164720003730021439*x^543 + 1685876012052086991203834988*x^542 + 1649270 887865952057044178481*x^541 + 1613357356311561275608098254*x^540 + 157812467 3226708006734294322*x^539 + 1543562213229061586576333429*x^538 + 15096594693 44180396415314224*x^537 + 1476406052614644420023999392*x^536 + 1443791691690 740530400977992*x^535 + 1411806232403131765357183932*x^534 + 138043963731793 9761001425752*x^533 + 1349681985274667315125118297*x^532 + 13195234709073857 51321933897*x^531 + 1289954404149609351891413472*x^530 + 1260965209723276625 664406856*x^529 + 1232546426612255578351065523*x^528 + 120468870752078746034 7235139*x^527 + 1177382818317280682639395106*x^526 + 11506196374638637180162 81807*x^525 + 1124390155432102844718100624*x^524 + 1098685474105287545418424 790*x^523 + 1073496806167683248520698185*x^522 + 104881547448114789363547722 5*x^521 + 1024632911449505521253541597*x^520 + 1000940658371066730502807634* x^519 + 977730364779682420923348149*x^518 + 954993787774713736854325083*x^51 7 + 932722791340297568727757309*x^516 + 910909345654283336723293467*x^515 + 889545526387213091259235266*x^514 + 868623513991713214067995021*x^513 + 8481 35592982662195504523968*x^512 + 828074151208495100624281311*x^511 + 80843167 9114001420787225362*x^510 + 789200768994969041423461874*x^509 + 770374114245 023042444367131*x^508 + 751944508595003987891697434*x^507 + 7339048453452262 58058875561*x^506 + 716248116590952832746085574*x^505 + 69896741244141875075 6423658*x^504 + 682055920232731250415547366*x^503 + 665506923734970340991802 941*x^502 + 649313802353809267575207721*x^501 + 633470030326970014386604133* x^500 + 617969175915824645754061434*x^499 + 602804900592448912209505831*x^49 8 + 587970958222430153397450724*x^497 + 573461194243727111797425611*x^496 + 559269544841874833664630602*x^495 + 545390036121823378085885507*x^494 + 5318 16783276694583600104798*x^493 + 518543989753736656387481853*x^492 + 50556594 6417751846505227331*x^491 + 492877030712267970928353556*x^490 + 480471705818 720026101888079*x^489 + 468344519813903610157920988*x^488 + 4564901048259573 47700218738*x^487 + 444903176189126979884922276*x^486 + 43357853159755925117 2913481*x^485 + 422511050258369193312999975*x^484 + 411695692044219878520484 895*x^483 + 401127496645649189098194395*x^482 + 390801582723373631531533406* x^481 + 380713147060794710969986492*x^480 + 370857463716928878548297480*x^47 9 + 361229883179977570734063420*x^478 + 351825831521749378316317263*x^477 + 342640809553141914242300802*x^476 + 333670391980886495706174741*x^475 + 3249 10226565754318101580320*x^474 + 316356033282418378045947378*x^473 + 30800360 3481161001012842964*x^472 + 299848799051612447482438509*x^471 + 291887551588 701711220628744*x^470 + 284115861560996285574045609*x^469 + 2765297974816033 59739047744*x^468 + 269125495081800618013898896*x^467 + 26189915648756055222 9262414*x^466 + 254847049399127961995673781*x^465 + 247965506273806110199053 830*x^464 + 241250923512102823376307194*x^463 + 234699760647383679240878310* x^462 + 228308539539175307699717695*x^461 + 222073843570257748174099199*x^46 0 + 215992316847680755841646881*x^459 + 210060663407834933459299851*x^458 + 204275646425704584579430695*x^457 + 198634087428425239075904644*x^456 + 1931 32865513264893764958868*x^455 + 187768916570144140318480840*x^454 + 18253923 2508806520375500522*x^453 + 177440860490746654482457411*x^452 + 172470902165 999937925293777*x^451 + 167626512914893883318377068*x^450 + 1629049010948575 17619103395*x^449 + 158303327292381610646179576*x^448 + 15381910358021892376 8640612*x^447 + 149449592779910121747731649*x^446 + 145192207729717488272722 179*x^445 + 141044410558045127024415798*x^444 + 137003711962420915588788621* x^443 + 133067670494112109662676448*x^442 + 129233891848443170151510225*x^44 1 + 125500028160881106336793025*x^440 + 121863777308950394642909660*x^439 + 118322882220036344987449066*x^438 + 114875130185132645559219261*x^437 + 1115 18352178585722410839085*x^436 + 108250422183885502730417191*x^435 + 10506925 6525549170296871227*x^434 + 101972813207141548629030397*x^433 + 989590912554 72841888936710*x^432 + 96026130071011605850221263*x^431 + 931720087845480113 25337077*x^430 + 90394845620139700470162471*x^429 + 876927972643698224379438 28*x^428 + 85064058241944169001518939*x^427 + 82506860297651713046338622*x^4 26 + 80019471784710283278758517*x^425 + 77600197059516587095263480*x^424 + 7 5247375882817320299058793*x^423 + 72959382827315677191050622*x^422 + 7073462 6691725197443174392*x^421 + 68571549921280557004550454*x^420 + 6646862803471 2628997403164*x^419 + 64424369057692907013950886*x^418 + 6243731296275019729 3379423*x^417 + 60506031115660347787723733*x^416 + 5862912572830769094794645 2*x^415 + 56805229318014832990846932*x^414 + 55033004173335425241394197*x^41 3 + 53311141826302602665403941*x^412 + 51638362531123870680362239*x^411 + 50 013414749311363508678641*x^410 + 48435074641234585454039338*x^409 + 46902145 564080980259822117*x^408 + 45413457576207952856822901*x^407 + 43967866947868 292020435479*x^406 + 42564255678289311416453220*x^405 + 41201531019084439888 691646*x^404 + 39878625003974449287276341*x^403 + 38594493984794009298466976 *x^402 + 37348118173757803248618393*x^401 + 36138501191959026338598099*x^400 + 34964669624071717832332676*x^399 + 33825672579227050975550505*x^398 + 327 20581258032418449787996*x^397 + 31648488525700906554443397*x^396 + 306085084 91257547629147273*x^395 + 29599776092787577044348512*x^394 + 286214466886907 97955874799*x^393 + 27672695654905073487491394*x^392 + 267527179880609216147 91566*x^391 + 25860727914528182307583992*x^390 + 24995958505314758972981519* x^389 + 24157661296776506447898379*x^388 + 23345105917096445231818330*x^387 + 22557579718490625836982630*x^386 + 21794387415097147566684231*x^385 + 2105 4850726504052211252702*x^384 + 20338308026871064569015815*x^383 + 1964411399 9599437845143050*x^382 + 18971639297503482339934199*x^381 + 1832027020843670 9891268995*x^380 + 17689408326324913761697541*x^379 + 1707847022755792353412 2218*x^378 + 16486887152691226573589929*x^377 + 15914104693408131196372986*x ^376 + 15359582484692661329169804*x^375 + 14822793902162917607012247*x^374 + 14303225764514215012935548*x^373 + 13800378041020911769049473*x^372 + 13313 763564045477709818966*x^371 + 12842907746503012265942665*x^370 + 12387348304 229111922655080*x^369 + 11946634983198704050909200*x^368 + 11520329291543207 805208067*x^367 + 11108004236313152799740189*x^366 + 10709244064933181977484 928*x^365 + 10323644011296185938541584*x^364 + 9950810046443161458690994*x^3 63 + 9590358633775256473085186*x^362 + 9241916488744356890543445*x^361 + 890 5120342968486710598662*x^360 + 8579616712718231509610854*x^359 + 82650616717 20355917618663*x^358 + 7961120628224767700261160*x^357 + 7667468106280983968 850408*x^356 + 7383787531170278348134657*x^355 + 7109771018939731120120799*x ^354 + 6845119169984466921396262*x^353 + 6589540866624445991970172*x^352 + 6 342753074622274750569333*x^351 + 6104480648588619103132259*x^350 + 587445614 1221938880387654*x^349 + 5652419616329413653367698*x^348 + 54381184655760984 03167082*x^347 + 5231307228909531638225506*x^346 + 5031747418607218078365433 *x^345 + 4839207346894622483843400*x^344 + 4653461957081540128588346*x^343 + 4474292658164952333273357*x^342 + 4301487162846731924536542*x^341 + 4134839 328914833015251847*x^340 + 3974149003936881656157892*x^339 + 381922187321537 8245576866*x^338 + 3669869310954028660974727*x^337 + 35259082345850384587821 39*x^336 + 3387160962207532747827636*x^335 + 3253455073087603053187699*x^334 + 3124623271170831233208738*x^333 + 3000503251558498880669638*x^332 + 28809 37569899058223153952*x^331 + 2765773514646816937230772*x^330 + 2654862982140 174111522571*x^329 + 2548062354452137446716846*x^328 + 244523237996625228368 5050*x^327 + 2346238056631480827859165*x^326 + 2250948517849984618798729*x^3 25 + 2159236920952184514573740*x^324 + 2070980338213899863537050*x^323 + 198 6059650370801769867600*x^322 + 1904359442585854078819312*x^321 + 18257679028 25859574097804*x^320 + 1750176722603677560714406*x^319 + 1677481000043132175 870415*x^318 + 1607579145224088108078948*x^317 + 1540372787765631597355499*x ^316 + 1475766686605759329764705*x^315 + 1413668641936445827106135*x^314 + 1 353989409253430872599936*x^313 + 1296642615480542117966574*x^312 + 124154467 7128844004473366*x^311 + 1188614720451382224835678*x^310 + 11377745035547728 85088180*x^309 + 1088948340429367032719950*x^308 + 1042063026860204042774077 *x^307 + 997047768181451246737604*x^306 + 953834108837511905563902*x^305 + 9 12355863714468929900342*x^304 + 872549051206017405478956*x^303 + 83435182797 8524763685044*x^302 + 797704425400343126606057*x^301 + 762549087600983738435 562*x^300 + 728830011126248262972800*x^299 + 696493286155895878032155*x^298 + 665486839250908335631893*x^297 + 635760377597897291448681*x^296 + 60726533 4718679053539812*x^295 + 579954817613521279785839*x^294 + 553783555307043892 574361*x^293 + 528707848766232410199859*x^292 + 504685522160495855091049*x^2 91 + 481675875434173232558872*x^290 + 459639638162362128951442*x^289 + 43853 8924661410108913274*x^288 + 418337190325874157155591*x^287 + 398999189164215 275240911*x^286 + 380490932505954377996794*x^285 + 362779648853471711999819* x^284 + 345833744852085019811573*x^283 + 329622767352491482933334*x^282 + 31 4117366540104983262466*x^281 + 299289260106263321453188*x^280 + 285111198436 719619990047*x^279 + 271556930793268122593138*x^278 + 2586011724647868879699 63*x^277 + 246219572864408377575099*x^276 + 234388684549953571009607*x^275 + 223085933145185930393226*x^274 + 212289588139858202134131*x^273 + 201978734 546937620840273*x^272 + 192133245395803499598413*x^271 + 1827337550406153914 47311*x^270 + 173761633263449930486935*x^269 + 165198960152200053455392*x^26 8 + 157028501733621513312567*x^267 + 149233686342298378641828*x^266 + 141798 581706681523391857*x^265 + 134707872733731911049549*x^264 + 1279468399740737 29649530*x^263 + 121501338749931106362645*x^262 + 115357778928486193351534*x ^261 + 109503105323655843954850*x^260 + 103924778709638867035281*x^259 + 986 10757429935937548800*x^258 + 93549479585889636110466*x^257 + 887298457891327 75514026*x^256 + 84141202462669136621651*x^255 + 79773325675641971358031*x^2 54 + 75616405497172130994215*x^253 + 71661030854969440383090*x^252 + 6789817 4884737962745316*x^251 + 64319180756708086905895*x^250 + 6091574796593592384 6915*x^249 + 57679919073313328693715*x^248 + 54604066884529976662791*x^247 + 51680882054522328122534*x^246 + 48903361105233031913330*x^245 + 46264794844 788352641368*x^244 + 43758757176480583970011*x^243 + 41379094286217145054374 *x^242 + 39119914197368172103159*x^241 + 36975576682209934278221*x^240 + 349 40683519422347129414*x^239 + 33010069087355253518898*x^238 + 311787912830300 19096386*x^237 + 29442122757090375934921*x^236 + 27795542455159374462636*x^2 35 + 26234727456297802251983*x^234 + 24755545099493531801650*x^233 + 2335404 5389341002681052*x^232 + 22026453672295462023383*x^231 + 2076916357510771822 1060*x^230 + 19578730197262043760628*x^229 + 18451863549452533434352*x^228 + 17385422230341723667736*x^227 + 16376407334049648320985*x^226 + 15421956581 021787850409*x^225 + 14519338665120604771539*x^224 + 13665947809977592343622 *x^223 + 12859298527831039415928*x^222 + 12097020574259077238761*x^221 + 113 76854092398069175828*x^220 + 10696644940413077673814*x^219 + 100543401961600 41103045*x^218 + 9447983833148463228467*x^217 + 8875712562078907603171*x^216 + 8335751832391446007396*x^215 + 7826411988419482462933*x^214 + 73460845748 98110943125*x^213 + 6893238786727414568473*x^212 + 6466418058038925974620*x^ 211 + 6064236785757892024613*x^210 + 5685377182995070650141*x^209 + 53285862 57739583028967*x^208 + 4992672912458900328665*x^207 + 4676505160343410736123 *x^206 + 4379007454061239357408*x^205 + 4099158123014130734863*x^204 + 38359 86915207301090846*x^203 + 3588572639965274825933*x^202 + 3356040907841887053 433*x^201 + 3137561964185910718181*x^200 + 2932348612934202672533*x^199 + 27 39654227311907357762*x^198 + 2558770844224158676226*x^197 + 2389027339225929 246710*x^196 + 2229787679056240293750*x^195 + 2080449248819913464651*x^194 + 1940441250994466158964*x^193 + 1809223173531672468344*x^192 + 1686283324412 780224849*x^191 + 1571137430103438280105*x^190 + 1463327295439093978231*x^18 9 + 1362419522554015471562*x^188 + 1268004286547223311142*x^187 + 1179694165 656526480965*x^186 + 1097123023787595184851*x^185 + 1019944943318611264163*x ^184 + 947833206172561714341*x^183 + 880479321218725521600*x^182 + 817592096 132392641648*x^181 + 758896751907389602818*x^180 + 704134078279611668462*x^1 79 + 653059628381518979011*x^178 + 605442951007485354198*x^177 + 56106685892 8034703838*x^176 + 519726731747401988561*x^175 + 481229851853553584143*x^174 + 445394772062835398957*x^173 + 412050713612825302166*x^172 + 3810369932067 87927950*x^171 + 352202477861402769485*x^170 + 325405066356198156221*x^169 + 300511196128411155489*x^168 + 277395374500843033109*x^167 + 255939733172727 465374*x^166 + 236033604944709471470*x^165 + 217573121688781721086*x^164 + 2 00460832612475590342*x^163 + 184605341903790646507*x^162 + 16992096487930112 6600*x^161 + 156327401792633856996*x^160 + 143749428494100792753*x^159 + 132 116603164722221302*x^158 + 121362988379224393730*x^157 + 1114268877828680713 38*x^156 + 102250596696191795198*x^155 + 93780165989964630297*x^154 + 859651 78599866172579*x^153 + 78758538076674649224*x^152 + 72116268593074348588*x^1 51 + 65997325852618194606*x^150 + 60363418369926292298*x^149 + 5517883861389 2434119*x^148 + 50410303527533049649*x^147 + 46026803959171546695*x^146 + 41 999462559929542630*x^145 + 38301399722018706896*x^144 + 34907607151115893867 *x^143 + 31794828684182488191*x^142 + 28941447981478449669*x^141 + 263273827 38243963300*x^140 + 23933985077597903736*x^139 + 21743947801653048953*x^138 + 19741216192693173685*x^137 + 17910905070516384621*x^136 + 1623922082574141 5461*x^135 + 14713388162017699209*x^134 + 13321581292694032027*x^133 + 12052 859349602234421*x^132 + 10897105773218647191*x^131 + 9844971464594372643*x^1 30 + 8887821490111249380*x^129 + 8017685140340563814*x^128 + 722720915407096 1339*x^127 + 6509613927946015419*x^126 + 5858652541125123701*x^125 + 5268572 432968103115*x^124 + 4734079579957930629*x^123 + 4250305025931013150*x^122 + 3812773627193276690*x^121 + 3417374881275973495*x^120 + 3060335714939780009 *x^119 + 2738195113581500497*x^118 + 2447780480446148639*x^117 + 21861856200 09652790*x^116 + 1950750245584879850*x^115 + 1739040916626724377*x^114 + 154 8833316380963848*x^113 + 1378095785446418477*x^112 + 1224974031510342794*x^1 11 + 1087776939982278611*x^110 + 964963414500878489*x^109 + 8551301803302366 97*x^108 + 757000487505526859*x^107 + 669413654240449252*x^106 + 59131539457 9071198*x^105 + 521748877569770815*x^104 + 459846468366578159*x^103 + 404822 104630406505*x^102 + 355964264416391939*x^101 + 312629484400483356*x^100 + 2 74236389824985400*x^99 + 240260199935164200*x^98 + 210227674943268675*x^97 + 183712472698171725*x^96 + 160330885263858960*x^95 + 139737927523546800*x^94 + 121623751733457400*x^93 + 105710363656182600*x^92 + 91748617512913200*x^9 1 + 79515468511191440*x^90 + 68811463134684900*x^89 + 59458448728028700*x^88 + 51297485177122800*x^87 + 44186942677323600*x^86 + 38000770702498296*x^85 + 32626924340528840*x^84 + 27965935149024720*x^83 + 23929614612052080*x^82 + 20439879147794485*x^81 + 17427686431277403*x^80 + 14832073558533960*x^79 + 12599288291657880*x^78 + 10682005290753420*x^77 + 9038619861406740*x^76 + 76 32612327410136*x^75 + 6431976680401800*x^74 + 5408707663065150*x^73 + 453834 0912686850*x^72 + 3799541229226200*x^71 + 3173734438530120*x^70 + 2644778698 775100*x^69 + 2198671448379300*x^68 + 1823288518168200*x^67 + 15081522310774 00*x^66 + 1244225590638855*x^65 + 1023729916348425*x^64 + 839983521106400*x^ 63 + 687259244541600*x^62 + 560658857389200*x^61 + 456002537343216*x^60 + 36 9731787035040*x^59 + 298824321028320*x^58 + 240719591939480*x^57 + 193253756 909160*x^56 + 154603005527328*x^55 + 123234279768160*x^54 + 97862516286480*x ^53 + 77413632286320*x^52 + 60992558771040*x^51 + 47855699958816*x^50 + 3738 7265592825*x^49 + 29078984349975*x^48 + 22512762077400*x^47 + 17345898649800 *x^46 + 13298522298180*x^45 + 10142940735900*x^44 + 7694644696200*x^43 + 580 4731963800*x^42 + 4353548972850*x^41 + 3245372870670*x^40 + 2403979904200*x^ 39 + 1768966344600*x^38 + 1292706174900*x^37 + 937845656300*x^36 + 675248872 536*x^35 + 482320623240*x^34 + 341643774795*x^33 + 239877544005*x^32 + 16687 1334960*x^31 + 114955808528*x^30 + 78378960360*x^29 + 52860229080*x^28 + 352 40152720*x^27 + 23206929840*x^26 + 15084504396*x^25 + 9669554100*x^24 + 6107 086800*x^23 + 3796297200*x^22 + 2319959400*x^21 + 1391975640*x^20 + 81880920 0*x^19 + 471435600*x^18 + 265182525*x^17 + 145422675*x^16 + 77558760*x^15 + 40116600*x^14 + 20058300*x^13 + 9657700*x^12 + 4457400*x^11 + 1961256*x^10 + 817190*x^9 + 319770*x^8 + 116280*x^7 + 38760*x^6 + 11628*x^5 + 3060*x^4 + 6 80*x^3 + 120*x^2 + 15*x + 1 78[][;][]~ gp2c-0.0.14/test/input/0000755000175000017500000000000013653241564011557 500000000000000gp2c-0.0.14/test/input/trunc0000644000175000017500000000002611751724575012560 00000000000000f(Pi) g(Pi) h(Pi) k() gp2c-0.0.14/test/input/sumprod0000644000175000017500000000003312141547407013103 00000000000000f(10) g(100) h(1000) k(36) gp2c-0.0.14/test/input/args0000644000175000017500000000026613614057635012363 00000000000000f(1) g(,[[5,4,1,2,3],[5,1,4,3,2],[5,3,1,4,2],[5,1,2,4,3],[5,1,3,2,4]]) g([2,5,4,1,3],) g([2,5,4,1,3],[[5,4,1,2,3],[5,1,4,3,2],[5,3,1,4,2],[5,1,2,4,3],[5,1,3,2,4]]) testh() s("ab") gp2c-0.0.14/test/input/gerepile0000644000175000017500000000016013653241564013213 00000000000000f1() f2() g1() g2() h1() h2() k1() k2() l1() l2() m1() m2() n1() n2() o1("gp2c") k(Vecsmall([1,2,3,4])) gp2c-0.0.14/test/input/cleanvar0000644000175000017500000000000513162716330013201 00000000000000f(1) gp2c-0.0.14/test/input/multiassign0000644000175000017500000000016713623476440013765 00000000000000f([3,4]) g([4,5]) h1(Vecsmall([5,6])) h2(Vecsmall([6,7])) k(5) l1(0) l1(1) l2(0) l2(1) m1([1,2,3,4,5]) m2([1,2,3,4,5]) gp2c-0.0.14/test/input/while0000644000175000017500000000011613623476440012530 00000000000000f(0); f(5); g(0); g(5); h([3,4,5]) k([4,5,6,7]) l([1,0,1,0,0]) m([0,0,1,0,0]) gp2c-0.0.14/test/input/forstep0000644000175000017500000000011213623476440013076 00000000000000f(100) g(-2) g(2) h() k([2,3,5,7],100) k([1,-1,2],10) k([1,1,-3],-10) l() gp2c-0.0.14/test/input/print0000644000175000017500000000003211751724575012556 00000000000000f(x^4+1) f(mathilbert(3)) gp2c-0.0.14/test/input/matrix0000644000175000017500000000006212141547407012720 00000000000000testswap() swaprow(vandermonde([1,2,3])) sideef() gp2c-0.0.14/test/input/return0000644000175000017500000000012513614057635012740 00000000000000f(1+2)+10! g(0) h([1,2]) h([1,2,3;4,5,6]) k(5) t1(1) t2(1) t3(1) t4(1) init(4);foo() gp2c-0.0.14/test/input/cast0000644000175000017500000000004613623476440012354 00000000000000f(45) g(1.3,1.8) h([Vecsmall([0,0])]) gp2c-0.0.14/test/input/forprime0000644000175000017500000000004713614057635013247 00000000000000f(50000) fs(50000) mf(11) check(11,11) gp2c-0.0.14/test/input/install0000644000175000017500000000021512141547407013062 00000000000000v=buildkey(128); publickey=v[1]; privatekey=v[2]; clear=gp2crand(2^128) crypted=crypt(clear,publickey) decrypted=decrypt(crypted,privatekey) gp2c-0.0.14/test/input/moveblock0000644000175000017500000000010611751724575013405 00000000000000f([3,1,4,1,5]) g(2) k(12) l([1,2,3]) l([4,5,6]) m(12) o([1,2,3]) n(3) gp2c-0.0.14/test/input/multiif0000644000175000017500000000005013614057635013067 00000000000000for(i=1,4,f(i)); for(i=1,4,g([i,i+1])); gp2c-0.0.14/test/input/upto0000644000175000017500000000001012141547407012374 00000000000000h() p() gp2c-0.0.14/test/input/read0000644000175000017500000000024613614057635012340 00000000000000\\?randprime \\?buildkey v=buildkey(128); publickey=v[1]; privatekey=v[2]; clear=gp2crand(2^128) crypted=crypt(clear,publickey) decrypted=decrypt(crypted,privatekey) gp2c-0.0.14/test/input/break0000644000175000017500000000006213646611246012504 00000000000000f(65) for(i=2,20,print(Miller_Rabin(i))) Pzaks(4) gp2c-0.0.14/test/input/affect0000644000175000017500000000021313614057540012642 00000000000000f(5) f(3) A=[1,2];B=mathilbert(4); g(A,B) A print(B) th() ml(2) B=matpascal(1) col(B,1,A~) B lin(B,2,A) B col(B,-1,A) v=[4,9,1,3]; tr(v) v gp2c-0.0.14/test/input/initfunc0000644000175000017500000000036613623476440013246 00000000000000init_initfunc(); print(pow_M(2)) vector(100,i,mybfffo(i)) vector(31,i,mybfffo(1<<(i-1))) for(i=1,5,count();aff()) init_initfunc();f1(0) init_initfunc();f1(1) init_initfunc();f2(0) init_initfunc();f2(1) init_initfunc();f3(0) init_initfunc();f3(1) gp2c-0.0.14/test/input/dot0000644000175000017500000000004112141547407012177 00000000000000default(realprecision,38); dot() gp2c-0.0.14/test/input/if0000644000175000017500000000012113162716330012003 00000000000000f(0,0) f(0,1) f(1,0) f(1,1) f([1,2,3],1) g(0,2) g(1,2) h(0,3) h(1,3) pile() j(2) gp2c-0.0.14/test/input/forvec0000644000175000017500000000006712162636065012707 00000000000000g(3,0) g(3,1) g(3,2) h(3,0) h(3,1) h(3,2) FV(2) fv(72) gp2c-0.0.14/test/input/vector0000644000175000017500000000001211751724575012722 00000000000000f(15) g() gp2c-0.0.14/test/input/foreach0000644000175000017500000000007413623476440013032 00000000000000t([]); t(List()); t(Mat()); t(primes([1,100])); t(matid(3)) gp2c-0.0.14/test/input/member0000644000175000017500000000003113162716330012654 00000000000000polmod(Mod(x^2+1,x^3-2)) gp2c-0.0.14/test/Makefile.am0000644000175000017500000000020613661773534012400 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.14/scripts/0000755000175000017500000000000014700755151011124 500000000000000gp2c-0.0.14/scripts/Makefile.in0000644000175000017500000003576314676603632013137 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = scripts ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = 822_desc.pl runtest dotest gp2c-run gp2c-dbg CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/822_desc.pl.in $(srcdir)/Makefile.in \ $(srcdir)/dotest.in $(srcdir)/gp2c-dbg.in \ $(srcdir)/gp2c-run.in $(srcdir)/runtest.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ bin_SCRIPTS = gp2c-run @GP2C_DBG@ EXTRA_SCRIPTS = gp2c-dbg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu scripts/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 822_desc.pl: $(top_builddir)/config.status $(srcdir)/822_desc.pl.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ runtest: $(top_builddir)/config.status $(srcdir)/runtest.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ dotest: $(top_builddir)/config.status $(srcdir)/dotest.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-run: $(top_builddir)/config.status $(srcdir)/gp2c-run.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-dbg: $(top_builddir)/config.status $(srcdir)/gp2c-dbg.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-binSCRIPTS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/scripts/gp2c-dbg.in0000644000175000017500000000275013614057635012772 00000000000000#!/bin/sh -e #Copyright (C) 2001-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP is free software; you can redistribute it and/or modify it under the #terms of the GNU General Public License as published by the Free Software #Foundation. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. name="stdin"; for p in "$@"; do case "$p" in -h|--help) cat < Compile file.gp with gp2c and launch a debugger session of gp with functions of file.gp added. are passed to gp2c ENVIRONMENT: GP2C: path to the GP2C compiler, default: @mybindir@/gp2c GP_DBG: path to the GP calculator, default: @GP_PATH@ GP2C_DBG: command to start the debugger, default: gdb --args EOF exit ;; -l|-t|-v) exec $GP2C "$@" ;; -*) ;; #We discard options *) name=$p;; esac done if test "x$GP2C" = "x"; then GP2C="@mybindir@/gp2c" fi if test "x$GP_DBG" = "x"; then GP_DBG="@GP_PATH_DBG@" fi if test "x$GP2C_DBG" = "x"; then GP2C_DBG="gdb --args" fi case $name in *.c) name=${name%.c};; *) $GP2C "$@" >$name.c;; esac command=`printf "@PARI_MODULE_DEBUG@" $name $name $name $name` eval $command || exit $? grep "^GP;" $name.c | sed 's/^GP;//' >$name.run $GP2C_DBG $GP_DBG $name.run gp2c-0.0.14/scripts/gp2c-run.in0000755000175000017500000000274013614057635013044 00000000000000#!/bin/sh -e #Copyright (C) 2001-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP is free software; you can redistribute it and/or modify it under the #terms of the GNU General Public License as published by the Free Software #Foundation. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. name="stdin"; for p in "$@"; do case "$p" in -h|--help) cat < Compile file.gp with gp2c and launch a gp session with functions of file.gp added. are passed to gp2c gp2c-run Compile file.c and launch a gp session with functions of file.c added. ENVIRONMENT: GP2C: path to the gp2c compiler, default: @mybindir@/gp2c GP: path to the gp calculator, default: @GP_PATH@ EOF exit ;; -l|-t|-v) exec $GP2C "$@" ;; -o) echo "gp2c-run does not support option -o" 1>&2; exit 1;; -*) ;; #We discard options *) name=$p;; esac done if test "x$GP2C" = "x"; then GP2C="@mybindir@/gp2c" fi if test "x$GP" = "x"; then GP="@GP_PATH@" fi case $name in *.c) name=${name%.c};; *) $GP2C -o $name.c "$@" ;; esac command=`echo "@PARI_MODULE_BUILD@" | sed -e "s %s $name g"` eval $command || exit $? grep "^GP;" $name.c | sed 's/^GP;//' >$name.run $GP $name.run gp2c-0.0.14/scripts/runtest.in0000644000175000017500000000074313623476440013110 00000000000000#! /bin/sh -e MAJORVER=`echo "@PARI_VERSION@" | cut -d. -f1` MINORVER=`echo "@PARI_VERSION@" | cut -d. -f2` echo Running test traditional scripts/dotest test if test $MAJORVER -gt 2 || test $MINORVER -gt 4; then echo Running test closure scripts/dotest test2 fi if test $MAJORVER -gt 2 || test $MINORVER -gt 6; then echo Running test ranges scripts/dotest test3 fi if test $MAJORVER -gt 2 || test $MINORVER -gt 9; then echo Running test iterators scripts/dotest test4 fi gp2c-0.0.14/scripts/822_desc.pl.in0000644000175000017500000001151713623476440013330 00000000000000#! @PERL_PATH@ #Copyright (C) 2003-2013 The PARI group. # #This file is part of the GP2C package. # #PARI/GP is free software; you can redistribute it and/or modify it under the #terms of the GNU General Public License as published by the Free Software #Foundation. It is distributed in the hope that it will be useful, but WITHOUT #ANY WARRANTY WHATSOEVER. # #Check the License for details. You should have received a copy of it, along #with the package; see the file 'COPYING'. If not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #This is the description compiler for gp2c. BEGIN { $pari_desc=shift @ARGV; $compat_desc=shift @ARGV; $override_desc=shift @ARGV; -f "@PARI_DATADIR@/PARI/822.pm" || exit 1; -f $pari_desc || exit 1; } use lib "@PARI_DATADIR@"; use PARI::822; PARI::822::read(\%funcs,$override_desc,0) if defined($override_desc); PARI::822::read(\%funcs,$pari_desc,0); PARI::822::read(\%funcs,$compat_desc,0) if defined($compat_desc); %accepted_class=( ''=>1, 'basic'=>1, 'gp'=>1,'highlevel'=>1, 'symbolic_operators'=>1, 'member_functions'=>1, 'gp2c'=>1, 'gp2c_internal'=>1); %accepted_command= ( 'add'=>1, 'sub'=>1, 'neg'=>1, 'mul'=>1, 'div'=>1, 'mod'=>1, 'and'=>1, 'or'=>1, 'xor'=>1, 'not'=>1, 'parens'=>1, 'stdref'=>1, 'value'=>1, 'type'=>1, 'nbarg'=>1, 'str_format'=>1, 'str_raw'=>1, 'cast'=>1, 'code'=>1, 'prec'=>1, 'bitprec'=>1, 'format_string'=>1,'format_args'=>1, 'cookie' => 1, 'wrapper' => 1 ); sub check_cname { my ($gpname, $cname) = @_; while($cname =~ /\$\{([^}]*)\}(.*)/) { my ($rpl) = $1; $cname = $2; for (split(' ', $rpl)) { /^-?[0-9]+$/ and next; /^:[a-z_A-Z]+$/ and next; defined($accepted_command{$_}) and next; print STDERR "Warning: $gpname unsupported command $_, skipped\n"; return 0; } } return 1; } for $gpname (sort keys %funcs) { my $f=$funcs{$gpname}; next unless (defined($accepted_class{$f->{'Class'}})); my $description=$f->{'Description'}; my $proto=$f->{'Prototype'}; my $wrapper=$f->{'Wrapper'}; my $iterator=$f->{'Iterator'}; print "$gpname\n"; my @entry=(); if (defined($description)) { my @rules = split("\n",$description); @rules = grep { $_ !~ /^[ \n\t]*$/ } @rules; my @erules = (); push @erules, join("\n",0,scalar(@rules)); foreach (@rules) { /^[ \n\t]* \(([^)]*)\) (?::([A-Za-z0-9_:]*))? [ \n\t]* ([^\n]*) [ \n\t]*$/x or die "badly formatted description $_"; my $arglist=$1; my $cname=$3; my $typelist=$2; $arglist =~ tr/ \n\t//d; my @args=split(',',$arglist,-1); my @type=split(':',$typelist,-1); $cname =~ s/\$%([0-9]+)/\${$1 str_format}/g; $cname =~ s/\$#/\${nbarg}/g; $cname =~ s/\$\(([0-9]+)\)/\${parens $1 code}/g; $cname =~ s/\$([0-9]+)/\${$1 code}/g; $cname =~ s/\$([a-z_A-Z]+):([0-9]+)/\${$2 :$1 cast}/g; $cname =~ s/\$\(([a-z_A-Z]+):([0-9]+)\)/\${parens $2 :$1 cast}/g; $cname =~ s/\$prec\b/\${prec}/g; $cname =~ s/\$bitprec\b/\${bitprec}/g; check_cname($gpname,$cname) or next; push @erules, join("\n",$cname,scalar(@args),@args,scalar(@type),@type); } push @entry, join("\n",@erules); } if (defined($proto)) { $type="gen"; $type="void" if ($proto =~ /^v/); $type="small" if ($proto =~ /^l/); $type="small_int" if ($proto =~ /^i/); $type="usmall" if ($proto =~ /^u/); @type=($type); push @type,"copy" if ($proto =~ /^m/); push @type,"prec" if ($proto =~ /[pb]/); $proto =~ s/^[uilmv]//; $proto =~ s/\\n.*$//; push @entry, join("\n",1,$f->{'C-Name'},$proto,scalar(@type),@type); } if (defined($wrapper)) { $wrapper =~ tr/ \n\t//d; $wrapper =~ m/^\(([^)]*)\)/ or die "badly formatted wrapper $wrapper"; my $wraplist=$1; my @wrap=map { ($_ eq "" || $_ eq "_") ? "$_":"_wrap_$_"; } split(',',$wraplist,-1); push @entry, join("\n",2,scalar(@wrap),@wrap); } if (defined($iterator)) { my @rules = split("\n",$iterator); @rules = grep { $_ !~ /^[ \n\t]*$/ } @rules; my @erules = (); push @erules, join("\n",3,scalar(@rules)); foreach (@rules) { /^[ \n\t]* \(([^)]*)\) (?::([A-Za-z0-9_:]*))? [ \n\t]* \(([^\n]*)\) [ \n\t]*$/x or die "badly formatted iterator $_"; my $arglist=$1; my $iterlist=$3; my $typelist=$2; $arglist =~ tr/ \n\t//d; $iterlist =~ tr/ \n\t//d; my @args=split(',',$arglist,-1); my @type=split(':',$typelist,-1); my @iter=split(',',$iterlist,-1); push @erules, join("\n",scalar(@iter),@iter, scalar(@args),@args, scalar(@type),@type); } push @entry, join("\n",@erules); } print scalar(@entry),"\n"; print join("\n",@entry)."\n" if (@entry); } gp2c-0.0.14/scripts/dotest.in0000755000175000017500000000227313661772655012722 00000000000000#! /bin/sh -e suite=${1:-"test"} bugs=0 testdir=`cd "$srcdir/$suite" && pwd` cd $suite RUNTEST=${RUNTEST:-"@PARI_RUNTEST@"} GP2C_FUNC_DSC=../desc/func.dsc export GP2C_FUNC_DSC if test -f "$testdir/gp/affect.gp"; then cp "$testdir/gp/affect.gp" affect fi for i in `ls "$testdir/input"`; do if test -f "$testdir/gp/$i.gp"; then echo @ECHON@ "Testing script $i...@ECHOC@" rm -f $i.gp.c $i.gp.o $i.gp.so $i.res $i.gp.run if ../src/gp2c -p gp2c_ -g -o $i.gp.c "$testdir/gp/$i.gp" 2>$i.res; then command=`echo "@PARI_MODULE_BUILD@" | sed -e s/%s/$i.gp/g` eval $command grep "^GP;" $i.gp.c | sed 's/^GP;//' >$i.gp.run cat "$testdir/input/$i" >> $i.gp.run $RUNTEST '@GP_PATH@' -f -q --test < $i.gp.run >$i.res 2>&1 if test -f "$testdir/res/$i.res"; then if diff "$testdir/res/$i.res" $i.res >/dev/null; then echo "@ECHOT@OK." else echo "@ECHOT@BUG." bugs=1; fi else test "$srcdir" = "." && cp $i.res "$testdir/res/$i.res" echo cat $i.res fi else echo "@ECHOT@BUG." bugs=1; fi fi done if test -f "$testdir/gp/affect.gp"; then rm -f affect fi; exit $bugs gp2c-0.0.14/scripts/Makefile.am0000644000175000017500000000007312141547407013100 00000000000000bin_SCRIPTS = gp2c-run @GP2C_DBG@ EXTRA_SCRIPTS = gp2c-dbg gp2c-0.0.14/test2/0000755000175000017500000000000014700755151010476 500000000000000gp2c-0.0.14/test2/Makefile.in0000644000175000017500000002711314676603632012477 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/test2/gp/0000755000175000017500000000000013623476440011110 500000000000000gp2c-0.0.14/test2/gp/sums.gp0000644000175000017500000000025213162716330012337 00000000000000r(x)=round(x*1000)/1000 wallis(n)=intnum(x=0,Pi,sin(x)^n) dedeketa(s)=sumalt(n=1,(-1)^(n-1)/n^s) lambert(s)=solve(x=0,log(s),exp(x)-s*x) dgamma(s)=derivnum(x=s,gamma(x)) gp2c-0.0.14/test2/gp/call.gp0000644000175000017500000000046413623476440012277 00000000000000dist(x,y)=sqrtint(x^2+y^2) call0(f) =f() call1(f,x)=f(x) call2(f,x,y)=f(x,y) call3(f,x,y,z)=print(f(x,y,z)) gen(T,x)=vector(#T,i,T[i](x)) baz(x)=gen([isprime,issquare,issquarefree],x) bar(z)=call2(kronecker,5,7) booz(z)=call2(dist,3,2) foo()=1 boor(x)=[foo][1](); toto1(x)=apply(sqrtint,x) buzz()=dist(3,2) gp2c-0.0.14/test2/gp/lambda.gp0000644000175000017500000000070313614057635012601 00000000000000global(zero,one,two,three); global(inc,add,mul,power,dec,sub,mod,disp); zero=f->x->x; one =f->f; two =f->x->f(f(x)); three=f->x->f(f(f(x))); inc= n->f->x->f(n(f)(x)); add= (n,m)->f->x->n(f)(m(f)(x)); mul= (n,m)->f->n(m(f)); power= (n,m) -> m(n); \\ try with spaces dec= n->f->x-> n (g->h->h (g(f))) (u->x) (u->u); sub= (n,m)->m(dec)(n); mod= (n,b)->n(a->(aa->sub(aa,b)(zero)(aa)) (inc(a))) (zero) disp=n->n(x->1+x)(0); num(n)=if(n,inc(num(n-1)),zero) gp2c-0.0.14/test2/gp/printf.gp0000644000175000017500000000006113162716330012650 00000000000000f(x)= { printf("%s",x); Strprintf("%s",x); } gp2c-0.0.14/test2/gp/vararg.gp0000644000175000017500000000045413623476440012645 00000000000000myprintsep(s,v[..])=if(#v>0,print1(v[1]);for(i=2,#v,print1(s,v[i])));print(); check(a,b,c,d,e,f)= { print1(":");myprintsep(); print1(":");myprintsep(", "); myprintsep(", ",a,b,c,d); myprintsep(", ",a,,c,); myprintsep(,a,b,c,d); myprintsep(":",a,b,c,d,e); myprintsep(":",a,b,c,d,e,f); } gp2c-0.0.14/test2/gp/closure.gp0000644000175000017500000000062613623476440013040 00000000000000global(inc,rec); rec=x->if(x,rec(x-1)*x,1) rec2(k)=my(h(n)=if(n==0,1,n*self()(n-1)));n->h(k*n) col(V)=for(i=1,#V,print(apply(x->x[i],V))) g(z)=my(h(x)=x^2+1);apply(h,z) gg(x)=(inc=x->x+1);inc(2) trans(F)=x->F(x+1) sump(a)=x->sum(i=1,x,i^a) ttrans(s)=trans(x->x!)(s) sumi(n)=sump(-1)(n) ar(x=n->1,z)=x(z) tar(u)=ar(,u)+ar(x->x+1,u) dtan(x)=my(t=tan(x));if(abs(tan'''(x)-(6*t^4+8*t^2+2))<10^-10,"OK","BAD"); gp2c-0.0.14/test2/gp/apply.gp0000644000175000017500000000047113623476440012507 00000000000000f1(v,z)=apply(x->x^z,v) f2(v)=apply(sqr,v) f3(f,v)=apply(f,v) g(x)=x^2+1 f4(v)=apply(g,v) f5(z:small)=apply(n:small->(n+z)!,[1,2,3,4,5]) g1(v,z)=select(x->x>z,v) g2(v)=select(isprime,v) g3(f,v)=select(f,v) h(x)=x g4(v)=select(h,v) invmod(a,b)=trap(,0,Mod(a,b)^-1) sub2(n)=forsubgroup(G=[n,n],,print(matsnf(G))) gp2c-0.0.14/test2/res/0000755000175000017500000000000013623476440011273 500000000000000gp2c-0.0.14/test2/res/call.res0000644000175000017500000000010613614057635012637 000000000000002 I 1 5 -1 [[0, 0, 0], 0, [0, 0, 0]] [1, 0, 1] [1, 0, 1] -1 3 1 1 0 3 gp2c-0.0.14/test2/res/sums.res0000644000175000017500000000003713162716330012706 00000000000000773/1000 1/4 277/500 -577/1000 gp2c-0.0.14/test2/res/printf.res0000644000175000017500000000001213162716330013212 00000000000000123 "123" gp2c-0.0.14/test2/res/closure.res0000644000175000017500000000021113623476440013374 000000000000003628800 620448401733239439360000 [1, 1/2, 1/3, 1/4] [1/2, 1/3, 1/4, 1/5] [1/3, 1/4, 1/5, 1/6] [1/4, 1/5, 1/6, 1/7] 720 137/60 1 9 6 "OK" gp2c-0.0.14/test2/res/lambda.res0000644000175000017500000000001113162716330013127 0000000000000020 625 5 gp2c-0.0.14/test2/res/vararg.res0000644000175000017500000000012413623476440013205 00000000000000: : a, b, c, d a, c a0b0c0d : : a, b, c, d a, 0, c, 0 a0b0c0d a:b:c:d:e a:b:c:d:e:f gp2c-0.0.14/test2/res/apply.res0000644000175000017500000000035513623476440013056 00000000000000[1, 4, 9, 16] [1, 4, 9, 16] [1, 4, 9, 16] [2, 5, 10, 17] [1, 1, 2, 6, 24] [3, 4] [2, 3] [2, 3] [1, 2, 3, 4] 0 Mod(1, 4) 0 Mod(3, 4) [0, 0] [0, 2] [0, 2] [0, 2] [0, 1] [0, 1] [0, 1] [0, 1] [0, 1] [0, 1] [2, 2] [2, 1] [2, 1] [2, 1] [1, 1] gp2c-0.0.14/test2/input/0000755000175000017500000000000013623476440011641 500000000000000gp2c-0.0.14/test2/input/vararg0000644000175000017500000000022413623476440012764 00000000000000print1(":");myprintsep() print1(":");myprintsep(", ") myprintsep(", ",a,b,c,d) myprintsep(", ",a,,c,) myprintsep(,a,b,c,d) check('a,'b,'c,'d,'e,'f) gp2c-0.0.14/test2/input/sums0000644000175000017500000000007213162716330012463 00000000000000r(wallis(10)) r(dedeketa(-1)) r(lambert(Pi)) r(dgamma(1)) gp2c-0.0.14/test2/input/printf0000644000175000017500000000000713162716330012774 00000000000000f(123) gp2c-0.0.14/test2/input/apply0000644000175000017500000000025713623476440012635 00000000000000f1([1,2,3,4],2) f2([1,2,3,4]) f3(sqr,[1,2,3,4]) f4([1,2,3,4]) f5(-1) g1([1,2,3,4],2) g2([1,2,3,4]) g3(isprime,[1,2,3,4]) g4([1,2,3,4]) for(i=0,3,print(invmod(i,4))) sub2(4) gp2c-0.0.14/test2/input/lambda0000644000175000017500000000041313162716330012713 00000000000000two=fun_two; three=fun_three; add=fun_add; sub=fun_sub; mul=fun_mul; power=fun_power; disp=fun_disp; init_lambda(); disp(mul(add(two,three),add(two,two))) init_lambda(); disp(power(add(two,three),add(two,two))) init_lambda(); disp(sub(mul(three,three),add(two,two))) gp2c-0.0.14/test2/input/closure0000644000175000017500000000021313623476440013154 00000000000000init_closure();rec=fun_rec; init_closure();rec(10) rec2(6)(4) col(Vec(mathilbert(4))) ttrans(5) sumi(5) ar(,3) ar(x->x^2,3) tar(4) dtan(2) gp2c-0.0.14/test2/input/call0000644000175000017500000000031413623476440012415 00000000000000dist(1,2) call0(()->I) call1(sqrtint,2) call1(x->x^2+1,2) call2(kronecker,5,7) call3((x,y,z)->[x*y,y*z,z*x],[1,2,3]) gen([isprime,issquare,issquarefree],3) baz(2) bar() booz() foo() boor() toto1() buzz() gp2c-0.0.14/test2/Makefile.am0000644000175000017500000000020613661772705012461 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.14/test3/0000755000175000017500000000000014700755151010477 500000000000000gp2c-0.0.14/test3/Makefile.in0000644000175000017500000002711314676603632012500 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test3/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test3/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/test3/gp/0000755000175000017500000000000013646611372011111 500000000000000gp2c-0.0.14/test3/gp/compr.gp0000644000175000017500000000066513623476440012510 00000000000000f()= { print([2^100..2^100+3]); print([x^2+1|x<-primes(40)]); print([x^2+1|x<-[1..10],isprime(x)]); print([x^2+1|x<-[1..10]]); print([a^2+b^2|a<-[1..10];b<-[1..10],gcd(a,b)==1]); print([a^2+b^2|a<-[1..10],isprime(a);b<-[1..10],a!=b && isprime(b)]); print([[a,b,c]|a<-[1..5];b<-[1..a];c<-[1..b]]); print(-[x^2+1|x<-[1..10]]); } cano(n)= { my(i=0,z=vector(1000)); for(j=1,n, z[1+(i++)%1000]=[j+1..(j+1000)]); z } gp2c-0.0.14/test3/gp/forpart.gp0000644000175000017500000000040013623476440013030 00000000000000f() = for(i=1,5,forcomposite(p=sum(i=1,3,i), sum(i=1,6,i), if(p%9==0,next(2));print([p,p^2]))) ff()= for(i=1,5,forcomposite(p=1,111, if(p%9==0,next(2));print([p,p^2]))) g() = for(i=1,5,forpart(p=5,print(p[1]))) h() = for(i=1,5,forpart(p=5,print(p[1]),,3)) gp2c-0.0.14/test3/gp/range.gp0000644000175000017500000000070413614057635012457 00000000000000f()= { my(V,M); V=primes(100); M=matrix(5,5,i,j,i+5*j-5); print(primes(100)[4..7]); print(V[5..9]); print(M[2..3,2..3]); print(M[1..2,1]); print(M[1,1..4]); print(M[1..3,]); print(M[,1..3]); print(M[1..5,1..-2]); print(M[1..-2,1..-2]); print(M[-3..-1,-3..-1]); print(M[^3,2..3]); print(M[^2,1]); print(M[1,^4]); print(M[^3,]); print(M[,^3]); print(M[^5,1..-2]); print(M[1..-2,^-2]); print(M[-3..-1,-3..-1]); } gp2c-0.0.14/test3/gp/forprime.gp0000644000175000017500000000023713614057635013207 00000000000000f()=local(s:small=0);forprime(p:int=2,,if(p%4==1,s++,s--);if(s==0,return(p))) fs()=local(s:small=0);forprime(p:small=2,,if(p%4==1,s++,s--);if(s==0,return(p))) gp2c-0.0.14/test3/gp/iferr.gp0000644000175000017500000000137313646611372012474 00000000000000ecm(N, B = 1000!, nb = 100)= { for(a:small = 1, nb, iferr(ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B), E, if(errname(E)=="e_INV", return(gcd(lift(component(E,2)),N)), error(E)))); } ecm2(N, B = 1000!, nb = 100)= { iferr( for(a:small = 1, nb, ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B)), E, my(d=component(E,2)); if(type(d)=="t_INTMOD", gcd(lift(d),N), error(E)), errname(E)=="e_INV"); } ecm3(N, B = 1000!, nb = 100)= { for(a:small = 1, nb, iferr(if(ellpow(ellinit([a,1]*Mod(1,N)), [0,1]*Mod(1,N), B),break), E, my(d=component(E,2)); return(gcd(lift(d),N)), errname(E)=="e_INV" && type(component(E,2))=="t_INTMOD")); Mod(2,4)^-1 } dummy()=iferr(,E,print(E)) gp2c-0.0.14/test3/res/0000755000175000017500000000000013623476440011274 500000000000000gp2c-0.0.14/test3/res/forpart.res0000644000175000017500000000050013623476440013377 00000000000000[6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] [4, 16] [6, 36] [8, 64] 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 5 1 2 1 1 gp2c-0.0.14/test3/res/compr.res0000644000175000017500000000225513623476440013053 00000000000000[1267650600228229401496703205376, 1267650600228229401496703205377, 126765060 0228229401496703205378, 1267650600228229401496703205379] [5, 10, 26, 50, 122, 170, 290, 362, 530, 842, 962, 1370, 1682, 1850, 2210, 2 810, 3482, 3722, 4490, 5042, 5330, 6242, 6890, 7922, 9410, 10202, 10610, 114 50, 11882, 12770, 16130, 17162, 18770, 19322, 22202, 22802, 24650, 26570, 27 890, 29930] [5, 10, 26, 50] [2, 5, 10, 17, 26, 37, 50, 65, 82, 101] [2, 5, 10, 17, 26, 37, 50, 65, 82, 101, 5, 13, 29, 53, 85, 10, 13, 25, 34, 5 8, 73, 109, 17, 25, 41, 65, 97, 26, 29, 34, 41, 61, 74, 89, 106, 37, 61, 85, 50, 53, 58, 65, 74, 85, 113, 130, 149, 65, 73, 89, 113, 145, 82, 85, 97, 10 6, 130, 145, 181, 101, 109, 149, 181] [13, 29, 53, 13, 34, 58, 29, 34, 74, 53, 58, 74] [[1, 1, 1], [2, 1, 1], [2, 2, 1], [2, 2, 2], [3, 1, 1], [3, 2, 1], [3, 2, 2] , [3, 3, 1], [3, 3, 2], [3, 3, 3], [4, 1, 1], [4, 2, 1], [4, 2, 2], [4, 3, 1 ], [4, 3, 2], [4, 3, 3], [4, 4, 1], [4, 4, 2], [4, 4, 3], [4, 4, 4], [5, 1, 1], [5, 2, 1], [5, 2, 2], [5, 3, 1], [5, 3, 2], [5, 3, 3], [5, 4, 1], [5, 4, 2], [5, 4, 3], [5, 4, 4], [5, 5, 1], [5, 5, 2], [5, 5, 3], [5, 5, 4], [5, 5 , 5]] [-2, -5, -10, -17, -26, -37, -50, -65, -82, -101] 1000 gp2c-0.0.14/test3/res/iferr.res0000644000175000017500000000023413646611427013036 00000000000000274177 274177 *** at top-level: ecm3(2^64+1,10,200!) *** ^-------------------- *** ecm3: impossible inverse in Fp_inv: Mod(2, 4). 0 gp2c-0.0.14/test3/res/range.res0000644000175000017500000000130013614057635013016 00000000000000[7, 11, 13, 17] [11, 13, 17, 19, 23] [7, 12; 8, 13] [1, 2]~ [1, 6, 11, 16] [1, 6, 11, 16, 21; 2, 7, 12, 17, 22; 3, 8, 13, 18, 23] [1, 6, 11; 2, 7, 12; 3, 8, 13; 4, 9, 14; 5, 10, 15] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19; 5, 10, 15, 20] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19] [13, 18, 23; 14, 19, 24; 15, 20, 25] [6, 11; 7, 12; 9, 14; 10, 15] [1, 3, 4, 5]~ [1, 6, 11, 21] [1, 6, 11, 16, 21; 2, 7, 12, 17, 22; 4, 9, 14, 19, 24; 5, 10, 15, 20, 25] [1, 6, 16, 21; 2, 7, 17, 22; 3, 8, 18, 23; 4, 9, 19, 24; 5, 10, 20, 25] [1, 6, 11, 16; 2, 7, 12, 17; 3, 8, 13, 18; 4, 9, 14, 19] [1, 6, 11, 21; 2, 7, 12, 22; 3, 8, 13, 23; 4, 9, 14, 24] [13, 18, 23; 14, 19, 24; 15, 20, 25] gp2c-0.0.14/test3/res/forprime.res0000644000175000017500000000001413614057635013546 0000000000000026861 26861 gp2c-0.0.14/test3/input/0000755000175000017500000000000013646611365011644 500000000000000gp2c-0.0.14/test3/input/range0000644000175000017500000000000413614057635012574 00000000000000f() gp2c-0.0.14/test3/input/forprime0000644000175000017500000000001113614057635013321 00000000000000f() fs() gp2c-0.0.14/test3/input/compr0000644000175000017500000000001713623476440012623 00000000000000f() #cano(150) gp2c-0.0.14/test3/input/forpart0000644000175000017500000000002113623476440013153 00000000000000f() ff() g() h() gp2c-0.0.14/test3/input/iferr0000644000175000017500000000010613646611335012610 00000000000000ecm(2^64+1,10,200!) ecm2(2^64+1,10,200!) ecm3(2^64+1,10,200!) dummy() gp2c-0.0.14/test3/Makefile.am0000644000175000017500000000020613661772720012457 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.14/ChangeLog0000644000175000017500000011160614700755022011131 00000000000000gp2c (0.0.14) * By default, support PARI 2.17 now. * Added: - Support for _* (primorial) operator from 2.16.1 - Support for #_~ from 2.16.1 -- Bill Allombert Mon, 07 Oct 2024 14:54:39 +0200 gp2c (0.0.13) * By default, support PARI 2.15 now. -- Bill Allombert Mon, 19 Sep 2022 18:56:36 +0200 gp2c (0.0.12pl1) * Fix some compiler warnings -- Bill Allombert Fri, 25 Mar 2022 12:29:40 +0100 gp2c (0.0.12) * By default, support PARI 2.13 now. * Bugs fix: - Prototype code DV in iterator was not fully supported -- Bill Allombert Tue, 20 Oct 2020 22:35:52 +0200 gp2c (0.0.11pl4) * Fix configure handling of missing pari.desc files. * Bugs fix: - Using break(1) instead of break() did not work. - iferr(,E,print(E)) did not work - (from 0.0.11pl1) affectation of vecsmall was missing a copy * Test-suite: - Update break test to test break(1) - Update iferr test to test iferr(,E,print(E)) - Update gerepile test to check affectation of vecsmall -- Bill Allombert Fri, 22 May 2020 18:02:09 +0200 gp2c (0.0.11pl3) * Fix declarations in header files so that it build with gcc 10 (reported by Michael Orlitzky). * Add correct filenames in error messages when using \r * Added - support for references (~) from PARI 2.12.1 - support for foreach from PARI 2.12.1 - support for holes in multi-assignement from PARI 2.12.1 - support for \r "..." from PARI 2.12.1 - support for ploth and plothexport - support for parfor, parforprime and parforvec - support for alarm * Bugs fix: - multiassign did not trigger copy * Test-suite: - Update multiassign test to check trigger of copy - Update multiassign test to check support of holes - Add test foreach to check foreach support -- Bill Allombert Thu, 05 Mar 2020 22:40:18 +0100 gp2c (0.0.11pl2) * Added: - support for derivn from PARI 2.12.0 * Bugs fix: - localprec() did not work with -p. - localbitprec() treated input precision as decimal. * Test-suite: - Add test precision to test support for localprec, etc. - Update closure test to check for derivation. -- Bill Allombert Wed, 22 May 2019 11:48:19 +0200 gp2c (0.0.11pl1) * Bugs fix: - unary minus of vectors was broken (introduced in 0.0.9pl3). * Added: - Optimized support for Vecsmall([...]) * Test-suite: - Fix test forprimestep to work around bug in PARI 2.11.0 - update compr test to check unary minus of vectors. -- Bill Allombert Fri, 19 Oct 2018 17:14:48 +0200 gp2c (0.0.11) * By default, support PARI 2.11 now. * Improve line number accuracy in error messages. * Update the documentation with respect to local() and main(). * Added: - Support for fordivfactored * Test-suite: - Add test forprimestep to test support for forprimestep - Add test fordivfactored to test support for fordivfactored -- Bill Allombert Thu, 19 Jul 2018 17:26:54 +0200 gp2c (0.0.10pl1) * Bugs fix: - generate correct code for while loop with empty body - handle GC of z[i++]=... correctly. * Test-suite: - update while test to test while loop with empty body - update affect test to check GC of z[i++]=... -- Bill Allombert Sun, 22 Oct 2017 12:47:55 +0200 gp2c (0.0.10) * By default, support PARI 2.9 now. * Added: - Support for 2.8 range. -- Bill Allombert Wed, 02 Nov 2016 19:37:29 +0100 gp2c (0.0.9pl5) * Added: - Support for prototype code 'b' and bitprec. - Support for localprec() and localbitprec() * Bugs fix: - generate correct install() commands when -o is in use. - undeclared variable in iterators bounds leads to gp2c crash * Test-suite: - Update forprime test to test undeclared variable in bound. -- Bill Allombert Sun, 10 Jan 2016 11:42:03 +0100 gp2c (0.0.9pl4) * Bugs fix: - Wrappers did not handle types correctly - global() could be misparsed. - option -C (range checking code) did not work. - generate correct compile_command when -o is in use. * Test-suite: - Update apply test to test wrappers support for types. - Update initfunc test to test global() parsing. * Added: - Basic support for 0x and 0b integer prefix. -- Bill Allombert Sat, 21 Nov 2015 22:15:40 +0100 gp2c (0.0.9pl3) * gp2c -h did not list options -C and -L * Bugs fix: - Fix for multi-assignment of vecsmall - Casting lvalues did not work anymore since 0.0.7pl3 - global(...):type declaration did not work * Test-suite: - Update multiassign test to check multi-assignment of vecsmall - Update cast test to cast of lvalues - Add test vararg to test support for variadic GP functions - Update return test to test global(...):type * Added: - support for generating gc_needed (with PARI 2.8) - support for self() - support for variadic GP functions -- Bill Allombert Tue, 16 Dec 2014 16:13:42 +0100 gp2c (0.0.9pl2) * Fix mismatching prototypes (reported by Michael Tautschnig for Debian) * Use "const char *" for prototype code s * Added: - support for prototype code u and U and usmall (ulong). -- Bill Allombert Tue, 22 Jul 2014 12:08:51 +0200 gp2c (0.0.9pl1) * Bugs fix: - Fix for 'closure as optional arguments did not work' was incorrect -- Bill Allombert Thu, 17 Apr 2014 15:45:46 +0200 gp2c (0.0.9) * By default, support PARI 2.7 now. * Improve installation of documentation (suggested by Jan Engelhardt). * Bugs fix: - closure as optional arguments did not work - multiple forprime in a single function did not work * Test-suite: - Update test closure to test closures as optional arguments. - Update test forprime to test multiple forprime in a single function. -- Bill Allombert Thu, 17 Apr 2014 11:57:22 +0200 gp2c (0.0.8pl1) * Added: - support for Debian-style multiarch systems. - option -L: generate #line directive for the compiler. - support for parsing histtime entries (%#) - support for prototype code 'J'. * Bugs fix: - the value of rec in iferr(code,E,rec,pred) could be ignored. * Test-suite: - Update test iferr to test value of rec. -- Bill Allombert Tue, 04 Mar 2014 12:13:40 +0100 gp2c (0.0.8) * Added: - support for PARI 2.6.1 - support for Iterator field in description (forpart and forcompositum) * Bugs fix: - closed variable inside loops were missed. - forstep did not support negative vector steps. - multiif did not allow block in predicates. - code for forprime did not garbage collect the stack correctly. - do not generate the same comment multiple time [#1444] * Test-suite: - Update test closure to test closed variable inside loops. - Update forstep test to test negative vector steps. - Add extra tests for PARI >=2.6: compr, forprime, iferr, multiassign, multiif, range. -- Bill Allombert Fri, 20 Sep 2013 12:07:48 +0200 gp2c (0.0.7pl5) * Added: - option -C: add range checking code. - support for 2.6 my([a,b]=v) - support for 2.6 iferr(code,E,rec,pred) * Bugs fix: - addhelp: handle newline correctly. - blocks in default values for function arguments did not work. * Test-suite: - Update test args to test blocks in default values -- Bill Allombert Mon, 06 May 2013 00:25:35 +0200 gp2c (0.0.7pl4) * Added: - support for 2.6 forprime(a,/*omitted*/,...) - support for 2.6 iferr/iferrname. * Bugs fix: - Fix option -o when input is from stdin. - clone was not fully supported. - returning a global variable could break garbage collecting. - support for pari.cfg.dbg was broken. * Test-suite: - Add test forprime to check support for forprime. - Expand initfunc to check support for clone. - Expand return to check returning a global variable. -- Bill Allombert Tue, 16 Oct 2012 19:04:32 +0200 gp2c (0.0.7pl3) * Add support for 2.6 ranges [a..b] and comprehension [a(x)|x<-a,c(x)] * Add support for 2.6 slices M[a..b,^c] * Add support for 2.6 multiif (if(x==0,a,x==1,b,default)) * Add support for 2.6 multi-assignement: [a,b]=v * Bugs fix: - Fix 'make check' breakage on non-glibc systems like OS X and Solaris introduced in the previous release. Thanks to Alessandro Languasco. - genblock() was not C89 standard compliant. - Operators like "+=" did not handle type conversion correctly. - Use of _badtype for unsupported types could crashes gp2c. * Test-suite: - Rename randomprime to randprime to be compatible with PARI 2.6. - Expand cast test to check type conversion of +=. -- Bill Allombert Mon, 07 May 2012 12:50:37 +0200 gp2c (0.0.7pl2) * Do not truncate output file if the input file does not exist. * Add support for 2.6 error messages. * configure now also looks for a pari.cfg.dbg file of a PARI debugging installation. * Bugs fix: - Allow spaces between ) and -> in (x)->x. - stack_base() was not C89 standard compliant. * Test-suite: - Change lambda test to have spaces between ) and -> once. -- Bill Allombert Tue, 21 Feb 2012 22:20:36 +0100 gp2c (0.0.7pl1) * Rename README.SVN to README.GIT. * Test-suite: - Fix 'call' test-suite to work on 32bit. -- Bill Allombert Sun, 02 Oct 2011 23:04:03 +0200 gp2c (0.0.7) * By default, support PARI 2.5 now. * Remove remains of support for PARI 2.1. * Improve scoping of local variables declared inside blocks. * Add basic support for parsing history entries (%). * Bugs fix: - Fix order of evaluation in local()/my(). - Fix support for prototype code 'm'. - Fix support for prototype code 'DP'. - Fix support for prototype code 'Dr'. - Fix value of if(0,x) in blocks. - Fix garbage collection of global variables. - Fix bug when removing dummy variables. * Test-suite: - Expand affect test to check order of evaluation in local()/my(). - Add member test to check support for member function. - Expand if test to check for value of if(0,x) in blocks. - Add extra tests for PARI >=2.5: apply, call, closure, lambda, printf and sums. - Add test cleanvar for testing dummy variables removal. -- Bill Allombert Fri, 22 Jul 2011 14:01:50 +0200 gp2c (0.0.6) * Add support for evaluating closures (need PARI >=2.4.4). * Add support for generating closures from functions. * Add support for generating wrappers for closures. * Add support for functions intnum,sumalt,forsubgroup and related (need PARI >=2.4.4). * Add support for RUNTEST to use with a cross-compiled gp. * Add support for new prototype codes 'Dr', 'Ds', and 'DP'. * Remove -p prefix from gp2c-added variable names to avoid clash. * Move to autoconf 2.67 and automake 1.11, for better or for worse. * Bugs fix: - incorrect use of gerepileupto. - gp2c did not compile Str(a,,b) correctly. - strings with embedded newlines were not well-supported. * Test-suite: - Expand upto test to check for garbage collection problem with complex numbers. - Expand args test to check compilation of Str(a,,b). -- Bill Allombert Fri, 29 Apr 2011 18:38:22 +0200 gp2c (0.0.5pl10) * Add support for new prototype code 'm'. * Add support for new GP operator '==='. * Add support for more than 8 arguments for install() in PARI 2.4.3. * Bugs fix: - gp2c failed to compile affectation to undefined vectors. * Test-suite: - expand affect test to check affectation to undefined vectors. -- Bill Allombert Tue, 26 Oct 2010 12:23:30 +0200 gp2c (0.0.5pl9) * Bugs fix: - fix a bug with the ss* prototype introduced in 0.0.5pl8. * Test-suite: - expand print test to check function using ss* prototype. * Thanks to Alessandro Languasco for testing the previous release. -- Bill Allombert Sat, 30 Jan 2010 11:13:01 +0100 gp2c (0.0.5pl8) * Lots of spelling fix to the documentation by Michael Somos. * Bugs fix: - fix crash due to bad use of internal memory allocator. - fix crash with undefined functions. - function arguments modified through pointers were not copied. * Test-suite: - expand affect test to check function arguments modified through pointers. -- Bill Allombert Sun, 28 Jun 2009 16:36:50 +0200 gp2c (0.0.5pl7) * Add preliminary support for 'W' protocode. * Discard empty rules in descriptions. * Bugs fix: - Fix problem with global(L:list) introduced in 0.0.5pl3. - Handle functions with empty prototype. - Fix problems with function returning vectors in if statements. * Test-suite: - Change print, dot and read tests to be compatible with PARI 2.4.3. - Change initfunc test to try global(L:list). - Change return test to check more if statements. -- Bill Allombert Sat, 13 Dec 2008 17:21:15 +0100 gp2c (0.0.5pl6) * Handle pari.cfg file generated by PARI 2.4.2 properly. * genblock now 'guess' that 'length' returns a small. * GP2C now report errors for spaces inside identifiers. * Rename cvsinit to autogen.sh. * Bugs fix: - Fix compilation of 32- to 63-bits integers on 64-bits systems. - Fix handling of comment at end of included files. - gp2c could try to gcopy non-GEN objects. - Fix garbage collection problem with return() introduced in 0.0.4. - Fix garbage collection problem with vectors. * Test-suite: - Expand cast test to check support for a 42-bit integer. - Expand read test to check support for comments at end of file. - Expand gerepile test to check support for non-GEN objects. - Expand return test to check for garbage collection problems. - Add upto test to check for garbage collection problem with vectors. -- Bill Allombert Tue, 18 Dec 2007 13:32:16 +0100 gp2c (0.0.5pl5) * Add initial support for 'my()' (GP 2.4 extension). * Bugs fix: - Fix handling of comments followed by newlines. - Fix support for sumdiv. * Test-suite: - Expand vector test to test comments followed by newlines. - Expand sumprod test to test whether sumdiv works. -- Bill Allombert Wed, 26 Sep 2007 13:20:07 +0200 gp2c (0.0.5pl4) * Fix Changelog (0.0.5pl3 changes were split in two). * Fix nameclash with Solaris standard headers files. * Bugs fix: - Fix garbage collection problem with if() introduced in 0.0.4. * Test-suite: - Expand if test to trigger garbage collection. -- Bill Allombert Thu, 7 Jun 2007 11:09:42 +0200 gp2c (0.0.5pl3) * No more allow type cast between incompatible types. * Synchronize parser with new GP parser. * Fix some gcc warnings introduced in the previous release. * Bugs fix: - while and until did not handle some complex expression in the condition. - code generated for matrices did not run side-effects in order. - Fix parsing of real numbers. * Test-suite: - expand while test to check more complex expressions in the conditions. - expand matrix test to check side-effects order. - add dot test to check for parsing of real numbers. -- Bill Allombert Thu, 8 Feb 2007 16:46:45 +0100 gp2c (0.0.5pl2) * Fix (harmless) misdetection of PARI versions >= 2.3 * Documentation: - Fix lots of typos. - Update the examples of generated code to be current. * Bugs fix: - Matrices built with matrix() were not typed vec. - Comments after = lead to premature end of function. - Do not generate default value for typed global variables, but generate them for non-typed local variables. * Test-suite: - Add comments to vector test to check support of comments after = - Expand moveblock test to cover blocks inside a[ ,] constructs. * Thanks to Jeffrey Stopple for testing the previous release. -- Bill Allombert Sun, 17 Sep 2006 13:34:26 +0200 gp2c (0.0.5pl1) * Bugs fix: - Fix missing copy with forvec variables. * Test-suite: - Expand forvec test to catch missing copy in forvec. -- Bill Allombert Tue, 20 Jun 2006 17:53:38 +0200 gp2c (0.0.5) * Support for PARI 2.1 and 2.2 has been removed. * Reformat ChangeLog to fit in 80 columns * Fix configure.in to work with recent autoconf. * 'make install' now install gp2c-dbg if gp2c-dbg support was configured. * Add gp2c-dbg.1 man page. * Add ./gp2c-dbg wrapper script. * Change gp2c-run and gp2c-dbg to create a .gp.run file containing the GP; commands instead of gp2c_start.gp and gp2c_gprc. * Build HTML documentation with hevea. * 'make install' now install the documentation. -- Bill Allombert Fri, 16 Jun 2006 11:49:36 +0200 gp2c (0.0.4pl5) * Fix crash on some platforms caused by missing case in gendeblock. * Fix usage of getopt on platforms where char is unsigned. -- Bill Allombert Sun, 14 May 2006 10:04:07 +0200 gp2c (0.0.4pl4) * Add table of contents to the gp2c manual. * Add documentation of the description system (doc/type.tex). * Add support for &a[b]. * Bugs fix: - Fix missing copy with code like x=vector(3);y=x;x[1]++;y * Test-suite: - Expand gerepile test to catch missing copy problems. -- Bill Allombert Sun, 19 Mar 2006 17:34:50 +0100 gp2c (0.0.4pl3) * Add support for break(n)/next(n) for constant n. * Improve small loops detections. * Fix -p option for global variables. * Descriptions: - Add _const_real description for strtor(). - Allow descriptions to match string litterals. - Change #type to only match litterals with exact same types. * Test-suite: - run with -p gp2c_ now. - change 'args' test-suite to be independant of vecsort algorithm. -- Bill Allombert Sun, 4 Dec 2005 19:59:18 +0100 gp2c (0.0.4pl2) * gp2c-run was no more accepting filename containing a /. * Vectors were not typed vec. * Handle the 'r' protocode properly. * Test-suite: - change 'vector' test-suite to be independant of print1() behaviour. -- Bill Allombert Wed, 28 Sep 2005 18:02:41 +0200 gp2c (0.0.4pl1) * Allow the description system to differentiate f(x,) from f(x). * Handle empty files correctly. * Descriptions: - Add _[_,] description for PARI 2.2 row function. * Test-suite: - Change 'print' test to test 'printp1' instead of 'printtex', due to different output in 2.2.11. -- Bill Allombert Tue, 28 Jun 2005 21:11:26 +0200 gp2c (0.0.4) * Interface changes: - Variables declared with a type do not have a default value anymore. See "Effect of types declaration on default values" in the manual. - PARI 2.1 is still supported, but will not pass the test-suite. * Bugs fix: - Fix return() of expressions implemented via block. - Fix parser to allow semi-commas in empty arguments like while(1,;). - Add support for prodeuler(). - Fix segfault on 64-bit platforms. - Allow to define functions with empty body (f(x)=;). - Allow complex expressions as default values for arguments and initial values for variable, for(w=[1,1])=local(v=[1,2]~);w*v. - New syntax local(...):type to set the default type in a local(). - Allow to redefine a function (clobber the previous definition). * Generated code clean-up: - Try to declare several variables on one line. - Do not generate strings containing embedded new lines. - Rewrite the handling of 'return' to generate nicer code. - Better support for immediate t_COL ([...]~). - Better support for negative small real constants. - Add space after comma in code generated for [] and print(). - Use gerepileall instead of gerepilemany when available. - Use NEXT_PRIME_VIADIFF when available for forprime() loops. * Build system: - Add ctags target to generate vi tags to src/Makefile. - Allow to override descriptions with the file desc/override.desc. - Add option --paricfg-dbg to configure to specify the path to the pari.cfg file of a PARI debugging installation. * Descriptions: - Add support for RPN style replacement ${} in descriptions. - Reimplement type casts in term of description (_cast). - Add descriptions for vector/matrix components (in _[_,_]). - Add _const_smallreal description for small real constants. - Add O(_^_) description of O(x^y). - Add description of cgetg (as _cgetg). - Add _const_quote description for 'x constructs. - Add _const_expr description for integers and reals. - Add _gerepileall description to use gerepileall(). - Add _cast_noarg description for default arguments. - Handle print and error through descriptions. - Add _low_stack_lim for low_stack() code. - Add _diffptr description for forprime(). - Add _forprime_next for NEXT_PRIME_VIADIFF. * Test-suite: - Fix 'initfunc' test to be compatible with PARI 2.2.10. - Expand 'vector' test to try constant vectors/matrices. - Expand 'return' test to try returning blocks. - Expand 'moveblock' test to try unary - operator. - Expand 'args' test to try user-defined functions. - Expand 'initfunc' test to try non-cloned matrices. - Expand 'if' test to test parsing of semi-commas in empty arguments. - Expand 'trunc' test to try truncating real constants. - Add 'gerepile' test to exercise garbage-collecting code generation. - Make test-suite independant of random() to avoid test failure on 64bit machines. - Expand 'args' test to try function with complex optional arguments. - Expand 'affect' test to try local variables initialised to a complex expression. - Expand 'initfunc' to test use of undeclared global variables. - Expand 'sumprod' to test prodeuler. - Add 'forvec' to check forvec support. -- Bill Allombert Sun, 15 May 2005 18:51:56 +0200 gp2c (0.0.3pl4) * Fix garbage collecting of forvec loops. * Expand documentation about types. * Add description for gerepileupto (in _gerepileupto). * Add option -o to specify output file instead of stdout. -- Bill Allombert Mon, 10 Jan 2005 16:29:53 +0100 gp2c (0.0.3pl3) * Fix 'gp2c -l'. * Add support for forvec with PARI 2.2.8. * Fix .orders with GP 2.1. * Fix compat.desc logic. -- Bill Allombert Thu, 25 Nov 2004 16:05:55 +0100 gp2c (0.0.3pl2) * PARI/GP Workshop bugfix release. * "make install" no more install useless pari21.dsc. * Store preorder in _type_preorder description instead of hard-coding it in gp2c. Create modes and types dynamically. * Fix -p option. * Fix install() handling. * Change gp2c-run convention: line starting with 'GP;' in the C file are passed to gp at startup. * Implement \r as an include directive. * Add test 'install' and 'read'. * Pass addhelp() to GP using 'GP;' convention. -- Bill Allombert Wed, 22 Sep 2004 10:29:54 +0200 gp2c (0.0.3pl1) * Fix testsuite to accomodate error() change in 2.2.8. * Rewrite README. * Description system: - Fix the parser. - Add compat.desc to support 2.2.7 and newer release. - Add support for matching C type and modes. - Add _declaration, _typedef, and _proto to pari21.desc and compat.desc. - Avoid casting lvalue (ANSI C does not allow it). * use _declaration, _typedef, and _proto to handle C types instead of hardcoding in type.h * Fix gp2c-dbg script to use GP_PATH to find GP. -- Bill Allombert Sat, 26 Jun 2004 12:30:11 +0200 gp2c (0.0.3pl0) * Rewrote the configuration system to use the description system. * Member functions are now fully supported with PARI 2.2.7. * Add support for the new 'i' prototype code. * Add support for the new interface to the 's*' prototype. * Update documentation to reflect change in the installation process and new features. -- Bill Allombert Thu, 18 Dec 2003 17:04:59 +0100 gp2c (0.0.2pl6) * Use signe() instead of gcmp0 for integers and reals. * Provide yywrap so we don't need LEXLIB anymore. * Ship lang.c in the tarball so that flex is not required to build gp2c anymore. -- Bill Allombert Thu, 30 Oct 2003 16:45:28 +0100 gp2c (0.0.2pl5) * Add error message for wrong use of operators. * Add very basic support for lists, via the 'list' type. * Fix config/modules_build to support PARI 2.2.5 interface. * 'install' arguments were not treated as raw input correctly. * gp2c is now more clever at guessing types in genblock. * Update the manual. * Make clean now clean test directory. * fix segfault on sparc introduced in 0.0.2pl4 in findfunctionerr. -- Bill Allombert Thu, 13 Feb 2003 20:26:21 +0100 gp2c (0.0.2pl4) * gp2c-dbg now handle .c files. * Fix code limiting user functions return type. * Expand 'return' test to catch negbool. * Fix bug with if(cond,,code). * Expand 'if' test to check if(cond,,code) and if(cond,code,). * Fix bug in gendeblock with if(cond,print(print)). * Expand 'moveblock' test. * Add descriptions for '^-1'. * Fix -p option with forprime. * Better error messages. * Allow cast system to use descriptions. * Add description for _toGENstr. -- Bill Allombert Tue, 7 Jan 2003 15:40:23 +0100 gp2c (0.0.2pl3) * Fix some gcc warnings. * Portability fix to lang.l (OSF/1). * Test "moveblock" was no more 64 bits clean. * Functions used before declaration generated wrong code. * Description of setunion was incorrect. Thanks Ottavio G. Rizzo. * gp2c-run now handle .c files. * Add gp2c-run.1 man page. * Add section 'Hand-editing the C file generated by gp2c' to manual. -- Bill Allombert Wed, 30 Oct 2002 16:48:54 +0100 gp2c (0.0.2pl2) * '.' was not treated as a ``smallreal''. * v[1,1] was not printed correctly by gp2C -G. * Components do type checking now. * Add 'empty' type for correct type computation. * Use is_subtype for comparisons of types. * Movecode fix from 0.0.0pl8 was incomplete. * Expand tests "affect" and "moveblock". -- Bill Allombert Sat, 31 Aug 2002 11:16:56 +0200 gp2c (0.0.2pl1) * Implement printf format with descriptions. * Add ?type and ?integer default in description. * Implement affection to line of matrix M[a,]=V * Add space in error messages. * Fix the way unused variables are handled. * Fix -p option that was broken in 0.0.2. * Fix type preorder transitivity computation. -- Bill Allombert Thu, 29 Aug 2002 11:40:56 +0200 gp2c (0.0.2) * New parser code. This one support automatic concatenation, the 2.2.4 way. * Add listcalltostack for unfolding function call. * Add concat unfolding to genformat{,arg}. * Add genstr type and cast for t_STRING GEN object. * Add description for Str. * Fix description of __ (concat) operator. * Add a new casting method. * Rewrite the way constants are handled. Fix 1.a bug. * Remove the hard-coded limit on string length. * Use const char *. * Remove the KSTART kludge. * Automatic variables now have consecutive numbers. * Fix operators priority problems with gp2c -G. * Allow empty functions and empty member functions. * Catch declarations with more than one tag. -- Bill Allombert Wed, 28 Aug 2002 15:07:01 +0200 gp2c (0.0.1pl3) * gp2c-dbg really uses GP_DBG now. * Fix a bug introduced in 0.0.0pl11 when handling description with noarg. * Expand "args" test. * 'install' was no more working, and using entries has never worked. * .sign description was incorrect. * Update manual and expand the "common problem" section. * Avoid GENtostr, because it leaks memory. * Implement write*,printtex,printp* via eval(). * For uniformity, print now output to stdout. * Thanks to Herbert Gangl for testing the previous release. -- Bill Allombert Tue, 9 Jul 2002 16:32:15 +0200 gp2c (0.0.1pl2) * gp2c -S breaks with functions with more than 8 args. * Support for simple real constants. * KB style function definition. * Correct typo in gp2c manual. * Add support for manual in HTML. * Fix a bug introduced in 0.0.0pl11 that cause variable to appear several time in gptr lists. * Add --with-paricfg flag to configure. * Better version detection. * Variables ('x) were printed as a number. * gp2c now really ignore '\r'. * typ->str cast generate invalid code. * Default for str args was not quoted correctly. * Use char * instead of void * in src/stack.c. -- Bill Allombert Sat, 29 Jun 2002 17:23:12 +0200 gp2c (0.0.1pl1) * Typo in addseqleft. * Add VCG tree debugging output. * Fix a bug introduced in 0.0.0pl12 with sum(,,if(,,)) constructs. * Add test "sumprod". * Movebloc could create loops in the tree. * gp2c.tex: RTLD_GLOBAL is already in 2.2.2. -- Bill Allombert Sun, 19 May 2002 16:41:39 +0200 gp2c (0.0.1) * Fix problem in gp2c-run when .gprc did not end by a newline. * Add gp2c-dbg script to help debugging (not installed). * Do not use snprintf for portability. * Fix some warning when compiling on 64 bits machines. * Add some more descriptions. * Remove unneeded -u flag to diff in script/dotest. * Fix some compatibility problems with old flex. * Fix SEGV caused by unspecified execution order. * Fix module-build when EXTRADLLDFLAGS use ${LIBS}. * Add BUGS and doc/gp2c.dvi to the tarball. * Remove src/lang.c and test/*/CVS from the tarball. * Make forstep test more robust. * Fix descriptions of _?=_ operators. * FUNCDSC_PATH configuration is now GNU compliant. * matrix() generate extraneous (GEN) cast. * Add missing cast gen->bell. * Fix GP path in gp2c-run. * Thanks to John Cremona for testing the previous release. -- Bill Allombert Fri, 3 May 2002 20:18:17 +0200 gp2c (0.0.0pl12) * Fix line numbers in error messages. * Implement 'fordiv' and 'sumdiv'. * Fix bugs with option -l and -f. * Make gp2c-run recognize -l, -t and -v. * Use "&&" in compile command instead of ";". * Fix some bugs in the garbage collecting code. * Add test "return". * Missing copy with member functions clgp and bnr. * Rewrite the lexical analyser with start condition. * Missing cast in the description of "variable". * Do not generate checkgal (not in pari 2.1 headers). * Add documentation, thanks to Ariel Pacetti for review and install section. * Add some missing #include. * Thanks to Olivier Ramaré for testing the previous release. -- Bill Allombert Wed, 13 Mar 2002 21:31:32 +0100 gp2c (0.0.0pl11) * Remove bnrinit description, unuseful and not PARI 2.2 compliant. * Fix a potential SEGV with undeclared variables. * Fix some printnode bugs. * Better description choice strategy. * Add arguments checking to functions. * New way to handle default arguments. * Preserve comments in output. * Add description for operators between small and real. * Fix a long-standing bug causing extra indentation. * More gerepileupto in place of gerepilemany. * Use stack.[ch] interface for memory allocation. * New option -S (strict arguments). -- Bill Allombert Tue, 19 Feb 2002 19:44:39 +0100 gp2c (0.0.0pl10) * 'x operator is now of type "var" instead of "gen". * Fix a typo in the mode of if(,,) constructs. * Fix initialization of non-GEN global vars. * Expand "if" test. * Add ";" after install commands to help copy-paste under emacs. * Thanks to Henri Cohen for testing the previous release. -- Bill Allombert Wed, 19 Dec 2001 19:53:22 +0100 gp2c (0.0.0pl9) * Add doc directory and manpage. * Add support for new "#" operator. * Add comments for non Gsmall C long. * Better support for DOS files. * Path-independent name for the init function. * Rewrite the way functions definitions are stored. * Implement 'install' as a gp2c directive. * Add a new strategy in gencast. * Add AM_MAINTAINER_MODE to configure.in. * More check in configure.in. * Allows to build without perl, or without PARI, or with debug enabled. * Copy function arguments if they are modified. * Handle absolute path to plugin in install(). * Add tests "cast" and "args", and expand "affect" and "forstep" tests. * Rewrite the way prototype codes are parsed. * Fix global vars initialization. * Make "make check" more clever when gp2c fails. -- Bill Allombert Tue, 18 Dec 2001 17:30:07 +0100 gp2c (0.0.0pl8) * Add gp2c-run script. * Fix some castings from void and to gen. * !(void) is 1 now. * Still better output for gp2c -G. * Add types vec, lg and vecsmall. * Add descriptions supporting lg, vec and vecsmall type. * Fix determination of return type of functions. * Implement user-defined member functions. * Hopefully fix a bug in moveblock(). * Add shell-style comments to description. * Avoid casting lvalues. * Affectations may need parens, like in a+b=c. * Fix description of isprime. * Add new check 'moveblock'. -- Bill Allombert Thu, 15 Nov 2001 12:30:06 +0100 gp2c (0.0.0pl7) * Correct SEGV on files without any functions definitions. * Try to cope with DOS files under unix. * 'if' constructs used as loop bounds were wrongly discarded. * 'M[k,]' induced looping in genblock. * Add new check 'matrix'. * Better output for gp2c -G . * vector and matrix now check theirs index variables. * 'f(x)=;x' is now valid, though ugly. * Output warning for meta-commands. * Output warning and default to gen for unknown functions. * Description of '!' was incomplete leading to extraneous '!!'. * Less spurious warnings. * Thanks to Ariel Pacetti for testing the previous release. -- Bill Allombert Sun, 23 Sep 2001 16:14:34 +0200 gp2c (0.0.0pl6) * Add self test, for 'make check'. * Code for tufu was wrong. * Bug in genentryuser. * Implementation of matrix(). * Gtyp to Ggen coercion. * Global vars are initialized to gzero to protect against gerepile * clone and unclone facilities. * Parser grammar clean up. * Add Gpol and Gvar type. Support for polynomial specific code. * Add Mcopy mode. * Add -p option to protect user namespace. * Rewrite the initialisation function generation code. * Fix typo in description of >>=. -- Bill Allombert Fri, 4 May 2001 13:03:21 +0200 gp2c (0.0.0pl5) * Autoconfiguration of command line to compile the modules. * Better support for '&' references. * Better cleanup of var generate by if() constructs. -- Bill Allombert Sun, 18 Mar 2001 19:38:34 +0100 gp2c (0.0.0pl4) * forstep(z=1,100,[1,3,1]) pre-implementation. * Better garbage collecting. * New option -W warning about undeclared variable. * Now error messages print the line number or the function. * New description code '@' for member function which use several time theirs arguments. * Variables added by the compiler of type `long' are named l1, l2, etc... * User vars named l1, l2, l_1, etc... are now renamed l_1, l_2, l__1, etc... * Now generate an initialization function automatically. * Better variable optimizations. * \= and \/= were absolutely buggy. * Rewrote movecode/moveblock to be safe with entangled bloc. * while(,SEQ) and until(,SEQ) now work. * Add support for clone. * for(i:small=1,x,SEQ) now work. -- Bill Allombert Thu, 15 Mar 2001 12:33:40 +0100 gp2c (0.0.0pl3) * Fix `forstep'. * Now error accept multiple parameter, as print do. * `next' now is accepted. * Add types nf,bnf,bnr,clgp,prid,ell,bell,gal to allow implementation of member functions. * Operators and member functions are now handled by descriptions. * Fix PARI version detection for 2.2 * User vars named p1, p2, p_1, etc... are now renamed p_1, p_2, p__1, etc... * 'lim' now renamed st_lim to reduce name clash. * Much less extraneous parens generated. * `&' references now work. -- Bill Allombert Sun, 4 Mar 2001 11:53:16 +0100 gp2c (0.0.0pl2) * Update scripts that were forgotten in pl1. * Fix indentation in `for' loop. * Added some provisions for better garbage collecting. -- Bill Allombert Sat, 13 Jan 2001 21:29:32 +0100 gp2c (0.0.0pl1) * Now initialization in type declaration is supported, like f(x:long=3)=local(z:mp=1.2);... * New func.desc format. * Garbage collecting before return more secure but still ugly. -- Bill Allombert Fri, 12 Jan 2001 21:29:32 +0100 gp2c (0.0.0pl0) * Initial Release. -- Bill Allombert Tue, 12 Dec 2000 17:33:32 +0100 Local variables: mode: debian-changelog End: gp2c-0.0.14/test4/0000755000175000017500000000000014700755152010501 500000000000000gp2c-0.0.14/test4/Makefile.in0000644000175000017500000002711314676603632012501 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = test4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/test4/gp/0000755000175000017500000000000013623476440011112 500000000000000gp2c-0.0.14/test4/gp/fordivfactored.gp0000644000175000017500000000005113623476440014357 00000000000000test(N) = fordivfactored(N, d, print(d)) gp2c-0.0.14/test4/gp/precision.gp0000644000175000017500000000020113623476440013346 00000000000000t1(n)= { localprec(n); [precision(1.),bitprecision(1.)]; } t2(n)= { localbitprec(n); [precision(1.),bitprecision(1.)]; } gp2c-0.0.14/test4/gp/forperm.gp0000644000175000017500000000011413623476440013030 00000000000000g() = for(i=1,3,forperm(i,p,print(p))) h() = forperm([2,1,1,3], p,print(p)) gp2c-0.0.14/test4/gp/forprimestep.gp0000644000175000017500000000046013623476440014101 00000000000000fun(a,b)= { forprimestep(p=a,b,Mod(1,4), print(sqrt(Mod(-1,p)))) } test1()=forprimestep(n=2,100,5,if(n>20,break);print(n)) test2()=forprimestep(n=2,,5,if(n>20,break);print(n)) test3()=forprimestep(n=2,oo,5,if(n>20,break);print(n)) test4()=forprimestep(n=2^100,,Mod(1,3),if(n>2^100+400,break);print(n)) gp2c-0.0.14/test4/gp/forsubset.gp0000644000175000017500000000010513623476440013372 00000000000000g(n:small)=forsubset(n,s,print(s)); h(v:vec)=forsubset(v,s,print(s)) gp2c-0.0.14/test4/res/0000755000175000017500000000000013623476440011275 500000000000000gp2c-0.0.14/test4/res/forperm.res0000644000175000017500000000046213623476440013404 00000000000000Vecsmall([1]) Vecsmall([1, 2]) Vecsmall([2, 1]) Vecsmall([1, 2, 3]) Vecsmall([1, 3, 2]) Vecsmall([2, 1, 3]) Vecsmall([2, 3, 1]) Vecsmall([3, 1, 2]) Vecsmall([3, 2, 1]) Vecsmall([2, 1, 1, 3]) Vecsmall([2, 1, 3, 1]) Vecsmall([2, 3, 1, 1]) Vecsmall([3, 1, 1, 2]) Vecsmall([3, 1, 2, 1]) Vecsmall([3, 2, 1, 1]) gp2c-0.0.14/test4/res/precision.res0000644000175000017500000000002413623476440013717 00000000000000[57, 192] [38, 128] gp2c-0.0.14/test4/res/forprimestep.res0000644000175000017500000000024013623476440014443 00000000000000Mod(2, 5) Mod(5, 13) Mod(4, 17) Mod(12, 29) Mod(6, 37) Mod(9, 41) Mod(23, 53) Mod(11, 61) Mod(27, 73) Mod(34, 89) Mod(22, 97) Mod(10, 101) 2 7 17 2 7 17 2 7 17 gp2c-0.0.14/test4/res/forsubset.res0000644000175000017500000000057013623476440013746 00000000000000Vecsmall([]) Vecsmall([1]) Vecsmall([2]) Vecsmall([3]) Vecsmall([4]) Vecsmall([1, 2]) Vecsmall([1, 3]) Vecsmall([1, 4]) Vecsmall([2, 3]) Vecsmall([2, 4]) Vecsmall([3, 4]) Vecsmall([1, 2, 3]) Vecsmall([1, 2, 4]) Vecsmall([1, 3, 4]) Vecsmall([2, 3, 4]) Vecsmall([1, 2, 3, 4]) Vecsmall([1, 2]) Vecsmall([1, 3]) Vecsmall([1, 4]) Vecsmall([2, 3]) Vecsmall([2, 4]) Vecsmall([3, 4]) gp2c-0.0.14/test4/res/fordivfactored.res0000644000175000017500000000024313623476440014730 00000000000000[1, matrix(0,2)] [2, Mat([2, 1])] [4, Mat([2, 2])] [5, Mat([5, 1])] [10, [2, 1; 5, 1]] [20, [2, 2; 5, 1]] [25, Mat([5, 2])] [50, [2, 1; 5, 2]] [100, [2, 2; 5, 2]] gp2c-0.0.14/test4/input/0000755000175000017500000000000013623476440011643 500000000000000gp2c-0.0.14/test4/input/precision0000644000175000017500000000001713623476440013477 00000000000000t1(54) t2(120) gp2c-0.0.14/test4/input/forsubset0000644000175000017500000000001613623476440013517 00000000000000g(4) h([4,2]) gp2c-0.0.14/test4/input/forprimestep0000644000175000017500000000004313623476440014222 00000000000000fun(5,101) test1() test2() test3() gp2c-0.0.14/test4/input/forperm0000644000175000017500000000001013623476440013147 00000000000000g() h() gp2c-0.0.14/test4/input/fordivfactored0000644000175000017500000000001213623476440014500 00000000000000test(100) gp2c-0.0.14/test4/Makefile.am0000644000175000017500000000020613661772727012467 00000000000000mostlyclean-generic: rm -f *.gp.[co] *.gp.so *.gp.run *.res dist-hook: cp -pR $(srcdir)/gp $(srcdir)/input $(srcdir)/res $(distdir) gp2c-0.0.14/config/0000755000175000017500000000000014700755152010703 500000000000000gp2c-0.0.14/config/checkspaces0000755000175000017500000000101414700755152013021 00000000000000#! /bin/sh CFILES="`echo src/*.[chyl] |sed -e 's,src/\(parse\|lang\)\.[ch],,g'`" OFILES="ChangeLog AUTHORS README NEWS BUGS doc/gp2c.tex doc/type.tex" MFILES="*/Makefile.am Makefile.am" SCRIPTS="`echo scripts/*.in |sed -e 's,scripts/Makefile.in,,g'`" err=0; if grep ' $' $CFILES $OFILES $MFILES $SCRIPTS; then echo "BUG: trailing spaces found." err=1; fi if grep ' ' $CFILES $OFILES; then echo "BUG: TAB found." err=1; fi if grep ' $' $MFILES $SCRIPTS; then echo "BUG: TAB found in scripts." err=1; fi exit $err gp2c-0.0.14/config/compile0000755000175000017500000001635014700755152012206 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: gp2c-0.0.14/config/pari-version0000755000175000017500000000021514700755152013165 00000000000000#! /bin/sh . "$1" if [ "x$pari_release_verbose" = "x" ]; then version="unknown" else version="$pari_release_verbose" fi echo "$version" gp2c-0.0.14/config/pari-conf0000755000175000017500000000004414700755152012425 00000000000000#! /bin/sh . "$1" eval 'echo $'"$2" gp2c-0.0.14/config/missing0000755000175000017500000001533014700755152012224 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.14/config/ylwrap0000755000175000017500000001531214700755152012071 00000000000000#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2013-01-12.17; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . get_dirname () { case $1 in */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; # Otherwise, we want the empty string (not "."). esac } # guard FILE # ---------- # The CPP macro used to guard inclusion of FILE. guard () { printf '%s\n' "$1" \ | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ -e 's/__*/_/g' } # quote_for_sed [STRING] # ---------------------- # Return STRING (or stdin) quoted to be used as a sed pattern. quote_for_sed () { case $# in 0) cat;; 1) printf '%s\n' "$1";; esac \ | sed -e 's|[][\\.*]|\\&|g' } case "$1" in '') echo "$0: No files given. Try '$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input=$1 shift # We'll later need for a correct munging of "#line" directives. input_sub_rx=`get_dirname "$input" | quote_for_sed` case $input in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input=`pwd`/$input ;; esac input_rx=`get_dirname "$input" | quote_for_sed` # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot=false if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot=true fi # The parser itself, the first file, is the destination of the .y.c # rule in the Makefile. parser=$1 # A sed program to s/FROM/TO/g for all the FROM/TO so that, for # instance, we rename #include "y.tab.h" into #include "parse.h" # during the conversion from y.tab.c to parse.c. sed_fix_filenames= # Also rename header guards, as Bison 2.7 for instance uses its header # guard in its implementation file. sed_fix_header_guards= while test $# -ne 0; do if test x"$1" = x"--"; then shift break fi from=$1 # Handle y_tab.c and y_tab.h output by DOS if $y_tab_nodot; then case $from in "y.tab.c") from=y_tab.c;; "y.tab.h") from=y_tab.h;; esac fi shift to=$1 shift sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" done # The program to run. prog=$1 shift # Make any relative path in $prog absolute. case $prog in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog=`pwd`/$prog ;; esac dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then for from in * do to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend '../'. case $to in [\\/]* | ?:[\\/]*) target=$to;; *) target=../$to;; esac # Do not overwrite unchanged header files to avoid useless # recompilations. Always update the parser itself: it is the # destination of the .y.c rule in the Makefile. Divert the # output of all other files to a temporary file so we can # compare them to existing versions. if test $from != $parser; then realtarget=$target target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` fi # Munge "#line" or "#" directives. Don't let the resulting # debug information point at an absolute srcdir. Use the real # output file name, not yy.lex.c for instance. Adjust the # include guards too. sed -e "/^#/!b" \ -e "s|$input_rx|$input_sub_rx|" \ -e "$sed_fix_filenames" \ -e "$sed_fix_header_guards" \ "$from" >"$target" || ret=$? # Check whether files must be updated. if test "$from" != "$parser"; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$to is unchanged" rm -f "$target" else echo "updating $to" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the parser. This is a # blatant hack to let us support using "yacc -d". If -d is not # specified, don't fail when the header file is "missing". if test "$from" = "$parser"; then ret=1 fi fi done fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.14/config/module-build0000755000175000017500000000124514700755152013135 00000000000000#! /bin/sh . "$1" if test "x$modules_build" = "x"; then # /usr/bin/sed on solaris does not understand \+ case "$DLLDFLAGS" in *LIBPARI_SONAME*) mydlldflags=`echo "$DLLDFLAGS" | sed -e 's/-[^ \t][^ \t]*[= \t][ \t]*\$(LIBPARI_SONAME)//'`;; *) mydlldflags=`echo "$DLLDFLAGS" | sed -e 's/-[^ \t][^ \t]*[ \t][ \t]*\$@//'`;; esac if test "$static" = "n"; then LIBS="$LIBS $LDDYN" fi myextradlldflags=`eval echo $EXTRADLLDFLAGS` myincludedir=`echo "$includedir" | sed -e 's/\/pari\/*$//'` echo "$CC -c -o %s.o $cflags -I$myincludedir %s.c && $DLLD -o %s.$DLSUFFIX $mydlldflags %s.o $myextradlldflags" else echo "$modules_build" | sed 's/"/\\"/g' fi gp2c-0.0.14/config/depcomp0000755000175000017500000005601614700755152012210 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.14/config/install-sh0000755000175000017500000003413714700755152012637 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gp2c-0.0.14/gp2c0000755000175000017500000000042413623476440010142 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f src/gp2c; then cat <&2 gp2c has not been compiled. Please type ./configure make to compile it. EOF exit 1; fi GP2C_FUNC_DSC=desc/func.dsc exec src/gp2c "$@" gp2c-0.0.14/INSTALL0000644000175000017500000000376313614057635010424 00000000000000Installation Note: You need the `pari.cfg' file from your PARI installation. PARI installs this file in "$prefix/lib/pari/pari.cfg" Copy or link it to this directory and run Run `./configure' . Then run `make' . Alternatively you can run `./configure --with-paricfg=.../lib/pari/pari.cfg' and `make'. You can run `make check' for an automated check, but it requires your environment being properly detected, so it may fail even if gp2c is usable. Also the installed version of PARI/GP must match the version of the source tree. The "args" check fails if the version mismatch. You can try gp2c in this directory with the script ./gp2c . You can do a "compile-and-run" with the script ./gp2c-run . You can do a "compile-and-debug" with the script ./gp2c-dbg . You can install gp2c and gp2c-run (in /usr/local/bin) by running make install as root. configure support standard configure script options, for example to install in /usr/bin use ./configure --prefix=/usr The following gp2c specific option are recognized. --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer. --with-perl Perl is needed to compile the description files, but gp2c come with a precompiled description for PARI 2.1. so you can use it without perl. Default is to use perl if it is found. You can specify the path to perl with --with-perl=PATH. --with-paricfg PARI configuration is needed to build plug-ins. gp2c itself can be compiled without it, but gp2c-run and 'make check' will not work. You must specify the path to the 'pari.cfg' file with --with-paricfg=PATH. --with-paricfg-dbg=FILE gp2c-dbg is more useful with the debugging version of PARI. You can specify the path to the 'pari.cfg' file of a debugging version with --with-paricfg-dbg=PATH while still using the optimised version with gp2c-run. gp2c-0.0.14/configure.ac0000644000175000017500000001463014676543355011664 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT([gp2c], [0.0.14]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_SRCDIR([src/gp2c.c]) AM_INIT_AUTOMAKE([serial-tests]) AM_MAINTAINER_MODE dnl Be nice with packagers. AC_CONFIG_HEADERS([src/config.h]) dnl Checks for programs. AC_PROG_CC AC_PROG_LEX([yywrap]) AC_PROG_YACC dnl look for perl AC_ARG_WITH(perl, [ --with-perl[=FILE] Perl is needed to compile the description files. But gp2c comes with precompiled descriptions for PARI 2.17, so can be used without perl. Default is to use perl if we find it. You can specify the path to perl with --with-perl=PATH.]) if test "$with_perl" = "no"; then PERL_PATH=/bin/false elif test -x "$with_perl"; then PERL_PATH="$with_perl" else AC_PATH_PROG(PERL_PATH,perl,/bin/false) fi dnl check for PARI configuration AC_ARG_WITH(paricfg, [ --with-paricfg[=FILE] Details about PARI configuration are needed to build plug-ins. Without them, gp2c itself can be compiled, but gp2c-run and 'make check' will not work. You must specify the path to the 'pari.cfg' file with --with-paricfg=PATH.]) AC_MSG_CHECKING(for multiarch system) multiarch=`$CC $CFLAGS -print-multiarch 2>/dev/null` AC_MSG_RESULT($multiarch) if test "$with_paricfg" = "no" ; then PARI_CONFIG= else AC_MSG_CHECKING(for PARI configuration) if test "$with_paricfg" = "yes" || test "x$with_paricfg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i"; then PARI_CONFIG="$i"; fi; done; else test -f "$with_paricfg" && PARI_CONFIG="$with_paricfg" fi if test "x$with_paricfg" != "x" && test "x$PARI_CONFIG" = "x" ; then AC_MSG_ERROR([pari.cfg file not found. Please use --with-paricfg=PATH where PATH is the path to pari.cfg or dft.Config.in file.]) fi if test "x$PARI_CONFIG" = "x"; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT($PARI_CONFIG) fi fi AC_ARG_WITH(paricfg-dbg, [ --with-paricfg-dbg[=FILE] gp2c-dbg is more useful with the debugging version of PARI. You can specify the path to the 'pari.cfg' file of a debugging version with --with-paricfg-dbg=PATH while still using the optimised version with gp2c-run. ]) if test "$with_paricfg_dbg" = "no" ; then PARI_CONFIG_DBG= else AC_MSG_CHECKING([for PARI configuration (debugging)]) if test "$with_paricfg_dbg" = "yes" || test "x$with_paricfg_dbg" = "x" ; then for i in /usr/lib/pari/pari.cfg \ "/usr/lib/$multiarch/pari/pari.cfg" \ /usr/local/lib/pari/pari.cfg \ "$srcdir/../pari.cfg" \ "$srcdir/pari.cfg" do if test -f "$i.dbg"; then PARI_CONFIG_DBG="$i.dbg"; fi; done; else test -f "$with_paricfg_dbg" && PARI_CONFIG_DBG="$with_paricfg_dbg" fi if test "x$with_paricfg_dbg" != "x" && test "x$PARI_CONFIG_DBG" = "x" ; then AC_MSG_ERROR([pari.cfg[.dbg] file not found. Please use --with-paricfg-dbg=PATH where PATH is the path to pari.cfg[.dbg] or dft.Config.in file.]) fi if test "x$PARI_CONFIG_DBG" = "x"; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT($PARI_CONFIG_DBG) fi fi if test "x$PARI_CONFIG" != "x" ; then AC_MSG_CHECKING(for PARI version) PARI_VERSION=`$srcdir/config/pari-version $PARI_CONFIG` AC_MSG_RESULT($PARI_VERSION) AC_MSG_CHECKING(for PARI module build) PARI_MODULE_BUILD=`$srcdir/config/module-build $PARI_CONFIG` AC_MSG_RESULT($PARI_MODULE_BUILD) AC_MSG_CHECKING(for GP path) GP_PATH=`$srcdir/config/pari-conf $PARI_CONFIG bindir`/gp AC_MSG_RESULT($GP_PATH) AC_MSG_CHECKING(for PARI data directory) PARI_DATADIR=`$srcdir/config/pari-conf $PARI_CONFIG datadir` AC_MSG_RESULT($PARI_DATADIR) AC_MSG_CHECKING(for PARI description database) PARI_DESC="$PARI_DATADIR/pari.desc"; if test -f "$PARI_DESC"; then AC_MSG_RESULT($PARI_DESC) else AC_MSG_RESULT([not found]) PARI_DESC= fi else PARI_VERSION='2.17.x (released)' PARI_MODULE_BUILD="`pwd`/$srcdir/config/missing $PARI_CONFIG"; GP_PATH="gp" fi if test "x$PARI_CONFIG_DBG" != "x" ; then AC_MSG_CHECKING([for PARI module build (debugging)]) PARI_MODULE_DEBUG=`$srcdir/config/module-build $PARI_CONFIG_DBG` AC_MSG_RESULT($PARI_MODULE_DEBUG) AC_MSG_CHECKING([for GP path (debugging)]) GP_PATH_DBG=`$srcdir/config/pari-conf $PARI_CONFIG_DBG bindir`/gp AC_MSG_RESULT($GP_PATH_DBG) GP2C_DBG="gp2c-dbg" GP2C_DBG1="gp2c-dbg.1" else PARI_MODULE_DEBUG=$PARI_MODULE_BUILD GP_PATH_DBG=$GP_PATH GP2C_DBG="" GP2C_DBG1="" fi AC_DEFINE_UNQUOTED(PARI_VERSION,"$PARI_VERSION",[target PARI version]) AC_DEFINE_UNQUOTED(PARI_MODULE_BUILD,"$PARI_MODULE_BUILD",[target PARI module build]) AC_SUBST(PARI_VERSION) AC_SUBST(PARI_MODULE_BUILD) AC_SUBST(GP_PATH) AC_SUBST(PARI_DATADIR) AC_SUBST(PARI_DESC) AC_SUBST(PARI_MODULE_DEBUG) AC_SUBST(GP_PATH_DBG) AC_SUBST(GP2C_DBG) AC_SUBST(GP2C_DBG1) dnl RUNTEST AC_MSG_CHECKING([for RUNTEST (if needed)]) if test "x$RUNTEST" = "x" && test "x$PARI_CONFIG" != "x" ; then PARI_RUNTEST=`$srcdir/config/pari-conf $PARI_CONFIG RUNTEST` else PARI_RUNTEST="$RUNTEST" fi AC_MSG_RESULT($PARI_RUNTEST) AC_SUBST(PARI_RUNTEST) dnl Checks for header files. AC_CHECK_HEADERS(malloc.h unistd.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_STRUCT_TM dnl Checks for library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS(strdup strtol getopt strcmp memccpy strrchr) dnl How to use echo ECHON=${ECHO_N-"$ac_n"} ECHOC=${ECHO_C-"$ac_c"} ECHOT=${ECHO_T-"$ac_t"} AC_SUBST(ECHON) AC_SUBST(ECHOC) AC_SUBST(ECHOT) if test "$bindir" = '${exec_prefix}/bin'; then if test "x${exec_prefix}" != xNONE; then mybindir=${exec_prefix}/bin elif test "x${prefix}" != xNONE; then mybindir=${prefix}/bin else mybindir=${ac_default_prefix}/bin fi else mybindir=$bindir fi AC_SUBST(mybindir) AC_CONFIG_FILES([Makefile src/Makefile desc/Makefile doc/Makefile test/Makefile test2/Makefile test3/Makefile test4/Makefile scripts/Makefile scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg doc/gp2c-run.1 doc/gp2c-dbg.1]) AC_CONFIG_COMMANDS([default],[chmod a+x scripts/822_desc.pl scripts/runtest scripts/dotest scripts/gp2c-run scripts/gp2c-dbg],[]) AC_OUTPUT gp2c-0.0.14/desc/0000755000175000017500000000000014700755151010353 500000000000000gp2c-0.0.14/desc/Makefile.in0000644000175000017500000003444614676603632012363 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = desc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(pkgdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkgdata_DATA = func.dsc EXTRA_DIST = $(COMPAT_DESC) $(OVERRIDE_DESC) $(FUNC2X_DSC) CLEANFILES = func.dsc COMPILE_DESC = ../scripts/822_desc.pl FUNC2X_DSC = $(srcdir)/func23.dsc $(srcdir)/func25.dsc $(srcdir)/func27.dsc $(srcdir)/func29.dsc $(srcdir)/func211.dsc $(srcdir)/func213.dsc $(srcdir)/func215.dsc $(srcdir)/func217.dsc COMPAT_DESC = $(srcdir)/compat.desc OVERRIDE_DESC = $(srcdir)/override.desc all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu desc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu desc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgdataDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-pkgdataDATA .PRECIOUS: Makefile func.dsc: $(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) @$(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) >func.dsc\ && echo "Description recompiled" \ || ( cp $(srcdir)/func215.dsc func.dsc && echo "Using PARI 2.15 description" ) $(OVERRIDE_DESC): touch $(OVERRIDE_DESC) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/desc/func25.dsc0000644000175000017500000020516412163255364012102 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Col 2 0 2 cgetg(1,t_COL) 0 1 vec gtocol(${1 code}) 1 gen 1 vec 1 gtocol DG 1 gen Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 listcreate() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 1 ${1 :genstr cast} 1 gen 3 genstr copy parens 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovec(${1 code}) 1 gen 1 vec 1 gtovec DG 1 gen Vecrev 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev DG 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall DG 1 gen _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 17 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 2 0 1 gel(${1 code}, 19) 1 bell 2 gen copy 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 4 gal_get_roots(${1 code}) 1 gal 2 vec copy ell_get_roots(${1 code}) 1 bell 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.w 2 0 1 gel(${1 code}, 18) 1 bell 2 gen copy 1 member_w G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 12 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 20 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _=_ 1 1 gstore &G 2 gen copy _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 16 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void lg(${1 code}) != 3 || typ(${parens 1 code}[2]) != t_POLMOD 1 @clgp 2 bool parens checksmallell(${1 code}) 1 ell 1 void checkell(${1 code}) 1 bell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _call_GG 1 0 1 ${parens 1 code}(${2 code}, ${3 code}) 3 func_GG gen gen 1 gen _cast 1 0 94 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 bell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 closure 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str ${1 str_format} 1 #str 1 typ bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 bell 1 ell 1 gen 1 ell 1 gen 1 bell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 8 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(primer1) 0 1 void _err_type 1 0 1 pari_err(typeer, ${1 code}) 1 str 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forvec_start 1 0 1 forvec_start(${1 code}, ${2 code}, &${3 code}, &${4 code}) 4 gen small &gen &func_GG 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _toGENstr 1 0 2 strtoGENstr(${1 code}) 1 str 1 genstr GENtoGENstr(${1 code}) 1 gen 1 genstr _tovec 1 0 6 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 5 mkvecs(prec) 0 2 vec prec mkvec2(${1 code}, stoi(prec)) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(prec)) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(prec)) 3 gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(prec)) 2 gen ... 2 vec prec _type_preorder 1 0 17 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 4 empty bell ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 31 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 bell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gach Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 alarm0 D0,L, 1 void algdep 1 1 algdep0 GLD0,L, 1 gen alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gash Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gath Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr0 GDGDG 1 gen bezout 1 1 vecbezout GG 1 gen bezoutres 1 1 vecbezoutres GG 1 gen bigomega 2 0 2 bigomega(${1 code}) 1 int 1 small gbigomega(${1 code}) 1 gen 1 gen 1 gbigomega G 1 gen binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, prec) 1 gen 2 bnf prec Buchall(${1 code}, 0, prec) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno GG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen charpoly 1 1 charpoly0 GDnD3,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen component 1 1 compo GL 1 gen concat 2 0 8 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 list list 1 list concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 pnqn G 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gch Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_G diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen gen ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1 GLp 2 gen prec elladd 1 1 addell GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellanalyticrank 1 1 ellanalyticrank GDGp 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup GDG 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 3 ellinit(${1 code}, prec) 2 gen ?0 2 bell prec smallellinit(${1 code}) 2 gen 1 1 ell ellinit0(${1 code}, ${2 code}, prec) 2 gen small 2 ell prec 1 ellinit0 GD0,L,p 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 powell GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GGD0,L,p 2 gen prec ellsub 1 1 subell GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,DPp 2 gen prec ellzeta 1 1 ellzeta GGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec error 2 0 1 pari_err(talker, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 2 eulerphi(${1 code}) 1 int 1 int geulerphi(${1 code}) 1 gen 1 gen 1 geulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec extern 1 1 extern0 s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 small small closure 1 void 1 forell0 VLLI 1 void 2 4 _wrap_vG forprime 1 1 forprime V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 1 1 forvec V=GID0,L, 1 void frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggamd Gp 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hilbert 1 1 hilbert GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog GGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 1 1 idealprimedec GG 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small if 1 1 ifpari GDEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfouriercos 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourcos0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfourierexp 3 0 1 intfourierexp(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourexp0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfouriersin 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfoursin0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?small ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec 2 3 _wrap_G intlaplaceinv 3 0 1 intlaplaceinv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intlaplaceinv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininv 3 0 1 intmellininv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intmellininv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?small 2 gen prec 1 intnumromb0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool gisfundamental(${1 code}) 1 gen 1 gen 1 gisfundamental G 1 gen ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 bool 1 gispseudoprime GD0,L, 1 gen issquare 2 0 5 Z_issquare(${1 code}) 1 int 1 bool gissquare(${1 code}) 1 mp 1 int gissquare(${1 code}) 1 gen 1 gen Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool gissquareall(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 gissquareall GD& 1 gen issquarefree 2 0 2 issquarefree(${1 code}) 1 int 1 bool gissquarefree(${1 code}) 1 gen 1 gen 1 gissquarefree G 1 gen kill 1 1 kill0 r 1 void kronecker 2 0 5 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 int int 1 small gkronecker(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gkronecker GG 1 gen lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 listcreate() 1 ?gen 1 list 1 listcreate D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 eigen Gp 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 1 1 matimage0 GD0,L, 1 gen matimagecompl 1 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 1 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 2 0 2 moebius(${1 code}) 1 int 1 small gmoebius(${1 code}) 1 gen 1 gen 1 gmoebius G 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 2 nextprime(${1 code}) 1 int 1 int gnextprime(${1 code}) 1 gen 1 gen 1 gnextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis0 GD0,L,DG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc0 GD0,L,DG 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 nfval GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf GG 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen numbpart 1 1 numbpart G 1 gen numdiv 2 0 2 numbdiv(${1 code}) 1 int 1 int gnumbdiv(${1 code}) 1 gen 1 gen 1 gnumbdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 2 0 2 omega(${1 code}) 1 int 1 small gomega(${1 code}) 1 gen 1 gen 1 gomega G 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 padicprec GG 1 small partitions 1 1 partitions LD0,L, 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen polisirreducible 1 1 gisirreducible G 1 gen pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredord 1 1 ordred G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polroots 1 1 roots0 GD0,L,p 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 2 0 8 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 2 precprime(${1 code}) 1 int 1 int gprecprime(${1 code}) 1 gen 1 gen 1 gprecprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes L 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, prec) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void random 1 1 genrand DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfelementabstorel GG 1 gen rnfeltdown 1 1 rnfelementdown GG 1 gen rnfeltreltoabs 1 1 rnfelementreltoabs GG 1 gen rnfeltup 1 1 rnfelementup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhermite GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinit GG 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 1 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen 1 select0 GG 1 gen 2 1 _wrap_bG serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 recip G 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 6 sumdiv(${1 code}) 2 int ?1 1 int numbdiv(${1 code}) 2 int 0 1 int gsumdiv(${1 code}) 2 gen ?1 1 gen gnumbdiv(${1 code}) 2 gen 0 1 gen sumdivk(${1 code}, ${2 code}) 2 int small 1 int gsumdivk(${1 code}, ${2 code}) 2 gen small 1 gen 1 gsumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, prec) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdiv 1 1 divsum GVE 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnum0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnumalt 3 0 1 sumnumalt(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gth Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void until 1 1 untilpari EI 1 void valuation 1 1 ggval GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecsmall_max(${1 code}) 1 vecsmall 1 small vecmax(${1 code}) 1 gen 1 gen 1 vecmax G 1 gen vecmin 2 0 2 vecsmall_min(${1 code}) 1 vecsmall 1 small vecmin(${1 code}) 1 gen 1 gen 1 vecmin G 1 gen vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(user, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 2 0 2 znprimroot(${1 code}) 1 int 1 gen znprimroot0(${1 code}) 1 gen 1 gen 1 znprimroot0 G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.14/desc/compat.desc0000644000175000017500000000000112141547407012405 00000000000000 gp2c-0.0.14/desc/func27.dsc0000644000175000017500000022374312314047672012106 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(prec) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 listcreate() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 12 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 16 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 13 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _cast 1 0 96 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 12 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forvec_t 1 C!forvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _parapply_worker 1 1 parapply_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 6 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 5 mkvecs(prec) 0 2 vec prec mkvec2(${1 code}, stoi(prec)) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(prec)) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(prec)) 3 gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(prec)) 2 gen ... 2 vec prec _type_preorder 1 0 19 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 36 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forprime_t 1 forprime 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algdep 1 1 algdep0 GLD0,L, 1 gen alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, prec) 1 gen 2 bnf prec Buchall(${1 code}, 0, prec) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charpoly 1 1 charpoly0 GDnD5,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 8 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 list list 1 list concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_G diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1 GLp 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellanalyticrank 1 1 ellanalyticrank GDGp 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, prec) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec extern 1 1 extern0 s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 small small closure 1 void 1 forell0 VLLI 1 void 2 4 _wrap_vG forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forprime 2 1 forprime V=GDGI 1 void 3 4 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GGDG 1 gen getabstime 1 1 getabstime 1 small getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog GGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 1 1 idealprimedec GG 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfouriercos 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourcos0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfourierexp 3 0 1 intfourierexp(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfourexp0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfouriersin 3 0 1 intfouriercos(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, prec) 5 gen gen gen gen ?gen 2 gen prec 1 intfoursin0 V=GGGEDGp 2 gen prec 2 4 _wrap_G intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?small ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec 2 3 _wrap_G intlaplaceinv 3 0 1 intlaplaceinv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intlaplaceinv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininv 3 0 1 intmellininv(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intmellininv0 V=GGEDGp 2 gen prec 2 3 _wrap_G intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, prec) 4 gen gen gen ?small 2 gen prec 1 intnumromb0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 bool 1 gispseudoprime GD0,L, 1 gen issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 listcreate() 1 ?gen 1 list 1 listcreate D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec keri(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp GDGDG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc_gp GDGDG 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 nfval GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf GG 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 1 1 omega G 1 small padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 padicprec GG 1 small parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 1 1 parfor V=GDGJDVDI 1 void parforprime 1 1 parforprime V=GDGJDVDI 1 void parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 2 0 8 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, prec) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDG 1 gen qfisominit 1 1 qfisominit0 GDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void random 1 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown GG 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinit GG 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 gen 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG seralgdep 1 1 seralgdep GLL 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, prec) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits G 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnum0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnumalt 3 0 1 sumnumalt(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, prec) 5 gen gen gen ?gen ?small 2 gen prec 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec 2 3 _wrap_G sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, prec) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 2 0 1 system(${1 code}) 1 str 1 void 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gvaluation GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.14/desc/func29.dsc0000644000175000017500000025400313006430517012072 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list gtolist(${1 code}) 1 gen 1 list 1 gtolist DG 1 gen Map 1 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDnDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 3 deriv(${1 code},-1) 1 gen 1 gen FpX_deriv(${1 code}, p) 1 FpX 1 FpX FqX_deriv(${1 code}, T, p) 1 FqX 1 FqX 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 34 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 20 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 13 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _cast 1 0 109 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 13 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forvec_t 1 C!forvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _parapply_worker 1 1 parapply_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker UUUGGGGLGG 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 41 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forprime_t 1 forprime 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algabsdim 1 1 algabsdim G 1 small algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDn 1 gen algdecomposition 1 1 alg_decomposition G 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim G 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglathnf 1 1 alglathnf GG 1 gen algleftmultable 1 1 algleftmultable GG 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GG 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsplittingmatrix 1 1 algsplittingmatrix GG 1 gen algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtrace 1 1 algtrace GG 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GD0,L,DGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision0 GD0,L, 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 buchnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 10 gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec cotanh 1 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 1 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 derivnum0 V=GEp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree Gb 2 gen prec ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,U, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 mp prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 3 Z_factor(${1 code}) 2 int ?-1 1 vec factor(${1 code}) 2 gen ?-1 1 vec factor0(${1 code}, ${2 code}) 2 gen small 1 vec 1 gp_factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fflog 1 1 fflog GGDG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forprime 2 1 forprime V=GDGI 1 void 3 4 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius GUL 1 gen hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealstar 1 1 idealstar0 DGGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGL 1 gen lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GD0,L,DGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec L 1 void localprec 1 1 localprec L 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete GG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec keri(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 small msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp G 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 2 0 0 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 0 1 parfor(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parfor0 V=GDGJDVDI 1 void parforprime 2 0 1 parforprime(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parforprime0 V=GDGJDVDI 1 void parforvec 2 0 1 parforvec(${1 code}, ${2 code}, ${5 code}, NULL, NULL) 5 gen closure ?small 1 void 1 parforvec0 V=GJDVDID0,L, 1 void parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permtonum 1 1 permtonum G 1 gen plot 1 1 pariplot V=GGEDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LDGDGD0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGEpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 2 0 9 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 mp small 1 mp precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGEpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit G 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 2 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinc 1 1 gsinc Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?0$ 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetamult 1 1 zetamult Gp 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.14/desc/func217.dsc0000644000175000017500000033042314676527242012172 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small #_~ 2 0 1 gtranslength(${1 code}) 1 gen 1 small 1 gtranslength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_histtime D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GDGDG 1 gen Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 pari_strchr G 1 gen Strexpand 1 1 strexpand s* 1 gen Strprintf 1 1 strprintf ss* 1 gen Strtex 1 1 strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 2 gtovecsmall(${1 code}) 2 gen ?0 1 vecsmall gtovecsmall0(${1 code}, ${2 code}) 2 gen small 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens equalsi(${1 code}, ${2 code}) 2 small int 1 negbool equalis(${1 code}, ${2 code}) 2 int small 1 negbool equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool equalrr(${1 code}, ${2 code}) 2 real real 1 negbool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _# 2 0 1 mpprimorial(${1 code}) 1 small 1 int 1 mpprimorial L 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 1 1 deriv GDn 1 gen _'_ 2 0 3 deriv(${1 code}, -1) 2 gen 1 1 gen FpX_deriv(${1 code}, p) 2 FpX 1 1 FpX FqX_deriv(${1 code}, T, p) 2 FqX 1 1 FqX 1 derivn GLDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 36 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real gmulsg(${1 code}, ${2 code}) 2 small real 1 mp (${1 code}, 0)/*for side effect*/ 2 mp 0 1 small mulrs(${1 code}, ${2 code}) 2 real #small 1 real gmulgs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real gmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vecvecsmall copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vecvecsmall copy member_group(${1 code}) 1 gen 2 vecvecsmall copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.normfu 1 1 member_normfu G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens equalsi(${1 code}, ${2 code}) 2 small int 1 bool !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool equalis(${1 code}, ${2 code}) 2 int small 1 bool equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool equalrr(${1 code}, ${2 code}) 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _FpM_ratlift_worker 1 1 FpM_ratlift_worker GGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _QM_charpoly_ZX_worker 1 1 QM_charpoly_ZX_worker GGG 1 gen _QXQ_div_worker 1 1 QXQ_div_worker GGGG 1 gen _QXQ_inv_worker 1 1 QXQ_inv_worker GGG 1 gen _RgM_ZM_mul_worker 1 1 RgM_ZM_mul_worker GG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_gauss_worker 1 1 ZM_gauss_worker GGG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZM_ker_worker 1 1 ZM_ker_worker GG 1 gen _ZM_mul_worker 1 1 ZM_mul_worker GGG 1 gen _ZM_sqr_worker 1 1 ZM_sqr_worker GG 1 gen _ZXQX_composedsum_worker 1 1 ZXQX_composedsum_worker GGGG 1 gen _ZXQX_resultant_worker 1 1 ZXQX_resultant_worker GGGGG 1 gen _ZXQ_minpoly_worker 1 1 ZXQ_minpoly_worker GGGL 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_composedsum_worker 1 1 ZX_composedsum_worker GGG 1 gen _ZX_gcd_worker 1 1 ZX_gcd_worker GGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 10 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vecvecsmall small 1 vecsmall gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 32 sqru(${1 code}) 2 usmall 2 1 int sqrs(${1 code}) 2 small 2 1 int sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 116 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 vecvecsmall 1 vec 1 gen 1 vec 1 vec 1 vecvecsmall 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 vecvecsmall 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _chinese_unit_worker 1 1 chinese_unit_worker GGGGGG 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 3 0 1 "x" 1 var 1 1 "y" 1 var fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 20 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 parfor_t 1 C!parfor_t 0 parforstep_t 1 C!parforstep_t 0 parforeach_t 1 C!parforeach_t 0 parforprime_t 1 C!parforprime_t 0 parforvec_t 1 C!parforvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGGD1,L,p 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _dirartin_worker 1 1 dirartin_worker GUGGGG 1 gen _direllnf_worker 1 1 direllnf_worker GUG 1 gen _direllsympow_worker 1 1 direllsympow_worker GUGU 1 gen _dirgenus2_worker 1 1 dirgenus2_worker GLG 1 gen _dirhgm_worker 1 1 dirhgm_worker GUGG 1 gen _ecpp_ispsp_worker 1 1 ecpp_ispsp_worker G 1 gen _ecpp_sqrt_worker 1 1 ecpp_sqrt_worker GGG 1 gen _ecpp_step2_worker 1 1 ecpp_step2_worker GGGL 1 gen _eisker_worker 1 1 eisker_worker GGGGG 1 gen _ellQ_factorback_worker 1 1 ellQ_factorback_worker GGGGU 1 gen _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int ?int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _inv 1 1 ginv G 1 gen _lerch_worker 1 1 lerch_worker GG 1 gen _lfuninit_theta2_worker 1 1 lfuninit_theta2_worker LGGGGGG 1 gen _lfuninit_worker 1 1 lfuninit_worker LGGGGGGGG 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _nflist_A462_worker 1 1 nflist_A462_worker GGGGG 1 gen _nflist_A46S46P_worker 1 1 nflist_A46S46P_worker GGGG 1 gen _nflist_A4S4_worker 1 1 nflist_A4S4_worker GGGG 1 gen _nflist_C32C4_worker 1 1 nflist_C32C4_worker GGGG 1 gen _nflist_C32D4_worker 1 1 nflist_C32D4_worker GGGG 1 gen _nflist_C3C3_worker 1 1 nflist_C3C3_worker GGGG 1 gen _nflist_C3_worker 1 1 nflist_C3_worker GG 1 gen _nflist_C4vec_worker 1 1 nflist_C4vec_worker GGGG 1 gen _nflist_C5_worker 1 1 nflist_C5_worker GG 1 gen _nflist_C6_worker 1 1 nflist_C6_worker GGGGG 1 gen _nflist_C9_worker 1 1 nflist_C9_worker GGG 1 gen _nflist_CL_worker 1 1 nflist_CL_worker GGG 1 gen _nflist_D4_worker 1 1 nflist_D4_worker GGGG 1 gen _nflist_D612_worker 1 1 nflist_D612_worker GGGG 1 gen _nflist_D9_worker 1 1 nflist_D9_worker GGG 1 gen _nflist_DL_worker 1 1 nflist_DL_worker GGGGGG 1 gen _nflist_Mgen_worker 1 1 nflist_Mgen_worker GGGG 1 gen _nflist_S32_worker 1 1 nflist_S32_worker GGGGG 1 gen _nflist_S36_worker 1 1 nflist_S36_worker GGG 1 gen _nflist_S3C3_worker 1 1 nflist_S3C3_worker GGG 1 gen _nflist_S3I_worker 1 1 nflist_S3I_worker GG 1 gen _nflist_S3R_worker 1 1 nflist_S3R_worker GG 1 gen _nflist_S462_worker 1 1 nflist_S462_worker GGGGG 1 gen _nflist_S46M_worker 1 1 nflist_S46M_worker GGGG 1 gen _nflist_V4_worker 1 1 nflist_V4_worker GGGG 1 gen _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _parapply_slice_worker 1 1 parapply_slice_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_init 1 0 1 parfor_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parfor gen gen gen 1 void _parfor_next 1 0 1 parfor_next(&${1 code}) 1 parfor 1 gen _parfor_stop 1 0 1 parfor_stop(&${1 code}) 1 parfor 1 void _parfor_worker 1 1 parfor_worker GG 1 gen _parforeach_init 1 0 1 parforeach_init(&${1 code}, ${2 code}, ${3 code}) 3 parforeach gen gen 1 void _parforeach_next 1 0 1 parforeach_next(&${1 code}) 1 parforeach 1 gen _parforeach_stop 1 0 1 parforeach_stop(&${1 code}) 1 parforeach 1 void _parforprime_init 1 0 1 parforprime_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforprime gen ?gen gen 1 void _parforprime_next 1 0 1 parforprime_next(&${1 code}) 1 parforprime 1 gen _parforprime_stop 1 0 1 parforprime_stop(&${1 code}) 1 parforprime 1 void _parforprimestep_init 1 0 1 parforprimestep_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 parforprime gen ?gen gen gen 1 void _parforstep_init 1 0 1 parforstep_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 parforstep gen ?gen gen gen 1 void _parforstep_next 1 0 1 parforstep_next(&${1 code}) 1 parforstep 1 gen _parforstep_stop 1 0 1 parforstep_stop(&${1 code}) 1 parforstep 1 void _parforvec_init 1 0 1 parforvec_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforvec vec closure ?small 1 void _parforvec_next 1 0 1 parforvec_next(&${1 code}) 1 parforvec 1 gen _parforvec_stop 1 0 1 parforvec_stop(&${1 code}) 1 parforvec 1 void _parsqf_worker 1 1 parsqf_worker GGG 1 gen _parsum_slice_worker 1 1 parsum_slice_worker GGGG 1 gen _parsumprimefun_worker 1 1 parsumprimefun_worker GGGGGG 1 gen _partmap_reverse_frac_worker 1 1 partmap_reverse_frac_worker GGGGGL 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polclass_worker 1 1 polclass_worker GGG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker GUGGGGLGGGG 1 gen _primecertisvalid_ecpp_worker 1 1 primecertisvalid_ecpp_worker G 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _ramanujantau_worker 1 1 ramanujantau_worker GGGG 1 gen _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _serh_worker 1 1 serh_worker GGGGG 1 gen _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _taugen_n_worker 1 1 taugen_n_worker GGG 1 gen _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 4 empty vecvecsmall vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 49 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 vecvecsmall 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 parfor_t 1 parfor 0 parforstep_t 1 parforstep 0 parforeach_t 1 parforeach 0 parforprime_t 1 parforprime 0 parforvec_t 1 parforvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec airy 1 1 airy Gp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd DGGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly DGGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl DGGG 1 gen algdivr 1 1 algdivr DGGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GDG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD3,L, 1 gen alginv 1 1 alginv DGG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl DGGGD& 1 small_int algisinv 1 1 algisinv DGGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul DGGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg DGG 1 gen algnorm 1 1 algnorm DGGD0,L, 1 gen algpoleval 1 1 algpoleval DGGG 1 gen algpow 1 1 algpow DGGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom DGG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr DGG 1 gen algsub 1 1 algsub DGGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD3,L, 1 gen algtomatrix 1 1 algtomatrix DGGD0,L, 1 gen algtrace 1 1 algtrace DGGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec arity 1 1 arity0 G 1 gen asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GDGp 2 gen prec asympnumraw 1 1 asympnumraw0 GLDGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol_eval LDG 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besseljzero 1 1 besseljzero GD1,L,b 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 ybessel GGp 2 gen prec bessely 1 1 ybessel GGp 2 gen prec besselyzero 1 1 besselyzero GD1,L,b 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade0 GD-1,L,D-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision00 GDG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm0 GGD0,L, 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit0 GGDG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunits 1 1 bnfunits GDG 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassfield 1 1 bnrclassfield GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrcompositum 1 1 bnrcompositum GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinitmod GGD0,L,DG 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrmap 1 1 bnrmap GG 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec bnrstarkunit 1 1 bnrstarkunit GDG 1 gen break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 12 gconcat(${1 code}, ${2 code}) 2 vecvecsmall vecvecsmall 1 vecvecsmall gconcat1(${1 code}) 1 vecvecsmall 1 vecsmall gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 2 0 3 mpcos(${1 code}) 1 real 1 real gcos(${1 code}, ${prec}) 1 mp 2 real prec gcos(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcos Gp 2 gen prec cosh 2 0 2 gcosh(${1 code}, ${prec}) 1 mp 2 real prec gcosh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcosh Gp 2 gen prec cotan 2 0 2 gcotan(${1 code}, ${prec}) 1 mp 2 real prec gcotan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotan Gp 2 gen prec cotanh 2 0 2 gcotanh(${1 code}, ${prec}) 1 mp 2 real prec gcotanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivn 1 1 derivn GLDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirpowers 1 1 dirpowers LGp 2 gen prec dirpowerssum 1 1 dirpowerssum0 GGDGD0,L,p 2 gen prec dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ell2cover 1 1 ell2cover Gp 2 gen prec ellE 1 1 ellE Gp 2 gen prec ellK 1 1 ellK Gp 2 gen prec ellL1 1 1 ellL1 GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GDGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen elliscm 1 1 elliscm G 1 small ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisisom 1 1 ellisisom GG 1 gen ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellmaninconstant 1 1 ellmaninconstant G 1 gen ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclambdamu 1 1 ellpadiclambdamu GLD1,L,D0,L, 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrank 1 1 ellrank GD0,L,DGp 2 gen prec ellrankinit 1 1 ellrankinit Gp 2 gen prec ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsaturation 1 1 ellsaturation GGLp 2 gen prec ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen ellsupersingularj 1 1 ellsupersingularj G 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltrace 1 1 elltrace GG 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerfrac 1 1 eulerfrac L 1 gen eulerianpol 1 1 eulerianpol LDn 1 gen eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eulerpol 1 1 eulerpol LDn 1 gen eulerreal 1 1 eulerreal Lp 2 gen prec eulervec 1 1 eulervec L 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 real prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen export 0 exportall 1 1 exportall 1 void extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factormodcyclo 1 1 factormodcyclo LGD0,L,Dn 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffmaprel 1 1 ffmaprel GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fft 1 1 FFT GG 1 gen fftinv 1 1 FFTinv GG 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void foreach 1 1 foreachpari GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 3 0 1 forqfvec1(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 gen ?gen closure 1 void 1 forqfvec0 VGDGI 1 void 2 4 _wrap_vG forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissplittinginit 1 1 galoissplittinginit GDG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen gcharalgebraic 1 1 gcharalgebraic GDG 1 gen gcharconductor 1 1 gchar_conductor GG 1 gen gcharduallog 1 1 gcharduallog GG 1 gen gchareval 1 1 gchareval GGGD1,L, 1 gen gcharidentify 1 1 gchar_identify GGGp 2 gen prec gcharinit 1 1 gcharinit GGp 2 gen prec gcharisalgebraic 1 1 gcharisalgebraic GGD& 1 small_int gcharlocal 1 1 gcharlocal GGGpD& 2 gen prec gcharlog 1 1 gcharlog GGp 2 gen prec gcharnewprec 1 1 gcharnewprec Gp 2 gen prec genus2igusa 1 1 genus2igusa GD0,L, 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getlocalbitprec 1 1 getlocalbitprec b 2 small prec getlocalprec 1 1 getlocalprec p 2 small prec getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 halfgcd 1 1 ghalfgcd GG 1 gen hammingweight 1 1 hammingweight G 1 small harmonic 1 1 harmonic0 UDG 1 gen hgmalpha 1 1 hgmalpha G 1 gen hgmbydegree 1 1 hgmbydegree L 1 gen hgmcoef 1 1 hgmcoef GGG 1 gen hgmcoefs 1 1 hgmcoefs GGL 1 gen hgmcyclo 1 1 hgmcyclo G 1 gen hgmeulerfactor 1 1 hgmeulerfactor GGLD& 1 gen hgmgamma 1 1 hgmgamma G 1 gen hgminit 1 1 hgminit GDG 1 gen hgmissymmetrical 1 1 hgmissymmetrical G 1 small hgmparams 1 1 hgmparams G 1 gen hgmtwist 1 1 hgmtwist G 1 gen hilbert 1 1 hilbert GGDG 1 small hyperellchangecurve 1 1 hyperellchangecurve GG 1 gen hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperelldisc 1 1 hyperelldisc G 1 gen hyperellisoncurve 1 1 hyperellisoncurve GG 1 small_int hyperellminimaldisc 1 1 hyperellminimaldisc GDG 1 gen hyperellminimalmodel 1 1 hyperellminimalmodel GD&DG 1 gen hyperellordinate 1 1 hyperellordinate GG 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius0 GGL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hyperellred 1 1 hyperellred GD& 1 gen hypergeom 1 1 hypergeom DGDGGp 2 gen prec hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealdown 1 1 idealdown GG 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealismaximal 1 1 idealismaximal GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 gideallist GGD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstarmod DGGD1,L,DG 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumosc 1 1 intnumosc0 V=GEGD0,L,DGp 2 gen prec intnumromb 3 0 1 intnumromb_bitprec(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0 V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW GD0,L,p 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lerchphi 1 1 lerchphi GGGp 2 gen prec lerchzeta 1 1 lerchzeta GGGp 2 gen prec lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfundual 1 1 lfundual Gb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfuneuler 1 1 lfuneuler GGp 2 gen prec lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfunhgm 1 1 lfunhgm GGDGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunparams 1 1 lfunparams Gp 2 gen prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunshift 1 1 lfunshift GGD0,L,b 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GGb 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GDGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert0 WGL 2 gen copy listkill 1 1 listkill W 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 2 gen copy listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec G 1 void localprec 1 1 localprec G 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 3 expi(${1 code}) 2 int 2 1 small logint0(${1 code}, ${2 code}, NULL) 2 gen gen 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapapply 1 1 mapapply WGGDG 1 gen mapdelete 1 1 mapdelete WG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 2 0 1 indexrank(${1 code}) 1 gen 1 vecvecsmall 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matreduce 1 1 matreduce G 1 gen matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloisprojrep 1 1 mfgaloisprojrep GGp 2 gen prec mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfisetaquo 1 1 mfisetaquo GD0,L, 1 gen mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscosets 1 1 mscosets0 GG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfarey 1 1 msfarey0 GGD& 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis GD& 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfdiscfactors 1 1 nfdiscfactors G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltispower 1 1 nfispower GGLD& 1 small nfeltissquare 1 1 nfissquare GGD& 1 small nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 7 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, nf_ORIG, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, nf_RED, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, nf_ORIG|nf_RED, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, nf_NOLLL, ${prec}) 2 gen 4 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 2 0 2 nfisincl(${1 code}, ${2 code}) 3 gen gen ?0 1 gen nfisincl0(${1 code}, ${2 code}, ${3 code}) 3 gen gen small 1 gen 1 nfisincl0 GGD0,L, 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nflist 1 1 nflist GDGD-1,L,DG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit0 GGDn 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfresolvent 1 1 nfresolvent GD0,L, 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 nfrootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting0 GDGD0,L, 1 gen nfsubfields 1 1 nfsubfields0 GD0,L,D0,L, 1 gen nfsubfieldscm 1 1 nfsubfieldscm GD0,L, 1 gen nfsubfieldsmax 1 1 nfsubfieldsmax GD0,L, 1 gen nfweilheight 1 1 nfweilheight GGp 2 gen prec norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 2 0 3 gsupnorm(${1 code}, ${prec}) 1 gen 2 gen prec gsupnorm(${1 code}, ${prec}) 2 gen 2 gen prec gnorml1(${1 code}, ${prec}) 2 gen 1 2 gen prec 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 1 parfor0 V=GDGJDVDI 1 void 3 1 4 parfor _parfor_init _parfor_next _parfor_stop 5 gen gen ?gen closure ?notype 0 parforeach 2 1 parforeach0 GVJDVDI 1 void 3 1 4 parforeach _parforeach_init _parforeach_next _parforeach_stop 4 gen gen closure ?notype 0 parforprime 2 1 parforprime0 V=GDGJDVDI 1 void 3 1 4 parforprime _parforprime_init _parforprime_next _parforprime_stop 5 gen gen ?gen closure ?notype 0 parforprimestep 2 1 parforprimestep0 V=GDGGJDVDI 1 void 3 1 4 parforprime _parforprimestep_init _parforprime_next _parforprime_stop 6 gen gen gen ?gen closure ?notype 0 parforstep 2 1 parforstep0 V=GDGGJDVDI 1 void 3 1 4 parforstep _parforstep_init _parforstep_next _parforstep_stop 6 gen ?gen gen ?gen closure ?notype 0 parforvec 2 1 parforvec0 V=GJDVDID0,L, 1 void 3 1 4 parforvec _parforvec_init _parforvec_next _parforvec_stop 5 vec vec closure ?notype ?small 0 parploth 2 0 1 parploth(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen closure ?small ?small 2 vec prec 1 parploth V=GGJD0,M,D0,L,p 2 gen prec parplothexport 2 0 1 parplothexport(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen closure ?small ?small 2 gen prec 1 parplothexport GV=GGJD0,M,D0,L,p 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}) 3 gen gen closure 1 gen 1 parsum V=GGJ 1 gen partitions 2 0 1 partitions(${1 code}, ${2 code}, ${3 code}) 3 small ?gen ?gen 1 vecvecsmall 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permcycles 1 1 permcycles G 1 gen permorder 1 1 permorder G 1 gen permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 3 0 1 pariplot(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?gen ?gen 2 void prec 1 pariplot0 V=GGEDGDGp 2 void prec 2 3 _wrap_G plotarc 1 1 plotarc LGGD0,L, 1 void plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?small ?small 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 3 0 1 plotrecth(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 small gen gen gen ?small ?small 2 gen prec 1 plotrecth0 LV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polfromroots 1 1 polfromroots GDn 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval0 LDGD0,L, 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen polisclass 1 1 polisclass G 1 small poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 polisirreducible G 1 small pollaguerre 1 1 pollaguerre_eval0 LDGDGD0,L, 1 gen pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval0 LDGD0,L, 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 2 0 1 roots(${1 code}, ${prec}) 1 gen 2 vec prec 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 polrootspadic GGL 1 gen polrootsreal 2 0 1 realroots(${1 code}, ${2 code}, ${prec}) 2 gen ?gen 2 vec prec 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsubcyclofast 1 1 polsubcyclofast GLD0,L,D0,L, 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen polteichmuller 1 1 polteichmuller GUL 1 gen poltomonic 1 1 poltomonic GD& 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polylogmult 1 1 polylogmult_interpolate GDGDGp 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 1 1 precision00 GDG 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert0 GD0,L,D0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 2 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi_der GD0,L,p 2 gen prec psploth 3 0 1 psploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 psploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcomp 1 1 qfbcomp GG 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbcornacchia 1 1 qfbcornacchia GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpow 1 1 qfbpow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GG 1 gen qfbred 1 1 qfbred0 GD0,L,DGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GGD0,L, 1 gen qfcholesky 1 1 qfcholesky Gp 2 gen prec qfcvp 1 1 qfcvp0 GGDGDGD0,L,p 2 gen prec qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred0 GD0,L, 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 7 lll(${1 code}) 2 vec ?0 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfminimize 1 1 qfminimize G 1 gen qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 qfperfection G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quadunitindex 1 1 quadunitindex GG 1 gen quadunitnorm 1 1 quadunitnorm G 1 small quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau GD12,L, 1 gen random 2 0 3 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 real 1 real genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime0 DGDG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor0 GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGp 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen rootsof1 1 1 grootsof1 Lp 2 gen prec round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serdiffdep 1 1 serdiffdep GLL 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setdebug 1 1 setdebug DsD-1,L, 1 gen setdelta 2 0 1 setdelta(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setdelta GG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 2 0 3 mpsin(${1 code}) 1 real 1 real gsin(${1 code}, ${prec}) 1 mp 2 real prec gsin(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsin Gp 2 gen prec sinc 2 0 2 gsinc(${1 code}, ${prec}) 1 mp 2 real prec gsinc(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinc Gp 2 gen prec sinh 2 0 2 gsinh(${1 code}, ${prec}) 1 mp 2 real prec gsinh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small snfrank 1 1 snfrank GDG 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?small 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 5 sqru(${1 code}) 1 usmall 1 int sqrs(${1 code}) 1 small 1 int sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint0 GD& 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen strchr 1 1 pari_strchr G 1 gen strexpand 1 1 strexpand s* 1 gen strjoin 1 1 strjoin GDG 1 gen strprintf 1 1 strprintf ss* 1 gen strsplit 1 1 strsplit GDG 1 gen strtex 1 1 strtex s* 1 gen strtime 1 1 strtime L 1 gen subcyclohminus 1 1 subcyclohminus GDG 1 gen subcycloiwasawa 1 1 subcycloiwasawa GGD0,L, 1 gen subcyclopclgp 1 1 subcyclopclgp GGD0,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 3 0 1 sumdivmultexpr(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen gen 1 gen 1 sumdivmultexpr0 GVE 1 gen 2 3 _wrap_G sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0 V=GEb 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_Gp sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumnumsidi 3 0 1 sumnumsidi(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?long 2 gen prec 1 sumnumsidi0 V=GED1,L,p 2 gen prec 2 2 _wrap_Gb sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 small tan 2 0 2 gtan(${1 code}, ${prec}) 1 mp 2 real prec gtan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtan Gp 2 gen prec tanh 2 0 2 gtanh(${1 code}, ${prec}) 1 mp 2 real prec gtanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void unexport 0 unexportall 1 1 unexportall 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GDG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen ?small 1 vecsmall sort(${1 code}) 3 vecvecsmall ?0 1 vecvecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult_interpolate GDGp 2 gen prec zetamultall 1 1 zetamultall LD0,L,p 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultdual 1 1 zetamultdual G 1 gen znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 1 znorder(${1 code}, ${2 code}) 2 gen ?int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen znsubgroupgenerators 1 1 znsubgroupgenerators GD0,L, 1 gen gp2c-0.0.14/desc/override.desc0000644000175000017500000000000012455576706012754 00000000000000gp2c-0.0.14/desc/func215.dsc0000644000175000017500000032537414312120221012146 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_histtime D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GDGDG 1 gen Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 pari_strchr G 1 gen Strexpand 1 1 strexpand s* 1 gen Strprintf 1 1 strprintf ss* 1 gen Strtex 1 1 strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens equalsi(${1 code}, ${2 code}) 2 small int 1 negbool equalis(${1 code}, ${2 code}) 2 int small 1 negbool equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool equalrr(${1 code}, ${2 code}) 2 real real 1 negbool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 1 1 deriv GDn 1 gen _'_ 2 0 3 deriv(${1 code}, -1) 2 gen 1 1 gen FpX_deriv(${1 code}, p) 2 FpX 1 1 FpX FqX_deriv(${1 code}, T, p) 2 FqX 1 1 FqX 1 derivn GLDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 36 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real gmulsg(${1 code}, ${2 code}) 2 small real 1 mp (${1 code}, 0)/*for side effect*/ 2 mp 0 1 small mulrs(${1 code}, ${2 code}) 2 real #small 1 real gmulgs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real gmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vecvecsmall copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vecvecsmall copy member_group(${1 code}) 1 gen 2 vecvecsmall copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens equalsi(${1 code}, ${2 code}) 2 small int 1 bool !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool equalis(${1 code}, ${2 code}) 2 int small 1 bool equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool equalrr(${1 code}, ${2 code}) 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _FpM_ratlift_worker 1 1 FpM_ratlift_worker GGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _QM_charpoly_ZX_worker 1 1 QM_charpoly_ZX_worker GGG 1 gen _QXQ_div_worker 1 1 QXQ_div_worker GGGG 1 gen _QXQ_inv_worker 1 1 QXQ_inv_worker GGG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZM_ker_worker 1 1 ZM_ker_worker GG 1 gen _ZM_mul_worker 1 1 ZM_mul_worker GGG 1 gen _ZXQX_direct_compositum_worker 1 1 ZXQX_direct_compositum_worker GGGG 1 gen _ZXQX_resultant_worker 1 1 ZXQX_resultant_worker GGGGG 1 gen _ZXQ_minpoly_worker 1 1 ZXQ_minpoly_worker GGGL 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_direct_compositum_worker 1 1 ZX_direct_compositum_worker GGG 1 gen _ZX_gcd_worker 1 1 ZX_gcd_worker GGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 10 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vecvecsmall small 1 vecsmall gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 32 sqru(${1 code}) 2 usmall 2 1 int sqrs(${1 code}) 2 small 2 1 int sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 116 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 vecvecsmall 1 vec 1 gen 1 vec 1 vec 1 vecvecsmall 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 vecvecsmall 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _chinese_unit_worker 1 1 chinese_unit_worker GGGGGG 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 3 0 1 "x" 1 var 1 1 "y" 1 var fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 19 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 parfor_t 1 C!parfor_t 0 parforeach_t 1 C!parforeach_t 0 parforprime_t 1 C!parforprime_t 0 parforvec_t 1 C!parforvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGGD1,L,p 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _dirartin_worker 1 1 dirartin_worker GUGGGG 1 gen _direllnf_worker 1 1 direllnf_worker GUG 1 gen _direllsympow_worker 1 1 direllsympow_worker GUGU 1 gen _dirgenus2_worker 1 1 dirgenus2_worker GLG 1 gen _dirhgm_worker 1 1 dirhgm_worker GUGG 1 gen _ecpp_ispsp_worker 1 1 ecpp_ispsp_worker G 1 gen _ecpp_sqrt_worker 1 1 ecpp_sqrt_worker GGG 1 gen _ecpp_step2_worker 1 1 ecpp_step2_worker GGGL 1 gen _eisker_worker 1 1 eisker_worker GGGGG 1 gen _ellQ_factorback_worker 1 1 ellQ_factorback_worker GGGGU 1 gen _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int ?int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _lerch_worker 1 1 lerch_worker GG 1 gen _lfuninit_theta2_worker 1 1 lfuninit_theta2_worker LGGGGGG 1 gen _lfuninit_worker 1 1 lfuninit_worker LGGGGGGGG 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _nflist_A462_worker 1 1 nflist_A462_worker GGGGG 1 gen _nflist_A46S46P_worker 1 1 nflist_A46S46P_worker GGGG 1 gen _nflist_A4S4_worker 1 1 nflist_A4S4_worker GGGG 1 gen _nflist_C32C4_worker 1 1 nflist_C32C4_worker GGGG 1 gen _nflist_C32D4_worker 1 1 nflist_C32D4_worker GGGG 1 gen _nflist_C3C3_worker 1 1 nflist_C3C3_worker GGGG 1 gen _nflist_C3_worker 1 1 nflist_C3_worker GG 1 gen _nflist_C4vec_worker 1 1 nflist_C4vec_worker GGGG 1 gen _nflist_C5_worker 1 1 nflist_C5_worker GG 1 gen _nflist_C6_worker 1 1 nflist_C6_worker GGGGG 1 gen _nflist_C9_worker 1 1 nflist_C9_worker GGG 1 gen _nflist_CL_worker 1 1 nflist_CL_worker GGG 1 gen _nflist_D4_worker 1 1 nflist_D4_worker GGGG 1 gen _nflist_D612_worker 1 1 nflist_D612_worker GGGG 1 gen _nflist_D9_worker 1 1 nflist_D9_worker GGG 1 gen _nflist_DL_worker 1 1 nflist_DL_worker GGGGGG 1 gen _nflist_Mgen_worker 1 1 nflist_Mgen_worker GGGG 1 gen _nflist_S32_worker 1 1 nflist_S32_worker GGGGG 1 gen _nflist_S36_worker 1 1 nflist_S36_worker GGG 1 gen _nflist_S3C3_worker 1 1 nflist_S3C3_worker GGG 1 gen _nflist_S3I_worker 1 1 nflist_S3I_worker GG 1 gen _nflist_S3R_worker 1 1 nflist_S3R_worker GG 1 gen _nflist_S462_worker 1 1 nflist_S462_worker GGGGG 1 gen _nflist_S46M_worker 1 1 nflist_S46M_worker GGGG 1 gen _nflist_V4_worker 1 1 nflist_V4_worker GGGG 1 gen _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _parapply_slice_worker 1 1 parapply_slice_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_init 1 0 1 parfor_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parfor gen gen gen 1 void _parfor_next 1 0 1 parfor_next(&${1 code}) 1 parfor 1 gen _parfor_stop 1 0 1 parfor_stop(&${1 code}) 1 parfor 1 void _parfor_worker 1 1 parfor_worker GG 1 gen _parforeach_init 1 0 1 parforeach_init(&${1 code}, ${2 code}, ${3 code}) 3 parforeach gen gen 1 void _parforeach_next 1 0 1 parforeach_next(&${1 code}) 1 parforeach 1 gen _parforeach_stop 1 0 1 parforeach_stop(&${1 code}) 1 parforeach 1 void _parforprime_init 1 0 1 parforprime_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforprime gen ?gen gen 1 void _parforprime_next 1 0 1 parforprime_next(&${1 code}) 1 parforprime 1 gen _parforprime_stop 1 0 1 parforprime_stop(&${1 code}) 1 parforprime 1 void _parforprimestep_init 1 0 1 parforprimestep_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 parforprime gen ?gen gen gen 1 void _parforvec_init 1 0 1 parforvec_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforvec vec closure ?small 1 void _parforvec_next 1 0 1 parforvec_next(&${1 code}) 1 parforvec 1 gen _parforvec_stop 1 0 1 parforvec_stop(&${1 code}) 1 parforvec 1 void _parselect_worker 1 1 parselect_worker GG 1 gen _partmap_reverse_frac_worker 1 1 partmap_reverse_frac_worker GGGGGL 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polclass_worker 1 1 polclass_worker GGG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker GUGGGGLGGGG 1 gen _primecertisvalid_ecpp_worker 1 1 primecertisvalid_ecpp_worker G 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _ramanujantau_worker 1 1 ramanujantau_worker GGGG 1 gen _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _taugen_n_worker 1 1 taugen_n_worker GGG 1 gen _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 4 empty vecvecsmall vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 48 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 vecvecsmall 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 parfor_t 1 parfor 0 parforeach_t 1 parforeach 0 parforprime_t 1 parforprime 0 parforvec_t 1 parforvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec airy 1 1 airy Gp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GGD0,L, 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtomatrix 1 1 algtomatrix GGD0,L, 1 gen algtrace 1 1 algtrace GGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec arity 1 1 arity0 G 1 gen asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GDGp 2 gen prec asympnumraw 1 1 asympnumraw0 GLDGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besseljzero 1 1 besseljzero GD1,L,b 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 ybessel GGp 2 gen prec bessely 1 1 ybessel GGp 2 gen prec besselyzero 1 1 besselyzero GD1,L,b 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision00 GDG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit0 GGDG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunits 1 1 bnfunits GDG 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassfield 1 1 bnrclassfield GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrcompositum 1 1 bnrcompositum GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinitmod GGD0,L,DG 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrmap 1 1 bnrmap GG 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 12 gconcat(${1 code}, ${2 code}) 2 vecvecsmall vecvecsmall 1 vecvecsmall gconcat1(${1 code}) 1 vecvecsmall 1 vecsmall gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 2 0 3 mpcos(${1 code}) 1 real 1 real gcos(${1 code}, ${prec}) 1 mp 2 real prec gcos(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcos Gp 2 gen prec cosh 2 0 2 gcosh(${1 code}, ${prec}) 1 mp 2 real prec gcosh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcosh Gp 2 gen prec cotan 2 0 2 gcotan(${1 code}, ${prec}) 1 mp 2 real prec gcotan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotan Gp 2 gen prec cotanh 2 0 2 gcotanh(${1 code}, ${prec}) 1 mp 2 real prec gcotanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivn 1 1 derivn GLDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirpowers 1 1 dirpowers LGp 2 gen prec dirpowerssum 1 1 dirpowerssum0 GGDGp 2 gen prec dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ell2cover 1 1 ell2cover Gp 2 gen prec ellE 1 1 ellE Gp 2 gen prec ellK 1 1 ellK Gp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GDGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclambdamu 1 1 ellpadiclambdamu GLD1,L,D0,L, 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellrank 1 1 ellrank GD0,L,DGp 2 gen prec ellrankinit 1 1 ellrankinit Gp 2 gen prec ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsaturation 1 1 ellsaturation GGLp 2 gen prec ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltrace 1 1 elltrace GG 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerfrac 1 1 eulerfrac L 1 gen eulerianpol 1 1 eulerianpol LDn 1 gen eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eulerpol 1 1 eulerpol LDn 1 gen eulerreal 1 1 eulerreal Lp 2 gen prec eulervec 1 1 eulervec L 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 real prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen export 0 exportall 1 1 exportall 1 void extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factormodcyclo 1 1 factormodcyclo LGD0,L,Dn 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffmaprel 1 1 ffmaprel GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fft 1 1 FFT GG 1 gen fftinv 1 1 FFTinv GG 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void foreach 1 1 foreachpari GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 3 0 1 forqfvec1(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 gen ?gen closure 1 void 1 forqfvec0 VGDGI 1 void 2 4 _wrap_vG forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissplittinginit 1 1 galoissplittinginit GDG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen gcharalgebraic 1 1 gcharalgebraic GDG 1 gen gcharconductor 1 1 gchar_conductor GG 1 gen gcharduallog 1 1 gcharduallog GG 1 gen gchareval 1 1 gchareval GGGD1,L, 1 gen gcharidentify 1 1 gchar_identify GGGp 2 gen prec gcharinit 1 1 gcharinit GGp 2 gen prec gcharisalgebraic 1 1 gcharisalgebraic GGD& 1 small_int gcharlocal 1 1 gcharlocal GGGpD& 2 gen prec gcharlog 1 1 gcharlog GGp 2 gen prec gcharnewprec 1 1 gcharnewprec Gp 2 gen prec genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getlocalbitprec 1 1 getlocalbitprec b 2 small prec getlocalprec 1 1 getlocalprec p 2 small prec getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 halfgcd 1 1 ghalfgcd GG 1 gen hammingweight 1 1 hammingweight G 1 small harmonic 1 1 harmonic0 UDG 1 gen hgmalpha 1 1 hgmalpha G 1 gen hgmbydegree 1 1 hgmbydegree L 1 gen hgmcoef 1 1 hgmcoef GGG 1 gen hgmcoefs 1 1 hgmcoefs GGL 1 gen hgmcyclo 1 1 hgmcyclo G 1 gen hgmeulerfactor 1 1 hgmeulerfactor GGLD& 1 gen hgmgamma 1 1 hgmgamma G 1 gen hgminit 1 1 hgminit GDG 1 gen hgmissymmetrical 1 1 hgmissymmetrical G 1 small hgmparams 1 1 hgmparams G 1 gen hgmtwist 1 1 hgmtwist G 1 gen hilbert 1 1 hilbert GGDG 1 small hyperellchangecurve 1 1 hyperellchangecurve GG 1 gen hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperelldisc 1 1 hyperelldisc G 1 gen hyperellisoncurve 1 1 hyperellisoncurve GG 1 small_int hyperellminimaldisc 1 1 hyperellminimaldisc GDG 1 gen hyperellminimalmodel 1 1 hyperellminimalmodel GD&DG 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius0 GGL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hyperellred 1 1 hyperellred GD& 1 gen hypergeom 1 1 hypergeom DGDGGp 2 gen prec hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealdown 1 1 idealdown GG 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealismaximal 1 1 idealismaximal GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 gideallist GGD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstarmod DGGD1,L,DG 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumosc 1 1 intnumosc0 V=GEGD0,L,DGp 2 gen prec intnumromb 3 0 1 intnumromb_bitprec(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW GD0,L,p 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lerchphi 1 1 lerchphi GGGp 2 gen prec lerchzeta 1 1 lerchzeta GGGp 2 gen prec lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfundual 1 1 lfundual Gb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfuneuler 1 1 lfuneuler GGp 2 gen prec lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfunhgm 1 1 lfunhgm GGDGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunparams 1 1 lfunparams Gp 2 gen prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunshift 1 1 lfunshift GGD0,L,b 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GGb 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GDGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill W 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec G 1 void localprec 1 1 localprec G 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete WG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 2 0 1 indexrank(${1 code}) 1 gen 1 vecvecsmall 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matreduce 1 1 matreduce G 1 gen matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloisprojrep 1 1 mfgaloisprojrep GGp 2 gen prec mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfisetaquo 1 1 mfisetaquo GD0,L, 1 gen mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscosets 1 1 mscosets0 GG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfarey 1 1 msfarey0 GGD& 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis GD& 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfdiscfactors 1 1 nfdiscfactors G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltispower 1 1 nfispower GGLD& 1 small nfeltissquare 1 1 nfissquare GGD& 1 small nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 7 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, nf_ORIG, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, nf_RED, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, nf_ORIG|nf_RED, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, nf_NOLLL, ${prec}) 2 gen 4 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 2 0 2 nfisincl(${1 code}, ${2 code}) 3 gen gen ?0 1 gen nfisincl0(${1 code}, ${2 code}, ${3 code}) 3 gen gen small 1 gen 1 nfisincl0 GGD0,L, 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nflist 1 1 nflist GDGD-1,L,DG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit0 GGDn 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfresolvent 1 1 nfresolvent GD0,L, 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 nfrootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting0 GDGD0,L, 1 gen nfsubfields 1 1 nfsubfields0 GD0,L,D0,L, 1 gen nfsubfieldscm 1 1 nfsubfieldscm GD0,L, 1 gen nfsubfieldsmax 1 1 nfsubfieldsmax GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 2 0 3 gsupnorm(${1 code}, ${prec}) 1 gen 2 gen prec gsupnorm(${1 code}, ${prec}) 2 gen 2 gen prec gnorml1(${1 code}, ${prec}) 2 gen 1 2 gen prec 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 1 parfor0 V=GDGJDVDI 1 void 3 1 4 parfor _parfor_init _parfor_next _parfor_stop 5 gen gen ?gen closure ?notype 0 parforeach 2 1 parforeach0 GVJDVDI 1 void 3 1 4 parforeach _parforeach_init _parforeach_next _parforeach_stop 4 gen gen closure ?notype 0 parforprime 2 1 parforprime0 V=GDGJDVDI 1 void 3 1 4 parforprime _parforprime_init _parforprime_next _parforprime_stop 5 gen gen ?gen closure ?notype 0 parforprimestep 2 1 parforprimestep0 V=GDGGJDVDI 1 void 3 1 4 parforprime _parforprimestep_init _parforprime_next _parforprime_stop 6 gen gen gen ?gen closure ?notype 0 parforvec 2 1 parforvec0 V=GJDVDID0,L, 1 void 3 1 4 parforvec _parforvec_init _parforvec_next _parforvec_stop 5 vec vec closure ?notype ?small 0 parploth 2 0 1 parploth(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen closure ?small ?small 2 vec prec 1 parploth V=GGJD0,M,D0,L,p 2 gen prec parplothexport 2 0 1 parplothexport(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen closure ?small ?small 2 gen prec 1 parplothexport GV=GGJD0,M,D0,L,p 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}) 3 gen gen closure 1 gen 1 parsum V=GGJ 1 gen partitions 2 0 1 partitions(${1 code}, ${2 code}, ${3 code}) 3 small ?gen ?gen 1 vecvecsmall 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permcycles 1 1 permcycles G 1 gen permorder 1 1 permorder G 1 gen permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 3 0 1 pariplot(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?gen ?gen 2 void prec 1 pariplot0 V=GGEDGDGp 2 void prec 2 3 _wrap_G plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?small ?small 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 3 0 1 plotrecth(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 small gen gen gen ?small ?small 2 gen prec 1 plotrecth0 LV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval0 LDGD0,L, 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 polisirreducible G 1 small pollaguerre 1 1 pollaguerre_eval0 LDGDGD0,L, 1 gen pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval0 LDGD0,L, 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 2 0 1 roots(${1 code}, ${prec}) 1 gen 2 vec prec 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 polrootspadic GGL 1 gen polrootsreal 2 0 1 realroots(${1 code}, ${2 code}, ${prec}) 2 gen ?gen 2 vec prec 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsubcyclofast 1 1 polsubcyclofast GLD0,L,D0,L, 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen polteichmuller 1 1 polteichmuller GUL 1 gen poltomonic 1 1 poltomonic GD& 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polylogmult 1 1 polylogmult_interpolate GDGDGp 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 1 1 precision00 GDG 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert0 GD0,L,D0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 2 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 3 0 1 psploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 psploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcomp 1 1 qfbcomp GG 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbcornacchia 1 1 qfbcornacchia GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpow 1 1 qfbpow GG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GG 1 gen qfbred 1 1 qfbred0 GD0,L,DGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GGD0,L, 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfminimize 1 1 qfminimize G 1 gen qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 qfperfection G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quadunitindex 1 1 quadunitindex GG 1 gen quadunitnorm 1 1 quadunitnorm G 1 small quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau GD12,L, 1 gen random 2 0 3 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 real 1 real genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime0 DGDG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor0 GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGp 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen rootsof1 1 1 grootsof1 Lp 2 gen prec round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serdiffdep 1 1 serdiffdep GLL 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setdebug 1 1 setdebug DsD-1,L, 1 gen setdelta 2 0 1 setdelta(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setdelta GG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 2 0 3 mpsin(${1 code}) 1 real 1 real gsin(${1 code}, ${prec}) 1 mp 2 real prec gsin(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsin Gp 2 gen prec sinc 2 0 2 gsinc(${1 code}, ${prec}) 1 mp 2 real prec gsinc(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinc Gp 2 gen prec sinh 2 0 2 gsinh(${1 code}, ${prec}) 1 mp 2 real prec gsinh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small snfrank 1 1 snfrank GG 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?small 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 5 sqru(${1 code}) 1 usmall 1 int sqrs(${1 code}) 1 small 1 int sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint0 GD& 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen strchr 1 1 pari_strchr G 1 gen strexpand 1 1 strexpand s* 1 gen strjoin 1 1 strjoin GDG 1 gen strprintf 1 1 strprintf ss* 1 gen strsplit 1 1 strsplit GDG 1 gen strtex 1 1 strtex s* 1 gen strtime 1 1 strtime L 1 gen subcyclohminus 1 1 subcyclohminus GDG 1 gen subcycloiwasawa 1 1 subcycloiwasawa GGD0,L, 1 gen subcyclopclgp 1 1 subcyclopclgp GGD0,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 3 0 1 sumdivmultexpr(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen gen 1 gen 1 sumdivmultexpr0 GVE 1 gen 2 3 _wrap_G sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0_bitprec V=GEb 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_Gp sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumnumsidi 3 0 1 sumnumsidi(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?long 2 gen prec 1 sumnumsidi0 V=GED1,L,p 2 gen prec 2 2 _wrap_Gb sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 small tan 2 0 2 gtan(${1 code}, ${prec}) 1 mp 2 real prec gtan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtan Gp 2 gen prec tanh 2 0 2 gtanh(${1 code}, ${prec}) 1 mp 2 real prec gtanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void unexport 0 unexportall 1 1 unexportall 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GDG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen ?small 1 vecsmall sort(${1 code}) 3 vecvecsmall ?0 1 vecvecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult_interpolate GDGp 2 gen prec zetamultall 1 1 zetamultall LD0,L,p 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultdual 1 1 zetamultdual G 1 gen znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 1 znorder(${1 code}, ${2 code}) 2 gen ?int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen znsubgroupgenerators 1 1 znsubgroupgenerators GD0,L, 1 gen gp2c-0.0.14/desc/func213.dsc0000644000175000017500000031426213743645740012167 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_histtime D0,L, 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 pari_strchr G 1 gen Strexpand 1 1 strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 1 1 deriv GDn 1 gen _'_ 2 0 3 deriv(${1 code}, -1) 2 gen 1 1 gen FpX_deriv(${1 code}, p) 2 FpX 1 1 FpX FqX_deriv(${1 code}, T, p) 2 FqX 1 1 FqX 1 derivn GLDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 36 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real gmulsg(${1 code}, ${2 code}) 2 small real 1 mp (${1 code}, 0)/*for side effect*/ 2 mp 0 1 small mulrs(${1 code}, ${2 code}) 2 real #small 1 real gmulgs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real gmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vecvecsmall copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vecvecsmall copy member_group(${1 code}) 1 gen 2 vecvecsmall copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _FpM_ratlift_worker 1 1 FpM_ratlift_worker GGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _QM_charpoly_ZX_worker 1 1 QM_charpoly_ZX_worker GGG 1 gen _QXQ_div_worker 1 1 QXQ_div_worker GGGG 1 gen _QXQ_inv_worker 1 1 QXQ_inv_worker GGG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZM_ker_worker 1 1 ZM_ker_worker GG 1 gen _ZM_mul_worker 1 1 ZM_mul_worker GGG 1 gen _ZXQX_direct_compositum_worker 1 1 ZXQX_direct_compositum_worker GGGG 1 gen _ZXQX_resultant_worker 1 1 ZXQX_resultant_worker GGGGG 1 gen _ZXQ_minpoly_worker 1 1 ZXQ_minpoly_worker GGGL 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_direct_compositum_worker 1 1 ZX_direct_compositum_worker GGG 1 gen _ZX_gcd_worker 1 1 ZX_gcd_worker GGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 10 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vecvecsmall small 1 vecsmall gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 112 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 vecvecsmall 1 vec 1 gen 1 vec 1 vec 1 vecvecsmall 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 vecvecsmall 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _chinese_unit_worker 1 1 chinese_unit_worker GGGGGG 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 3 0 1 "x" 1 var 1 1 "y" 1 var fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 19 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 parfor_t 1 C!parfor_t 0 parforeach_t 1 C!parforeach_t 0 parforprime_t 1 C!parforprime_t 0 parforvec_t 1 C!parforvec_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGGD1,L,p 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _dirartin_worker 1 1 dirartin_worker GUGGGG 1 gen _direllnf_worker 1 1 direllnf_worker GUG 1 gen _direllsympow_worker 1 1 direllsympow_worker GUGU 1 gen _dirgenus2_worker 1 1 dirgenus2_worker GLG 1 gen _ecpp_ispsp_worker 1 1 ecpp_ispsp_worker G 1 gen _ecpp_sqrt_worker 1 1 ecpp_sqrt_worker GGG 1 gen _ecpp_step2_worker 1 1 ecpp_step2_worker GGG 1 gen _eisker_worker 1 1 eisker_worker GGGGG 1 gen _ellQ_factorback_worker 1 1 ellQ_factorback_worker GGGG 1 gen _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int ?int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _lfuninit_theta2_worker 1 1 lfuninit_theta2_worker LGGGGGG 1 gen _lfuninit_worker 1 1 lfuninit_worker LGGGGGGGG 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _parapply_slice_worker 1 1 parapply_slice_worker GG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_init 1 0 1 parfor_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parfor gen gen gen 1 void _parfor_next 1 0 1 parfor_next(&${1 code}) 1 parfor 1 gen _parfor_stop 1 0 1 parfor_stop(&${1 code}) 1 parfor 1 void _parfor_worker 1 1 parfor_worker GG 1 gen _parforeach_init 1 0 1 parforeach_init(&${1 code}, ${2 code}, ${3 code}) 3 parforeach gen gen 1 void _parforeach_next 1 0 1 parforeach_next(&${1 code}) 1 parforeach 1 gen _parforeach_stop 1 0 1 parforeach_stop(&${1 code}) 1 parforeach 1 void _parforprime_init 1 0 1 parforprime_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforprime gen ?gen gen 1 void _parforprime_next 1 0 1 parforprime_next(&${1 code}) 1 parforprime 1 gen _parforprime_stop 1 0 1 parforprime_stop(&${1 code}) 1 parforprime 1 void _parforprimestep_init 1 0 1 parforprimestep_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 parforprime gen ?gen gen gen 1 void _parforvec_init 1 0 1 parforvec_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 parforvec vec closure ?small 1 void _parforvec_next 1 0 1 parforvec_next(&${1 code}) 1 parforvec 1 gen _parforvec_stop 1 0 1 parforvec_stop(&${1 code}) 1 parforvec 1 void _parselect_worker 1 1 parselect_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker GUGGGGLGG 1 gen _primecertisvalid_ecpp_worker 1 1 primecertisvalid_ecpp_worker G 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 4 empty vecvecsmall vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 48 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 vecvecsmall 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 parfor_t 1 parfor 0 parforeach_t 1 parforeach 0 parforprime_t 1 parforprime 0 parforvec_t 1 parforvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec airy 1 1 airy Gp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GGD0,L, 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtomatrix 1 1 algtomatrix GGD0,L, 1 gen algtrace 1 1 algtrace GGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec arity 1 1 arity0 G 1 gen asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GDGp 2 gen prec asympnumraw 1 1 asympnumraw0 GLDGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bessely 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision00 GDG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit0 GGDG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunits 1 1 bnfunits GDG 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassfield 1 1 bnrclassfield GDGD0,L,p 2 gen prec bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinitmod GGD0,L,DG 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrmap 1 1 bnrmap GG 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 12 gconcat(${1 code}, ${2 code}) 2 vecvecsmall vecvecsmall 1 vecvecsmall gconcat1(${1 code}) 1 vecvecsmall 1 vecsmall gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 2 0 3 mpcos(${1 code}) 1 real 1 real gcos(${1 code}, ${prec}) 1 mp 2 real prec gcos(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcos Gp 2 gen prec cosh 2 0 2 gcosh(${1 code}, ${prec}) 1 mp 2 real prec gcosh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcosh Gp 2 gen prec cotan 2 0 2 gcotan(${1 code}, ${prec}) 1 mp 2 real prec gcotan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotan Gp 2 gen prec cotanh 2 0 2 gcotanh(${1 code}, ${prec}) 1 mp 2 real prec gcotanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivn 1 1 derivn GLDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirpowers 1 1 dirpowers LGp 2 gen prec dirpowerssum 1 1 dirpowerssum0 GGp 2 gen prec dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellE 1 1 ellE Gp 2 gen prec ellK 1 1 ellK Gp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GDGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclambdamu 1 1 ellpadiclambdamu GLD1,L,D0,L, 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerfrac 1 1 eulerfrac L 1 gen eulerianpol 1 1 eulerianpol LDn 1 gen eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eulerpol 1 1 eulerpol LDn 1 gen eulervec 1 1 eulervec L 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 real prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen export 0 exportall 1 1 exportall 1 void extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffmaprel 1 1 ffmaprel GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fft 1 1 FFT GG 1 gen fftinv 1 1 FFTinv GG 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void foreach 1 1 foreachpari GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 3 0 1 forqfvec1(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}) 4 gen ?gen closure 1 void 1 forqfvec0 VGDGI 1 void 2 4 _wrap_vG forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getlocalbitprec 1 1 getlocalbitprec b 2 small prec getlocalprec 1 1 getlocalprec p 2 small prec getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 halfgcd 1 1 ghalfgcd GG 1 gen hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius0 GGL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hypergeom 1 1 hypergeom DGDGGp 2 gen prec hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealdown 1 1 idealdown GG 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealismaximal 1 1 idealismaximal GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstarmod DGGD1,L,DG 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb_bitprec(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfundual 1 1 lfundual Gb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunshift 1 1 lfunshift GGD0,L,b 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GGb 2 gen prec lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GDGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill W 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec G 1 void localprec 1 1 localprec G 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete WG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 2 0 1 indexrank(${1 code}) 1 gen 1 vecvecsmall 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matreduce 1 1 matreduce G 1 gen matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloisprojrep 1 1 mfgaloisprojrep GGp 2 gen prec mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfisetaquo 1 1 mfisetaquo GD0,L, 1 gen mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscosets 1 1 mscosets0 GG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfarey 1 1 msfarey0 GGD& 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis GD& 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfdiscfactors 1 1 nfdiscfactors G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 2 0 2 nfisincl(${1 code}, ${2 code}) 3 gen gen ?0 1 gen nfisincl0(${1 code}, ${2 code}, ${3 code}) 3 gen gen small 1 gen 1 nfisincl0 GGD0,L, 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit0 GGDn 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 nfrootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields0 GD0,L,D0,L, 1 gen nfsubfieldscm 1 1 nfsubfieldscm GD0,L, 1 gen nfsubfieldsmax 1 1 nfsubfieldsmax GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 2 0 3 gsupnorm(${1 code}, ${prec}) 1 gen 2 gen prec gsupnorm(${1 code}, ${prec}) 2 gen 2 gen prec gnorml1(${1 code}, ${prec}) 2 gen 1 2 gen prec 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 1 parfor0 V=GDGJDVDI 1 void 3 1 4 parfor _parfor_init _parfor_next _parfor_stop 5 gen gen ?gen closure ?notype 0 parforeach 2 1 parforeach0 GVJDVDI 1 void 3 1 4 parforeach _parforeach_init _parforeach_next _parforeach_stop 4 gen gen closure ?notype 0 parforprime 2 1 parforprime0 V=GDGJDVDI 1 void 3 1 4 parforprime _parforprime_init _parforprime_next _parforprime_stop 5 gen gen ?gen closure ?notype 0 parforprimestep 2 1 parforprimestep0 V=GDGGJDVDI 1 void 3 1 4 parforprime _parforprimestep_init _parforprime_next _parforprime_stop 6 gen gen gen ?gen closure ?notype 0 parforvec 2 1 parforvec0 V=GJDVDID0,L, 1 void 3 1 4 parforvec _parforvec_init _parforvec_next _parforvec_stop 5 vec vec closure ?notype ?small 0 parploth 2 0 1 parploth(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen closure ?small ?small 2 vec prec 1 parploth V=GGJD0,M,D0,L,p 2 gen prec parplothexport 2 0 1 parplothexport(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen closure ?small ?small 2 gen prec 1 parplothexport GV=GGJD0,M,D0,L,p 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}) 3 gen gen closure 1 gen 1 parsum V=GGJ 1 gen partitions 2 0 1 partitions(${1 code}, ${2 code}, ${3 code}) 3 small ?gen ?gen 1 vecvecsmall 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permcycles 1 1 permcycles G 1 gen permorder 1 1 permorder G 1 gen permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 3 0 1 pariplot(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?gen ?gen 2 void prec 1 pariplot0 V=GGEDGDGp 2 void prec 2 3 _wrap_G plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?small ?small 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 3 0 1 plotrecth(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 small gen gen gen ?small ?small 2 gen prec 1 plotrecth0 LV=GGED0,M,D0,L,p 2 gen prec 2 4 _wrap_G plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval0 LDGD0,L, 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 polisirreducible G 1 small pollaguerre 1 1 pollaguerre_eval0 LDGDGD0,L, 1 gen pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval0 LDGD0,L, 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 polrootspadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen polteichmuller 1 1 polteichmuller GUL 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polylogmult 1 1 polylogmult_interpolate GDGDGp 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 1 1 precision00 GDG 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert GD0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 2 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 3 0 1 psploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?small ?small 2 gen prec 1 psploth0 V=GGED0,M,D0,L,p 2 gen prec 2 3 _wrap_G psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GGD0,L, 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 qfperfection G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 3 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 real 1 real genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime0 DGDG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor0 GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGp 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen rootsof1 1 1 grootsof1 Lp 2 gen prec round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 2 0 3 mpsin(${1 code}) 1 real 1 real gsin(${1 code}, ${prec}) 1 mp 2 real prec gsin(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsin Gp 2 gen prec sinc 2 0 2 gsinc(${1 code}, ${prec}) 1 mp 2 real prec gsinc(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinc Gp 2 gen prec sinh 2 0 2 gsinh(${1 code}, ${prec}) 1 mp 2 real prec gsinh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?small 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint0 GD& 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen strchr 1 1 pari_strchr G 1 gen strexpand 1 1 strexpand s* 1 gen strjoin 1 1 strjoin GDG 1 gen strprintf 1 1 strprintf ss* 1 gen strsplit 1 1 strsplit GDG 1 gen strtex 1 1 strtex s* 1 gen strtime 1 1 strtime L 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 3 0 1 sumdivmultexpr(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen gen 1 gen 1 sumdivmultexpr0 GVE 1 gen 2 3 _wrap_G sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0_bitprec V=GEb 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_Gp sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 2 0 2 gtan(${1 code}, ${prec}) 1 mp 2 real prec gtan(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtan Gp 2 gen prec tanh 2 0 2 gtanh(${1 code}, ${prec}) 1 mp 2 real prec gtanh(${1 code}, ${prec}) 1 gen 2 gen prec 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void unexport 0 unexportall 1 1 unexportall 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen ?small 1 vecsmall sort(${1 code}) 3 vecvecsmall ?0 1 vecvecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult_interpolate GDGp 2 gen prec zetamultall 1 1 zetamultall LD0,L,p 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultdual 1 1 zetamultdual G 1 gen znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.14/desc/func211.dsc0000644000175000017500000027766613324126575012200 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen #_ 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small % 1 1 pari_get_hist D0,L, 1 gen %# 1 1 pari_get_histtime D0,L, 1 small +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 9 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen Fp_neg(${1 code}, p) 1 Fp 1 Fp FpX_neg(${1 code}, p) 1 FpX 1 FpX Fq_neg(${1 code}, T, p) 1 Fq 1 Fq FqX_neg(${1 code}, T, p) 1 FqX 1 FqX 1 gneg G 1 gen Catalan 2 0 1 mpcatalan(${prec}) 0 2 real prec 1 mpcatalan p 2 gen prec Col 2 0 1 gtocol(${1 code}) 1 gen 1 vec 1 gtocol0 GD0,L, 1 gen Colrev 2 0 1 gtocolrev(${1 code}) 1 gen 1 vec 1 gtocolrev0 GD0,L, 1 gen DEBUGLEVEL 2 0 1 DEBUGLEVEL 0 1 small 1 DEBUGLEVEL 1 void Euler 2 0 1 mpeuler(${prec}) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 0 1 gen_I 1 gen List 2 0 2 mklist() 0 1 list listinit(gtolist(${1 code})) 1 gen 1 list 1 gtolist DG 1 gen Map 2 0 2 mkmap() 0 1 list listinit(gtomap(${1 code})) 1 gen 1 list 1 gtomap DG 1 gen Mat 2 0 2 cgetg(1, t_MAT) 0 1 vec gtomat(${1 code}) 1 gen 1 vec 1 gtomat DG 1 gen Mod 2 0 3 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmodulo GG 1 gen O 1 1 ggrando 1 gen O(_^_) 2 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen 1 ggrando GD1,L, 1 gen Pi 2 0 1 mppi(${prec}) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 Ser0 GDnDGDP 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 5 ${1 :genstr cast} 1 gen 3 genstr copy parens Str(mkvec2(${1 code}, ${2 code})) 2 gen gen 1 genstr Str(mkvec3(${1 code}, ${2 code}, ${3 code})) 3 gen gen gen 1 genstr Str(mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code})) 4 gen gen gen gen 1 genstr Str(mkvecn(${nbarg}, ${2 code})) 2 gen ... 1 genstr 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strprintf 1 1 Strprintf ss* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 1 gtovec(${1 code}) 1 gen 1 vec 1 gtovec0 GD0,L, 1 gen Vecrev 2 0 1 gtovecrev(${1 code}) 1 gen 1 vec 1 gtovecrev0 GD0,L, 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall0 GD0,L, 1 gen [_.._] 2 0 2 vecrange(${1 code}, ${2 code}) 2 gen gen 1 vec vecrangess(${1 code}, ${2 code}) 2 small small 1 vec 1 vecrange GG 1 gen [_|_<-_,_;_] 3 0 2 veccatapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen veccatselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr1 GVDEDE 2 gen copy 2 4 _wrap_G _wrap_bG [_|_<-_,_] 3 0 3 vecapply(${3 cookie}, ${3 wrapper}, ${1 code}) 3 gen closure 1 gen vecselect(${4 cookie}, ${4 wrapper}, ${1 code}) 4 gen closure 1 gen vecselapply(${4 cookie}, ${4 wrapper}, ${3 cookie}, ${3 wrapper}, ${1 code}) 4 gen closure closure 1 gen 1 vecexpr0 GVDEDE 1 gen 2 4 _wrap_G _wrap_bG _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 19 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equali1(${1 code}) 2 int 1 1 negbool equalim1(${1 code}) 2 int -1 1 negbool equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} != ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} != ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 2 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmode &G 1 gen _%_ 2 0 9 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen FpX_rem(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX FqX_rem(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmod GG 1 gen _&&_ 2 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens 1 andpari GE 1 gen _' 2 0 3 deriv(${1 code},-1) 1 gen 1 gen FpX_deriv(${1 code}, p) 1 FpX 1 FpX FqX_deriv(${1 code}, T, p) 1 FqX 1 FqX 1 deriv GDn 1 gen _(_) 1 0 4 closure_callgenall(${1 code}, 0) 1 gen 1 gen closure_callgen1(${1 code}, ${2 code}) 2 gen gen 1 gen closure_callgen2(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 gen closure_callgenall(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 gen gen ... 1 gen _*=_ 2 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gmule &G 1 gen _*_ 2 0 34 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_mulu(${2 code}, ${1 code}, p) 2 usmall Fp 1 Fp Fp_muls(${2 code}, ${1 code}, p) 2 small Fp 1 Fp Fp_mulu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_muls(${1 code}, ${2 code}, p) 2 Fp small 1 Fp FpX_mulu(${2 code}, ${1 code}, p) 2 usmall FpX 1 FpX FpX_mulu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX FpX_Fp_mul(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_Fp_mul(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_mul(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_mulu(${2 code}, ${1 code}, T, p) 2 usmall Fq 1 Fq Fq_mulu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_Fp_mul(${1 code}, ${2 code}, T, p) 2 Fq Fp 1 Fq Fq_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp Fq 1 Fq FqX_mulu(${2 code}, ${1 code}, T, p) 2 usmall FqX 1 FqX FqX_mulu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX FqX_Fp_mul(${1 code}, ${2 code}, T, p) 2 FqX Fp 1 FqX FqX_Fp_mul(${2 code}, ${1 code}, T, p) 2 Fp FqX 1 FqX FqX_Fq_mul(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_Fq_mul(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_mul(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gmul GG 1 gen _++ 2 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens 1 gadd1e & 1 gen _+=_ 2 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gadde &G 1 gen _+_ 2 0 24 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_add(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp FpX_Fp_add(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_Fp_add(${2 code}, ${1 code}, p) 2 Fp FpX 1 FpX FpX_add(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_add(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_add(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_Fq_add(${2 code}, ${1 code}, T, p) 2 Fq FqX 1 FqX FqX_add(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gadd GG 1 gen _-- 2 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens 1 gsub1e & 1 gen _-=_ 2 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gsube &G 1 gen _-_ 2 0 21 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_sub(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fp_FpX_sub(${1 code}, ${2 code}, p) 2 Fp FpX 1 FpX FpX_Fp_sub(${1 code}, ${2 code}, p) 2 FpX Fp 1 FpX FpX_sub(${1 code}, ${2 code}, p) 2 FpX FpX 1 FpX Fq_sub(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq FqX_Fq_sub(${1 code}, ${2 code}, T, p) 2 FqX Fq 1 FqX FqX_sub(${1 code}, ${2 code}, T, p) 2 FqX FqX 1 FqX 1 gsub GG 1 gen _.a1 2 0 1 ell_get_a1(${1 code}) 1 ell 2 gen copy 1 member_a1 G 2 gen copy _.a2 2 0 1 ell_get_a2(${1 code}) 1 ell 2 gen copy 1 member_a2 G 2 gen copy _.a3 2 0 1 ell_get_a3(${1 code}) 1 ell 2 gen copy 1 member_a3 G 2 gen copy _.a4 2 0 1 ell_get_a4(${1 code}) 1 ell 2 gen copy 1 member_a4 G 2 gen copy _.a6 2 0 1 ell_get_a6(${1 code}) 1 ell 2 gen copy 1 member_a6 G 2 gen copy _.area 1 1 member_area G 2 gen copy _.b2 2 0 1 ell_get_b2(${1 code}) 1 ell 2 gen copy 1 member_b2 G 2 gen copy _.b4 2 0 1 ell_get_b4(${1 code}) 1 ell 2 gen copy 1 member_b4 G 2 gen copy _.b6 2 0 1 ell_get_b6(${1 code}) 1 ell 2 gen copy 1 member_b6 G 2 gen copy _.b8 2 0 1 ell_get_b8(${1 code}) 1 ell 2 gen copy 1 member_b8 G 2 gen copy _.bid 2 0 2 bnr_get_bid(${1 code}) 1 bnr 2 gen copy member_bid(${1 code}) 1 gen 2 gen copy 1 member_bid G 2 gen copy _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 2 bnf copy 1 member_bnf G 2 gen copy _.c4 2 0 1 ell_get_c4(${1 code}) 1 ell 2 gen copy 1 member_c4 G 2 gen copy _.c6 2 0 1 ell_get_c6(${1 code}) 1 ell 2 gen copy 1 member_c6 G 2 gen copy _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 2 clgp copy 1 member_clgp G 2 gen copy _.codiff 1 1 member_codiff G 2 gen copy _.cyc 2 0 4 bnr_get_cyc(${1 code}) 1 bnr 2 vec copy bnf_get_cyc(${1 code}) 1 bnf 2 vec copy gel(${1 code}, 2) 1 clgp 2 vec copy member_cyc(${1 code}) 1 gen 2 vec copy 1 member_cyc G 2 gen copy _.diff 2 0 2 nf_get_diff(${1 code}) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 2 gen copy 1 member_diff G 2 gen copy _.disc 2 0 3 nf_get_disc(${1 code}) 1 nf 2 int copy ell_get_disc(${1 code}) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 2 gen copy 1 member_disc G 2 gen copy _.e 2 0 1 pr_get_e(${1 code}) 1 prid 1 small 1 member_e G 2 gen copy _.eta 1 1 member_eta G 2 gen copy _.f 2 0 1 pr_get_f(${1 code}) 1 prid 1 small 1 member_f G 2 gen copy _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void bnf_get_fu(${1 code}) 1 bnf 2 gen copy member_fu(${1 code}) 1 gen 1 gen 1 member_fu G 1 gen _.futu 1 1 member_futu G 2 gen copy _.gen 2 0 6 bnr_get_gen(${1 code}) 1 bnr 2 vec copy bnf_get_gen(${1 code}) 1 bnf 2 vec copy gal_get_gen(${1 code}) 1 gal 2 vec copy gel(${1 code}, 3) 1 clgp 2 vec copy pr_get_gen(${1 code}) 1 prid 2 gen copy member_gen(${1 code}) 1 gen 2 gen copy 1 member_gen G 2 gen copy _.group 2 0 2 gal_get_group(${1 code}) 1 gal 2 vec copy member_group(${1 code}) 1 gen 2 vec copy 1 member_group G 2 gen copy _.index 2 0 2 nf_get_index(${1 code}) 1 nf 2 int copy member_index(${1 code}) 1 gen 2 int copy 1 member_index G 2 gen copy _.j 2 0 1 ell_get_j(${1 code}) 1 ell 2 gen copy 1 member_j G 2 gen copy _.mod 1 1 member_mod G 2 gen copy _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 2 nf copy 1 member_nf G 2 gen copy _.no 2 0 4 bnr_get_no(${1 code}) 1 bnr 2 int copy bnf_get_no(${1 code}) 1 bnf 2 int copy gel(${1 code}, 1) 1 clgp 2 int copy member_no(${1 code}) 1 gen 2 int copy 1 member_no G 2 gen copy _.omega 1 1 member_omega G 2 gen copy _.orders 2 0 1 gal_get_orders(${1 code}) 1 gal 2 vecsmall copy 1 member_orders G 2 gen copy _.p 2 0 3 gal_get_p(${1 code}) 1 gal 2 int copy pr_get_p(${1 code}) 1 prid 2 int copy member_p(${1 code}) 1 gen 2 int copy 1 member_p G 2 gen copy _.pol 2 0 3 gal_get_pol(${1 code}) 1 gal 2 gen copy nf_get_pol(${1 code}) 1 nf 2 gen copy member_pol(${1 code}) 1 gen 2 gen copy 1 member_pol G 2 gen copy _.polabs 1 1 member_polabs G 2 gen copy _.r1 2 0 2 nf_get_r1(${1 code}) 1 nf 1 small member_r1(${1 code}) 1 gen 2 int copy 1 member_r1 G 2 gen copy _.r2 2 0 2 nf_get_r2(${1 code}) 1 nf 1 small member_r2(${1 code}) 1 gen 2 int copy 1 member_r2 G 2 gen copy _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 real bnf_get_reg(${1 code}) 1 bnf 2 real copy member_reg(${1 code}) 1 gen 2 real copy 1 member_reg G 2 gen copy _.roots 2 0 3 gal_get_roots(${1 code}) 1 gal 2 vec copy nf_get_roots(${1 code}) 1 nf 2 vec copy member_roots(${1 code}) 1 gen 2 vec copy 1 member_roots G 2 gen copy _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 2 vec copy 1 member_sign G 2 gen copy _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 2 gen copy _.tu 2 0 1 member_tu(${1 code}) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 2 gen copy _.zk 2 0 2 nf_get_zk(${1 code}) 1 nf 2 vec copy member_zk(${1 code}) 1 gen 2 vec copy 1 member_zk G 2 gen copy _.zkst 2 0 1 bnr_get_bid(${1 code}) 1 bnr 2 gen copy 1 member_zkst G 2 gen copy _/=_ 2 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdive &G 1 gen _/_ 2 0 16 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small invr(${2 code}) 2 1 real 1 real divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen Fp_halve(${1 code}, p) 2 Fp 2 1 Fp Fp_div(${1 code}, ${2 code}, p) 2 Fp Fp 1 Fp Fq_halve(${1 code}, T, p) 2 Fq 2 1 Fq Fq_div(${1 code}, ${2 code}, T, p) 2 Fq Fq 1 Fq 1 gdiv GG 1 gen _<<=_ 2 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens 1 gshiftle &L 1 gen _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _===_ 1 1 gidentical GG 1 small_int _==_ 2 0 23 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool equali1(${1 code}) 2 int 1 1 bool equalim1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gequal0(${1 code}) 2 gen 0 1 bool gequal1(${1 code}) 2 gen 1 1 bool gequalm1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 errtyp errtyp 2 bool parens ${parens 1 code} == ${parens 2 :errtyp cast} 2 errtyp #str 2 bool parens ${parens 1 :errtyp cast} == ${parens 2 code} 2 #str errtyp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 2 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens 1 gshiftre &L 1 gen _>>_ 2 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp 1 gshift_right GL 1 gen _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _F2xq_log_Coppersmith_worker 1 1 F2xq_log_Coppersmith_worker GLGG 1 gen _Flxq_log_Coppersmith_worker 1 1 Flxq_log_Coppersmith_worker GLGG 1 gen _Fp_log_sieve_worker 1 1 Fp_log_sieve_worker LLGGGGGG 1 gen _ZM_det_worker 1 1 ZM_det_worker GG 1 gen _ZM_inv_worker 1 1 ZM_inv_worker GG 1 gen _ZX_ZXY_resultant_worker 1 1 ZX_ZXY_resultant_worker GGGGG 1 gen _ZX_resultant_worker 1 1 ZX_resultant_worker GGGG 1 gen _ZabM_inv_worker 1 1 ZabM_inv_worker GGG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(list_data(${1 code}), ${2 code}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _[_.._,_.._] 1 1 matslice0 GD0,L,D0,L,D0,L,D0,L, 1 gen _[_.._] 1 1 vecslice0 GD0,L,L 1 gen _\/=_ 2 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivrounde &G 1 gen _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 2 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens 1 gdivente &G 1 gen _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 30 sqri(${1 code}) 2 int 2 1 int powiu(${1 code}, 3) 2 int 3 1 int powiu(${1 code}, 4) 2 int 4 1 int powiu(${1 code}, 5) 2 int 5 1 int invr(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen sqrr(${1 code}) 2 real 2 1 real mpsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen powis(${1 code}, ${2 code}) 2 int small 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, ${prec}) 2 gen gen 2 gen prec Fp_sqr(${1 code}, p) 2 Fp 2 1 Fp Fp_powu(${1 code}, ${2 code}, p) 2 Fp usmall 1 Fp Fp_pows(${1 code}, ${2 code}, p) 2 Fp small 1 Fp Fp_pow(${1 code}, ${2 code}, p) 2 Fp int 1 Fp FpX_sqr(${1 code}, p) 2 FpX 2 1 FpX FpX_powu(${1 code}, ${2 code}, p) 2 FpX usmall 1 FpX Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq Fq_sqr(${1 code}, T, p) 2 Fq 2 1 Fq Fq_powu(${1 code}, ${2 code}, T, p) 2 Fq usmall 1 Fq Fq_pow(${1 code}, ${2 code}, T, p) 2 Fq int 1 Fq FqX_sqr(${1 code}, T, p) 2 FqX 2 1 FqX FqX_powu(${1 code}, ${2 code}, T, p) 2 FqX usmall 1 FqX 1 gpow GGp 2 gen prec _^s 1 1 gpowgs GL 1 gen __ 1 0 4 gconcat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _aprcl_step4_worker 1 1 aprcl_step4_worker UGGG 1 gen _aprcl_step6_worker 1 1 aprcl_step6_worker GLGGG 1 gen _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal_t(typ(${1 code})) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens typ(${1 code}) != t_LIST 1 list 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprid(${1 code}) 1 prid 1 void checkabgrp(${1 code}) 1 clgp 1 void checkell(${1 code}) 1 ell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 void parens _cast 1 0 109 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 usmall 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gequal0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gequal0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 usmall 1 typ 1 usmall 1 small 1 usmall 1 bool 1 small 1 typ 1 small 1 small_int 1 small 1 usmall 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small itou(${1 code}) 1 int 1 usmall ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gtos(${1 code}) 1 gen 1 small gtou(${1 code}) 1 gen 1 usmall gen_0 1 void 1 int gen_m2 1 -2 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int utoi(${1 code}) 1 usmall 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 error 1 gen 1 closure 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x(${1 code}) 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen 1 error 1 gen 1 closure 1 gen 1 Fp 1 gen 1 FpX 1 gen 1 Fq 1 gen 1 FqX 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GENtostr_unquoted(${1 code}) 1 gen 1 str GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str numerr_name(${1 code}) 1 errtyp 1 str ${1 str_format} 1 #str 1 typ ${1 str_format} 1 #str 1 errtyp bnf_get_nf(${1 code}) 1 bnf 1 nf 1 gen 1 nf bnr_get_bnf(${1 code}) 1 bnr 1 bnf 1 gen 1 bnf 1 gen 1 bnr bnf_get_clgp(${1 code}) 1 bnf 1 clgp bnr_get_clgp(${1 code}) 1 bnr 1 clgp 1 gen 1 clgp 1 gen 1 ell 1 gen 1 gal 1 gen 1 prid 1 Fp 1 Fq _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, ${prec}) 1 str 2 real prec _const_smallreal 1 0 4 real_0(${prec}) 1 0 2 real prec real_1(${prec}) 1 1 2 real prec real_m1(${prec}) 1 -1 2 real prec stor(${1 code}, ${prec}) 1 small 2 real prec _decl_base 1 0 15 void 1 C!void 0 long 1 C!long 0 ulong 1 C!ulong 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 forprime_t 1 C!forprime_t 0 forcomposite_t 1 C!forcomposite_t 0 forpart_t 1 C!forpart_t 0 forperm_t 1 C!forperm_t 0 forvec_t 1 C!forvec_t 0 forsubset_t 1 C!forsubset_t 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _derivfun 1 1 derivfun0 GGp 2 gen prec _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(e_MAXPRIME) 0 1 void _err_type 1 0 1 pari_err_TYPE(${1 code},${2 code}) 2 str gen 1 void _eval_mnemonic 1 1 eval_mnemonic Gs 1 small _factor_Aurifeuille 1 1 factor_Aurifeuille GL 1 gen _factor_Aurifeuille_prime 1 1 factor_Aurifeuille_prime GL 1 gen _forcomposite_init 1 0 2 forcomposite_init(&${1 code}, ${2 code}, NULL) 2 forcomposite int 1 void forcomposite_init(&${1 code}, ${2 code}, ${3 code}) 3 forcomposite int int 1 void _forcomposite_next 1 0 1 forcomposite_next(&${1 code}) 1 forcomposite 1 int _formatcode 1 0 6 ${1 code} 1 #small 1 void %ld 1 small 1 small %d 1 small_int 1 small_int ${1 str_format} 1 #str 1 void %s 1 str 1 str %Ps 1 gen 1 gen _forpart_init 1 0 1 forpart_init(&${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 forpart small ?gen ?gen 1 void _forpart_next 1 0 1 forpart_next(&${1 code}) 1 forpart 1 vecsmall _forperm_init 1 0 1 forperm_init(&${1 code}, ${2 code}) 2 forperm gen 1 void _forperm_next 1 0 1 forperm_next(&${1 code}) 1 forperm 1 vecsmall _forprime_init 1 0 1 forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime int ?int 1 void _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forprime_next_ 1 0 1 forprime_next(&${1 code}) 1 forprime 1 int _forprimestep_init 1 0 1 forprimestep_init(&${1 code},${2 code},${3 code},${4 code}); 4 forprime int ?int int 1 void _forsubset_init 1 0 2 forallsubset_init(&${1 code}, ${2 code}) 2 forsubset small 1 void forsubset_init(&${1 code}, ${2 code}) 2 forsubset gen 1 void _forsubset_next 1 0 1 forsubset_next(&${1 code}) 1 forsubset 1 vecsmall _forvec_init 1 0 1 forvec_init(&${1 code}, ${2 code}, ${3 code}) 3 forvec gen ?small 1 void _forvec_next 1 0 1 forvec_next(&${1 code}) 1 forvec 1 vec _gc_needed 1 0 1 gc_needed(${1 code}, 1) 1 pari_sp 1 bool _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _iferr_CATCH 1 0 2 pari_CATCH(CATCH_ALL) 1 0 0 pari_CATCH2(__iferr_old${1 code}, CATCH_ALL) 1 small 0 _iferr_CATCH_reset 1 0 2 pari_CATCH_reset() 1 0 1 void pari_CATCH2_reset(__iferr_old${1 code}) 1 small 1 void _iferr_ENDCATCH 1 0 2 pari_ENDCATCH 1 0 0 pari_ENDCATCH2(__iferr_old${1 code}) 1 small 0 _iferr_error 1 0 1 pari_err_last() 0 1 error _iferr_rethrow 1 0 1 pari_err(0, ${1 code}) 1 error 1 void _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _multi_if 1 1 ifpari_multi GE* 1 gen _ndec2nbits 1 0 1 ndec2nbits(${1 code}) 1 small 1 small _ndec2prec 1 0 1 ndec2prec(${1 code}) 1 small 1 small _norange 1 0 1 LONG_MAX 0 1 small _nxMV_polint_worker 1 1 nxMV_polint_center_tree_worker GGGGG 1 gen _pareval_worker 1 1 pareval_worker G 1 gen _parfor_worker 1 1 parfor_worker GG 1 gen _parselect_worker 1 1 parselect_worker GG 1 gen _parvector_worker 1 1 parvector_worker GG 1 gen _polint_worker 1 1 nmV_polint_center_tree_worker GGGGG 1 gen _polmodular_worker 1 1 polmodular_worker UUUGGGGLGG 1 gen _proto_code 1 0 5 n 1 var 0 L 1 C!long 0 U 1 C!ulong 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_max_args 1 0 1 1 20 0 _proto_ret 1 0 5 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 u 1 C!ulong 0 1 C!GEN 0 _safecoeff 1 0 4 *safeel(${1 code}, ${2 code}) 2 vecsmall small 1 small *safelistel(${1 code}, ${2 code}) 2 list small 2 gen copy *safegel(${1 code}, ${2 code}) 2 gen small 2 gen copy *safegcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _strtoclosure 1 0 2 strtofunction(${1 code}) 1 str 1 closure strtoclosure(${1 code}, ${nbarg 1 sub}, ${3 code}) 3 str gen ... 1 closure _tovec 1 0 7 cgetg(1, t_VEC) 0 1 vec mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, ${5 code}) 5 gen gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _tovecprec 1 0 6 mkvecs(${prec}) 0 2 vec prec mkvec2(${1 code}, stoi(${prec})) 1 gen 2 vec prec mkvec3(${1 code}, ${2 code}, stoi(${prec})) 2 gen gen 2 vec prec mkvec4(${1 code}, ${2 code}, ${3 code}, stoi(${prec})) 3 gen gen gen 2 vec prec mkvec5(${1 code}, ${2 code}, ${3 code}, ${4 code}, stoi(${prec})) 4 gen gen gen gen 2 vec prec mkvecn(${nbarg 1 add}, ${2 code}, stoi(${prec})) 2 gen ... 2 vec prec _type_preorder 1 0 22 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty bool usmall small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty errtyp str 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 3 empty closure gen 0 3 empty error gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 3 empty ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 4 empty Fp Fq gen 0 4 empty FpX FqX gen 0 _typedef 1 0 43 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 ulong 1 usmall 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 closure 0 GEN 1 error 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 forcomposite_t 1 forcomposite 0 forpart_t 1 forpart 0 forperm_t 1 forperm 0 forprime_t 1 forprime 0 forsubset_t 1 forsubset 0 forvec_t 1 forvec 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 long 1 errtyp 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 GEN 1 Fp 0 GEN 1 FpX 0 GEN 1 Fq 0 GEN 1 FqX 0 _u_forprime_init 1 0 2 u_forprime_init(&${1 code}, ${2 code}, LONG_MAX); 3 forprime small 1 void u_forprime_init(&${1 code}, ${2 code}, ${3 code}); 3 forprime small small 1 void _u_forprime_next 1 0 1 u_forprime_next(&${1 code}) 1 forprime 1 small _void_if 1 1 ifpari_void GDIDI 1 void _wrap_G 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call G 1 gen _wrap_GG 2 0 1 ${1 code} 1 gen 1 gen 1 gp_call2 GG 1 gen _wrap_Gp 2 0 1 ${1 code} 1 gen 1 gen 1 gp_callprec Gp 2 gen prec _wrap_bG 2 0 1 ${1 code} 1 bool 1 bool 1 gp_callbool G 1 small _wrap_vG 2 0 1 0 1 void 1 small 1 gp_callvoid G 1 small _||_ 2 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens 1 orpari GE 1 gen _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, ${prec}) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gacosh Gp 2 gen prec addhelp 1 1 addhelp rs 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec alarm 1 1 gp_alarm D0,L,DE 1 gen algadd 1 1 algadd GGG 1 gen algalgtobasis 1 1 algalgtobasis GG 1 gen algaut 1 1 algaut G 2 gen copy algb 1 1 algb G 2 gen copy algbasis 1 1 algbasis G 2 gen copy algbasistoalg 1 1 algbasistoalg GG 1 gen algcenter 1 1 algcenter G 2 gen copy algcentralproj 1 1 alg_centralproj GGD0,L, 1 gen algchar 1 1 algchar G 2 gen copy algcharpoly 1 1 algcharpoly GGDnD0,L, 1 gen algdegree 1 1 algdegree G 1 small algdep 1 1 algdep0 GLD0,L, 1 gen algdim 1 1 algdim GD0,L, 1 small algdisc 1 1 algdisc G 1 gen algdivl 1 1 algdivl GGG 1 gen algdivr 1 1 algdivr GGG 1 gen alggroup 1 1 alggroup GDG 1 gen alggroupcenter 1 1 alggroupcenter GDGD& 1 gen alghasse 1 1 alghasse GG 1 gen alghassef 1 1 alghassef G 2 gen copy alghassei 1 1 alghassei G 2 gen copy algindex 1 1 algindex GDG 1 small alginit 1 1 alginit GGDnD1,L, 1 gen alginv 1 1 alginv GG 1 gen alginvbasis 1 1 alginvbasis G 2 gen copy algisassociative 1 1 algisassociative GD0,G, 1 small_int algiscommutative 1 1 algiscommutative G 1 small_int algisdivision 1 1 algisdivision GDG 1 small_int algisdivl 1 1 algisdivl GGGD& 1 small_int algisinv 1 1 algisinv GGD& 1 small_int algisramified 1 1 algisramified GDG 1 small_int algissemisimple 1 1 algissemisimple G 1 small_int algissimple 1 1 algissimple GD0,L, 1 small_int algissplit 1 1 algissplit GDG 1 small_int alglatadd 1 1 alglatadd GGGD& 1 gen alglatcontains 1 1 alglatcontains GGGD& 1 small_int alglatelement 1 1 alglatelement GGG 1 gen alglathnf 1 1 alglathnf GGD0,G, 1 gen alglatindex 1 1 alglatindex GGG 1 gen alglatinter 1 1 alglatinter GGGD& 1 gen alglatlefttransporter 1 1 alglatlefttransporter GGG 1 gen alglatmul 1 1 alglatmul GGG 1 gen alglatrighttransporter 1 1 alglatrighttransporter GGG 1 gen alglatsubset 1 1 alglatsubset GGGD& 1 small_int algmakeintegral 1 1 algmakeintegral GD0,L, 1 gen algmul 1 1 algmul GGG 1 gen algmultable 1 1 algmultable G 2 gen copy algneg 1 1 algneg GG 1 gen algnorm 1 1 algnorm GGD0,L, 1 gen algpoleval 1 1 algpoleval GGG 1 gen algpow 1 1 algpow GGG 1 gen algprimesubalg 1 1 algprimesubalg G 1 gen algquotient 1 1 alg_quotient GGD0,L, 1 gen algradical 1 1 algradical G 1 gen algramifiedplaces 1 1 algramifiedplaces G 1 gen algrandom 1 1 algrandom GG 1 gen algrelmultable 1 1 algrelmultable G 2 gen copy algsimpledec 1 1 algsimpledec GD0,L, 1 gen algsplit 1 1 algsplit GDn 1 gen algsplittingdata 1 1 algsplittingdata G 2 gen copy algsplittingfield 1 1 algsplittingfield G 2 gen copy algsqr 1 1 algsqr GG 1 gen algsub 1 1 algsub GGG 1 gen algsubalg 1 1 algsubalg GG 1 gen algtableinit 1 1 algtableinit GDG 1 gen algtensor 1 1 algtensor GGD1,L, 1 gen algtomatrix 1 1 algtomatrix GGD0,L, 1 gen algtrace 1 1 algtrace GGD0,L, 1 gen algtype 1 1 algtype G 1 small alias 1 1 alias0 rr 1 void allocatemem 1 1 gp_allocatemem DG 1 void apply 3 0 1 genapply(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 apply0 GG 1 gen 2 1 _wrap_G arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gasinh Gp 2 gen prec asympnum 1 1 asympnum0 GD0,L,DGp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gatanh Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernpol 1 1 bernpol LDn 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel GGp 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr GDG 1 gen bestapprPade 1 1 bestapprPade GD-1,L, 1 gen bestapprnf 1 1 bestapprnf GGDGp 2 gen prec bezout 1 1 gcdext0 GG 1 gen bezoutres 1 1 polresultantext0 GGDn 1 gen bigomega 1 1 bigomega G 1 small binary 1 1 binaire G 1 gen binomial 1 1 binomial0 GDG 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bitprecision 1 1 bitprecision0 GD0,L, 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen small 1 gen 1 gbittest GL 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 bnfcertify0 GD0,L, 1 small bnfcompress 1 1 bnfcompress G 1 gen bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 4 Buchall(${1 code}, 0, ${prec}) 1 gen 2 bnf prec Buchall(${1 code}, 0, ${prec}) 2 gen 0 2 bnf prec Buchall(${1 code}, nf_FORCE, ${prec}) 2 gen 1 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, ${prec}) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L, 1 gen bnfisprincipal 1 1 bnfisprincipal0 GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 bnfisunit GG 1 gen bnflog 1 1 bnflog GG 1 gen bnflogdegree 1 1 bnflogdegree GGG 1 gen bnflogef 1 1 bnflogef GG 1 gen bnfnarrow 1 1 bnfnarrow G 1 gen bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrchar 1 1 bnrchar GGDG 1 gen bnrclassno 1 1 bnrclassno0 GDGDG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor0 GDGDGD0,L, 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrgaloisapply 1 1 bnrgaloisapply GGG 1 gen bnrgaloismatrix 1 1 bnrgaloismatrix GG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor0 GDGDG 1 small bnrisgalois 1 1 bnrisgalois GGG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen breakpoint 1 1 pari_breakpoint 1 void call 1 1 call0 GG 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen characteristic 1 1 characteristic G 2 gen copy charconj 1 1 charconj0 GG 1 gen chardiv 1 1 chardiv0 GGG 1 gen chareval 1 1 chareval GGGDG 1 gen chargalois 1 1 chargalois GDG 1 gen charker 1 1 charker0 GG 1 gen charmul 1 1 charmul0 GGG 1 gen charorder 1 1 charorder0 GG 1 gen charpoly 1 1 charpoly0 GDnD5,L, 1 gen charpow 1 1 charpow0 GGG 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 11 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 list 1 list gclone(${1 code}) 1 closure 1 closure gclone(${1 code}) 1 genstr 1 genstr gclone(${1 code}) 1 gen 1 gen cmp 1 1 cmp_universal GG 1 small_int component 2 0 2 err_get_compo(${1 code}, ${2 code}) 2 error small 1 gen compo(${1 code},${2 code}) 2 gen small 1 gen 1 compo GL 1 gen concat 2 0 10 gconcat(${1 code}, ${2 code}) 2 mp mp 1 vec gconcat(${1 code}, ${2 code}) 2 vec mp 1 vec gconcat(${1 code}, ${2 code}) 2 mp vec 1 vec gconcat(${1 code}, ${2 code}) 2 vec vec 1 vec gconcat(${1 code}, ${2 code}) 2 list list 1 list gconcat(${1 code}, ${2 code}) 2 genstr gen 1 genstr gconcat(${1 code}, ${2 code}) 2 gen genstr 1 genstr gconcat1(${1 code}) 1 gen 1 gen gconcat1(${1 code}) 2 gen 1 gen gconcat(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gconcat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content0 GDG 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfraceval 1 1 contfraceval GGD-1,L, 1 gen contfracinit 1 1 contfracinit GD-1,L, 1 gen contfracpnqn 1 1 contfracpnqn GD-1,L, 1 gen copy 1 0 9 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol listinit(${1 code}) 1 list 1 list gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gcosh Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec cotanh 1 1 gcotanh Gp 2 gen prec dbg_down 1 1 dbg_down D1,L, 1 void dbg_err 1 1 dbg_err 1 gen dbg_up 1 1 dbg_up D1,L, 1 void dbg_x 1 1 dbgGEN GD-1,L, 1 void default 2 0 16 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &${prec}) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens factor_add_primes 1 "factor_add_primes" 1 small factor_add_primes = ${2 code} 2 "factor_add_primes" small 1 small factor_proven 1 "factor_proven" 1 small factor_proven = ${2 code} 2 "factor_proven" small 1 small new_galois_format 1 "new_galois_format" 1 small new_galois_format = ${2 code} 2 "new_galois_format" small 1 small 1 default0 DrDs 1 gen denominator 1 1 denominator GDG 1 gen deriv 1 1 deriv GDn 1 gen derivnum 3 0 2 derivnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec derivfunk(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen gen 2 gen prec 1 derivnum0 V=GEDGp 2 gen prec 2 2 _wrap_Gp diffop 2 0 2 diffop(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?1 1 gen diffop0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 diffop0 GGGD1,L, 1 gen digits 1 1 digits GDG 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 3 0 1 direuler(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 direuler0 V=GGEDG 1 gen 2 3 _wrap_G dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 2 divisors(${1 code}) 2 gen ?0 1 vec divisors_factored(${1 code}) 2 gen 1 1 vec 1 divisors0 GD0,L, 1 gen divisorslenstra 1 1 divisorslenstra GGG 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec ellL1 1 1 ellL1_bitprec GD0,L,b 2 gen prec elladd 1 1 elladd GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 ellan GL 1 gen ellanalyticrank 1 1 ellanalyticrank_bitprec GDGb 2 gen prec ellap 1 1 ellap GDG 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellbsd 1 1 ellbsd Gp 2 gen prec ellcard 1 1 ellcard GDG 1 gen ellchangecurve 2 0 1 ellchangecurve(${1 code}, ${2 code}) 2 gen gen 1 ell 1 ellchangecurve GG 1 gen ellchangepoint 1 1 ellchangepoint GG 1 gen ellchangepointinv 1 1 ellchangepointinv GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elldivpol 1 1 elldivpol GLDn 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellformaldifferential 1 1 ellformaldifferential GDPDn 1 gen ellformalexp 1 1 ellformalexp GDPDn 1 gen ellformallog 1 1 ellformallog GDPDn 1 gen ellformalpoint 1 1 ellformalpoint GDPDn 1 gen ellformalw 1 1 ellformalw GDPDn 1 gen ellfromeqn 1 1 ellfromeqn G 1 gen ellfromj 1 1 ellfromj G 1 gen ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellgroup 1 1 ellgroup0 GDGD0,L, 1 gen ellheegner 1 1 ellheegner G 1 gen ellheight 1 1 ellheight0 GGDGp 2 gen prec ellheightmatrix 1 1 ellheightmatrix GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 1 ellinit(${1 code}, ${2 code}, ${prec}) 3 gen gen small 2 ell prec 1 ellinit GDGp 2 gen prec ellintegralmodel 1 1 ellintegralmodel GD& 1 gen ellisdivisible 1 1 ellisdivisible GGGD& 1 small ellisogeny 1 1 ellisogeny GGD0,L,DnDn 1 gen ellisogenyapply 1 1 ellisogenyapply GG 1 gen ellisomat 1 1 ellisomat GD0,L,D0,L, 1 gen ellisoncurve 1 1 ellisoncurve GG 1 gen ellisotree 1 1 ellisotree G 1 gen ellissupersingular 1 1 ellissupersingular GDG 1 small_int ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GDG 1 gen elllog 1 1 elllog GGGDG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimaldisc 1 1 ellminimaldisc G 1 gen ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellminimaltwist 1 1 ellminimaltwist0 GD0,L, 1 gen ellmoddegree 1 1 ellmoddegree G 1 gen ellmodulareqn 1 1 ellmodulareqn LDnDn 1 gen ellmul 1 1 ellmul GGG 1 gen ellneg 1 1 ellneg GG 1 gen ellnonsingularmultiple 1 1 ellnonsingularmultiple GG 1 gen ellorder 1 1 ellorder GGDG 1 gen ellordinate 1 1 ellordinate GGp 2 gen prec ellpadicL 1 1 ellpadicL GGLDGD0,L,DG 1 gen ellpadicbsd 1 1 ellpadicbsd GGLDG 1 gen ellpadicfrobenius 1 1 ellpadicfrobenius GLL 1 gen ellpadicheight 1 1 ellpadicheight0 GGLGDG 1 gen ellpadicheightmatrix 1 1 ellpadicheightmatrix GGLG 1 gen ellpadiclog 1 1 ellpadiclog GGLG 1 gen ellpadicregulator 1 1 ellpadicregulator GGLG 1 gen ellpadics2 1 1 ellpadics2 GGL 1 gen ellperiods 1 1 ellperiods GD0,L,p 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 ellmul GGG 1 gen ellratpoints 1 1 ellratpoints GGD0,L, 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsea 1 1 ellsea GD0,L, 1 gen ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GDGD0,L,p 2 gen prec ellsub 1 1 ellsub GGG 1 gen elltamagawa 1 1 elltamagawa G 1 gen elltaniyama 1 1 elltaniyama GDP 1 gen elltatepairing 1 1 elltatepairing GGGG 1 gen elltors 1 1 elltors G 1 gen elltwist 1 1 elltwist GDG 1 gen ellweilcurve 1 1 ellweilcurve GD& 1 gen ellweilpairing 1 1 ellweilpairing GGGG 1 gen ellwp 1 1 ellwp0 GDGD0,L,p 2 gen prec ellxn 1 1 ellxn GLDn 1 gen ellzeta 1 1 ellzeta GDGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec errname 2 0 1 err_get_num(${1 code}) 1 gen 1 errtyp 1 errname G 1 gen error 2 0 2 pari_err(0, ${1 code}) 1 error 1 void pari_err(e_MISC, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 1 eulerphi(${1 code}) 1 gen 1 int 1 eulerphi G 1 gen eval 2 0 1 geval(${1 code}) 1 gen 1 gen 1 geval_gp GC 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, ${prec}) 1 mp 2 mp prec gexp(${1 code}, ${prec}) 1 gen 2 gen prec 1 gexp Gp 2 gen prec expm1 2 0 1 mpexpm1(${1 code}) 1 real 1 real 1 gexpm1 Gp 2 gen prec exponent 1 1 gpexponent G 1 gen extern 1 1 gpextern s 1 gen externstr 1 1 externstr s 1 gen factor 2 0 6 Z_factor(${1 code}) 1 int 1 vec Z_factor(${1 code}) 2 int 1 vec Z_factor_limit(${1 code}, ${2 code}) 2 int small 1 vec factor(${1 code}) 1 gen 1 vec factor(${1 code}) 2 gen 1 vec factor0(${1 code}, ${2 code}) 2 gen gen 1 vec 1 factor0 GDG 1 gen factorback 2 0 3 factorback(${1 code}) 1 gen 1 gen factorback(${1 code}) 2 gen 1 gen factorback2(${1 code}, ${2 code}) 2 gen gen 1 gen 1 factorback2 GDG 1 gen factorcantor 1 1 factmod GG 1 gen factorff 1 1 factorff GDGDG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GDGD0,L, 1 gen factormodDDF 1 1 factormodDDF GDG 1 gen factormodSQF 1 1 factormodSQF GDG 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic GGL 1 gen ffcompomap 1 1 ffcompomap GG 1 gen ffembed 1 1 ffembed GG 1 gen ffextend 1 1 ffextend GGDn 1 gen fffrobenius 1 1 fffrobenius GD1,L, 1 gen ffgen 1 1 ffgen GDn 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen ffinvmap 1 1 ffinvmap G 1 gen fflog 1 1 fflog GGDG 1 gen ffmap 1 1 ffmap GG 1 gen ffnbirred 2 0 3 ffnbirred(${1 code}, ${2 code}) 3 int small ?0 1 int ffsumnbirred(${1 code}, ${2 code}) 3 int small 1 1 int ffnbirred0(${1 code}, ${2 code}, ${3 code}) 3 int small ?small 1 int 1 ffnbirred0 GLD0,L, 1 gen fforder 1 1 fforder GDG 1 gen ffprimroot 1 1 ffprimroot GD& 1 gen fibonacci 1 1 fibo L 1 gen fileclose 1 1 gp_fileclose L 1 void fileextern 1 1 gp_fileextern s 1 small fileflush 1 1 gp_fileflush0 DG 1 void fileopen 1 1 gp_fileopen sD"r",s, 1 small fileread 1 1 gp_fileread L 1 gen filereadstr 1 1 gp_filereadstr L 1 gen filewrite 1 1 gp_filewrite Ls 1 void filewrite1 1 1 gp_filewrite1 Ls 1 void floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen fold 3 0 1 genfold(${1 cookie}, ${1 wrapper}, ${2 code}) 2 closure gen 1 gen 1 fold0 GG 1 gen 2 1 _wrap_GG for 1 1 forpari V=GGI 1 void forcomposite 2 1 forcomposite V=GDGI 1 void 3 1 3 forcomposite _forcomposite_init _forcomposite_next 3 gen gen ?gen 0 fordiv 1 1 fordiv GVI 1 void fordivfactored 1 1 fordivfactored GVI 1 void forell 3 0 1 forell(${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}) 5 small small closure ?small 1 void 1 forell0 VLLID0,L, 1 void 2 5 _wrap_vG forfactored 1 1 forfactored V=GGI 1 void forpart 4 0 1 forpart(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${4 code}) 4 small closure ?gen ?gen 1 void 1 forpart0 V=GIDGDG 1 void 2 4 _wrap_vG 3 1 3 forpart _forpart_init _forpart_next 4 gen small ?gen ?gen 0 forperm 3 1 forperm0 GVI 1 void 2 4 _wrap_vG 3 1 3 forperm _forperm_init _forperm_next 2 gen gen 0 forprime 2 1 forprime V=GDGI 1 void 3 5 3 forprime _u_forprime_init _u_forprime_next 3 *notype small small 0 3 forprime _forprime_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _u_forprime_init _u_forprime_next 3 *small gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 *int gen ?gen 0 3 forprime _forprime_init _forprime_next_ 3 gen gen ?gen 0 forprimestep 2 1 forprimestep V=GDGGI 1 void 3 5 3 forprime _forprimestep_init _u_forprime_next 4 *notype small small gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *notype gen gen gen 0 3 forprime _forprimestep_init _u_forprime_next 4 *small gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 *int gen ?gen gen 0 3 forprime _forprimestep_init _forprime_next_ 4 gen gen ?gen gen 0 forqfvec 1 1 forqfvec0 VGDGI 1 void forsquarefree 1 1 forsquarefree V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 3 0 1 forsubgroup(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}) 3 gen ?gen closure 1 void 1 forsubgroup0 V=GDGI 1 void 2 3 _wrap_vG forsubset 3 1 forsubset0 GVI 1 void 2 4 _wrap_vG 3 1 3 forsubset _forsubset_init _forsubset_next 2 gen gen 0 forvec 2 1 forvec V=GID0,L, 1 void 3 1 3 forvec _forvec_init _forvec_next 3 gen gen ?small 0 frac 1 1 gfrac G 1 gen fromdigits 1 1 fromdigits GDG 1 gen galoischardet 1 1 galoischardet GGD1,L, 1 gen galoischarpoly 1 1 galoischarpoly GGD1,L, 1 gen galoischartable 1 1 galoischartable G 1 gen galoisconjclasses 1 1 galoisconjclasses G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisgetgroup 2 0 3 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisgetgroup(${1 code}, ${2 code}) 2 small small 1 vec 1 galoisgetgroup LD0,L, 1 gen galoisgetname 1 1 galoisgetname LL 1 gen galoisgetpol 2 0 4 galoisnbpol(${1 code}) 1 small 1 int galoisnbpol(${1 code}) 2 small 1 int galoisnbpol(${1 code}) 3 small 1 int galoisgetpol(${1 code}, ${2 code} ,${3 code}) 3 small small small 1 vec 1 galoisgetpol LD0,L,D1,L, 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoisisnormal 1 1 galoisisnormal GG 1 small galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggammah Gp 2 gen prec gammamellininv 1 1 gammamellininv GGD0,L,b 2 gen prec gammamellininvasymp 1 1 gammamellininvasymp GDPD0,L, 1 gen gammamellininvinit 1 1 gammamellininvinit GD0,L,b 2 gen prec gcd 2 0 4 cgcd(${1 code}, ${2 code}) 2 small small 1 small gcdii(${1 code}, ${2 code}) 2 int int 1 int content(${1 code}) 1 gen 1 gen ggcd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 ggcd0 GDG 1 gen gcdext 1 1 gcdext0 GG 1 gen genus2red 1 1 genus2red GDG 1 gen getabstime 1 1 getabstime 1 small getcache 1 1 getcache 1 gen getenv 1 1 gp_getenv s 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 gen getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small getwalltime 1 1 getwalltime 1 gen global 0 hammingweight 1 1 hammingweight G 1 small hilbert 1 1 hilbert GGDG 1 small hyperellcharpoly 1 1 hyperellcharpoly G 1 gen hyperellpadicfrobenius 1 1 hyperellpadicfrobenius GUL 1 gen hyperellratpoints 1 1 hyperellratpoints GGD0,L, 1 gen hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGDG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 gpidealfactor GGDG 1 gen idealfactorback 1 1 idealfactorback GGDGD0,L, 1 gen idealfrobenius 1 1 idealfrobenius GGG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen idealispower 1 1 idealispower GGLD& 1 small ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 ideallog DGGG 1 gen idealmin 1 1 idealmin GGDG 1 gen idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealmul0 GGGD0,L, 1 gen idealnorm 1 1 idealnorm GG 1 gen idealnumden 1 1 idealnumden GG 1 gen idealpow 1 1 idealpow0 GGGD0,L, 1 gen idealprimedec 2 0 2 idealprimedec(${1 code}, ${2 code}) 2 gen gen 1 vec idealprimedec_limit_f(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 vec 1 idealprimedec_limit_f GGD0,L, 1 gen idealprincipalunits 1 1 idealprincipalunits GGL 1 gen idealramgroups 1 1 idealramgroups GGG 1 gen idealred 1 1 idealred0 GGDG 1 gen idealredmodpower 1 1 idealredmodpower GGUD0,U, 1 gen idealstar 1 1 idealstar0 DGGD1,L, 1 gen idealtwoelt 1 1 idealtwoelt0 GGDG 1 gen idealval 1 1 gpidealval GGG 1 gen if 1 1 ifpari GDEDE 1 gen iferr 1 1 iferrpari EVEDE 1 gen imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec inline 0 input 1 1 gp_input 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 3 0 1 intcirc(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intcirc0 V=GGEDGp 2 gen prec 2 3 _wrap_G intformal 1 1 integ GDn 1 gen intfuncinit 3 0 1 intfuncinit(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?small 2 gen prec 1 intfuncinit0 V=GGED0,L,p 2 gen prec 2 3 _wrap_G intnum 3 0 1 intnum(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnum0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgauss 3 0 1 intnumgauss(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${prec}) 4 gen gen gen ?gen 2 gen prec 1 intnumgauss0 V=GGEDGp 2 gen prec 2 3 _wrap_G intnumgaussinit 1 1 intnumgaussinit D0,L,p 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnumromb 3 0 1 intnumromb(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${bitprec}) 4 gen gen gen ?small 2 gen prec 1 intnumromb0_bitprec V=GGED0,L,b 2 gen prec 2 3 _wrap_G isfundamental 2 0 2 Z_isfundamental(${1 code}) 1 int 1 bool isfundamental(${1 code}) 1 gen 1 bool 1 isfundamental G 1 small ispolygonal 1 1 ispolygonal GGD& 1 small ispower 2 0 2 Z_isanypower(${1 code}, NULL) 1 int 1 small Z_isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small ispowerful 1 1 ispowerful G 1 small isprime 2 0 2 isprime(${1 code}) 2 int ?0 1 bool gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen isprimepower 1 1 isprimepower GD& 1 small ispseudoprime 2 0 4 BPSW_psp(${1 code}) 2 int ?0 1 bool millerrabin(${1 code},${2 code}) 2 int #small 1 bool ispseudoprime(${1 code}, ${2 code}) 2 int small 1 bool gispseudoprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gispseudoprime GD0,L, 1 gen ispseudoprimepower 1 1 ispseudoprimepower GD& 1 small issquare 2 0 4 Z_issquare(${1 code}) 1 int 1 bool issquare(${1 code}) 1 gen 1 bool Z_issquareall(${1 code}, &${2 code}) 2 int &int 1 bool issquareall(${1 code}, &${2 code}) 2 gen &gen 1 bool 1 issquareall GD& 1 small issquarefree 2 0 1 issquarefree(${1 code}) 1 gen 1 bool 1 issquarefree G 1 small istotient 1 1 istotient GD& 1 small kill 1 1 kill0 r 1 void kronecker 2 0 4 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 gen gen 1 small 1 kronecker GG 1 small lambertw 1 1 glambertW Gp 2 gen prec laurentseries 1 1 laurentseries0 GDPDnp 2 gen prec lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lfun 2 0 3 lfun(${1 code}, ${2 code}, ${bitprec}) 2 gen gen 2 gen prec lfun(${1 code}, ${2 code}, ${bitprec}) 3 gen gen ?0 2 gen prec lfun0(${1 code}, ${2 code}, ${3 code}, ${bitprec}) 3 gen gen small 2 gen prec 1 lfun0 GGD0,L,b 2 gen prec lfunabelianrelinit 1 1 lfunabelianrelinit GGGGD0,L,b 2 gen prec lfunan 1 1 lfunan GLp 2 gen prec lfunartin 1 1 lfunartin GGGLb 2 gen prec lfuncheckfeq 1 1 lfuncheckfeq GDGb 2 small prec lfunconductor 1 1 lfunconductor GDGD0,L,b 2 gen prec lfuncost 1 1 lfuncost0 GDGD0,L,b 2 gen prec lfuncreate 1 1 lfuncreate G 1 gen lfundiv 1 1 lfundiv GGb 2 gen prec lfunetaquo 1 1 lfunetaquo G 1 gen lfungenus2 1 1 lfungenus2 G 1 gen lfunhardy 1 1 lfunhardy GGb 2 gen prec lfuninit 1 1 lfuninit0 GGD0,L,b 2 gen prec lfunlambda 1 1 lfunlambda0 GGD0,L,b 2 gen prec lfunmf 1 1 lfunmf GDGb 2 gen prec lfunmfspec 1 1 lfunmfspec Gb 2 gen prec lfunmul 1 1 lfunmul GGb 2 gen prec lfunorderzero 1 1 lfunorderzero GD-1,L,b 2 small prec lfunqf 1 1 lfunqf Gp 2 gen prec lfunrootres 1 1 lfunrootres Gb 2 gen prec lfunsympow 1 1 lfunsympow GU 1 gen lfuntheta 1 1 lfuntheta GGD0,L,b 2 gen prec lfunthetacost 1 1 lfunthetacost0 GDGD0,L,b 2 small prec lfunthetainit 1 1 lfunthetainit GDGD0,L,b 2 gen prec lfuntwist 1 1 lfuntwist GG 1 gen lfunzeros 1 1 lfunzeros GGD8,L,b 2 gen prec lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen liftall 2 0 3 liftall(${1 code}) 1 pol 1 pol liftall(${1 code}) 1 vec 1 vec liftall(${1 code}) 1 gen 1 gen 1 liftall G 1 gen liftint 2 0 3 liftint(${1 code}) 1 pol 1 pol liftint(${1 code}) 1 vec 1 vec liftint(${1 code}) 1 gen 1 gen 1 liftint G 1 gen liftpol 2 0 3 liftpol(${1 code}) 1 pol 1 pol liftpol(${1 code}) 1 vec 1 vec liftpol(${1 code}) 1 gen 1 gen 1 liftpol G 1 gen limitnum 1 1 limitnum0 GD0,L,DGp 2 gen prec lindep 1 1 lindep0 GD0,L, 1 gen listcreate 2 0 1 mklist() 1 ?gen 1 list 1 listcreate_gp D0,L, 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert WGL 1 gen listkill 1 1 listkill G 1 void listpop 2 0 1 listpop(${1 code}, ${2 code}) 2 list small 1 void 1 listpop0 WD0,L, 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput0 WGD0,L, 1 gen listsort 1 1 listsort WD0,L, 1 void lngamma 1 1 glngamma Gp 2 gen prec local 0 localbitprec 1 1 localbitprec L 1 void localprec 1 1 localprec L 1 void log 2 0 1 glog(${1 code}, ${prec}) 1 gen 2 gen prec 1 glog Gp 2 gen prec log1p 1 1 glog1p Gp 2 gen prec logint 2 0 2 expi(${1 code}) 2 gen 2 1 small logint0(${1 code}, ${2 code}, &${3 code}) 3 gen gen &int 1 small 1 logint0 GGD& 1 small mapdelete 1 1 mapdelete GG 1 void mapget 1 1 mapget GG 1 gen mapisdefined 1 1 mapisdefined GGD& 1 small_int mapput 1 1 mapput WGG 1 void matadjoint 1 1 matadjoint0 GD0,L, 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 matcompanion G 1 gen matconcat 1 1 matconcat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdetmod 1 1 matdetmod GG 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 mateigen GD0,L,p 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen mathouseholder 1 1 mathouseholder GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 2 0 4 image(${1 code}) 2 gen ?0 1 vec image2(${1 code}) 2 gen 1 1 vec $"incorrect flag in matimage" 2 gen #small 0 matimage0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matimage0 GD0,L, 1 gen matimagecompl 2 0 1 imagecompl(${1 code}) 1 gen 1 vecsmall 1 imagecompl G 1 gen matimagemod 1 1 matimagemod GGD& 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matinvmod 1 1 matinvmod GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small_int matker 2 0 4 ker(${1 code}) 2 gen ?0 1 vec ZM_ker(${1 code}) 2 gen 1 1 vec $"incorrect flag in matker" 2 gen #small 0 matker0(${1 code}, ${2 code}) 2 gen small 1 vec 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matkermod 1 1 matkermod GGD& 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matpermanent 1 1 matpermanent G 1 gen matqr 1 1 matqr GD0,L,p 2 gen prec matrank 1 1 rank G 1 small matrix 1 1 matrice GDGDVDVDE 1 gen matrixqz 1 1 matrixqz0 GDG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen mfDelta 1 1 mfDelta 1 gen mfEH 1 1 mfEH G 1 gen mfEk 1 1 mfEk L 1 gen mfTheta 1 1 mfTheta DG 1 gen mfatkin 1 1 mfatkin GG 1 gen mfatkineigenvalues 1 1 mfatkineigenvalues GLp 2 gen prec mfatkininit 1 1 mfatkininit GLp 2 gen prec mfbasis 1 1 mfbasis GD4,L, 1 gen mfbd 1 1 mfbd GL 1 gen mfbracket 1 1 mfbracket GGD0,L, 1 gen mfcoef 1 1 mfcoef GL 1 gen mfcoefs 1 1 mfcoefs GLD1,L, 1 gen mfconductor 1 1 mfconductor GG 1 small mfcosets 1 1 mfcosets G 1 gen mfcuspisregular 1 1 mfcuspisregular GG 1 small mfcusps 1 1 mfcusps G 1 gen mfcuspval 1 1 mfcuspval GGGb 2 gen prec mfcuspwidth 1 1 mfcuspwidth GG 1 small mfderiv 1 1 mfderiv GD1,L, 1 gen mfderivE2 1 1 mfderivE2 GD1,L, 1 gen mfdescribe 1 1 mfdescribe GD& 1 gen mfdim 1 1 mfdim GD4,L, 1 gen mfdiv 1 1 mfdiv GG 1 gen mfeigenbasis 1 1 mfeigenbasis G 1 gen mfeigensearch 1 1 mfeigensearch GDG 1 gen mfeisenstein 1 1 mfeisenstein LDGDG 1 gen mfembed 1 1 mfembed0 GDGp 2 gen prec mfeval 1 1 mfeval GGGb 2 gen prec mffields 1 1 mffields G 1 gen mffromell 1 1 mffromell G 1 gen mffrometaquo 1 1 mffrometaquo GD0,L, 1 gen mffromlfun 1 1 mffromlfun Gp 2 gen prec mffromqf 1 1 mffromqf GDG 1 gen mfgaloistype 1 1 mfgaloistype GDG 1 gen mfhecke 1 1 mfhecke GGL 1 gen mfheckemat 1 1 mfheckemat GG 1 gen mfinit 1 1 mfinit GD4,L, 1 gen mfisCM 1 1 mfisCM G 1 gen mfisequal 1 1 mfisequal GGD0,L, 1 small mfkohnenbasis 1 1 mfkohnenbasis G 1 gen mfkohnenbijection 1 1 mfkohnenbijection G 1 gen mfkohneneigenbasis 1 1 mfkohneneigenbasis GG 1 gen mflinear 1 1 mflinear GG 1 gen mfmanin 1 1 mfmanin Gb 2 gen prec mfmul 1 1 mfmul GG 1 gen mfnumcusps 1 1 mfnumcusps G 1 gen mfparams 1 1 mfparams G 1 gen mfperiodpol 1 1 mfperiodpol GGD0,L,b 2 gen prec mfperiodpolbasis 1 1 mfperiodpolbasis LD0,L, 1 gen mfpetersson 1 1 mfpetersson GDG 1 gen mfpow 1 1 mfpow GL 1 gen mfsearch 1 1 mfsearch GGD4,L, 1 gen mfshift 1 1 mfshift GL 1 gen mfshimura 1 1 mfshimura GGD1,L, 1 gen mfslashexpansion 1 1 mfslashexpansion GGGLLD&p 2 gen prec mfspace 1 1 mfspace GDG 1 small mfsplit 1 1 mfsplit GD0,L,D0,L, 1 gen mfsturm 1 1 mfsturm G 1 small mfsymbol 1 1 mfsymbol GDGb 2 gen prec mfsymboleval 1 1 mfsymboleval GGDGb 2 gen prec mftaylor 1 1 mftaylor GLD0,L,p 2 gen prec mftobasis 1 1 mftobasis GGD0,L, 1 gen mftocoset 1 1 mftocoset LGG 1 gen mftonew 1 1 mftonew GG 1 gen mftraceform 1 1 mftraceform GD0,L, 1 gen mftwist 1 1 mftwist GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 modreverse G 1 gen moebius 1 1 moebius G 1 small msatkinlehner 1 1 msatkinlehner GLDG 1 gen mscuspidal 1 1 mscuspidal GD0,L, 1 gen msdim 1 1 msdim G 1 small mseisenstein 1 1 mseisenstein G 1 gen mseval 1 1 mseval GGDG 1 gen msfromcusp 1 1 msfromcusp GG 1 gen msfromell 1 1 msfromell GD0,L, 1 gen msfromhecke 1 1 msfromhecke GGDG 1 gen msgetlevel 1 1 msgetlevel G 1 small msgetsign 1 1 msgetsign G 1 small msgetweight 1 1 msgetweight G 1 small mshecke 1 1 mshecke GLDG 1 gen msinit 1 1 msinit GGD0,L, 1 gen msissymbol 1 1 msissymbol GG 1 gen mslattice 1 1 mslattice GDG 1 gen msnew 1 1 msnew G 1 gen msomseval 1 1 msomseval GGG 1 gen mspadicL 1 1 mspadicL GDGD0,L, 1 gen mspadicinit 1 1 mspadicinit GLLD-1,L, 1 gen mspadicmoments 1 1 mspadicmoments GGD1,L, 1 gen mspadicseries 1 1 mspadicseries GD0,L, 1 gen mspathgens 1 1 mspathgens G 1 gen mspathlog 1 1 mspathlog GG 1 gen mspetersson 1 1 mspetersson GDGDG 1 gen mspolygon 1 1 mspolygon GD0,L, 1 gen msqexpansion 1 1 msqexpansion GGDP 1 gen mssplit 1 1 mssplit GDGD0,L, 1 gen msstar 1 1 msstar GDG 1 gen mstooms 1 1 mstooms GG 1 gen my 0 newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 1 nextprime(${1 code}) 1 gen 1 int 1 nextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis_gp G 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfcertify 1 1 nfcertify G 1 gen nfcompositum 1 1 nfcompositum GGGD0,L, 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdisc G 1 gen nfeltadd 1 1 nfadd GGG 1 gen nfeltdiv 1 1 nfdiv GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 nfdivmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltembed 1 1 nfeltembed GGDGp 2 gen prec nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 nfmul GGG 1 gen nfeltmulmodpr 1 1 nfmulmodpr GGGG 1 gen nfeltnorm 1 1 nfnorm GG 1 gen nfeltpow 1 1 nfpow GGG 1 gen nfeltpowmodpr 1 1 nfpowmodpr GGGG 1 gen nfeltreduce 1 1 nfreduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltsign 1 1 nfeltsign GGDG 1 gen nfelttrace 1 1 nftrace GG 1 gen nfeltval 1 1 gpnfvalrem GGGD& 1 gen nffactor 1 1 nffactor GG 1 gen nffactorback 1 1 nffactorback GGDG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfgrunwaldwang 1 1 nfgrunwaldwang GGGGDn 1 gen nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhnf0 GGD0,L, 1 gen nfhnfmod 1 1 nfhnfmod GGG 1 gen nfinit 2 0 8 nfinit0(${1 code}, 0, ${prec}) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, ${prec}) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, ${prec}) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, ${prec}) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, ${prec}) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, ${prec}) 2 gen 5 2 gen prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, ${prec}) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfislocalpower 1 1 nfislocalpower GGGG 1 small nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodpr 1 1 nfmodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfmodprlift 1 1 nfmodprlift GGG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfpolsturm 1 1 nfpolsturm GGDG 1 gen nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsnf0 GGD0,L, 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsplitting 1 1 nfsplitting GDG 1 gen nfsubfields 1 1 nfsubfields GD0,L, 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen normlp 1 1 gnormlp GDGp 2 gen prec numbpart 1 1 numbpart G 1 gen numdiv 2 0 1 numdiv(${1 code}) 1 gen 1 int 1 numdiv G 1 gen numerator 1 1 numerator GDG 1 gen numtoperm 2 0 2 Z_to_perm(${1 code}, ${2 code}) 2 small int 1 vecsmall numtoperm(${1 code}, ${2 code}) 2 small gen 1 vecsmall 1 numtoperm LG 1 gen omega 1 1 omega G 1 small oo 1 1 mkoo 1 gen padicappr 1 1 padicappr GG 1 gen padicfields 1 1 padicfields0 GGD0,L, 1 gen padicprec 1 1 gppadicprec GG 1 gen parapply 1 1 parapply GG 1 gen pareval 1 1 pareval G 1 gen parfor 2 0 1 parfor(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parfor0 V=GDGJDVDI 1 void parforprime 2 0 1 parforprime(${1 code}, ${2 code}, ${3 code}, NULL, NULL) 3 gen gen closure 1 void 1 parforprime0 V=GDGJDVDI 1 void parforvec 2 0 1 parforvec(${1 code}, ${2 code}, ${5 code}, NULL, NULL) 5 gen closure ?small 1 void 1 parforvec0 V=GJDVDID0,L, 1 void parploth 2 0 1 parploth(${2 code}, ${3 code}, ${4 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen closure ?0 ?0 1 vec 1 parploth V=GGJD0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec parselect 1 1 parselect GGD0,L, 1 gen parsum 2 0 1 parsum(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen closure ?gen 1 gen 1 parsum V=GGJDG 1 gen partitions 1 1 partitions LDGDG 1 gen parvector 2 0 1 parvector(${1 code}, ${3 code}) 3 small closure 1 vec 1 parvector LVJ 1 gen permorder 1 1 permorder G 1 small permsign 1 1 permsign G 1 small permtonum 1 1 permtonum G 1 gen plot 1 1 pariplot V=GGEDGDGp 2 void prec plotbox 1 1 plotbox LGGD0,L, 1 void plotclip 1 1 plotclip L 1 void plotcolor 1 1 plotcolor LG 1 gen plotcopy 1 1 plotcopy LLGGD0,L, 1 void plotcursor 1 1 plotcursor L 1 gen plotdraw 1 1 plotdraw GD0,L, 1 void plotexport 1 1 plotexport GGD0,L, 1 gen ploth 3 0 1 ploth(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${4 code}, ${5 code}, ${prec}) 5 gen gen gen ?0 ?0 2 gen prec 1 ploth0 V=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec 2 3 _wrap_G plothexport 3 0 1 plothexport(${1 code}, ${4 cookie}, ${4 wrapper}, ${2 code}, ${3 code}, ${5 code}, ${6 code}, ${prec}) 6 gen gen gen gen ?0 ?0 2 gen prec 1 plothexport0 GV=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec 2 3 _wrap_G plothraw 1 1 plothraw GGD0,L, 1 gen plothrawexport 1 1 plothrawexport GGGD0,L, 1 gen plothsizes 1 1 plothsizes D0,L, 1 gen plotinit 1 1 plotinit LDGDGD0,L, 1 void plotkill 1 1 plotkill L 1 void plotlines 1 1 plotlines LGGD0,L, 1 void plotlinetype 1 1 plotlinetype LL 1 void plotmove 1 1 plotmove LGG 1 void plotpoints 1 1 plotpoints LGG 1 void plotpointsize 1 1 plotpointsize LG 1 void plotpointtype 1 1 plotpointtype LL 1 void plotrbox 1 1 plotrbox LGGD0,L, 1 void plotrecth 1 1 plotrecth0 LV=GGED0,M,D0,L,p\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048; Complex|4096 2 gen prec plotrecthraw 1 1 plotrecthraw LGD0,L, 1 gen plotrline 1 1 plotrline LGG 1 void plotrmove 1 1 plotrmove LGG 1 void plotrpoint 1 1 plotrpoint LGG 1 void plotscale 1 1 plotscale LGGGG 1 void plotstring 1 1 plotstring LsD0,L, 1 void polchebyshev 2 0 3 polchebyshev1(${1 code},${3 code}) 3 small ?1 ?var 1 gen polchebyshev2(${1 code},${3 code}) 3 small 2 ?var 1 gen polchebyshev(${1 code},${2 code},${3 code}) 3 small small ?var 1 gen 1 polchebyshev_eval LD1,L,DG 1 gen polclass 1 1 polclass GD0,L,Dn 1 gen polcoef 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoef0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoef GLDn 1 gen polcoeff 2 0 5 constant_coeff(${1 code}) 2 pol 0 2 gen copy constant_coeff(${1 code}) 3 pol 0 2 gen copy RgX_coeff(${1 code}, ${2 code}) 2 pol small 2 gen copy RgX_coeff(${1 code}, ${2 code}) 3 pol small 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 2 0 2 polcyclo(${1 code},${2 code}) 2 small ?var 1 gen polcyclo_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polcyclo_eval LDG 1 gen polcyclofactors 1 1 polcyclofactors G 1 gen poldegree 1 1 gppoldegree GDn 1 gen poldisc 2 0 2 poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscfactors 1 1 poldiscfactors GD0,L, 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polgraeffe 1 1 polgraeffe G 1 gen polhensellift 1 1 polhensellift GGGL 1 gen polhermite 2 0 2 polhermite(${1 code},${2 code}) 2 small ?var 1 gen polhermite_eval(${1 code},${2 code}) 2 small gen 1 gen 1 polhermite_eval LDG 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen poliscyclo 1 1 poliscyclo G 1 small poliscycloprod 1 1 poliscycloprod G 1 small polisirreducible 1 1 isirreducible G 1 small pollead 2 0 3 leading_coeff(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 2 0 2 pollegendre(${1 code},${2 code}) 2 small ?var 1 gen pollegendre_eval(${1 code},${2 code}) 2 small gen 1 gen 1 pollegendre_eval LDG 1 gen polmodular 1 1 polmodular LD0,L,DGDnD0,L, 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredbest 1 1 polredbest GD0,L, 1 gen polredord 1 1 polredord G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polresultantext 1 1 polresultantext0 GGDn 1 gen polroots 1 1 roots Gp 2 gen prec polrootsbound 1 1 polrootsbound GDG 1 gen polrootsff 1 1 polrootsff GDGDG 1 gen polrootsmod 1 1 polrootsmod GDG 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polrootsreal 1 1 realroots GDGp 2 gen prec polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 polchebyshev1 LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen powers 2 0 1 gpowers(${1 code}, ${2 code}) 2 gen small 1 vec 1 gpowers0 GLDG 1 gen precision 2 0 9 prec2ndec(gprecision(${1 code})) 1 real 1 small precision0(${1 code}, 0) 1 gen 1 int prec2ndec(gprecision(${1 code})) 2 real 0 1 small precision0(${1 code}, 0) 2 gen 0 1 int rtor(${1 code}, ndec2prec(${2 code})) 2 real #small 1 real gprec(${1 code}, ${2 code}) 2 gen #small 1 gen precision0(${1 code}, ${2 code}) 2 real small 1 real precision0(${1 code}, ${2 code}) 2 mp small 1 mp precision0(${1 code}, ${2 code}) 2 gen small 1 gen 1 precision0 GD0,L, 1 gen precprime 2 0 1 precprime(${1 code}) 1 gen 1 int 1 precprime G 1 gen prime 1 1 prime L 1 gen primecert 1 1 primecert GD0,L, 1 gen primecertexport 1 1 primecertexport GD0,L, 1 gen primecertisvalid 1 1 primecertisvalid G 1 small primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes0 G 1 gen print 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pari_printf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printf 1 1 printf0 ss* 1 void printp 2 0 1 pari_printf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 printp s* 1 void printsep 1 1 printsep ss* 1 void printsep1 1 1 printsep1 ss* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodeulerrat 1 1 prodeulerrat GDGD2,L,p 2 gen prec prodinf 3 0 1 prodinf(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?small 2 gen prec 1 prodinf0 V=GED0,L,p 2 gen prec 2 2 _wrap_G prodnumrat 1 1 prodnumrat GLp 2 gen prec psdraw 1 1 psdraw GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 psploth0 V=GGED0,L,D0,L,p 2 gen prec psplothraw 1 1 psplothraw GGD0,L, 1 gen qfauto 1 1 qfauto0 GDG 1 gen qfautoexport 1 1 qfautoexport GD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 qfbcompraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbil 1 1 qfbil GGDG 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GGDG 1 gen qfbpowraw 1 1 qfbpowraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbredsl2 1 1 qfbredsl2 GDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfeval 1 1 qfeval0 DGGDG 1 gen qfgaussred 1 1 qfgaussred G 1 gen qfisom 1 1 qfisom0 GGDGDG 1 gen qfisominit 1 1 qfisominit0 GDGDG 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}) 2 vec ?0 1 vec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}) 2 vec small 1 vec 1 qflll0 GD0,L, 1 gen qflllgram 1 1 qflllgram0 GD0,L, 1 gen qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfnorm 1 1 qfnorm GDG 1 gen qforbits 1 1 qforbits GG 1 gen qfparam 1 1 qfparam GGD0,L, 1 gen qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 qfsign G 1 gen qfsolve 1 1 qfsolve G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen0 GDn 1 gen quadhilbert 1 1 quadhilbert Gp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGp 2 gen prec quadregulator 1 1 quadregulator Gp 2 gen prec quadunit 1 1 quadunit0 GDn 1 gen quit 1 1 gp_quit D0,L, 1 void ramanujantau 1 1 ramanujantau G 1 gen random 2 0 2 genrand(${1 code}) 1 ?int 1 int genrand(${1 code}) 1 gen 1 gen 1 genrand DG 1 gen randomprime 1 1 randomprime DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 gp_read_file D"",s, 1 gen readstr 1 1 readstr D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GG 1 gen rnfdedekind 1 1 rnfdedekind GGDGD0,L, 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfeltabstorel GG 1 gen rnfeltdown 1 1 rnfeltdown0 GGD0,L, 1 gen rnfeltnorm 1 1 rnfeltnorm GG 1 gen rnfeltreltoabs 1 1 rnfeltreltoabs GG 1 gen rnfelttrace 1 1 rnfelttrace GG 1 gen rnfeltup 1 1 rnfeltup0 GGD0,L, 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealfactor 1 1 rnfidealfactor GG 1 gen rnfidealhnf 1 1 rnfidealhnf GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealprimedec 1 1 rnfidealprimedec GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs0 GGD0,L, 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup0 GGD0,L, 1 gen rnfinit 1 1 rnfinit0 GGD0,L, 1 gen rnfisabelian 1 1 rnfisabelian GG 1 small rnfisfree 1 1 rnfisfree GG 1 small rnfislocalcyclo 1 1 rnfislocalcyclo G 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpolredbest 1 1 rnfpolredbest GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen select 3 0 3 genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 2 gen gen 1 gen genselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 0 1 gen genindexselect(${1 cookie}, ${1 wrapper}, ${2 code}) 3 gen gen 1 1 vecsmall 1 select0 GGD0,L, 1 gen 2 1 _wrap_bG self 1 1 pari_self 2 gen copy seralgdep 1 1 seralgdep GLL 1 gen serchop 1 1 serchop GD0,L, 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serprec 1 1 gpserprec Gn 1 gen serreverse 1 1 serreverse G 1 gen setbinop 1 1 setbinop GGDG 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand G 1 void setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 2 sumdiv(${1 code}) 2 gen ?1 1 int numdiv(${1 code}) 2 gen 0 1 int 1 sumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinc 1 1 gsinc Gp 2 gen prec sinh 1 1 gsinh Gp 2 gen prec sizebyte 1 1 gsizebyte G 1 small sizedigit 1 1 sizedigit G 1 small solve 3 0 1 zbrent(${3 cookie}, ${3 wrapper}, ${1 code}, ${2 code}, ${prec}) 3 gen gen gen 2 gen prec 1 zbrent0 V=GGEp 2 gen prec 2 3 _wrap_G solvestep 3 0 1 solvestep(${4 cookie}, ${4 wrapper}, ${1 code}, ${2 code}, ${3 code}, ${5 code}, ${prec}) 5 gen gen gen gen ?0$ 2 gen prec 1 solvestep0 V=GGGED0,L,p 2 gen prec 2 4 _wrap_G sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, ${prec}) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 sqrtint(${1 code}) 1 gen 1 int 1 sqrtint G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec sqrtnint 2 0 1 sqrtnint(${1 code}, ${2 code}) 2 gen small 1 int 1 sqrtnint GL 1 gen stirling 1 1 stirling LLD1,L, 1 gen subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 3 0 2 sumalt(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumalt2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumalt0 V=GED0,L,p 2 gen prec 2 2 _wrap_G sumdedekind 1 1 sumdedekind GG 1 gen sumdigits 1 1 sumdigits0 GDG 1 gen sumdiv 1 1 sumdivexpr GVE 1 gen sumdivmult 1 1 sumdivmultexpr GVE 1 gen sumeulerrat 1 1 sumeulerrat GDGD2,L,p 2 gen prec sumformal 1 1 sumformal GDn 1 gen suminf 3 0 1 suminf(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 2 gen gen 2 gen prec 1 suminf0 V=GEp 2 gen prec 2 2 _wrap_G sumnum 3 0 1 sumnum(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnum0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumap 3 0 1 sumnumap(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumap0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumapinit 1 1 sumnumapinit DGp 2 gen prec sumnuminit 1 1 sumnuminit DGp 2 gen prec sumnumlagrange 3 0 1 sumnumlagrange(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnumlagrange0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnumlagrangeinit 1 1 sumnumlagrangeinit DGDGp 2 gen prec sumnummonien 3 0 1 sumnummonien(${2 cookie}, ${2 wrapper}, ${1 code}, ${3 code}, ${prec}) 3 gen gen ?gen 2 gen prec 1 sumnummonien0 V=GEDGp 2 gen prec 2 2 _wrap_G sumnummonieninit 1 1 sumnummonieninit DGDGDGp 2 gen prec sumnumrat 1 1 sumnumrat GGp 2 gen prec sumpos 3 0 2 sumpos(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen ?0 2 gen prec sumpos2(${2 cookie}, ${2 wrapper}, ${1 code}, ${prec}) 3 gen gen 1 2 gen prec 1 sumpos0 V=GED0,L,p 2 gen prec 2 2 _wrap_G system 1 1 gpsystem s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gtanh Gp 2 gen prec taylor 1 1 tayl GnDP 1 gen teichmuller 1 1 teichmuller GDG 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 3 0 1 trap0(${1 code}, ${2 code}, ${3 code}) 3 ?str ?closure ?closure 1 gen 1 trap0 DrDEDE 1 gen 2 3 _ _ truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void uninline 0 until 1 1 untilpari EI 1 void valuation 1 1 gpvaluation GG 1 gen varhigher 1 1 varhigher sDn 1 gen variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar DG 1 gen variables 1 1 variables_vec DG 1 gen varlower 1 1 varlower sDn 1 gen vecextract 2 0 1 extract0(${1 code}, ${2 code}, ${3 code}) 3 vec gen ?gen 1 vec 1 extract0 GGDG 1 gen vecmax 2 0 2 vecmax(${1 code}) 1 gen 1 gen vecmax0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmax0 GD& 1 gen vecmin 2 0 2 vecmin(${1 code}) 1 gen 1 gen vecmin0(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 vecmin0 GD& 1 gen vecprod 1 1 vecprod G 1 gen vecsearch 1 1 vecsearch GGDG 1 small vecsort 2 0 16 vecsort0(${1 code}, ${2 code}, 0) 2 vecsmall ?gen 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vecsmall ?gen small 1 vecsmall sort(${1 code}) 3 vec ?0 1 vec indexsort(${1 code}) 3 vec 1 1 vecsmall lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec vecsort0(${1 code}, ${2 code}, 1) 3 vec ?gen 1 1 vecsmall vecsort0(${1 code}, ${2 code}, 3) 3 vec ?gen 3 1 vecsmall vecsort0(${1 code}, ${2 code}, 5) 3 vec ?gen 5 1 vecsmall vecsort0(${1 code}, ${2 code}, 7) 3 vec ?gen 7 1 vecsmall vecsort0(${1 code}, ${2 code}, 9) 3 vec ?gen 9 1 vecsmall vecsort0(${1 code}, ${2 code}, 11) 3 vec ?gen 11 1 vecsmall vecsort0(${1 code}, ${2 code}, 13) 3 vec ?gen 13 1 vecsmall vecsort0(${1 code}, ${2 code}, 15) 3 vec ?gen 15 1 vecsmall vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen #small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec ?gen small 1 gen 1 vecsort0 GDGD0,L, 1 gen vecsum 1 1 vecsum G 1 gen vector 1 1 vecteur GDVDE 1 gen vectorsmall 1 1 vecteursmall GDVDE 1 gen vectorv 1 1 vvecteur GDVDE 1 gen version 1 1 pari_version 1 gen warning 2 0 1 pari_warn(warnuser, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 warning0 s* 1 void weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 1 1 whilepari EI 1 void write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetahurwitz 1 1 zetahurwitz GGD0,L,b 2 gen prec zetamult 1 1 zetamult0 GDGp 2 gen prec zetamultall 1 1 zetamultall Lp 2 gen prec zetamultconvert 1 1 zetamultconvert GD1,L, 1 gen zetamultinit 1 1 zetamultinit Lp 2 gen prec znchar 1 1 znchar G 1 gen zncharconductor 1 1 zncharconductor GG 1 gen znchardecompose 1 1 znchardecompose GGG 1 gen znchargauss 1 1 znchargauss GGDGb 2 gen prec zncharinduce 1 1 zncharinduce GGG 1 gen zncharisodd 1 1 zncharisodd GG 1 small znchartokronecker 1 1 znchartokronecker GGD0,L, 1 gen znchartoprimitive 1 1 znchartoprimitive GG 1 gen znconreychar 1 1 znconreychar GG 1 gen znconreyconductor 1 1 znconreyconductor GGD& 1 gen znconreyexp 1 1 znconreyexp GG 1 gen znconreylog 1 1 znconreylog GG 1 gen zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog0 GGDG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 1 1 znprimroot G 1 gen znstar 1 1 znstar0 GD0,L, 1 gen gp2c-0.0.14/desc/func23.dsc0000644000175000017500000016400612163255111012065 00000000000000!_ 2 0 2 ${1 code} 1 negbool 2 bool parens ${1 code} 1 bool 2 negbool parens 1 gnot G 1 gen +_ 1 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int parens copy ${1 code} 1 real 3 real parens copy ${1 code} 1 mp 3 mp parens copy ${1 code} 1 gen 3 gen parens copy -_ 2 0 5 -${parens 1 code} 1 small 2 small parens negi(${1 code}) 1 int 1 int negr(${1 code}) 1 real 1 real mpneg(${1 code}) 1 mp 1 mp gneg(${1 code}) 1 gen 1 gen 1 gneg G 1 gen Col 2 0 2 cgetg(1,t_COL) 0 1 vec gtocol(${1 code}) 1 gen 1 vec 1 gtocol DG 1 gen Euler 2 0 1 mpeuler(prec) 0 2 real prec 1 mpeuler p 2 gen prec I 2 0 1 gi 0 1 gen 1 geni 1 gen List 2 0 1 gtolist(${1 code}) 1 ?gen 1 list 1 gtolist DG 1 gen Mat 1 1 gtomat DG 1 gen Mod 2 0 6 gmodulss(${1 code}, ${2 code}) 2 small small 1 gen gmodulss(${1 code}, ${2 code}) 3 small small #small 1 gen gmodulsg(${1 code}, ${2 code}) 2 small gen 1 gen gmodulsg(${1 code}, ${2 code}) 3 small gen #small 1 gen gmodulo(${1 code}, ${2 code}) 2 gen gen 1 gen gmodulo(${1 code}, ${2 code}) 3 gen gen #small 1 gen 1 Mod0 GGD0,L, 1 gen O 0 O(_^_) 1 0 5 ggrando(${1 code}, 1) 1 gen 1 gen ggrando(gen_1, ${2 code}) 2 1 small 1 gen zeropadic(${1 code}, ${2 code}) 2 int small 1 gen ggrando(${1 code}, ${2 code}) 2 gen small 1 gen zeroser(${1 code}, ${2 code}) 2 var small 1 gen Pi 2 0 1 mppi(prec) 0 2 real prec 1 mppi p 2 gen prec Pol 2 0 1 gtopoly(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopoly GDn 1 gen Polrev 2 0 1 gtopolyrev(${1 code}, ${2 code}) 2 gen ?var 1 pol 1 gtopolyrev GDn 1 gen Qfb 1 1 Qfb0 GGGDGp 2 gen prec Ser 1 1 gtoser GDn 1 gen Set 2 0 2 cgetg(1,t_VEC) 0 1 vec gtoset(${1 code}) 1 gen 1 vec 1 gtoset DG 1 gen Str 2 0 1 ${1 :genstr cast} 1 gen 3 genstr copy parens 1 Str s* 1 gen Strchr 1 1 Strchr G 1 gen Strexpand 1 1 Strexpand s* 1 gen Strtex 1 1 Strtex s* 1 gen Vec 2 0 2 cgetg(1,t_VEC) 0 1 vec gtovec(${1 code}) 1 gen 1 vec 1 gtovec DG 1 gen Vecsmall 2 0 1 gtovecsmall(${1 code}) 1 gen 1 vecsmall 1 gtovecsmall DG 1 gen _! 2 0 1 mpfact(${1 code}) 1 small 1 int 1 mpfact L 1 gen _!=_ 2 0 15 ${parens 1 code} != ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} != ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) != 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) != 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 negbool cmprr(${1 code}, ${2 code}) != 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) != 0 2 mp mp 2 bool parens ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} != ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} != ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 bool ${parens 1 code} != ${parens 2 code} 2 typ typ 2 bool parens gequalsg(${1 code}, ${2 code}) 2 small gen 1 negbool gequalgs(${1 code}, ${2 code}) 2 gen small 1 negbool gequal(${1 code}, ${2 code}) 2 gen gen 1 negbool 1 gne GG 1 gen _%=_ 1 0 6 ${1 code} = smodss(${1 code}, ${2 code}) 2 *small small 2 small parens ${1 code} = modis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = modii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmodgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmod(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _%_ 2 0 7 smodss(${1 code}, ${2 code}) 2 small small 1 small modsi(${1 code}, ${2 code}) 2 small int 1 int smodis(${1 code}, ${2 code}) 2 int small 1 small modii(${1 code}, ${2 code}) 2 int int 1 int gmodgs(${1 code}, ${2 code}) 2 gen small 1 gen gmodsg(${1 code}, ${2 code}) 2 small gen 1 gen gmod(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmod GG 1 gen _&&_ 1 0 1 ${parens 1 code} && ${parens 2 code} 2 bool bool 2 bool parens _' 2 0 1 deriv(${1 code},-1) 1 gen 1 gen 1 deriv GDn 1 gen _*=_ 1 0 12 ${1 code} *= ${parens 2 code} 2 *small small 2 small parens ${1 code} = mulis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mulii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = mulrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mulri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = mulrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpmul(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gmulgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gmul(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _*_ 2 0 14 ${parens 1 code}*${parens 2 code} 2 small small 2 small parens mulis(${1 code}, ${2 code}) 2 int small 1 int mulsi(${1 code}, ${2 code}) 2 small int 1 int mulii(${1 code}, ${2 code}) 2 int int 1 int (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small mulsr(${1 code}, ${2 code}) 2 #small real 1 real mulsr(${1 code}, ${2 code}) 2 small real 1 mp mulrs(${1 code}, ${2 code}) 2 real small 1 mp mulrr(${1 code}, ${2 code}) 2 real real 1 real mpmul(${1 code}, ${2 code}) 2 mp mp 1 mp gmulgs(${1 code}, ${2 code}) 2 gen small 1 gen gmulsg(${1 code}, ${2 code}) 2 small gen 1 gen perm_mul(${1 code}, ${2 code}) 2 vecsmall vecsmall 1 vecsmall gmul(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmul GG 1 gen _++ 1 0 8 ++${1 code} 1 *bptr 1 bptr ++${1 code} 1 *small 1 small ++${1 code} 1 *lg 1 lg ${1 code} = addis(${1 code}, 1) 1 *int 2 int parens ${1 code} = addrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpadd(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gaddgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gaddgs(${1 code}, 1) 1 *gen 2 gen parens _+=_ 1 0 13 ${1 code} += ${parens 2 code} 2 *small small 2 small parens ${1 code} += ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = addis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = addii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = addrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = addir(${2 code}, ${1 code}) 2 *real int 2 real parens ${1 code} = addrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpadd(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gaddgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gadd(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _+_ 2 0 16 ${parens 1 code} 2 lg 1 2 small parens ${parens 1 code} + ${parens 2 code} 2 small small 2 small parens ${parens 1 code} + ${parens 2 code} 2 lg small 2 lg parens ${parens 1 code} + ${parens 2 code} 2 small lg 2 lg parens addis(${1 code}, ${2 code}) 2 int small 1 int addsi(${1 code}, ${2 code}) 2 small int 1 int addii(${1 code}, ${2 code}) 2 int int 1 int addrs(${1 code}, ${2 code}) 2 real small 1 real addsr(${1 code}, ${2 code}) 2 small real 1 real addrr(${1 code}, ${2 code}) 2 real real 1 real mpadd(${1 code}, ${2 code}) 2 mp real 1 real mpadd(${1 code}, ${2 code}) 2 real mp 1 real mpadd(${1 code}, ${2 code}) 2 mp mp 1 mp gaddgs(${1 code}, ${2 code}) 2 gen small 1 gen gaddsg(${1 code}, ${2 code}) 2 small gen 1 gen gadd(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gadd GG 1 gen _-- 1 0 8 --${1 code} 1 *bptr 1 bptr --${1 code} 1 *small 1 small --${1 code} 1 *lg 1 lg ${1 code} = subis(${1 code}, 1) 1 *int 2 int parens ${1 code} = subrs(${1 code}, 1) 1 *real 2 real parens ${1 code} = mpsub(${1 code}, gen_1) 1 *mp 2 mp parens ${1 code} = gsubgs(${1 code}, 1) 1 *pol 2 pol parens ${1 code} = gsubgs(${1 code}, 1) 1 *gen 2 gen parens _-=_ 1 0 13 ${1 code} -= ${parens 2 code} 2 *small small 2 small parens ${1 code} -= ${parens 2 code} 2 *lg small 2 lg parens ${1 code} = subis(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = subii(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = subrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = subri(${1 code}, ${2 code}) 2 *real int 2 real parens ${1 code} = subrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = mpsub(${1 code}, ${2 code}) 2 *mp mp 2 mp parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *pol small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gsubgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gsub(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _-_ 2 0 14 ${parens 1 code} - ${parens 2 code} 2 small small 2 small parens ${parens 1 code} - ${parens 2 code} 2 lg small 2 lg parens subis(${1 code}, ${2 code}) 2 int small 1 int subsi(${1 code}, ${2 code}) 2 small int 1 int subii(${1 code}, ${2 code}) 2 int int 1 int subrs(${1 code}, ${2 code}) 2 real small 1 real subsr(${1 code}, ${2 code}) 2 small real 1 real subrr(${1 code}, ${2 code}) 2 real real 1 real mpsub(${1 code}, ${2 code}) 2 mp real 1 real mpsub(${1 code}, ${2 code}) 2 real mp 1 real mpsub(${1 code}, ${2 code}) 2 mp mp 1 mp gsubgs(${1 code}, ${2 code}) 2 gen small 1 gen gsubsg(${1 code}, ${2 code}) 2 small gen 1 gen gsub(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gsub GG 1 gen _.a1 2 0 1 gel(${1 code}, 1) 1 ell 2 gen copy 1 member_a1 G 1 gen _.a2 2 0 1 gel(${1 code}, 2) 1 ell 2 gen copy 1 member_a2 G 1 gen _.a3 2 0 1 gel(${1 code}, 3) 1 ell 2 gen copy 1 member_a3 G 1 gen _.a4 2 0 1 gel(${1 code}, 4) 1 ell 2 gen copy 1 member_a4 G 1 gen _.a6 2 0 1 gel(${1 code}, 5) 1 ell 2 gen copy 1 member_a6 G 1 gen _.area 2 0 1 gel(${1 code}, 19) 1 bell 2 gen copy 1 member_area G 1 gen _.b2 2 0 1 gel(${1 code}, 6) 1 ell 2 gen copy 1 member_b2 G 1 gen _.b4 2 0 1 gel(${1 code}, 7) 1 ell 2 gen copy 1 member_b4 G 1 gen _.b6 2 0 1 gel(${1 code}, 8) 1 ell 2 gen copy 1 member_b6 G 1 gen _.b8 2 0 1 gel(${1 code}, 9) 1 ell 2 gen copy 1 member_b8 G 1 gen _.bid 2 0 1 member_bid(${1 code}) 1 gen 1 gen 1 member_bid G 1 gen _.bnf 2 0 3 ${1 code} 1 bnf 2 bnf parens ${1 :bnf cast} 1 bnr 3 bnf copy parens member_bnf(${1 code}) 1 gen 1 bnf 1 member_bnf G 1 gen _.c4 2 0 1 gel(${1 code}, 10) 1 ell 2 gen copy 1 member_c4 G 1 gen _.c6 2 0 1 gel(${1 code}, 11) 1 ell 2 gen copy 1 member_c6 G 1 gen _.clgp 2 0 4 ${1 :clgp cast} 1 bnf 3 clgp copy parens ${1 :clgp cast} 1 bnr 3 clgp copy parens ${1 code} 1 clgp 2 clgp parens member_clgp(${1 code}) 1 gen 1 clgp 1 member_clgp G 1 gen _.codiff 1 1 member_codiff G 1 gen _.cyc 2 0 2 gel(${1 code}, 2) 1 clgp 2 gen copy member_cyc(${1 code}) 1 gen 1 gen 1 member_cyc G 1 gen _.diff 2 0 2 gmael(${1 code}, 5, 5) 1 nf 2 gen copy member_diff(${1 code}) 1 gen 1 gen 1 member_diff G 1 gen _.disc 2 0 3 gel(${1 code}, 3) 1 nf 2 int copy gel(${1 code}, 12) 1 ell 2 gen copy member_disc(${1 code}) 1 gen 1 gen 1 member_disc G 1 gen _.e 2 0 1 gel(${1 code}, 3) 1 prid 2 int copy 1 member_e G 1 gen _.eta 1 1 member_eta G 1 gen _.f 2 0 1 gel(${1 code}, 4) 1 prid 2 int copy 1 member_f G 1 gen _.fu 2 0 3 $"ray units not implemented" 1 bnr 1 void gmael(${1 code}, 8, 5) 1 bnf 2 gen copy gmael(${1 code}, 8, 5) 1 gen 2 gen copy 1 member_fu G 1 gen _.futu 1 1 member_futu G 1 gen _.gen 2 0 3 gel(${1 code}, 7) 1 gal 2 gen copy gel(${1 code}, 3) 1 clgp 2 gen copy member_gen(${1 code}) 1 gen 1 gen 1 member_gen G 1 gen _.group 2 0 1 gel(${1 code}, 6) 1 gal 2 gen copy 1 member_group G 1 gen _.index 2 0 2 gel(${1 code}, 4) 1 nf 2 int copy member_index(${1 code}) 1 gen 1 int 1 member_index G 1 gen _.j 2 0 1 gel(${1 code}, 13) 1 ell 2 gen copy 1 member_j G 1 gen _.mod 1 1 member_mod G 1 gen _.nf 2 0 2 ${1 code} 1 nf 2 nf parens member_nf(${1 code}) 1 gen 1 nf 1 member_nf G 1 gen _.no 2 0 2 gel(${1 code}, 1) 1 clgp 2 gen copy member_no(${1 code}) 1 gen 1 gen 1 member_no G 1 gen _.omega 1 1 member_omega G 1 gen _.orders 2 0 1 gel(${1 code}, 8) 1 gal 2 vecsmall copy 1 member_orders G 1 gen _.p 2 0 3 gmael(${1 code}, 2, 1) 1 gal 2 int copy gel(${1 code}, 1) 1 prid 2 int copy member_p(${1 code}) 1 gen 1 int 1 member_p G 1 gen _.pol 2 0 3 gel(${1 code}, 1) 1 gal 2 gen copy gel(${1 code}, 1) 1 nf 2 gen copyi member_pol(${1 code}) 1 gen 1 gen 1 member_pol G 1 gen _.r1 2 0 2 gmael(${1 code}, 2, 1) 1 nf 2 int copy member_r1(${1 code}) 1 gen 1 int 1 member_r1 G 1 gen _.r2 2 0 2 gmael(${1 code}, 2, 2) 1 nf 2 int copy member_r2(${1 code}) 1 gen 1 int 1 member_r2 G 1 gen _.reg 2 0 3 $"ray regulator not implemented" 1 bnr 1 void gmael(${1 code}, 8, 2) 1 bnf 2 real copy gmael(${1 code}, 8, 2) 1 gen 2 real copy 1 member_reg G 1 gen _.roots 2 0 4 gel(${1 code}, 3) 1 gal 2 gen copy gel(${1 code}, 14) 1 bell 2 gen copy gel(${1 code}, 6) 1 nf 2 gen copy member_roots(${1 code}) 1 gen 1 gen 1 member_roots G 1 gen _.sign 2 0 2 gel(${1 code}, 2) 1 nf 2 vec copy member_sign(${1 code}) 1 gen 1 vec 1 member_sign G 1 gen _.t2 2 0 1 member_t2(${1 code}) 1 gen 1 vec 1 member_t2 G 1 gen _.tate 1 1 member_tate G 1 gen _.tu 2 0 3 $"ray units not implemented" 1 bnr 1 void gmael(${1 code}, 8, 4) 1 bnf 2 gen copy gmael(${1 code}, 8, 4) 1 gen 2 gen copy 1 member_tu G 1 gen _.tufu 1 1 member_tufu G 1 gen _.w 2 0 1 gel(${1 code}, 18) 1 bell 2 gen copy 1 member_w G 1 gen _.zk 2 0 1 gel(${1 code}, 17) 1 nf 2 gen copy 1 member_zk G 1 gen _.zkst 2 0 1 gel(${1 code}, 2) 1 bnr 2 gen copy 1 member_zkst G 1 gen _/=_ 1 0 10 $"cannot divide small: use \= instead." 2 *small gen 1 void $"cannot divide int: use \= instead." 2 *int gen 1 void ${1 code} = divrr(${1 code}, ${2 code}) 2 *real real 2 real parens ${1 code} = divrs(${1 code}, ${2 code}) 2 *real small 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *real mp 2 real parens ${1 code} = mpdiv(${1 code}, ${2 code}) 2 *mp real 2 mp parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *vec gen 2 gen parens ${1 code} = gdivgs(${1 code}, ${2 code}) 2 *gen small 2 gen parens ${1 code} = gdiv(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _/_ 2 0 11 (${2 code}, 0)/*for side effect*/ 2 0 mp 1 small divsr(${1 code}, ${2 code}) 2 #small real 1 real divsr(${1 code}, ${2 code}) 2 small real 1 mp divrs(${1 code}, ${2 code}) 2 real small 1 real divrr(${1 code}, ${2 code}) 2 real real 1 real mpdiv(${1 code}, ${2 code}) 2 real mp 1 real mpdiv(${1 code}, ${2 code}) 2 mp real 1 mp ginv(${2 code}) 2 1 gen 1 gen gdivgs(${1 code}, ${2 code}) 2 gen small 1 gen gdivsg(${1 code}, ${2 code}) 2 small gen 1 gen gdiv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdiv GG 1 gen _<<=_ 1 0 4 ${1 code} <<= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, ${2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, ${2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, ${2 code}) 2 *gen small 2 mp parens _<<_ 2 0 3 shifti(${1 code}, ${2 code}) 2 int small 1 int mpshift(${1 code}, ${2 code}) 2 mp small 1 mp gshift(${1 code}, ${2 code}) 2 gen small 1 mp 1 gshift GL 1 gen _<=_ 2 0 12 ${parens 1 code} <= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 small lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) <= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int lg 2 bool parens cmpis(${1 code}, ${2 code}) <= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) <= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) <= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) <= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) <= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) <= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) <= 0 2 gen gen 2 bool parens 1 gle GG 1 gen _<_ 2 0 11 ${parens 1 code} < ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} < ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} <= ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) < 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) < 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) < 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) < 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) < 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) < 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) < 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) < 0 2 gen gen 2 bool parens 1 glt GG 1 gen _==_ 2 0 22 ${parens 1 code} == ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} == ${parens 2 code} 2 lg lg 2 bool parens cmpsi(${1 code}, ${2 code}) == 0 2 small int 2 bool parens !signe(${1 code}) 2 mp 0 1 bool is_pm1(${1 code}) && signe(${1 code})==1 2 @int 1 2 bool parens gcmp1(${1 code}) 2 int 1 1 bool is_pm1(${1 code}) && signe(${1 code})==-1 2 @int -1 2 bool parens gcmp_1(${1 code}) 2 int -1 1 bool cmpis(${1 code}, ${2 code}) == 0 2 int small 2 bool parens equalii(${1 code}, ${2 code}) 2 int int 1 bool gcmp0(${1 code}) 2 gen 0 1 bool gcmp1(${1 code}) 2 gen 1 1 bool gcmp_1(${1 code}) 2 gen -1 1 bool cmprr(${1 code}, ${2 code}) == 0 2 real real 1 bool mpcmp(${1 code}, ${2 code}) == 0 2 mp mp 2 bool parens ${parens 1 code} == ${parens 2 code} 2 typ typ 2 bool parens ${parens 1 code} == ${parens 2 :typ cast} 2 typ #str 2 bool parens ${parens 1 :typ cast} == ${parens 2 code} 2 #str typ 2 bool parens strcmp(${1 code}, ${2 code}) 2 str str 1 negbool gequalsg(${1 code}, ${2 code}) 2 small gen 1 bool gequalgs(${1 code}, ${2 code}) 2 gen small 1 bool gequal(${1 code}, ${2 code}) 2 gen gen 1 bool 1 geq GG 1 gen _>=_ 2 0 11 ${parens 1 code} >= ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg small 2 bool parens cmpsi(${1 code}, ${2 code}) >= 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) >= 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) >= 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) >= 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) >= 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) >= 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) >= 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) >= 0 2 gen gen 2 bool parens 1 gge GG 1 gen _>>=_ 1 0 4 ${1 code} >>= ${parens 2 code} 2 *small small 2 small parens ${1 code} = shifti(${1 code}, -${parens 2 code}) 2 *int small 2 int parens ${1 code} = mpshift(${1 code}, -${parens 2 code}) 2 *mp small 2 mp parens ${1 code} = gshift(${1 code}, -${parens 2 code}) 2 *gen small 2 mp parens _>>_ 1 0 4 ${parens 1 code}>>${parens 2 code} 2 small small 2 small parens shifti(${1 code}, -${parens 2 code}) 2 int small 1 int mpshift(${1 code}, -${parens 2 code}) 2 mp small 1 mp gshift(${1 code}, -${parens 2 code}) 2 gen small 1 mp _>_ 2 0 11 ${parens 1 code} > ${parens 2 code} 2 small small 2 bool parens ${parens 1 code} > ${parens 2 code} 2 lg lg 2 bool parens ${parens 1 code} >= ${parens 2 code} 2 small lg 2 bool parens cmpsi(${1 code}, ${2 code}) > 0 2 small int 2 bool parens cmpis(${1 code}, ${2 code}) > 0 2 int small 2 bool parens cmpii(${1 code}, ${2 code}) > 0 2 int int 2 bool parens mpcmp(${1 code}, ${2 code}) > 0 2 mp mp 2 bool parens strcmp(${1 code}, ${2 code}) > 0 2 str str 2 bool parens gcmpsg(${1 code}, ${2 code}) > 0 2 small gen 2 bool parens gcmpgs(${1 code}, ${2 code}) > 0 2 gen small 2 bool parens gcmp(${1 code}, ${2 code}) > 0 2 gen gen 2 bool parens 1 ggt GG 1 gen _[_,] 1 0 3 $"Scalar has no rows" 2 mp small 1 gen rowcopy(${1 code}, ${2 code}) 2 vec small 1 vec rowcopy(${1 code}, ${2 code}) 2 gen small 1 vec _[_,_] 1 0 9 $"Scalar has no components" 2 mp small 1 gen $"Scalar has no components" 3 mp small small 1 gen ${parens 1 code}[${2 code}] 2 vecsmall small 1 small $"Vecsmall are single-dimensional" 3 vecsmall small small 1 gen gel(${1 code}, ${2 :lg cast}) 2 list small 2 gen copy gel(${1 code}, ${2 code}) 2 vec small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 vec small small 2 gen copy gel(${1 code}, ${2 code}) 2 gen small 2 gen copy gcoeff(${1 code}, ${2 code}, ${3 code}) 3 gen small small 2 gen copy _\/=_ 1 0 3 ${1 code} = gdivround(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivround(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _\/_ 2 0 2 gdivround(${1 code}, ${2 code}) 2 int int 1 int gdivround(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivround GG 1 gen _\=_ 1 0 4 ${1 code} /= ${parens 2 code} 2 *small small 2 small parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *int int 2 int parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *pol gen 2 gen parens ${1 code} = gdivent(${1 code}, ${2 code}) 2 *gen gen 2 gen parens _\_ 2 0 7 ${parens 1 code}/${parens 2 code} 2 small small 2 small parens truedivis(${1 code}, ${2 code}) 2 int small 1 int gdiventsg(${1 code}, ${2 code}) 2 small int 1 int truedivii(${1 code}, ${2 code}) 2 int int 1 int gdiventgs(${1 code}, ${2 code}) 2 gen small 1 gen gdiventsg(${1 code}, ${2 code}) 2 small gen 1 gen gdivent(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gdivent GG 1 gen _^_ 2 0 15 sqri(${1 code}) 2 int 2 1 int gpowgs(${1 code}, 3) 2 int 3 1 int gpowgs(${1 code}, 4) 2 int 4 1 int gpowgs(${1 code}, 5) 2 int 5 1 int ginv(${1 code}) 2 real -1 1 real ginv(${1 code}) 2 mp -1 1 mp ginv(${1 code}) 2 gen -1 1 gen gsqr(${1 code}) 2 real 2 1 real gsqr(${1 code}) 2 mp 2 1 mp gsqr(${1 code}) 2 gen 2 1 gen gpowgs(${1 code}, ${2 code}) 2 real small 1 real gpowgs(${1 code}, ${2 code}) 2 gen small 1 gen powgi(${1 code}, ${2 code}) 2 real int 1 real powgi(${1 code}, ${2 code}) 2 gen int 1 gen gpow(${1 code}, ${2 code}, prec) 2 gen gen 2 gen prec 1 gpow GGp 2 gen prec __ 1 0 4 concat(${1 code}, ${2 code}) 2 genstr genstr 1 genstr concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 :genstr cast}, ${2 code}) 2 gen gen 1 genstr _avma 1 0 1 avma 0 1 pari_sp _badtype 1 0 14 typ(${1 code}) != t_INT 1 int 2 bool parens typ(${1 code}) != t_REAL 1 real 2 bool parens is_intreal(${1 code}) 1 mp 1 negbool is_matvec_t(typ(${1 code})) 1 vec 1 negbool typ(${1 code}) != t_VECSMALL 1 vecsmall 2 bool parens typ(${1 code}) != t_POL 1 pol 2 bool parens ${1 code} = checknf(${1 code}) 1 *nf 2 void parens ${1 code} = checkbnf(${1 code}) 1 *bnf 2 void parens checkbnr(${1 code}) 1 bnr 1 void checkprimeid(${1 code}) 1 prid 1 void lg(${1 code}) != 3 || typ(${parens 1 code}[2]) != t_POLMOD 1 @clgp 2 bool parens checkell(${1 code}) 1 ell 1 void checkbell(${1 code}) 1 bell 1 void ${1 code} = checkgal(${1 code}) 1 *gal 2 gal parens _call_GG 1 0 1 ${parens 1 code}(${2 code}, ${3 code}) 3 func_GG gen gen 1 gen _cast 1 0 90 0 1 void 1 bool ${1 value not} 1 #negbool 1 bool !${parens 1 code} 1 negbool 1 bool 1 small_int 1 bool 1 small 1 bool ${parens 1 code}!=1 1 lg 2 bool parens *${parens 1 code} 1 bptr 1 bool !gcmp0(${1 code}) 1 gen 1 bool signe(${1 code}) 1 real 1 bool signe(${1 code}) 1 int 1 bool signe(${1 code}) 1 mp 1 bool signe(${1 code}) 1 pol 1 bool 1 1 void 1 negbool ${1 value not} 1 #bool 1 negbool !${parens 1 code} 1 bool 1 negbool ${parens 1 code}==1 1 lg 2 negbool parens !*${parens 1 code} 1 bptr 1 negbool gcmp0(${1 code}) 1 gen 1 negbool !signe(${1 code}) 1 int 1 negbool !signe(${1 code}) 1 real 1 negbool !signe(${1 code}) 1 mp 1 negbool !signe(${1 code}) 1 pol 1 negbool 1 bool 1 small_int 1 typ 1 small_int 1 small 1 small_int 1 bool 1 small 1 typ 1 small 1 small_int 1 small *${parens 1 code} 1 bptr 1 small itos(${1 code}) 1 int 1 small ${1 value 1 sub} 1 #lg 2 small parens ${parens 1 code}-1 1 lg 2 small parens gen_0 1 void 1 int gen_m1 1 -1 1 int gen_0 1 0 1 int gen_1 1 1 1 int gen_2 1 2 1 int stoi(${1 code}) 1 bool 1 int stoi(${1 code}) 1 small 1 int 1 mp 1 int 1 gen 1 int 1 mp 1 real 1 gen 1 real 1 int 1 mp 1 real 1 mp 1 gen 1 mp ${1 1 value add} 1 #bool 2 lg parens ${parens 1 code}+1 1 bool 2 lg parens ${1 1 value add} 1 #small 2 lg parens ${parens 1 code}+1 1 small 2 lg parens 1 gen 1 vecsmall 1 nf 1 vec 1 bnf 1 vec 1 bnr 1 vec 1 ell 1 vec 1 bell 1 vec 1 clgp 1 vec 1 prid 1 vec 1 gal 1 vec 1 gen 1 vec 1 gen 1 list varn(${1 code}) 1 pol 1 var gvar(${1 code}) 1 gen 1 var pol_x[${1 code}] 1 var 1 pol 1 gen 1 pol 1 int 1 gen 1 mp 1 gen 1 vecsmall 1 gen 1 vec 1 gen 1 list 1 gen 1 pol 1 gen 1 genstr 1 gen GENtoGENstr(${1 code}) 1 gen 1 genstr strtoGENstr(${1 code}) 1 str 1 genstr GSTR(${1 code}) 1 genstr 1 str type_name(${1 code}) 1 typ 1 str ${1 str_format} 1 #str 1 typ gel(${1 code}, 7) 1 bnf 2 nf parens 1 gen 1 nf gel(${1 code}, 1) 1 bnr 2 bnf parens 1 gen 1 bnf 1 gen 1 bnr gmael(${1 code}, 8, 1) 1 bnf 2 clgp parens gel(${1 code}, 5) 1 bnr 2 clgp parens 1 gen 1 clgp 1 bell 1 ell 1 gen 1 ell 1 gen 1 bell 1 gen 1 gal 1 gen 1 prid _cgetg 1 0 2 cgetg(${1 code}, ${2 str_raw}) 2 lg #str 1 gen ${1 code} = cgetg(${2 code}, ${3 str_raw}) 3 gen lg #str 1 gen _const_expr 1 0 1 readseq(${1 code}) 1 str 1 gen _const_quote 1 0 1 fetch_user_var(${1 code}) 1 str 1 var _const_real 1 0 1 strtor(${1 code}, prec) 1 str 2 real prec _const_smallreal 1 0 4 real_0(prec) 1 0 2 real prec real_1(prec) 1 1 2 real prec real_m1(prec) 1 -1 2 real prec stor(${1 code}, prec) 1 small 2 real prec _decl_base 1 0 8 void 1 C!void 0 long 1 C!long 0 int 1 C!int 0 GEN 1 C!GEN 0 char 1 C!char* 0 byteptr 1 C!byteptr 0 pari_sp 1 C!pari_sp 0 GEN 1 C!func_GG 0 _decl_ext 1 0 2 *${1 code} 1 C!char* 0 (*${1 code})(GEN, GEN) 1 C!func_GG 0 _default_check 1 0 2 !${parens 1 code} 1 C!GEN 1 bool ${parens 1 code} == -1 1 var 1 bool _default_marker 1 0 4 NULL 1 C!GEN 0 -1 1 var 0 0 1 small 0 "" 1 str 0 _diffptr 1 0 1 diffptr 0 1 bptr _err_primes 1 0 1 pari_err(primer1) 0 1 void _err_type 1 0 1 pari_err(typeer, ${1 code}) 1 str 1 void _formatcode 1 0 5 ${1 code} 1 #small 1 void %ld 1 small 1 small ${1 str_format} 1 #str 1 void %s 1 str 1 str %Z 1 gen 1 gen _forprime_next 1 0 1 NEXT_PRIME_VIADIFF(${1 code}, ${2 code}) 2 *small *bptr 1 void _forvec_start 1 0 1 forvec_start(${1 code}, ${2 code}, &${3 code}, &${4 code}) 4 gen small &gen &func_GG 1 vec _gerepileall 1 0 2 ${2 code} = gerepilecopy(${1 code}, ${2 code}) 2 pari_sp gen 2 void parens gerepileall(${1 code}, ${nbarg 1 sub}, ${stdref 3 code}) 3 pari_sp gen ... 1 void _gerepileupto 1 0 5 gerepileuptoint(${1 code}, ${2 code}) 2 pari_sp int 1 int gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp mp 1 mp gerepileuptoleaf(${1 code}, ${2 code}) 2 pari_sp vecsmall 1 vecsmall gerepileupto(${1 code}, ${2 code}) 2 pari_sp vec 1 vec gerepileupto(${1 code}, ${2 code}) 2 pari_sp gen 1 gen _low_stack_lim 1 0 1 low_stack(${1 code}, stack_lim(${2 code}, 1)) 2 pari_sp pari_sp 1 bool _maxprime 1 0 1 maxprime() 0 1 small _proto_code 1 0 4 n 1 var 0 L 1 C!long 0 G 1 C!GEN 0 s 1 C!char* 0 _proto_ret 1 0 4 v 1 C!void 0 i 1 C!int 0 l 1 C!long 0 1 C!GEN 0 _stack_lim 1 0 1 stack_lim(${1 code}, ${2 code}) 2 pari_sp small 1 pari_sp _toGENstr 1 0 2 strtoGENstr(${1 code}) 1 str 1 genstr GENtoGENstr(${1 code}) 1 gen 1 genstr _tovec 1 0 5 mkvec(${1 code}) 1 gen 1 vec mkvec2(${1 code}, ${2 code}) 2 gen gen 1 vec mkvec3(${1 code}, ${2 code}, ${3 code}) 3 gen gen gen 1 vec mkvec4(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen gen 1 vec mkvecn(${nbarg}, ${2 code}) 2 gen ... 1 vec _type_preorder 1 0 16 7 empty void bool small int mp gen 0 3 empty real mp 0 3 empty bptr small 0 4 empty bool lg small 0 4 empty bool small_int small 0 4 empty void negbool bool 0 5 empty typ str genstr gen 0 3 empty vecsmall gen 0 3 empty vec gen 0 3 empty list gen 0 5 empty bnr bnf nf vec 0 5 empty bnr bnf clgp vec 0 4 empty bell ell vec 0 3 empty prid vec 0 3 empty gal vec 0 4 empty var pol gen 0 _typedef 1 0 30 void 1 empty 0 void 1 void 0 long 1 negbool 0 long 1 bool 0 int 1 small_int 0 long 1 small 0 GEN 1 int 0 GEN 1 real 0 GEN 1 mp 0 long 1 lg 0 GEN 1 vecsmall 0 GEN 1 vec 0 GEN 1 list 0 long 1 var 0 GEN 1 pol 0 GEN 1 gen 0 GEN 1 genstr 0 char* 1 str 0 byteptr 1 bptr 0 func_GG 1 func_GG 0 pari_sp 1 pari_sp 0 long 1 typ 0 GEN 1 nf 0 GEN 1 bnf 0 GEN 1 bnr 0 GEN 1 ell 0 GEN 1 bell 0 GEN 1 clgp 0 GEN 1 prid 0 GEN 1 gal 0 _||_ 1 0 1 ${parens 1 code} || ${parens 2 code} 2 bool bool 2 bool parens _~ 2 0 2 gtrans(${1 code}) 1 vec 1 vec gtrans(${1 code}) 1 gen 1 gen 1 gtrans G 1 gen abs 2 0 5 labs(${1 code}) 1 small 1 small mpabs(${1 code}) 1 int 1 int mpabs(${1 code}) 1 real 1 real mpabs(${1 code}) 1 mp 1 mp gabs(${1 code}, prec) 1 gen 2 gen prec 1 gabs Gp 2 gen prec acos 1 1 gacos Gp 2 gen prec acosh 1 1 gach Gp 2 gen prec addhelp 1 1 addhelp Ss 1 void addprimes 1 1 addprimes DG 1 gen agm 1 1 agm GGp 2 gen prec algdep 1 1 algdep0 GLD0,L,p 2 gen prec alias 1 1 alias0 rr 1 void allocatemem 1 1 allocatemem0 D0,L, 1 void arg 1 1 garg Gp 2 gen prec asin 1 1 gasin Gp 2 gen prec asinh 1 1 gash Gp 2 gen prec atan 1 1 gatan Gp 2 gen prec atanh 1 1 gath Gp 2 gen prec bernfrac 1 1 bernfrac L 1 gen bernreal 1 1 bernreal Lp 2 gen prec bernvec 1 1 bernvec L 1 gen besselh1 1 1 hbessel1 GGp 2 gen prec besselh2 1 1 hbessel2 GGp 2 gen prec besseli 1 1 ibessel GGp 2 gen prec besselj 1 1 jbessel GGp 2 gen prec besseljh 1 1 jbesselh GGp 2 gen prec besselk 1 1 kbessel0 GGD0,L,p 2 gen prec besseln 1 1 nbessel GGp 2 gen prec bestappr 1 1 bestappr0 GGDG 1 gen bezout 1 1 vecbezout GG 1 gen bezoutres 1 1 vecbezoutres GG 1 gen bigomega 2 0 2 bigomega(${1 code}) 1 int 1 small gbigomega(${1 code}) 1 gen 1 gen 1 gbigomega G 1 gen binary 1 1 binaire G 1 gen binomial 1 1 binomial GL 1 gen bitand 2 0 2 ${parens 1 code}&${parens 2 code} 2 small small 2 small parens gbitand(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitand GG 1 gen bitneg 1 1 gbitneg GD-1,L, 1 gen bitnegimply 2 0 2 ${parens 1 code}&~${parens 2 code} 2 small small 2 small parens gbitnegimply(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitnegimply GG 1 gen bitor 2 0 2 ${parens 1 code}|${parens 2 code} 2 small small 2 small parens gbitor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitor GG 1 gen bittest 2 0 3 (${parens 1 code}>>${parens 2 code})&1 2 small small 2 bool parens bittest(${1 code}, ${2 code}) 2 int small 1 bool gbittest(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gbittest GG 1 gen bitxor 2 0 2 ${parens 1 code}^${parens 2 code} 2 small small 2 small parens gbitxor(${1 code}, ${2 code}) 2 gen gen 1 int 1 gbitxor GG 1 gen bnfcertify 1 1 certifybuchall G 1 small bnfclassunit 1 1 bnfclassunit0 GD0,L,DGp 2 gen prec bnfclgp 1 1 classgrouponly GDGp 2 gen prec bnfdecodemodule 1 1 decodemodule GG 1 gen bnfinit 2 0 6 bnfinit0(${1 code}, 0, NULL, prec) 1 gen 2 bnf prec bnfinit0(${1 code}, 0, NULL, prec) 2 gen 0 2 bnf prec bnfinit0(${1 code}, 1, NULL, prec) 2 gen 1 2 bnf prec bnfinit0(${1 code}, 2, NULL, prec) 2 gen 2 2 bnf prec bnfinit0(${1 code}, 3, NULL, prec) 2 gen 3 2 bnf prec bnfinit0(${1 code}, ${2 code}, ${3 code}, prec) 3 gen ?small ?gen 2 bnf prec 1 bnfinit0 GD0,L,DGp 2 gen prec bnfisintnorm 1 1 bnfisintnorm GG 1 gen bnfisnorm 1 1 bnfisnorm GGD1,L,p 2 gen prec bnfisprincipal 1 1 isprincipalall GGD1,L, 1 gen bnfissunit 1 1 bnfissunit GGG 1 gen bnfisunit 1 1 isunit GG 1 gen bnfmake 1 1 bnfmake Gp 2 gen prec bnfnarrow 1 1 buchnarrow G 1 gen bnfreg 1 1 regulator GDGp 2 gen prec bnfsignunit 1 1 signunits G 1 gen bnfsunit 1 1 bnfsunit GGp 2 gen prec bnfunit 1 1 buchfu G 1 gen bnrL1 1 1 bnrL1 GDGD0,L,p 2 gen prec bnrclass 1 1 bnrclass0 GGD0,L, 1 gen bnrclassno 1 1 bnrclassno GG 1 gen bnrclassnolist 1 1 bnrclassnolist GG 1 gen bnrconductor 1 1 bnrconductor GDGDGDG 1 gen bnrconductorofchar 1 1 bnrconductorofchar GG 1 gen bnrdisc 1 1 bnrdisc0 GDGDGD0,L, 1 gen bnrdisclist 1 1 bnrdisclist0 GGDG 1 gen bnrinit 2 0 1 bnrinit0(${1 code}, ${2 code}, ${3 code}) 3 gen gen ?small 1 bnr 1 bnrinit0 GGD0,L, 1 gen bnrisconductor 1 1 bnrisconductor GDGDG 1 small bnrisprincipal 1 1 bnrisprincipal GGD1,L, 1 gen bnrrootnumber 1 1 bnrrootnumber GGD0,L,p 2 gen prec bnrstark 1 1 bnrstark GDGp 2 gen prec break 1 1 break0 D1,L, 1 gen ceil 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens ceilr(${1 code}) 1 real 1 int mpceil(${1 code}) 1 mp 1 int gceil(${1 code}) 1 gen 1 gen 1 gceil G 1 gen centerlift 2 0 6 centerlift(${1 code}) 1 pol 1 pol centerlift(${1 code}) 1 vec 1 vec centerlift(${1 code}) 1 gen 1 gen centerlift0(${1 code}, ${2 code}) 2 pol var 1 pol centerlift0(${1 code}, ${2 code}) 2 vec var 1 vec centerlift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 centerlift0 GDn 1 gen changevar 1 1 changevar GG 1 gen charpoly 1 1 charpoly0 GDnD0,L, 1 gen chinese 2 0 2 chinese1(${1 code}) 1 gen 1 gen chinese(${1 code}, ${2 code}) 2 gen gen 1 gen 1 chinese GDG 1 gen clone 1 0 8 ${1 code} 1 small 2 small parens gclone(${1 code}) 1 int 1 int gclone(${1 code}) 1 real 1 real gclone(${1 code}) 1 mp 1 mp gclone(${1 code}) 1 vecsmall 1 vecsmall gclone(${1 code}) 1 vec 1 vec gclone(${1 code}) 1 pol 1 pol gclone(${1 code}) 1 gen 1 gen component 1 1 compo GL 1 gen concat 2 0 7 concat(${1 code}, ${2 code}) 2 mp mp 1 vec concat(${1 code}, ${2 code}) 2 vec mp 1 vec concat(${1 code}, ${2 code}) 2 mp vec 1 vec concat(${1 code}, ${2 code}) 2 vec vec 1 vec concat(${1 code}, ${2 code}) 2 genstr gen 1 genstr concat(${1 code}, ${2 code}) 2 gen genstr 1 genstr concat(${1 code}, ${2 code}) 2 gen ?gen 1 gen 1 concat GDG 1 gen conj 1 1 gconj G 1 gen conjvec 1 1 conjvec Gp 2 gen prec content 1 1 content G 1 gen contfrac 1 1 contfrac0 GDGD0,L, 1 gen contfracpnqn 1 1 pnqn G 1 gen copy 1 0 8 ${1 code} 1 small 2 small parens icopy(${1 code}) 1 int 1 int gcopy(${1 code}) 1 real 1 real gcopy(${1 code}) 1 mp 1 mp gcopy(${1 code}) 1 vecsmall 1 vecsmall gcopy(${1 code}) 1 vec 1 vec gcopy(${1 code}) 1 pol 1 pol gcopy(${1 code}) 1 gen 1 gen core 1 1 core0 GD0,L, 1 gen coredisc 1 1 coredisc0 GD0,L, 1 gen cos 1 1 gcos Gp 2 gen prec cosh 1 1 gch Gp 2 gen prec cotan 1 1 gcotan Gp 2 gen prec default 2 0 10 getrealprecision() 1 "realprecision" 2 small prec setrealprecision(${2 code}, &prec) 2 "realprecision" small 2 small prec precdl 1 "seriesprecision" 1 small precdl = ${2 code} 2 "seriesprecision" small 2 small parens DEBUGLEVEL 1 "debug" 1 small DEBUGLEVEL = ${2 code} 2 "debug" small 2 small parens DEBUGMEM 1 "debugmem" 1 small DEBUGMEM = ${2 code} 2 "debugmem" small 2 small parens DEBUGFILES 1 "debugfiles" 1 small DEBUGFILES = ${2 code} 2 "debugfiles" small 2 small parens 1 default0 D"",r,D"",s,D0,L, 1 gen denominator 1 1 denom G 1 gen deriv 1 1 deriv GDn 1 gen dilog 1 1 dilog Gp 2 gen prec dirdiv 1 1 dirdiv GG 1 gen direuler 1 1 direuler0 V=GGEDG 1 gen dirmul 1 1 dirmul GG 1 gen dirzetak 1 1 dirzetak GG 1 gen divisors 2 0 1 divisors(${1 code}) 1 gen 1 vec 1 divisors G 1 gen divrem 1 1 divrem GGDn 1 gen eint1 1 1 veceint1 GDGp 2 gen prec elladd 1 1 addell GGG 1 gen ellak 1 1 akell GG 1 gen ellan 1 1 anell GL 1 gen ellap 1 1 ellap0 GGD0,L, 1 gen ellbil 1 1 bilhell GGGp 2 gen prec ellchangecurve 2 0 1 coordch(${1 code}, ${2 code}) 2 gen gen 1 ell 1 coordch GG 1 gen ellchangepoint 1 1 pointch GG 1 gen ellconvertname 1 1 ellconvertname G 1 gen elleisnum 1 1 elleisnum GLD0,L,p 2 gen prec elleta 1 1 elleta Gp 2 gen prec ellgenerators 1 1 ellgenerators G 1 gen ellglobalred 2 0 1 ellglobalred(${1 code}) 1 gen 1 gen 1 ellglobalred G 1 gen ellheight 1 1 ellheight0 GGD2,L,p 2 gen prec ellheightmatrix 1 1 mathell GGp 2 gen prec ellidentify 1 1 ellidentify G 1 gen ellinit 2 0 3 initell(${1 code}, prec) 2 gen ?0 2 bell prec smallinitell(${1 code}) 2 gen 1 1 ell ellinit0(${1 code}, ${2 code}, prec) 2 gen small 2 ell prec 1 ellinit0 GD0,L,p 2 gen prec ellisoncurve 1 1 ellisoncurve GG 1 gen ellj 1 1 jell Gp 2 gen prec elllocalred 1 1 elllocalred GG 1 gen elllseries 1 1 elllseries GGDGp 2 gen prec ellminimalmodel 1 1 ellminimalmodel GD& 1 gen ellorder 1 1 orderell GG 1 gen ellordinate 1 1 ordell GGp 2 gen prec ellpointtoz 1 1 zell GGp 2 gen prec ellpow 1 1 powell GGG 1 gen ellrootno 1 1 ellrootno GDG 1 small ellsearch 1 1 ellsearch G 1 gen ellsigma 1 1 ellsigma GGD0,L,p 2 gen prec ellsub 1 1 subell GGG 1 gen elltaniyama 1 1 elltaniyama GP 1 gen elltors 1 1 elltors0 GD0,L, 1 gen ellwp 1 1 ellwp0 GDGD0,L,pP 2 gen prec ellzeta 1 1 ellzeta GGp 2 gen prec ellztopoint 1 1 pointell GGp 2 gen prec erfc 1 1 gerfc Gp 2 gen prec error 2 0 1 pari_err(talker, "${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 error0 s* 1 void eta 1 1 eta0 GD0,L,p 2 gen prec eulerphi 2 0 2 phi(${1 code}) 1 int 1 int gphi(${1 code}) 1 gen 1 gen 1 gphi G 1 gen eval 1 1 geval G 1 gen exp 2 0 3 mpexp(${1 code}) 1 real 1 real gexp(${1 code}, prec) 1 mp 2 mp prec gexp(${1 code}, prec) 1 gen 2 gen prec 1 gexp Gp 2 gen prec extern 1 1 extern0 s 1 gen factor 2 0 4 Z_factor(${1 code}) 2 int ?-1 1 gen factor(${1 code}) 2 gen ?-1 1 gen smallfact(${1 code}) 2 int 0 1 gen factor0(${1 code}, ${2 code}) 2 gen small 1 gen 1 factor0 GD-1,L, 1 gen factorback 1 1 factorback0 GDGDG 1 gen factorcantor 1 1 factcantor GG 1 gen factorff 1 1 factorff GGG 1 gen factorial 1 1 mpfactr Lp 2 gen prec factorint 1 1 factorint GD0,L, 1 gen factormod 1 1 factormod0 GGD0,L, 1 gen factornf 1 1 polfnf GG 1 gen factorpadic 1 1 factorpadic0 GGLD0,L, 1 gen ffinit 2 0 1 ffinit(${1 code}, ${2 code}, ${3 code}) 3 int small ?var 1 pol 1 ffinit GLDn 1 gen fibonacci 1 1 fibo L 1 gen floor 2 0 5 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens floorr(${1 code}) 1 real 1 int mpfloor(${1 code}) 1 mp 1 int gfloor(${1 code}) 1 gen 1 gen 1 gfloor G 1 gen for 1 1 forpari V=GGI 1 void fordiv 1 1 fordiv GVI 1 void forell 1 1 forell VLLI 1 void forprime 1 1 forprime V=GGI 1 void forstep 1 1 forstep V=GGGI 1 void forsubgroup 1 1 forsubgroup V=GDGI 1 void forvec 1 1 forvec V=GID0,L, 1 void frac 1 1 gfrac G 1 gen galoisexport 1 1 galoisexport GD0,L, 1 gen galoisfixedfield 2 0 1 galoisfixedfield(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen ?small ?var 1 vec 1 galoisfixedfield GGD0,L,Dn 1 gen galoisidentify 1 1 galoisidentify G 1 gen galoisinit 2 0 1 galoisinit(${1 code}, ${2 code}) 2 gen ?int 1 gal 1 galoisinit GDG 1 gen galoisisabelian 1 1 galoisisabelian GD0,L, 1 gen galoispermtopol 1 1 galoispermtopol GG 1 gen galoissubcyclo 1 1 galoissubcyclo GDGD0,L,Dn 1 gen galoissubfields 1 1 galoissubfields GD0,L,Dn 1 gen galoissubgroups 1 1 galoissubgroups G 1 gen gamma 1 1 ggamma Gp 2 gen prec gammah 1 1 ggamd Gp 2 gen prec gcd 2 0 6 cgcd(${1 code}, ${2 code}) 3 small small ?0 1 small gcdii(${1 code}, ${2 code}) 3 int int ?0 1 int ggcd(${1 code}, ${2 code}) 3 gen gen ?0 1 gen modulargcd(${1 code}, ${2 code}) 3 gen gen 1 1 gen srgcd(${1 code}, ${2 code}) 3 gen gen 2 1 gen gcd0(${1 code}, ${2 code}, ${3 code}) 3 gen ?gen ?small 1 gen 1 gcd0 GDGD0,L, 1 gen getheap 1 1 getheap 1 gen getrand 1 1 getrand 1 small getstack 1 1 getstack 1 small gettime 1 1 gettime 1 small global 0 hilbert 1 1 hil0 GGDG 1 small hyperu 1 1 hyperu GGGp 2 gen prec idealadd 1 1 idealadd GGG 1 gen idealaddtoone 1 1 idealaddtoone0 GGDG 1 gen idealappr 1 1 idealappr0 GGD0,L, 1 gen idealchinese 1 1 idealchinese GGG 1 gen idealcoprime 1 1 idealcoprime GGG 1 gen idealdiv 2 0 4 idealdiv(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealdivexact(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen 1 1 gen $"invalid flag in idealdiv" 4 gen gen gen #small 1 gen idealdiv0(${1 code}, ${2 code}, ${3 code}, ${4 code}) 4 gen gen gen small 1 gen 1 idealdiv0 GGGD0,L, 1 gen idealfactor 1 1 idealfactor GG 1 gen idealhnf 1 1 idealhnf0 GGDG 1 gen idealintersect 1 1 idealintersect GGG 1 gen idealinv 2 0 1 idealinv(${1 code}, ${2 code}) 2 gen gen 1 gen 1 idealinv GG 1 gen ideallist 1 1 ideallist0 GLD4,L, 1 gen ideallistarch 1 1 ideallistarch GGG 1 gen ideallog 1 1 zideallog GGG 1 gen idealmin 1 1 minideal GGDGp 2 gen prec idealmul 2 0 4 idealmul(${1 code}, ${2 code}, ${3 code}) 4 gen gen gen ?0 1 gen idealmulred(${1 code}, ${2 code}, ${3 code}, prec) 4 gen gen gen 1 2 gen prec $"invalid flag in idealmul" 4 gen gen gen #small 1 gen idealmul0(${1 code}, ${2 code}, ${3 code}, ${4 code}, prec) 4 gen gen gen small 2 gen prec 1 idealmul0 GGGD0,L,p 2 gen prec idealnorm 1 1 idealnorm GG 1 gen idealpow 1 1 idealpow0 GGGD0,L,p 2 gen prec idealprimedec 1 1 primedec GG 1 gen idealprincipal 1 1 principalideal GG 1 gen idealred 1 1 ideallllred GGDGp 2 gen prec idealstar 1 1 idealstar0 GGD1,L, 1 gen idealtwoelt 1 1 ideal_two_elt0 GGDG 1 gen idealval 1 1 idealval GGG 1 small ideleprincipal 1 1 principalidele GGp 2 gen prec if 0 imag 1 1 gimag G 1 gen incgam 1 1 incgam0 GGDGp 2 gen prec incgamc 1 1 incgamc GGp 2 gen prec input 1 1 input0 1 gen install 1 1 gpinstall rrD"",r,D"",s, 1 void intcirc 1 1 intcirc0 V=GGEDGp 2 gen prec intformal 1 1 integ GDn 1 gen intfouriercos 1 1 intfourcos0 V=GGGEDGp 2 gen prec intfourierexp 1 1 intfourexp0 V=GGGEDGp 2 gen prec intfouriersin 1 1 intfoursin0 V=GGGEDGp 2 gen prec intfuncinit 1 1 intfuncinit0 V=GGED0,L,D0,L,p 2 gen prec intlaplaceinv 1 1 intlaplaceinv0 V=GGEDGp 2 gen prec intmellininv 1 1 intmellininv0 V=GGEDGp 2 gen prec intmellininvshort 1 1 intmellininvshort GGGp 2 gen prec intnum 1 1 intnum0 V=GGEDGp 2 gen prec intnuminit 1 1 intnuminit GGD0,L,p 2 gen prec intnuminitgen 1 1 intnuminitgen0 VGGED0,L,D0,L,p 2 gen prec intnumromb 1 1 intnumromb0 V=GGED0,L,p 2 gen prec intnumstep 1 1 intnumstep p 2 small prec isfundamental 2 0 2 isfundamental(${1 code}) 1 int 1 bool gisfundamental(${1 code}) 1 gen 1 gen 1 gisfundamental G 1 gen ispower 2 0 2 isanypower(${1 code}, NULL) 1 int 1 small isanypower(${1 code}, &${2 code}) 2 int &int 1 small 1 ispower GDGD& 1 small isprime 2 0 4 isprime(${1 code}) 2 int ?0 1 bool plisprime(${1 code}, 0) 2 int 1 1 bool plisprime(${1 code}, 1) 2 int 2 1 gen gisprime(${1 code}, ${2 code}) 2 gen ?small 1 gen 1 gisprime GD0,L, 1 gen ispseudoprime 2 0 2 ispsp(${1 code}) 1 int 1 bool gispsp(${1 code}) 1 gen 1 gen 1 gispseudoprime GD0,L, 1 gen issquare 2 0 5 Z_issquare(${1 code}) 1 int 1 bool gissquare(${1 code}) 1 mp 1 int gissquare(${1 code}) 1 gen 1 gen Z_issquarerem(${1 code}, &${2 code}) 2 int &int 1 bool gissquarerem(${1 code}, &${2 code}) 2 gen &gen 1 gen 1 gissquarerem GD& 1 gen issquarefree 2 0 2 issquarefree(${1 code}) 1 int 1 bool gissquarefree(${1 code}) 1 gen 1 gen 1 gissquarefree G 1 gen kill 1 1 kill0 S 1 void kronecker 2 0 6 kross(${1 code}, ${2 code}) 2 small small 1 small krois(${1 code}, ${2 code}) 2 int small 1 small krosi(${1 code}, ${2 code}) 2 small int 1 small kronecker(${1 code}, ${2 code}) 2 int int 1 small gkrogs(${1 code}, ${2 code}) 2 gen small 1 gen gkronecker(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gkronecker GG 1 gen lcm 2 0 3 lcmii(${1 code}, ${2 code}) 2 int int 1 int glcm0(${1 code}, NULL) 1 gen 1 gen glcm(${1 code}, ${2 code}) 2 gen gen 1 gen 1 glcm0 GDG 1 gen length 2 0 4 lg(${1 code}) 1 vecsmall 1 lg lg(${1 code}) 1 vec 1 lg lgpol(${1 code}) 1 pol 1 small glength(${1 code}) 1 gen 1 small 1 glength G 1 small lex 1 1 lexcmp GG 1 small_int lift 2 0 6 lift(${1 code}) 1 pol 1 pol lift(${1 code}) 1 vec 1 vec lift(${1 code}) 1 gen 1 gen lift0(${1 code}, ${2 code}) 2 pol var 1 pol lift0(${1 code}, ${2 code}) 2 vec var 1 vec lift0(${1 code}, ${2 code}) 2 gen var 1 gen 1 lift0 GDn 1 gen lindep 1 1 lindep0 GD0,L,p 2 gen prec listcreate 2 0 1 listcreate(${1 code}) 1 small 1 list 1 listcreate L 1 gen listinsert 2 0 1 listinsert(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listinsert GGL 1 gen listkill 1 1 listkill G 1 void listput 2 0 1 listput(${1 code}, ${2 code}, ${3 code}) 3 list gen small 1 gen 1 listput GGD0,L, 1 gen listsort 1 1 listsort GD0,L, 1 gen lngamma 1 1 glngamma Gp 2 gen prec log 2 0 1 glog(${1 code}, prec) 1 gen 2 gen prec 1 glog Gp 2 gen prec matadjoint 1 1 adj G 1 gen matalgtobasis 1 1 matalgtobasis GG 1 gen matbasistoalg 1 1 matbasistoalg GG 1 gen matcompanion 1 1 assmat G 1 gen matdet 2 0 4 det(${1 code}) 2 gen ?0 1 gen det2(${1 code}) 2 gen 1 1 gen $"incorrect flag in matdet" 2 gen #small 1 gen det0(${1 code}, ${2 code}) 2 gen small 1 gen 1 det0 GD0,L, 1 gen matdetint 1 1 detint G 1 gen matdiagonal 1 1 diagonal G 1 gen mateigen 1 1 eigen Gp 2 gen prec matfrobenius 1 1 matfrobenius GD0,L,Dn 1 gen mathess 1 1 hess G 1 gen mathilbert 1 1 mathilbert L 1 gen mathnf 1 1 mathnf0 GD0,L, 1 gen mathnfmod 1 1 hnfmod GG 1 gen mathnfmodid 1 1 hnfmodid GG 1 gen matid 2 0 1 matid(${1 code}) 1 small 1 vec 1 matid L 1 gen matimage 1 1 matimage0 GD0,L, 1 gen matimagecompl 1 1 imagecompl G 1 gen matindexrank 1 1 indexrank G 1 gen matintersect 1 1 intersect GG 1 gen matinverseimage 1 1 inverseimage GG 1 gen matisdiagonal 1 1 isdiagonal G 1 small matker 1 1 matker0 GD0,L, 1 gen matkerint 1 1 matkerint0 GD0,L, 1 gen matmuldiagonal 1 1 matmuldiagonal GG 1 gen matmultodiagonal 1 1 matmultodiagonal GG 1 gen matpascal 1 1 matqpascal LDG 1 gen matrank 1 1 rank G 1 small matrix 1 1 matrice GGDVDVDI 1 gen matrixqz 1 1 matrixqz0 GG 1 gen matsize 1 1 matsize G 1 gen matsnf 1 1 matsnf0 GD0,L, 1 gen matsolve 1 1 gauss GG 1 gen matsolvemod 1 1 matsolvemod0 GGGD0,L, 1 gen matsupplement 1 1 suppl G 1 gen mattranspose 1 1 gtrans G 1 gen max 2 0 10 maxss(${1 code}, ${2 code}) 2 small small 1 small gmaxsg(${1 code}, ${2 code}) 2 small int 1 int gmaxgs(${1 code}, ${2 code}) 2 int small 1 int gmax(${1 code}, ${2 code}) 2 int int 1 int gmaxsg(${1 code}, ${2 code}) 2 small mp 1 mp gmaxgs(${1 code}, ${2 code}) 2 mp small 1 mp gmax(${1 code}, ${2 code}) 2 mp mp 1 mp gmaxsg(${1 code}, ${2 code}) 2 small gen 1 gen gmaxgs(${1 code}, ${2 code}) 2 gen small 1 gen gmax(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmax GG 1 gen min 2 0 10 minss(${1 code}, ${2 code}) 2 small small 1 small gminsg(${1 code}, ${2 code}) 2 small int 1 int gmings(${1 code}, ${2 code}) 2 int small 1 int gmin(${1 code}, ${2 code}) 2 int int 1 int gminsg(${1 code}, ${2 code}) 2 small mp 1 mp gmings(${1 code}, ${2 code}) 2 mp small 1 mp gmin(${1 code}, ${2 code}) 2 mp mp 1 mp gminsg(${1 code}, ${2 code}) 2 small gen 1 gen gmings(${1 code}, ${2 code}) 2 gen small 1 gen gmin(${1 code}, ${2 code}) 2 gen gen 1 gen 1 gmin GG 1 gen minpoly 1 1 minpoly GDn 1 gen modreverse 1 1 polymodrecip G 1 gen moebius 2 0 2 mu(${1 code}) 1 int 1 small gmu(${1 code}) 1 gen 1 gen 1 gmu G 1 gen newtonpoly 1 1 newtonpoly GG 1 gen next 1 1 next0 D1,L, 1 gen nextprime 2 0 2 nextprime(${1 code}) 1 int 1 int gnextprime(${1 code}) 1 gen 1 gen 1 gnextprime G 1 gen nfalgtobasis 1 1 algtobasis GG 1 gen nfbasis 1 1 nfbasis0 GD0,L,DG 1 gen nfbasistoalg 1 1 basistoalg GG 1 gen nfdetint 1 1 nfdetint GG 1 gen nfdisc 1 1 nfdiscf0 GD0,L,DG 1 gen nfeltdiv 1 1 element_div GGG 1 gen nfeltdiveuc 1 1 nfdiveuc GGG 1 gen nfeltdivmodpr 1 1 element_divmodpr GGGG 1 gen nfeltdivrem 1 1 nfdivrem GGG 1 gen nfeltmod 1 1 nfmod GGG 1 gen nfeltmul 1 1 element_mul GGG 1 gen nfeltmulmodpr 1 1 element_mulmodpr GGGG 1 gen nfeltpow 1 1 element_pow GGG 1 gen nfeltpowmodpr 1 1 element_powmodpr GGGG 1 gen nfeltreduce 1 1 element_reduce GGG 1 gen nfeltreducemodpr 1 1 nfreducemodpr GGG 1 gen nfeltval 1 1 element_val GGG 1 small nffactor 1 1 nffactor GG 1 gen nffactormod 1 1 nffactormod GGG 1 gen nfgaloisapply 1 1 galoisapply GGG 1 gen nfgaloisconj 1 1 galoisconj0 GD0,L,DGp 2 gen prec nfhilbert 1 1 nfhilbert0 GGGDG 1 small nfhnf 1 1 nfhermite GG 1 gen nfhnfmod 1 1 nfhermitemod GGG 1 gen nfinit 2 0 9 nfinit0(${1 code}, 0, prec) 2 gen ?0 2 nf prec nfinit0(${1 code}, 1, prec) 2 gen 1 2 nf prec nfinit0(${1 code}, 2, prec) 2 gen 2 2 nf prec nfinit0(${1 code}, 3, prec) 2 gen 3 2 gen prec nfinit0(${1 code}, 4, prec) 2 gen 4 2 nf prec nfinit0(${1 code}, 5, prec) 2 gen 5 2 gen prec nfinit0(${1 code}, 6, prec) 2 gen 6 2 nf prec $"incorrect flag in nfinit" 2 gen #small 1 void nfinit0(${1 code}, ${2 code}, prec) 2 gen small 2 gen prec 1 nfinit0 GD0,L,p 2 gen prec nfisideal 1 1 isideal GG 1 small nfisincl 1 1 nfisincl GG 1 gen nfisisom 1 1 nfisisom GG 1 gen nfkermodpr 1 1 nfkermodpr GGG 1 gen nfmodprinit 1 1 nfmodprinit GG 1 gen nfnewprec 1 1 nfnewprec Gp 2 gen prec nfroots 1 1 nfroots DGG 1 gen nfrootsof1 1 1 rootsof1 G 1 gen nfsnf 1 1 nfsmith GG 1 gen nfsolvemodpr 1 1 nfsolvemodpr GGGG 1 gen nfsubfields 1 1 subfields0 GDG 1 gen norm 1 1 gnorm G 1 gen norml2 1 1 gnorml2 G 1 gen numbpart 1 1 numbpart G 1 gen numdiv 2 0 2 numbdiv(${1 code}) 1 int 1 int gnumbdiv(${1 code}) 1 gen 1 gen 1 gnumbdiv G 1 gen numerator 1 1 numer G 1 gen numtoperm 1 1 numtoperm LG 1 gen omega 2 0 2 omega(${1 code}) 1 int 1 small gomega(${1 code}) 1 gen 1 gen 1 gomega G 1 gen padicappr 1 1 padicappr GG 1 gen padicprec 1 1 padicprec GG 1 small permtonum 1 1 permtonum G 1 gen plot 1 1 plot V=GGIDGDGp 2 void prec plotbox 1 1 rectbox LGG 1 void plotclip 1 1 rectclip L 1 void plotcolor 1 1 rectcolor LL 1 void plotcopy 1 1 rectcopy_gen LLGGD0,L, 1 void plotcursor 1 1 rectcursor L 1 gen plotdraw 1 1 rectdraw_flag GD0,L, 1 void ploth 1 1 ploth V=GGIpD0,M,D0,L,\nParametric|1; Recursive|2; no_Rescale|4; no_X_axis|8; no_Y_axis|16; no_Frame|32; no_Lines|64; Points_too|128; Splines|256; no_X_ticks|512; no_Y_ticks|1024; Same_ticks|2048 2 gen prec plothraw 1 1 plothraw GGD0,L, 1 gen plothsizes 1 1 plothsizes_flag D0,L, 1 gen plotinit 1 1 initrect_gen LD0,G,D0,G,D0,L, 1 void plotkill 1 1 killrect L 1 void plotlines 1 1 rectlines LGGD0,L, 1 void plotlinetype 1 1 rectlinetype LL 1 void plotmove 1 1 rectmove LGG 1 void plotpoints 1 1 rectpoints LGG 1 void plotpointsize 1 1 rectpointsize LG 1 void plotpointtype 1 1 rectpointtype LL 1 void plotrbox 1 1 rectrbox LGG 1 void plotrecth 1 1 rectploth LV=GGIpD0,L,D0,L, 2 gen prec plotrecthraw 1 1 rectplothraw LGD0,L, 1 gen plotrline 1 1 rectrline LGG 1 void plotrmove 1 1 rectrmove LGG 1 void plotrpoint 1 1 rectrpoint LGG 1 void plotscale 1 1 rectscale LGGGG 1 void plotstring 1 1 rectstring3 LsD0,L, 1 void polcoeff 2 0 2 constant_term(${1 code}) 2 pol 0 2 gen copy polcoeff0(${1 code}, ${2 code}, ${3 code}) 3 gen small ?var 1 gen 1 polcoeff0 GLDn 1 gen polcompositum 1 1 polcompositum0 GGD0,L, 1 gen polcyclo 1 1 cyclo LDn 1 gen poldegree 2 0 3 degpol(${1 code}) 1 pol 1 small degree(${1 code}) 1 gen 1 small poldegree(${1 code}, ${2 code}) 2 gen var 1 small 1 poldegree GDn 1 small poldisc 2 0 3 discsr(${1 code}) 1 pol 1 gen poldisc0(${1 code}, -1) 1 gen 1 gen poldisc0(${1 code}, ${2 code}) 2 gen var 1 gen 1 poldisc0 GDn 1 gen poldiscreduced 1 1 reduceddiscsmith G 1 gen polgalois 1 1 polgalois Gp 2 gen prec polhensellift 1 1 polhensellift GGGL 1 gen polinterpolate 1 1 polint GDGDGD& 1 gen polisirreducible 1 1 gisirreducible G 1 gen pollead 2 0 3 leading_term(${1 code}) 1 pol 2 gen copy pollead(${1 code}, -1) 1 gen 1 gen pollead(${1 code}, ${2 code}) 2 gen var 1 gen 1 pollead GDn 1 gen pollegendre 1 1 legendre LDn 1 gen polrecip 1 1 polrecip G 1 gen polred 1 1 polred0 GD0,L,DG 1 gen polredabs 1 1 polredabs0 GD0,L, 1 gen polredord 1 1 ordred G 1 gen polresultant 1 1 polresultant0 GGDnD0,L, 1 gen polroots 1 1 roots0 GD0,L,p 2 gen prec polrootsmod 2 0 4 rootmod(${1 code}, ${2 code}) 3 pol int ?0 1 vec rootmod2(${1 code}, ${2 code}) 3 pol int 1 1 vec $"Bad flag in polrootsmod" 3 pol int #small 1 vec rootmod0(${1 code}, ${2 code}, ${3 code}) 3 pol int small 1 vec 1 rootmod0 GGD0,L, 1 gen polrootspadic 1 1 rootpadic GGL 1 gen polsturm 1 1 sturmpart GDGDG 1 small polsubcyclo 1 1 polsubcyclo LLDn 1 gen polsylvestermatrix 1 1 sylvestermatrix GG 1 gen polsym 1 1 polsym GL 1 gen poltchebi 1 1 tchebi LDn 1 gen poltschirnhaus 1 1 tschirnhaus G 1 gen polylog 1 1 polylog0 LGD0,L,p 2 gen prec polzagier 1 1 polzag LL 1 gen precision 1 1 precision0 GD0,L, 1 gen precprime 2 0 2 precprime(${1 code}) 1 int 1 int gprecprime(${1 code}) 1 gen 1 gen 1 gprecprime G 1 gen prime 1 1 prime L 1 gen primepi 2 0 1 primepi(${1 code}) 1 gen 1 int 1 primepi G 1 gen primes 1 1 primes L 1 gen print 2 0 1 pariprintf("${2 format_string}\n"${2 format_args}) 2 ?gen ... 1 void 1 print s* 1 void print1 2 0 1 pariprintf("${2 format_string}"${2 format_args}) 2 ?gen ... 1 void 1 print1 s* 1 void printp 1 1 printp s* 1 void printp1 1 1 printp1 s* 1 void printtex 1 1 printtex s* 1 void prod 1 1 produit V=GGEDG 1 gen prodeuler 1 1 prodeuler0 V=GGEp 2 gen prec prodinf 1 1 prodinf0 V=GED0,L,p 2 gen prec psdraw 1 1 postdraw_flag GD0,L, 1 void psi 1 1 gpsi Gp 2 gen prec psploth 1 1 postploth V=GGIpD0,L,D0,L, 2 gen prec psplothraw 1 1 postplothraw GGD0,L, 1 gen qfbclassno 1 1 qfbclassno0 GD0,L, 1 gen qfbcompraw 1 1 compraw GG 1 gen qfbhclassno 1 1 hclassno G 1 gen qfbnucomp 1 1 nucomp GGG 1 gen qfbnupow 1 1 nupow GG 1 gen qfbpowraw 1 1 powraw GL 1 gen qfbprimeform 1 1 primeform GGp 2 gen prec qfbred 1 1 qfbred0 GD0,L,DGDGDG 1 gen qfbsolve 1 1 qfbsolve GG 1 gen qfgaussred 1 1 sqred G 1 gen qfjacobi 1 1 jacobi Gp 2 gen prec qflll 2 0 8 lll(${1 code}, prec) 2 vec ?0 2 vec prec lllint(${1 code}) 2 vec 1 1 vec lllintpartial(${1 code}) 2 vec 2 1 vec lllkerim(${1 code}) 2 vec 4 1 vec lllkerimgen(${1 code}) 2 vec 5 1 vec lllgen(${1 code}) 2 vec 8 1 vec $"Bad flag in qflll" 2 vec #small 1 vec qflll0(${1 code}, ${2 code}, prec) 2 vec small 2 vec prec 1 qflll0 GD0,L,p 2 gen prec qflllgram 1 1 qflllgram0 GD0,L,p 2 gen prec qfminim 1 1 qfminim0 GDGDGD0,L,p 2 gen prec qfperfection 1 1 perf G 1 gen qfrep 1 1 qfrep0 GGD0,L, 1 gen qfsign 1 1 signat G 1 gen quadclassunit 1 1 quadclassunit0 GD0,L,DGp 2 gen prec quaddisc 1 1 quaddisc G 1 gen quadgen 1 1 quadgen G 1 gen quadhilbert 1 1 quadhilbert GDGp 2 gen prec quadpoly 1 1 quadpoly0 GDn 1 gen quadray 1 1 quadray GGDGp 2 gen prec quadregulator 2 0 2 regula(${1 code}, prec) 1 int 2 mp prec gregula(${1 code}, prec) 1 gen 2 gen prec 1 gregula Gp 2 gen prec quadunit 2 0 2 fundunit(${1 code}) 1 int 1 gen gfundunit(${1 code}) 1 gen 1 gen 1 gfundunit Gp 2 gen prec quit 1 1 gp_quit 1 void random 2 0 2 genrand(${1 code}) 1 ?int 1 int $"incorrect type `real' in random" 1 real 1 void 1 genrand DG 1 gen read 2 0 1 gp_read_file(${1 code}) 1 str 1 gen 1 read0 D"",s, 1 gen readvec 2 0 1 gp_readvec_file(${1 code}) 1 str 1 gen 1 gp_readvec_file D"",s, 1 gen real 1 1 greal G 1 gen removeprimes 1 1 removeprimes DG 1 gen reorder 1 1 reorder DG 1 gen return 1 1 return0 DG 1 gen rnfalgtobasis 1 1 rnfalgtobasis GG 1 gen rnfbasis 1 1 rnfbasis GG 1 gen rnfbasistoalg 1 1 rnfbasistoalg GG 1 gen rnfcharpoly 1 1 rnfcharpoly GGGDn 1 gen rnfconductor 1 1 rnfconductor GGD0,L, 1 gen rnfdedekind 1 1 rnfdedekind GGG 1 gen rnfdet 1 1 rnfdet GG 1 gen rnfdisc 1 1 rnfdiscf GG 1 gen rnfeltabstorel 1 1 rnfelementabstorel GG 1 gen rnfeltdown 1 1 rnfelementdown GG 1 gen rnfeltreltoabs 1 1 rnfelementreltoabs GG 1 gen rnfeltup 1 1 rnfelementup GG 1 gen rnfequation 1 1 rnfequation0 GGD0,L, 1 gen rnfhnfbasis 1 1 rnfhnfbasis GG 1 gen rnfidealabstorel 1 1 rnfidealabstorel GG 1 gen rnfidealdown 1 1 rnfidealdown GG 1 gen rnfidealhnf 1 1 rnfidealhermite GG 1 gen rnfidealmul 1 1 rnfidealmul GGG 1 gen rnfidealnormabs 1 1 rnfidealnormabs GG 1 gen rnfidealnormrel 1 1 rnfidealnormrel GG 1 gen rnfidealreltoabs 1 1 rnfidealreltoabs GG 1 gen rnfidealtwoelt 1 1 rnfidealtwoelement GG 1 gen rnfidealup 1 1 rnfidealup GG 1 gen rnfinit 1 1 rnfinitalg GGp 2 gen prec rnfisfree 1 1 rnfisfree GG 1 small rnfisnorm 1 1 rnfisnorm GGD0,L, 1 gen rnfisnorminit 1 1 rnfisnorminit GGD2,L, 1 gen rnfkummer 1 1 rnfkummer GDGD0,L,p 2 gen prec rnflllgram 1 1 rnflllgram GGGp 2 gen prec rnfnormgroup 1 1 rnfnormgroup GG 1 gen rnfpolred 1 1 rnfpolred GGp 2 gen prec rnfpolredabs 1 1 rnfpolredabs GGD0,L, 1 gen rnfpseudobasis 1 1 rnfpseudobasis GG 1 gen rnfsteinitz 1 1 rnfsteinitz GG 1 gen round 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens roundr(${1 code}) 1 real 1 int mpround(${1 code}) 1 mp 1 int grndtoi(${1 code}, &${2 code}) 2 mp &small 1 int round0(${1 code}, &${2 code}) 2 mp &int 1 int ground(${1 code}) 1 gen 1 gen grndtoi(${1 code}, &${2 code}) 2 gen &small 1 gen round0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 round0 GD& 1 gen serconvol 1 1 convol GG 1 gen serlaplace 1 1 laplace G 1 gen serreverse 1 1 recip G 1 gen setintersect 2 0 1 setintersect(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setintersect GG 1 gen setisset 1 1 setisset G 1 small setminus 2 0 1 setminus(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setminus GG 1 gen setrand 1 1 setrand L 1 small setsearch 1 1 setsearch GGD0,L, 1 small setunion 2 0 1 setunion(${1 code}, ${2 code}) 2 vec vec 1 vec 1 setunion GG 1 gen shift 1 1 gshift GL 1 gen shiftmul 1 1 gmul2n GL 1 gen sigma 2 0 6 sumdiv(${1 code}) 2 int ?1 1 int numbdiv(${1 code}) 2 int 0 1 int gsumdiv(${1 code}) 2 gen ?1 1 gen gnumbdiv(${1 code}) 2 gen 0 1 gen sumdivk(${1 code}, ${2 code}) 2 int small 1 int gsumdivk(${1 code}, ${2 code}) 2 gen small 1 gen 1 gsumdivk GD1,L, 1 gen sign 2 0 2 signe(${1 code}) 1 mp 1 small gsigne(${1 code}) 1 gen 1 small 1 gsigne G 1 small_int simplify 1 1 simplify G 1 gen sin 1 1 gsin Gp 2 gen prec sinh 1 1 gsh Gp 2 gen prec sizebyte 1 1 taille2 G 1 small sizedigit 1 1 sizedigit G 1 small solve 1 1 zbrent0 V=GGEp 2 gen prec sqr 2 0 3 sqri(${1 code}) 1 int 1 int gsqr(${1 code}) 1 mp 1 mp gsqr(${1 code}) 1 gen 1 gen 1 gsqr G 1 gen sqrt 2 0 2 sqrtr(${1 code}) 1 real 1 gen gsqrt(${1 code}, prec) 1 gen 2 gen prec 1 gsqrt Gp 2 gen prec sqrtint 2 0 1 racine(${1 code}) 1 gen 1 int 1 racine G 1 gen sqrtn 1 1 gsqrtn GGD&p 2 gen prec subgrouplist 1 1 subgrouplist0 GDGD0,L, 1 gen subst 1 1 gsubst GnG 1 gen substpol 1 1 gsubstpol GGG 1 gen substvec 1 1 gsubstvec GGG 1 gen sum 1 1 somme V=GGEDG 1 gen sumalt 1 1 sumalt0 V=GED0,L,p 2 gen prec sumdiv 1 1 divsum GVE 1 gen suminf 1 1 suminf0 V=GEp 2 gen prec sumnum 1 1 sumnum0 V=GGEDGD0,L,p 2 gen prec sumnumalt 1 1 sumnumalt0 V=GGEDGD0,L,p 2 gen prec sumnuminit 1 1 sumnuminit GD0,L,D1,L,p 2 gen prec sumpos 1 1 sumpos0 V=GED0,L,p 2 gen prec system 1 1 system0 s 1 void tan 1 1 gtan Gp 2 gen prec tanh 1 1 gth Gp 2 gen prec taylor 1 1 tayl GnP 1 gen teichmuller 1 1 teich G 1 gen theta 1 1 theta GGp 2 gen prec thetanullk 1 1 thetanullk GLp 2 gen prec thue 1 1 thue GGDG 1 gen thueinit 1 1 thueinit GD0,L,p 2 gen prec trace 1 1 gtrace G 1 gen trap 1 1 trap0 D"",r,DIDI 1 gen truncate 2 0 9 ${1 code} 1 small 2 small parens ${1 code} 1 int 3 int copy parens truncr(${1 code}) 1 real 1 int mptrunc(${1 code}) 1 mp 1 int gcvtoi(${1 code}, &${2 code}) 2 mp &small 1 int trunc0(${1 code}, &${2 code}) 2 mp &int 1 int gtrunc(${1 code}) 1 gen 1 gen gcvtoi(${1 code}, &${2 code}) 2 gen &small 1 gen trunc0(${1 code}, &${2 code}) 2 gen &int 1 gen 1 trunc0 GD& 1 gen type 2 0 1 typ(${1 code}) 1 gen 1 typ 1 type0 G 1 gen unclone 1 0 2 (void)0 /*unclone*/ 1 small 1 void gunclone(${1 code}) 1 gen 1 void until 0 valuation 1 1 ggval GG 1 small variable 2 0 2 ${1 :var cast} 1 pol 3 var parens copy gpolvar(${1 code}) 1 gen 1 gen 1 gpolvar G 1 gen vecextract 1 1 extract0 GGDG 1 gen vecmax 1 1 vecmax G 1 gen vecmin 1 1 vecmin G 1 gen vecsort 2 0 7 sort(${1 code}) 1 vec 1 vec vecsort0(${1 code}, ${2 code}, 0) 2 vec gen 1 vec sort(${1 code}) 3 vec 0 1 vec indexsort(${1 code}) 3 vec 1 1 vec lexsort(${1 code}) 3 vec 2 1 vec vecsort0(${1 code}, NULL, ${3 code}) 3 vec small 1 vec vecsort0(${1 code}, ${2 code}, ${3 code}) 3 vec gen small 1 vec 1 vecsort0 GDGD0,L, 1 gen vector 1 1 vecteur GDVDI 1 gen vectorsmall 1 1 vecteursmall GDVDI 1 gen vectorv 1 1 vvecteur GDVDI 1 gen version 1 1 pari_version 1 gen weber 1 1 weber0 GD0,L,p 2 gen prec whatnow 2 0 1 whatnow(${1 code}, 0) 1 str 1 void 1 whatnow0 r 1 void while 0 write 1 1 write0 ss* 1 void write1 1 1 write1 ss* 1 void writebin 1 1 gpwritebin sDG 1 void writetex 1 1 writetex ss* 1 void zeta 1 1 gzeta Gp 2 gen prec zetak 1 1 gzetakall GGD0,L,p 2 gen prec zetakinit 1 1 initzeta Gp 2 gen prec zncoppersmith 1 1 zncoppersmith GGGDG 1 gen znlog 1 1 znlog GG 1 gen znorder 2 0 3 order(${1 code}) 1 gen 1 int order(${1 code}) 2 gen 1 int znorder(${1 code}, ${2 code}) 2 gen int 1 int 1 znorder GDG 1 gen znprimroot 2 0 2 gener(${1 code}) 1 int 1 gen ggener(${1 code}) 1 gen 1 gen 1 ggener G 1 gen znstar 1 1 znstar G 1 gen gp2c-0.0.14/desc/Makefile.am0000644000175000017500000000133514676526547012352 00000000000000pkgdata_DATA = func.dsc EXTRA_DIST = $(COMPAT_DESC) $(OVERRIDE_DESC) $(FUNC2X_DSC) CLEANFILES = func.dsc COMPILE_DESC = ../scripts/822_desc.pl PARI_DESC = @PARI_DESC@ FUNC2X_DSC = $(srcdir)/func23.dsc $(srcdir)/func25.dsc $(srcdir)/func27.dsc $(srcdir)/func29.dsc $(srcdir)/func211.dsc $(srcdir)/func213.dsc $(srcdir)/func215.dsc $(srcdir)/func217.dsc COMPAT_DESC = $(srcdir)/compat.desc OVERRIDE_DESC = $(srcdir)/override.desc func.dsc: $(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) @$(COMPILE_DESC) $(PARI_DESC) $(COMPAT_DESC) $(OVERRIDE_DESC) >func.dsc\ && echo "Description recompiled" \ || ( cp $(srcdir)/func215.dsc func.dsc && echo "Using PARI 2.15 description" ) $(OVERRIDE_DESC): touch $(OVERRIDE_DESC) gp2c-0.0.14/doc/0000755000175000017500000000000014700755151010202 500000000000000gp2c-0.0.14/doc/Makefile.in0000644000175000017500000004051714676603632012206 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = gp2c-run.1 gp2c-dbg.1 CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gp2c-dbg.1.in \ $(srcdir)/gp2c-run.1.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHOC = @ECHOC@ ECHON = @ECHON@ ECHOT = @ECHOT@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GP2C_DBG = @GP2C_DBG@ GP2C_DBG1 = @GP2C_DBG1@ GP_PATH = @GP_PATH@ GP_PATH_DBG = @GP_PATH_DBG@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PARI_DATADIR = @PARI_DATADIR@ PARI_DESC = @PARI_DESC@ PARI_MODULE_BUILD = @PARI_MODULE_BUILD@ PARI_MODULE_DEBUG = @PARI_MODULE_DEBUG@ PARI_RUNTEST = @PARI_RUNTEST@ PARI_VERSION = @PARI_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL_PATH = @PERL_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mybindir = @mybindir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = gp2c.1 gp2c-run.1 $(GP2C_DBG1) EXTRA_MANS = gp2c-dbg.1 GP2C_DOC = gp2c.dvi gp2c.html gp2c001.png TYPE_DOC = type.dvi type.html type001.png PDF_DOC = gp2c.pdf type.pdf ALL_DOC = gp2c.ps type.ps $(PDF_DOC) GP2C_CRUFT = gp2c.aux gp2c.haux gp2c.htoc gp2c.image.tex gp2c.log gp2c.toc TYPE_CRUFT = type.aux type.haux type.htoc type.image.tex type.log type.toc EXTRA_DIST = gp2c.1 gp2c.tex type.tex $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC) MAINTAINERCLEANFILES = $(GP2C_DOC) $(TYPE_DOC) $(ALL_DOC) $(GP2C_CRUFT) $(TYPE_CRUFT) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): gp2c-run.1: $(top_builddir)/config.status $(srcdir)/gp2c-run.1.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ gp2c-dbg.1: $(top_builddir)/config.status $(srcdir)/gp2c-dbg.1.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local uninstall-man uninstall-man1 .PRECIOUS: Makefile all: gp2c.dvi gp2c.aux: $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex type.dvi type.aux: $(srcdir)/type.tex latex $(srcdir)/type.tex latex $(srcdir)/type.tex gp2c.pdf: $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex type.pdf: $(srcdir)/type.tex pdflatex $(srcdir)/type.tex pdflatex $(srcdir)/type.tex gp2c.ps: gp2c.dvi dvips gp2c.dvi -o gp2c.ps type.ps: type.dvi dvips type.dvi -o type.ps gp2c.html: $(srcdir)/gp2c.tex hevea -fix $(srcdir)/gp2c.tex type.html: $(srcdir)/type.tex hevea -fix $(srcdir)/type.tex doc: gp2c.dvi type.dvi dochtml: gp2c.html type.html docall: $(ALL_DOC) gp2c.html type.html gzip -c gp2c.ps > gp2c.ps.gz gzip -c type.ps > type.ps.gz install-data-local: $(INSTALL) -d $(DESTDIR)$(docdir) for i in $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC); do \ if test -f $(srcdir)/$$i; then \ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(docdir); \ fi \ done; uninstall-local: rm -r $(DESTDIR)$(docdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gp2c-0.0.14/doc/type.dvi0000644000175000017500000007364414220021655011615 00000000000000÷ƒ’À;è TeX output 2022.03.27:1043‹ÿÿÿÿïheader=l3backend-dvips.proŽ ª ýs o ýÞ‘[7÷ó߆µTG® cmtt12Çgp2c–7tóDÓítG®G®cmr17ÆtŒqypsŽes“and“the“description“systemŽŸ’³RóX«Q cmr12ÈBy–ê¨Bill“Allom¬rbSŽertŽŽŽŽŽŸˆ‹’ºkMarc¬rh–ê¨27,“2022ŽŸ+Ä‘5ó'ÂÖN ff cmbx12ÒCon•ŒÌten“tsŽ©‘5ó(ò"V cmbx10Ó1Ž‘Dó)ßê cmmi10ÀA;‘ª¨B‘€q½)“where‘?áÀA“½is“a“mathematicalŽ¡‘5ob‘Ž8ject–Z-and“ÀB‘Úž½its“computer“represen•¸ãtation.‘€PTw“o›Z-di eren“t˜t“ypGes˜can˜con“tain˜theŽ¡‘5same–Åímathematical›Åìob‘Ž8ject,‘â›with“a˜di erenš¸ãt“computer“represen˜tation.‘AùF‘ÿ*ªor“exam-Ž¡‘5ple–v]the›v\t¸ãypGe“×b–ÿ}'o“ol‘~æ½is–v]the˜set“ó!",š cmsy10Ãf½(true,1L),“(false,0L)Ãg½,‘~ž×i.e.“½true“and“false˜with“trueŽ¡‘5coGded–"æbš¸ãy“the“C-long“in˜teger‘"å1“and“false“coGded“b˜y“the“C-long“in˜teger‘"å0;‘3¶the“t˜ypGeŽ¡‘5×ne–ÿ}'gb“o“ol‘Ur½is›Lêthe–Léset“Ãf½(true,0L),˜(false,1L)Ãg“½whic¸ãh“is˜the“same“set˜of“mathematicalŽ¡‘5ob‘Ž8jects,‘…but–{no¸ãw›{true“is“coGded˜b¸ãy“the“C-long˜in¸ãteger“0˜and“false“b¸ãy˜the“C-longŽ¡‘5in¸ãteger‘UU1.Ž¡‘DF‘ÿ*ªor‘B¿eac•¸ãh›B¾GP2C‘Bºt“ypGe,‘Fwthere˜exists–B¿a“C‘B¹tš¸ãypGe“ÀC‘·t“½suc˜h›B¾that“for“all˜pairs“(ÀA;‘ª¨B‘€q½)Ž¡‘5bšGelonging–Îqto‘Îpthe“t•¸ãyp˜e,‘ì·the‘ÎpC‘ÎRt“yp˜e‘Îpof–ÎqÀB‘Ná½is“ÀC‘·t½.‘ÝThis“C‘ÎQt¸ãyp˜e‘Îpis“sp˜eci ed‘Îpb¸ãy“theŽ¡‘5description‘îí‰ffŽ‘îïó-m#½R cmss10Øt¸ãypGedef½.Ž¡‘DThe–GP2C‘ tš¸ãypGes“are–preordered.‘Z Abstractly‘ÿ*ª,‘[w˜e“sa˜y›that“ÀtŸÿóÙ“ Rcmr7¼1Ž‘C‹Ã‘ÇÀtŸÿ¼2Ž‘нif“and˜onlyŽ¡‘5if–U¬there›U­is“a“map˜Àf‘i;½suc¸ãh“that˜(ÀA;–ª¨B›€q½)‘Ç©Ã7!‘Ǫ½(ÀA;“f‘½(ÀB˜½))–U¬de nes“a‘U­one-to-one“mappingŽ¡‘5from›®ÀtŸÿ¼1Ž‘*t½to–®ÀtŸÿ¼2Ž‘|s½.‘{ËPractically“w¸ãe˜restrict˜the˜relation“ؽto˜mak¸ãe˜it“a˜partial˜orderŽ¡‘5sucš¸ãh–Aithat“an˜y‘Ajt˜w˜o“t˜ypGes“ha˜v˜e“an“upp•Ger›Ajb“ound.‘6This–Aipartial˜order“is“de nedŽ¡‘5bš¸ãy–0$the“c˜hains“in“the“description‘ɼ‰ffŽ‘ɾØt˜ypGe‘™˜‰ffŽ‘™šp˜reo˜rder½.‘4It“can“bGe“prin˜ted“b˜y“runningŽ¡‘5Ôgp2c‘?ý-t½.Ž Ón ÿ:Êã ™CV’ëQ ÿq¼ªgenŽŽ’ò_ Ÿ‚Îü„9ïfeŽŽ’ë ‰ŸŽ0ˆmpŽŽ’ÛÏ:Ÿ‚Îüó äO£ line10·Ž’à ) ÿ~–«ŽŽ’ÒŸŽ0ˆ½v¸ãecŽŽ’Çä…Ÿ‚Îü·Ž’Ñä… ÿ}ÎüŽ’Ûä… ÿxÎüŽ’à ) ÿv½ŽŽ’ÁJŸŽ0ˆ½pGolŽŽ’DZSŸŸBÚ„9ïfeŽŽ’Á¼Ÿª¤fv‘ÿqÇarŽŽ’ùp‘Ÿª¤frealŽŽ’ù¤¤ŸŸBÚ·@Ž’õjµŸ› ‰@ŽŽ’ÙdÑŸª¤f½in¸ãtŽŽ’ဟŸBÚ·Ž’å¹ïŸ› ‰ŽŽ’×…ŸÇD½smallŽŽ’áLΟ»¶¸„9ïfeŽŽ’ÙzhŸãŒ"b•Go“olŽŽ’ʼèŸÏ¡m·Ž’ÌtŸÎ@&ŽŽ’§LšŸÕR3½negb•Go“olŽŽ’ÌtŸà³¿·@Ž’Ê¼èŸßRx@ŽŽ’áLΟØ*–„9ïfeŽŽ’ÙÁ…½v¸ãoidŽŽ’ï¹ïŸý'·Ž’ò9ïŸó'Ž’ô¹ïŸé'Ž’÷9ïŸß'Ž’ù¹ïŸÕ'Ž’ü9ïŸË'Ž’þ¹ïŸÁ'Ž’$¤Ÿ·~¨ŽŽ’áLΟôžt„9ïfeŽŽŽŽŽŽŸ ’“‡½Figure–UU1:‘qÇExample“of“t¸ãypGe“preorderŽŽŽŸÇ‘DThe–¹prošGcess“of“con•¸ãv“erting–¹a“mathematical‘¸ob‘Ž8ject“from“one“t¸ãyp˜e“to“anotherŽ¡‘5is–µ…called“casting.‘’VThe“casting“methoGds“knoš¸ãwn“to“GP2C‘µlare‘µ„giv˜en“b˜y“the‘O‰ffŽ‘OØcastŽ¡‘5½description.ŽŸþ6‘5Ö1.2Ž‘SÀList–€of“t yp`esŽ©uT‘5½In–Gthis“section,‘«±wš¸ãe“list“the“t˜ypGes“kno˜wn“to“P–ÿ*ªARI/GP“.–GThe“curren˜t“list“is“a˜v‘ÿqÇailableŽ¡‘5in–UUthe“description‘îí‰ffŽ‘îïØt¸ãypGedef½.ŽŸþ6‘5Ó1.2.1Ž‘X#‚Basic‘ÕTt®9ypQÇesަ‘5smallŽŽ‘T3½Small–UUinš¸ãtegers“represen˜ted“b˜y“C“Ølong‘xâ½in˜tegers.ŽŽŸ’ß2ŽŽŒ‹¢ ª ýs o ý´‘5Óin®9tŽŽ‘G¼m½Multi-precision–UUinš¸ãtegers“represen˜ted“b˜y‘xâÔt‘¡E‰ff&fŽ‘Ç«INT“½GENs.ޤ‘5ÓrealŽŽ‘Lʤ½Multi-precision–UU oating“pGoinš¸ãt“real“n˜um˜bGers“represen˜ted“b˜y‘xâÔt‘¡E‰ff&fŽ‘Ç«REAL“½GENs.Ž¡‘5ÓmpŽŽ‘IøÞ½Multi-precision›UUn•¸ãum“bGers.‘qÇUnion˜of˜the˜t“ypGes˜×int‘H-½and˜×r–ÿ}'e“al½.Ž¡‘5Óv®9ecsmallŽŽ‘d:õ½V‘ÿ*ªectors–UUof“small“inš¸ãtegers“represen˜ted“b˜y‘xâÔt‘¡E‰ff&fŽ‘Ç«VECSMALL“½GENs.Ž¡‘5Óv®9ecŽŽ‘J!½V›ÿ*ªectors–Wæand“matrices“of“P˜ARI‘W¥ob‘Ž8jects,‘Š—represen•¸ãted‘Wåb“y‘{sÔt‘¡E‰ff&fŽ–Ç«VEC½,›WæÔt‘¡E‰ff&fŽ“COL‘W¦½or˜Ôt‘¡E‰ff&fŽ“MATŽ© ‘N½GENs.Ž¡‘5Óv‘ÿ\rarŽŽ‘IÁÁ½P•¸ãolynomial›uÛv‘ÿqÇariables‘uÚrepresen“ted˜b“y‘uÚtheir˜v‘ÿqÇariable˜n“um“bGer‘uÚwhic“h˜is‘uÚa˜Cަ‘NØlong‘xâ½inš¸ãteger.‘qÇThis–UUis“assoGciated“to“the“protot˜ypšGe“co˜de“'n'.Ž¡‘5ÓpQÇolŽŽ‘I§½P•¸ãolynomials›UUrepresen“ted˜b“y‘xâÔt‘¡E‰ff&fŽ‘Ç«POL˜½GENs.Ž¡‘5ÓgenstrŽŽ‘Y'm½Strings–UUrepresenš¸ãted“b˜y‘xâÔt‘¡E‰ff&fŽ‘Ç«STR“½GENs.Ž¡‘5ÓlistŽŽ‘Ieª½GP–UUlists“represenš¸ãted“b˜y‘xâÔt‘¡E‰ff&fŽ‘Ç«LIST“½GENs.Ž¡‘5ÓgenŽŽ‘KhÞ½Generic–UUP‘ÿ*ªARI“ob‘Ž8jects“represenš¸ãted“b˜y“GENs.ŽŸþ6‘5Ó1.2.2Ž‘X#‚Sp•QÇecial‘ÕTt®9yp“esŽŸuT‘5v®9oidŽŽ‘ON½This–áTt¸ãypGe›áUis“a“set“with˜only“one“elemen¸ãt“called˜×void½.‘ÄThis˜is“the“returnަ‘Ntš¸ãypGe–UUof“functions“not“returning“an˜ything.‘qÇGP“allo˜ws“to“cast“it“to“0.Ž¡‘5Ób•QÇo“olŽŽ‘O¸Ü½BoGolean–av‘ÿqÇalues“represenš¸ãted‘bas“C‘.Ølong‘>î½in˜tegers,‘Läwhere“1“is“true‘band“0“isަ‘Nfalse.Ž¡‘5Ónegb•QÇo“olŽŽ‘a!º½Negated›©¨b•Go“olean˜v‘ÿqÇalues˜represen•¸ãted‘©§as˜C‘©}Ølong‘Í5½in“tegers,‘Ëýwhere˜0˜is˜trueަ‘Nand–UU1“is“false.Ž¡‘5ÓlgŽŽ‘BñĽV‘ÿ*ªector–”…lengths‘”„represenš¸ãted“b˜y“the“Ølg›¸½macro“output,‘»i.e.‘1‚a“C‘”TØlong˜½in¸ãteger“equalަ‘Nto–UUthe“actual“length“plus“one.Ž¡‘5ÓstrŽŽ‘G¾½C–UUstrings“represenš¸ãted“b˜y“C“Øconst“cha˜r“*“½strings.Ž¡‘5Ót®9ypŽŽ‘Jœl½GEN‘ï²t•¸ãypGes›ïÌrepresen“ted˜b“y‘ïÍC‘ï²Ølong‘Y½in“tegers,‘as˜returned˜b“y˜the˜Øt“yp()˜½macro.ŽŸþ6‘5Ó1.2.3Ž‘X#‚In•®9ternal‘ÕTt“ypQÇesŽŸuT‘5½The–UUfolloš¸ãwing“t˜ypGes“are“mainly“for“in˜ternal“use“inside“GP2C.Ž¡‘5Óempt®9yŽŽ‘Yw½This– Ütš¸ãypGe“is“the“empt˜y“set.‘›[No“individual“ob‘Ž8ject“can“bGe“of“this“t˜ypGeަ‘Nbut–µa›µset“of“ob‘Ž8jects“can.‘‘ In˜fact“this“is˜a“default“t¸ãypGe“for˜an“unspGeci edަ‘Nset–UUof“ob‘Ž8jects.Ž¡‘5Ósmall‘°¡‰ffs4Ž‘#Õin®9tŽŽ‘eùu½Small›Ìfin•¸ãtegers‘Ìerepresen“ted˜b“y‘ÌeC‘ÌGØint˜½in“tegers.‘ÖøThis˜is‘Ìeonly˜a“v‘ÿqÇailableަ‘Nfor–UUcompatibilit¸ãy“with“P‘ÿ*ªARI“function“returning‘xâØint“½(instead“of‘rØlong#½).Ž¡‘5ÓbptrŽŽ‘Oük½Byte–UUpGoinš¸ãter.‘qÇThis“is“used“for“the“Øp˜rimepGointer‘xâ½global“v‘ÿqÇariable.Ž¡‘5Ófunc‘°¡‰ffs4Ž‘#ÕGGŽŽ‘e 8½function–UUwith“protš¸ãypGe“ØGEN“f(GEN,GEN)½.“Used“b˜y“×forve‘ÿ}'c½.Ž¡‘5Ópari‘°¡‰ffs4Ž‘#ÕspŽŽ‘\ùy½This–UUis“the“stacš¸ãk“pGoin˜ter“t˜ypGe“Øpa˜ri‘™˜‰ffŽ‘™šsp½.ŽŽŸ’ß3ŽŽŒ‹, ª ýs o ý´‘5Ó1.2.4Ž‘X#‚T®9ypQÇes–ÕTfor“data“structure.ŽŸuT‘5½These–UUtš¸ãypGes“are“mainly“de ned“to“allo˜w“the“use“of“inline“mem˜bGer“functions.ŽŸÏ‘5ÓnfŽŽ‘Cç½Numš¸ãbGer–UU eld“as“returned“b˜y“×n nit½.ޤŸ‘5ÓbnfŽŽ‘JJ¥½Big›UUn•¸ãum“bGer˜ eld˜as˜returned˜b“y˜×bn nit½.Ž© ‘5ÓbnrŽŽ‘Kƒ‰½Raš¸ãy–UUclass“ eld“as“returned“b˜y“×bnrinit½.Ž¡‘5ÓellŽŽ‘E¨à½Elliptic–UUcurvš¸ãe“as“returned“b˜y“×el‘‚Ølinit½.Ž¡‘5ÓbQÇellŽŽ‘L^3½Big–UUelliptic“curvš¸ãe“as“returned“b˜y“×el‘‚Ølinit½.Ž¡‘5ÓclgpŽŽ‘NqÀ½Class–UUgroup“as“returned“bš¸ãy“the“'clgp'“mem˜bGer“function.ަ‘5ÓpridŽŽ‘NµO½Prime–UUideal“as“returned“b¸ãy“×ide–ÿ}'alprime“de“c½.Ž¡‘5ÓgalŽŽ‘HˆÝ½Galois–UUgroup“as“returned“b¸ãy“×galoisinit½.ŽŸ›‘5Ö1.3Ž‘SÀC-T yp`eŽ©uT‘5½A‘/0×C-T‘ÿ;¼yp‘ÿ}'e‘ï–½is–/:just“a“levš¸ãel“of“indirection“to˜w˜ard‘/;real“C‘/0t˜yp•Ges.‘eC-t˜yp“es–/:are“de nedޤ ‘5b¸ãy–«úthe“descriptions‘E’‰ffŽ–E”Ødecl‘™˜‰ffŽ›™šbase‘«û½and‘E’‰ffŽ“Ødecl‘™˜‰ffŽ˜ext½.‘u¶Eac•¸ãh›«út“yp•Ge˜b“elongs‘«ûto˜a˜C-t¸ãyp“e˜asŽ¡‘5spGeci ed–UUbš¸ãy“the“description‘îí‰ffŽ‘îïØt˜ypGedef½.ŽŸ ±*‘5Ò2Ž‘MLËThe–ffdescription“systemŽŸç‘5Ö2.1Ž‘SÀIn tro`ductionަ‘5½The–ëOdescription›ëNsystem“is“a“w•¸ãa“y˜to–ëOdescribGe“the˜P‘ÿ*ªARI‘ë4application“programmingŽ¡‘5inš¸ãterface–‰-in“a‘‰,w˜a˜y“understandable“b˜y“bGoth›‰,the“GP2C‘‰ compiler˜and“h¸ãuman“bGe-Ž¡‘5ings.‘V»The›öûpresen•¸ãt‘öüdoGcumen“t˜is–öümostly˜addressed“to˜this“second˜category–ÿ*ª.‘V»W“eŽ¡‘5start–UUb¸ãy“a“simple“example:Ž¡‘DThe–UUdescription“of“the“GP“function“×sqr‘hâ½isŽ©?>‘:?ýÔ(int):int‘îsqri($1)Ž¡‘:?ý(mp):mp‘)ÿègsqr($1)Ž¡‘:?ý(gen):gen‘îgsqr($1)ŽŸ??‘D½Eac¸ãh–nline›nis“called“a˜×rule½,‘´-whic¸ãh“in“this˜case“consists“of˜three“parts.‘»ÏLetŽ¡‘5us–f„consider›fƒthe“ rst“one:‘”$the“parts˜Ô(int)½,‘jÏÔ:int“½and“Ôsqri($1)˜½are“respGectiv¸ãelyŽ¡‘5called–UUthe“×p›ÿ}'attern½,“×typ˜e½,“and“×action‘¸½part.Ž¡‘DWhen–×GP2C‘¨compiles›Ö×sqr(1)½,‘Šit“computes˜the“t¸ãypGes“of˜the“argumen¸ãts˜(here“×1Ž¡‘5½is–ÕÂof›ÕÃt¸ãypGe“×smal‘‚Øl‘‰½)˜and“matc¸ãhes˜them“against˜the“patterns˜from“top˜to“bGottom.Ž¡‘5The–q\bGest"›qrule“is˜used;‘~Þin˜case“of“a˜tie,‘wòthe˜topmost“rule˜wins.‘ÄÙHere,‘wñall“threeŽ¡‘5rules–ªapply‘ÿ*ª,‘ Ìand›©the“ rst“rule˜wins.‘[äSince˜the“t¸ãypGe˜of“this“rule˜is“×int½,‘ ÌGP2C‘™setsŽ¡‘5the–%•t¸ãypGe›%”of“the˜expression“×sqr(1)‘„'½to“×int½.‘aÜThe˜action“part˜is“Ôsqri($1)½,‘/!so“GP2CŽ¡‘5generates–6cthe“C‘6[coGde“Øsqri(ó.\ƒí tcss1000Ù$Ø1)›6b½where“Ù$Ø1“½is“replaced“b¸ãy“the˜coGde“of“the“argumen¸ãtŽ¡‘5×1‘°[½cast–UUto“the“pattern“t¸ãypšGe“(×int‘òؽ).‘qÇThe“result“is“the“C“co˜de“Øsqri(gen‘™˜‰ffŽ‘™š1)½.Ž¡‘DNo¸ãw–UUa“more“complex“example:‘qÇthe“description“of“the“GP“function“×exp‘öí½isަ‘:?ýÔ(real):real‘ÿômpexp($1)Ž¡‘:?ý(mp):mp:prec‘¿÷gexp($1,‘?ýprec)Ž¡‘:?ý(gen):gen:prec–?ýgexp($1,“prec)ŽŽŸ’ß½4ŽŽŒ‹8€ ª ýs o ý´‘5½When–ÄÞGP2C‘Ĺcompiles“×exp(1)½,‘áÃit“lošGoks“for“the“"b˜est"“rules.‘AŸThe“ rst“rule“cannotޤ ‘5b•Ge›Aused,‘Eb“ecause˜there˜is˜no˜w•¸ãa“y˜to˜cast˜a˜×smal‘‚Øl‘J&½to˜a˜×r–ÿ}'e“al½,‘Eso˜it˜uses˜the˜secondŽ¡‘5rule.‘#ÙThis–ætime“the“result“will‘æbšGe“of“t¸ãyp˜e“×mp½.‘#ÙThe“extra“part‘æÔ:prec“½is“calledŽ¡‘5a–xomošGde.‘ÛThe“mo˜de›xp`prec'“states“that“the˜action“part“will“use˜the“spGecial“`prec'Ž¡‘5v‘ÿqÇariable–Âthat“holds“the“currenš¸ãt“real“precision.‘·×This“is“ob˜vious“from“the“actionŽ¡‘5part–jŽcošGde,‘oÜbut“GP2C‘j‰do“not“parse“the“action“part“so‘jit“needs“this“mo˜de.‘±rNoteŽ¡‘5that–•the“last“rule›”is“also“v‘ÿqÇalid“and“has“the“same“action˜part“so“w¸ãould“generateŽ¡‘5the–3exact›4same“coGde.‘WgHo•¸ãw“ev“er,‘the˜t“ypGe–3of˜the“expression˜w¸ãould“bGe˜less“precise.Ž¡‘DThe–UUdescription“of“the“GP“function“×matdet‘H-½isŽ©ó%‘:?ýÔ(gen,‘?ý?0):gen‘îdet($1)Ž¡‘:?ý(gen,‘?ý1):gen‘$¿ëdet2($1)Ž¡‘:?ý(gen,–?ý#small):gen‘ ú$"incorrect“flag“in“matdet"Ž¡‘:?ý(gen,–?ýsmall):gen‘¿÷det0($1,“$2)ŽŸó&‘5½W‘ÿ*ªe–UUsee“sev¸ãeral“new“pattern“atoms:ަ‘DRó/¼9ì™ tcrm1000Ú€ˆŽŽŽ‘N×1‘°[½matcš¸ãhes–UUa“literal“1,“e.g.‘qÇ×matdet(M,1)‘³è½w˜ould“matc˜h“the“second“rule.Ž©y“‘DRÚ€ˆŽŽŽ‘N×?0‘´z½matc¸ãhes–Ytan›Ysoptional“literal“0:‘ó××matdet(M)½,˜×matdet(M,0)‘¸½and“×matdet(M,)Ž¡‘N½all–UUmatc¸ãh“the“ rst“rule.ަ‘DRÚ€ˆŽŽŽ‘N×#smal›‚Øl‘]Þ½matc¸ãhes–UUan“unspGeci ed“literal“×smal˜l½.Ž©ó%‘5Finally‘ÿ*ª,‘©Tw¸ãe–eUalso“see›eTa“new“action˜ó0}iî tcti1000Û$×".–ˆˆ.“.“"½,‘©Uwhic•¸ãh˜causes‘eUGP2C‘eto˜displa“y‘eUtheŽ¡‘5error–UUmessage“and“abGort.ŽŸÄV‘5Ö2.2Ž‘SÀDe nitionsޤuT‘5½W‘ÿ*ªe–UUnoš¸ãw“giv˜e“a“formal“de nition“of“descriptions.ŽŸÄV‘5Ó2.2.1Ž‘X#‚DescriptionŽ¡‘5½A–UUdescription“is“a“line-separated“list“of“×rules½.ŽŸÄU‘5Ó2.2.2Ž‘X#‚RuleŽ¡‘5½A–UUrule“is“a“line“of“the“formŽŸó&‘N(×p–ÿ}'attern‘Äc½)×:typ“e‘À[:mo“delist‘H-actionަ‘5½Only–ÈBthe›ÈApattern“part“is˜mandatory‘ÿ*ª,‘äýthough“most˜rules“also“include˜an“actionŽŸ ‘5and–UUa“t¸ãypGe.Ž©ÄV‘5Ó2.2.3Ž‘X#‚P®9atternŽ¡‘5½A–UUpattern“is“a“comma-separated“list“of“×p‘ÿ}'attern‘“çatoms½.ŽŸÄU‘5Ó2.2.4Ž‘X#‚T®9ypQÇeŽ¡‘5½The–UUtš¸ãypGe“of“a“rule“is“a“standard“GP2C“t˜ypGe.ަ‘5Ó2.2.5Ž‘X#‚MoQÇdelistŽ¡‘5½A–UUmoGdelist“is“a“colon-separated“list“of“×mo‘ÿ}'des½.ŽŽŸ’ß5ŽŽŒ‹D¸ ª ýs o ý´‘5Ó2.2.6Ž‘X#‚ActionŽ©uT‘5½An–,Íaction›,Ìis“a“string˜(normally“a“piece˜of“C‘,ÂcoGde)“that“can˜include“×r–ÿ}'eplac“ementޤ ‘5strings½.‘’Replacemenš¸ãt–‹™strings“start‘‹˜b˜y“a“Ú$›‹˜½and“are“substituted“according˜to“theŽ¡‘5replacemen¸ãt‘UUrules.ŽŸËŠ‘5Ö2.3Ž‘SÀP attern‘€atomަ‘5½A‘ Úpattern› atom– is“one˜of“the˜folloš¸ãwing,‘75where“×typ‘ÿ}'e‘Êc½is“an˜y‘ GP2C‘ Út˜ypGe,‘75×n‘Îl½an˜yŽ¡‘5small›ûin•¸ãteger,‘ !×"str"‘­H½an“y˜c“haracter˜string˜and‘û×ctyp‘ÿ}'e‘»o½an“y˜C-t“ypGe.‘S±A‘úýpattern˜atomŽ¡‘5can–UUmatc¸ãh“an“ob‘Ž8ject.ŽŸÙÑDRÚ€ˆŽŽŽ‘N×typ‘ÿ}'e½.‘qÇThis–UUmatcš¸ãhes“an˜y“ob‘Ž8ject“of“t˜ypGe“comparable“to“×typ‘ÿ}'e½.ޤŠN‘DRÚ€ˆŽŽŽ‘N×n½.‘qÇThis–UUmatcš¸ãhes“a“constan˜t“small“in˜teger“v‘ÿqÇalue“equal“to“×n½.Ž¡‘DRÚ€ˆŽŽŽ‘N×?n½.‘qÇThis–UUmatcš¸ãhes“an“optional“×smal‘‚Øl‘]Þ½v‘ÿqÇalue“whic˜h“defaults“to“×n½.Ž¡‘DRÚ€ˆŽŽŽ‘N×?typ›ÿ}'e½.‘qÇThis–UUmatc¸ãhes“an“optional“×typ˜e‘°½v›ÿqÇalue“with“standard“default“v˜alue.Ž¡‘DRÚ€ˆŽŽŽ‘N×"str"½.‘qÇThis–UUmatcš¸ãhes“a“constan˜t“c˜haracter“string“equal“to“×str½.Ž¡‘DRÚ€ˆŽŽŽ‘N×&typ‘ÿ}'e½.‘ÃThis–ÅÇmatc¸ãhes›ÅÆa“reference˜(the“GP‘Å©×&x‘ú ½construction)˜to“an˜ob‘Ž8jectŽ© ‘Nof–UUtš¸ãypGe“equal“or“less“than“×typ‘ÿ}'e‘°½referencing“the“same“data“t˜ypGe.Ž¡‘DRÚ€ˆŽŽŽ‘N×nothing½.‘qÇThis–UUmatcš¸ãhes“a“missing“argumen˜t.Ž¡‘DRÚ€ˆŽŽŽ‘N×#typ‘ÿ}'e½.‘qÇThis–UUmatcš¸ãhes“a“constan˜t“v‘ÿqÇalue“of“t˜ypGe“×typ‘ÿ}'e½.ŽŸŠM‘DRÚ€ˆŽŽŽ‘N×...‘f¸½This–¦ûmatcš¸ãhes“an˜y“n˜um˜bGer‘¦úof“argumen˜ts“matc˜hing“the‘¦úprevious“atom.ަ‘NThis–¤ m¸ãust›¤bGe“the“last˜atom“of˜the“pattern.‘]ðThis“allo¸ãws˜to“implemen¸ãtަ‘Nfunctions–UUtaking“an“unlimited“n•¸ãum“bGer–UUof“argumen¸ãts.Ž¡‘DRÚ€ˆŽŽŽ‘N×C!ctyp‘ÿ}'e½.‘qÇThis–UUmatcš¸ãhes“an˜y“ob‘Ž8ject“of“C-t˜ypGe“×ctyp‘ÿ}'e½.Ž¡‘DRÚ€ˆŽŽŽ‘N×@typ‘ÿ}'e½.‘h,This–§wmatc¸ãhes›§va“v‘ÿqÇariable˜of“t¸ãypGe“×typ‘ÿ}'e½.‘h,This˜is“mainly˜used“forަ‘Nexpressions–UUthat“ev‘ÿqÇaluate“their“argumenš¸ãts“sev˜eral“times.Ž¡‘DRÚ€ˆŽŽŽ‘N×*typ‘ÿ}'e½.‘éThis–}>matcš¸ãhes‘}=an“lv‘ÿqÇalue“of“t˜ypGe›}=×typ‘ÿ}'e½.‘éThis“is“used˜in“constructionsަ‘Nthat–UUmoGdify“their“argumen¸ãts.ŽŸËŠ‘5Ö2.4Ž‘SÀMatc hingŽŸuT‘5½The–UUbGest“rule“is“determined“as“follo¸ãws:ŽŸœ‘A8ä1.ŽŽŽ‘NThe–I1result›I2of“matc¸ãhing“a˜pattern“atom“against˜some“GP‘HòcoGde˜is“eitherަ‘N'reject'–UUor“'matc¸ãh'.Ž¡‘A8ä2.ŽŽŽ‘NThere–UUare“three“matcš¸ãhing“lev˜els:‘qÇ'partial',“'normal'“and“'pGerfect'.Ž¡‘A8ä3.ŽŽŽ‘NA–UUpattern“matcš¸ãhes“if“all“the“atoms“matc˜h.Ž¡‘A8ä4.ŽŽŽ‘NA–UUrule“matcš¸ãhes“if“its“pattern“matc˜hes.Ž¡‘A8ä5.ŽŽŽ‘NThe–:„bGest›:…rule“is˜the“matc¸ãhing“rule˜with“the“higher˜n•¸ãum“bGer–:„of˜normal“andަ‘NpGerfect–³¤matc¸ãhes.‘Œ²In“case›³£of“a˜tie,‘Ë7the“highest˜n•¸ãum“b•Ger‘³¤of˜p“erfect‘³¤matc¸ãhesަ‘Nwins.‘qÇIf–UUthere“is“still“a“tie,“the“topmost“rule“wins.ŽŽŸ’ß6ŽŽŒ‹N˜ ª ýs o ý´‘D½When–¬fmatc¸ãhing›¬gthe“pattern˜atoms“×typ›ÿ}'e‘l½and“×?typ˜e½,‘+the“matc•¸ãhing‘¬glev“el‘¬fisŽŸ ‘5determined–UUas“follo¸ãws:Ž©¸Ä‘DRÚ€ˆŽŽŽ‘N½a–UUpšGerfect“matc¸ãh“o˜ccurs“when“the“t¸ãyp˜e“of“the“ob‘Ž8ject“is“exactly“×typ‘ÿ}'e½,ޤÜb‘DRÚ€ˆŽŽŽ‘N½a–UUnormal“matcš¸ãh“when“the“t˜ypGe“is“less“than“×typ‘ÿ}'e½,Ž¡‘DRÚ€ˆŽŽŽ‘N½a–UUpartial“matcš¸ãh“when“the“t˜ypGe“is“bigger“than“×typ‘ÿ}'e½.ŽŸÜa‘DRÚ€ˆŽŽŽ‘N½Rejection–UUhappšGens“when“the“t¸ãyp˜es“are“uncomparable.ަ‘5Other–UUpattern“atoms“alw•¸ãa“ys–UUresult“in“a“reject“or“a“pGerfect“matc¸ãh.ŽŸ€¨‘5Ö2.5Ž‘SÀMo`deŽŸuT‘5½MoGdes–*÷are›*øused“in˜descriptions“to˜giv¸ãe“more“information˜to“GP2C‘*ÁabGout“theޤ ‘5action–Çpart.‘ÇThey“are“usually“useless›Çto“h¸ãuman“bGeings“that˜are“smart“enoughŽ¡‘5to–UUunderstand“the“action“part.‘qÇThe“curren¸ãt“list“of“moGdes“is:ަ‘5ÓprecŽŽ‘OÁ½The–UUaction“uses“the“Øp¸ãrec“½v‘ÿqÇariable.Ž©Üb‘5ÓparensŽŽ‘Zé2½The–ö‹action“došGes“not“ha•¸ãv“e–ö‹top“precedence.‘UiGP2C‘öbwill“put“it“b˜et•¸ãw“eenŽ¡‘Nparen¸ãtheses–UUwhen“needed“(see“Ú$½())ަ‘5Ócop®9yŽŽ‘Pÿø½The–‡action›‡returns“data“that˜access“memory“bGelonging“to˜other“ob‘Ž8jects.Ž¡‘NGP2C–UUwill“generate“calls“to“Øgcop¸ãy()“½when“needed.ŽŸ€¨‘5Ö2.6Ž‘SÀLists–€of“replacemen t“stringsŽŸuT‘5½The–UUfollo¸ãwing“spšGecial“sequences“can“o˜ccur“in“the“action“part:ŽŸ¸Ä‘DRÚ€ˆŽŽŽ‘NÙ$Øn½.‘qÇThis–UUis“replaced“bš¸ãy“the“Àn½-th“argumen˜t“of“the“function.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Ø(n)½.‘ dŽThis–û—is“replaced“bš¸ãy‘û˜the“Àn½-th“argumen˜t“of‘û˜the“function“bGet˜w˜eenŽ¡‘Nparen¸ãthesis–UUif“it“has“the“parens“moGde.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Øtš¸ãypGe:n½.‘9¦This‘¬ïis–¬ðreplaced“b˜y“the“Àn½-th‘¬ïargumen˜t“of“the“function‘¬ïcast“to“t˜ypGeŽ¡‘N×typ‘ÿ}'e½.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Ø(t•¸ãypšGe:n)½.‘qÇCom“bination–UUof“Ú$½(n)“and“Ú$½t¸ãyp˜e:n.ŽŸÜa‘DRÚ€ˆŽŽŽ‘NÙ$Ø%n½.‘%VThis›‘0is–‘/replaced“b¸ãy˜the“Àn½-th˜argumen¸ãt“of“the˜function,‘ &whicš¸ãh“m˜ustŽ¡‘NbGe–¨©a›¨¨constan¸ãt“string,‘½~with˜all“%“c¸ãharacters“doubled˜and“no“quotes.‘kÂThisŽ¡‘Nis–UUfor“use“inside“format“spGeci cation.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Øpš¸ãrec½:‘qÇshort–UUcut“for“Ù$Øp˜rec½.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Øbitpš¸ãrec½:‘qÇshort–UUcut“for“Ù$Øbitp˜rec½.ަ‘DRÚ€ˆŽŽŽ‘NÙ$Ø"message"½.›÷›Signals–,›an‘,œin¸ãv‘ÿqÇalid“condition.˜GP2C‘,dwill›,œabGort“b•¸ãy˜prin“tingŽ¡‘Nthe–UUerror“message“Ømessage½.ަ‘DRÚ€ˆŽŽŽ‘NÙ$ÃfØRPN–¢TsequenceÃg›¢ª½The‘¢«RPN“sequence˜is˜a˜space˜separated‘¢«list˜of˜RPNŽ¡‘Ncommands–Ûcthat“will“bGe“ev‘ÿqÇaluated‘Ûdbš¸ãy“the“GP2C‘Û@in˜ternal“RPN‘ÛAev‘ÿqÇaluator.Ž¡‘NIf–vnthe“stacš¸ãk“is“empt˜y‘voat“the“end“of“the“ev‘ÿqÇaluation,‘~µthis“is“replaced“b˜y“theŽ¡‘Nemptš¸ãy–²¤string,‘Éøelse“this“is“replaced“b˜y“the“in˜teger“at“the“top“of“the“stac˜k.Ž¡‘NSome–ˆiRPN‘ˆ[commands›ˆhgenerate“text,‘•-in“that˜case“it˜is“pasted˜just“bGeforeŽ¡‘Nthe–UUÚ$“½sign.ŽŽŸ’ß7ŽŽŒ‹Z¶ ª ýs o ý´‘5Ö2.7Ž‘SÀLists–€of“RPN“commandsŽŸuT‘5½The–N±commands›N°are“ev‘ÿqÇaluated˜with“respGect˜to“a“stac¸ãk˜of“in¸ãteger˜v‘ÿqÇalues,‘Pinitiallyޤ ‘5empt¸ãy‘ÿ*ª.‘fUThe–¦Úexact“list›¦Ùof“command“suppGorted˜bš¸ãy“a“particular“GP2C‘¦Äv˜ersion“isŽ¡‘5the–UUØ%accepted‘™˜‰ffŽ‘™šcommand“½hash“in“the“script“Ôscripts/822‘¡E‰ff&fŽ‘Ç«desc.pl.in½.ŽŸ‘5ó1F C– cmbxti10Üliter–ÿi>al‘$øinte“gerŽŽ‘~Ž ½push–UUthe“inš¸ãteger“at“the“top“of“the“stac˜k.ޤ‘5Ó:Ütyp‘ÿi>eŽŽ‘R'ýpush–UUthe“tš¸ãypGe“×typ‘ÿ}'e‘°½at“the“top“of“the“stac˜k.Ž¡‘5Óadd,–ÕTsub,“m®9ul,“div,“moQÇdŽŽ’²U„½2-ary–UUarithmetic“opGeratorsŽ¡‘5ÓnegŽŽ‘KhÞ½1-ary–UUarithmetic“opGeratorŽ¡‘5Óand,–ÕTor,“xorŽŽ‘uw½2-ary–UUlogical“opGeratorsŽ¡‘5ÓnotŽŽ‘Jœl½1-ary–UUlogical“opGeratorŽ¡‘5Ót®9ypQÇeŽŽ‘P3‡½pGop–UUan“inš¸ãteger“Àn“½and“push“the“t˜ypGe“of“the“Àn½-th“argumen˜t.Ž¡‘5Óv‘ÿ\ralueŽŽ‘Sßö½pGop–ˆan“in¸ãteger›‰Àn“½and“push“the“v‘ÿqÇalue“of˜the“Àn½-th“argumen•¸ãt,‘pro“vided–ˆit“isŽ© ‘Na–UUconstanš¸ãt“in˜teger.Ž¡‘5ÓcoQÇdeŽŽ‘P×½pšGop–UUan“in¸ãteger“Àn“½and“generate“the“C“co˜de“for“the“Àn½-th“argumen¸ãt.Ž¡‘5ÓcastŽŽ‘Mµ§½pGop–Iåan›Iæin¸ãteger“Àn˜½and“a˜t¸ãypGe“Àt˜½and“generate˜the“C‘IãcoGde˜for“the˜Àn½-th“argu-ަ‘Nmenš¸ãt–UUcast“to“t˜ypGe“Àt½.Ž¡‘5ÓparensŽŽ‘Zé2½this–m is›mŸa“ ag˜requesting“ÓcoQÇde˜½and“Ócast˜½to“enclose“the˜C‘m™cošGde“b˜et•¸ãw“eenަ‘Nparenš¸ãthesis–UUif“the“argumen˜t“has“the“×p–ÿ}'ar“ens‘'v½moGde.Ž¡‘5Óstr‘°¡‰ffs4Ž–#Õformat,‘ÕTstr‘°¡‰ffs4Ž“ra®9wŽŽ’˜Á$½pGop–¶ºan“inš¸ãteger“Àn“½suc˜h“that‘¶»the“Àn½-th“argumen˜t“is“a“con-ަ‘Nstanš¸ãt–âdstring“and“displa˜y“the“string“without“leading“and“ending“".‘KwF‘ÿ*ªurther-ަ‘Nmore–:Óstr‘°¡‰ffs4Ž‘#Õformat“½will‘:displaš¸ãy“the“string“in“a“w˜a˜y‘:suitable“for“inclusion“inަ‘Na–UUformat“string“bš¸ãy“quoting“meta-c˜haracters.Ž¡‘5ÓprecŽŽ‘OÁ½displa¸ãy–UUthe“loGcal“precision“(in“prec“format).Ž¡‘5ÓbitprecŽŽ‘]õ½displa¸ãy–UUthe“loGcal“precision“in“bit.ŽŸ‘DThe›Ákfollo¸ãwing–ÁlRPN‘ÁOcommands“are˜useful˜with“the˜×...‘¶ ½pattern˜atom“to˜im-ަ‘5plemenš¸ãt–UUfunctions“that“tak˜e“an“unlimited“n˜um˜bGer“of“argumen˜ts.Ž¡‘5Ón®9bargŽŽ‘VˆÙ½push–UUthe“actual“n•¸ãum“bGer–UUof“argumen¸ãts“of“the“function.Ž¡‘5Óformat‘°¡‰ffs4Ž–#Õstring,‘ÕTformat‘°¡‰ffs4Ž“argsŽŽ’¾Iù½pGop–+ían“inš¸ãteger‘+ìÀn“½suc˜h“that“the‘+ìÀn½-th“argumen˜tަ‘NcorrespGonds–RRto›RSa“×...‘pǽpattern“atom˜and“generate˜a“format˜string“and˜a“listަ‘Nof–UUargumen¸ãts,“see“the“description“of“the“GP“function“×print½.Ž¡‘5ÓcoQÇde,‘ÕTcastŽŽ‘k“Ö½If– Õthe“in¸ãteger‘ ÖÀn“½correspGonds“to“a“×...‘ ˜H½pattern“atom,‘zµgenerate“aަ‘Ncomma-separated–"list“of“C‘òcoGde“for“the“argumen¸ãts“Àn›¶½Ã‘¶¾½1,–AUÀn½,“Àn˜½+‘¶¾1,“.–ªª.“.“,ަ‘NÓn®9barg½,–UUbš¸ãy“matc˜hing“eac˜h“argumen˜t“against“the“Àn–8àÓ½1–UUpattern“atom.Ž¡‘5ÓstdrefŽŽ‘Vêü½this–his“a“ ag“requesting“ÓcošQÇde“½and‘iÓt®9yp˜e“½to“prepšGend“a“'&'“b˜efore“eac¸ãhަ‘Nargumen¸ãts.ŽŽŸ’ß8ŽŽŒ‹ fÕ ª ýs o ý´‘5½The›=ffollo¸ãwing–=gRPN‘=`commands“are˜useful“to˜implemen¸ãt“functions˜that“tak¸ãe˜clo-ޤ ‘5sures–UUas“argumen¸ãts.ŽŸ‘5Ówrapp•QÇer,‘ÕTco“okieŽŽ’Š:½pGop–»çan›»èin¸ãteger“Àn“½and˜generate“a˜call“to“the˜wrappGer“(resp.Ž¡‘Nthe–—ScošGokie“asso˜ciated“to‘—Rthe“wrapp˜er)“for“the“Àn½-th“argumen¸ãt.‘2qThe“wrapp˜erŽ¡‘Ngenerated–ÞÍdepšGends“on“the“wrapp˜er“protot¸ãyp˜e‘ÞÎin“the“W‘ÿ*ªrapp˜er“ eld.‘/TheŽ¡‘NcošGokie–UUis“the“list“of“lo˜cal“v‘ÿqÇariables“seen“b¸ãy“the“closure.ŽŽŸ’ß9ŽŽŒøsvƒ’À;誎 ó1F C– cmbxti10ó0}iî tcti1000ó/¼9ì™ tcrm1000ó.\ƒí tcss1000ó-m#½R cmss10ó,ý': cmti10ó+ÂÖN  cmbx12ó*߆µTff cmtt12ó)ßê cmmi10óKñ`y cmr10óÙ“ Rcmr7ó äO£ line10ùu×ßßßßßgp2c-0.0.14/doc/type.html0000644000175000017500000010755114220021656011773 00000000000000 gp2c types and the description system

gp2c types and the description system

By Bill Allombert

Contents

1  gp2c types

1.1  Introduction

The main feature GP2C adds above GP is the use of types. Types give a semantic to PARI objects, so that GP2C can generate code that use specialized (hence faster) PARI functions instead of generic ones. Please read the section ’Advanced use of GP2C’ in the GP2C manual for how to use the GP2C types and examples.

Such types are used in conjunctions with so-called descriptions which are stored in the field ’Description:’ of the file pari.desc and provide the actual C code to use depending of the types of the arguments. They are described in Section 2.

Abstractly, a GP2C type is a set of pairs (A,B) where A is a mathematical object and B its computer representation. Two different types can contain the same mathematical object, with a different computer representation. For example the type bool is the set {(true,1L), (false,0L)}, i.e. true and false with true coded by the C-long integer 1 and false coded by the C-long integer 0; the type negbool is the set {(true,0L), (false,1L)} which is the same set of mathematical objects, but now true is coded by the C-long integer 0 and false by the C-long integer 1.

For each GP2C type, there exists a C type Ct such that for all pairs (A,B) belonging to the type, the C type of B is Ct. This C type is specified by the description _typedef.

The GP2C types are preordered. Abstractly, we say that t1t2 if and only if there is a map f such that (A,B)↦ (A,f(B)) defines a one-to-one mapping from t1 to t2. Practically we restrict the relation ≺ to make it a partial order such that any two types have an upper bound. This partial order is defined by the chains in the description _type_preorder. It can be printed by running gp2c -t.


Figure 1: Example of type preorder

The process of converting a mathematical object from one type to another is called casting. The casting methods known to GP2C are given by the _cast description.

1.2  List of types

In this section, we list the types known to PARI/GP. The current list is available in the description _typedef.

1.2.1  Basic types

small
Small integers represented by C long integers.
int
Multi-precision integers represented by t_INT GENs.
real
Multi-precision floating point real numbers represented by t_REAL GENs.
mp
Multi-precision numbers. Union of the types int and real.
vecsmall
Vectors of small integers represented by t_VECSMALL GENs.
vec
Vectors and matrices of PARI objects, represented by t_VEC, t_COL or t_MAT GENs.
var
Polynomial variables represented by their variable number which is a C long integer. This is associated to the prototype code ’n’.
pol
Polynomials represented by t_POL GENs.
genstr
Strings represented by t_STR GENs.
list
GP lists represented by t_LIST GENs.
gen
Generic PARI objects represented by GENs.

1.2.2  Special types

void
This type is a set with only one element called void. This is the return type of functions not returning anything. GP allows to cast it to 0.
bool
Boolean values represented as C long integers, where 1 is true and 0 is false.
negbool
Negated boolean values represented as C long integers, where 0 is true and 1 is false.
lg
Vector lengths represented by the lg macro output, i.e. a C long integer equal to the actual length plus one.
str
C strings represented by C const char * strings.
typ
GEN types represented by C long integers, as returned by the typ() macro.

1.2.3  Internal types

The following types are mainly for internal use inside GP2C.

empty
This type is the empty set. No individual object can be of this type but a set of objects can. In fact this is a default type for an unspecified set of objects.
small_int
Small integers represented by C int integers. This is only available for compatibility with PARI function returning int (instead of long).
bptr
Byte pointer. This is used for the primepointer global variable.
func_GG
function with protype GEN f(GEN,GEN). Used by forvec.
pari_sp
This is the stack pointer type pari_sp.

1.2.4  Types for data structure.

These types are mainly defined to allow the use of inline member functions.

nf
Number field as returned by nfinit.
bnf
Big number field as returned by bnfinit.
bnr
Ray class field as returned by bnrinit.
ell
Elliptic curve as returned by ellinit.
bell
Big elliptic curve as returned by ellinit.
clgp
Class group as returned by the ’clgp’ member function.
prid
Prime ideal as returned by idealprimedec.
gal
Galois group as returned by galoisinit.

1.3  C-Type

A C-Type is just a level of indirection toward real C types. C-types are defined by the descriptions _decl_base and _decl_ext. Each type belongs to a C-type as specified by the description _typedef.

2  The description system

2.1  Introduction

The description system is a way to describe the PARI application programming interface in a way understandable by both the GP2C compiler and human beings. The present document is mostly addressed to this second category. We start by a simple example:

The description of the GP function sqr is

 (int):int      sqri($1)
 (mp):mp        gsqr($1)
 (gen):gen      gsqr($1)

Each line is called a rule, which in this case consists of three parts. Let us consider the first one: the parts (int), :int and sqri($1) are respectively called the pattern, type, and action part.

When GP2C compiles sqr(1), it computes the types of the arguments (here 1 is of type small) and matches them against the patterns from top to bottom. The “best” rule is used; in case of a tie, the topmost rule wins. Here, all three rules apply, and the first rule wins. Since the type of this rule is int, GP2C sets the type of the expression sqr(1) to int. The action part is sqri($1), so GP2C generates the C code sqri($1) where $1 is replaced by the code of the argument 1 cast to the pattern type (int). The result is the C code sqri(gen_1).

Now a more complex example: the description of the GP function exp is

 (real):real    mpexp($1)
 (mp):mp:prec   gexp($1, prec)
 (gen):gen:prec gexp($1, prec)

When GP2C compiles exp(1), it looks for the "best" rules. The first rule cannot be used, because there is no way to cast a small to a real, so it uses the second rule. This time the result will be of type mp. The extra part :prec is called a mode. The mode ‘prec’ states that the action part will use the special ‘prec’ variable that holds the current real precision. This is obvious from the action part code, but GP2C do not parse the action part so it needs this mode. Note that the last rule is also valid and has the same action part so would generate the exact same code. However, the type of the expression would be less precise.

The description of the GP function matdet is

 (gen, ?0):gen      det($1)
 (gen, 1):gen       det2($1)
 (gen, #small):gen  $"incorrect flag in matdet"
 (gen, small):gen   det0($1, $2)

We see several new pattern atoms:

  • 1 matches a literal 1, e.g. matdet(M,1) would match the second rule.
  • ?0 matches an optional literal 0: matdet(M), matdet(M,0) and matdet(M,) all match the first rule.
  • #small matches an unspecified literal small.

Finally, we also see a new action $"…", which causes GP2C to display the error message and abort.

2.2  Definitions

We now give a formal definition of descriptions.

2.2.1  Description

A description is a line-separated list of rules.

2.2.2  Rule

A rule is a line of the form

(pattern):type:modelist action

Only the pattern part is mandatory, though most rules also include an action and a type.

2.2.3  Pattern

A pattern is a comma-separated list of pattern atoms.

2.2.4  Type

The type of a rule is a standard GP2C type.

2.2.5  Modelist

A modelist is a colon-separated list of modes.

2.2.6  Action

An action is a string (normally a piece of C code) that can include replacement strings. Replacement strings start by a $ and are substituted according to the replacement rules.

2.3  Pattern atom

A pattern atom is one of the following, where type is any GP2C type, n any small integer, "str" any character string and ctype any C-type. A pattern atom can match an object.

  • type. This matches any object of type comparable to type.
  • n. This matches a constant small integer value equal to n.
  • ?n. This matches an optional small value which defaults to n.
  • ?type. This matches an optional type value with standard default value.
  • "str". This matches a constant character string equal to str.
  • &type. This matches a reference (the GP &x construction) to an object of type equal or less than type referencing the same data type.
  • nothing. This matches a missing argument.
  • #type. This matches a constant value of type type.
  • ... This matches any number of arguments matching the previous atom. This must be the last atom of the pattern. This allows to implement functions taking an unlimited number of arguments.
  • C!ctype. This matches any object of C-type ctype.
  • @type. This matches a variable of type type. This is mainly used for expressions that evaluate their arguments several times.
  • *type. This matches an lvalue of type type. This is used in constructions that modify their arguments.

2.4  Matching

The best rule is determined as follows:

  1. The result of matching a pattern atom against some GP code is either ’reject’ or ’match’.
  2. There are three matching levels: ’partial’, ’normal’ and ’perfect’.
  3. A pattern matches if all the atoms match.
  4. A rule matches if its pattern matches.
  5. The best rule is the matching rule with the higher number of normal and perfect matches. In case of a tie, the highest number of perfect matches wins. If there is still a tie, the topmost rule wins.

When matching the pattern atoms type and ?type, the matching level is determined as follows:

  • a perfect match occurs when the type of the object is exactly type,
  • a normal match when the type is less than type,
  • a partial match when the type is bigger than type.
  • Rejection happens when the types are uncomparable.

Other pattern atoms always result in a reject or a perfect match.

2.5  Mode

Modes are used in descriptions to give more information to GP2C about the action part. They are usually useless to human beings that are smart enough to understand the action part. The current list of modes is:

prec
The action uses the prec variable.
parens
The action does not have top precedence. GP2C will put it between parentheses when needed (see $())
copy
The action returns data that access memory belonging to other objects. GP2C will generate calls to gcopy() when needed.

2.6  Lists of replacement strings

The following special sequences can occur in the action part:

  • $n. This is replaced by the n-th argument of the function.
  • $(n). This is replaced by the n-th argument of the function between parenthesis if it has the parens mode.
  • $type:n. This is replaced by the n-th argument of the function cast to type type.
  • $(type:n). Combination of $(n) and $type:n.
  • $%n. This is replaced by the n-th argument of the function, which must be a constant string, with all % characters doubled and no quotes. This is for use inside format specification.
  • $prec: short cut for $prec.
  • $bitprec: short cut for $bitprec.
  • $"message". Signals an invalid condition. GP2C will abort by printing the error message message.
  • ${RPN sequence} The RPN sequence is a space separated list of RPN commands that will be evaluated by the GP2C internal RPN evaluator. If the stack is empty at the end of the evaluation, this is replaced by the empty string, else this is replaced by the integer at the top of the stack. Some RPN commands generate text, in that case it is pasted just before the $ sign.

2.7  Lists of RPN commands

The commands are evaluated with respect to a stack of integer values, initially empty. The exact list of command supported by a particular GP2C version is the %accepted_command hash in the script scripts/822_desc.pl.in.

literal integer
push the integer at the top of the stack.
:type
push the type type at the top of the stack.
add, sub, mul, div, mod
2-ary arithmetic operators
neg
1-ary arithmetic operator
and, or, xor
2-ary logical operators
not
1-ary logical operator
type
pop an integer n and push the type of the n-th argument.
value
pop an integer n and push the value of the n-th argument, provided it is a constant integer.
code
pop an integer n and generate the C code for the n-th argument.
cast
pop an integer n and a type t and generate the C code for the n-th argument cast to type t.
parens
this is a flag requesting code and cast to enclose the C code between parenthesis if the argument has the parens mode.
str_format, str_raw
pop an integer n such that the n-th argument is a constant string and display the string without leading and ending ". Furthermore str_format will display the string in a way suitable for inclusion in a format string by quoting meta-characters.
prec
display the local precision (in prec format).
bitprec
display the local precision in bit.

The following RPN commands are useful with the ... pattern atom to implement functions that take an unlimited number of arguments.

nbarg
push the actual number of arguments of the function.
format_string, format_args
pop an integer n such that the n-th argument corresponds to a ... pattern atom and generate a format string and a list of arguments, see the description of the GP function print.
code, cast
If the integer n corresponds to a ... pattern atom, generate a comma-separated list of C code for the arguments n−1, n, n+1, …, nbarg, by matching each argument against the n−1 pattern atom.
stdref
this is a flag requesting code and type to prepend a ’&’ before each arguments.

The following RPN commands are useful to implement functions that take closures as arguments.

wrapper, cookie
pop an integer n and generate a call to the wrapper (resp. the cookie associated to the wrapper) for the n-th argument. The wrapper generated depends on the wrapper prototype in the Wrapper field. The cookie is the list of local variables seen by the closure.

This document was translated from LATEX by HEVEA.
gp2c-0.0.14/doc/gp2c-dbg.1.in0000644000175000017500000000312113623476440012177 00000000000000.TH GP2C-DBG "1" "November 2001" "GP to C compiler driver" PARI .SH NAME GP2C-DBG \- The GP to C debugger driver .SH DESCRIPTION gp2c-dbg .I [gp2c options] [file.gp] .PP Compile \fIfile.gp\fR with \fBgp2c\fR and launch a debugger session of gp where the functions of \fIfile.gp\fR are loaded. [gp2c options] are passed to \fBgp2c\fR. .PP gp2c-dbg .I file.c .PP Compile \fIfile.c\fR and launch a debugger session of \fBgp\fR where the functions of \fIfile.c\fR are loaded. The file \fIfile.c\fR must have suitable \fPGP;install()\fR lines. .SH "USAGE" .PP Since there is no debugger for the GP language, \fBgp2c-dbg\fR allows to debug GP scripts with the C debugger. To catch \fBPARI\fR errors, you can set a break point on the function "pari_err". Note that your functions will not be loaded until \fBgp\fR read the .run file. .SH "FILES" .I file.gp.c The C output of \fBgp2c\fR. .TP .I file.gp.so The GP loadable module. .TP .I file.gp.run The commands to load the module. Once a module is compiled, you can load it inside a \fBgp\fR session by running this script. .SH "ENVIRONMENT" .TP .I GP2C Path to the gp2c compiler, default: @mybindir@/gp2c .TP .I GP_DBG Path to the gp calculator, default: @GP_PATH@ .TP .I GP2C_DBG Command to start the debugger, default: "gdb --args" .SH "COPYING" Copyright 2000-2018 The PARI Group .PP GP2C is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for GP2C. .SH "SEE ALSO" The GP2C manual, .IR gp2c-run(1), .IR gp2c(1), .IR gp(1), .IR gdb(1) gp2c-0.0.14/doc/type001.png0000644000175000017500000000645014220021656012030 00000000000000‰PNG  IHDRŒÑÃÞ¢ bKGDÿ‡Ì¿ pHYsaa¨?§itIMEæ+Ip­Ú ¶IDATxÚí?ŒÛʇ?Ë×e_e\%ðuÏ%ÝpºMé×ñ¥0ð€×ÐíC^ùʽ&FJ×\¸‘º pC© 7§öº#^çTVJwNÁEI$Å?Kr%qçþvfvfvv*ÐÓ’ï|qñ׿ºw@O¤™ß8ØJÊÐ}Ü®ua¬Ç‘T4ÞT»ìG-º xgïè?ÉÕ7pˆˆúã'ÄE’‚Ò¯gHÂ*MmgZ¦ /PZbÜçVåäI®apYqk“Îç GÛšêô¤Á3f¬ˆ¹nÎæÌÀ(:×–Nõã[æU>#¦G`¶¥*×@4˜ÿ;& …áIÍZ¡@{ ü†i]\„)76(ðÝÊì`MoQî\ ’@È£EkW´S.L*+`È#¥Á›"lòRt¾iצñËM3N{Cˆð{ñt<©x‹pǪ½ó|·‰44³€¦‘S"¬±Ê49p ‡Ü›†Cíµ¶&ª 7qé-f&›™È©ÄSUeÅ2^:Aª4ç *ýM†ž¶iÿÈÿ€×\qÅk.qx…äç\òÉg<>ç.>-«¶Ê¥+[©_T…¿rŒ%$³Ô£ðp2Q±ÚeÈFF«æå ).q3ˆAœ®©{ø@„ä–ˆEŒ‹4g|fÖ~¼Á2z3¼3¤Ú>º­~¿£ßôÃÂ$ko™mçà4Ø$geüE·2Óé$0ÆýÓ¨G»š#‡Áå2Á¿Ê03Ø*ëX§S« 5éA’ÉYá¥î`Ì,X"”{Ï=ØÁ5+b\|Ü>wEnl®Ðƒ2pâãƒ-õÒhsà öΆe$[Þ7³ƒ•ÖTz`d@VöWýa%ÈM ÀJP`EDßÖ%(|`﬈æ!ÚH}“l[¿zÑaUOo½ê#3ÞÉz5Yúôs“̸x™»AÂÝ[Mb¥U85*íbÉô.|`Éw'Pý IR;¾Ôyä*wiŒ( ÑÜJá›2c‹æFôgnV ›•·‰j™ˆ>Òh›¡‰ËrÒ +›ÐmYÆN×ÌL÷¢ÈeñþîIϬüËÔ2HX‹•iáwoúeæÐÂá›þ˜Ö0쇙ªhåâP¦š¢wï'ïÓ©ì¬8j·êÎ7ô«2“”g'~IÉ_ž¯2C"ðö^¸×G’Dì¼.3/€®€Áw{WDD¬ˆpY°<°?>âÅ’%I——šÌ¬Y²¨ì/¢ˆˆ[¬êûuZÅÕ±4ç´ìQÏOvûõËɳ‰™Ø¦aÂd\›˜ñlb&¶Gµ­ªzõlb&f¤JSäĉ鞙²Jé¸+fäžÓÀAŸzÿokWàâƒ53·æ™™7È Xô÷\óÈ<ð–¤nh¡Ës“¾l"ýY8–žiñ|hñ·¾=¬ô†J•‰ò®/Tª0ãô5@¸ÅuÏ3~hù2AfÜ’(o‚¾m¬(ffm9ç,Qº`k øz¿Áœ¨ý>ëbÛ»L \ë‚­5RÛ„Zo}8èT]@j9c$«´`k…äK×øHÚšª6Ý«·“ U’‡¬ã§VÚd¼èôS f:X†n¾ù»“Ìï ›ã«±SusHЕ§÷²:¢;·óeæÝ=}F@R à`pÓÇm(d·ÏTVk³¡Š“($u­‹:ƒd–Ê :T룡°éDÐo¬mÕ–¢?Ø4LŽMÈÄö0sЙØ#¾ý2sk3±=ÌXu¤ÖXfÐ"<™t<(ªo?¦Œ™p‰Y÷K|ߤÜJ#ôl_½-ßw–"3À e›Ù­$Ý%'ûïïŽÖåôèé ¼CÀ+®ø; ˆP¸\ð‘WÌq¹ä EÄ×sZ¡«¿BmL:EûzPéïjW.]=0ë³ÿ @„Òsï\€Ð³ŸŸB°9 Ð@AÙ“£dÊ_€ÛL‚Ýbœ*qÐ)Ò”™Î‰ÌÌj'N5(¢Ô¿;i’¿‹µ”“Fð®pñ]I¯õ¦XBêr2À¤.(†€¹ ŸgüWO»7®ýðWƒËúG*»fvÚ mž* Õæž#¦ mA9o¤‘FÚ#u<àûX¬ž=[™yJÀl:>Þ³Þ(÷¹ ë"#__»b‰‡Âá‘$T|êLÏFëT¦³Ç‹%áâ"ÓUëUn1æ Ÿ[H¯]p¯ ¢®+†­Òç&äìñR“žW—¯<çg~eI„ƒäŸzGÄÕNÃú3ㆤ×JàŸ\á.—|®ðÌä¾’×\òŸ×Àî/£y=FS?ÒÎy^áÚ+3á` XN8((ƒÓ-0S*TòÆ®‚ÿÐ P,'´ËÀ ­Å"pÌÓ6³g‘A­ÅpBkA9'p¤‘Fê„ ´¾TgšªèvíÚ¡IWï X6yþ¢ÀI“W¹\šNmf³¸_ÄiÞV¥ý««Ú&+JƒÜÊ.ïrÙ0›,®`™Óæ¯Î˜¯ d°E[Ùå|.é¢2|Žâg–\!xŽ@àqÅe…Ük’Á}ÆŸ¶ò¸1Iø²qÃ+™rÍ.“Ãåç±©Ö P·yœYp2bNW8="ϦŒÀù…ö#0¢øæQ^F`ªÊ˹O×ïŽÿ0«°5* 0&£TC^ÎYbFyi"/Ç-1•Ü&MËË1‘d×ÿ×å`Û,›€q HB$÷ÌðÌqñ2§ *$ó–þ‡Ï?Ž˜Í6á€ÉOúÌ—Á‚BËĵ>à)hùÄØv`¦<@Útà{^p]rNr@È‚+Ú,¦¶o\ß-è€[¡l¬­¯Ž ‹&êáT)QŸø}XÉRÇ®©¤˜ÆåWãé6êc˜Ö¥®*Õñ2³×&ç¬×Só~RÜ0u¼Ì͵øePPw Æ4}‘Ží’ˆ>oYJ/{_kg*Æç->×€‹Ç ©·Ó$mm\ÝiûÓšlØeïÖ3ºzl#’>Ò. A, ¸!à;ÀGè6üK@Ä7^à×@D¨Ï?Ý|º±ÊÂyõ¸(P‚M ¬íæXrX²D¤Î¹Ãgë“Mäšœ¤]pí7Ç;N’[òiý»vþfØú]|óhûº¥}Û[·©Çn Œõ%«Ã«w"/§Î•8÷ ΑÈËapêì~­rm#y2Qõž—•%G–|êd¢:ƒ÷ž—…S¹£9gÛ jа‹Û,_gCÎwYà“Æú(Ál„CMZÅGY²±Ñ±dÅWø9m7EØ–—Ëá›ØH-¦éS^»vÏau:ìW^NYbZÊËXµyvÀxíÖ'£"0^ÛõéÉ(/çŒ×¾ža2Ê˹Ó8ž㣳”w¬ÞíT^ŽObvÛÜo¥9ÏN^dIÔ-»;%f·™m6Ç›¬ 8¹‡•Ékf»ãõs[!,MNÓvn·ßÌv;Ç{›¶µ•Nû” ËèÿK^ =/]kç%tEXtdate:create2022-03-27T08:43:26+00:00ˆGhÂ%tEXtdate:modify2022-03-27T08:43:26+00:00ùÐ~-tEXticc:copyrightCopyright Artifex Software 2011ºÅ´1tEXticc:descriptionArtifex Software sRGB ICC Profile †tEXtSoftwareGPL Ghostscript 9.53.3oœ¬'IEND®B`‚gp2c-0.0.14/doc/type.tex0000644000175000017500000004516213645577722011652 00000000000000\documentclass[a4paper]{article} \usepackage[latin1]{inputenc} %I want this document to compile if latex2html is not installed \usepackage{ifthen} \ifthenelse{\boolean{true}}{% %Currently this is always true, but see below. \newcommand{\link}[2]{#1} \newcommand{\gpcc}{{\tt gp2c}} %HEVEA \renewcommand{\link}[2]{\ahref{#2}{#1}} }{% %If we use latex2html, we must set the boolean to false so that this branch is %used. However current latex2html version does not know about ifthen and so %just read *both* branch so it is *not* necessary. \usepackage{html} \newcommand{\link}[2]{\htmladdnormallink{#1}{#2}} \newcommand{\gpcc}{gp2c} } %Use \gpcc only for large fonts.(titles,sections) \newcommand{\pathlink}[1]{\link{\path{#1}}{#1}} \newcommand{\path}[1]{\texttt{#1}} \newcommand{\gp}[1]{\textit{#1}} \newcommand{\pari}[1]{\textsf{#1}} \newcommand{\cmd}[1]{{\noindent\bf #1}} \newcommand{\typ}[1]{\texttt{t\_#1}} \title{\gpcc\ types and the description system} \author{By Bill Allombert} \begin{document} \maketitle \tableofcontents \section{\gpcc\ types} \subsection{Introduction} The main feature GP2C adds above GP is the use of types. Types give a semantic to PARI objects, so that GP2C can generate code that use specialized (hence faster) PARI functions instead of generic ones. Please read the section 'Advanced use of GP2C' in the GP2C manual for how to use the GP2C types and examples. Such types are used in conjunctions with so-called \emph{descriptions} which are stored in the field 'Description:' of the file \path{pari.desc} and provide the actual C code to use depending of the types of the arguments. They are described in Section~\ref{description}. Abstractly, a GP2C type is a set of pairs $(A,B)$ where $A$ is a mathematical object and $B$ its computer representation. Two different types can contain the same mathematical object, with a different computer representation. For example the type \gp{bool} is the set \{(true,1L), (false,0L)\}, \emph{i.e.}~true and false with true coded by the C-long integer \(1\) and false coded by the C-long integer \(0\); the type \gp{negbool} is the set \{(true,0L), (false,1L)\} which is the same set of mathematical objects, but now true is coded by the C-long integer \(0\) and false by the C-long integer \(1\). For each GP2C type, there exists a C type $Ct$ such that for all pairs $(A,B)$ belonging to the type, the C type of $B$ is $Ct$. This C type is specified by the description \pari{\_typedef}. The GP2C types are preordered. Abstractly, we say that $t_1\prec t_2$ if and only if there is a map $f$ such that $(A,B)\mapsto (A,f(B))$ defines a one-to-one mapping from $t_1$ to $t_2$. Practically we restrict the relation $\prec$ to make it a partial order such that any two types have an upper bound. This partial order is defined by the chains in the description \pari{\_type\_preorder}. It can be printed by running \verb!gp2c -t!. \begin{figure}[htbp] \begin{center} \[ %HEVEA \begin{toimage} \unitlength=1.mm \begin{picture}(12,50)(-6,0) \put(6,50){\makebox[0mm]{gen}} \put(6,44){\line(0,1){5}} \put(6,40){\makebox[0mm]{mp}} \put(-2,44){\line(1,1){5}} \put(-3,40){\makebox[0mm]{vec}} \put(-9,44){\line(2,1){12}} \put(-9,40){\makebox[0mm]{pol}} \put(-9,34){\line(0,1){5}} \put(-9,30){\makebox[0mm]{var}} \put(12,30){\makebox[-1.5mm]{real}} \put(12,34){\line(-1,1){5}} \put(0,30){\makebox[-1.5mm]{int}} \put(0,34){\line(1,1){5}} \put(0,20){\makebox[1mm]{small}} \put(0,24){\line(0,1){5}} \put(0,10){\makebox[1mm]{bool}} \put(-8,17){\line(1,1){4}} \put(-15,15){\makebox[1mm]{negbool}} \put(-4,11){\line(-1,1){4}} \put(0,14){\line(0,1){5}} \put(0,00){\makebox[1mm]{void}} \put(5,01){\line(1,4){7}} \put(0,04){\line(0,1){5}} \end{picture} %HEVEA \end{toimage} %HEVEA \imageflush \] \caption{Example of type preorder} \label{fig:type} \end{center} \end{figure} The process of converting a mathematical object from one type to another is called casting. The casting methods known to GP2C are given by the \pari{\_cast} description. \subsection{List of types} In this section, we list the types known to PARI/GP. The current list is available in the description \pari{\_typedef}. \subsubsection{Basic types} \begin{description} \item[small] Small integers represented by C \pari{long} integers. \item[int] Multi-precision integers represented by \typ{INT} GENs. \item[real] Multi-precision floating point real numbers represented by \typ{REAL} GENs. \item[mp] Multi-precision numbers. Union of the types \gp{int} and \gp{real}. \item[vecsmall] Vectors of small integers represented by \typ{VECSMALL} GENs. \item[vec] Vectors and matrices of PARI objects, represented by \typ{VEC}, \typ{COL} or \typ{MAT} GENs. \item[var] Polynomial variables represented by their variable number which is a C \pari{long} integer. This is associated to the prototype code 'n'. \item[pol] Polynomials represented by \typ{POL} GENs. \item[genstr] Strings represented by \typ{STR} GENs. \item[list] GP lists represented by \typ{LIST} GENs. \item[gen] Generic PARI objects represented by GENs. \end{description} \subsubsection{Special types} \begin{description} \item[void] This type is a set with only one element called \gp{void}. This is the return type of functions not returning anything. GP allows to cast it to \(0\). \item[bool] Boolean values represented as C \pari{long} integers, where 1 is true and 0 is false. \item[negbool] Negated boolean values represented as C \pari{long} integers, where 0 is true and 1 is false. \item[lg] Vector lengths represented by the \pari{lg} macro output, i.e. a C \pari{long} integer equal to the actual length plus one. \item[str] C strings represented by C \pari{const char *} strings. \item[typ] GEN types represented by C \pari{long} integers, as returned by the \pari{typ()} macro. \end{description} \subsubsection{Internal types} The following types are mainly for internal use inside GP2C. \begin{description} \item[empty] This type is the empty set. No individual object can be of this type but a set of objects can. In fact this is a default type for an unspecified set of objects. \item[small\_int] Small integers represented by C \pari{int} integers. This is only available for compatibility with PARI function returning \pari{int} (instead of \pari{long}). \item[bptr] Byte pointer. This is used for the \pari{primepointer} global variable. \item[func\_GG] function with protype \pari{GEN f(GEN,GEN)}. Used by \gp{forvec}. \item[pari\_sp] This is the stack pointer type \pari{pari\_sp}. \end{description} \subsubsection{Types for data structure.} These types are mainly defined to allow the use of inline member functions. \begin{description} \item[nf] Number field as returned by \gp{nfinit}. \item[bnf] Big number field as returned by \gp{bnfinit}. \item[bnr] Ray class field as returned by \gp{bnrinit}. \item[ell] Elliptic curve as returned by \gp{ellinit}. \item[bell] Big elliptic curve as returned by \gp{ellinit}. \item[clgp] Class group as returned by the 'clgp' member function. \item[prid] Prime ideal as returned by \gp{idealprimedec}. \item[gal] Galois group as returned by \gp{galoisinit}. \end{description} \subsection{C-Type} A \textit{C-Type} is just a level of indirection toward real C types. C-types are defined by the descriptions \pari{\_decl\_base} and \pari{\_decl\_ext}. Each type belongs to a C-type as specified by the description \pari{\_typedef}. \section{The description system}\label{description} \subsection{Introduction} The description system is a way to describe the PARI application programming interface in a way understandable by both the GP2C compiler and human beings. The present document is mostly addressed to this second category. We start by a simple example: The description of the GP function \gp{sqr} is \begin{verbatim} (int):int sqri($1) (mp):mp gsqr($1) (gen):gen gsqr($1) \end{verbatim} Each line is called a \textit{rule}, which in this case consists of three parts. Let us consider the first one: the parts \verb!(int)!, \verb!:int! and \verb!sqri($1)! are respectively called the \textit{pattern}, \textit{type}, and \textit{action} part. When GP2C compiles \gp{sqr(1)}, it computes the types of the arguments (here~\gp{1} is of type \gp{small}) and matches them against the patterns from top to bottom. The ``best'' rule is used; in case of a tie, the topmost rule wins. Here, all three rules apply, and the first rule wins. Since the type of this rule is \gp{int}, GP2C sets the type of the expression \gp{sqr(1)} to \gp{int}. The action part is \verb!sqri($1)!, so GP2C generates the C code \pari{sqri(\$1)} where \pari{\$1} is replaced by the code of the argument \gp{1} cast to the pattern type (\gp{int}). The result is the C code \pari{sqri(gen\_1)}. Now a more complex example: the description of the GP function \gp{exp} is \begin{verbatim} (real):real mpexp($1) (mp):mp:prec gexp($1, prec) (gen):gen:prec gexp($1, prec) \end{verbatim} When GP2C compiles \gp{exp(1)}, it looks for the "best" rules. The first rule cannot be used, because there is no way to cast a \gp{small} to a \gp{real}, so it uses the second rule. This time the result will be of type \gp{mp}. The extra part \verb!:prec! is called a mode. The mode `prec' states that the action part will use the special `prec' variable that holds the current real precision. This is obvious from the action part code, but GP2C do not parse the action part so it needs this mode. Note that the last rule is also valid and has the same action part so would generate the exact same code. However, the type of the expression would be less precise. The description of the GP function \gp{matdet} is \begin{verbatim} (gen, ?0):gen det($1) (gen, 1):gen det2($1) (gen, #small):gen $"incorrect flag in matdet" (gen, small):gen det0($1, $2) \end{verbatim} We see several new pattern atoms: \begin{itemize} \item \gp{1} matches a literal $1$, e.g. \gp{matdet(M,1)} would match the second rule. \item \gp{?0} matches an optional literal $0$: \gp{matdet(M)}, \gp{matdet(M,0)} and \gp{matdet(M,)} all match the first rule. \item \gp{\#small} matches an unspecified literal \gp{small}. \end{itemize} Finally, we also see a new action \gp{\$"\dots"}, which causes GP2C to display the error message and abort. \subsection{Definitions} We now give a formal definition of descriptions. \subsubsection{Description} A description is a line-separated list of \textit{rules}. \subsubsection{Rule} A rule is a line of the form \begin{quote} (\textit{pattern})\textit{:type}\textit{:modelist} \textit{action} \end{quote} Only the pattern part is mandatory, though most rules also include an action and a type. \subsubsection{Pattern} A pattern is a comma-separated list of \textit{pattern atoms}. \subsubsection{Type} The type of a rule is a standard GP2C type. \subsubsection{Modelist} A modelist is a colon-separated list of \textit{modes}. \subsubsection{Action} An action is a string (normally a piece of C code) that can include \textit{replacement strings}. Replacement strings start by a \$ and are substituted according to the replacement rules. \subsection{Pattern atom} A pattern atom is one of the following, where \gp{type} is any GP2C type, \gp{n} any small integer, \gp{"str"} any character string and \gp{ctype} any C-type. A pattern atom can match an object. \begin{itemize} \item \gp{type}. This matches any object of type comparable to \gp{type}. \item \gp{n}. This matches a constant small integer value equal to \gp{n}. \item \gp{?n}. This matches an optional \gp{small} value which defaults to \gp{n}. \item \gp{?type}. This matches an optional \gp{type} value with standard default value. \item \gp{"str"}. This matches a constant character string equal to \gp{str}. \item \gp{\&type}. This matches a reference (the GP \gp{\&x} construction) to an object of type equal or less than \gp{type} referencing the same data type. \item \textit{nothing}. This matches a missing argument. \item \gp{\#type}. This matches a constant value of type \gp{type}. \item \gp{...} This matches any number of arguments matching the previous atom. This must be the last atom of the pattern. This allows to implement functions taking an unlimited number of arguments. \item \gp{C!ctype}. This matches any object of C-type \gp{ctype}. \item \gp{@type}. This matches a variable of type \gp{type}. This is mainly used for expressions that evaluate their arguments several times. \item \gp{*type}. This matches an lvalue of type \gp{type}. This is used in constructions that modify their arguments. \end{itemize} \subsection{Matching} The best rule is determined as follows: \begin{enumerate} \item The result of matching a pattern atom against some GP code is either 'reject' or 'match'. \item There are three matching levels: 'partial', 'normal' and 'perfect'. \item A pattern matches if all the atoms match. \item A rule matches if its pattern matches. \item The best rule is the matching rule with the higher number of normal and perfect matches. In case of a tie, the highest number of perfect matches wins. If there is still a tie, the topmost rule wins. \end{enumerate} When matching the pattern atoms \gp{type} and \gp{?type}, the matching level is determined as follows: \begin{itemize} \item a perfect match occurs when the type of the object is exactly \gp{type}, \item a normal match when the type is less than \gp{type}, \item a partial match when the type is bigger than \gp{type}. \item Rejection happens when the types are uncomparable. \end{itemize} Other pattern atoms always result in a reject or a perfect match. \subsection{Mode} Modes are used in descriptions to give more information to GP2C about the action part. They are usually useless to human beings that are smart enough to understand the action part. The current list of modes is: \begin{description} \item[prec] The action uses the \pari{prec} variable. \item[parens] The action does not have top precedence. GP2C will put it between parentheses when needed (see \$()) \item[copy] The action returns data that access memory belonging to other objects. GP2C will generate calls to \pari{gcopy()} when needed. \end{description} %\begin{description} %\item[long] The action returns a \pari{GEN} casted to \pari{long}. GP2C will %generate type casting if needed. This is not supported anymore. %\item[semicolon] The action is a full block and does not need a trailing %semicolon. %\item[brace] The action does not need to be put inside brace. %\item[else] This is an if-else block. This is used by GP2C in conjunction %with brace to add braces around if-else blocks. %\end{description} %The following modes are defined but currently ignored. %\begin{description} %\item[var] (ignored) value cannot be determined at compile time %\item[sidef] (ignored) The statement has a side-effect. %\item[term] (ignored) The statement terminate the function. %\end{description} \subsection{Lists of replacement strings} The following special sequences can occur in the action part: \begin{itemize} \item \pari{\$n}. This is replaced by the \(n\)-th argument of the function. \item \pari{\$(n)}. This is replaced by the \(n\)-th argument of the function between parenthesis if it has the parens mode. \item \pari{\$type:n}. This is replaced by the \(n\)-th argument of the function cast to type \gp{type}. \item \pari{\$(type:n)}. Combination of \$(n) and \$type:n. \item \pari{\$\%n}. This is replaced by the \(n\)-th argument of the function, which must be a constant string, with all \% characters doubled and no quotes. This is for use inside format specification. \item \pari{\$prec}: short cut for \pari{\${prec}}. \item \pari{\$bitprec}: short cut for \pari{\${bitprec}}. \item \pari{\$"message"}. Signals an invalid condition. GP2C will abort by printing the error message \pari{message}. \item \pari{\$\{RPN sequence\}} The RPN sequence is a space separated list of RPN commands that will be evaluated by the GP2C internal RPN evaluator. If the stack is empty at the end of the evaluation, this is replaced by the empty string, else this is replaced by the integer at the top of the stack. Some RPN commands generate text, in that case it is pasted just before the \$ sign. \end{itemize} \subsection{Lists of RPN commands} The commands are evaluated with respect to a stack of integer values, initially empty. The exact list of command supported by a particular GP2C version is the \pari{\%accepted\_command} hash in the script \path{scripts/822\_desc.pl.in}. \begin{description} \item[\gp{literal integer}] push the integer at the top of the stack. \item[:\gp{type}] push the type \gp{type} at the top of the stack. \item[add, sub, mul, div, mod] 2-ary arithmetic operators \item[neg] 1-ary arithmetic operator \item[and, or, xor] 2-ary logical operators \item[not] 1-ary logical operator \item[type] pop an integer $n$ and push the type of the $n$-th argument. \item[value] pop an integer $n$ and push the value of the $n$-th argument, provided it is a constant integer. \item[code] pop an integer $n$ and generate the C code for the $n$-th argument. \item[cast] pop an integer $n$ and a type $t$ and generate the C code for the $n$-th argument cast to type $t$. \item[parens] this is a flag requesting \cmd{code} and \cmd{cast} to enclose the C code between parenthesis if the argument has the \gp{parens} mode. \item[str\_format, str\_raw] pop an integer $n$ such that the $n$-th argument is a constant string and display the string without leading and ending ". Furthermore \cmd{str\_format} will display the string in a way suitable for inclusion in a format string by quoting meta-characters. \item[prec] display the local precision (in prec format). \item[bitprec] display the local precision in bit. \end{description} The following RPN commands are useful with the \gp{...} pattern atom to implement functions that take an unlimited number of arguments. \begin{description} \item[nbarg] push the actual number of arguments of the function. \item[format\_string, format\_args] pop an integer $n$ such that the $n$-th argument corresponds to a \gp{...} pattern atom and generate a format string and a list of arguments, see the description of the GP function \gp{print}. \item[code, cast] If the integer $n$ corresponds to a \gp{...} pattern atom, generate a comma-separated list of C code for the arguments $n-1$, $n$, $n+1$, \ldots, \cmd{nbarg}, by matching each argument against the $n-1$ pattern atom. \item[stdref] this is a flag requesting \cmd{code} and \cmd{type} to prepend a '\&' before each arguments. \end{description} The following RPN commands are useful to implement functions that take closures as arguments. \begin{description} \item[wrapper, cookie] pop an integer $n$ and generate a call to the wrapper (resp. the cookie associated to the wrapper) for the $n$-th argument. The wrapper generated depends on the wrapper prototype in the Wrapper field. The cookie is the list of local variables seen by the closure. \end{description} \end{document} gp2c-0.0.14/doc/gp2c.tex0000644000175000017500000010254013645577654011522 00000000000000\documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \newcommand{\link}[2]{#1} \newcommand{\gpcc}{{\tt gp2c}} %HEVEA \renewcommand{\link}[2]{\ahref{#2}{#1}} %Use \gpcc only for large fonts.(titles, sections) \newcommand{\pathlink}[1]{\link{\path{#1}}{#1}} \newcommand{\path}[1]{\texttt{#1}} \newcommand{\gp}[1]{\textit{#1}} \newcommand{\pari}[1]{\textsf{#1}} \newcommand{\cmd}[1]{{\noindent\bf #1}} \title{An introduction to \gpcc} \author{By Bill Allombert and Ariel Pacetti} \begin{document} \maketitle \tableofcontents \section{What is \gpcc ?} The \path{gp2c} compiler is a package for translating GP routines into the C programming language, so that they can be compiled and used with the \link{PARI}{http://pari.math.u-bordeaux.fr} system or the GP calculator. The main advantage of doing this is to speed up computations and to include your own routines within the preexisting GP ones. It may also find bugs in GP scripts. This package (including the latest versions) can be obtained at the URL:\\ \pathlink{http://pari.math.u-bordeaux.fr/download.html\#gp2c} \subsection{Installing \gpcc} After downloading the file \path{gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} (where \emph{x,y,z} and \emph{t} depend on the version), you first have to unzip the file with the command: \cmd{gunzip gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} This will create the new file \path{gp2c-\emph{x.y.z}pl\emph{t}.tar}. Next you have to extract the files with the \cmd{tar} program: \cmd{tar -xvf gp2c-\emph{x.y.z}pl\emph{t}.tar} Note: You can do both steps at once with GNU \cmd{tar} by using the command: \cmd{tar -zxvf gp2c-\emph{x.y.z}pl\emph{t}.tar.gz} This creates a directory \path{gp2c-\emph{x.y.z}pl\emph{t}}, which contains the main \gpcc\ files. Now you have to install the program. You need the file \path{pari.cfg}. This file can be found in the PARI object directory and is installed in \$prefix/lib/pari/. Copy or link this file in the \path{gp2c} directory, be sure to call it \path{pari.cfg}. \cmd{ln -s .../lib/pari/pari.cfg pari.cfg} Run \cmd{./configure}, which will search for the PARI version and some other configuration tools of the system. To install the program, type \cmd{make}, and the program will be compiled. You can then run \cmd{make check} to verify that everything has gone fine (a bunch of OK's should show up). All of this is completely standard, and you are now ready to use \gpcc. You can use \path{gp2c} directly from this directory or you can install it by running \cmd{make install} as root. If you do not install it, you can run it from the \path{gp2c} directory by typing \cmd{./gp2c} \section{A \gpcc\ tutorial} \subsection{How can I compile and run my scripts?}\label{compile_and_run} The simplest way to use \path{gp2c} is to call \path{gp2c-run}. If you want to know what happens in detail, see next section. To make the examples easier to follow, please move to the \path{gp2c} directory and link the root of your PARI source there: \cmd{ln -s .../pari .} As an example, we will take the file \path{pari/examples/squfof.gp}, which is a simple implementation of the well-known SQUFOF factoring method of D.~Shanks. We just run the command: \cmd{./gp2c-run pari/examples/squfof.gp} After a little processing we get a GP session. But this session is special, because it contains the compiled \gp{squfof} function. Hence we can do the following: \begin{verbatim} parisize = 4000000, primelimit = 500000 ? squfof(3097180303181) [419] i = 596 Qfb(133225, 1719841, -261451, 0.E-28) %1 = 1691693 \end{verbatim} Let's try a bigger example: \begin{verbatim} ? squfof(122294051504814979) [20137] *** the PARI stack overflows ! current stack size: 4.0 Mbytes [hint] you can increase GP stack with allocatemem() ? allocatemem() *** Warning: doubling stack size; new stack = 8.0 MBytes. ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) %2 = 73823023 \end{verbatim} We need a large stack because by default \path{gp2c} does not generate code to handle the stack (the so-called \pari{gerepile} code). To instruct \path{gp2c} to add \path{gerepile} code automatically, we must use the \cmd{-g} option. So quit this GP session and launch a new one with -g. Oh well, before that type \cmd{ls pari/examples/squfof.gp*} \begin{verbatim} pari/examples/squfof.gp pari/examples/squfof.gp.run pari/examples/squfof.gp.c pari/examples/squfof.gp.so pari/examples/squfof.gp.o \end{verbatim} These are the files generated by \path{gp2c-run}: \begin{itemize} \item pari/examples/squfof.gp.c is the C file generated by \path{gp2c}. \item pari/examples/squfof.gp.o is the object file generated by the C compiler. \item pari/examples/squfof.gp.so is the shared library generated by the linker. \item pari/examples/squfof.gp.run is a file that contains the commands needed to load the compiled functions inside GP. \end{itemize} It is the shared library which is used by GP. Now let's continue: \cmd{./gp2c-run -g pari/examples/squfof.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) %1 = 73823023 \end{verbatim} This time it works with no difficulty using the default stack. We would like to know how much faster the compiled code runs, so we need to load the non compiled \gp{squfof} file in GP: \begin{verbatim} ? \r pari/examples/squfof.gp *** unexpected character: squfof(n)=if(isprime(n),retur ^-------------------- \end{verbatim} Why?? Because \gp{squfof} already exists as an installed function and GP refuses to overwrite it. To solve this problem, we will add a suffix to the name of the compiled function under GP. Quit the session and type: \cmd{./gp2c-run -g -s\_c pari/examples/squfof.gp} Now the function squfof is named squfof\_c instead, so we can do \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \r pari/examples/squfof.gp ? # timer = 1 (on) ? squfof(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) time = 5,810 ms. %1 = 73823023 ? squfof_c(122294051504814979) [20137] [20137, 3445] i = 46474 Qfb(321233929, 131349818, -367273962, 0.E-28) time = 560 ms. %2 = 73823023 \end{verbatim} So the compiled version is more than ten times faster than the noncompiled one. However for more complex examples, compiled code usually runs only three times faster on average. An extra trick: once you have run \path{gp2c-run} on your script, it is compiled and you can use the compiled version outside \path{gp2c-run} in any GP session by loading the file with extension \path{.gp.run}. For example quit the \path{gp2c-run} session and start \path{gp} and do \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \r pari/examples/squfof.gp.run \end{verbatim} Now you have access to the compiled function \gp{squfof\_c} as well. \subsection{How can I compile directly with \gpcc ?}\label{compile_directly} Now we want to compile directly with \path{gp2c} to understand what happens. We should run the command {\bf ./gp2c pari/examples/squfof.gp \verb!>! squfof.gp.c} This creates a file squfof.gp.c in the \path{gp2c} directory. Now read this file with your favorite editor. The first line is highly system-dependent, but should be similar to: {\small \begin{verbatim} /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o -O3 -Wall -I/usr/local/include pari/examples/squfof.gp.c && /usr/bin/gcc -o pari/examples/squfof.gp.so -shared pari/examples/squfof.gp.o"; -*-*/ \end{verbatim} } This is the command needed to compile this C file to an object file with the C compiler and then to make a shared library with the linker. If you use \path{emacs}, typing 'M-x compile' will know about this command, so you will just need to type {\tt Return} to compile. The second line is \begin{verbatim} #include \end{verbatim} This includes the PARI header files. It is important that the header files come from the same PARI version as GP, else it will create problems. The next lines are {\small \begin{verbatim} /* GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so"); */ \end{verbatim} } The characters "GP;" denote a command that should be read by GP at start-up. Here, the \gp{install()} commands above must be given to GP to let it know about functions defined by the library. \path{gp2c-run} copy such commands to the file \path{./pari/examples/squfof.gp.run}. Please read the entry about the \gp{install()} command in the PARI manual. The \gp{init\_squfof} function is an initialization function that is created automatically by \gpcc\ to hold codes that is outside any function. Since in our case there are none, this is a dummy function. In other cases, it is essential. The next lines are \begin{verbatim} GEN squfof(GEN n, long prec); void init_squfof(void); /*End of prototype*/ \end{verbatim} This is the C prototypes of your functions. The rest of the file is the C code proper. For teaching purpose, let's run the command {\bf ./gp2c -s\_c pari/examples/squfof.gp \verb!>! squfof2.gp.c} and look at the difference between squfof.gp.c and squfof2.gp.c: \cmd{diff -u squfof.gp.c squfof2.gp.c} {\small \begin{verbatim} --- squfof.gp.c Tue Feb 26 13:44:42 2002 +++ squfof2.gp.c Tue Feb 26 13:44:49 2002 @@ -1,8 +1,8 @@ /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o -DMEMSTEP=1048576 -g -Wall -Wno-implicit -I/usr/local/include pari/examples/squfof.gp.c && /usr/bin/ld -o pari/examples/squfof.gp.so -shared pari/examples/squfof.gp.o"; -*-*/ #include /* -GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); -GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so"); +GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so"); +GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so"); */ GEN squfof(GEN n, long prec); void init_squfof(void); \end{verbatim} } If you are not familiar with the \path{diff} utility, the above means that only the two lines starting with \gp{GP;install} have changed. In fact \gp{squfof} is still named \gp{squfof} in the C file, but the install command tells GP to rename it \gp{squfof\_c} in the GP session. \subsection{Using \gpcc\ to find errors in GP scripts}\label{find_errors} The \path{gp2c} compiler can also be used to find errors in GP programs. For that we should use the -W option like in {\bf ./gp2c -W pari/examples/squfof.gp \verb!>! squfof.gp.c} \begin{verbatim} Warning:pari/examples/squfof.gp:7:variable undeclared p Warning:pari/examples/squfof.gp:11:variable undeclared dd Warning:pari/examples/squfof.gp:11:variable undeclared d Warning:pari/examples/squfof.gp:11:variable undeclared b ... Warning:pari/examples/squfof.gp:45:variable undeclared b1 \end{verbatim} This option lists variables that are used but not declared. It is important to declare all your variables with \gp{my()}, or with \gp{global()}. For \gpcc , undeclared variables are taken to be ``formal variables'' for polynomials. For example if you write a function to build a second degree polynomial like \begin{center} \verb!pol(a,b,c)=a*x^2+b*x+c! \end{center} you must not declare 'x' here, since it stands for the formal variable \gp{x}. \subsection{Using compiled functions in a new program}\label{compiled_in_new_program} One you have successfully compiled and tested your functions you may want to reuse them in another GP program. The best way is to copy the install commands of the functions you use at the start of the new program so that reading it will automatically load the compiled functions. As an example, we write a simple program \path{fact.gp} that reads {\small \begin{verbatim} install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } and run GP: \begin{verbatim} parisize = 4000000, primelimit = 500000 ? \rfact ? fact_mersenne(67) i = 2418 Qfb(10825778209, 4021505768, -13258245519, 0.E-28) %1 = 193707721 \end{verbatim} So all goes well. But what is even better is that \gpcc\ understands the \gp{install} command and will be able to compile this new program. Also this particular example will fail because as stated above, PARI/GP already has a \pari{squfof} function, and the linker will pick the wrong one, which is unfortunate. So use the -p option to \path{gp2c-run} to change \gp{squfof} to \gp{my\_squfof}. \cmd{ ./gp2c-run -pmy\_ -g pari/examples/squfof.gp} This option prefixes my\_ to every GP name in the program so as to avoid name clashes. Change \path{fact.gp} to {\small \begin{verbatim} install("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so"); fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } and run \cmd{./gp2c-run -g fact.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? fact_mersenne(67) i = 2418 Qfb(10825778209, 4021505768, -13258245519, 0.E-28) %1 = 193707721 \end{verbatim} Nice isn't it? But it gets even better: instead of writing the \gp{install} command directly in your script you can just load the \path{squfof.gp.run} using \verb!\r!: just change \path{fact.gp} to {\small \begin{verbatim} \r ./pari/examples/squfof.gp.run fact_mersenne(p)=squfof(2^p-1) \end{verbatim} } \subsection{Hand-editing the C file generated by \gpcc} If you have some experience in PARI programming, you may want to manually edit the C file generated by \gpcc , for example to improve memory handling. Here some tips: \begin{itemize} %\item The C file created with gp2c-run is name \textit{file}.gp.c. To avoid %subsequent run of gp2c-run accidently clobbering it, it is advised to rename %this file to \textit{file}.c, and change the \gp{install()} \item If you preserve the \gp{install()} at the start of the file, you can use the command \cmd{gp2c-run \textit{file}.c} to recompile your file and start a new GP session with your functions added, just as you use \cmd{gp2c-run} with GP scripts. \item More generally, \cmd{gp2c-run} automatically passes any line in the C file starting with 'GP;' to GP at start-up. \item As explained in Section~\ref{compile_directly}, under \textbf{emacs} you can type 'M-x compile' to recompile the shared library. \end{itemize} \section{Advanced use of \gpcc}\label{advanced} \subsection {\gpcc\ types} Internally \gpcc\ assign types to objects. The most common types are given below: \begin{tabular}{l|l} name & description \\ \hline \gp{void} & like in C \\ \gp{bool} & boolean, true (1) or false (0) \\ \gp{negbool} & antiboolean, true (0) or false (1) \\ \gp{small}& C integer \pari{long} \\ \gp{int} & multiprecision integer \\ \gp{real} & multiprecision floating point \\ \gp{mp} & multiprecision number \\ \gp{var} & variable \\ \gp{pol} & polynomial \\ \gp{vecsmall} & vector of C long (\pari{t\_VECSMALL}) \\ \gp{vec} & vector and matrices (excluding \gp{vecsmall})\\ \gp{list} & GP lists \\ \gp{str} & characters string as a \pari{char *}\\ \gp{genstr} & characters string as a \pari{GEN} (\pari{t\_STR})\\ \gp{gen} & generic PARI object (\pari{GEN})\\ \gp{lg} & length of object (returned by \gp{length}) \\ \gp{typ} & type of object (returned by \gp{type}) \\ \end{tabular} \begin{table}[hbpt] $$ %HEVEA \begin{toimage} \unitlength=1.mm \begin{picture}(12,50)(-6,0) \put(6,50){\makebox[0mm]{gen}} \put(6,44){\line(0,1){5}} \put(6,40){\makebox[0mm]{mp}} \put(-2,44){\line(1,1){5}} \put(-3,40){\makebox[0mm]{vec}} \put(-9,44){\line(2,1){12}} \put(-9,40){\makebox[0mm]{pol}} \put(-9,34){\line(0,1){5}} \put(-9,30){\makebox[0mm]{var}} \put(12,30){\makebox[-1.5mm]{real}} \put(12,34){\line(-1,1){5}} \put(0,30){\makebox[-1.5mm]{int}} \put(0,34){\line(1,1){5}} \put(0,20){\makebox[1mm]{small}} \put(0,24){\line(0,1){5}} \put(0,10){\makebox[1mm]{bool}} \put(-8,17){\line(1,1){4}} \put(-15,15){\makebox[1mm]{negbool}} \put(-4,11){\line(-1,1){4}} \put(0,14){\line(0,1){5}} \put(0,00){\makebox[1mm]{void}} \put(5,01){\line(1,4){7}} \put(0,04){\line(0,1){5}} \end{picture} %HEVEA \end{toimage} %HEVEA \imageflush $$ \caption{Types preorder}\label{preorder} \end{table} Types are preordered as in Table~\ref{preorder}. The complete preorder known by \gpcc\ can be accessed by running \cmd{gp2c -t}. Variables are typed. A variable can only take values having a type equal or lower than its type. By default, variables are of type \gp{gen}. \subsection{Type declaration} To declare a variable as belonging to type \gp{type}, use: \begin{quote} \textit{function}(x\textit{:type},y\textit{:type}=2) \\ my(x\textit{:type}, y\textit{:type}=2) \\ global(x\textit{:type}, y\textit{:type}=2) \\ for(i\textit{:type}=... \end{quote} To declare several variables of the same type \gp{type} at once, use: \begin{quote} my(x, y=2)\textit{:type}\\ global(x, y=2)\textit{:type} \end{quote} You can even mix the two ways: \begin{quote} my(x, y:\textit{type2}=2)\textit{:type1} \end{quote} will declare \gp{x} to be of type \gp{type1} and \gp{y} of type \gp{type2}. \subsection{Effect of types declaration on default values} Under GP, all GP variables start with a default value, which is \gp{0} for a local variable and \gp{'v} for a global variable \gp{v}. The \gpcc\ compiler follows this rule for variables declared without a type. However, when a variable is declared with a type, \gpcc\ will not assign it a default value. This means that the declaration \gp{my(g)} is equivalent to \gp{my(g:gen=0)}, but not to \gp{my(g:gen)}, \gp{my(g)} is equivalent to \gp{my(g:gen='g)}, but not to \gp{my(g:gen)}, and \gp{f(g)=...} is equivalent to \gp{f(g:gen=0)=...}, but not to \gp{f(g:gen)=...}. This rule was chosen for several reasons: \begin{itemize} \item The default value (\gp{0} or \gp{'v}) might not be an object suitable for the type in question. For example, \gp{my(v:vec)} declares \gp{v} as being of type \gp{vec}. It would make no sense to initialize \gp{v} to \gp{0} since \gp{0} does not belong to type \gp{vec}. Similarly \gp{global(N:int)} declares \gp{N} as being of type \gp{int}. It would make no sense to initialize \gp{N} to \gp{'N} since \gp{'N} does not belong to type \gp{int}. \item This allows defining GP functions with mandatory arguments. This way, GP will issue an error if a mandatory argument is missing. Without this rule, there is no way to tell apart \gp{0} from a missing argument. \item This allows telling \gpcc\ not to generate useless default values. \end{itemize} \subsection{Type casting} Sometimes, we know a more precise type than the one the transtyping algorithm can derive. For example if \gp{x} is a real number, its logarithm might be complex. However, if we are sure \gp{x} is positive, the logarithm will be real. To force an expression to belong to type \gp{type}, use the syntax: \\ \textit{expr}\textit{:type}\\ \gpcc\ will check types consistency and output warnings if necessary. For example\\ \gp{f(x:int)=my(r:real); r=log(x\^{}2+1)}\\ \gpcc\ will complain that the logarithm might not be real. Since \gp{x\^{}2+1} is always positive, we can write:\\ \gp{f(x:int)=my(r:real); r=log(x\^{}2+1):real} \subsection{Example of optimisation} Declaring the types of variables allow \gpcc\ to perform some optimisations. For example, the following piece of GP code \begin{verbatim} rho(n)= { my(x,y); x=2; y=5; while(gcd(y-x,n)==1, x=(x^2+1)%n; y=(y^2+1)%n; y=(y^2+1)%n ); gcd(n,y-x) } \end{verbatim} generates the following output: \begin{verbatim} GEN rho(GEN n) { GEN x = gen_0, y = gen_0; x = gen_2; y = stoi(5); while (gequal1(ggcd(gsub(y, x), n))) { x = gmod(gaddgs(gsqr(x), 1), n); y = gmod(gaddgs(gsqr(y), 1), n); y = gmod(gaddgs(gsqr(y), 1), n); } return ggcd(n, gsub(y, x)); } \end{verbatim} The functions \pari{gsqr}, \pari{gaddgs}, \pari{gmod}, \pari{ggcd} are generic PARI functions that handle \gp{gen} objects. Since we only want to factor integers with this method, we can declare \gp{n}, \gp{x} \and \gp{y} of type \gp{int}: {\noindent\tt rho(n\textit{:int})=\\ \verb!{!\\ \verb! my!(x\textit{:int},y\textit{:int});} \begin{verbatim} x=2; y=5; while(gcd(y-x,n)==1, x=(x^2+1)%n; y=(y^2+1)%n; y=(y^2+1)%n ); gcd(n,y-x) } \end{verbatim} The new C code output by \gpcc\ is: \begin{verbatim} GEN rho(GEN n) /* int */ { GEN x, y; /* int */ if (typ(n) != t_INT) pari_err(typeer, "rho"); x = gen_2; y = stoi(5); while (gequal1(gcdii(subii(y, x), n))) { x = modii(addis(sqri(x), 1), n); y = modii(addis(sqri(y), 1), n); y = modii(addis(sqri(y), 1), n); } return gcdii(n, subii(y, x)); } \end{verbatim} Now, the code now uses the more specific functions \pari{sqri}, \pari{addis}, \pari{modii} and \pari{gcdii}. The most efficient way to use typing is to declare some variables of type \gp{small}. This way, these variables will be implemented by C \pari{long} variables, which are faster than PARI integers and do not require garbage collecting. However, you will not be protected from integer overflow. For that reason, \gpcc\ will automatically declare some loop indices of type \gp{small} when the range cannot cause overflow. Sometimes \gpcc\ can be too conservative but you can force a loop index to be \gp{small} with the syntax \gp{for(i:small=a,b,...)}. \subsection{Types and member functions} For use with members functions, \gpcc\ provides the following types: \begin{description} \item[nf] for ordinary number fields, i.e., a result given by the GP function \gp{nfinit}. \item[bnf] for big number fields, i.e., a result given by the GP function \gp{bnfinit} which includes class and unit group data. \item[bnr] for ray class groups, i.e., a result given by the GP function \gp{bnrinit}. \item[ell] for elliptic curves, i.e., a result given by the GP function \gp{ellinit}. \item[gal] for galois extensions, i.e., a result given by the GP function \gp{galoisinit}. \item[prid] for prime ideals, i.e., a component of the result given by the GP function \gp{idealprimedec}. \end{description} Members functions on typed objects are much more efficient. \section{Common problems} \subsection{Meta-commands.} Meta-commands (commands starting with a \verb!\!) other than \verb!\r! are currently ignored by \gpcc, though a warning will be issued, because it is not clear what they should do in a compiled program. Instead you probably want to run the meta-command in the GP session itself. The meta-command \verb!\r!\textit{include} is replaced with the content of the file \textit{include} (or \textit{include}.gp) when \gpcc\ reads the file. If you would prefer \gpcc\ to link \textit{include}.so to the program instead, see Section~\ref{compiled_in_new_program}. \subsection{Unsupported functions.}\label{unsupported_funcs} Some GP functions are not yet available to C programs, so the compiler cannot handle them. If you use them you will get the error "unhandled letter in prototype". These are currently \gp{forfactored} and \gp{forsquarefree}. The functions \gp{forell}, \gp{forsubgroup} and \gp{forqfvec} are currently not implemented as an iterator but as a procedure with callbacks, which limits what you can do inside the loop. The \gp{forstep} function is supported when the step is a number. If it is a vector, you must add a tag \gp{:vec} to make GP know about it like in \begin{verbatim} f(x)= { my(v); v=[2,4,6,6,6,6,6,2,4,6,6] forstep(y=7,x,v:vec,print(y)) } \end{verbatim} This is not needed if the step is a vector or a variable of type vec, but is needed if the step is only an expression which evaluates to a vector. Some functions are passed to GP by \path{gp2c-run} at start-up (using the \pari{GP;} syntax) instead of being translated in C: \gp{install} and \gp{addhelp}. In practice, they can be considered as supported. Also the functions \gp{read, eval, kill} may compile fine but have a surprising behaviour in some case, because they may modify the state of the GP interpreter, not of the compiled program. Please see Section~\ref{global_variables} for details. For example \verb!f(n)=eval("n^2")! is very different from \verb!f(n)=n^2!. To read files at compile-time use \verb!\r! instead of \gp{read}. \subsection{Dynamically-scoped local variables.}\label{dynamic_variables} Currenlty \gpcc\ does not support dynamically-scoped local variables declared with \gp{local()}. Instead \gp{local()} is treated as an alias for \gp{my()} which declares statically-scoped local variables. Supporting dynamically-scoped local variables is cumbersome to do in C. \subsection{Memory handling and global variables.}\label{global_variables} While a lot of work has been done to ensure that \gpcc\ handles global variables properly, the use of global variables is still a lot of trouble, so try to avoid them if you do not understand the implications on memory handling. First, there is a common practice to use undeclared variables as formal variables, for example we assume \gp{x='x} and write \gp{a*x+b} instead of \gp{a*'x+b}. So \gpcc\ will not raise an undeclared variable to the rank of global variable unless you declare it with the \gp{global()} command, or you use it at toplevel (i.e. outside any function). See also Section~\ref{find_errors} Second, global variables seen by a compiled function are C variables, not GP variables. There is no connection between the two. You may well have two variables with the same name and a different content. Currently GP knows only how to install functions, not variables, so you need to write compiled functions in order to access global variables under GP. Basically, global variables are allocated in the main stack which is destroyed each time GP prints a new prompt. This means you must put all your commands on the same line. Also global variables must be initialized using the \gp{init\_}\verb!! function before being used, and are only supported with the -g flag. So you end up doing \cmd{gp2c-run -g global.gp} \begin{verbatim} parisize = 4000000, primelimit = 500000 ? init_global();myfunction(args); \end{verbatim} Note that nothing prevents you from calling \gp{init\_global} in the GP program. In that case, you can omit the parentheses (i.e, write \gp{init\_global}, not \gp{init\_global()}) so that you can still run your noncompiled program. Another way to handle global variables is to use the \gp{clone} function which copies a PARI object to the heap, hence avoids its destruction when GP prints a new prompt. You can use \gp{unclone} to free a clone. Please read the PARI/GP manual for more information about \gp{clone}. A good use of \gp{clone} is for initializing constant variables: for example in \path{test/gp/initfunc.gp}, the vector \gp{T} is initialized by \begin{verbatim} T=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]) \end{verbatim} You must still run the \gp{init\_}\verb!! after starting GP, but after that you can use \gp{T} safely. GP itself currently does not know about \gp{clone} and \gp{unclone}, but you can use dummy functions \begin{verbatim} clone(x)=x unclone(x)=while(0,) \end{verbatim} when running uncompiled. \subsection{Support for \pari{t\_VECSMALL}} When accessing the component of a \pari{t\_VECSMALL}, it is necessary that that the object has been declared of type \gp{vecsmall}. For example \gp{ my(v); v = vecsort(V,,1); print(v[1]) } does not work, but \gp{ my(v:vecsmall); v = vecsort(V,,1); print(v[1]) } or \gp{ my(v:vecsmall); v = vecsort(V,,1); print(v:vecsmall[1]) } works. \subsection{GP lists} GP lists and maps are not fully supported by \gpcc . A partial support is available with the \gp{list} type. You must tell \gpcc\ that a variable will contain a list or a map by using \gp{L:list} inside a declaration, where \gp{L} is the name of the variable as explained in Section~\ref{advanced}. Currently, assigning to a list element (\gp{L[2]=x}) will not work and lists and maps will not be freed unless you explicitly use \gp{listkill}. Note: The PARI user's manual states that lists are useless in library mode. \subsection{The \gp{install} command} The \gp{install} command is interpreted as a \gpcc\ directive. This allows using installed function in compiled programs, see Section~\ref{compiled_in_new_program}. However this has some side-effects: \begin{itemize} \item If present, the \gp{lib} argument must be a string, not an expression that evaluate to a string. \item The \gp{install} command is not compiled, instead it is added to the list of functions to install. \end{itemize} \subsection{What about \pari{main()} ?} There are two different issues with \pari{main()}: first this is reserved function name in C, so using it with \gpcc\ will cause a name clash. To avoid this, either rename it or use the flag -p. Secondy \gpcc\ has no support for generating stand-alone GP programs. However adding manually a \pari{main()} C function is not difficult in general. \section{Command-line options of \gpcc} Here is a brief description of the main options of \path{gp2c}, which can be seen with \path{./gp2c -h}. In Section~\ref{compile_and_run} we saw how to use the \path{-g} option. \begin{itemize} \item -g tells \gpcc\ to generate \pari{gerepile} calls to clean up the PARI stack and reduce memory usage. You will probably need this option, although the C code will be easier to read or hand-edit without it. \item -o\textit{file} tells \gpcc\ to write the generated C file to the file \textit{file} instead of the standard output. \item -iN allows you to change the indentation of the generated C file. So if you want 4 spaces, just use the \path{-i4} option with \path{gp2c}. The default is 2. \item -C adds code to perform range checking for GP constructs like \gp{x[a]} and \gp{x[a,b]}. This also checks whether \gp{x} has the correct type. By default \gpcc\ does not perform such check, which can lead to a runtime crash with invalid code. This option causes a small runtime penalty and a large C code readability penalty. \item -L adds compiler directives to the code so that warning and error found by the compiler are prefixed with the line number in the original GP file instead of the C file. \item -W is useful for debugging the .gp file, in the sense that it detects if some local variables are undeclared. For example, if the file \path{algorithm.gp} has a routine like \begin{verbatim} radical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i]) \end{verbatim} The variable 'F' is undeclared in this routine, so when running \path{gp2c} with the \path{-W} option it prints \noindent{\bf Warning:algorithm.gp:1:variable undeclared F} At present, an undeclared variable is taken to be a "formal variable" for polynomials by \path{gp2c}, so do not declare it if that is what you intend. For example in \verb!pol(a,b,c)=a*x^2+b*x+c! you must not declare \gp{x} since it stands for the formal variable \gp{'x}. \item -p\textit{prefix} A problem with C is that it is subject to name clashes, i.e., if a GP variable in your routine has the same name as a C symbol in the pari library, the compiler will report strange errors. So this option changes ALL user variables and user routine names by adding a prefix \textit{prefix} to them. For example the GP routine \gp{add(x,y)} with \cmd{-pmy\_} will become the C function \pari{my\_add(x,y)}. Try this option each time the compiler fails to compile \path{gp2c} output to see if there is a name conflict. If this is the case, change the name in your GP script. It may be difficult to find conflicting names if your compiler is not verbose enough and if you are not familiar with the PARI code and C in general. Example of conflicting names are \pari{top},\pari{bot},\pari{prec},\pari{un}, but there are thousands of others and they may be system-dependent. \item -s\textit{suffix}: Add \textit{suffix} to the names of the installed functions under GP. This is to avoid clashes with the original GP script. For example, if you want to compare timings you may want to use the option \cmd{-s\_c} This does not affect the C code, only the \gp{install} commands. \item -S: Assume strict prototypes for functions. This is related to the 'strictargs' GP default. This makes all arguments of functions defined in the file mandatory unless the function supplies an explicit default value. This does not affect the C code, only the prototype code in the \gp{install} commands. In this example, the prototype code changes from "D0,G,DG" to "GDG". \begin{verbatim} test(data,flag=0)={CODE} \end{verbatim} \item -h gives the help. \item -v gives the \gpcc\ version. \item -l prints a list of all the GP functions known by the compiler. So if a routine contains a GP routine not on this list, \path{gp2c} will show an error when trying to translate it. Reasons why a GP function may not be known by the compiler are: \begin{itemize} \item The function is not part of the PARI library. See Section~\ref{unsupported_funcs} \item You use the old PARI 1.39 function names instead of the new ones. \gpcc\ currently does not know about the 'compat' default. Use \gp{whatnow} under GP to get the current name. For example, \gp{mod()} is now \gp{Mod()}. \item You use a GP function that does not exists in the GP version \gpcc\ was compiled against. Please recompile \gpcc\ against this GP version. Normally no functions are added between two stable releases of GP with the same minor version number (say 2.1.1 and 2.1.2) so there is no need to recompile \gpcc\ when you upgrade. But if you use the developement versions, you need to recompile. Also some new developement versions may break old versions of \gpcc, so upgrade gp2c\ at the same time. However, if you want to compile scripts which do not use the new functions, you do not need to recompile. Note that you may use the GP environment variables to tell \path{gp2c-run} which GP to use. \end{itemize} \item -t Output the table of types known to the compiler, see Section~\ref{advanced}. \end{itemize} \end{document} gp2c-0.0.14/doc/gp2c.10000644000175000017500000000412513623476440011045 00000000000000.TH GP2C "1" "January 2005" "GP to C compiler" PARI .SH NAME GP2C \- The GP to C compiler .SH DESCRIPTION gp2c [-ghfltvydWSTGV] [-i N] [-o ] [-p ] [file.gp] gp2c is a program that translate GP code to C code that use the libpari library. It tries to generate code looking like the PARI source code. .SS "user option:" .HP \fB\-o\fR : Place output in file . .HP \fB\-g\fR : Generate automatic garbage collection code. .HP \fB\-iN\fR: Set indentation level to N spaces (default 2). .HP \fB\-W\fR : Output warning about types and global variables usage. .HP \fB\-C\fR : Generate range checking code. .HP \fB\-L\fR : Generate #line directive for better C compiler messages. .HP \fB\-p\fR : Prefix user-defined symbol by to avoid conflict. .HP \fB\-s\fR : Add suffix to GP install names of functions. .HP \fB\-S\fR: Assume strict declarations for functions. .SS "query options:" .HP \fB\-h\fR : This help. .HP \fB\-f\fR : Dump information about functions to stderr. .HP \fB\-l\fR : Output the list of functions known to the compiler. .HP \fB\-t\fR : Output the table of types known to the compiler. .HP \fB\-v\fR : Output version information and exit. .SS "debugging options:" .HP \fB\-d\fR : Increase debugging level. .HP \fB\-y\fR : Switch parser to debug mode. .HP \fB\-T\fR : Output syntactic tree in treetool format. .HP \fB\-TT\fR : Output syntactic tree in VCG/GRL format. .HP \fB\-G\fR : Generate GP code in place of C code. Don't smile. .HP \fB\-V\fR : Do not clean up variables. .PP file.gp: file to be processed, default to stdin. The generated C code is output to stdout unless option \fB\-o\fR is used. See the script \fIgp2c-run\fR for an automated compilation process. .SH "COPYING" Copyright 2000-2018 The PARI Group .PP GP2C is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for GP2C. .SH "AUTHOR" Bill Allombert .SH "SEE ALSO" .IR gp2c-run(1), .IR gp2c-dbg(1), .IR gp(1), .IR gcc(1) gp2c-0.0.14/doc/gp2c.pdf0000644000175000017500000063027514220021655011455 00000000000000%PDF-1.5 %ÐÔÅØ 3 0 obj << /Length 1605 /Filter /FlateDecode >> stream xÚÕYKsœF¾ï¯àUa¼gN)IQ§ì*%–“ƒíbÑŠ °Vöß§ç +d•]–%T hf¦¿îþú±§—«!*ÀÌYpyŒå*‚!¢Dp¹Þ‡'uÓ„„EömÅp]ï²¾hü«¾‰>^þ«ééj˜r„ ·ÎfK2'F“6Òœ#c†‘Ô*ˆ‰BJ'}º‡¥aŸÓ¢,Í Oʲ©"¢Â+8€ ó¶wi½v7'm‘{Ù #—fyßfË€Ä5†(bŒ»Þ¤mìûšÈüMBˆ;'ƒs2D™ð礰 ¦AÌÒ‰v«œ‡}î.ÿiA„ù0}A]¬Ü8Š5ááß7©Q@Ѱ>"“¸‚½Ô]ìf+“i‚¡ŸÎ;XQ¬'¢1˜”iZXäýQƒ¾á«ºëÓ²,êÍÂY„@Zâ»g™m@4J¸„Pó$ù®¦õ·[ sÅB²9à—X4f6%Φ' à‰á’!9J¿ë›¶HÁ• ?Ž17'…8ÓÏÌIFsþÖ˜¸ÿ¢,ÌR¦”†¯Ü%¡°©¶Eá0w2.ˆàe»ó•‰½»ï²¶Øö8˜Vú›c}ò&pæê‘¯Uo]´yÖ—^Û¢¿Y°?'š>äç&æÈ$æ˜ßÇ{-2Ì"ceyö êz×-G27‡HAà~6 µ[Ì>$˜9a@½mÓvîyáÁÿõ½ó®b¨”~Ÿ·°‹4‡£Âf¨8§±’{§¿ÞÕ6›é”:Ù:¿uÿoÛfÓ¦UKŒSÁïÅ üÂ4Î×Eïõ aã=üì`¦2w÷›¼Î۴ϽծLÌì—ü^q¤Ùƒn!Åì‘ù@ ¡\¢]7p³í‹ªè¼5?Ww< ×Ç è‰“eEÅ’Í»£b´Êg ßd­€þŸ‹Å¶x±e`_Ù¼c`.y5UeCRÙòâªÌ+ÃñšÎq±YrÖš¢ÉƺÿMÞ§1Ô6@ØÁ¡Õ/8Nˆ—DlÌïên·uîÓ´ý‚–ÑP<—÷=[6RþÏû:­Š zô}Üe¯nÙØ3Ó3øzHð'âéàÅØè²UÓî]àß@+‡Ãu9–é#lÊæê>í~ú ÌývâŽÞ›Ö³²Hpy¨ò@bu~¹úwe-I€¡VL×* R!Jƒ¬Z½ÿ˜kx»# on­d@Q©4Ü•ÁÛÕ«S3×›mt‚¸’v%L±Ûñ¯ó³·oN^¿^à®ê)F9_J·ÔwÃÌLæô±I†3ô¦e14¦Aš¿Àòðëºã­rH¿Ð?:ßd`Pj!… º8,¼…b”¨QØ'ˆÉ^TÙ :„ØOW$ГÇ)GyÌüäÖ \eÒìú¥×ˆ =àR¥Eý!á üáeéd¦D5~¡àÝ©}G ͧ;??f¢|?têÛa £Ø=m;ãKò@ÛnÆc‰¥Æ£Íú”D83<UbÏc|˜ÏK>Îçͯ‡¯G\Ê…sÌö ñ‰a¦ƒB‰´)âÉù–3ÝáviËùô€"Éð$Íœ«5~ji°×Ô]¶ifÊël>Ýäî¡ÉVö¦oÓº+S×~™†F͵‹ùµÌÏBÊŽ íG7~™3¿…™Å¾­‡³A<ã¢Ê%{ ä’Ö›œÃü£€¨ÍäQXÒ›Å÷î™›ù£«±Y4OC=xåjx¼ë†Gvð;,å^^DpÊ“?_¹Çݾë¡çX Ì¦=¸¹¤BMÑ•í¦¦Eö;,LÜóèÈÛÞ©|zÿ+WíS endstream endobj 17 0 obj << /Length 2650 /Filter /FlateDecode >> stream xÚÅYm㸠þ¾¿b€¨LI–ü²@qØk»wÓ{×½YE¯<‰’øÆ±SÛ̯ٙ/)Êo‰2™+ 4_LÉ4%RäCŠùöþÝâ£HoR–F2º¹_߈0e±Šnb1!Ó›ûÕÍ?ƒû­™Í¥ÖÁ.ËK¤T­¾Î`"+g2 Úlãª5½^Uy¹¡©v›7DÑSmEãfÏ$0fEãÞÞ/«ÝþÐfm^•îˬt,íLîë¼\‡•™ýëþÏ7s¡Xª<Kµ¦]qkÕ¡žÍCÂW0z*iPW‡6/MC£§öèÞ´¨*ûÚ˜ç¼i­8ñÝNP {&4l6Waܵôf—áGdESõ3 ÷ôÃaãí±¨Ÿî½YÖù¾…ðÝD¹¨;´fÂF³åLÆÁãLG=œü™kN¢ý‡`õ-íé"kMÓëWÜ´Õ§†‰œ¬,‚²›y‚Ø—YIÄ ª‡\ÅgN4ˆ/ŸÿúUY|TrälÞcÛ¶íþýb±Ïêœí²vËó‡ª^™ìðÌÖõbU=•E•­Ø¶Ý¿ÙìåÒ æ7$E¢d0§ŒY’$$S0ؽRweÓfEV±Ÿ‹>K9ãq_ۯᓙ;®¹HXè"äú5èhÖõÉÓp“d|ç·Ö@£?Æc!b–J9^~îØ’›„ÈÔ=×3;²0«¾è¸ö…GàLE=K뢙 »÷¬Íj¶yñDq&T/]ïikêNC5â %KÒaë·Ç[Ÿ<©À®QÇ…±.I¤L''[Ÿ‰Yœ¨ŽaeÔ¬ˆ<ÉÞÄóªrâ¶Ê…FÝaÜÒk‡+Ä‚‡Yw¡´µÐ” ºŠÞÊ—|"ÝùD:y (¸Ý»¸#ÝNÀbÓIO‰ӌÍ…,Ò>ŸSÃëPŸùÌX˜]Ú}"#dI]÷™y±Hê©"Ôx ö( ¤¢`Y+š%ÛÀdižhær,Éq‘¼)–Ä›bI^¥k¡$Ævñ9>‡ø˜0»DÁ'óÜ’Öƒãæ'¾†Ö©ˆÍbùs‹h©è–|^Ê„E<žš¼‡h²dC¾7uÇóCŽ#–&i¯®W@Gõ¸¯«Mí|Þ)±Vö`Ø´fo£BS^…©ª\¢ÜAõݧ/>9ÒúÊIVÆ=ÏCWÄ€ÐCCŒë.ö^Å¥¹T’E‰ºt”/o:Ë J¤ÿ—³¼€UiÄtª|X ;„²ˆ8š[åµY¶U}ôA™ñÿ0ÍÿzhšèÁÜ¿‡'#QqE(5JįåÞœJ¾“ôêÉSa»¥ú Uq k[¤¬«Ë©'‘L‹¾l²uìr½ñÕM‚%*Á})çW£ìª$è«näXW¬ÐW4ÊËÉÃàGÔàÃç;Uð)\~¿tw&¸ê…SŒÜÖË^»ÐXÝ]Ù’ê|{‡±Zi~’yCÑ;Ôo}ŠCöƒAEŸEþ`‹þ…;!@Ž–ÓCùCµïà ¶UÕ´(ç»ãí¶:TWd™i2›– ®ºÑ5Woüy0˜øÖs!jµ£È ç;Ì[oÀ¤LýWnãÁáTÒQ2µ]Q:F %*`Œ Fï׳,8B¤¾°_¸|>”>”†2[ö©…-–XI µ9t׃‰\ ˜.ÕŠ”c(R6ã¡‘jLV߬Ñïf ” >©æiº7~`¯¸ÕÎÐ2¯©É!'éIe2¨`;\’ZFECc샌bQÍòøÎƸ î-´Ð‹&ìÀ+;ëóî ã³r²xp‰]ö8 eà³0$žÆ# £øl¸¥ì,{“1y·%p4íO¼¦±s“<€ž‘R¡Š  €‰%±×|F²0NÏ´™+HLK¤·Æ>}¹ N,’~EKº£Ï×GZ¸Ýf]Qœ`\GS4Žÿˆ}! jl³†ˆMU¢lc§§5ÏÄOi;2[ZWŽþò;'¡ÙV‡bÕÓ.£áè°Ç{&zI¬‰Ñ‚k’Dà†3ðô4Ðú…iMáà«\eõêÖueÊÕÙ0¾v Y©5  ¤YO®°<%xT¢Ô5ðäãÆ†x‰Ý)/d] qb] ÿÚë7u½ÄÐá6Å®ëj‡”5-µºp0ʂȅ°‚Ï#êÙÖúøµƒ–$t54Γ—}»éäâŽ.N 0v÷¡vñ8ºfb(ì­srXÌáP‹¨Ep·¦ùþÈq°ªèYV-á Eàé /κèµêt|ô$#"åO¯RÇö¦¥©†)+>iÈœ”#£Ôï ÑoØ$fR¦CÖ™v ¦‘¤&1ÂâÐ\ðK×)ü04‡/ ÷Æq|®ËTnù‘×ã¨g…¯O9‡›t”D ,Êí ïV~_ÍBac2Öî¢ÄØÒ€‚{>HìÐŽDÛG-åo<ÆçÔËLÆíþ0xÈPlw+‘° 0yßâN(é!›?:í @$×˪xhyØâ $’dI5Ó¹h¬€Ò‰GÍûTòz…­“ÔÆ.2À`‚6–q÷oÆt0"ß9 Y¢/L›×Ù¾ë4ö%3=WnO…ƒâƸⰤ悵q½@UqùZÒ×PÀ VÀ¶m‚zÌH›çÌeMnjÇUÑs])fë,(9 “Y?qÅÓ®BÙÝ…jøT]ŠóŽ2|Ãy§:዆…ý×ãZQÊB¨#!¶ç} Œïþtÿî?Ä O endstream endobj 23 0 obj << /Length 1308 /Filter /FlateDecode >> stream xÚÅW[oÛ6~ï¯ðŠÉAÅðªË†aX‹vè°K·èC’Y¢m-²äJÔ2ï×ïP‡R,GN\,Â:4Éó}çF¾^¼¸|'ù,&qÀƒÙb5c\’ˆòYHÂx<[d³+ïJ²øf~³øaFg>c$V 'ò¹¯¸ò¾ÁŠƒ)¥_WËkª(‚sõ UYÈâH27òyÀ¤êG”¼õyKØh·w{ÉFg² †a5/ß±ø ¬ã°Ž…¸îGm¾læ¾Â3õÞ ÒKp¼Ì×k]£¬ÿJ¶»B…ލ±†Àˆ;C¾EšOíªZu9ç±³•“q?Àà¹âÀFˆŒ2JdÀÆósŸ©Pyf£ñ˜ßýöÞh’ôÅêO]¯Šê®ÁáSg¥m]ëÒg·j*,$‰¥ß'Ý8’“Ú9 S~¹¦LÚÝ_Ö]Ñ+!~:ÁVŸ¬wWWý& žKãQ¢úŽ•ã¼b$‚ªâÝ=HÑ ŸAÖG"{æ<0±]'õ»=B¸µ¾ ý5B³ò›CüøS_qŸÂ m—@û}ª8QÀ0(‘)¼< DDòùðVGxîÆ« ã”òþЩK³{äbyèíû¼t:opYZmmá¬'¡‘£èû7pšc<½-Í"Ù[äË:©÷@äд€HX`#üÖb<Æ3xÅæœ#Iñyß{~rå¤j2Xm莨çú´Ún¡R»]ì•ÛõqÅ0Ž·¢J²#æœûw+(ö¶s¸ü‡ó̱m"’ž»BÛ‹éQ^¾7Ÿçh›ˆºË°V؆8á1k‚p& …íæÏ•U¾s^½†õ æÝ§Þ\lTk7t±J.‡úÕµè¼ð•'›ÃY]žÆ×gÚý¹»ï®Î·ºÈ·¹?y;)çþ/ï€à¼w€úOßìÜw<܉Ü׉·¼S|ñvñâ…+T endstream endobj 26 0 obj << /Length 1816 /Filter /FlateDecode >> stream xÚÍËnÛFðî¯ P k½ï% ´A4}Š1C’ EE„)Rá#¶ûõÙYR¢L'A{h}°fwgç=³3|v}qõ\¤QÊR+mt½„J™Ó6rÜ2!Óèz½‰¯we·Z+%â¾Üɸìiçv%“¸ioºq¹q¹ÌáÕ lÊ·\Ø|¨z¼pO›CW֯߱Øfˆå]Ÿå+éâ¶Zk­â׫DÅÅÄÙÅͼª ѨÊ$^¬Þ]ÿ­…f©Öð+Xj iÒ£4ÎÆ7 `ÞâÊÄ»I…ÅÏuG;۬닖.’˜°™7ûCYÚÎ.\Û„Ãv¨»Kwh†¶oI:£.Æ»}8­šlsƤnj¯ Ÿk1ñ†³«ç ãÑZ2n \ðˆÝÇaÛl mæfÅ™UnDÏèÊ[UÅe¿:þùÅw¼<¹·v’9.£µqDBן®ÖFšø­Pº%ðµåUq—íUÑ]‘ìÃÁë"8ÓVÌzòä ˜É€ÆC]ÜмGã ¥|—µ,ÛïhM´ÞrÃkø'¾/=\v‡"sÚ¾l‹~h‰]ª˜‘2ð³ÄïõÂß‚™Ö’+–&*èëèöë᧨w’ÄÏÐÃEž ]±à§™âËLˆÉoYÕÙ“$Òwe×cz%2Î:ÚËjú-kȊ–ۡÎû²©r¶~A¿m±!»Ü0Ìg†ñ±huì³ã“×ö¶-û‚¶ËòÐ(_cÜ®©> ËžŠ@‡¶y_{L'Á'·eU”m6Ä,w”ç B>ÀFíF ÜŠÏfˆé³@dcŨ7>¡}œ¯3Z¼¨¬,{uÓU²(û8ø¤/ÆD'þ<“‡]}8È| u=¡â5V=à»öθøéúâã D$¹fàœÈ¸„%ÜFùþâÍ;màôd*M¢[ºÓ>‹«èÕÅË‹gXÍgRHî˜FR–‡ðÍI„)G1|æéy&XÇ\jçZý>Q¥;µ¶#žjKG¨èÆÍìø”°LêÈXË#>g šÎmp–Y)“ð’!)käѾØAeÏ6—$V×Ðî©°—gAM³TEª™––Ê`´lWþUPÅúž~4÷—¡@b¹ªÊ=†Û ’ñ8³€¶ÿ¤ÆžE_¸ü DÃlzVñYog’ˆÀ*jãKj( —ŸžWf!ÁÞS—NÎ{#¹PîÝãGÁ\JkónÉ,åÜÆV;½Dìåö= ¦¤J¥2 d…s¦‰HÂ*Š“NwÃg?A†?&=5C§î»L'pß±¥+ߊÙeZq©>ã42ëŸù¿7¬ý*Úÿ¥aíÌ*5ëY5à!Uƒ1^AÊke¨x!p|8p^@zp+þî›¶ofá¬/FÄxcëx†9rƒþî´—;W«© x˜£â_B¥Eq‚P@ÁñxÛ `ÓQ"€rßqBY€w®@øŽöÇZ.àêTS sÒÀ"îÐ ÐVÜÓ»YÂjjØ[rØ®-BõÊcíœúfØŸƒ ûê Aö¡ o.uê?â§Aê¾ÍìÛ2Ç›7¾´@3/èä>Œ~±ËŽÍ íà³û°x c˜´Sk6=ЃFfl:"6õÄ&Ÿ¡¥U—·å¡¿¤gÝwŽÂgN†^:/w¦/µ.ÉâÂ…çv±¹ô@˜ ’Ùâæ‘ŠÇÍÐwå¦XÐû «¿Ro H@,e)LpÀ×·–°yl“`ñžHYÃá!wseqÔñ“ŸL9i$S1!ß–8@â1@Q{Ú .TÞ£É3ðü±eM¼ýBNx˜}<~î›Øvd:!œ'ƒ};ˆPh3ÏÙs΄•_cIÍ (MS@0–7‚è—BÌ‹ôÔhB{ßö ¬µbÒ˜#çžB1—Lnž(.72Æ1®ì|ÎùOû˜G9–ŠS9gmè1}@׳R€|žƒñC©jÎ:×G¦†‡C¦Ò cöYká ´Ý"ÅfV|¾“çÞ§ü)G˜ Vž×SûÐ@ L×SÊfÝÔѺ¸¨*tá|6Jr d6±Ò±$ ß|$ƒ7Up¼=ôaÇö ‚dâ_gŸAh±)[Ý«ûðµSØóƒîû„Ÿ”† eN³fI, UŠO)ótq:×ø± ¦s‘05 ~Œ{ÒÊ0¯>Ì•a¾<*aå©xiRbžùN0=¯¡ ‚ Féiä6àð yíÞî² Ï.;„‘²îü -Ç^Ô|§†¥ÎÌKi·k†*D,—ÇéÕ?<{dôp@]zsiJ]±(úϦĹY,˜ENÿ°À7…@Ÿç &û’õÖ0rÞU†iꇳìoö€(4 endstream endobj 29 0 obj << /Length 2114 /Filter /FlateDecode >> stream xÚµXmsÛFþî_¡qg*1WärùæÜuzm\n&=_£™~h;74¹¶ØP¤BRv|¿¾ÀK‘íæfî>HûB,€Å°ûÝúlõÆO©H#-Ö· ?HE¬¢EìE—éb],~qÖ›²[ºA;y«³^/]ßቌš_=_Uû‰Ó}Úß6·ân'rúXÖÔö½ümýÕ%ÇÃTxáÂ#Qw;™ÑD-©„LKT”­Îû¦}\&#–® #çÇf)çT- +“TOF*ÆÎCÙoPÊÂõÓDÈ8†Ž/Ò0$þȪٷH8·ÙRÆÎ½™kË^Ó¬.JÐ@.¾©RSë ¢Ü¶ëq œª¬yšÔ œMy·©ék÷Øõzëz·tA¤® ]£ìþ‚hoö=uºM³¯ žÚÄÑ̡ܖUÆŠ÷Í%™2”‹L)4¥kµ•žUBÚ®^º/Ý¥ÊÐÉ›í®¬´ í6«‹Kš=_í»vuSÖ«»<§)×¶ µ»¬-Wús¶ÝUº[¼ 16J…òCî‰Ø­ÜÌá笪¸ûΪš<«VeWûB?ÏÞ¸ xÆ„õ×_Ó¢­ÿDÛ®™ãçv›¬Õ`q?ŒŸÙéùkæ\͸q(Bˆ)Wú`y5‰-_:¶íç@‡O¾SkvÅÒw¸c¦ûf ÅS³,¯ï©|?6´2«iÜ€AüüuJl…QðÜgìì F¦žU¢¥‘Q;°´æ^Cí6û¸$§5„ÔXc¿*o`£m!nƤ3³$51iÏywK8zi°ïæ0'€MÄ©´x¢·YÞÍ¡``8P]Ðþå Ñ·e>îÊú¬•Ä΋÷îgìEÖ&/hþ¡DGÇùuƒ¡ý@£Œ¢¸1c>AXÁN <°QC³Ã‘Ø2ß÷3w)h®?8ôèÄXaÆŽS I ñÙ­ÿ¤û}[ÏX(;z.×àá=8ºJ ?Ÿ@ÇNçqñcpRkŠË[J û¬²;Mбd?€ÁÈ*’  ,ÚæH£ù4OΕpçŠw×of¶™ O ‰xÉá©äÈÿ äôE¢Ž0sHaqó‘‹÷þ(£%8KxÃ`5¼GõTá3–æC:z R:Üú'ÄžAÕË™}¹s· Ò€Ñ܈Ց¤$˜1ÂäöáMî®ëŽA„ÙàÄzÏÍ7ú†:2¢Ö.•ºT’g=OÎÕþ¯^½sf} È„«ýŸòNŸçýí·üöä_$Ô{5ôà®ÀËz<]õÿøC¡ÉÑkÚï¯ÞX_]ÿÕ÷TƼO÷îô9ðçºqá]•9¦àwþ‰pÆ O?Ö'O„UñEÛ'=~$Lþ§„ø žB¹+©ä2¬C NkT ¤ endstream endobj 33 0 obj << /Length 1789 /Filter /FlateDecode >> stream xÚ½ÙŽÛ6ð}¿BØ>DÞ]s%’º’6@d‘>´)ºErA–䵎$ïñ÷á²äÐ9 ¤¶Èáhî‹úåúäòyÀ˜%a(ëµãó„^âD^È`í\çÎk÷‡²Éª]^,–Ü·iW^âÛ<]¼½þÝñœ¥ï±$Ðè—g º”,ò¢ùÑòê哲釴ªÞxwÚÜ­ÛõéÅéoÞÅÕÅ#„)—Å}Zo«¢¿¤v³e}{ /ûOl¼”M9¼iÞÂoÑ\c_Éàü+5xŸÍ¨½çߢÁžËg4°øáìrÆ:&èÕ³?ÈÅD٠悞UÛÜÐjÛÙQ-nÛ2'´‰´HÆ·.Ÿû‰“@ðñPŸÇ¸@I„$ôb½X á» »í7ÜM»‚ M;ÐbÖeU¦ߕÆàæ F’O‰„…aB+y¹^[Äá’qÎ ÒnJñ°ˆ…{±§O"­K”nñOKXiÓʰIµ´mS=Ì䣘Å"€…V ˆ§bw§4ô8r«²)Zº!ÝP¢3ð@iLŠÊ™E ¤otC \㻕Eg™0_ƒ¿IgêŸ ×›´¹)r¶X†žt_4$Ï:Í« âÐP¤@°0>óÃÈ •£’eUç&­‹Ü¬.™äÑÜrÇùx,öFK>ð´añ+=Þx¾¬ ôq ÝÕn8ÀÒùI›¬­ë´É5JQU=-¯^ÂS&îÐÒ¾+PMÀf*FÌ÷ø§¦:yv}òñ½è9¾#eÌ.œ ’,澓Õ'¯ßzN‡†L$±s§PkG0 â9•ó÷É_'¿`µŸq”Ï‚(Q¤BuÅ7³X-f¡à£©"`zÅt^aº1è!¶eU` 󸛥(–ç»iÕ·¢Sx×9}<ê§£~/5!¥ì·]{Ó¥u ,ÁAϱœµáèXw”õÔÉ%;ôs¿iwUN®QÈ×£ó—¯èÙnð=VåÂw?,xäj$Š#°›?­’%£3^ìRÙÊ€¦K÷Èp`+ö1ô%o´òS S™Ìó»hf¡¶äH8ïQ¯Ò®x}|D¦ÇÑã[8IW•ž vM^d4±|lm·6à—Xøþ7ñÈóÿƒÉ ~+f¡ÿ¢ž ¾µoaLøNÂãz£ÚY"÷éH‡~ÐàÛEºš³é<„Í:‰0 Ÿ˜† bäÄž ‚¿Ð`÷¬·P:"Èòª ,=tX’MU“Ð3$i£›]‚cÙu´Áƒ©à€yl¦åûcÖ8 âh«Š0 ˆ±zcC*PÇéKŸÅr_n«vµ°t~†à̋Ƭgèò}1´t¼Å_*èPjö#£ý Œ–<9—Ï­~¤PÆÇÅ~Pµ¸Á-•{Ýo|!×mWãh‡‡3z§[£ yK£jõдu í@wéŽpu~Ц\Ó‹f·dÃ]Wº®§Tï×»&3Õ_PXÁsµ+MÛHÍ€µåÅMWèf¢CÖH©›ôR7K©‡€Ê´˜~¦ž¶* Ò‹Õ…º¯ü”žÝ¿ã竳ûs› —s":‡'×éÖ¸Ùõɬï b’1€óèþA7E§IXÂP“éãR¿sd“÷´Vþ™µQãQ\OsÍ’æì}“»·ö0âùûp·ŒMÐ÷ 'šÊb3•ÉÙT¦f$=«èiʸú` JéÑw´Ðƒ‡E6o>RýÙ |>1»/o#pÜï24¨ïöýzWal<êD<@£éCцtG'S ùÖ)ÝúÔ‰‹°ˆÆî@ÇÙ–>×z*èÎZ{]'C 1³QƒÞdPÖÖ¡Öe«Ì8h‚gB•ù€¸%‘´ŒÀ²OU)”³¶“ÓÈû[ Bõ-F¿Ù® e0,Á>`Ý m=à§,…£¥p£TÆ÷ÒaÏëh§Q7Ø)¿pÏOÅ .L̨Mß4à+Ò\¥ÒÛ¤4Z¥»¡­Ó¡Ì@O­~Õ¦ùŒY´K]ãÀ/“o?÷Æ«äH]:uÒßä'EKUÙIXGØ„EᘼxÕgÝyOƒåþún>8e&}¡™}î[ríC«ôKÌ÷¾ïú……_]_4M,¶ª(ï¿ñwÛ¥¤gûaÂD@¥EQ Íù_<~ß endstream endobj 36 0 obj << /Length 2062 /Filter /FlateDecode >> stream xÚÍX[oÜ6~÷¯,¬,Z¼ŠjQI¶I³@éÆoM·g4cmu«¤©ãýõ{¥‘Ærâ¢(°ó0âå<÷ó‘¯n.®ßð4HYj„ nö—)K” ’Ø0.ÒàfüfõnI)ÃîXSãíû¯6?ßüãú³ÅW,U ¾0&4-n³®è‹ÿæ›H ~C»ßõÚ®¨ò²¨ŠaA¤ žİ'g©6´ç·Dð‘KÕí³í° Ñ œþ¥Ê»>¯ëüc¬c“À?_[Q,NŠÛ5ª÷·¸ ­ÐIbEœ^2 ®cë".…¶BiÍGš˜} ûã x*“8I'U/í4×´×ʇf‰D‡YYRã€6Ì{êÞoDæeÉ6‘‚í_?~—ùVá)óßiM½[ÚeònI6àÂÇn Àw¤ä cëЊíŠB2cäHt¬w`£yŸÅ ¥«O¹Ÿ«0Ö¤§ZZ(sñ9q<]Š{fÈëò¼åræ¸–ê †õu!¹oUBÖ@j§Š)'Ë«Ôéý6™gÜ6ó™. ›b糚H˜ç%%y<ãÏÁ*³þ.ï±"*¾žÇÒô4âc¸¦Þ #~lÅÆ¹4€ZÙÛ‘ÝwÅPP‰VO@ö¨§p­™J'Èàn@kv™2“ZÀ"ŠÏ¹& ôD²Ó–©/§ºHÆ @¾t©ÈÕ”/sñì\÷édæUôg󘂪æ"GxF Xëk¥`*,>¾§‰òÝè›ÉXx ñš>X>K?tÈë¼#˜-ÝõHr*¦×o@ÆÙyBsW™?ŠF2Ô )"~‡Ãg(¹“aq£À£é¾q¥ æòO-Å`WäõÖO»: _øßQÏÓ ¤EpÌÓù)&¬2‚®smð{øhÄU[Ž à Í¡v=¬eAÔ):_J U"F…bT(ÍŠS·(äÃZ0 èñ‹Kð1á•Gñ=m޾†Œ·±ÆóQ"ü06MvÍ\׸´r׉ªAØ‚} \Ql¼@“'b™«¿Ï;Ÿl½¥ð.P´½>Ññy²ÖËdýQðxEF×Et®¢æFÔ1B¾>ï&WQééÖB>ÉZ¶ÅpzHëÀ¹_„¯ã®á€ë:„{-qÓìÏHÈüè}pQ%ÆqÑ‘f]¢Å]®æ ·HÖTÑïãú g¸ð“@è'vý®¥w- bz˜ð~úx;´ÖéVÄÖ<˜Jb±¸µ)BUš {ª=Ø›ò ´©’Alâ‰cô¡÷h8èŒ$Î7û!?i&†ôfϼñ¾îÈg§‚GŽ7qÿš‘ívùîŠÚT4ÜhOÄ'7ó·ßÝX¨!R<çb›0}Rщ?'Fµ¸g+áámŦf LŸ0?4”B+Ÿy0y½Z‘ÄXfô³Ô§º™‡¦Ê†bëövGµYß»—8­}ÖôB<7˜­ñëœé^St l;_½Ÿk&9ƒ§®„I9)S…— M~}9=EÌT,)|å¸ó±]Õ5é罹—è3 _´Ú29wÔue ¼öC¾õ—TL ÏÁ=Ì=®¹`75aŸ¼Ê¶ýZr’ §‡“·Â>¯€œþÛé­æ.ˆ>y* ÏKê¤Áâl˜Õg/EóXv‚>Å÷wY—ûRYÜvYç> stream xÚµYKoãF¾ûWðH-ÂN¿»9@€L‚É"›1rIr )ZÖF"‰râ¿_?(‘4MicíE¤Øªúªº^ýáöæË¯%M˜$BjžÜÞ'ŒKb)O Õ„ñ<¹]&¿¤b‘1ÆUú~ù´Ð<-ê²Z.2aTzØW᥹_üvûÝ—_cI7©&¡aŸÕ#/Ã4G”‘\)?-ëæe\Ëd¤JØiÏÓdA‰êÜ–<'4gݬv!XúüVYZíÃ|–'9É5מ•ƒ×ŒY"lûÛzÁmÚV»ºØlž#Þ[% ¡‚½de°5WDYÑM*öûõª^dRcg·½ã p¾5áÙÜ-2¥ÒÿTe‹–’Ef¥Moª0¾mömx+›í¶™Ù±ØÅ%«õ“®jÇd’N4 Îh»»°rÓ¸‰¾ó9%9çI–¡ã´ºØVnìæÓíÍ7`Ÿ0k‰µ2ÑØ‚r{óËo4Yb𻄑ÛäO?u›tªJ6Éç›ß|pv8å0CÍ-Á%Õì²Ú—»õc»nê ê j¤upÁçˆsÌ´Ô­ëQ—²Oæh¸“„îìÉQjÖË¡¹&ZëëÝ'»YÿîµÛ2]×î)ÒÑû\g2‡h¨QÅÒÆÿlf¸Ç™5Œ]‡{!ž›¾A5áwSõÿvw¨ÂÛ¯TQ†þ6» è}±Ù÷fP?ãB™ëÊÉ»ºPtʉÁÊ«ˆ§)dT\¼Çú2hŒˆ1ì`¿-6p ,‘\唨«È­ð6ªüc`–Ê œçªÚE¦Eßs "îœâ¦©WS’åÎE‰¡dëºÉà)¯£Le9‘"*sëtyØ´ëÇ]U®÷Î…ó¸`é AÏjgçŒÒi1§­‰½ŽU†o3/˯”)ˆÓíêðŸ\$1iuyV¼è§·3B)Irq% )KgóRùSxð£1º]¬¦§b7#"S~¥ã#5²#Ñ…ÒˆÙëânS]Êèã9'§#í*Ü ‰SÉ:ÊÁ­=×ÍvŒù"d½ñ—y)†lB_ép8uÚCÙvl ­þá}R<ŠN¸0c2‰S†ùBn4¡òTí|„q¦”’>-nrÂ}~þôñóï¿ÿ~"çTÈ‘å1ç|-p0+ §bR53 ¡†0v%[b”ʦRÔË ŠmÑîÖ¥Ëg»XXýUnËõdÔ€±£cV>ij#v°‚Ù³pq'¹aC¸6ëýL<’9êu㕹õ ®'ûÍÑJA~©_Þ·3þLZc¸ŽZ¥ÕÄÄ"ªtZ}(vE‰Bj4 Fbˆ(ˆâsâˆå8@Ævz) ·W´ŽLZ4wÉÔPE«ªž—Ü0Âå•”dðêÚ¢óé_S•%܆éYí”—B=m䌓Ø„4 µ¬|‹“¨t™6C >ßþ4Á9s¦œŸõO°x–óÚœQ%Êxž‹ë¨RÃmÛ#Ñ .(¨ëÇ…éûŸ¾‹+Ôµ/ÔOþiJ¡Š(*æŠP§/€EÃmCC?´šAE"Äur©\; #ZÕ«ö!âpÃè©qqÂcWµ‡]í›F˜r结®›Ææ·Ÿ0|lÖžõ×U¼áÔ>Ï$§R(Ô1W2aIWÚ2³p…lc·påAÆÒö€·K€Ã)¦ù'¤¯0&OÕl Àr]/€™å3GM0A´V‰t Âs6%á[Ä«P la¤I„ƒ¬+›Cñ€™b`ó`Kù6 3äÈ;õç,Ái@:êR5÷øÀy®¥ßLálö“ŽIš”P;¦ÉM7M€fÞa5á~„F·ð¢TÖŒùÄ)°Bøf¨Ðb˜hO¥™Œ0ä ©òMáp-BñD ô”ù°"Yd’‘îª.Í ¥4ÚXÿ –åÔãµ#{ŸÇ"sCrXSP ï*}ß@™ 6úucèS{Õ¤U™D€ìú½.Gœ±XC6œJÚ·™<‡§qmBA]RŒ›d&jø…)¢ä²ÚŇã99J ø=cþbÀ\3C¨”]§l5lOMï–M¨öDº¯ÛWÐãÎLÙ›ÑË·ŒHez'8öfG¬ƒ¤S.÷ç¢ÃF„®6ì;žâ—ìÌÿ?oF F4ñ<+Ï9rmõ6\q ŒÀžJ¥£ßºuiŽïBø€ÅÞÁH‰Ï°ÒçЪbRû¸«šÝ24Vœß„ŸµHÂç’oGBèp1á^ºå!Ìé˜ëØìÖŽyäD§Œ€ÅÃ]ˆûP6ÛÇMÕŽv ÿ~¯Ã]FÜjAù Á{J}æ.'sé²É‡eUYĦü]?À¥ à¨Z÷Õ²ö´=b.ÂêúTÁ²Q4gvx¯”!/I³vªxEâNe‰:5Íèvçg¯ÑÐZró<ê/ƒeé–Hr³tØ’ò³ƒÈxiêÍs˜ÔÇ{ |Ç•›CG'”nO¡ôqtã¢#Up£iõÇÁUê~óΠMDzÄ+ªEhèyLÛ‡Në6VVmßX½P*ýðÆ–Õ}qØ´±>aã4¸åjÃ4îeÆ…@`:é-¤OãL£‡êzqÊ¥ åÖ‡EÕ¹”çñö¶›®_—U¹A¡Ù]hÒὦ?ÙM‡‚[ØÙls¤ïc¥*O÷ƒõ ‡“¥±CÖ6G¸gbV#¥º$KEÁÂŽÅRTÑa_½›¬‡ŒE\w·’Ewz¨ËWÐ@@“´_=п&¶uýÞMz7Ã+‡³ÕÇí¾˜JÏ‘¯p}Ñ^ˆ‘ì8ó+~ÊÏQ>ÒQ_Ã÷´Ÿ_ã>D2ý7`OVÌ]ì¿Iú*Ê82™®¸¶]pû/|›}L endstream endobj 44 0 obj << /Length 2512 /Filter /FlateDecode >> stream xÚ­YKä¸ ¾ï¯¨Û¸n­õ°,u0—;Éæ°X`;‚Lxª]Õθì^ÛÕüú¢,?ZUÝ3È¥lË*‰"?’é?Ýþðã'n7–Y-ôæv¿áʲ<µ›<ÕŒ »¹½Ûü39Ôí—¢þœféóö_·ýñ“R³¿ÈŒq¥7)ͽ^¶OJš¹X\¤Lj3μÚ^K)“—È’œ3ùÎ%9ã<Ìü(@HŽÓ6×&g6×›kXËf½ß·ž¢ŠmiX¦íwlÉ£ AsZئâL|{»52ié wå®.º’úòq+ò¤ìŠš·™NŠ®*¾ÔeC*i÷ôj¸ÿTKz5l…I@Äk¸”±ÓXäÍF!/ŸF1N,Ú©mvåmuêË: H-3\ùz•$£A'+¬¤ÊÐþï2뵟º°Þ †on¥%Kmþ®­r˜ª—‡ú‡3Û‰6Ù Ýx“ù§cõ¼07Êþx‹?áüÂ)¨'â¶r ‘µxOnbަY&ìÚ¦"fTÉò,âk”h¦SõJI<¦%žr–Û•žžªº^‚;bt›§ެm!~^w_<¶ Žû÷Á>³ìæc§9K󠟢¹‹º“yë%*w*ƒ9‚³¢ÍˆyTD ¦¼Çˆ‚©É:̯•nÈ%„³Š‚Y˜»1c M•LnÁqD–üô9å²Ü¡Sç‰×a+¹..ÖÀÙ¯ª¶ñ“›ñž8Õ~…Ç­IQŸà_¯åMuHˆ¿5we·½VÝÁSj|ÚÓ°°ß"ˆøSjÈévyÆ¿´!œÃÎö»&2Dæ!ݪBØ…(4‚¢ã„I"|"@ãû‚â\EÕ zBÆ9½JùyœD—oÚÁo×÷ÕÁË\ FŸ"8KÅT.bpGc C¡ît¹IŽeÑøÛáéÝ¡ò|V"!6O!ô¡. ¦dµ< a&àfܽüýTyÙÀ ÁQ€6Æ Àñ§¬èw»9”ÍÇôÌžàBç3Â*ŒM¾œ¼¦$蜋QS>;}K“ÅE)³ÜDD8#€’,“z r(–KñN Úùæ¨B”s¥Â<¹$Î+‰˜ ?œÛ5»q1'ýÖ8º].« ô¯„ýFuå u™(]©% ß“ó÷A™#É_m'FL•€S(ÒDRh6ǤcQLc™l²_Aò̾@n¹Z•Q¤QȤÑsûej£÷ …žÙ ¨8$ÞUZ'Š©ÖiaÔ…kÇÐÂï_÷À{ ©#•IÍUE&TE*éÊ¢o›Þ³á,Ó È#|IG? žFyš0{ëØº¶3b£Þßèª%¢<£˜–ò æÀy +‚1Á²ìrÊÕN wPwR«Ãýˆ'x$CƒðU†QW¬Àµ…Q8ÓˆýÁ@ªÏFà‰T®}¨Æ‘WÜm«àùÒÈUƒ©5M~ˆq2‚V:ùäJ¦ŽÞ•ÏÅ ü¦®Ë«h…o ‚OMK×¾lz?4ø¡ª©†ª¨«ÿF›@é¦׎HçYÅ ¡K®w“ úªÙÅDozÔb™;¢Þ®hq èÆ®nÑrs=¼e¹kÁA±Šcß`A%dò[u¬‰u¬“…ìyÊ~ÈÖqiêbürS5ù¬™Ï£Ä%¨C2Á¿Äd†Â]Ì¡.ÀÛ}ÌpPÇg„º (p±|Æ&¦äoh§6WÒÏmàz"í 2â<@M‰Ò ž|a¦ó![~è"Ò-¬aÌEå&3ûÔy¢Î‡è*8”zØÕDÑß±ÐîpÔÙ½ñ<ÜgÊx³-˜bLJ›ù^§^ˆUû=É—‚Á6@‹HxòÏwå甫¦¢Y×Àñý©Ùa–éi˜ª'|qW m÷â×ë§£ç¯=BN§³Ýˆ„8hoòÄ0]bÌí¨ÔØÓRºÞ¥(«Âµì:—8ñíÞ¿¢Ë\uò` F<8–†£¢œP¬ü},Rñ•+y#â!£º ÇÎ{A :Žá # ¤kY{JU<`s%ž¸U—cñ¬uµïÚã¢áåÇF{ÀÙ£âPYn—½ÐoÁôB낚ûéœ(Äë2Úˆyõw®ŠFz¶šSiê¶” pÓÁw%O}Y—½oÖßm9õ °?á‰% ‡Â¹7𸮲jà)ßÀ»·ê¨·+€v'¼Ð€û­=–Cu,{,[sNËr`…_›Qqţ˱íü뇮ÜU}IÃ˘BC÷è8“ }j›ðÎ/2tEÓû?Sšqš8´Àýƒ¸o´k]E…zH&‘\ª„ŠíÈ啽0F.sȺoõœ§¯=(M@ÖXtÔtçð{rzs;çƒyR þ?u{(èDîqÎÑ¥žw±µkvÕåóØX,ž¿·éärÝ~ö]¡mü8têâ!²ÎtÔsýw¹®bÉàmÙ•„ð'ÂǨÅÁeø F2 ¸ÚئµYUŒ³ïcP’ìÆC5ôïò Q¥m–Ñl•'}3æ@m§íÂg!€ärUdŸûŸä^(ÆÏ7qzÉ™ÊWôOÆMÿä"’X7uåçÛ~ÒêUÛO_i—®þ•†ºA¨,@²é«~(›Ý M¾ˆ»„ô€9 gQVé0;÷ô‘ˆošrö):—VÑYù¬ĉÅÎa·ü §,Ê×—xéñGª»›ŽŒ• "ÐüHòMÒ}„<oî_ÿà³ï]ߥÒ<3+•šŒÜ·ÀòW56;Íáfæ8ƒBë§á#5baZˆ ø@þ Ù@q†6#æSWË0ÖŒBš¿pc\¿¨GJ€!ÇJ3cš¯<1îïËX¾„>Á1ËàWþØ1ÌÆ²)æ¨Ú2©!ƒæOSŸü,Nüá§ÛþQÒL endstream endobj 47 0 obj << /Length 1018 /Filter /FlateDecode >> stream xÚÝWKÛ6¾ï¯ð¥€„JŒø•…i»´‡"h}ë#ÐÊ´­Â–I®-ùï>$Ë^¶Þ9å`“æ ¿ysÆß-î^=²d†1Ê8'³Åj† C2!³4“l¶XÎ~ (âaŒ1áÁÃ)ßí·*ŒiʃzåÖ}WîÊ6ïʺ ÿXüôêg³ e‚ ™Ìb,•ìUló¦¬Öp³ Û(· Iôû0†EµúÌIÚß!\ÊŸ¶)ßnëÈàh%22‘ˆGL2l$®÷¤ðè–&`´cêj+J+ Õ¬êfgOÚz§œ:C[ÆŒÊà1”,¨¯í̧6Ú£Â"+ë³0(uöR¬êÁë  íKU8ª±ŽÞ¾³kQ½–Êc.8˜R$Sjå5›ú÷„'|á¹Ñ+q qËð9Ä b_Rv½¾yŠô‚„¢ [†ÓœÜ‡1‡LèçüþÜY{Ü”[¥QÖÅR/}|Ь*s_Ê=ÍÜ?É·X³~SÝûôî W?årª\Û`pDè%ÀÙ*Ñé[E ±ftõxé£'™0Ccà+àÃÒ!ªJ5yg2öFäëC·?t¯=Á}Èo~ö9ÈE^ScªÑŽÛ ÎÈæîÉ.s»€)ï“ȹû9Å®çÄÖ ¾¶«Km¿HÁ)¿É0ËlòL}8ä[l¶.†ëöðdRÂilâM|2|nøæíÙÕVV¾\®[+õCcÒx" _KöÖLÿBäþåÈü‹#Ç—|ôf¡êMå$ŽUå~û"s-ã3Ëm¡ë‹¥i°:T…y¢]9ÑÉE!ÉÆG_›ïCOåx`Š<0)<·rD1îôu‰¤`·pÒgçyE4!/W üîoyÐÓOÞ8™wª,ìw¡¤Á›_~]âH8èJØi§AB·ÆÁ&ï\Ô2‰Dz•›¼Zn‡vÅ&JP`"£wA¸/p䩟 [Dð—*º¡íþZV…ëÊGý”š½ý¶ýä4¯ôwgOl‡Á*/:hØæ¬´ j­7WËnãø7ekoìT·©Í`²Ô]gƒLÛJÄ!¥.Œ/@²yØ—fÚñ¹?ø`¢Ï ‰äYN!JärxžgPñ^ob9&Ï0ZØ âèF_¨(JÅx±¬:8yü- áj(†Ç.§I “çy.{=J½À$‰s‰žG˜AÍ%ôŸÉ4KÿK‹ ¦¨÷à8©Ÿj{Sxç8Ó‚øÍŒÎ &¾¶Ì8KLš‚ÎöJíôõýõ@=ÀìþɆ煎7Œ÷7ÿWv.šÖ”Ôj IÓ ÑŒYN4åîaq÷/¤P endstream endobj 50 0 obj << /Length 1965 /Filter /FlateDecode >> stream xÚÅXYã6~Ÿ_áÍ“´9â¥#ƒ¬ÿ}ÿÏU¼ÚpÎr­iÚú_cãêF uðÆ×%â8zû%ÍÕÝHƒ/߆Xü×Mò˜©„û•d–é6>ÞÑóün½‘Iª?•u½£UTq<ñáÄÙ¿}MÏñãîÝô¤È’ͱ°õGc­gcŒõú|æ;ß¹­›ÀÞG¢ô¢ö¦û(Þ…T=/膱¯Qšž™ÇKlucfëöæ·SÑp7,«ÚmN[œ½ºÈíîÊQ—ß+nyÉ¢¶÷ÒŠªª'ö7ë&®¥ñ[ÉŸ€ÁóœÏ%ç“ÿò5ãÉvÞïŸtžaØ7·Rx@ÌÛ÷<¿NVÅr¥€.gi,‰îC¿Yôœ•âÑx0.!£²_oDUþµ#*xáytÌ@ÓDSmo=åptM¹Þð¨^sˆ8®JZÛºr¬ûn Ý”¼ÒMHÍxœ0N-9lAªù…è.À'e|bâ\à"8Ù'siŠ,§„X¥LèlØUf TÉM8/‡,Ì™œe3r°b2Ëý÷zƒzÃH#P'em:ô•Ÿ{Àqgš{z‚a s wu¾ÚÓZ=,i+S6…õò†¾õ;_kA¹+¶ñ;úÝÄ$pÆC¢®!™Bñʤ¡-p5! ˹šq1@@UEž.ìÌ$øt#c…ñ‰fŠ<¹U§ꦡÝ[ŠYz©ÛccZ¢©.!îû6¾S“zMßíC6ÄLgòB%“F^a¨Ô%J:ßE ñ.Ó%LÎR‹hW £±8–`iÑÑìOhÿ7?ÿ@oµ7coì@”£n©êéÙõ# ,œ 51—Ѿ°Ûbï%•}ÓHÝnÀëXDÿðõÝû»û·w¡ºvƵþÞJ„ÇGN¤Jä <¾m?‚„‰v¶oiteMô³^.½&m@·Lòè=Ð{JÀe¤‘5ÅÐw—d¿îad,X’MI¼?Š2ä<Í´˜ÓÙâ|$EÆ¿ åâ4öm1ÖeÑ45¢fJ"|¡$’X ÚþH uWÕ%(®a6áäkÙâ¡ åSí|1R6S>LçE¼f¶èö~XXñ. ¿( •`<Í—Æ–“8‹œ#BŽI’,úŒëÖ pÈïLÉ×|UcN C¥n=2𒺢…AGK%œ6ÆRª5iæ7FÌ1Šôž»Þ–žcáOYЉ›2Þxiè>)Ñ}摆¨‡”j ñ§nƒäV³É¯yM$z¾ñà…8·”áL9R<†q¨"Óy–a3Q5Küº¸ÛÞ1Æ.ýÝô œg‹3 $Ä+B¸‚.4ä‡J±f1§D*Y!Ä¡e¹_CfbÃÃ…74æT‰`К—·´jiò¦YX(„U&c2ó÷)ã‹8¸ ¤1…‰+„°> Õ®4KTþz`Íãhº ùçbLNyœÐý¸«ìƒçÒT0­'Ï‘jÏ`#ÑùJ1ƒÉÄ2d޶®ÂP'·å Ìj×^ è'+S4°ùŒ»*9ʲoéê»éÚˆó®ó„'œ <24ž@„ñ5ˆb¾Ñ/Ú/Ö&†sMߦʬ!ºŠ†¬€!NÀ$`¿Î Õ7—å&e¶<4|¹ o÷]àdöۇ­ÐCþî'~3õò0hÝ™á .ÍôÖ'×òJ~Õ9Áãúú* 5\'åÛ¦oû¶ujACíÜÛ!Ô~ACçdƽ¹ŠqÏàG3ðr e}`¯·R zhsá>^ÏÈh ;ºFשÏÂQh¤D ¦ò);~åR…ÉÄÜ úÏÂÀ°‡`²4tܧì¾Ø ÜCG×LÎí3}ÊžPM­w ÜÒè¬ÌƧþ[ï;ðhEcëOUQ9Ü"ùkcÌrqõé X‚ôCÚüõœô=ÃvÔ.â„»<“þ¶ƒ/õ0œLåùøsËã…Œžþ®¾)ü§ƒ¼"£ñyÂ~f‚s-Ë|ÏÝ}àÍw÷oþ樤 endstream endobj 53 0 obj << /Length 2689 /Filter /FlateDecode >> stream xÚ•Y[oÜÆ~÷¯ü*ÕN8’Ã~hÝ:H¬¢I PËY-!.¹áEÖ¢èï¹ ¹äjÖv!@så™3g¾sݿܿùáƒÌor‘§*½¹ßÝHe„ÕM§Bªüæ¾¼ù5öît»Ñ™Œú};Ö%öã¨ly®j¸-xz{»‘Q{8Võ­Œüþc×>vÅAÜn’$‹~iúÁ%zºU6jÇyßCñPû?ãRÑàÿgn7úƒ‡=ôûýßoâ›”"Ofüà†b³m‡¢Á“´ffµÁ+ñÄϹí‰Õ¾¯ÚÆïzWï‘•F䯬iß#•fëC`÷ŒZHÔæ>ù£ß¤6ßd–b…Iå´«j¶õX:Þ·zm„’ç}=sй# » Ñ»'Óèsr¡å9M£mËrtÐd(Nœlw»~‹¥©]ˆÉT kò¯s¹ÑR‰ïáN¯eor <‹ëñ¨¶²*VÍd;eÏDI"&×^"Ü\Éè—OΘ¥óy€ªkÇÎí\`ˆD¨í·p”N›ïxF]5Oé°µH•Z£ó›¥Ø· wÒª¥bxuÔ†´õŽ÷ôÎïùä¶Ã¬0Jáù‹o˜Å ò‰• k-Ÿ 8°J•Dÿlúñx`5ºÁ‘EH¢ÝØé^®€Zn…öÖéS{@vlʺl³hÊ0}Ï3Eç·4íÀz>7øe<ß&iTT5ØÇÓ$Øûž/‘¤`â8êý*KÌ¢z¡Õƒwç*#.mB¦É3b£=˜ >Ð")´il fÈà U•L# Æ~±‘{gÓ ƒÏU]sïÑ óNk;†.yªvÃàürÕ„†ÛÀ3œv‚×Bá½V1h ‰/@ËÀ°»Î±µKÐy£DjgîÚnWl`0ASž ÓxýîI ßÌÊs6·+¹ЙZÐíÿ &»›¨«(¤IoÖ ÁF%`È”Yþìg¯YI•Pyº`…އ‚¦©½±šíà]€b"R½$ØHó‘(·ã1t+-bý‘YÐÏä‚Ï?vÏô!û¤S 9û4zs¾ùäó秇¯u¸¥:kwðÀp¥2x‹,µk!¨¹:A ¢¶x!Fãà7mã@JØÜºrd(&Þbo[ÔõxIØðÔßùÕ}µEÛ3½º:€ãŸ–Š{g%#*ž%€z¦²*½xc d‘-Ðãc žHϨ Â9Í—/>¸Ð+k%’tÖŒÉx™‰á(Z6³x6³8G~“zìþ“$¢VÜУÖÝÆuh$Û*ü´‚>“©Eí¾ãO3¡â ‡µ±‰tT?°‹Òo…wQÅc@R<ÂY9~¼Ž^ ™Ù¥wEÚ‡â ov>5-²òÙƒíå7SˆÈm]=ÑyWŠD62¶"‘Ñ.ré½àc¢ cÞ… ô džëÀö„_>ã—?…¾|~÷«º3wéüçG¿‡6{X!ÅÓ»ìîå½;vU3Ð$C±½ÞŠÞÿä<œ.œM Gl˜8¸µlp¢q®DXâdµã9ŽÀ`‚A¹ü®àá[<æv±Œ>½«Ø§Ó†oXy²-tïˆñq˜Oä{’€‰iBÃî"‚b¦i©ç¥¶¡´¡ìƒ&÷±âœuoŽ,›#X† €q«Çbpý2P›•á,€ë¦…#$›³e€T‡gÈzcçXô=ËŸÏÀ9T? jœ‚ñl*²lÏn0/{1mzöÐE7lÆ#ƒ`ûªyäÅa¶ˆz•*ÅB'sPÿóÇŸ‚›¹ÎÖ¯ÕŸØñ/œ9h£P[IFr:j$a[VwG áx芦¯ Rù[šÿcЫƀ{uNkà®×}¿–B¦ú«¡If‚`÷®¾æ l~Žd6&Ý0ÏÇâ¬jëÐýÍ©={áÔ)ӵĶN&E¡àŽRüYptJ×͹>‚Óƒuís®'Ó®1š6ÊGÓØÙ}!²²‰ÐfFÝ9h¤ Ťô¦¨}÷©º.õÔBæ4¡JN|¼æy€ `ãûl ³÷Yƒ7 0SpÓØNÂ18&‡sW7öõDªvìØ—"¦ŒÌ » …™mÑãkOm Jp‘K3ørŸEӀà²Úæ}žîøå92…ç5Ëê{*ŸuëÌ%K$]éÍ·æ2‚ ˆ‰éY€%OŸ‹?¼ÅÇÚ½ßGÉ$væd÷axvG£-7@rÖ{ n­Ž¸špéÎÜKQfÀZé\dç`˜œoCÎá‚£·Í¿ÕÛÉÓ]`Åf|äËÒ‹‰•þîÄ£²¤h7e><¹ëÚC€™<ƒx 0<„ì§Ö,Ò“MšÄÑ=IéÈ|™Xúr…g,­Wo°Ôæ„þ6CuðªÀzÍk– sŽ­E¬µÃ×"³riðØ¢Y@Çk-—É ‡ˆƒ=7ù*={UhìXk.+ ÚWþzjŠC…IÀiÓo[®9LŒÐµÂÇÏ·©ž"‡o(B¼§|·æ¨"T‰ Jýõº’³,Y‡é!õ¬ir²©ÚTž)_] ¿+y±ö^ ÇËÈ“.ݶ†8À§c™$£¸ åP¯_Pš¦3†á$ ¹ñ I®h’JE~Ný±¬–Ù¹€ ¸=ûNМ]ªk"у;vß8(hRQ,Fãº*ü¾]¸P 8Nfr~ý’I>ëë"¬Cò^à>°TÕžítèI)ßX<)Ž9H\b5èd?-œ1Ç4ðíUì|é ,63|(áé§šåmÞIuìÁ("ö!kÙ®‹ðﯨñ”8 ç“¯Åÿp‡¶;±’R ‹¯’%ù¡óX· =†ƺĄx}A§óþµ'ç¯UL645ì CÑ!´\óížx´§:þú˜Wã°lO‡¤­kz®MàÜžíó…µPЛ¯™ Øâ\ÎóLÌ€þZáq&©Ô¯ |þõ;ÈR¬‰0Dœ’0 ®„«Ð! @;ŸBŽpAžª|Û\–DoÄ Ë2Ö3¥¡kGøN´\Y¥Ù“ï´Óç`öÈå¶Ué—°*Ãìk«ºÂ@.¾¢»k pU㟇¹ª@+¦2º0 èGAO¼ž~}¨àºZ6ýV$¨j–ç^J 3hð‡$:*ŽçXG,„xz†˜˜÷†›Æ–ˆúìÙ_ê¼ms=­% wÈ_Ƙ²ùWÁ+"\,Á>$Žã!X¼RøšÙt¿¼ûî% ãX.3> «†M£¡;“,¾ùÓCøGŽDå¯B$EŒ°çÒkñýwWÉÆv„•CvÒàx1]Q`PO%²üÒÕr þ­"‹º¢êýO”ÁÚêímvQè Ÿ%Zÿ#Æôó$¯O> stream xÚ­Ymoܸþî_±eÀËðUÓ¦E\W¤EÚW¹ we¯.Zi»ÒÆq}ç…z]Ùñá#ɥșáÌ3ÏPo®/^¼S~å…u¼º¾])mE*õ*‘±PÚ¯®·«OÑ6ß”Ù1¿\•DE‹Ï8º/Ú´»üòóõ_^¼³v´Rª…·z%y‰»²¾¹t*ÊÊ_¤“ð_ñ+“ͱì_ÙÔû}Vm¯`-£úÈ›=\ê4ªOÜ95P—*j¹™…g[Êü+ÎÎKÁ ‘‹Ëµ5Öh›b›³2Yu©qmiµV*t†ðα4·§jÓu…¢ã ÖFs|ÛXPª©±e`ˆ&qG C * –˜-kÒÍ:KÆÉJKF_/‹²c‘Ý”yÃCMžWܺa)©ñ¬t(Ê|˽NÊ0Ï oñ¡pí¸_;ì]ÕmÐz,eÌRþøï¦B‘ö:ºÞÍa}‘gÀ¬¢ág…ÆÐ1ˆVU½=`üær§Ñâ™ÜÓÁäÏD¢)ÃouØæ_—©áó†Ÿ÷þôÀ/ñeÉ?í2´ Ÿ÷t­$ªIC9=‰1@²D—Ö‰d°ÑdûЪB |¸ÚòPÆmñ‹T&?‚6°c˃ vyÖ-`%ìZ ãa ]Ÿ‡#âûb„´„ðK•ßwSàŒÐëbç!T‹†‡÷yV…7(2NÜÙcçÔ´Ü;œZžN>…àGîÁù¯—áWwè¾ü$“YëC áPYTˆÁ‰·ÑkNì!ÐÉùáÐ÷gùœì€„.ª¢-²²ø/a üzjŠênØý<3¹hAxñÃõÅ.ü,W |K kìÊ¥±H’xµÙ_|ú,W[øôƧ«{šº_!a-¹*W/þ~ñs*$¾QNµFXO+¹$áMÿx „ò§…<èœPiŸLשït¿­ÉiÃ@å¤3ö)'ªh r…ž—¼‚Ÿ²îj5§ÃV¬ìî0`ZìðÐXß±·&F¤ÉÔ|€}.»{< ?†pÁ‹òj"ûÀÏm ðY©‘)<°ˆÔõ,â 7ëã 1¢„‚g—>ÅÝ!¼?¶ýZÉDx 2kJê!Àà] xÌåÚA¢xÅ+éß÷ ÆöyYì‘îŒ&9š³äüæ èMÿf‰:¦ó‡ýÈ=Èìx×ÐðÂÉ÷ û·šq×Àq¹úŽN;‡cà9="Ììm¢[€n!6¦‡…òN$®w»å°0À~”Q+§À@ôßvÂö,¸yLKÅzNŒ£S¡S5È×%X‡È ™£¾;f{öȵv‰ˆc7ØŸ0˜ÐVdPlm²&Çp@é ÇãajMžÀ/åÜ/ &ï©PC9E÷\“–LCî<7¹Öh‚ä;&-ØL.•Hcû»Lƒ1Ìp©–z†Íð¦÷‰ NàŒse@<?­‹ÕÜ'þèbÊ«ÇtyªÌÐÂÚ´´›´çñ"53xë˜}{vXä8Ú´01@ !˜KNRW D ÓQ(;uÙ%}O .Û3aä%5?w€ô%Fƒj sÎyL`%ãW¹’‚÷–S¦61œWÛ²®ò%oI„LãóÄe&´ˆã2IÁ]ÜTÍM}(HBˆ ŒǽþÇO܃Ó]C)ò+”<@òwA‰]ž¨d„òj“w‹AŸ@².¶aƒ¢ bf§¾PI@Ô<´¸J00k_$¹$ªgò…÷äËZ3.`Òà.š³ôC¸¥Òwû=bh““ôÇÁFðÄüT”B'E+Q>Àï%áTFÇ ól˃ÓÞâ/@y¦¨1`~jϸq²ŽµãÞuðô=‘Œ€¢¢²Ï†š8cþÅ÷’ú€Õ©þ¾—AüÊ~–è„tâ)οF˜FwÌêkÚzËcäðبo$‰SÀó wO”í¯áoÑ Ø(0â9 ”4źjµ®RÄ‘¡¸î§y ÄÝ›a©ü[¶?”$q‚ë.PÜ@š˜œR ®ýâîðÑñ'I=¼oŠG ?Ê«6ÔÔ›d97”3BÅ}~¸^¢4 ø³‰cÄÚq—Ƴ%Å ÿe¦¤èú ¢ü'{e®4ü©ð'§ŸIrºb§VÅãzzÛ±IØŽeœTz¬žN‚ÚZáúLª.Gi¡-$t\IŠ4ŸSZÄãܗݶ˜TXÇìØ²—BïÇ¡|ÆÎÍ)Øa4Ó!¶ºtÈQ˜xÅî Õ³üË gœ°Iú|j²ÛœËûúÏôÓ=éV"@>/o±­£ÍìòÅcÙÁåTÃ]º'Á©Ýe ? Z ”u©ÿ.VÄBÆý,,É–J¡™<ý0nLÊŒT|J({_Ø“ÎÄ_}o{H¼1,4ljíi¿ïEóñ­ÎÌëf‘ÓGâ7Œ´Wß–RdPf˜t ¤®¼z^|†¤Ìüªê‹ŸSÕÝF‰ ©\ñÆ:,(í|¨/ ð_Ôi©ð5˜´J$ŽÀ–Vpf¼‚’Pž˜þä–âÙX8[ G âBòd<{;‹çénÚ¤BÊ„Ö2iúçÞ~üëë÷ïŒÊ¡¥#[™4\Øÿs×ݬò% I1]á±SWýµ%ŽC6ä÷‚1Í$={À«'-‘‚ôPÏh'›ë§,u½Ÿ!Ûx3í!)AE&¼7ß5ì[3Ž Ð¢ZéU9Z#;>t×ÎY;m…Àõw]¨¨Xx5+ˆ‚ÆÑ¯]É· %ù. ©-ÜÐtÞ>ž„4GöÅìJÑvY P€9bø|ò5ǪfÓì‘nAk©TŠ®œY E‰SSZôŽR"y*{j±@‚¬Hl»ûŒÖ¯|sÀËäµdyÅNDˆ'œøóÕ•ÍEMã_?©Ç2"© ü6£œ„Í6UáóÀñ ^Ô¨„pï\v¨ûc(ugœ•UxyfÍNPåI©8&¥à3õ²RZ>K) åœs‘DAèJ¥f†þíR®ƒ×B>ÔÎÎËØ3 ŒKG¼ìTåí4¸˜Šž8+ 9YöÜ·;“f„×ÝìÇ‹©Ê.‹¦mÍ=ºQnäæé¨o¸â„±}vh¸Å—ð'uü0r*)ïã7ùµ'ŒÝôŸç÷·^ gÔøré %¥Õ>ü€I,@P„r+ú1Û›GŠNdþ„…ÅzQb±ÞÁ,99ÐðùÕ«G˜(X\ÊÞíÐT‹õV<ú“ðÓJGÕ+ì4°bÚ¿½[ Œ%ãô{Ʋt{ØmÌèë­^M¾7òÈ=ß®xÅÖ _Ñ'˜Ñ;¤"µ¨ î“uœ PÅóò•²¿ëêú Ì_€P 7œï_>bM x&ÊÁªû¼ìHDx@*ÀŒ‘•чSl ÉÂtQ 縘 y)ýy q‘¥Â÷*T ÑŒî‚@”††nnq”¹’ ¶3óåß%@¾íª9În‡¤ØWü&ÜjűH„¥JÊË(ÓqˆÿCm#® endstream endobj 61 0 obj << /Length 2591 /Filter /FlateDecode >> stream xÚ­YYܸ~÷¯˜·¨‹/‚ ;ˆ³‹E2À"ðúÝbw+VK Ï¿ß*©£GÆØŸD‘Y¬ã«¯¨Ÿ^½yÇ‹»‚©HïŽw\,Sé]–¤Œ‹âûÝ]g›È£¡~Úå2z½‹e!#Ó÷Õ©©š¼æ<Zz|$Q]õuØÚîb]üÔùG¢“ÝLJ½y§ÔR€,ay!îÚú—âã_¿Ð¼• 2a³`-N«>VuM­¦õ=â¦m÷É ×”Ô@ñú¹v¸‹OÝécÎY¡5-~1Wœ'eX\*¿8tíw1¬néåØY[RsljÛ÷4ùÉ 0Ò€ýr­«C…ŠtƒãŽG=jÇn(C$S©ÇD‘?U ‚ñ7t"R&„ ³™?“HàLz}¦_ÛÁ¾ÝÅJ©èáì¥ÿ -û÷¿÷èm÷w]P>ãŒ7ššÆûÁ ÖgãÕ” MÓÙi¥  UM˜¸ïL÷´XœGdQi™×CrG *–éœ%ùä#U"£îŠ »õJ²dö¨C{¹x·¸QrÌÎx& ‘3™{afVöŒsùL‚mëIÁ2žß «"‹ªŸ9jÈv×ÎÖ?h¼bΚÉtЦÓU¶üF³<ˤ²êìa¨>ãV`¸D€ÝêºÅ‘G¿ëØcüOÑ“dkG£3×!,ŽcK·ÍÒžõZMs®]{êÌ¥íÍZšõ»øT0Eþc¹éÏ$áŽ"“Gt”޾ÜQ°u6>@ûöâ}µ¯JÛ?.a³þ-éJ' ]%,I¸³½–©GÁ“ ­ºVPêû#ªKÁálïd"KÂ50lzO Pœ‹9ø÷›pÍ2Y„9¦;3ʪBChaÐöí>¡êë‡,èÑ„kØ Ñî&\ĽÓ;ö»PwÖÎ5Ó‚¯o?ït .26j]N@4¨›± ½Æ¤®˜LHþíŠýJàq&õ7ž`#ð§À>™`FÑzW@môØ×ˆ¡Òmà¬jÂwÃú{S–Ö¡FÜq”'±ÕIµZ2ÉoT"Çû.éUaùü'„ŶáS@”`h"|æ~æ?'üÎÀ'ÀC$2ÞDr¹ R Õ”Ž.¦j0‹»ì»…¨|‰~ÛÄR•±tï°t†R—:¨Mh S@·ÔQV.H»™R@gÕ÷£ËIÐ~¬†³J®âE³÷«GXcÆŠlŠ®·°±êz¿¥G·9=»'ÔJÀSÒÀSýÐј‹%ƒó\²”ë[èÄŒ˜E÷¯éÙ» ™zÄu]èfø\v‰þ d._Øz>#Q\ó`FD*lÚØÉKcµéÏ 66xÑÌR¸;t[•4„ÈA %¢0ÎÃͧ‡¼Á]ì/OïEÛyžÔۀ߾vÐæD£ñõëÙòFÛ”Oú‘98¨xY?°[˜är†Pžýx½:Tm»zŽ(26N¶±ÈZ8u\‰MÝ6–:þù=CÆCr5¥/ð¡˜4”¥ŽiÜbí”ÕŒƒ¯ËÄÖˆgʉ¬‚!ÑŒçÅ7À¤(¦É÷ϺŠBfè± Óô0ÖÃW®ŸT³+ŤJ=ד)ø-€0¢Te´ŸöXuOð×j1«½\Ä—#- ¥ËbI‘̈üKÇa0– Ÿ„~&4ÄÂð‰¹ ßUöH=¥í]uõŠ€ŽöHsÈY¡uë‡&qiÞs·ÔÓ쟅HL΋d æ\ÐðgZþ`ü¦{G®½,À¨|÷Wp#`]Üà{ã$‰5X!>oHXžÌbûòlˆuäj¥÷Þ ŒN£ã¾ÊÚ…Š È‰ñ¡àøZ;½ÌÄb… 8U xK*>mq(¹äYdŸMŠÂ³œ‰L?ûƒm]­5غˆÒó‹,]ª©@q4–ô c7Â[+&ô oàÇȲ·"[³¢˜ÒúÁ $oKüæP[G¡k¼RÑè˜ËFìŒsø‰§ÊšëìpãQ-ǃ‹b]ì¥uõ`&À¦æ„•‡NEô_—^Fšä ðÌAæÞìkÿACuw6±{hµÈÑД°†©‡s;žÎô…÷8óJ"j‡ÖAziƒGWÈ®|ù¿ªú­é«©¸ð´¬³¦\æ/,6´lÒÚ´$ Àqø‘Ä8n7x1°¬DÌ·&\múÞ‚äZ~Íi$“,}Éi•“zá´Xð?vbNçÁ‘Kê¿§‡—‘¦¶7Ÿ,ps‰$ ôϾó ŽÅ¿¿Cp9;J,4 »a).¥›.Øz®ãËFüV¿‚§…¯º3Wuãût¥„/N/Iò›æd}¿Ó TMéy²!¼ÅQw@t³°ca|½§aÒ2ì–Æ*ÿmcIŠ›‰ƒ{+_^ÍÁRq¯¢ÿA¸êôÅÛ€rÈx‰žU£¶ Z°„ó5”‡»»ÍT¥Všçß’jùœØ–÷f Pâh<Á‘›^ lËÿÃйF–ç®,Õ ¡`€®^UDTÔvÀA/4Ò‘?`“üÃ>û[[Mt¿E6ê¦;ºñ@·£êÓO”‘7ÊìâLMêûòÁ|ÜV_6nºU[­î$Xåæ*¼`Á×ûÛ¤\¥+‹X‰¦žwÜ—bPu×}K­ÕÑýèãÙºzd>@bàšÓ±6Í#¹Z¸$Eœ†Pl;¼Dó½¸ë“7 £k´Ÿžhbpž wW@ ^¬Þ 3–ç7z+É;°VYîo/²Â¹G6¹öôcà‹ø¶R^ q½¤”¸–£”8·vP‰]Ž%@¡×n¤¨¯°Zt«vP-ÒXˆÂ[´ ‹ÍÏ; >^cé(Áž“ƒÎR©ý%¤,²9° _§ú~Cöã25ô¬„Áo†è€3‹ÿÐý+dQm°Œ?ùo GÀŒoöU]MËJô=o<äG¦‡_ÌäÐ:t“ÚÑÛê&×ÏpHOçªî“ùðÚOãt'ä¯]LçÿóàvNYâL×ú­Žíè©ÞšöA:$nh,Ä„7˃¤¯^Õº1ä-ë/}Ù-*p/»¹ºñ˹BkùMÛU§ªq?.4ÝøœIÁsgœx€ô<@ͤã~É=~¤1Ç«·”À‹ã5=Ž5µ £!K»O'²å%4ØéJ  ³+/HËi½mzúœ}qCÿ,ÃÅÕ` ûqìHûºò ëÖä<ú+”ùî* æôs( ÿÀVÀBX¶D ÔYôÎQûŽFís¹’äðæö•ÁK¡±¢z+*sTsH.õ ¬=œ/¨ç Oñ§f¾„mªQŤ»…\ÍßXw@êÈçÀ –©f§x©Zçôw¬äÕ?^ý ÈeY endstream endobj 64 0 obj << /Length 2676 /Filter /FlateDecode >> stream xÚ­YKÛF¾Ï¯|1•H »›ÍÇ,|˜ØÃA€Mâr°½@HIÜP¤–¤<#ûßSÕU͇†ŽíÅ^Ô¯bwu=¿jýxwõÃm(©ŸF2ZÜm"Lý8HqùB¦‹»lñÞkLVlLù!ÐÁ#üˆ·/¶fÓÕM?ó~%>þãØÔÎ/Ī̫]·ÇÑ-®¯nß±³üx÷Ó·",ÖRûi è°»}¾\+¡½OK­=Óæ¾ä™ç·Ï±yEK§*Ë7¥iòŒÆEEëÝÞQ4õ©+ª|…£ÔkkZØç¯Ÿªª¨vÄÖD2Ö¾Š`ϲµ;ÊÍ ó2ôƒ(tDE·G"¸Qšú¡’‹µ~ª5-wpµ§‰Øº?gýûÌ)Bùq"I}ìŠùWÊ+:lCïØ,^_Æ^×ò!b´ÃZ~ªRàDÒ>¿/ÓŒ÷¿6å®n€ûƒ¿;^‹ëOËHdŸ¨©¨a|;¯I»½ ýo–2ñ?ØëØä-È'Pqà™ŠV&ÃÔކ«Kh;ónó‡]Míýr ·fZCͳmÝLùtÇg4ËVOÁTAGØ*ñêò\Շ”pn˜DpìžÑ\,AÇÑ—,/{ÝÁåµÔÖÃ$ö2n«ºã P#\ExV$t~ÁkÅ–ÚnoÜ søÐÏœQBõ‰—Iày•ùd•©ò•ާw¾]‚6A`!—?šÃÑÊðùÓ;G±¯•»Í±¶AÁ¬îWÌwÿ’ßß÷øýœ(„Hü`0õžW<ì€B>µ¬<°Ã¶ÁŒ„£Íà.QÒ{ÞãÌq‰ŸéÚ¢Ú¸{uì£ °[LÄÑv¦ÊZr®­ xWgcÍY)5OOùJú"MÝùÏç8Œý(îíÇ'ŒÝãq¢Pe0)™ÇR3»Ù^GŽ3^3I4ØNKC-1½ªï9"Œ6"´×Gʳ5bŠGu9=³ßï,ÍÅž²¸oLs^&!^;Œø“P%Þ¦>‹2op”‚ØË’曜VÓÑDÛ5¦ÚñWyÓÔMë/×qxïjš¤Ìˆ=—EìÈ÷?mçX»ùùg  ø§e|hlü--‚ßК£ƒhq€âcÒ{TÀ™¨M–a¦-¨d1²Ê‰ËDø"Š¿Þ†GyLŒ&Š0y’› «0T£ˆ(ÓQD„):ÖÆ uœq­-à³á–,­ÎŸAA*õu¢/ÄE—Ò´\ü°T’2ÓÕ뻫ÿ\áR°°™òµ bP'‹ÍáêýÇ`‘Á"(×Wi²x°¤‡…b//ï®~½úá„/P‘/ Ü*ŽSÇš àÞ`:EW@¦¸@@/9Œžªµ>º¢ŸrrêaærRHÈbr¡¥ð©þîrpû$^nr˜¸¢@L£~­¦B0ªxµá’ ¦P$|u‡v `Ð9öœãa?7äzLS ‰ÚvÒ‘ëãôÖ%ï‚q[&˜°ÓT~ ž(?Iû„æ|´žS˳7@àÏ(øð¯üTðsq—·V^`Nfµ-ÍîE`ßÿ|ùÏW¯ÿû7PÁnò 1aOÌï BÒ )G!PˆÊãÿ|I!Å÷T.òD}ùöûsMЂ“ͲàKãÿ>Kzr:6ü”ÌoG†¦Ë¢í¨‡ÑÅ.”ü¿]ÑK ®ŒâNÿQÕ¸á?@ñ;?Qñ§®*šŒIçFØÃ»®æªl!}ý忉´/d<¼îX1Á®ížÄÀÜñ©Ö$üG‡ÿ¦Xc-¥zzWþ í¨9S±‰É¹vs¦j1 ¹?ŠæJ¯ßrÓR.’‡=k†›„`×­ž› d¬¢ùêW\P^Âÿ‘ª‘è~T&ôþ6*€ñì&¿žÁbpw$S+þs¾ ¿0ƒñÿ‰j’…àh™g…ï²Ì½+xzîFå/Œú‡Z‹¼1è¾Ë™ð]>:ÔJ\ÈÀ@uZûîýLh‡#ÿdpy endstream endobj 67 0 obj << /Length 1174 /Filter /FlateDecode >> stream xÚVKoä6 ¾çWÌme ÖZ[öqhúÚíôPt{pf”Œ±{àGfƒþù%EÚãé: ÐCbŠ¢¨äGj>noÞßYµ)d‘él³}ܨ,‘…r—dRéb³ÝoþÿDoz§Š¥a"]Rl²ø3ÊhÇ(6©c¤DÅJx\+1Ø[V=(BËŽGüÏh;:‹ýЗ¨!K-¡ ´W6û‹N‡® ú¾%õÄ7¡¬ÆrX—…ŒZçDã‘ ¨XóŸtWúRê×øÊ,s—yˆ™Ç^°ôØt¸OO]¹Ç9•;#>âÆÛ«ÇÙ6g[”¨b2YuRȾU@äªÛä„#ŽE‡c·èoq §‹[`ŸSÝRš9€2ËøP÷-YôíÑO§ÎkyXò KÎXrÂâ®°æ8/?“^åõ#@Ï•ñ¡™;÷V‰àw„žÇwÈF.(¸¹4ü†Y|™ŠëÁ¼ÆžÄ0å·ªþ¡¼œS„-îÈÉüX`¥8¸D ”Y–Çðl»$Ñp™Ì4èp¡E¿ëªÓÐó™CµÃZîù@˜Øh&pu`á•r΃çcK.ÈŒ.‚[üÒC€B`Jo-™d­ñ6xòÄÏ Ø\ùœé€ z ÐÝẩ¹áaÜÝŸ«®mæÔÏ? `ÿ9ÂY†ìW8öz®UKƒ¯ëµ¾·©Ìó«¾»±Y!ªË€Xäo™pN·A\ü¤§ÉÕÛ¦5ÐÓáÓ_.Á'­’• ƒ4Ýs ¿ŽÃiœ˜ ¡&Jò¤“0Û ¦ì…gcú©Ø,á.8εìn™òžÝÿî§ß  5DzýSÀ4Œ-ôœÕ†€ª 7o¾ÛÞ|ÍJ endstream endobj 71 0 obj << /Length 263 /Filter /FlateDecode >> stream xÚUÏAJÃPà‘Y13Ð4i»j³tåBA] * ]”vB.{b yÐ ÜdÞsJDìâÛüÃ{ÿÌqt”ô¹Ç &yÐ燈^(Ž4ìñ`ØMîŸhœSxÍqDá¹ÆæüöúþHáøò”5ð¾¹¥|€ü`aaÇ9Áïeå­ ã—R(£L¥(û3”]µ7EÉÛ`±¥EiÕÔêN-6Vj-pâW©|gÁÓíªÀ9£Ãpã«\ª²,~‰UsퟻNöŸívI ÊìN=k¿jF(uŠE}€¥ññ£òÖŸÚg\ غ]ÑYNWô_Z endstream endobj 72 0 obj << /Length 149 /Filter /FlateDecode >> stream xÚ31Ô35R0P0Bc3cs…C®B.c46K$çr9yré‡+pé{E¹ô=}JŠJS¹ôœ ¹ô]¢  b¹<]ä00üÿÃÀøÿûÿÿ üÿÿÿÿÿýÿÿ@¸þÿÿ0üÿÿÿ?Ä`d=0s@f‚ÌÙ² d'Èn.WO®@.Æsud endstream endobj 87 0 obj << /Length1 2036 /Length2 15324 /Length3 0 /Length 16570 /Filter /FlateDecode >> stream xÚ÷P\kÓ ãÜ%ÜÝÝ]‚;A‡A÷ Á- ‡à.Á‚»»»»»^Îyåäýþ¿êÞšª™½ºW÷ÓúìJRe5FQ3 P dfdebáˆ+Ši³²XXØ™XXØ))Õ­À¶ÀÿÈ)5NÎV {¾?âN@cð›LÂüFTÙä\l¬ìV.>Vn> ïˆ '>€„±«•@‘ ²:#RŠƒ<œ¬,,Áoçüç@cJ `åååføÛ jt²25¶(ƒ-vo'šÛÔ@¦V@°Çÿ¸ °ƒø˜™ÝÜܘŒíœ™@NB´ 7+°%@è tršþJ dlüwjLˆ”uK+ç)Ô@æ`7c' àM`ke ´w~3q±7:ÞN¨É*>:íÿEVøðïâX™XÿëîßÖ9²²ÿÛØØÔdç`lïaeo0·²>J)0ÝÁ c{³¿ˆÆ¶Î 7{cWc+[c“7Âß¡¤DUÆoþ;?gS'+°3“³•í_92ÿåæ­Ì’öfâ ;; =Øñ¯ø$¬œ€¦ou÷`þwsmìAnö^ÿAæVöfæ¥aæâÀ¬aoå蔕ø7çM„øÌp²°°psñ€Ž »©%ó_¨{8ÿV²þ%~ËÁÇËä0Kèce|ûAôr6vÀN.@¯?ÿ‹YYfV¦`€ ÐÂÊñïob ù¿ð[ÿ¬Üz,oãÇ `ùëóß'ƒ· 3ÙÛzüCÿ»ÅÌšr’âjòôÿNù¿J11;À‹‘“ ÀÈÆÉ`eåâp¿=øü¯ec«Çñ‡­¬½9Àû¯pßêôŸ]ÿ=4ÿ^ZÀÿúR½M.@óÏ ë³p²˜¾}±þ÷¿MþÿMù_^þ_ýÿF$åbkû·žæ_„ÿ½±•­Ç¿o“ë~ÛEÐÛ.Øÿ_ªð_«+²5û¿:Y°ñÛ.ˆÚ[Øþ·ŒVÎRVî@3e+°©å¿Æå_r¿ÍÖʨ r¶úëj0²²°üÝÛv™Ú¼]Îo3ù· ø¶<ÿ{¤¤½)Èì¯-c{ë°±““±â[“ß'À‹õmÍ€îO1€™É~3¼%ç09!þÕQ.N³è_¢!n³ø7 €Y꿈çM§õ_Äû†Œÿ‹8ØÞó[ͬœmþ¡ð˜MþA¼fÓÿ"Î7)Èö-ëÿHþJžÙìÈ `þÃçzC×ý¿6ö7‘½™±³åFoq˜ÿß\˜ÿÿRZýã’ý/èúÇéA.N¸{£Xü9ÌÿÆñV9KKàŸ9¼É¬þ€oE²ù¾%mû|«ˆÝÁ¾åÿ‡«¿‚ýsØ÷í=ò‡ú-X‡Ôoåqx«>è¾½œ˜ÿéì_Èèü÷¤ýÃyËè|YßÂwþÇé[ôζÿS_Ö·sþiÁÛ63ƒ-€”ð-°èƒ7.À· ¸þÑ7ºûðÍŸÇð-EÏ¿áÿL¼©‹“ÓÛ½ÿ÷ôÖÿÿà¿_2@ ;Ðq~dÊd]Ô|W!JèÆ¸="8I¹­•LËè5ïôÛå>‘¶üÇçU§ÑÄþô¥MIšk‘’g¯Ã†ø/_Uš½Ÿ ãTÇ·›çÆp{FsE«»‰Þ}`TÙñ~vôÖ °n€l•£ÌttáAUÎÆºsë’v¯î.Z ™ÙVÙ)ç’Gz*š`ŒÒˆÔÈŸ¢Ì2I›Æ'ƒ3!Ðaž¹£M]ßLbfŒ¾’ÈÅÑ#úE±çyé®±EßO{.—¨³9·PèâA_cSy‰í}“Ûõ*ø¹*8›ÎÓ·Ô?-¯I@櫌ïTÈ(˜ê¯ÐŠEÑ–áfšêd«i:ª ¢&©Fð ¦,6ÿZFÞ_`˜öÁÊïþ™œH-^ÒŒþw;qÛщF+w| >kÔîˆñ ÖFKš/×Ó=s±ñ¸´l¢9Ä ù‚ÒG܉aµ,IÕ~稚\/½î×,¦Ÿ·ŒÖÐÖ_¼‚íôWøºÜyð”GM”kö¾ž?çµÆZöëÕV`_㎡¶ð†nŽÙ^Ø¿ÖqŸ1Ȳቡ§ñôÉ%¯²LcÛ9ЀÒSy0Ó>"ý0Þ-Œ:ùœÖr\$¼¨r‚yÄq T‰B2˜ gJqð3þ ü#`‹ç$´Ï÷Kã½K®ÄW]=»”OÌ}Ƶ“K;~3Iµ¶W}ñÓ¸Û`_*­ïÁ%n Ƽ˜Ê펖ë*þßG2qÛ¬]ËÆiƒO œ+UÉžÇÊ{ƒÉŸb'mD¿ïŸauåý”eÎ✤Rn%岫¿ó®3)ùúkNV8"(ÈÑŽ#XOÖl ‚_t\åç³I~õ]RÎT£4ãeEg‚ßÜó7îPSHIüâ•&×lÊ»qµ ï×3I~ðö,nÕͶJåOWªDþ(OÂÌó@@v†0Ž^(#ºÀÝ2#,DVœž“†>úÖïÆO7¾jˉԊ$%…"¦µõÀ¬FLúÒ •ËFW{D75lDÉçÛpa«Qü¾>H6ûJXÏ­êýÆé;*Ý]£|‚ñÂŒ–• dg3 ÔÏ$jÜz:ç=”‰±u3Þ)1ãµÜôÏÁ zÑCÆqß,ªX›žÌÑàõ÷áYößq«Ž~ ùþ¤€gA>Hjç¶ÂÖDÞd?è´Náñ:®Žy¬ŸðÕ`Ì«X;ßèõ£›I:Ñ «®dkÑ[ùŽMìÀb©ÆíÒĦMª" )@©$ßÜš?ÚL˜<Ö–Œžë¨˜¨Ãj'Æëþƒî~åä8‰` ‹AMe •ígSöc u})¾Q•JDP ßêÆrC—-=‹ oˆAóÙ9Ã!óBAž¾×{=ú ÉpòžúHŬG4(£ULOë åEøú×të"wžìÔù?©Æ¹~±%-Á…·RÂÒÓ$^}·ñ7ªÂ—X}a®êƒJ´¡Á쎱IFw(GÝ|Úë|ø‚¿1]©/à{ ƒexS8_ó‚ƒðˆeJÙ†æKƒMº€(ç:댊æ“ÜËë8ã¶3¶æµ™É‚Y6â<òC1(åÝ• c§Ãç]ê0ªðEª*o`ÝÕG}'"?oÎDÅüzN²êÏt-åh­DG ‘#‰Ñ‘Õ M —æÖô qG-¿[!o3úÓÈÜY:n-É¡‹W]ôD|Ö÷æÉfûÍdã$éÞ1¬[w vº]™ÚÁî 8…ïNãm$Ûul³Ëú˜}abÊ!íV÷^‹Ç&Âûý$)”ßÄ­•@±¶/—%óÀÖþBˆ¼$Qç}GÕœÚym#´g•ÖÜ1„å^yhÒàÒ!Lø3d¼2¾ÀrªÙàœæÙ–ø´-jŠâׄ"M<‰œÝ#`j[Øs:ZGì©&.óË ºR!ª€ &íÛ¸»DjÉ`L;³ÏÖb zà·M¼í ŒÓü5,õi£Ðê·LFf“dW4|³uW-†bãFÝDtu†tÿL9T^6´®oªønb„ Šd„xÓ:{¬ÏÌÛëù[Wþ†$V\ é}€ø“žûа{™}‡¸#y-¹ºU#ú•ÕÖ,ó¹Õ6] °¼ÑBzVúü3á«Ï¾ÿHk\ZÉW‘Üß‘B32åþ%í‡÷§…‹vö¼C¬)Œ_n·3q õÐã¡ KŽ»Q:‘wÁÖÜHìÝŠËž?ƒvÖ…uÏ~‰ì<¨b+‹Y ]næ-º†jJMë‹ZÚT‚’ëÊ`×ÐðÀÀA¥ÀœžÒÁµö…)ɾWqÍçå€òlz 㘽µ @ØóÐI¤¬šôΧÿ œkÐXl_ÏݯÐä}dKŠhxÎÅ_ô4a‡eÙD¼fÄW׬ðj.wg(sñé‹^ ËV¬wc%)šè‰#Ré<°ÕöŠÛ $Ô*ÌÈgWù:ÆøšÅc|õ¸?#šüZA À‚°ºJÈ­ÿŒ >ã,["`J$‰îi&˜k„Á+@ë˜ñÖSý¾^)Ä …T”æôëÙݲÌÒƒtÓFsP­¯Œû‹,ÒºeŸ±ú×kìeÐaÀmP4M²–™³†ìà©ÁÃd º¢÷$ì÷83¹;}"UÔbi´_f4è«J1›ê½ÈpmïõÃ6}e<šˆ)w§g¢§‚‚£wN×Í­O~7tÛvî×4ÀÛ’‚ú=¤÷/™bué&<þc ãÚ(3)Š…¿k"K1çò70­¢×’#h{N ‘3}·–Y/¿#uÌÆ|‡à÷3c(ÿ4É•·mžÆ Üæ0Rà}VfÓ¬ÊÓÈ]{E,d… ZW |j ªþ‘¦4‘ýA¤©Âs/ͨ\OLêKË ƒ唯‡Í{X5b@ÿf:Š {û:»<ýºãR“¢E/[¯=ò98Ù\ƒŸ€ã%"ª*@κá2þ!¨:.Î¢é ‰EÒ*he …”’Hã=v[³eX^aÓÍT€íz¯a6£ºµ20;Ÿ°^³–òû#¾ÞXhüˆ¡¾p´xP /˜™¿! ¹–lGõC©ÝrGYF*mÙM!vªd´¾SŸ+rûäx<(!o Âcs&lžVl(üL¿EdÁ"`?rTNØ éè8ŸtÅÃñif|`­u\"£îƒñ/7òfn}Û˜Wi~*f±.i¡£Ó‚í| Ýi“#äçTüô­ósáY`dqH‹ D>{¹w¡ ]Ž1ïzv­9?uñB)©jVË¡í–rqÖ.bí«(ÖG+°tz]úÀ3~߈aBñ8zê#6É´ÀbúüY¢w°O99°ÄUׄæøýnÞ2ØY^!¾¸¶­CÆ/ŠçD°ÉÈ-þ'΋³ skh†ãÍ]#ÓBR#]Iá®ñ*_ú­Ñ2^0ÞCÅ?”¥qáP¦›úC“çöúÖÆ"%…~ÜEBM„Å}¡6žWcý~1 üØéBrAqþdE†¿ìQãËPèûNü,/ÞwCµ'Þ¨™ðÙš,~¾¯DÞ& E…/ìÇ€l`‘õà“dȹ‰:í Z9Z&YTHµP­Ûþ²ëcõº7ÇÁW:‘IgáED«»ÐQˆ“î }§wQ¼¨¢Åkº÷®ôEpå â[M‰#ôD‹Ü{D0¹‹OÌ÷dP}nÕ(Hô™×—Ý~êD’6ð0€'gAˆœÖ¶Î·³(!Œÿ¾pO“zñ£éÛg”¶*²óâÃï/x^£2ž5´˜ˆ®)L *…ÏCÞ†Ó/Lý%™ñ®ÆkjÛIüÜ”C6üЛ ÈbbF'`›\Ÿw’Ûhµþú¡2ª(=ÃdR)ÇÚè_¼—ÍÅ1+ÍÓø$ù MeºŒÓ²*Æ1Î"„t ÌþPüÞwè‡.4G àä¤öT }Xȵ1ß7ô‡)s¦ÌÞh1=qô¥˜Ý~#÷2nºÚw¶ÓçºónÉ„^#1kètÓ(óFt#×^²úÌ :¨¾ð—:òÅBa–TXB•`3úùÏY]8Elz†Ùv9 É8è.ì¢W3©2<ô(©ÑKú¿{PŸd%ÖËMòõò®¤|þˆ«±Xk6 )K…çÊqµ2¥»-Ua>âÌU)ú‰¯˜å†àšTMö*›~ƒÖßd¥ˆ¦ÕVj—®;\‡ûi>jaÎ(©ÒAM˜²ÞÊ{0âì ¡‡p‹k"pOÈ­(xÿc‚Ϲ̾öýç1ôºñ"76ŽôÙà63f“ _=Úò{x Žü,ö½çei*f¥ÀJ´D¢yþÒfð×È$>ÈH|‡½äìû7Åï8Ì^ïòFKüsX˜L “6­Iu7£E"rwP>ß¼xzÌØNѾ>“UϮ峰F7Û–5ì@)'ól¹¦PI>´þi›»ž_×ø0*oO¯ƒ¤îIÞe‚:κÑ Ó·ö¤Ð<Ô¸/$O7^Úô|Åk²ïít.w›Lf”È;,B¯?ùW±Zc~ý¢Ø:ÿ4•)Ä óƒ‰Hêq)!ò{%d‚t'^#¶u Ä ®ÕˆZI ÚA adq²Zé°E‹þf}ÇcxÊáò8 ½%ÓlÒþüá¸WXúî¡þ«¬äS3ñ¡™,þ›Cbé®–ŠÿÜžn]rÑšxü¬ÂêÓ t £dƒT«ªBÑ»Ï/þòs"ÞóZ¥)“WÌÊJÕpŸÆÙéX䯷ö»ž—z~ÑúLB—Éí+ZMPp>ðœ¶X‹;³‰×r3ȧe M§ #Œ4ŒÒfî$†r¬ ? .±’Cv€‹¿5üÂÑ%Ñ6MS¾ó ûÅ ÈÙG0¾ø¼õ)¯›ã§Ÿ‹h2ÖšèãÏc@—1Ê'ÇsÔ§Ìâ *^¬Õ¤°k„ÝÞbÊìV·Aá„èÅk‘eï67¸~9R/G!Î>tÚÏsò?­óS.M ü|SxÚD6cÛ“Ùër¬¶ÙÒ¾|¦L„äåV9£ðôýÔÑ%d§Ð© ´É{ëvXÝNr„0ž¥…%Ñx¢•`ž˜ámN+7çP½a+:×nhBAp#'F3Tõ$DÐr¡u\_ó<`Ý ^#°[nª­¦î*ã¬aH tÇ»ÃÑò Lu!|¥œIêØŽU1˜u ™EøÎ˜§ :þøý [®«¸D‚Tw±eZ^‚°´ýö€f[ [¿7Ÿ)mdLf¿…]7´"¸P.æºZ™û.>‘|8F•¾ÞTc½˜H]}’&–¤îIRþ“Ù"eMÙÅ‹Z“|wQ•7·ã·iég‚¹Ô‡tŠ5Ͱq¥¬–¹[» .G6}Ù¿µ¤ÈÆ%ˆáÖ£\²PcvÚ.ÄL$H%î=9îj˜©uVîÂíùO:I~üÕûa| #¥31V¿ª0%.žG;^h‘¶V’¢æ|…xáð=Éð`šEë^¡9CŸþÜÌé嚀>sבÿbv6N©0W O y¶çÊ´9“ö‚_ Õ¬¦³ju£GtžzŸþˆ‡‡ŠÚ¡ËÆi¨¶çKºÝþ<»ûìU˜•Y¯#*€šÃËôrdvr\™ÎŠE>´oáíØ0}ÉiØœ4/gÇmÍ•d­!°/"ú ÿî»°EtŒRœcÈA D:mWŒzÞð»nSˆ6Ìå‚dUµ†Qùa¾CŽœKì%5„o>óüìßj’jŸ F"b@Wè5¯ædœ"¢ï²wÎM± >Ü´hÍÐi~Œ!V,/Ì0¨Y"Ôf²‡—0JhOßyVïÑK{Ç#d™Æ;HJÇ-®;.þˆ¶ˆÍ·{7mP«hŸóš„àJS!QÅ\sµ `RŒá·1k¶q:¯ZÊ¿(*,l,ש©Ž¶þâñio±ôõ—EŽïÚw£*]¶È½õ±PïØ1¯-Q9Ó$Õ»\dG{3š´Å)¿n@ÃFêErâ10K—2_Š-¼kÓP„B«øîüøQúƒ*qE¯–, ™ª÷Y¾ÖKÓÒÄäÁLOÅaØiÊ& ½ÈHõ´ú²’z¯ð^dîâI€q“\±»‡oAŸ‹Cm¶7J£0çiÁ+…­ó³’™@ytùØÚ¾F±â Ï qЉd«Ê¡ æ6:˜©Ãœk÷ýÑLV§öÐroÝv–û¦ßhÆG«ÙX£_NÌú¦ Ñ05¾!r‰€[AùÑm¶ Ì_?·Ò÷‘KQ-ˆdì>Î'eš ò"(Çf¶¼‡¯$uô&Ž#&ö/}ĶZì‘-èâIWÕP+ðÀe;ؤ·"ýú•²ìjå"°7&•jC[Àq’Ä'æùܯ,V³‘ÒÛk4Íw™×Íø*Ì\é'“3ƒüd.éÞ9Ÿ£ ψ±æ[ÿÐòlØd¤?Þ&:ÊüJê/üóç莒ïeOÇYÈÜÔ;pP[û`ŠÍ¾ùÙ Ð9£õÈÕ|&8nÎþÑbþ~šÎÔõ£á\°og¦ý/cyeKW3 ²2ü”ŒîdŒ°î6»„(\õmîÈ(,_¾/ÔjC‹|Y*Ù¹ÌK›Ý?4ìU95|25²lÙŠÈŠ#L¤\í  oIXuj+ q£žÇß'^d³žº„À²`{Š"8\aÜç#p$´¥$?âU ~q‡fquÅZ¥ó´†kÝeGOÎÿ¬‘H畆·³Š#‚Ɖ$¸öTNVb—¾mÇ;´ÍçÄX×µP°wp§4GaÇ‘>ãÕppÈ"†äÝ*~Bf‚èÊCt\Nùb’HöICuX2'†’tæ„f\9p+q(OØœzfýeáÉ%E /vâ Šl—-ÆÎ‹ÞP¯½qÛTócû:Í*¤c!§ÝãvI²‰?dÿž×#kE®lÄýÓpŒ¬=×O%ÀYœÉh¾¿¡¸âãl|>ïˆ,â-aR±ƒ\1Ú÷C&(}ê"zu´%w<ЯKyþ•q›<Ÿ6~ôkç‡q{l1ÆcJ³¨ˆ›J¤?6Á.›^xNž ®`®ü^¨Ò2yäÉöAT-˜ Îé,úN2xè´ÔîcÉÈÝgãýEx( Ñ¢aG‡CÛER¶ŸÂ{2±Œ ìºjO{  lAÐ÷²×Ý“ó6kÍG°¼à ”ÄE©ƒ ÛLã†,¦æâT  Wl+Îûi×6ÂàˆÉ(5å ÒñÕÆ]ÈßÎïxIüËrÕ:êåoðqŸ ™¦º— /„¨©,¶Ën,‚:²žî¨¤»Õe`D—mñºßMƒà_Š*[”¯ø¶¢cBÇtWcŠy;HP¿SôÐZ¸ZkOÛ‰¦LUæ´@ ´a¿¡WÒb!(䋸Ðu‡DûU´©ªææ¹ë…'Ág—~E-­7iÉS¼ÆòÀí„v“†nöÚ÷ YËzÜÆÆÿìT©ÂG>ÏR/Ð…0rfø­¡2~­ ¨É¦}h:¯#‰#i63‘Tm æã°L“d]0ÿFKaˆL%v¼`4Í“‰æâéiÕ¦ ·n‡³¯¨Ý|¶I8¼VQÊz#룊(ñÑgýsµ» ­-?ÊiW }-ÇõQÇ $ñ‹F:&‹ws÷Ë®S‘èrM œß©_ ½/H|&±@)««ˆ:abpHp8_“«'J(Ú8Í æ£©Œl+s º=R¶¸µ·…vIÏ.Ã3£ë¾zmk"O`|þª—aF3ŽVã5I –®w‡“F©0QR½Àç -{3GÌÿ9 s«ÑȺªy¶øk‡n®…óèJ.´k}â„øšœ"‚8Ö#âÅëhŽ<×nzîÇÐbj<Ë9IUÌ\D;C{A4K­¦ÈW- =¸%ÙÛ F H¿«G4Ñ©5vÍ×u‡˜ÇOm|Žnu¤†ÃVªª;`©Y¢CNCÆ`ÁËGì,* , èPŠäjýéçv‰+Qþ»³gÁ‰išùƒ•å \úvìù¬›[*ª³¶tÙ'O7ú*¨^†¦Âü¥§&k Gw±)½ï# ›–—/M]Íf]Z¹Í=mh‘}±xéšÂZ£þeRçyÅ#.ÁJ¥U×tçÆŽ¹þ½²s"Þy;éd•+/†{Îûѧ&'¦þM´G£ÚQ'š~̯˜n»a§øªÚ²VÀF$/?5JWÙçïv`°¬iYN ²,;9÷¾“VÇz³µ_Gèë#ŽKÑ¢=õƒ‡»kÙöu Ù¸wQzÉëSâ×oLÿ~E­w)9 n§©UŽã#¨œ}XE ÏàJx7 MDªÉ6B/MMzA骩¢kÓƒ[Æ«úé÷Kï ±ŽŽTˆÈt"&‰Ë3ۆᙕѦ³à0IïWÜe¢§oò €/Ç®Ö.Q×3µ!¢Ò{°Ú d)VO”U£½Ü+笸•¿˜ÂÊ`M'ySH‘§f­>:;¥A~ˆæô˜Éœq/ü H#“3ò[N¨߮ۥ˜£W8R=¥}Íübr æ†iëO°оˆR4ü¶!ŽvÝ‘F _©óüø‰Üûw3Ÿö,ÿõi›½òÒl§vb›7¸ô(ÉÏÞ]j–§¡’ $·,ÅÃŒÈ@œ‡ í/­MyzNÉŸâšÍŒòµÑ—;Jò–Íf%´ˆ>wàÅQOG4Ìä<—MƒÏí(ÓôÚÊ´A¯l û¾¢º?8½çìeû»÷ñÉ”¥ï:]Ì ²á‰tÚé¬B®.½¼%r[ñR ».ª1z¬²Ä“ÀÍÜ"s)¾e{½ó4-‘c±‰üªFm’+9 À{R"Æm€Éœ_ËSå•^–Þ‹ÄÊÆIOjV#II‰Uƒä¨&GŠ’b¨BãŠÄÅ vµˆ¨è5ØÌÙE±tüøÃwÙwðÄ øûˆeïÐP q€†yq'gÁ!ñ»G÷/¼t å„Ãî ¿PêÌÑš¿l¢)ÇB¨ ùÕ6õ°OÚiIV¿f›fé=Ø>ŽÇƒf.‡Gs«z¦;Gq^=/ÔÄ;­jt+{(1›7¶¹Oü9ÜõÄ_´©¿¾„ô”qÛ}¸'‡ÒñzEÜ5)ªBœú ýP\Ê FéE©Sê@í1¹p'À¯µCÜ¿.7óút†Ä9´h%šÔOöµkp3£%ð·S47E R¬¦%Ö{®¶á¬ìŠÄòU” ±†åh­ÌGt“Eþ³þ ¶p/˜åÖí׈kJOõïò…!v®Ìšóù§Û{i=‹¢µ¢ŒŽdžä{ä¸êŒ+§ö…!Ÿ÷‚¯GzÌüÇkw²šZíi¶•¢¼ðc ¬ÈýÝÉ>\QÐå—â–ì’M²Öð¦Ó¸¶< ©õÚk¨BƒÑxã B»;ΖòA…’Î_•nÕƒ5Åyøâê+ÝXTph¸EŒ¢C¤};͵ÃwYïlÚ¯‹cŒtx)¦wF¡úÍþ69¬ÂÂ'g¼ƒ¶×:Ê.fuùAÍ áÔJòñ& ÏD@ þÞã{ ¬)0ˆF'RŽCü@¸ú=5¨h@bXQ$Ò$­§L%'>!¿-òäef“éÚØã׌ijŽQµkfkë$êiÈÿñ¶ú¹‡ËWl½ø½¸/þp©ìbú$tk(B\߉‚'ÕÜ]CÞÇnÐ5Ãft7ÑsÃ`Âÿ¡ëöwPâÍÝLèK¡°!7Ô­³R4…¦ö/ϰê=¹/Üù¯Æ¿Ž}Mž£k‚s¬uÊZÓedLgRã­ÆÄÝ—qrçîßù¨s ¶Ý-j•Ë{¥€²Ørz̸‘ùcá>©ER솀J©×Ly¤½oCÉyôÌ åc®wðÂL¸ä=éÊÝrmö rO ñð£Ê(ã7)í¤7¨*ægß÷cV½Å äwÑU=ó:'K»Íø° æ˜b;5að[ÂÌ}È}¹ª\¬pûâ‚BÑ$Ú%ËõKdÐøOœ¨šŸ_€é™ŠÎAjÁwïÚòQ9ž—a`f ûˆl8޶-Ñï\cú+yM†öR#ô I3Ø[B>G Àî¸4íîþBt›~Åå7„'Ý´¾¬6—ܘx5öÑò!–j vsŒ"ý”FÓ¶¬ãåf! r‘<¤<àüñ¹¯Û‰ Ž-¿ 5¿ü‰`´ÁÊêÛÑ\­`”e·Ãp¹¡Á»GßO]Â''U#J(¥ik=;}Hƒ,ÚœàÒ¢1%[R³Qøü¦Ÿ»‰‘:$ø–F–³¹Çå-áÂÊ©¿ÔS#–‘R­^!¼.%÷ ²ön6\F©^Â~mÏa½“YŠàÑ6ëRëBL¸¥w*ï¡ýB0ˆ”êŸÜQ™l¶ï(µ©BØìu+¥ÆÄÀº¨ðdÂ[AFI×Þ@$Ÿ1ëø­Wáf]½dÝòûE.2ÅñÕt6SŽ}HBÓ{ž0x9Øm‰ž_˜žas(ò5ÒsKè¶â"0/Wï'¶˜ ±LªCâÇ2ò ¤ø+WBx¢2ìp‘¦5{kùõ—2CÂ'2¼£éXÂàD.ê4s›Ê+åd‰'xhhŠ˜òJk ½Òåö~8çšµú8K >.Q§˜‹È¤›NÛühv9`þpõ9ƒftBN>e"ÐßUgd·ÛÕ÷ …Rª¦LŸðN®ëXf®{ Þp,dVJ{²ÀÛ êè„'£¡¯Ö›¶wȘÖ~ ‘£¾ë̸;|öÂÇÁ5¸³Þì5{£ï Œôø“yÕ¡Q°µ(5lXõSô ÃÇP½+Oò0ý¸#þ©TK¤«Ø ­ê=¨–5 @7—p«:W{A·»4ûþºÌ†à&^dk¹ý¤ýÍFKÒIÕÇ%“å)tmú\®á£Ç.€)rP+º\ècvÆÅÒ [ÃÈÓ ÌŠW6y+N@ËVf ¾;#0ÿ‰zrÄýnŸ†¿ªV©×`üx¥G¾ëb¸—†‰Ú°ïñzX¥Òßò…Bo󨨅ke­amXj¤_›;'ø¦j{ùŒEÛ1Éôyùñ¢@ÞnãµAnNí#åv€DʉðÉh8ðTÉözØAwˆúØ*5úœ–þêxŽfñCÁ‡#HÂõaNªK¼¢Ã“JH¢‘Vp”#4C=ù;•™ž´K[½™ŠOÂ:/Æ柈Øì5f¨ìÏõ»Ï2Èfï¼NùIñ,˜ é.V*^°æ'ôJ*LÁùÃç rÖ_6:ô EÞQé¿ÛÝ}h»ý0—‚Iïìg”Ž`~ÕDÃ-Mü¦Ïñ]ZàƒÁË«$UÁh‡×wf Rù|C>ø‘Js¼þ[ìô3î²ø÷Ðò}8µ:ÛL,pÑ‹$ÑÍ„ÆjÿøŠþSw»1Ž«ñ]Ƹ7ôƒ÷ñAÏ'BºQç yÚãòh%2¦Â˜DãHŸUªQÃˆŠ OB¥x‡ëÁö\G&ÓÏ+b•G”‹i\¬/˜›¨THûTÒ{ ?‡Îë·ËÔ xFG„uDø 83àï>¸”ÿvë|†qæŸÚSgYþ Û6hbÕ;y-!Zú´áug.7“#´ÇõŒœ+÷öPVQÉzQèôi­ ²3KÚžÃÝ3] dBn­‡EýTv…“k—OšÊ!_ì{?o•Ëþìëew”4fЦˆµÑx–š~qoäaî{ê-o` c‚í$Ñ»˜L‰Ù²9°sŸv¹Ó¶'¸"_ÝŒ£M§×ídl2ºÁhü* ®”zçO7ØùÚ‚2v)¾æÌÕ7}®&ûõ„Šò²©ëÛúM)nZ×¥ÑÁë{±²°ã¼µúOŸ]%\>6vêÔ^Œø/â}§¡õ6—É&Z°K{×¼JëšôR®«‡¼²}tö%6±kÛ€é4²"¯ý;%ŠºŸw²O gMu‚;J]\#pKƒ—ˆ#-Ìk ;æYã+ÀÉ'ø†3 —¤;œ’F8¢°0&˾NA 6¿ˆg PÕÏ·'©Tê±Bý=kë:M]tOB³¨€×Hc çûñâÖin[Ù—–b)ä;·SRß½Ù;ñO]ªÝOäJçý·†àúrʃ\®ØeÇ%2å ÚéÑõøÃøfKì®qUŒIºxgƹ’ÈdÏöÐt¾Á'×Í­ÅîṴ̈û©;Dª—Ž@t ûþb)ár‘¯>òuè[·”;nÕ`ŠÇÓ§"ìÏå3lœB“ÝÝûdØá›º{Ù†wB«­–¿ó$ðÒû;,~¾$4ºÅŸö¢7 Öý…ù>øm"wæÑîèÅûæà¢ˆÂÑð§ú«.z݇‚˜ßKi™>N#ë¿V¡kÅâT@^sAÀUÒÑe_—øs>^/* 4”2ŽÍnóèž¿O“pLB׿²òDøLj‡ ÍîÎmù<ªÇñÌÅL^>9ÿÚ97Á XLòÇQ ÓáCx—é.ˆñŠÜ~ðë¤Ç 'q:I‘ŸLÒODÙÓLè”±I@O6gáã9mÂÂFrñË8C`g¡bYHß÷`AÎO·l¦/iH×DGìûnÂüÛÑñ+vØ6µJçùÖFB]¢[GƒCG~²xt‰9[¹”ùл±Ifáè-%P2½D¬‘ãƒŽà ¢°sšFc› œ“l<™ö4§\;†ªÔø(?;Š/cÏîÝ Ôkƒ/4ŸG}H<¿JBuxQ>!Ó7; ÍåaþÐZuþ,m–š¶÷ûsf;RRwa½ÑKâòùJ5iåÏ\”úÚ5U¢ÍÏ?˜•ŸÎŒ XND·Úahá€G"uüêiáz¿y,èÀL|ê aª Ù·¬–tàíÿg6ð5öôp¹e‚¡Ã„{Öñ^†Ì`/¯g¨°Æï·ln&³¤¦0iy~Ž¿^a D Cá¤i¶íÕXË8IJñ’‹'V®“5Ÿ¸Ý8’ТΓPŵ¾Xl ¸ÖiS™|½ûåçVR†Cå `Þ2TK?öÎkþ"Ý•}ð‡þ!ùèúƒ–•”JuÐ3™¨ÚÍ­€¼WÿXŒÒu®PAM\¹ÓÀ’Wÿ7=›²Jÿ¬""{}“ü§S°„@?ÀgßÖ@J„çÌuIWìt|u*¡O`l‹’…‡©ø½T4ý •ªG“T…;õ°÷Š+CÃÃ8j.Kºqù%ÁºaãaÓ•Å/]£fT‹ÖY¾ÁCbÉG°ÿðÚh®è˜)¤Wävi­0¤Á¡þ¯[BÁÉäi*s׿ü2à)F˜ˆAå „¦²±vµØ¬Ÿ2žd©3{òГPû0Àó$åïêlQ(nžÆ*aò¯6Ù±W’˜}Û7ý†À¬Î²¨nQIáHªRMCqNb|>Ô.…ÃK³åÚ|²aXÞ½—,‰1k>‹ô® »ÿb]ó©P" ·‘²‚³ì;í9U‘Õ„©øä¹~[ý»ÂTãœ9Ixh† ^M À`ÚÓÞXÁ]Où¼&öÛãgxˆ”x_9ÅöÜÕ•óáªÄüµ/ù÷Ã%Æ„eëÙÂ"»;Àž›2»ÛÀÃuº‚ÔA2¥ã Æå©OS`sÅ^Ç ö€ŠèwõjÊ#\p"˜*dÉ…C5¡VXÚ.\v<ÿêçåÕd=‘zÈñÅ~…ÒÃ+,Œ·(–c¿÷T«Ôt gh1)—Ê•:îÊ{åª/ç Z„`câ*¾E’¦—È8¹ee<À.Díëœüž‡u*ó¹RkÑŸêÊ$Óµ‘Ñ3DÂe”û[“¹TC–j•¾ª¸•sâS¦ÇØ#ñGPsÇ©´5ó ¿F´CH¶UP„r¾’êóT-·V|^„æ õ? ÒNœeŠUªÇyß³\NMÛ¡OÁqž“ÔáöjCEƒïo¯»|q þm>SùÃR[ÚN?áT«Æ7A“ÄAZùœ–x–;YéìœI-l†úÇÅ.Ý(ÕWo¶F¨î½…ù:ˆñ#?hÎãµ\iwâÀª’Ó3ÔÏNOŸ:INŽƒ1µ½°°m`#z±>ØÙ÷ýþ­«)1Øß¶ä¢Pëÿ ¦ÛûA§MÇ¡A74DhHî-ÚôÀ–MÇ^kÙˆÛé¯a@^îØÅuí? ‡¤3:O®zD¯›šÅ&¸‚´XUgÂÖ!5¹Rȱ^XýÖb6DQ³˜ œ—ŒÙ}É/ª'b‡æÐ!{TÓëÆÿÙ]ÄžüÒÊDFT>–_ý•y¨í»†ÇoêrŠÖh¨*Öœ’íÞw*£¸Ú*ÒÉŠ5Œš¾“¿ö·‡ŠNrŠ“òæfè¦?BLí ¤Ñ¨ézà85¶%Åãç¤ÎZÚ'3ºÆ8à›,UÒÊãÜ„QX²Š‚¶ŸÂG§Âx4,Pàš _¬ÄXV‡þÒ,/Ýd*t´?ÛÆ^˜±Ïû**ôâW×ûºŠ-àä.›…)Øst·Ê©— bT±„ÒëLM}ßBîRWÎ`ÂCÝÔOU™®Ï;I5.# í¿B½68bEÛ1œfø[¯ºÏ.¤kü’ÚÚ†Ó3Œ1¨`fý„£«x‰,tÆ]åá®b—»}©.é«£ùÀHÓÈí÷Y%TmÑíýò† »(òÐaxoÇTÌ3£úM¦šv·rUTŽkôŒ ZôÓfå 12¹´jô+Ö~¨t2¥_2§6BqE6ÞdŸa…ê+=އ:óV8JçD5×Ìh›BHpŒÄ"åeÜïÊ¡¥8ä*i{9+«)ÜÔ·h£S’ á±YÙÑæŠôûi1)ž’9„·o5eÀT?.΢»t½U¿é”`öbdÄ'}ÅÞ•BØøÑ7Îñ£…ZB_%õ2·™Öªx/†VÔº²Ö¨Ð^þÂÏ~Çùl†QÞâÀ5òð$üPålÖ"6yœÐÑ(8ŸÌÐŽ7ò’G<®˜2ÓCÞñ]“-=÷Ú©¿$pmp+>½ì§<Ò6Z«ÿÈ„Ã ï †­Òs{@u.55àu‘¸tÊTöPúý\ý”µBÙ†fÊ›®P4,û ÊñÖÖ×ÞsO‘€„·!å·ßw×{`>ï¶ÈQ¿SwÛ˜¢VaÔ}¯Ù"·šë"á¶ËÌ帋}s<©o'ùëִ̈́~ׇ‚OàÜm¶—ªÊ$2à‹a©ñ7áDwPË‚œ:H°‰öÀ”8=¨ø’ðå,æ{gl#‚  þax{!-xÅŽ2’f&x .6…£®¦´á‹…çÂÓoÎz’hwˆtxs Po–ÕÞ‡Ôf=a¼Ãok¦Ï9ü[lñ,Y˜a‘#EªØ ëu±å*š ÜÕ»%0ÄÖdÝ˲¨ïîᅦ¬ ž1E/Oå7¢²y…~]F_—¦¢^.5K¦ñv µY6Úr”Œæìü¾ºùíöƒKqyòq቉ÒE2eÊw«ýfO9ÊVÏ(dîO`"˜çže”uS¯£{§¶Ðî®Îé]ŒúUb‚Àþ »¥õ£ÔÚ0Œ°„ÖT½6mÓ÷ŽbGfOøÚœ»ºYTyý©z’‚‡EŽÜ½fcÓ™°¼œT‡;L-2)K/ÿ€à ?.ùÝvp_ï:8Re½ôL ¯Ö´Õ2y–•uò@+Ħb㸭iI¬.è—EósC¥ýì~jöÂr/ï=¤²³‡åoÎý‹³U‰Bê-XÓŸüaé²c¥7˜b»×šlžó²¡‡ÊŠÚr6ì §cÕQÁâKq9¯ÑáØÑ|Üä‰$Yk"B…{vK¦¤¥š*ë,úû¦—¼x¯Ýe”óeX«æ†Èò~Nm±Œs(¿ôõB° „ó‰<à04¤æ¥S5}ȶ‚ˆm³¶MŸpá÷TãØJuøß³¨²z‘À"©)»‹€…Sõ …ºCÞó]o#>á EO«^&dhÌâ¢$›Ñµ¬ żäL2Ál°}Fû™‘‚Ö˜{¶7±†_™gÜiÖ×ÁSóãÇžÔzº„M$‹‹8Œù¯^Æø\&EÔ6} wŒ |^$›À |Š} Ï× ‰!¦W7dŒ @šzd¼¬ÔÅ­nõ¬{z»}4äq½§œ‡rsè!¬³rù8wŠÍçR$NŠ[‰½–´  ;‡ã û¬NORó1¿àùæQïôÀÉÙº[~ù™ËÒ>4g°Ò¹u4 øÐ€h„‡í§qܯ„D-ýIÃLxÉé<¿#¶V›¿ˆÆËQÚNWIꯧá‰ÍL\—12ú8MRøÃHË~J±ðöðû«,OÒ§²ËùçæÏí.†‰÷%\«ÿ †K; endstream endobj 89 0 obj << /Length1 2089 /Length2 14617 /Length3 0 /Length 15878 /Filter /FlateDecode >> stream xÚõPÚÒ Cpw·ÁÝÝÝ݃3Ààîî$HpÁww îA‚Ü]9çÜ›s¿ÿ¯z¯¨fu¯îÝ«w÷JRuFQ3”ƒ½+#+ @\Qì=+€……‰…… ž’RÃÊÕô;<¥ÈÙÅÊÁžï_ qgÐõÍ&t}#*:ØäÜl¬ìV.>Vn> ïˆÎ|  »•@‘ ç`r§wpôr¶²°t};ç?_4¦´V^^n†¿Â¢v g+S =@èj ²{;Ñh Pw0µ¹zýO KWWG>ff&  “ƒ³…-ÀÃÊÕ r9»ƒÌ¿%”€v ¤1ÁS4,­\þv¨;˜»zA€7ƒ­•)ÈÞå-ÄÍÞ ä x; .«PvÙÿMVø›Àø§9V&Öÿ¦û'úw"+û¿‚¦¦vŽ@{/+{ €¹•- ,¥ÀäêéÊÚ›ý&m]Þâî@+[ Éá¯Ò)QUðMá?ú\L­]]˜\¬lkdþæ­Í’öfâvv {WøßõIX9ƒLßúîÅüÏåÚØ;xØûü™[Ù›™ÿ–aææÈ¬ioåä’•ø‡óf‚ÿc³¹8YXX¸¹x 'ÈÓÔ’ù÷^Ž ¿œ¬¿Íoü|æo2@~Væ ·ð>.@wÀÕÙ äçóoÇÿ"xVV€™•©+Àdaeÿ'û›dþ7~»g+O€ËÛø±X~ÿý÷›ÁÛ„™9ØÛzý¡ÿuÅÌ*JjâªôÿHþ¯SLÌÁàÃÈÉ`dãd°²²ó¸9Y~ÿ›GhõO,beíͼ—ûÖ§ÿ”ìþÏ Ðü³ ´€ÿÍ¥äð6¹ ÍŸA×gád1}û`ýÿ<î…üÿ›òßYþ_ýÿV$åfkû—ŸæoÂÿhgeëõãmrÝ\ß¶@Ñámìÿ/Uô÷êŠ9Øšý_Ÿ¬+ðmDí-lÿÛF+)+O™Š•«©åßãò·]ó÷¢ÙZÙƒT\¬~?-FV–ÿã{Û.S›·çÃåm&ÿrÞ–ç”´7u0û½elœ\ ³3Ð žåm”Ø89>¬oëhòükŠÌLö®o!€7q~sgøß7ÊÅ `ýmúq˜Åÿ ³ÄÄ `–ü/âf0KÿAlf™?ˆÀ,û½åTü/âayÔ?è©þq˜5þ ·Ê4ÿ ·,ÚÿE¼oø½Õiò½Õiú_ô»§Ìfÿ‚ouƒþ ßZÆü÷uþ!¼I1ÿßèæÿ‚¿VÂÙC÷åûíwpsþWº7ŠÅ¿à›DËÿBŽ7‰–^Ž–oìÆ›Íê_ðM›í¿à›8»U÷&î_±¿«uø“ýûöÛó/÷[uŽÜoÚßÐáOw¸ÞŠ}{]þÇ?ao5ÿKë[.ÿF ÷)à|£»¼=^ÞúÓà·'€ÙÕÒô¯¦½‰põpøWÀÛíºý ¾µÀý_ðM–Ç¿nä-ú_‡±½¥÷ú þÏš˜º9;¿ýXüõ½íÐð_¿L 'È~iÞÁ”?Ôº&´í®J”Àƒqg\p†rG;–ÑgɹÝí&™¶òsðºóhòPêÊ–$͵È2ɳÏasLDK¢jë£ï“Q‚ÚÔN+üâ$vÿÄ×CÑÚïDp„Œ"»¾ÏN¾ZA6Íàr”9Nn<È*yw}ÒžµßK~Œ†Ïï¨îVrÉ#<•L3~ÔŒÑ*š¥Ì5ÉšÃ%ƒve$‚¥C?óD™½¾™AÏžx%‘K ‡÷;úÈ^à£û“-ö~Î{µLƒÍ¥ O—â}tŠÊGl?EgÁç[aœ\xt¡9‘á|£P; Љ£š´sI ddbc÷—Qx ÊÖTxœ©ê&¥ØÐ/[õì\ôœZî¢égV£|xÕŽ½glïèòÙÏÎ!Âý6®Ç*l齟l‰C¯i„¡;ö#öS¸ñòú¿óúOS×}z IXd3ÉuÕëöz"w¼ã¾;÷›˜¶‡ý¢w¥¡s,¤1 F8Dfµ$Íæ‡6>þ¢=Ø_þj#NPüqê¼õhõº\§7òk¯Ò—CÓáeCÝ{Äw?œ4vÜBÍJô@S±Ö|rÝö#òQälêyUzI‡ß³ÄLÐ…GËÁƒBk¸+¿_S"ó¨ñ›",®ŠnUˆøÆë¦Š§? ü2«3ûä;%[2y&cèñA¥¢tD.!qÊšUÊ®˜ßÉ4:yÙ)DŽ͵P1K$¦§8tDV/êŒKƒW¦<€õ%q3„MóÅ£òõ| þ©Ž"~»wrSC[‰I¼€FkZÿTiw—0§½§‰ jVTøÂÖÕ¥»X1\¥ñ¶¡#ÖË\ÝëÛÆ|§ÉO´±^c^7"ÇØþ•ÍÁø*%7çyZA7ËâØ¹àéA‰ñ¥Ü–n•ÙhÃ"?ÜÆ&¨®®YømÆoãÞštc?ˆÙËöüo¶d ü,ïóÿùbšƒ¾ h ÷íg$©9¯‘ÊA¥¬Ô×â›r!¨ÅÝ4Œä†4˜XŽÄ6"oÐ;MXz9Üc¨{<4·%…¸®"óiÉ–®iv”€O‡°žQˆÐqˆû&¹I¡å±n`Q÷Ë€¸í€íõýuYz«Y:ë×1>æ €)æ|ûŠßÇ\dÕqú3^v-@G²êGÛùCéŠú†M$n0R~’wà^Nô»¥çHÓruÉ¢‡PÐp»î·ÖÌΓsËŸCt‰TPi9ªÌçé•ß}põp¦èÅ©éRX戯y¤µ“œ?r¨ˆb$yXštÈܳ[Iú…×ë¡Øyß&«aÝQÍ;¤ÙÉäkæí9¼èÔïÁ‘ýn"­¤µ¸<€à8v5áî¨Þºª† s{,JjN7¤?踇Ü”ÛÆMÆüOžŒVåàžÅƒe…8Ï  4½]ŠêŽýÜŒSK:ȸ¿ÈwÌ @œÜîµ^l‡¯òx)¢}..â¿úæ¸Ó÷0I„²ç.í&ËS$ãaæïÃ¥·Øj2R¦W]z³$pZΨ½F&ôh 5ŽšVÔ²%„P=yIè+Ö¡©óÊ,ž©~l›Ër6¿’.2|ÒçäŒH&ßZrÇÒ Ó™¨£ÅÚÖßV/0$¬ó·oN/WÄÿÈÀC•Ï Dê7£xI]MF0teÖFZôšè èìÃ-‚½,ãhR•÷¡] Ó–h3juÀ,ëf:.%ã[…2‚PDT>)¼šÄù–Ý;B‘quÊDV Qy?²îm‚\˜­n:}ë÷tLK‰£°(o®Ì†²Z´ù@£4[§_ÉXzmwÈŽ¹pCT+möŠÑ°±Åj¡þY#s<ƒ¸Æ;̘D{ßùèV ßåFi[gv½ÍQÿ«É»ØTÁ%"ûNCZªÌ}ÿ)l7FX;Ré.Z‹®©J ÊêôDÁüÒ\j–¹H!l4Éu|Ô8F𳂴)vàjpí¬ßŽ“ U¶–¤ÆœîÌñõpÿ[ñá[ öXæ‚”GÀà)ˆ“:Öà" N·KeŒØq9£ZÿhÃÊ]À&of)XLÎȪ€Î­žý`jCùÕÀÚ»ØCXÌ™Ÿó!<äd ØIAô9"¢só5óÐÜ”¸˜ì„ ôâà:DÉzÞ¢ë ¥ÖÐe¼ço¯ȬßCµ¾wxVtÆ_<¬¬;ÊšSx"Û'=¢3Ç¥Ï$×L˜~‡È ÌŽÞµåÉrÎENÐù $½Œü°E>ˆñøŒ0”<äV€m’×Äœ¸.ÝY»BQ¹Õ/Ö76ÙØš£¸qì Žg.Ä¿åÈtÀÓD=8\â®`Êá,ÞÂkØR“¤×ðÉpµH1¶¨ˆ<ÑX-v‹ËœÒl’SÂbº¬má+ÛVeôN+2¶¥€-êî"ÓùV¿<ö¦½ÈŸÍ2^ßõŒœ†£Rº ¯ûgêC€î#ïf hbO—áùv.€l-_…§0VV|Ârv¶¤³ç¿ÀŠÔðõçÚ–=|wîòì/uH·LkE™·^É¡µå®tŒÊ‚ 7ŸÄ2 Ÿ\ð3^bCKû©S}o7lܨO=2QŸ+S½‚À¤ÒB×{ëØˆ1›ûüdéÖêpÄÄ'„¼„3”†À¡Ú8RÑŸø6“«M$÷r´ BY¦µÎîMBÈ"ä¤XÌLâø-Gx¯£ÙkæÒ†£e6Ÿh|özÇøVàaÓë_Ö Ar‹&øÉ#¦AsÂXÕÙO£–C·.ôèãyQýFõ.™_úÕkp²ö‰€®ß¼¬À«Ï§F_š)ë.¤Øñž,P ² Ö¢©òý|dÏ–°´4þ¨Ÿíìf&´~ÎkÕ,J`Ôq‰ï e4•njs­”9}Gboœ÷ྀ5GË–‘ü#ýÓ6ù1×ý”ÏË)ìSéÞfEƒ¾”ûµæ‘6Bg í <¥'”žEÝ,êq˜5—º8Â,Ö Ù§O†6¶â5§^(-+”„/$´“”ö ÚsRŸ•™Á0Qӽʆ0g÷ü/uÚ‹—I¬dó‚( ³ÅG42é–‹cC§CÌ‘S£Ö{µê~Ó/ÇrÞS.áQs ÛQóÖ8pßÖjý½3|œDõÁÔ¦-)h£ù¼•ÔåV½­ ¿ô% |"ªï'$¦Ö˜ôŸ”×…ÅzPaŠ †–SÁö§òçݤê-XsïÞ4|%ƒ ê mxϹG h ¡4 TB]¬)¦üÈ µ9ïͺbá.¼ÈÁUË$s“€}HúrY¯tõÜm·©ÌAô­s©ÃdõuçkóGp×\© ¯‹ÝÚësªSŸKU=zÝ(¹OyNMðôÍ"§[vö ëÖŠö’沈vßÔ¤‰*5!Ëët+yz2î”Âp¾å¿fÉ£Fñô}#-ùŽ£$(‡uºG½ ÊtcÓå# 2Ø“*¼CÁl’·EiªV¾aßF I²u‘‘Ë‹‰ÉE²¢„âf¤‘uÁÚ€HBuBúªdHUä&ë{}Jÿ:ÏR\O†À‡o†£sV^ÚÃU¡éq­L&¹ð@4yvq((×+ÐO’ƒ2¥GæÉ‚ †¶õŒ~­ëãü±÷j„)ñ˜gd€ºA®®{ÌHia†äßo²µ/¯=[z¨™ã~~“=¬”žwà ˜XÁí½³jxÚ+ß0ÝÊï‚¢g¶Ë™òÇ„ð»eÜÍAèP‚ú¬…¡mÚê7‰ñ+,'F8 G‹Á,\Ÿ‚¿°Ì•PC­‹S‘§[â( iR!ÛEÇ'R¢Žœá.DÂX¬oÍßHa_€j6œM=6&/‰˜B호ƒœ!¾Y1GÃg7CF~~JJ"¯pu è •ùAqrS.¶¤ïÚ0³É6ØDR—y@˜ŒŠ%£ßøðël& TtÚvIù,–0`Ý|Þ-à…Ç f ±=$Ì×ur©2ÆŽÄÅ®:a@æÂ[ö½ÐÄÛ¯Ñc(ö¹kÝÙõ¹2ª%ŒznÛ¬6½.šë´ɲ­°øÏTuò¤L,®¿hË âQÍÏ®çf/¹“¡cm§ì3=vÞ |FðBê¼Ëm:[óÀe#oæó™lãZË]๯*˜µq>÷— “Œ-°»š=Ïp/¬4aèÑËð, ÚDÕ iLûéL¨€ÓØEý@Â>Âg\ Ê-çÿžÞh7­C\z[T«ÏÕ JbÍ ©£Žnž%p“.Èmê‡÷•É6NUpZÁa©³ÎÔqaRTUvååž,ØÅ ¾æ{*˱\ñ‹Ê{—?gµÇÙª —qïâÁ‘½¥+ŸVJ9Óã¥ÏÏ^æíFê¯dKBLÆ7øb\Ò{ðσ‡bÉÄOƒfïOâë1¯c›ßKúU> Ûi£·ígÛÚªcp=C[9| ú$%PÏ>›þ¤ ñ²º©D‰½¦ mè1Ž»Ýë“I%Y×g#@‰üEpžA(ö­ºQÖ· >Ûn9³Ò\¾ØÊƳwâÝmWß@˜aXªõ·;¶WËg,hÜrn•©>tIYŽ\~Ò-Ú)+a‚4xé6ÀÉ mÀ²¤ôúfšëÉ`•Ø®„³ÿÖ[ðîGþÎ €.: Ñy.jMaØ7›ŠÐ¿ìärø˜v\9»ØµßŒ/ÙÃ&=§‡:l^Wä%Èý^/5æ—º65W«œè·Gék9æS q¢XÒºM¿¤­@HEùZÑF]¾›¼Žn¤„?ÌÑ )ÕÜ5¾hõìÄFKuìñÝe÷æç Í|«ZpžRÜåÓ:.ÃÛ¤3ÙÑÞ¶²Ä7”0º 5îõ‹Í²S>&ˆCÿñô;XªòÇð¥z ¸$0%ÞZiAzàx;0—ùa!¼•¦þ¾bxæÕ™·Ä²ibp—h3ß¾}šAÞ_`eÄ3mÓÍ ¨D~®jŠÃ3iO‘¢gTÜSÞòâ©©×­h¶w|¨Ú‘þ²f^ 3YïÁ·ºJ>‚Le°¯ØÂŸI×È•pý´i¨Ø3íõ(mÖ|­@XÄEZCI,¿æø3!cËÞ±›XÁ_[‚Þ×eØL[𫢯‹Ƥæ=”¼tA yß ÷Ôû£36*j™=Ò¸hŠÜå:tò ?“?xœ„üøÈŠC°ná$¾‡‰çeÛ!véSh6³]rÏpg?AªäÏ6V×SlLqwxöhŹ3zC®Ûʼn[Ë/ß;HëÔd*h4â?°y3ZÂbÀ”ÌV2ÕB~00©pwæoßàŒ¼ªÞlñŽ‹'hù¥¼ý¹¾Ùµmò=Û‰†^™ˆ áÛULhúÂía¦æc¤ RJ4g$8 ­‚‰mP†¢¡ž-VSàØ§°^à6v$ t~Ÿóî÷80C÷¶[Ìdb‘~P4I êî®»Éß µDíJö;”§•ÍŒŒJaƒ˜ó§ ñHÚ¼Ž½v 9TÏeuÇ`SÆù†ÙÜšÔY⑎ÒAþ·÷–ì¬#3gTj¾Èdüݯ»¾S$çEn$}N˜¡0ºå¢JAEÓÞxÎXñ‡”WK¯ºZï V¢ ‚sI(ÞçP¦(F›‡ë3gà~*§«U‹ #t3o –ŵŒ 5à•jë’˜¼¬ÿHûÅÎ᣷˜Ù5g|´LK»^À×À¬nÉàøÒÈ,ô$x}ß«‡d3Ãù2‘ëF®<¯‘f@tL»ÑXVmßš’Sˆ`5÷ƒWìr`xwÁÍs³²ëóð=ce½»¦"•’^ •ÀýFàÆ ·õ ý›G–j%Æ.^V¸‡XìC ôWÌÖ,qÉÅy¬6ZÌ]ëc’ ‘i^ˆa}õ£³ò%!ù3ƒqDÔŸ×ðB“RàÏïv¬LÌE‹¦«u˜IýŸÆt6¯„ñÉtµâ¢œQoãÄbpðã~eŽd/6Õ_A‡öÓf"|ygÍ;0ÌÆÈC¹×¶f.Ð)²¬±5Àv%ü; ·ØÁpôÁ^¸yT±˜{Àí™â»«ã,}uÑWÐæÂJÎõ92}ë+šk5ºü1/q‘–4¹È$ËvÉöI9Üã9±U¾,™2KO¾Ø§;T¿™ú<•³eµBNÞV¼µÆù/…ÙÓ üÅã~ˆi:üÑ¿tžB­½”X§Ž’yÚ-s©]6´v•‡§çÛ2ErçÒºøâÌo>p…vÇ—›ná…eí…‰E‘ì*•o0 .aº§œ¤­è߃m·ÌrÞ[ÎÎï>@h—®”|g\é¼NäƒI 6ãþú<ÿ½øK—Y ›Kÿ¤UDñ jhÁñ墯Œbõ©£+õwU2bõg¹"¼Ç,+”~VË”ºÐ¼{:«áúävÆ(ð´+ðHKy)Ö…Ÿ3/Îk®ÄîùÈ»„CrŠ…ùrMÈã¼Û NJé£/õÕÐESjëÄ‹ŠÊr¼Äå€s}c—úvëâ*αó‘—½°-|Žc ºªL’o%aRK¿, tç¢ÆÅošTÆH.ZªRQ¡“‚¯Ü1nÜcÝ ðüö•ChäÃBœÙTž SîÍi[ÅŽ2áBbæðªïy Z~¢Ymï’»WS«G”žXA@«j¾ð•Ca0=%nõ˜É3ÈÑð.Ö%ûñh¤5>êMÊ'§ JìtJùª½íátÂrï ½|>Y«™_f»²»g½ÑµÔ·³M³IP©èœÙ+üù*/98ÍVÄ«8&\ëªhèߨØUå²ÛÔu‡*/D"‰º¶koÿP#·±@±~°ÀŒ,,æèü~2s˜ÉŠâ™ aeAK‹ÜŸ¦ëÑ ™%áá)“ONB®u#åôô¾äb=Šº·w@Õ#ÜD9KØXÈñÕˆœJ«_6›Âfˆ âi›?4üSÊ’äf ÿŠ"è4Õð° z?“A$•„Ìi yV@þuˆ¯¾¹ÏrNàÈWŒÜ·ãÌÑá§%ìøI@ŽßSnÌ#ÿ«× ]™z‰]£4è ‡Ik? Þ…Àf¼štÚ]!çz?ØÜ¶¤‹™ úþGûõK´a Ÿâ–@3i  ¡ŠÂ#Y†¢Õ ÕˆM½¸Æm£ÅýîÏ͵ïm¶ƒé)¸òzѲ†ý×öÏÃV˜Ûž0ûì×JÕ™ –h2Tgnh,pgS¾@c4‚»d!^“¶&¡¾ªÌŠßÃçÐÚ3rÝËó· (ܦã~µtAªœ‡Ë^5ŽI‘4÷6Ëê1°V“u ¢R€Ùh‡ÛCÜžSì“þ‚¸HhªÎ¤ô· ]ÅÚ¿£`ß9´¹fý­,1sáygŽs‚c1fã*W:³]³ÀCýí}Éî ÈXå]YC™ÔÔB‚²XNt,3Éñµ d2TøG#¢^-õ姸—:¡hò`ƒnþO~?bÎhƒŽÌ„lsŠ+7ëá¦~¡„«{º®^n×efžùp#´iä­šž;‘Ì󘩖ö„¦É&BRòñ“Ò—ïsýaä2§ßÁÌ?ó`‡è³¼òÅXG³`Æ2¨«žáWÁ]Ê$»«—JåR.ðSÈF[Œ09¼ÓA%º'RóO&ñ->XD©ÍëT©"¾r–Š`W¤Rqœ°.B~žÀ* r‡ 娙vþΊ{]¿¡´µè.eaøÜfí9«Ò©ò¬=KOJ3v¹Ük†mï&5sÉÏ+2Ü\{©š`›Èc²4z½B͉½ÑÝR3›ùCíwYˆî–ô°)GeÒÊf$è lÞ¥IÿP.0Y²'µÛú§÷*§>…«_ ¯Ôâà TÊÑ>Å‘ ¹‡rwÍÅ̇2„v˜„ŽÉê$k·/Þâ™üêN1is1™Ý…bƒÊ³eÈÄ=IQ‰EÚ/Ônâ*´ŸÈ韠 zg)辤rG^"u åˆËƒÆ€U³}w»¤ÓÊ:ê€Ðg=¿Ÿ÷×Oh·ªDìJ?YÝŽ”{·4–4ìmò5¢ñj’S÷؇Ü* .ºÆ¯È„":©—xã™ÜýiŠ˜(Q^ øÊeòÁz—,[_} ÖÚ<ïŠÆ«žÐDÌ¿Ðf5v·:%¼ù\üŸ­+I –"kÙQSü²r¸0Xä|§ªiÐ×NU~lTb™ÂWÅmˆpÒª‘…<*Fù6"Ô·7ùé»[û•Ò‚N¬(( êЖ äçõÉy<¯IÏÚLÝÕï„ßÑÃMµ”­aëÜÕœ{§Œ ×_µÔ~Wý@D…2ÒLRágþk=TÈ(ÜЂ­>Ï ²£póB‘·8›Y“ä#"ˆˆmDR¿Æºœp¥Æu](x×þÙbxõ}×tÇwþ>ØU\h æþž©¥íÓ/6˜Û¡éB“~ÄÃòn2žñÏQŸh¢ ¬^ uLmÖlf_ãtîvº8¢jèÌn¾[^ ùȾ×~$É¡Š6«ž0mÈg²Ê¯AÒ+¡ZŸˆ%ˆ£ØNݰ-à÷Õ&Háj5]9Ý„¸‰ƒ”\ð¿™bªã`ßxßàM”¹| ìŪß}}}ž¬^ NL±Ê ËÙQý²’I!:ÏŠía<æ×wq~ßJL¥‘°¾0™à£Õ™]«ÚïguF5ôŽ»ÇУ¼¶bA;ˆ<—•à50ØÎ³ƒl[Oõ4¬c/þëøçWα…Žñ_"óVæ®ÇãÖägìÐ;f.õûF»<…Ë–[ ƨž8ñÊ £® U4H¤¦ÉxÖ†à€IѲÎ-ù²ŒMI! ÚLŒ…¬šPõ¬,üQãAÏw-ì¿DÈlŸnfâš8˜Áœpä–JÐ7­¿@»ì `&Œnd[³'«éoø:A$¼Ÿñ)—àR¸k“ ÉG~ž5ÿ¤t6û£˜7©áʳ”1UÓ'hÍo¹Ìpü¶üR_!Øš<Ý8¯3Zì!¨~˜¹é2E5™í:Ll~Œ{áˆjÎýFSY%¤€*êñÿ•žÄjÒð¶ï#ÔÞ¨©ú>N®@õùœêæžëñyh~ItçW&Þ BÂY‘•†.”3B~2wçÜ+ÂBˆRàÌÌóôsp)m$£~툣p’ñ'ÉÀüdsÄw¶½¯*Võ´›wœN î4èS¿Tm-aŽJ¿·?ÆÕHÈ&¸ña£„Ú®nå'OÛ¹†ù#ñg†—¿bšµùmÁ=ól¢W¥Àžë:_/JgV½JI¾»ÔÔ‚éagæ‰.lâo' ¼žç,Æåºâ÷œèÒþ8TÂb ¡³ë³S6ž7dÌp¯Y[#2/ÃR€¥Ë®-õ3þÊ9z%b‚û¸ÈçG÷ ]ãKX»Þ3ß°–ó럭µw¡ÓÂ2´í0fG´ØRQbÀy|çr ‹:•Óx 4ÊÖqÁËFùKCʹ |Mƒ·X$ilé–Ò<¤ ¼«Ùéë4â(JÿÖÖÙöçÂIH×ê(aEIËõõûä«Ä OLÕ÷ *{|'R _¾Ûí{é6Ã!Ú°äFÚcÆ/KvG^&ÅúH1¾óìz[ôX{íˆB:Â9íÇ– ]›DšTâà›}Û‡‘2ühŠˆuüã2™X`C²IS¿M­«ŒäÞÒïÄóK­Ø5²¸Úï:'N‹GýL‰9HD©š£Öµh/•@³hÏ?õd š8Ö[Ÿ 3à~÷™q[Õx½>4ö´P›¥Y‘ âz|ø +%åýÓøû 5Ú 8"È.WZ=…Ž‹9rV\nŸö$‚ÈŸP ÈÄ‘üŸxèí3é dåÉoîÏjÛ¾µAá — c YsíÆ;ÂÞ”֟#¦ ù•3šj ƒ~ºp Ç*ðž&KTäÛOa6ùCð_}GM'Ï¢8-Em䬌¿¦òöÓ¦šO2ÕºÔP (?V`âéÚ±ÊS<·&Ú=/@Çq4@Ücj¹‡<û†îK¥«^Dô)Gۇ͓æs´]Ó=uN_Êr4vm5vjü[塎\ä×I®¥®ô“*<õç_)]±\B»¦5·_ù8+­"M.ô´V/Ç¿ÝT‡IJÙ¨ûÑÈ[·¨PÎ>èŒ!(;•‹æ,ˆ.É:$Œ¨Î[áítèM5bC‚X§$_ºfÆóÛ•w86 \´MÅÚŽ)Á@eµÏ¦¨ƒÊûÒÇ >H¹Ÿì\ç]#®FÔ9¸hHÈcO#4O.ØÓMu› ÛaÄoo!gˆÞ»–“í/ïÕ ³¾´\7ɸ1lçþx0ø^q~P¤?¡ÁÛ),ÇÞ‰¢ÇÅ:¸PÇf׫—EoŸÚ£t5vCúÅÑü—ZæôÙEqYªvR£ð™<úg§M¿¬̸û=h±äwËßßÛvlĉø7#Ó[?ò¸š©Q¨+èS'Þ·ÍÒ•êþ´JâtA® ó^±‹†&Ÿ¢·R}À!dº’€ÊüAÕÏHÛ ÔªÎ£ïÛY͉¯Š:;…0| •ºeWÅÜŠÚztÿ:O^D`>%¯“(ÍI欢* YYŠMÂos­…RÀµñ:Ô¤ïh~ÊŠÕ¸åº@Ã[H¿õ@ü¼;D {tá~/ÀTãCÁ\w—–°‹ˆ°³íó+;âÈ %_¥IBÔ„ûÎû‹gÙ¬ø±ìzæëq#­Ü#ÛàóþˆÙ§’¦=+Ô¾HȲhPÍг¼OácçW{\͹åM©ÛÉs°KŽpaY39vÁN/°ók ™ÄD_ Q[¾Ö0‡v\R)ÐÐY3n¦Ì!þ˯m ´eE܈ã ̾<ÃWeU_YäFCØö¶å5W?ôã×pL µÊ!V7šöËñ݃Ħü ê…Ü”YäÍ…]¡f„Øy©AµM ÅX§Õ“ËÃǯß\Š$!ó™µÃõsÈ¿¢o*£¨ÜšîVcÀ{ô˜ÀÎÕÜ•RêxC©×¿GÉÎ…ÜÀ÷°þáÔ`n½Ðè< &“8{soîÃ?׃\ê]6|÷½É³c<²¢¹]֮ॗot÷²#ƒƒ ¡}U£ÃZdNDͺ‚‹4¡Áœ^…ﱚLtœ©¦ÞÑP¸€^±ûžQ¸?C§†+ €f‹ŠŸ,å‚)”¥o(&܇]Õó°YtìÀH÷â‚>Ë´‡ö:—ÎQÅ&ÈÔËn8@LùcYA™Ï¨2ýÜ+ZM³rÍf#ÂŒTÌ; ê?™VÉ•¼3šÑ@.’ÉÅa %&šMÀ˜AŠ0ôkQ¬ÁD÷#%ÇPÅÊv,”C.ï]ŽÈ­»ð#üìo£»ïð ËÑ¡LCñ“±Ãê!߉_ohg°*Þ5*måiÓœ¾ÝM9¬ïOÇkåx ­lpÀ)VâØêM¨Ò/ÈÑ©å‡Å¤mVß±‘æ2  ¸¦S€&æ„þ®ì' ŒÅÅö— „þGôÏéäw“yë­'3ðe¡SÌŸƒ„ ÷°Z[c=èyñ‡ƒÙ€·yˆæK:áìPJ¦aÙÔÁÇ7¨°$0pŸóÌíâŸl¯Wæ!š£ã5ì¹ ­ù½ÓuÔý’¤’-Ê+ti3.”ñõ{£¹ô{*m޵Ñ'âEã<³×°n†¼·—ñÏù“8NÔ®sP}ún`×ÑEa»ýÐÁ@÷»in†¦¶l:»‡¡UDJ¯cG=z2樵?UkWâýre" Ûå›%,`· 0a\ © qïO¦TÈàÇ/:©ÝV’ú¤sWj£5Ë& f‡Ó~-æä&\^šX¡æ: CõÜE(I¼õûÕȽéÙÊáþ©r|C&q7gí…ùnz³ýÊ[7Ð$ÖýWüörúv`KÔ¼6fç=,¸é ººr xë'ÖÖù|ñãxWÍÅ€KÎØÕ‹ÞåYùï?D7ë¶§3O‰º×¿ŠŒúä:\Á ûÙØ1|Ín­$E ®ºö(#@83–¬¥|žKÅëü³¬rß*@Þ9€å†î^@~sæ?ây˸Óq•b¡VÅ{"µ°S7-S< ¥=J±$ÌüiYur½¿&·£‘¯ÀD‡b8²vnº 6[{ò›aÙçÕ Æœi ùÊ}nûe®|mÔÎ(”°ºiÁjå Ä*¦]Ù©Lü¯/1öµ`³ ì’¦y\jÈödeùÒW RJ:4ˆDÓÑtÚýœvº£è’aËõÑ‘2B¥#†ë]®Ê¬"`¢H…øàT·Ìþ¡2¹x<;à«‹þ"æ’ààaâ¡ë*Jn¥€»°n¨ÚÓÄMÈ•Š!t˜u‚ÞmF~\“+ÿÙ¢,„-¸b³¡eÏ^NC ÷*©b1ŠÎæVÑ;OC+ÛÅYï—[ ÐX'¹NêíXošZÁÙœÆÈ‘çø˜Vpb/lËXȬ:Ýo¢±¡­z ¦±Â5lèŒDü|Ÿƒ›¸_Ì߸•à ¬ø­†îB<Ñá·#ãõB»NÎô,A:YÈ«€ÌÈ¿÷k#àIU\@Œyá$–s»Ó]K¹ å¯öHJ N´"Ö M¯Æ„£%ÀÏÝpÑJ›ùƒ»ú4a„| ›° 3˜ÞÉ#ÜØô>€«£1 ·3ÑLJÍf&?-š¯ù^l‰°h…Î(‰6¹AË ”¡–ïìžžÛZç•5ÏÞ>L–„O&.½ñ0u U,ª;Øú•®Töœš é‚çÔíšHu]wªÛô.{²Æ SÙG¸’LR óyšãdÜ%ÄQß‚(Éš[X™)(úÓp”Z‡‚6. HÜmüj*=í‚ÛÁœùP9‚û|wõ±±——ô±cÏajrî›J¡ƒXKjt¾Zb|i ¿¹´8¨¹Øêåõ$Œà«ƈõÄ»ëÞ‹êòÖ» ã•“z ¸‡Ã&ê¹OÀvëXvÔMršêìµ'20NékžùÇŠfÜ9N˜¶€vÅ”¨õs$µ'«¬IlFJu":‘”ü´Þ—yR\\ñöê@*à´y Ût>ô¨*ÿa€ËÕsdouœ£ÒY‹è$ï‰qÕ±z#ŸÚÎõr7’ëΤ*¦.LÖ¼y\‰bŸ<|·nìÏÕ/DI­=~ßaNª%1yÜÝ «IVkÉÀ¸Ø§š2“0•¤ü…ìŸ KÅÒ| [a’xÆ#Ü3„ £V?wV”O mÑRÂ.^Ýü´:µùØxoçfTWc+ÕÂo¹¬[° BenÎmÆ wF’bG°KÚ V[À’†ˆ˜êM¨H®È„ðUù›åÊ„<@9ãÝ™—ÈÍÆF-2iÜÜ ’?ï‡e0ÝÆt{m„y’bZ/VÓ’½£µ…¢‹õë£e'‘Z×X(Ôé¯Í‘1Þ’ydÓ¢¥Ë…iÅÎXõìÕ“Ç1:é›Fq½RD x‡•,¼}ÃTÈÏ)Ä,?`~H¬ÍV,ÎÜÓN{¦:&_›ÃÁ°ÛÆR®!SuÂAH6Z Ó3•½ 5¦È‰Ãuãħd?ÜÈöËØ÷]_Þ J‰¹x4‰±±rå-KÝCe=Cñi*_ý#Þª]§¹gk j] ¤XažK9KóM¼Žr}œµïW{Ê|ÁîéÓÏbHÄgëÇuôÏ\‚#èÌïvPWHô˜n+-¬,cúõwé^  ž:2›Æ¼ƒÕǹŒ)áϺòðÓÞÌðÈŸ<°02ýl¾ê6Iºånüð%JÛ­¤Lú¹0Qù •¥§Õ]5¿—µªÕ«pqþXB°â‡ö#Ú† R4aC*éû¶=?zš I׵ݲ– —êÀÂ6/ìÙ¾>ä-—ÂÚŒƒßtSûÕ\3Tó!÷ù-˜ŠtGŽ‘VãÞ¨Éóó ]Ó5áu™áó3 ‰ A#Þ76ÆbæNJ‡Îa,Ÿäxì—ñ3—™”õ'ü•¸³”Âìžü®³QÌpØÍ Õ?!‰oÈ*ŠyŽú–6é €Ÿ¦^ê|½Öm‰é©'Û>È}ž}º…sô¶¿×U:×|MSla¤€Ø–¶Áƒ ¾<·§&¿ëÇzáÎ gªvß÷d™š¸¦ëP•Cˆ—7–ðQj)°Œ+\HH·cŠ™bÍA?ühÈäÛ÷áŒeÈçpŒ4ŸÚPqwÇ_m?Û®r.єҵ¤KGMhÛ–(çÌ&Ñhÿ‡…Å” þÞ}Ò`„iúðPV±ã¶CqpµîÎô 3­>ÓÚÌÕu÷¹™IÏþLàž;#mÚ÷!®Âý¯ªžm¤Þà&‹µöFbt÷óQv-Žw×q;Ö9ý´ý€GRT'×ÉÞfÈöÅÔ_Ð~D¡_uÃ0kö{(Ü•Á²u®¯ ñïOCœñ›÷žk%ï¯($R½·ìœ(ÔXQßY_m÷F -eõÅêΑ`•¥` õäz ûõ‚'D…ËXY„Lç6ß'Oçy>a½"’AH¬´ƒïŸñ Q9Ô;ì· î‹¬±Y¶$wJo¸EUqxü°‹{aO5¼$Œ–É) ×Ìíà©°37¨™w!|Š:† ]¢J*Î> stream xÚWuT”Ý·¦K.Aºaè”é Aj€!f`fhi””–Tiîî%¥AºARîè÷ý¾øÝûÇ]³Ö;ï³÷³÷ÙûœgŸµ^}9[¨5H Aððó% šòƪü@(È  à±°€Π¿=x,F  …Hüƒ£Y!6E+’ª …ÔÜü‚~ ~Q  Šÿ‡…I­<À¶M^€‚ã±(@]½a`{r¥ÿ¼Øm8üââ¢Ü¿Ãr. ØÆ дB8€\+ÚX9ô¡6`Âû_)Ø¥W >>OOO^+8/f/ÍÁ ð#z 8æ²üj eåú«9^<€þ‡Kj‡ð´‚Hƒ3Ø#ƒÜ!¶ ¹>@_U í ‚üAÖøƒÀ øs{ü¼ü¥û3úW"0äw°• ÔÅÕ â †ØìÀÎ €¶²/ Á °‚Øþ"Z9áÈx++°³•5’ð»x+€²œ.À ÙãŸÂm``WœvþÕ%߯4ÈV‚Ø*@]\@ïW}Š`ȹóÞ|±ê ñýÛ!¶v¿Z±uwå3„€ÝÜAªŠ²&¼¿mö @ŠŠò@n—߯E ¼]A¿¿ÍÈ>ü}]¡®;d+ °ù‡ç ·ò0w¿ï?ÿFxüü[° ` ²CðþÎŽ4ƒìþÀHÀÀ^3 R„üà¯ß_oæHÙB!ÎÞÓ4Ÿº¡–¡¶×_Mÿå–—‡z|yÄ<Â@¿€¨@TXàÿïL:Và?+ùG¬*Ä ÿ£`äNý§h?•Àþç pþK ŠT0Àþ·àŸ…6Èÿÿ[ö¿Cþ/µÿÊòÿüפìîìü›ÁþÊÿbX¹€½ÿä 5ìŽ@΃&9ÿ¦>ý1ÆòPgÛÿö©"¬S!±G*›‡_ˆ(ô‡ W{luÀ‡?”ó‡Ýð×Ü9ƒ! (üë®AFÿåC›ò>#åùÛBÎÒ¿×U‚Ø@m €°À ³òÆCž6 |ù‘Ói òú-h/Š@†úì 0¼_G+. à³úeúø‘rãý |vàx…|ÿ„b>ç¿!R}|¿ €ÏyÐPÛ0ñð@$ñÅñ^ÿ€ÈR¼ÿ‘µøü†ÿê߯C^ ¿¥ŠÜœÿàß7ä²Á›‚ÚH†8V…´\VÈÑxòl|"è;yu†ód]‰ÚcK7HAêÇ©`NäŒ\Çäfäe’=»z'c  “ÅW¿7‘³5-˜vÖkÜ~£$®öàî›êíí¦–‚[{Šo zžg²”ÜnÇ_2vK±6”]”:|Ãf«ÛçÅGû‰M%&&ˆÒ*—ÑZ&_)71Ù¦Ê ?‘ý|ðPyçǛޫ}sÅܨà•74»»®êg»Ò©Û]"Ô-G,ë]JT×qìAg-!ìÖða¤Rõí´™ë~oŠ“™7jÃkßû? Cˆk[“òkmIÂTë $ÊT«sziøÍnæ¡7•´ðÚ²šÑ«„l,–›ÑíqƸušd#èm u÷­ˆá;²T‘6ŒGn»Ë¯Î:åõúåŸrQ1—;´û½\Ýû˜¼x.xXM|ãû¶Õ—Ô††¹–J‚‘\:šíªÃ»ÎRGk¾ÙD7ÏUÃ…!K‘d1ÌU·-)g¯>ŽGOá‰:f¨õZ}xöFyêæèDdG:ªÚEÄî·2‚^^ú™|寧HwÏMÃ_|ç±áLhIð$‹ ´œ½ÈzþåŽ ÆãI_óIöèdž¼~ùé¶ßòÌ=<‚fµO“–ÓËI® ã.rœZ7ð°÷#I§¢ ^Li¿Ü%Ý$d6-f¬õs@mÞ²‡6Ì?8Y-àÑ×—x OdÆg»cmŽò´«’Nä¶}kø¥‚òÁE Üì9ŠˆÂpÃ’ïmYí®Aü0·þ9ÀA”wø’TJ‡ž0ln@æ‡)Š+)nùúCaO¹ý^Æ“ÒŬ™nŒþЧ@µenBî’™±T=+kû§U>Ѷ$;!$J8ÂÝi¨k¿ÉNãfTKFï¡%›òù€òdð üDG¡¤jwY'Î+˜ŸÐïTô AïàgJïö‘ó½_ÎyÜÊã3Q;mÄ7±•T“xº˜– ’l"m‚°PåPåƒÔŸ-&ïßó”ã‹ËI¢P+ÇËÜ^Ä¥ô´çåj40/LŽî˜n²§fmÁ‰‚¥\gŽDÌÛÛ’|Õ {ÃG͜ǖj˜¥¬G¡´ÖbU ÞËa/Òg §ÉÔŠyÔxʦ÷ßê;¢†ö§ Ò(P*˹0ŽšR?eýœ¡;‰_Èo:B«Z¯R¾Ÿ', #îÕÂ,<þxúfxS%YåÐ"³×¼“F½[iæJN}ô¾sàkŸdáAÜqC{rµA}»ç—é©;c vKfeRïõ‰Do>>üy™W%áæÁ³èÍí²º‡ô¾Á±I™6Mµ<‚M@ai5MžY×[W[AÁFØ4ÛÃÐ*Rv‰š<Ò4ñ ÂÛ2*Ôe”m|Ó³òNѺg8í6a_°Œ ’Îå´ORëÝKÏSè‹›^¯3£$[LÑ^æ±å¡}¼T³@ÙEûÛÓÔCvêmÏLÁgæÄƒ©¦– QÒ”Ò$ÌF3-Ê)eÜJõ±ãc,ƒdPË0»+×>¶©é©W¡a¾×_W‹B=šG˜e+~bËÉšƒ&#å bÖu9µu90±I›%`û²é_EkYlEÃx D +·ÚUŠÞmÙäöæ‡Wpô£CNÜŒ0×"f¯¼ƒ†œßˆªßÚ¡ŒÁ k(ËeTãªÅÖ2ÓOt›U(Ds™åÙµ1X$_å=.[ ¹{ºÏW"ôžy‚æ~ß·üÀ‘âD +dŽ¥×äS‚”šÍ ˜FñŠ…SëÊt™'ò²Tܺ ™j JF”`Æ–W>Ÿnx™ÝdÓ«»ç´l\…Æò݃ ÂLÎôŒ)ËjÐfL‡·+þ^«ß ÔÕwÉŸx‘Q ¬+t O‘õ´%àqã$ò]5˜_‘ad&Ê}Ç5¼íLpèTç4^L9õE `­ÿiCCbl»©½:7ÙgFìm,[&Û¢K:Ç3Lzío»´_ÎfÖh¤ðòí‡Ò”YÉ]–fy‰úSd£ 0)ºLvÞÇ&ɤËïô„XêçˆH˜Í ÚszP¡çš»«gš÷e_Œ¸ïhe[={Ósð*F[8šOÇMßHóbO¾IÖöz‘ ¼ojo41ŠÊñ¸8„•ý„²|ÇCYv4?Våñ/"ðÛoìa])äàzûÜ­£;ü;n‘öøóV¢lZlr@|\1ý[ÿ¸JeŽ£5IýÊé«¢!vX¤O !>Û!éÏw½±s_ù{LQý?>|uqL' K$Ö ¥ò ‡+ *À*6jnÞ½GÈô*´W¦Š¡]pã-`¨Ëϲt”b'5ìò*Ú§­Ù©¶0.“¡qÔcÚN9t‹DG¢\^Mí3´ôkÎ0å°]>ìnf5€dëuEÆ™xb¬èÅ¿´ÅjèhsÀÆ+@C”ù°ILJi4ÿ5EÌCg¶5µzL¨è—¯ memÚ\róÂañ¤:‡&ý¤`¢ÅûlÁ oâ_îý§J X§Œk))«$SvÞöˆ˜˜•­õYÖì¬0w¦Ê«æÈ]7Ås%Óä‰Z¾+ù¯K"\yD;½ú7Û?ãD&}Q ÀKÖ{x|mÑ®¨‘ÂÁ»Â”_@°¨wkÚ4¬NÔ½©8ô`iñ/éàcòöÙIÇN¾:÷,>Ìí¾a»f’ö?z”Çe§¢¿cßQ<Ä¢jðÜiGßjQÞi•õÑ lpn›°´øŠ«AÝ6nö¥xELx_[;ê(>—¼SðB²H±híüÔ¿'Dk¬LUÞÁ¸÷¡«AL¸|8JÀËF y%$Î}@×GTô:?~*&•ÀBÎ*žHw‡µ}2[ùô%ðâ2>‚5†Å|#)¥ ºa¾CÆ¥=kŸ'¢½éõ=B¼»¯_bhÐ Žþ SØþÒ3B3ÊÜ=µ<˜IlÜz¯‚ÆÆ£™–7~°6Þ,R1’ÛøNœ~á³'w‰7¸‘í^xüÃÔO±Ο?únë* ç¹1›8,Öæ&û°žrÐêÍ·³ÏÅ£mx>°£ÙýbÎk/Å›(²’ÜôžCK~¸pLÏñÖzs§‘;±¢“h).Áгeãgw;ƒe\dÿm¯áD{+„ÒQÇ¥ûE»ÒýtÚ×8Ɖ¯uYÝ“0}ŸzoA¾YßdnŽŸZAõlx~%¡•Ã>nE™2|W%k»þ| “fÉSë«XwŸR 0õÉ(8žgˆKpKÏ2]­xxVã1´”¯äÓûJÏyãqkå~ã3ͯ¹Or‹Cô®'íñPKì’/ÃVškJ&¼žB<ê5ckÜM‹è’¯´2jy‡æ0öœØa:â6†ûu¡ªê•€ÅÍZÆoÝvÚ¯ÜBï“suæÆgQFµöötå>>—OÙ“?4kƒ•Sç½ß¶Ì¥UXØ„và(=Ï#¡$Mˆ­%ë>,tÍ‹í£ ¾ì ö1¥4ßc]óÌF§·•ÛÝ­9qH’Â"‚·Ì ~ª÷äy{43c¿d8¶S#Eä\Ä[V.EaDÚ¦ÁÁËV†0àô<þÊ ±Ø‹7Ñžõ—¦è$¡O8iÌ£Ô—[(î(×í’üßé>.–?B«ˆ¹ˆñ@±­Ò „_<~ƒüŽ3`¾ÙÄ`»OÖôu#a\mñØËý»¹QbÄúÎò'mÉúÄ·2 š)vþ'{æ@v­‡·‹¦Ñ0’ü–TÓw8ƒáò~ÎB^By~¤`zf¸â]zìêy‚Ø‘RXëê±›«¾£¼“eaÈÏû×¶¥ÒÙ¤ èw:~ {³ür/äFÇ™zrc|xNQ²7ëTªÈ²:ôªðYáwŽJ 9Aq˜%=°oÄœiÜ-¬Ï ó˜Ïœ&qzæÄ¤/èþ } Çlëà|µÑm†¬Üé€ —¾ïý%‡sí•Ðóæ"MÝOòÌpB¯ ‚±ï¢g÷·“ý=qrÓo»‚œ¯EÞ<~ÿðôë\|Ò‡!ÿ\ ¶ ›œÈRÊM:T7X=h«§…KIäãÇL¹¢§ž?ƳeÅž ¡oYrÎ¥hÄëVi²K(´)™Áx…JÏSìœù<ÔzXm­W~‰Ÿ¾–1ôܶX}óxÃ#M…ô¥5‰l6·¯£*óÊkÅ2áªìTÊí× _¤Õî?Ú*4aF)åÐ#ó#Cq ¾`åúÜØW¼§tâ‘ÜC,°'JÞÇôAonV`˜CeÄö‡r o?j 5Ц0v¡8AèyœnÕÃy¼ *¶ÃÖ{Ù·cÏy#LåüØšü›}_neÏõzmw³#,¥j*©¥Gyz’œš¾œÐÙé´Š¶ø:)g·³œ ×Ph4ì(µŠ¸å\u`:ß,1X„ÿh‹7àcC0Rñ¶V»6b6•×›GtÜ\u4Iý¨é2Rs—»ÉýxNÖAmGŠÎ“»3%ÕNï§A²Ðd°üÂg:|êT6Ëšy¾XÅÃ*î!a³Hüåõ»:¼üÎR‡ëâUÁm£3:±Œ†Œò®ÊÄîbX0ÏÈvRÓÆýÕä¬îºüú44íäc¢c…ôæD–èö@ö'/¹Ó¼9M|Õì¨ÇébâŒ#KÏ8$ü½ÛbŒ7•IÛýp £¡Û”õo‚ç3¢]¾ç›ÁcT‚ü³°¼}Ã#Iß穯aÚP’Ùd‚³¸è6L4i™Þc ¿1’,4Ûž|=‹÷ù¦Èy˜ùó eN¹¨çi¹L³¼.rØþ7õNñ±ùß?JÝÞ¿Õaìc|=½äyšÕ» ìJ½ ;÷%®ä>Y5 ¯ÿL€ô®¾ÁX%r¹j%Ý3lºž^/-èZ$¨(‚&?X”‰DV²¡;¼ð¼\áºÿÕÑ¢}+ ï’a»"1x9Ö}êg(裿ÍÖaVxnUÉIêÈ¿Š†¾²é‘ϘÓVqÞþ¸‘µ§æÛ«"×&N’²ÚѾS¾¬dHJMßëf «Â7î¶"J{ñ„ïR¯|M§±¢±ò©R7oøç•«‘4ÖŽYù½¡çï|˜ ÐëiÑ-V¾6T¹,?ºCmº¾üâ&|§nÖç(¼R&oùRŠ»Ë‹NÜØTûéYšÿa³K“/I,ª½sÄëŸJ †S“9-Zì•*Iõð²fH,ê¾%¨EÊ„íÉR†º{Ö(›A>6Ƀ|¨Å|O C¦ÃÓüŸúD7grF~~w¤ˆ¶z­Dh2Oäâ.vxhÕ¥Û¬¨´$VXI¦z ŸïÚç›Ýú•VG]Ú€Õ†haçJoL¡µÏ ‹h6 —Ra8­ùÀßÒ[Œfýîm6 ê–Ò©7¶z5o1ácóG›²|,pÇBmé3gØfè‚zÖSêê'‘¹ƒ)ñ¤ïÜ$iÞúÖ¿\|ÏNÞvu/_,=Š –Ýî(*Þ¹S:ªšºY:fíx¨çVUzöãQ–2ã4»~”ý™°þPözÙ og«“›$L¶«ÃžH¥Ÿ×*Ä”Ìáù$fs%E\K㯰/(‡-1=ÑD{0‹I®PÖe^P(H¾[üv%ÂÕíµ!Kí+ÝU{ÛÆÐñÜ“–BÜCHà®?‡Ö£'çzÊÄ^Æ—…wt–ìWÑÊ\fZ]5'ÇZç—è‰;¯¼ÉõžÍ†ŒVÈ®<þú–OÉ`0Í**¨Oh†[ž`Ïi.Î.£®±L1W!„;·^P›ˆˆz‰™þgA˜ù~ˆ4µ0Hm6¯I(òI¾ÛeÂFˆFxGÉFñÊvˆóÜ´ë±XlZs‹u±Ÿã%rËóÝÙ&ð>a’>,, c…¯Ç† çøÑ”­XmyAÔFïZ¦a˜Ò±ðy®½<¹/IÉMÝ}•³T沬*A?Pã”°Y}Â×í«(ä TG ¨´ Ôöæ’¦ü:W²ð´=ã6õG+CqÑ3Ñ(–ìé[Õ¨íW~Fª³%Ï3|wíµð+?Ôyt’ôë¥åè'Åæ×NoIésИ¼^;dtyQ_ä\í^&eDý&‹š<õð.QŽt耥Ùmm̌⃶ÇéÕ úïúвÛÞÝ/š3´Û NL—/Œ«÷ȇƒ¼.H'—)©¢Ñ eî(>ù“6¸ävq¼l­EL´méœYb,²?â®ëx6¶‰;.Œq%<=Ôñ¼0¤i@™ç-® ÿ‡NÚ°ù«‹¼3óœ]ÖsúžæÝŒ´²4Ê“@œÃÕæjNü~.GTDõ%Ó3®EHŽðÌ›Óþ)–TNåNõlCÆÀWÏþva“Æ~7³…éç:6”d¿‰ãËÌ „bˆç•Ut2¡_¦½È`D öj+Ö6Y¦f=[˜ãNçƒÔ0ö‹iqsþ­FfÊ:þ²-&-Ñ+&w€¤jg…r»XНE7§v(÷~¸PŠ®9§Àëãëu/û£ä.Óe)^Uâ„aù×7LgÕÄÙ3Ѥp‘=*Š}êmFð):çk?îm=Nóš,'‰mêWÔš­gOœO+HD¬Ç¿ËΦ°óùfkê¤\Nñ{4G~V1 Îá¨ÌIs1µñaWÄd¯ØBáôõéòvàr¬2±c EìMçoDY¾ ý4¤¢oï1›’»í|¬“©:ï"ýÈäKåãkpFc  ÌZÛr l¼>Ñtï@9ʃÞb42˜<8 (Ä`”½ÉWP§/°©Y:|~MÚ4È1´¿»£õNKRôZ§Ë sææy`“o>ûêt\ò=Kºÿ÷‹pŸEü¶w‹â…+ëOǸ*±²`ºGÓo‚]wîØÏui6ó‚o¿?s¬÷“Š%";ˆ:önnE\8ìÛ·^R)´Î j}!&ô»ÔÂS‰{öÀ¬9•2ý-q¬Pyf¯þŒ "Äç2$‹s6&™sEYF~ëÇl)þ~£«ç;o´ë%Ö;ÇVnÓ-¬’4ŠQ&@L4 û&rŽM72HX9¬œêsÉMT¢ÓµÍ¼X$ÄËÇ”ÜYWÃû=#â$îvèŽ?Þ@>=ÃÃ*·ï*j5«y ÏÏ$f©±wÄ9ñ:é¥]°ÊØåJ«¶O`É -Øœ¯¢0LoÄÏ€ŽÏÄB4³E™QªZe|2Ѓãí…”Ì[؇fOn^P†Ý8Áå©ObÑs\Ì $z{¦5~ÀYÓñ½5È0EeæŠ_u¾¼÷HêÖ E8»Õ¦2”•JLÆ0´.è®öØnúmƒ¦Ü7ëV×2·IoÔPŒÔ‰@ÖÄ‹ØW6-Úë'Xoí?úC)VÂýº æÚzhwGÁkkg¬Èïc³4.ïöxu¦¨½Ÿ ’KËv£ÏÏlLgçÅ$n¦Y¯gœ\§Ñ„éP¯JñƒðXD—hU©%–Щâa—{AËYá$`M+CˆÉ„ß3{ü›:Žä4œa2–Å—\>¯!4ÐÙêíŸMÞÏ (“ð­Ð11£j€œâ4w'O³/}IaáæpɶÎåiaýtk ²Á§ZÒnCU€×·ì¢ß²_Þá=oññ£˜Øšì\uäºÛÑ$æõ §_gþÄ'äf0’e?ܯÚ?àÃÕÜŠn¼'vt3Ðæ¤ÍöÌîR`T£®X^Ìe?ˤMo‘qf2âüÒEèæ½’wn|þ™XG†ÿDÚ# ‘‹°·þØ)GœÎHsEăm×·´×"B¿ññ ®Ó{ê)Y¶ùøWrBÚÍßt:‰ãsɜРš_0ã|¹„Γ±ßÿÖ»FüM}Ï¡U‹Âmh“Ë®½>Ýþ0À¤áòª»ávhgbMd„b£L4mÔò«ƒoo/ WCÍÚa5KñLãIôwM5óÐÓ’äÅ…M¬:ûMŸvÒš÷Š_þ”'‰ž×ig*;ìyáQk3;ôfMs«Í:+Ê V`SÖN1±P-iŠÝôØ8 ÛÎWΩ6ˆÇXÌ\Qޏ7ج ¼Ût´(Î?#oG™[ê½ñãáI/^vÓH®]ÂЊ‚1Ù§3^^y–ôÐK×Þ]ÿz’¯¯ZpfP£â@× €òÓÚ¶¾ûF®1e¬j·´Ïî¡×\mY§6ù?¾“·é… =Ø$èÀùމÿhr=/‘NOwX„ óÛ¼÷©“Ýmâ£UámUzÙï(Õž8R¨‘؆éÓ÷RÏ_ ªéD±·ðLXÃojbZCÄõ®ê‚÷TlE뫈Z´Úí\èWÀÜK”…L©¶àÜÓû/©ô²Å$iKíÒÆbÙ*äß옩X©^—©Î™¬òñ‹9Í›Vcå~ö|`&(LžA¹ x5×·P;Xgú©éÙY|ZU§‰~°Ï{f¼Õ»–ÞÔ/zσèdÄ6ŒÕ­}…¨7\êD OdD ƒ}‡(sT-Ek›ªŸ@Þr|–¯vpzÀi\O-¦ÓΔ4ÓfVеcý3SfFçåtqc¤q¤ßSÉO$?…‰JCã+±Ëq~ØóÎ'  úÍFÓ ‘ˆ)-›®L ¾˜—Ü·ÉÝÛõ\—|MæˆÓgMBÅc¯Õ Ú¼UQ"²ˆ44jź¯ÂA(ò–u8öر}ˆ‚tô©v´®Žá{²Z6¤$&FNÂååòç…Ìë0%R:ãˆ2 ¡N »˜UÂÛG:Á¢nBc²Ú}”¯‹¦?´¼K»á£xUXI‹¹›)@0º¾Å¦2 Xt ÷d*˜º×½†Ï$^»|S°ë숹·îÛd£EÒøÉ¯öÛJŒÃ.µ_mªu(­[ ÑWΓ›…Z±˜×Τ9‚™›±x$‘y´*ŽŽ¯½9bšGÈiL>o0Q\>wnkò( HŠò¡jüæäK¯Äû%>bÊ6›ŠœÖ²^x&d­>šIQö4Ú’¬y¿éRò•si]ë:§(öpÍðó_iÜ£6AÜ£·õ;¸‡{UðX²˜D¢ íéy §¤£EwE…c®q<ó"ë®ãqqÎàõê©¿lö5ƒ5a‡4k¶›ƒçppõ~—úE—~ q/÷ô·‡i#ù‡µ´ÊÜé°w-G ¥ñ$"Íð~ &w`“‡ð4—bø½h¢gRtCKv«…üW…/›Òùéî%µÒ÷44} ,€SMàmœŽàÏ*X¢(¦mu¶‘à˜ˆHÚ/ ÍÉ«L6—:C`ŠQ6×D¾ö»k+^BSèçÌE×Þî‚^Ù<Òeº`•»Èmצ„e’pƒ |±š!¤ù¹`ÇIõг ï¦Æ2Û ,üÞÎwµTWØ~kìâõÂÞIÄ´jlzÖž`¢,%±©C§8nps"TYhåËk)„ïI‹r ñ·—(x&AÌò÷z¿Ë4QGÏš‘莤NÞh~´ôÂÉ|¸Œ‘ö€Ò½²ÄÙ¯Bù„ˆ²& ›÷­?é|¿í×FǨòy]Câ ®û– b[ô†ù½ˆ  M^5º[:}¯.³Õ¨oóÒg——ö€•Öa£wTAœù¶fv R{ÔmØ%oe_e»Ô1F¡b–es Ï AL‘É—Ê}Ðí÷´ÝÞ w-^*?`¯¤íý¦ß+fmYnç?À½`”ÙR%y ·Å¦ï‰Ì¾©Óàqý¤¿bÙ»+1ÏÖ˜¾ƒ¸nzé nÞÒY.÷áˆìEÞ‹ÄóOl(Ws‘wyŸ1¿¯¦¤ã¨Ïž£.k÷«ÄÝkG©†ëۤёO®ô£ÒµTÜÎ侂ˆaá oBî>¥¼Ê y~†¹§bœ<Í“^>\VæB+zH]Úù ìº+›XΛ5Ê1ù¼ÑhtÜæL­Q9iWÌõ·§Œ2Æ~ºr|?> stream xÚT 8TýÛ¶ïEŠuÄDÌj[eßÊ2Ù³”1s˜“1gš…™¥B^ü¥"J–ˆlQÒb§—D¥·ÒòÒ¢²DI"z“ÿ¡ýý¾ëú¾k®ëÌyžç~–û÷»ŸƒR'¹c,©ph38o X;;zxð¯Åãõ¤P(ˆC¤P^ ‹ Á Ó_ Ö,ÌA|6d‚t†ÀV. è¢)ÁÈôðx“ï@˜e ØÃ!*àŒ¶Â -…²†™|Bã ¾¿Ú”ÁÄĽ”X†,ˆBfÎd C:RÈtÀ¦@ ‡ÿ[ íM4‡iŠÃEDD`Éal,Ì Ù² D@à²AV8HI.ä0ð;7¬ ð Aì¯w8˜Afâ CÁFr¸ *Èö€»£àÊ_ÁN_hàÛé,áG¹oÙ‹… ÆR2™BØdb„Á\휰 ÔE ™Î†‘|r8¢“ƒÀÒìdÀÎr;@F(~#Ȧ° &‡eCôE’¸Å2È9Û2¨ÖpXÈà°¥ç³X 9x>îûý†2àFä3bPƒ‰P¹Lœ'ÚÃm¾—ÔO_È ñx¼‘‘ î@…†[láÁg‚KA¢aÉ„™@0BŒ†‚AäO*’M‹ FGþøÝ’"*DáA`ÄúYqƒÁ_mD,ˆøáüâïÇ["2*Ì ó—nçI²÷Ùê­ûó¨•Ì"‘®=}}€H4ˆ&D ú÷2$2ômŒ_2Á0`òuZ䘾OþMÚßVd#ð{-Ñ.hÿ”º?ÞOA„ÿ·à—Rþ7/Vù¿¥þï‘ì¸tú@ûâÈaÿ ‚ˆ—ËAÁFÖño¨7øu}A*Ä ûwÔ‘CFÂ’‚ˆC0Àâ ¾ú!¶Ä©$ˆC¡-iä«Ûsqãè$Álhñ#ƒ$áñÿŠ!kF E>$lDšK!Ù¢ßÛÚ2(0uqÝô ‰™Å"ó¥ðˆ¢ô ‘«Gö’ ò–Ä à° ˜ƒ¤Åh fI-Þ¬¡1€£Àt¤=â^òð†úi"ŠÂýŒ¹>˜ú ñq~šzHï“àø¿˜znï’ù —ÅBÖzIqÉïöÒ7y EêQL1;°ûü†ÙjK•Ì«[úíDÏ™î:©Tºà ¬P›‹RèYƒ‚iãc¹6¤nÚ–*?agaÁ„tÛT£ˆP«F¬¸üʃòB‡ÖŒc/lr1•y'¡Ý;‰o_s8E)+oÔšßá0¡^>³µÅú¦¼{¬£6ë;<²ÇULemùéJIב¾&ŠŸâߺ:Ð÷m7»×ÕdƒßŸ˜%½µ¹îΜÖV_éºñ++åï÷]³Zfs/Á^Šsþ]ÊŽ³F¦M7›õ>Ñ·Y4 ¶ ‹“󵆧ÐÅ]9 gìÓÐ|­ª\’ÄsN[]9 ›?[¶òdüη!q^·÷~†ê¾nÙ)?ý³#Î ¥ø–6K°6ïªôâm‚rSõ¨$ì§³ÔvÒ¡¨‡2•L™8®ô¼… Ý'Ý¿í¹€­7Ï/Q5Q“o0‰éU½ÑØ ßÈ[¦% “€¾u!£,ñ­žD}bÕa;Ÿ‚3'øØjÞ–[!Ìk­ QáA•Š$¹³ü»;Î&-Ͻإ3uZk½f]‡¸ ä•Tþ®BoÀì%ï~óéÏ%B V÷‡©kªåÁ{ãVÓ•ÿcYñPì[ß; »ŽÏ§Ý=½P}¹À çòÍ×;ÒÐ)H³Í;=çªW«ªu6<.¹«Æ]'(³¬Þq·f©ã¸èê&Z |öÊ.¶ýä±ûŒ-là\剣]¯tòZHc/6á–P?˜z¾˜[³²^a÷NÎçA-›ggÒ¡ ¡ï£ÄÞöb;tÛ3x[aôʆØùA9¥ñzGÙ+öõ ÐpÉÞOn,Pð¯º9€Å´¦|¶ZµÕô5…—[7z+s˜G9Wä²lÞCõQñt‘´FhÀU»¾†øƒ>J.]Ï×ÖØ™–»æÂﯾ15üIšÓQ•¹§9¸2mK݈îÒ~¿¿N¾y2\¢)ݽ{sö†E›Rð|X¥'°ÿ¼Hþ¾×üŠ3·rBJ>6Ñ©âKg|œ|ô¹/¼^¸V¼l6NðÁhÏ¡îJüu=!'£äÄÛäÐgþ™¥x wN¼¸ª—q–) (éjèÿ'd²Ž‘¹L´ËI p䕜ikºáÝÑ%¼œR#Ín¥€›2~1ëö´Ç´ÔªõÃ:á®VÔ—»ÿÉÆµçNïŠC»4÷Jã2°Ç Á\Ï"xlÕµò…YÊüJNÿ@ÝrlÍ• åä¶§“¶¶÷rEd\Ej›ŒW¤»Ø}‹²Ð1º^6–¹'+Óv‘{\ës#9ß!,R÷ÊI7ß+MGü›ÏÃEðZ™/W“‰ífñ(ûÜ®7_$~±<†2°ªt€Tu쟊ΔØ1ï ÉžÀR¾}9kÄ࡟+ºbzƒ$gd[À[»A=£½·êÎ}V»âqOu(â©j‚*úäA±m‘c¨—CÔò”î2†¨˜'K/G_”Ȥ^ñ§hW” `éÚk¦„ƒeT…ñ²ÑXœ°/$£¯£Ï-†ö'žˆÜ3!²ÆWìüahÝÄY©Íw¾ÌK¾Ÿlاßl>\ñ²Fs…ôë{â4÷¤ jefN‚Ÿ.y>¾ø%ï'z‚¦=[{…6v£^Sð¥rgÅèauõXùNuåóן¨ä€é±ùù9îÁ«ô~Ž(ÊþPs5<»ÞÎY¬?všÀ˜Ùû…`h)47ЩmLFP˜¼ÊOmâZ|­‡Þóö‘Å"bÞ>ú­5oZ ‡vlÃ]5wÛÒºA$½"°¥bY“LN•Z[a¨[°Jët·»–noSä9› û£*³o])8va0Np—[Î2AYDILfk› ãŒË^­‡/µËŽª®zÐZ)ï85u¹Ê¨gýÀÂ^Ý9ÊÕ]­5ÌO–úøU‡"í2†1ð¹?å[Çž ½\kÈ?*jŽ}˜ßЧ½¹ÄC]ǯMd㊼w2¨£Zœ6?̓º)%Ášñ©ÏB`~æ£u,Ùç÷óöW¾ð¬¦ã-›®ÞOmÞaHÆÄÑjß@µ{d¼íç©k<Ï?u"tGVÁ;ãÊL£ù·¸•ä>̨-=(pLnd>à›®t呱¬§Î»¬÷þÇöz‘¦ƒ©9¢FRQ;bQèðêåNA³˜`7þ‹?w©7å‹}!B؆r™‚RÖÆKÚí‰Ùn™7Ó¾©;S®L'…k1Á,´LõØÅÛ/Øýƒ/Íê9³yåˆ9“Ò¼€ÚoÈ«ŠL S"“W£²Gu^Ž\¿ßnµ“>ŽŠaøá™ÏýËH)b2>݈>³'-­¾¨?=6lõâ‰E¢øÛW%Ê61Š'ÓÂïª.Ãܯ—{5Õ,¤׿ZgH@†þª kdxmäœ}9m¨‡-.é>oñ³o² “$Ï /k’¶~¬“)ëØ!x®'±#Ët‰?÷¤YÉØÉú±q[ÁôúsubRÚú¿„œŽæÈ>›ë¨æô©¢ÃyŠ É¡GDºd2°%Ûâ`øôúë‡ÊÌÜ*ÌÊ¥!‘¡Nõ]‘Ø;§))L\Ô{º.gU_Ñ{œ„bÓ}Åĉ™Ò€Öþ\g~\ö­÷»1»Ö)ä¯"´¢ƒ‚d£dãï¿ú{Ô|.|’$ÚΑ$J=³‰|tØÇiÓ「ãï[ÊbÔŒ¥q\ÿ¹ÕÚÕšÕÚº{ó«VÍD‡SÎ’…S³r¶vŸi|åmqô1Ï)\CèùGôL­l‰2_A³âÉ.¿å’‘ÒtÑþo²í÷¶æ>RLÚ~æ] y¾@r’ø~«ŽW“uY!˜HLiœÚckuy·éêë³M©—)#F¡6òj"ä™0u¿½¼ÚÜM4]ì…b+ኡtëí?ÕÝdã“yÙš–jó'áH/Žæ¦0÷…·×:ݾ|ðòïu^X»á±ÅæÍC!â6§6Gö])´ôÙp®ÚÊX±2.¦õïà(JãÆ¬©¬iÿÆ í\cÒŽñŠMÁºe……-ês"b—p½2“i#j[¬ïÅyß´Òˆ|M.DÍX¥£æß@‰Œ:½É,uwW¿“.»ÚOF _™68yÀé­c©£9¹MX_ï¿Õð†´‡Ôi¹Yš‹R²JP]iÏtOèG‹œ/QUŠ.aÇV¶8¿c²ó‚Š"l½ŒF?½¨Ƹñ_v»Í¦ endstream endobj 95 0 obj << /Length1 2561 /Length2 22635 /Length3 0 /Length 24088 /Filter /FlateDecode >> stream xÚŒ¶tœ Û.Ûv&VcÛ¶íLl»Mƒ¦aã†ml'M4¶mÛ¶Îtïý½Ýï÷ÿk³²Öd®[×Íç*2uFQ '3 ”“£;#+ @\Q•ÀÂÂÎĆ@E¥aãnüGŒ@¥tu³qräû—¸+ÐÔ$“0uÙ):9ä<ì¬ìV.>Vn> ïÿ:¹ò$L=m,ŠL9'G •¸“³«•µ;ˆæ¾hÍ鬼¼Üïþrˆ:]mÌMЦîÖ@£¹©=@ÝÉÜèîó_!h¬ÝÝù˜™½¼¼˜Lܘœ\­„èÞ¼lÜ­j@7 «'Ðð»`€’©ðïʘ¨Ö6nËÕ,ݽL]ÀÞÆèèòðp´º@äuY€²3Ðñoc…¿ Þþé €•‰õ?áþñþÈÆñ/gSss'gSGG+€¥= ,¥Àäîíþ`êhñÛÐÔÞÍ äoêijcoj2ø+sS€”¨*ÀTà?å¹™»Ú8»»1¹ÙØÿ.‘ùwP—%-Ä€Žîn¿ó“°qšƒÚîÃü÷dí¼ýþ–6Ž–¿‹°ðpfÖt´qñÊJüc!ü‘YÝœ,,,Ü¼ì  èmnÍü;¼†3ð/%ëo1¨‚?g'g€%¨`€%ôÁÏÍÔpwõøý[ñß•`acî0ZÙ8"ü‰-ÿÆ á»ÚxôY@»Ç `ùý÷Ÿo† õ²pr´÷ùcþ×|™U5äÄTÄþ®ø?:11'o€# €‘“Àú{ɸA_þ;ŒŠ©Í?iüËWÖÑÒ Àûw¶ 6ýOÆžÿ,í?ÇAøïXJN ­hÿ,¹ '‹9èƒõÿyÕÿrùÿÛðßQþoKþ¿’ò°·ÿKMû—þÿ£6u°±÷ùÇ´´î Ptãÿ6Õþ}´Š@ ‡ÿ­•u7‚¨£•ýÚhã&eã ´P±q7·þ{[þ–kþ¾2{G Š“›ÍïÇ €4šÿ¥–¹èÑáZÉ¿T@Ðåü7¥¤£¹“Åïcã䘺ºšú €† Bœ?VÐ-Z½ÿZb3“£“;È*/`éäŠð{¢\œfÑߢ¿€Yìâ0‹ÿA<f‰?ˆÀ,ùÄÍ`–úƒXÌÒ€Yæb0ËþA vù?Ä®ðØÿ »ÒbWþⱫüA vÕ?Ä®öØÕÿ ³ÆÊEóå¢õrÑþƒ@ìºÿA¼ éÊÓìYšÿq‚tæNö Qÿ„ƒã·ÄÁáÿï`¶øUü”Õß øŸ9üÖ»x€îæ ¨dË?d`ù/ÈñÚüÁ¿ÿ@NößÐó#ëoÁŸàœ¿Í<\ÿÅ2°úÅ·þS¨§Ö>ÎÖ@ÇY€dÿâg•dû/ê¦Ý¿ ¨eÿ. ÔO‡•êÕŸÈœ WGÐÑüKªÝéO2 g§ÿRƒŠqþ£s½ í–úËÁúÔõ¿ÚÎÊÚôôrúר~·ÊåÏ`~# Û_§ýŸ}`û-trZ˜Ùÿ ;ÇÅ3±óþ£ùo1ëïAþk ¬ ®ºýiÈÉ è`óßÛÆùÛèù¯ap‚‚¸Þ3ÿ) ÔB7{S7ëUú‡ôgv·vþk%Ams÷rú—(†Ç¿ h‚žÿ‚ Ì¼þµ} oïAPxŸAP»|ÿ$Šä tý›ê¿‚æ®  ¹ÿõš=!ÿÿõ£ôš#,Ì:™ó‡ØÖ„´ÜW‰z1îŒ NQíh¥cô[pmõxDM¢«Ìø¸æz+š4Љ¶¼%I{#²Húâwô³öSS‚jó“ÿ³qœÚÄN3Âü8NïXÞ‘hm1<£†È®ÿ‹‹¿VäOð69ªï.<(*9˜÷^ÝÒÞµ=%KÃa³;ª»•\òˆÏ%“ŒÑšQA…ÓTÙf™3xä0îŒÄpôçÞ¨Ó7·S߯ÞHå⎣ÙóýôÖÙbf|WÊ4ØÜÚñ)ñõðˆ!o0†'¨ýÄö“åpçüŠò—{ç½ ä“~C~—²ÌˆÆ´Ï–^i£éØÐUí9¼ð‹uû{ „†°s;¡º¸ËØ•\»²Ù8Ó½šÝH¼ÿËRl¥åV«ÃÒ6…h‘w²ö 0¬k}ô¡±Ãï©Îee`°—ñ.,¥é~ ap«#@»P¸G˜ÈÊ‹•^ÒZ?by‰/8ºÄ}¢](‹…önÑ3‰çÚ4TÀïã…Ø#ëf ‹tø0Ñ)çwÿ‹˜€òús¥_ëÓèsö^†ÁoÁ\Jofm)ççyøÖì’&a´Ùé’Ÿ³WciTùk€õÓÁ%Ìçëå8LÅ>¤ ñ›œó}”ù²Ò];s}lxs™NµÊ5›¿p檒mG2Žì×õ‹‡vóÞZìoÞ––Ša8i=œ—{…‹ Älhp‡dþ¥öá[»›rª´h$DÁÝÖL¼ʼn†˜'™CC,ª¶†àãÖH{Á³×»Y *šüÅùOþ †óù]øUDp>ß4|`«iU¾§CÊ@[‰¡ÊØ]‚¤0nhкx%#T׸ϡð]ëš›Ù"šØ¢ô³/7(äènðsF¥BÚÇQ“Ím}H»Z¤ŠxµŒh\Õô­[$ªNŸî®÷C‰QÀ¶²³` ËòŠi2Vò°Þf²l7}3EIc+Ü jV±nBK ÚuÁ)×$„Ã5áÇwŸ¹’¾MzKg«:ö•¦EàoÛTRÍ&f‘ÍM (°áVëg¥¡_oå¿§#‹² Õùg¾ ¶%0CƒÕ_›|¡†©Â.™MÂÈWNƒ¾þ:.Š"‡ZɽÐ]#.7 &ç^FÝåÇ ó…«"Hk¼k¼ýhfVf†0á*’¹xEjÎÊ‹\Š31ÖëB=œÒ¿ò-ÈIU`to4qÂ$ð‡@& +K±?\ê›@óÃY]ÃÃ|Æê€õùê÷µòƒpõõUUéÂø&ÂWÜÉG8ˆÆÃß¡õ“~]ñx«p°Î_ ºÝË€-¢"ós¥þl p•÷`=`JÓƒ¶Ié“q/¯™˜ ¸õÁ#™} 4'¡2Xs9û`ÐÔ´Ë¡ÌáI¦Ÿn|'Û”SuV[ùŒÝ»kIÀ²F\z©(÷ øM—¥l8ÖÓk /qÖྠáúÍe œ_ð21ScRWžiYïp€®ã®ô ¼Ÿi¸¸ž˜tV+ ±Ï-J„tèiО +ÇË+wX6£bYø Mÿh’vÛ°–ÀlyÓ•ißJ¥"É–ÍG¢%J§.¦À¼+P‚sʉY"ž%š»v—iÏ_á7ÔŽHKÑ4¯í(O ö,„ÇOmÞ)½£[—vÛXûÂLôõ½¼¿“"¢1æìTŠ6úÚ+Q\+²Ï¶âþׇÒïÕF­w¦îY¤p"ʬGÙÌ™`R¤‰?Ø}H(R·ÌQçÆ¥{ô^Vô!ÊÞš|Ç¢¤ÞÃÀcØ—<”’wÊ U¡æµÄbµÅˆö´è¾@-«÷/Ùà¿Ë> Z-î µú&h ¸.B.µþ(/u¯‘möô5î—VPŒ=­½UEGæ¢Ùdyô Yã~ÉLòÌÁÆËƒ)‡*+nÕp  ”wÓE+¿±p8ïfdw’ãf“îˆâ×[ž»—Ç7K¤å‹oƒ~^⊑ŸSì©$ñ+RQš›—RVÁæ•:AtÞŠpÃÑžËü“|¬”rý¥€<üΑÊHžrŒ¨(Þ gXÂûÕIûê½ú{ݹ:š…Q0íÅñ`êö– yÀ+>v³ ¼Í¤¼YA§8O_·¯¨LþÌ7vp¦KýïÞ?7WÜYE=ÊK2‘œEǘô9rÕçÙ̼ÌîÅy§J@Ð’ˆ"Ù7`Nœ²š,óx0]y0œn-?^ ñŸ¿{ï;P7A…àÔ\¹öݲŸå«ÛGôÙ~| mV)ï±Óéý”5€Õ«C\t½·–ÏMý"úD&¹!…o ^J¡³çer&qX\êí|O“«ïgJlÇF]ñrqÖÇn÷ Š»"°q;¥OÓ‘òUàß§øsÛ§샤ia磔®" Àù×7ò-^Ë:ŸNÀãËÑž×è["z ²“¶z0C0K ÝÚ xê¥c‘Å%MBµr¬×[º©°UF¥òTZ»7'ЃßS–|i%Ÿ`go¹Sáã=Ö‹vãýNc²UN‚|캨ýÀ§”˜Üï6uÓ—Ø@*cŒ”aD¬½JÍÆá…QlK9ͦ}†YãµÚ{¬Ìkö–»C®\ð spD»‹^ Ãp…¹Àħ$Jµ>| Ñ@5©“PоdÙFç"zßH pkaœ«hœ¦N¥Q«Ô$Ï[ Ç –:{¬ïšŸþܯ{Óƒy¢ë h©ž'Bʼ›×ý¤òx0*®)™s|õu>%Ü>ƒ*ESS/®§*2Š*»°îN•»ý–œÑ®_DÇÝMýëù»õ¨c&R5þ.Íô’iç® ×÷Ók©ÌŽÆŽIr Ù8ˆp´É"5{߇ÆÓÊ땈ýä¥ê×–ÎìÒÍV;qNL*s á–Ló4³Áöø=‡cxnž)¬-7íæp$\³~¥|éê úvê–„ÕÙ{u騷IŸÚ,X|7èvse&âç3‹G&.Né‡kǤý^ïÇñÉ. ®#⺙s¨•›ÊW JÆ ƒÛÊÑétjç6(ŒFT{L$ÿŸéu<ûLÝÉ?,Gû|}Š<ƒI7ŒkÄ|+?} »föœnƒ8¼j¹™ûÔ¥nšKƃ?“瀼ô ÏÊk îž{G ^WÄGÝ0ð"ôDjùƒ½“ØìAYÿ’9šVŸÉèç ß¶;”\µ­È!–wim°$-‹ô ÿhö’ª DLq_¢ÍÏó,4þ,/.„ŽóÛAîö ⬠:Ý΂—¸¹n—Éü áíÈq_Vqu†v¢\Ö®@à„:Û"{©\²ââ`H’=íÅT=%Ip@u‡ÙÁY‰Sž\ûáO×µ4¿j!“\¾®÷sª’Ã#Z3 ­§{¯ëºK0A6”¬›t|ö@6 . 7­»S4õ _žjß<_²²ñ˜ä)]PlaXÖðƒ: ë€âjª ÝeX_5LÁºD—qçc ºë«)'@QEWºxfœŸ„*šÈªxW '2T„óCüÊÚ-Â}FœbfWpÀ„Œí§´-7lWìÞËÉ»LB‹ã³••Ùcv)‹öÝüÔÉ•{‹iU—À/t–ÛR¾é& } Â9[²æ`"ê2ÔÉoÐ-ñ§P@OG0Ì L©D[ZÕ%ì=W¦å¢d>>-[|S XYæd¹ÞçÐÉÍÆ_g?o0[°¯%§ ôm‘K'£—ïÑX*ºMÀN“êhk¾<ßÖ74êv×G!~˜ž£²é#“ùu©,ó70Cjüð#’ÿSÍèåû¸M¹FÏl”š Ãe ÊØÔ%qká ÎTu¼âæ“¡ªŽ ‘„r¼Lø4Ó²ºŒX©¢ïÍ#Âì´Áëi/ca\Á )–LæÆuýl—LØýí!<‰+Lšhdí¿¿¼_¯&Û©{ξ™Ré<öKÌ‘¬üz&8êlºo„4o}¤li’Ùpš¾å|ÿˆTÎãá³Léz™¼r•ä``îÒÅÀÙáHö²b8“ùHxß~Œ¢ù®ü—ûwº]>™Ëï¿”C»—h+ŒÊAÄRZ¿^]Æap„Ê<ö×»¥ùÂ7.º}ƒ³BÓeô ¨b5O<çÛÁHÇ}·ŒðևĢ}¨>(il6þ`Ä«Ð9ZnqÀ’‹¿Çaœb¹#¶Ùš“Yþd9übרÆt”~óâIó¡Ï ƒfD}«S¢yxÁÞç™;'I÷fV¼¶¼Çá ÞèG¥´§±t:ì}ýkÁª;sÔ4âëzôðæ9Â:ÇçjÖrÇpã' ¡g†]Ë+^kJâÇ¢pC‘3Å“y£ÉŸÒò·üœ¥0y^}GÍPÛ²®.g¢Eì–¢×tÑm<Ê>t®lw]¶NœOb躢KÜÜòÅF/ZÀªåC®DÝÑ‘ŽK¾¼Ã¢Ûl2-Éh²ÞãÕŸ.ôxƒSßÃã•ÇAïÖ/6Õ¡Üö²Hø¡¬¿ áIèÒœë%K›üÖb‹Æ©PX"Ûn^àoMÒNç+±‰©9ÖùÅ«Y7š¡õ¥Loôl¯{,¯'ƒµí²Þþý°°ÜÄã^‚Àªì˜{v9|¿.­×h‘‹ð”9ËgâÉÄô<£ 9B¿r4Ídò×°dVn§Aô±) !R¶ï®Í¥‚i.F€í`ÕÞ€ÈSnÄN@Ï{oÔÝ3íа©;ŽŸÜb¾²8Ò£ø¡TÚ ëû^E& bD 5îñœ:3*LP÷ç>AžÉ›Lꊨ:M’sNWÚÜJ„›<‡š{ ž?ÓÇcϾ¨n)™Y†2,µüZ Ér"‡^(Ô„oñ¸²:´1ÝŽùâQ'õ}"U  SçÑg¥±¤l⑾¢ßêöCX‡Í°ó G‘LÚHNúÜešQǸ‹Щ&ã«æÉU Ò]~|ü8·Ð1]oÞUªŒã—,ˆ¦¢rQnò?‰05f6÷Åž¾ë·‚Ov¼²:×ñ–¹Å›oc/O ˜ :’Ç…ÉhýL‡díã]äôrKêÜ(틺$•pDûÐg¶KÈÄÔ“ ¢ûrH ¥»ám?›á01o’•²w(¹Õ";E1§ñ½EêîÑ`àåÎh:’˜‘?¾ÝÿP aÐýYÆcšëMµçeü+M¦*{¿¿7Ec )û©ú0_‰­úÉU£»\,³Ð`¶òÛi±«ÖjP'¾·aÕO˜!ºÍ³oõ†ì3 9~¡éïeKñ£½S¢.¢Á´)Ž0¨VRí½”™¹'mÖà;™—:ÃÝSzC„U×éXa©(£k¶^מ… jå°ü)%Ñ`»Ä4_«Ag¤=ÁHêèðò1\O©Q{\üºòQ1Z XïÛ9}{ÎÞ2i€ðcÞýäõUwƒÓ$W*Ð8Ý»#:R3Ë?’F'¾¾ïSˆ´ªæ,—,¢ijÈÞò­Ð3߀–ñÄ€ÐL/½,KÎT½¹ß<6Ü»æ¢oïŀǶT†%äðB^èÊZÑ ä—pÔÏšù^tçV˜CØ.Ó|ë¶ù?+—±Ã­a]úó3ZÜœŠÄ#ÈCJsÇn‘—û«Ž‚Ø-yÜè]úºù‡~ ÈíV˜©SÇŒÈçû`Y2ãÐRØ)Ê~;{®ŽÈÖ-ˆ7«_kÑ0Ÿð,—a°\‹CRNt‰c~¼ˆ÷áùÕfÈý—-ëDoºèžëkvEûDÅ+þ°œgç;yRpøËºÐ±$­Õ/_2¾>§«†Ôé/¯ hvèðA}\\6g¸¥Z¯†?Qj^Sçä »î¨.É"ïšíΨµÚ×8hYÙ62+ÖîƒY¢­¡§DyÁ”ÝïÓaGD%l…a)‘¹–wéúæ ä‡Q㺦ð‹ZÈŠš0‡ 0ÚÀ¹| †ì/Q‡_"2ä9èG‚äñçV´óÕwT"G*DK¤i‚»qº—qkÇ'‡%ÏØæÇeT¸;p+INt·µk¤0$ãæ ÓúÅ>o~£Ä3¼`£Pý¹»¸ im´A²u0|\õ>·b±ÏÏ¢ÀÙk"„ÌæÑæÔ Ž×5aDÓÏÑw(€KÝðJPÅxë'ès½ EUÃY5_IM¿0âNÙ)ïE[™«„É¢w£œ@„lo.e_Ôˆ wO±bY¼ŸÊ}yx6´™zW¡Q»Y¿3€|„d7*#Fa6Å‚@(ý€(ÉSBÒŸ ¥”2)Õ‚Ý~½mátÿ`Ý#1ï.Þ Ã®ê¸¹ƒ0üaûÝ0е>Ž852üžo`6ßü__¯€uîkÁŸ)8#)*Â7H*Ã7KfÅ¢O3äš‚Ä÷‰“£(‰dlÏrÎOëg†'nQ§»`’ #5¶DlóMìU£Tx´ÛˆaDû<£¾BèÕÒ·¶Ö°¥TbVôî‰ëy¡& 3õš_¯)´ë©½Ði?6‰Dŵ,¡È5Üøü‘Ïqä|×–ùzÙw ?Üô ùîö!ºxd{ELÌùÜ-Zèè§/Ògä$±Ì¶áäzl¯³sèX¦lÝ„êšü à}^!É…hÈiq†ô±‡¾lÅæw·} ”lKRÕ0¥G^ó&›EëÜt(e¥Æ] H,ß±dÇ¯Îæõ‚›í-~­\áüu¶n°â~¨%ˆ<ØB½L›ûеYî•þ†=« ¹å)¹Ëk~Àí½öúe{¶ç¶†T'ÕÝljí.ߣž]v<¬¶rø5í<„æèNL}G?„:º›/ŒlµÉ墟ͶoÓz³åa5Aí”.ЯŠÃ[SE×ë<ÎmjÓÖr s/Ë+7¾¼‚G*¹Âw<,Üì ¼Ôq‚Ä[eÆ<Ìff3šó.qLÖ‹õBˆó"cGð€‰¤^ÊQÕ—a:ÈÔeö_ØS¦¦£- ¤«ó?'Úmb•…·a It¢µI`¹Ò‘4ãàì¥ý8"{tÐG, w6‚8Ü b¦ÑKŽÕUèj·ØáÇ»…‹u½;‘UE®Õ;f•]_IT¥!LuÒȪã1Åh1߈>Öúx+/`u÷ÞJæ?’ƒ:g*9Õ£Œñ°¸½npùTñ¹Z|}˜Xñ\¦cþ§úD¬"Û.¤¹¸]¡(º²#Sç!läážS.¡urÊJZm±–•ËKÑRjÿÓBDÅIžL9Ì“®v7e[t'z¥þôOÆÂo–úüÚÛÈÑW˜¹~ŸŒèõÀìÙùÔ}6¼ü VÚvÞ"oôyäŽÔ{ǽ^[Šî,Ò.Kß0„ŸúU#WŠáº1&œ³2°C88]Addw*)U;±µâ"#~O|’p"ñJÓ'ï‹ïIÑ®œÙb7B^ßûÕÄP‹-DZP]'[‚!f¹È"´qkGHŒ¨§thžÉ]ìl5·2mmÙºU3âê;p ÞcQ†lº«Üw;†J}[QíáìôV_9­Òd! _;ðINÕµˆôF´‡¹÷Y¿¦îËOˆÎÛ‰æ’Ɔ)ù8d ÂO°<¼2ó'à< [½vƒk‹Ë4AF^PÕÁípüØûÉï¦@T l¦.OÞž 5IöIž…ÒºúŒlâNð3tl5mÙ‡x$©æì˜»¶d­ ŽâƒÐ=QQÆkROê¡ïË!íˆtÒ«°´Ô‡È$•QЯ¼ š¯¢E bž¥J1ÚúÔEÌhÄïU ¢t¹µ&rõó(N Ï1 Ó-ö{áýÔbMhü[KÜ›ŒJ©} ç’ ê¹!?tÆM_šì0}e^ôÏz^vjy]•}+’*k)*2u®á˜ÑSø Çä—á®·’Ž|m–7lï|– „ãN(7Ñ qj¶ûÕÂòÿà|>^àBdš9z ÊÓÍ¥„¨q3¿‡ÂËuNÎ fÐ''ûOôÝueBé9•½{˜u¾x}=ÕKçŒ[Q  ÁÅS ‰{|ÿ~Î#—M1Þ æó™éæIFÒíC“ÅóGÌ) áÑ'Æpfžõƒdf‚2°€XÑKA DXVËÖ¦ö;ZCŠh8áé‰~ì×®CÊBÄ‘¡y¢_Õ‰,/ÀF Ã0"¼êK1ñsÜI«¯aŽÍ\9&éUâV¿7.AÆ!xGg+í`ë-zøËöð~s¼ ²;akA~®×=gaÊá-2¨é¢Ìe¦ó.Ž™½Ú–¶»ÀëM›EYÚ0š³w<»–-»'¼W£€Þëþ†úWÐ}mlæ´‘¶¦ ¼xb¸©_MñsW:ÚéM³#%äéåO‚ÈÂÏpv¡¶n;ª]dCR/A9Œ&!sxa®àн³ùOüñ\PÇ!TÜøÇ^:C óL Û7€góBÜTð^hÈ}E#í¤\% MÝ6Ø.%r¬}ŠYN°xœ/bS}—¥k×wL)̽IÔQïƒp¿XH{6™¾vK†•®Ñצú˜ P“3a1>cQþµ#©:¯¤>Cé@¶ÑcoÒîÄÑ©»ÇZ’7ø¥%<†iJ2+–"µÕÃm5p³½ÖRÕ%bbuù–ƒ)÷×P…pšÿóDÑ'ˆØÂÅÍÄלǭ¢KD‰·gÆxÒć–½òÃ@ Â&¥Ñì›w\'g!Wjèú‘¼g‹8™SÉò¿Æ=ª˜R/§F(UÀÅa&LÍ=}ï½òYß5%è±Î®Š˜ÐGh&hµçššD¯s1zV»G-MªÙcM_Nf” ã·¦âõ~e¢C˜¦ß e¥ã‹Ü2º;y×Uy쯌ŽËC:¦[Fÿ¢xé¹ÈAm©ç6s¡lÖÚBˆi•vÞv»-ÝŸãr[4‹[ïàîÿiÐÎÕÊ!8J¬@{ÃÌÁîõÛb¢ÙWùî%À'Âw*75>ƒ>1á]?–Yü2ÀÓn^>6Ýè(€EfgšøkYÄ©àÉXÏj±`ÁÈuyÇã Ä-4âÓ5-í ¡„ªèDÞs• œZe=ð]ÃR[€+ÿ\ÄMÏâãÄší,çD&=ýC­è¢p§Q¨Ü½§`ôׄþÔò뽈³g{Á÷´þZæŽÉ‘¶> ‡)Á,Në›ÀJ­€žkunÊ9”)¯RM±"r9îúŒ¬îHŒKpˆó V¨rËh=|Nì,p#dbθ_“áÞ•!©3M×ïðúÇP-d¾É~A™é³Ê®U‘šŽzab‘RT¹Òï$ÈEÚDm‹"úØ–›;E[ Iì7éU˜PUÏ„k;&þÙ¨â½9×4v¤?›JÒk/+j];vnø§mhå0áýZk4y(šWw´»ul³û Õvâ*pV»¼6Òàìvee¥¹œÇ(iwTθú^gˆ‹ù:žÕ¦)6 7¾dÜ„xãå˜ð—V½r%§“]µ3wa²n‚âœ>rl=î)§eÚ®¬G ŽNäzÔ0]ö*íÆ€ç{äb"lÜž6‰ŒÅõ ‰:hc“Ñ4žy-Äj¦æ‰Ý gæåLþ¸ŠÙg÷ë’¤RšªÔØŠ¤¢9aåUÈoHx'ß=ŸbïÉÞi&ö¦ÔD‚Ý‹¬ôx‰ qÄ1ÙŽ-tçd¢ì#©‰ðÓŒ¹3ãf¬Úù¸^wèÜð¥ÀqeýLuö%Ïb’êƒ v&‹¨l=JÒÜ@Öù íßVÿ½À.Œ/äŠÛž\U <É >LàÂ{˰š€bH cù˜ÜÝJfäñ¬Àa¬Èfî߯ö5™H bÉ×(™(ƒ~ÉÑ74»œ?byP%cO\莓Ê!!ùÝQ=”7/z¬a!#bDÖö íB æuÞÆù€ÉîA-m}p¿È™Ëkw]ŵÇfëy`š7k™)ƒ°»½W_ø÷·®ÓÚ°M¸â–ûÒS/†{}Ú› •R'#…“­"Êϳ¢y«í8Sö+4[¦vdw{wÊL¦d=a>£¢ð?çÿ”ŠÂx,„ò_ᆖñ9dú­±]<Ê8­*³Þ)í[Ö´ÍCï™kÌШm„GQ~ÛrzȾ1<ŸHRÒÛÛkØØÛHl€2Á„i~ƒ–X^ÕES…´:¼Š»}n !„cÁñÐê£E¡yȆkW Õø»]ÛÚµU®â1%³™Mk¸hi!²Ý²‡Ë§¸w¯ˆEFŒö¹KƹàM6ßäa—;¬Rö›ŠWÑù†«gžÉC‡ÝVõˆ¦á Ô•Ú;pì™Èã‡×`ÏÀ®/r­ì vp;›¡Ý\•òî$È9°(h‹Âk©¡fdÂüzU%{Ävôʨ٣à¢ú™rhÏ{UTÜ|š¶:oäöÚÕ’ð2%‡ëóFlpW·5@ÙäçRªeF²ú¢mêF¸ße@¾‘[¨Ç0¬´uï Დj ¼ãÎâE»€žQêÝênb© | Œe®ÂjoH‡~äèD÷Ù/x„—]h%ìÃ9u+R뜻¯¤lU“µŸ‘°ÓiîP ߆ðìsú%¥JåŽs®-Ù—Û ñœßBqä¾R9£hC"¬ôdùêü¥ÝÇ¿†úœ?‘F;ì¥Tùñ“„9§Ê—E¨|2QOûµ‰ÍúÅ$Ÿêëê%Ök¼ Åp|>8ÀÀT‚Ñw+ÏÀ"v§•y?@ÉFŒcTm§ÓnS9&‹ bõ°g6X[˜4Q¾ïº_ª¾:ýR—ùÓбMEü°Œ”Á ªXš̲ @ºðrî³JÑ@ƒŸÈ—JmÂ…ÒЀ¯Šš|Rv;6LDÅÍ|¦šiH3†Áú^fòT¨^ÈÅóÀÞ³òV¡4¼ïã³q¶dÙÁ|z°3G!LTÚµó$oq28ÌY{á?Å¥z+ôPßÌ#n9%°"–~¦×9yå`u2Ïg/µ7Ú†1:ˆ4ˆÏþhD¬6<%& Y`Ið¿UFküŠ€Ì¿«Ø0é˜hëL5aè=“Øn‹(+í£"˜õ•Kš[X¼‹¨ŽF:—þ}ªG™˜£$N<‹€p =Aþ¢Ó‚ïT«BíÐd€()£²|fÉ|Ua(xtIã´› %XëÄlF£©î_C…V»Dû,Õ˜3o?Úç^Àá{B“°· SÞ Õ¬ÝI V¿Àh; ˆÖÐÙxúè%Gx ´ƒ5®Y_— º”Íd×íFÆpÐ5¼ZÞŽº¿ !)ìð'w)<»÷2—8EV åbÈŒxXž„³¬te˜Z4âc ê"'‘û†ÚÚq K¤÷n›¥“–½,®Yð:N ˜ú¯Tˆn“ŸäTùUÐ-¿•ŽIÅ•]“2ºÿ SEš™ùÔºús Ã3¥ÕШ:¬n¢]˜ËWtÝb=N™Üÿ^0ÉÀ@ƵZ‰X¤?ÜéçÕCV‚9–ð½Õá—p¤í²ö1eº.V$lÚ†Ú¸à–þ;;¹”çÍË<”(8'¤Ôt(z‰Iyy3³ÉlÜ0€yu|S[ÙOÓc0ZD7& ÝÚ$=+ƒF! 6„mƒÃ«áŸ+rûÎùvwd×KP¥¬ª%Ú ¡ùå;v™¡q¤Ö¾Qã †þ’b9 %l¤£™Ýɺ{ÚcÚVq°¾Ûᆻ×tëxÈÿ.á5 6çP>^ò~ ìçn\E=œ§.ÐY^åSðº”C&I¬ô%?sCÙgþoT²šÓJœ^kÀ2S èÐûÕP¦#´Ñ²_C#\¤kÍ/êùNÛ#–&*È(gGˆè›\¾Ê.>}»# é×Ñl†g㡸R˜ïf4[§fÚµÇ?T»oG}Â%G¯bÚž“|Û\¼‹úêaLä,¹Y<’(²4>_'âˆõ±`-6¦g-h“é:¹}¯³X³®§°ý1rX1vËa r„ãÆù6g³Ì/¡'Ô·±¦@=i$ÌÙ»ay¦X²“Ê=D´d,8Ÿ‘seœ ^kË,ëXË4v =.ÊQÑ {oç)ýTÞ*.ª€Eµ«%qµ8sïCiüÈW/9Q@‚-DÈÄ:Æe;ü0`jêÔ%™]ݨ@»-HæSøäøžŽ÷®muÕÌÒ_¶ØKôâ(}ñ+kE{îʨhSF¶IåHGæ]¼©‡W^l_¹:šŽø…ôMh„r.êM(ì2’s' ´³ÀÙÑ :˜vÁƒ=> ɧûϰ"Ë® ;^â°½¸ÜoR·%×ËÍ]_•; W_ í€xþAˆD±oPéÝ(‚{Ln±Ð˜z7·ùÙS¬.8 ÷wt,[ÃϾ¿–O¨¨Ý ß “¾°?Oj¢]7ár¦ÞúúyÚ 'ÉêòµV|ÿèyU®,[™s“!—Æ…¶6Önµ up˃WH€[.¨· €wÿ,‚ n'´´_$—×ý³ê>šÎÑ¥mãÇóè.l܉1%JiùpÚüŽøØH1ž~íAA‰PwÅ’ÅKB€Üo†µl Š_?ÉuYA|'´ [ bÉ5M¦ ÓŒ^¬#¦ß鈻§wŸé‚bI ê+¤Ì}ò0­PÊOV¥ö!ÆdT;áÞI+ÞÛë÷fjq.…s^ð±rý'‘wÄ–iP87ÚÃ0þ‚sø!—’ “CëZ–bøÝÊÓ1ZºÐHnäØN½Ê§´è.†C“O#‡EF¿ÌÇ ” ßõÁaÑä KT"Ü ¦£ ­E¬Ã`^úägs²ÏÛbgŠÜõˈ¿·½™ª·–-š%­†­<• J½ò‰ñG,—Wnn.¿£,ÒË‹ ¡AµQ憇«Û¿t@43Œ®úQ2`×SG1°Ÿ ì9xéj~)Fù’íØ¸}Nõ½·×?Ò"±J>C l‚ñRðÙ Ýá€îü²çƒ,V‚çYkëôð€¡Øû¯x°Û…1áÍdp±ö¾…?,L7¸§Æ£ÐÄXRû28d„°YÂÕ»u;ñ„ q?Ê$ ¬Ö›¥_Ä* †ûµÁD„L»¶FÃϹÒJŠòta중@3Z|T]íÜøÜe+DÜßêÀNÂTß‘¡0»—æÛ¼@ëÒh$ibÁY¯‹a+Ê^r³”Á,?#¯¹Ç´:Üš ^š¶Bçô„Y&Š/ûNŽ ‡Ikõj’û…Lwû(&¼]>O¤G‡¬Ùæy«8\ Úm®DûÕÔ­(Mí3·¢]øBu¶z[úd°!Ã0Å>I”àãë&ÏþrÆ1´VUÞ3ö#¡šÅ¢K*÷ì]¤ÓÂz-dœRËaþXØï±®X*Cí‰n0_k| ´Vü‹¶@¶ºõaUWA32ÓìH‘|žélwn5Ùe¹y,4s3yÃæoó*±…íÍH „¿¤i¦C×ß}P«—Ubù˜f³YGÙ‰YócËä1f*öQpvp¸²p-U2¹T3ÖhzŒªJIV¿võ°&¾Zg‹Ú/g£¢§˜–”—B#sߨt; »ì‡ï¬†ÄC1NHÔÕE¯]¼ù¨J¹N%ÝÒ=qÀ‰r¨ªgkO‘!×Hýªoû ùˆÙ´WdšÆwäS<|æ&>:qå›l{0uÞòÍVˆ‚|G«g¾‡þÄJåŸU¡T±›'ô¢œÝ®¦/Tlè£>‰\rÞ–ÎElçf¿¢Aœ·Ž$©ž:ý|2vÒ]ÝU±§¬ÏVÛáìIB>¹Ò™U¿'ÔùYŠïsŽ+ *ººÜ'(x/:Dì÷p¢¥iæÕ£RZ¥²BsŽîTqé™ö8ãöynªßý‹~JQE„6‡mþ``ÿV¹Nž/+HìÀµbÛ©Œ£ñMÌ‘o”¡ e¥™6¦ÈÉOƒØ Eàˆ£‘îyŸµŽ¢ôëë¾–I“¢þ®¤E};m±MP{û·„P¬é/X.ºßl±ö„û]aÕÆÎ¥‘šfA'~µØ¹k‡p>"û‰)Ðc¥M,»ù_^ÛŒ‘F ßqÌÙmüì§ýõ£A¿¦;º”J.Ýe_Gâ6pˆ‰#yf·â/!.Èô0ÅøÚ8´—ëþÉk5¨ê)iÝž;·KýÓ6V©Ìè°D suÔ*JwƒƒS’jÀ6gëILòv3ñHG»§´q{Q‰“ÔO_Ãb„úµÝ.Á‚‹­sÌ/ˆ¥ƒBb’¼Vã mÎÛÁÒ¾ÁŠ= r°õ$º¨|H5@…õÜ-3»Ú¯:à•E,»àeWbÉÔQÜ@´&.À¤&·X„B&9XñÉÍÈÀR{QÆQÙgÐùˆK{Ò1X`.3´ÄØò1t<”;ßbˆ­‰‘a^NCmK¼÷84w/Ü,0¨ÙÜœ?§u|ËÞ©•= °‚üÄÿ$ºa•JỂL¯]Ðguý‹·lPš¤ñMÞZÙúQÃß(*6¦Â›·#Bé-0<“Ì{׈ÊQ Q>ºw7ÓÝ.òãáx€½‘§I½+6ÞiyC"]W5X{-…^DÆŽ›§ÙMxÔeû”ÁÐŽc±¶t…kå2O‘*û4槤„HÁ²è~Ű ®3ŸmOZ³³×ëpê¢ð&³0F[^ƒõ)fÀQÁu‡ª¹çQæï½˜¿àˆ~y™\G \G^`jbzkäÀ¾:ÌLLÀÐè;ºÑ q–~›ò)ÓŸ7€µœ¹Ú_<;'6þ°1%¥óŽÉE Ú|ÆbELl«qþý£©cJé¤þÝ‚!Éþ„C¶\HˆÂ­sÏÉ]‚‰zد*j=ßÄÏÁ )\ÝHä?i~ü‚OHI…ô m°ri-Ý÷Aüuâ˜Î6€å‡qnΧªú"|t#Ù¥V‘ýàujÂDœIÎ?­Ò$ü¬RAûKòì¢Ñxòí#áÁÑ5×vV;¼Em¢àmâ/ž!‹?æQä RIŽdkv…¯môöï´íãÈIäZn§Æ5Ä’oïÐ hóü,ÍSÅô¼KêxLÔ¦¬Ð-n0O‰jÔ½˜Á¯ûôÄ+‹B#>7@ˆ8lH£)ÇVÉ‘¢›`‚×¾ÁÕ2{¼Ag¢hvÅ ‹BË"}Ñ€rš½¢õ†DÐXVF÷ìH`ž6éÓê ŠìëGº…iÞOwròå3î¤hœÆ¡!¢7º²3ú6MµÒÅ-’#éÆžü:Mñí 4 H6¨ïo¥Íbîôl£ñý«¸>»Ä-ˆN8¹ñì!õ b¤#œåÜ e*àÉÚ¤ý§•]EêžkŒ{Lv©ˆë%R^ÔËõ|ýºÇÅ‹Ê;pFÇ-ï·×IB~>ǰTG°¨ék“06Âõ+†UóÕ«°@Û÷ƒ Жõ&Ã÷­¼YˆQ–Í2ídéG¤ ÞôGÞn“´-¾$ð‰sLø8¤ã¶31œ€^SçµoW¡ÅOR®ñ"}ñÍ jFˆ¦._é±Á®/Õ¼*>ò„‘Û¹3Ó—Ìš6HñÓO+q¦~]û–‘µñl«Bn\{RŒöªœï$„í¼Hu( àOEñÁzo&ÑÕ´–µ\ÝT–½ŸÏK)Ÿƒ3q¯NˆÒõÆ>þ¨Ib¸ón)Öìœ#Q¬-“¢Ã(’Jr@Õ«P&PH¿`ê¹{Dg8„'qQ­í ) LÄ,£èÎ|•É?–%P$.³îî<- v>d®Z®h}…Œ.«˜0^Jˆœ)4eÜ|(póf¯hÜNÞGÆiÍ×¶C_ÒI¹T‚u^Fý–ÅFfŸÆñ {t|s—¯ßÚ¨™&Ó “ŒÆº¨D˘ý¹ôh“žðꔇa ÞÛÌÝdáV¯ >Ž\“ë»ÚÈD`Û%i`ïñT’°š“»c¤Ú¿.\t‘·™·¢ˆyÞ2_¼bæ úDvc‚o$„daKT&&Ī"]NÒ¸÷ FdrÜÖþJ¿B¦vXwî5¦² òv»\ MŽènCµ_È 5nb¶i’ß]q}m3x̓¯œ°€)ûº^¶ JR)±Ãt ‚N!ºôü±§D.Ç©¹ËÕâdб¡çq¹öÃáaIQÌ÷q#|Z Dpåèé•È@'‘èÝæ`O‚ǃÅXÜR{c¶UÙ&û U¯ì´ø`SI=ºõ(ÑÃþ_Fá˜ç‘Þ°ehL](Ð¥„ÁVâ‘Ô¡v%+ºã›p$¼4g©wö“³D·ö”C©4Û6ñx<(½_àž†E»ë …Ý'¼¸k§0˜šð­õ(‡tû=i„‡°Ð¾ÙkÞî¿Èx¹*~µ#Àº§†tPå7q’Œä#ÌüpŽû½eG¤ß´¯\UpKnÅ¢í.’Mô#¡œÕ·…3g9Å-Ù8ˆÇOeKÓgÉ&"‹ÉF' ²3ÊÄF¶?9ßQã¿„p])'ßÓ~u›‘«Ñ™–¾°/Íëéøúˆ†z<õ)Åú¿éf¿â²ŽÐL¥}¯ÍÝfÀñ ÿ#Á¼*\JªÔ,X°‰•¯áÏWòA“)ÜH•ù/’ïÝÈ®O܆õÖ+‹ò¾"—¡wXÖ÷ß%¡ åË\‡Jx„]Eá‚êë^åP¶=úÒË­s©º½Sš>9Ã!¢£ãÐy)5|~„½ˆ0FêZù4—ÆnëÇD"äV¤†]ÿupz\~VèKmU[G7åÇÖ·d9d`a96LþÁ»xî½ãïçòÄŒC¤~t‹»Š[ÄC.Ú(ç)åQ64Kw|Ô¸•Æ¡E6=OЇÑ®åÈðQé´¼åñ ˆ1³hÓÁ¸FK ãŠýzs½t_Uà ¨øe¹rãÁJ+my]Ëã©@úgÄX”˜`·²ã 6g½CTD¼ØÃÏATL‹75éÜÚ« †òkïýû¨jÎÜ@b§\Žìöh릉ëÞ£EÍ0Jù²x|fëƒô–ábLF^>%²:Wy¡<¬·ãZ¨Æœ€B-º´ëX¯+ —Ê…KŒèzpL§ZDN½úa﨤kj|u›d×jÉìsÛ¼Œ~”äã¥9³—5ð¨ŠA´‡~Zü†Úg0nºJz '0Î+¬Þ~§ˆ0&.ñuZ±˜Ltâ0‘»ÀL(@Vçy=HéÆÅ©‹Ìô6jßûõƒôóïߎ+°4è<£œ±A€;• ¥àw»¨òðà»ê;þV¦¸(å7<»Ô©ß> ½\içÊð9Ô;À×`>FaQ&Uà Ý)æ‘z{mwÈ(_þhÚx™fÑNK#~Np}€ÐŸ^·j2/¾¼t÷Ò²ÀîaM?JÚ’©?j,VÖÓð¸ÚWAçëm…_Õ'ŽéLÅ+Îf¢ µª$–‰e{úQòd¿rqO ³ñuïˆÔïÕeGùÑ—¤ò°Þ_…Prz`;ã"Œ@Úl dÞd?ôCÛ¤×(Y„êHs3@„fXxf¢z×`çµÞÜ·ž#Ðlj ÷è’¬o0”o kP~B†1¢ò`8û`Àk÷>fî‘»š€é/¥’È!в.Õg3¡xò?΂Nibf?nž=úñ!ׂ€8fcà–ΊÏOݰMð@u¸±q쯙f>r(Ä]Ümà’pÃE‰z‡ ¶më+[¸b…ë™ï\å $Ñ î´™€–©é*µ‰½Ç#Jã§ØdSçfš7cspž‹Ã—\™ˆz¬@µ.¨¦&K‹û‚@ùËÏVV$Ì0І±s­¿F²XÑJÐ- æ˜ÖL» ÷œ§&¾[C=hF¸r+•·±£•)PI®Â}Ûm­IúkD€Ôâ [b”žu }¸¸<^'º‡Rb•Àô ]ôwPm/Y²‹_›õhmÆqR°B”6.'‰±—Y|ó5<›ãUlÝèЇ˜k …•SRä×qŽþÛiƒé_™ßlníš:ç…êb¬ò«åK–ìÛ¾ì¯Cç;ɲ2ÁVÀ~¿m `>1ÖÆ) Š‘èvg»Äî² R\PÝ\´6ž—h½Ž¢ Q^[F¤5ði/Ud|ÎëØÏg"½f(Áxé9½ŸJ±Z:‚½Š<+ìÈØÿyz#(Àò³Ää^ÀÕ!@Y¨añˆS0K‚>0Ͼ’ý )Ðót!É…'‡4õ¹?Öß@‡ÄÕñبK¦»’`ÖÔ¡jWé;ð<¶±d.<·”¨€;àw£Î³žpÊí­a1Ô?ó©ùk§ƒ³ÍÙže”¡›@{ïq‘>7ûú/»À–ˆx&:Òq“”œX:T:t‹¦GñΨú sŒKs×aþ*2§p‚Sêлz½üZ5ê8¶]МÀÆÖx±óX¯“ëV•´ætãázÝÙ+)im©ñ›­ä–ÚoYR|IbP«3r‘ž*¥5@%O$éØËš8^[A£d´ÌeZ!‘tç,7B¾Ër§]ÙFÅÆŒ-QÏò&Þ—ŸrËòõâò$óÁ¶ˆÕø{«5Þ™xöb =ñöÃt*µáŸ^î`)?Ñ´Ÿ«?x! ó¢[Jj øE•i›9½ÂÊÇ'òLµg0æÏLÆð ‰k„Œ”ïèº÷0øî6¡Ó›q»ƒ»èÿF0ûAs¢¬CƒÄ¥Åä mË‚‹ä¿¿{iê»âìØ"œŸb#¬•Ö+ŸÿMóÊ΃ŽóªË¥ò vWçÇ £_¹àî]ëûv„s7 ò1ïùš7ÙžBgÿ¡¨c³Uì\"ΧÝ.ÅÈ„Wcë ¥`âx¾^›¢àOˆÄ!‰ÃÅØ6,fÁs°ƒáÜ¡MÈIb `ÎN- ¦g§U©\^Âÿ¿Pà'ÌëøUëX/¶#ÈOíçYRâM!d¹RÓ†©=ñ{ û-–±v\bXò…ôq‡òµVTsë.“äÜUnaG(Hº›*¢?ö#Kª»¨ç£(¸»ŠàáxЄzd|rjþÇu„[÷´{Dx~%[ó‹H dû@ù„žc‡#Áê¾ÔŒ+õmày(²Z½‘ˆ^qgF‘I_ï—òК!X¹lÿŸ*ÈA#­BKºì_¼?ìÀ›ÛÕ Î^ðºË°Y60è*hÀ€Ôò…"Á×FEGjf:3õ|0ž\šPKÕréèaè'=E³¬Éù͘ÌÞ`ù½´+íÈ‘j=Ká|—FAl ŸÓnW!œüê;çkZLAÇ8“¸»¢åz }Íî,|/|C}ee‰¢^¹•Û6-|3-8%î÷MÌ$OîŠqTVlAcþÙµ-Uûž°,y)@ižyνŒN®¹ÈpèUú§žt€ÇÌ![ì{f˜eOn:q»yo×.:-ÅÓ÷úââ³GÖÄ—X×S³Ïñøoô¿M1Ù*xfÒ‡}LDOøÇÉMÐÅ\R4ÿ–)å@¸XÆÁYzÈBŽ ù-Û «z+åYŽd>0æp9+Žéj"ª“\¢ƒç¨”ñr‚æ8,TŠ«=´¶ÑsúB&ª&°&¼…ræxv\ê o%êCxñDF—\n’ ‹m‹ë•{šnh:o^Ê’æ|Æ$ÉÃï­ñ½Ç0<ù³)!Ù×v-l\T1ià/n;…¡aX¦r!kî±ÿõÊáh_ÿÇœ~(ü<Å‘æ=¸°%û§ BýÌ•Jþ–ÄŽî†G7;Ž£rÐr*’9h9 6w{M ,íõ¡ƒHÖ„6„m]\گǸ]me/’ Ó&R™NúüõYj @c Æ…·t|Aû©ñs.|éÀˆ4tB£`Cè7ûEâZ2«´¦§Ø›*ö›Ÿf94n¯„6“ß«ÿEÅ7Ñ*öî[Y}U}LZªÃ}9kq°XèJr2úoµÆ(jÑíÂò?b=ÝFF¹÷’ô¸^ì3?f±ù¤,hÃB”½x´ÅpK—}„pfj´­3¤w/¨í !UÈ3Æ;Z›Ð”„- 1Ûr>»æ“]£¥¤]²æ¨œ¨… À\°(KR¸N#ŽW#×£Ñ[›èä­YòùÊŠ©HiÌG‡n^±thJ¨ªõš4ÒÛù‰gÙ¿BLÀBþª²Â;°ù~ :t„#ßU‡Œå¾8ìså´ù·ðJºþv–5 Ž¡ù6BCt¬ïÖ86‡Ó§×!oéaê[5—Ì…Fï$Ô¤Uû6ÓÒX]`ü¿Àν^3ù6žxЭu–}=”Ç3–¯Îü]¡n„´É3«¾ëkç™ö¾~Å+r|!W´Œ¯cTÙ©ÄV\b°GšdÌfðݱ{ÒàT¥ýWn…²Žx5"PŠ1Ÿ‰ØMßëÂ@ƒ´ggr¨9Ѱµ4QL³ þóöfï€Ó@ÿ®³¦[ƒþZÍd~|ÆWp$Zz‡<[z¨ðì«P¸].x°(˜jr™ä`}álWHÓ0gӳ阑÷,N“¿|÷á`ô2VÆÞ"ó¬zåÕ—ýi‚ûÝ"CWc°gÃôøžãX»a’ð7b0,¨\•V{6ý‡‚¡¨u¤ I Å¢Zíò;%+¨J‰ ¯àÆÌG^ÿßqµV1q–·ætí²D°‡ÑÃåôA‘¢5ã–Ô:pªŽÌ,ØiyZVæÙ´÷¬\×þã–üÙϘ!+“9X¥°ÕcV}ÛT!´áŽ–™ÁÆÖ/vE£58’O£è¯‘'mQì1Ñ wɼÕÖ³Ê6²¹4¤Ê‹\$þ®-–24ßDÜyè^4˜G³7ð[\6Øì°Ô,Æ´1GKÀñ¡±:É9º4ÑeÑqjŠ‹Ù–ã w”lvÄŠí~¸ '2Ø„Úeÿ.GC¤ ðÎ'É8ÜG:Ϻ’h—äÀkúÑ”x†C¢xC¿$Ú3Ê}xZœ…ºs„’ÊÝZÆ7.wò¡]‹9ƒ#He1ž!4'4xÌõ9 J˜V ÈìäȺ#3o|ËS¡Ó fT@ñ¶2«½”HVÝüguþ.Ò&'ïÎëÞío‘ÂPfÅ@d! èˆKj/ 8øpL‰™Î0ä×ýx¸Å½1¬ëº~:Úuùfí…|¡ù Sª¸ÝÖ›'sEÿbÉÔ‰¹=½›nŤڴÇcBQª ·Ôkûn°ð_(ˆòbÚWPF I¼,DÜwºœãIqÐc[ŒŸ8(HöÇÙªôsød«V&88 öj­MoM$GÆ é£ðj‡ø‰]‘ñ”… 1T3[þ!îS´NÝÁï_mÞȦ 3„’Y ZA-ŒICAy©ªÜ'8Ó"­üšJM0(%'{g’¥î¶"£iî΢;b8™æã˜«Åî¬uq·²GÈð_gÛÔ 5Iä”:à`"öPèÇD—ñ÷Ñ9PàÊ—;óã¸ÊÅñîïàŒÕ =rz ®ä¡øã] ‚V,ERÆÇr›4ñVj’#73–еlŸFL­¬]\ñÞŸe‘ì Æªíú¼õÑç¬å“¦ö¦ïf|]:¼0Šg:4! ^YÉ‘Ÿ6ó”åg~ÃF°!É-Fk¨g²ƒÝÂ4÷.½ÓðíÅMz°oþhØÆÁ }Üšç’‹»ÝýJ[ ¬Åš=9’O°Ä#•¾ѲhYíTš¯@Ψٗ‘E¤­ÉF#G`R”>³µfaÌØ ¬Ùq³&ÜÀÊùx®ÛhªŒ:í;DÞl)Ë¢¡š7¦î{µi1­#_»^Ú¾Ìd¨ð á²–êÚ,]ÃÆ-‘1˜È4I»bYt ãÖƒbpÙÐÌô 騯H6¦Â^æÛ_„hÑ>YÉqF@´®š†ü[°—]|aá÷‰Âà}HGÍåpÑWŽÑšëg ÝÚR–M’Œd×UÃìÁ¸·# FÉðö8ôÝR6“ϳ[¾(?-Àm•‚tyä ä:æSpQkÕZ’@#^j²š†ô/Ù‚zÅÞôs°ák%ÂYè8ÿôÍc”6’õo¸ˆ"ö4Š]`ÐER=ÐZÿµà1!¨½«ÏM…NšÐš]:fð, å÷F½“IšzVu’H/;x”¬{PÌ.Ȩ· SÅÐŽ[â½/¼@¯:…ƒo[éî 2QÂ"Bͳ Ö)ïæi…{ð \»©Eû1èÉ4Yu2Õuj øN±—@úÓŸÚi(-F”Pi‰ÆØ<7¾—ißiþ‡¥$nþ±áÌÓ±„Ÿv£ídgÚ¤r÷vkN7ÿðñß;°+}…$±S5Iâþ _ ÎtåþßôÏ(Â9»ú¦ƒ´qàC¤p£p•b L¬žgÎ7‚œ$æƒá‹¶ûY-7äuü0þÎà½QÔ=],#™…2ø|gj¶ª%²sÇp;=_nàé›=lð"ãb”fBfŠ™ËõbbcHYæØ²óÖ¢žsp: E$€´}½  Á#á ³ë¶{:â-ÜNrçbý¤Ÿ†õ§\Jó_!Ö鮡MÔ[Âö3'º¦úÓUMþØü_f€u¥&Ha𠹑VñÔù×þ¢«Xñ¿q[C$ÃËUà¢Üʸºyá6™Thõ¨˜Qæêµ/åDßU{ ÙåŒÎ¾ç`мsË]\›b¿3›¬RÙü{ÊHà¥=-ÍDîãà'ûYLiÝÓ¨ºïIÊÖnïbÑXyN\ê7ŒÉÜ&çF‡ï\hnên}ý“å]êÚ·¬éÆÓórYEòB1ëÔs}Š¡NƘT¦¢ÁŒå¡­V¦Þþ7ß Ñùoô 9} ùŸu³Ë¿)€Ü¶í+K‚Æ;'¥ï0g=ʪ} kQ<=£é¯ëäl+|q´†$~MH³öp! èfBŒó¾=ñ(5s«cDœ³<#æžþ†€‰J‹Ú"^ÕÃ…‘m·oæ|0­ãÑ(g§%[¾WµSó.òMf¿)4O ž·÷0Wz%åú¹ ñ.ï¤+AˆoPþz&”½(Èb\üP|}ü}i]ev¡éw—­Ïò«†;„¤ÇñfïOsôÓ0î¡ûQþܘB,UzDÊr8§¼1¶Ï¢ X÷ÊÆè´÷óc<g¥«eÀ°Ü®Ž`Fã­–BTgj-ľ ÇÒ(qP×5¯p¦·Ö¥1‡jàÖq3³Ôb |†eømf• D¬# :D»XôÃúâÆI)ÔÃ’EÓøõ¾3²ºM3ewZá ZR¬Š™¨¹-Ò‡'ÓÛ{…“*à0¸Ó³\w€µM¼Í²?)hzV‘Òr· ˆ‡§©÷¿<ÐþÓÏÿûI{h6²Ô·EâµÒÏ"jAþ«·±Ž˜y‚ËÌŠ˜œÿ6|†kíÌNMUäÑšýy>5³ãœ»u•YãÆüË"kñ aAä~˜™7‚EW JÀÂsG°ÊþKäF¤òŠ6Ç…mÌ“HSà7–G. 5@JyΖbb.BÑAynÖ1IµEÙEd'±¢•WÕ£è:ÈÒµ³n²¨³4B)Œ½šn z/kn¬ïŸ”ù\ã;8 %ãhd2¨Œò¦{¼øÂàú)½~ÏmPE£´ã¸éQLŸO'!úLj-HR-Z(‹†³ëHrmgÞ(DHÿ Õª;YØ>osÞíç/À‘‹n&²uáê_âK¶«ÕUUã©V¶°øk†ýEÕwÉd‘ÏBú-‘ˆ«âα£âòùC´ Ø®“•Àïlš¾ö8¼&ð¶üš1ÿÖ \ê•óÈt5: “2âN6†:L9„cE<ôüI=`¤<[+ŠÎiÀ;tTªK²¨"QOurnAz‹aç±î¹úkH#n¢éÏeÊT|5òh^| èvh©ç›©oÄMÑn/õD&¡‚ endstream endobj 97 0 obj << /Length1 1680 /Length2 9488 /Length3 0 /Length 10572 /Filter /FlateDecode >> stream xÚ´TØ-Š<¸CÁàî\ƒÓ@tCãÜÝÝ!\ƒ×@4¸ Á GfæÎ̽ÿ¯õÞ굺{WíªSujס§ÑÐf—²‚Z€ä¡Wvn.a€Œª7€‹ë%:=½ØÕô—^sC!Âÿ"ÈÀ@@×'›,Ðõ‰§ …”ÝÜ/ÜüÂÜÂ\\..¡ÿ¡0a€,ÐlPå(C! tz¨“ lcëútÌþ˜,™ÜBBl„¤A0°%PºÚ‚ŸN´:´¡–`«×¥`µuuuæäôððà:ºp@a6âÌl°«-@ 䂹ƒ¬¿¨AvÆNб»üi׆Z»za À“Ál ‚¸ÅÝ` ÅáÊy)Mð©Á¿Ús±„\]8\À¿[äüæé–å V2PGGÄÕýw}²`ÈòéÚ½8ÿœ¬=êñù Xƒ!VÖ¿›°rsâÔ…€Ý@J²QžLèÿØl@®>...!^Èò´´åü^ÇË ô‡“û·ù©?'¨Àú© Øôôƒîãt\an ?Ÿ;þ¡ss¬À–® ‚þOö'3ÈúOü4|Ø`Äõ¤=n×ïÏßÿLžäe…8xýCÿc¾œR:úr2R¬vü·OZê ðaÉ `çáã ø¸~ÿEþ« ®B• ÖP€ÐŸÅ>ÝÒ vÿkþLí3à¿s©AŸD 0ý£qc.>.˧/îÿg¥ÿòÿ'ðßYþoÿß‚äÝþp3ýáÿÿ¸Ž`¯¿Ošus}Ò¿*ôi ÿKÕý¹³ª +°›ãÿz•\O{ ±qøûÁ.ò`O•ØÕÒöO±üi×ý½d`HêþýªØ¹¹¸þÇ÷´Y–öO/‡Ë“"ÿpžç¿”ƒXB­~o?ƒ½Ð¹ž„ÄÃÇðá~ZE+çpr@ ®O!€§öüÖPúï‰òó=Éæ·éOÄà”þ 8UÿF‚\N¿‘ГøpZüƒ„œ–#^Þ'ô´§ÿ°÷Éiõ/È àý >Øþ >Uþ|:Êá_ðé,Ç ÷SfÈ¿àSfè¿àSfØßðé†8]@î óŸúwý‡ð”ÌÕã_ñ‡mM¨áíÉš?}ï͵¦v:Ð> M–J5R¢Q°ëHîúþröÕ ´GlƒïV¦/pvÄÖ(¿ñPðl¬X›ÛÑÜ­å…q_1Í«cX6K_h‘û…„Å•ò ÞwOœÙË«¼üÉGjåDVt¿£Ø—¥>†ë•¾¹9Hl¿®=5_ƒ•<š¨1—ÒíJ¨™,–.5'« íe³ư™IÃÎ!sví~Ç úMÄà·-‚ ÝŠG©ÚêÁÜ4EÔø¸Û„ð 7"…ϲ«xáÊqLaEçúÕ}çÎOMŠÙ¹D9*l´¥q0ÕRð óÔTNg ãøÈM…šú „Ë^µ³ ûžÈ£…<úôG–Â*æäØÖHó~:w"‹wÙq™¦{¦5h>0¾î?8ö?ì“bŽŠzŽj\º¶"m!‰?Ö/|uÚ£âÔÖ«ƒ÷‹~Û³Z<·â²˜÷ñ÷uDùÂãq<žŸvFjÃ7ô1(mäý6˜‚\H!È6 æÍäñù,³èKí)¬P«îJå~¸9b*g–èËnzòÐ-QFî—ÀsS5Y÷â÷1yÏs8š´!ž†§'%IDÞ3Ù?9rµ£“U/¨™Ã–EG[bNÜiÌØЉr+Ñ©›í¸¬”t ŒÈ_Û¸ÕõoY¬Û-³º¢„Ý<&'~ÿ‰•ï¨QÉìÉx·ÏÀÃïcîd=g‹I|=yÿ5ŒôËæŒRµrÒ¸C µêûŒª^B/«|šØs:û5èÄ’Ü üvìfo&ÎAºÀ×> Í ¢l^„ÃYæô‡V²HGÍF|!þ%”" à£lÂ-õk®â³±Ö¬[Öo“V+&ÒiÓXÃI6e@¯÷§Ro¦L·[*ÌQâ/…ˆ²ø8À©¬Á1”‘=k1…{‹w¿NžøiíMÚ ï½©ý|àzà {GèMSa“ø)ÁbM½vã›ðåjŠ©HîB¡w¨[¹bŸýÆ{t¼5X¬~%Þ¿º¥œÓ(•Ïœ÷)£2Üh ¥£Š ‹R7²_ì²×i, ß%¡SÊ÷V­|ÝëÖø Ã\íåø AŒiìëÙïñS§\•¥’R¦yé"Œ b‘*úöµxÙð¡bDÎ¥Im*ƱÉòsÅÇò­8fx_ÄÌqÍîp†6ò´aÏšÃñ6oHvwD˜½Lyµ³>ûbê¯`~çH(*K†+Ç•ƒaŒÊÖ•<þ“ÄKažR×ųE/rùLÑ+gêSìãºyÕl’w"YR\;‹¤ ÷|µO¬ÊéC[µøƒü /޲&ˆbxá}£s¹ž¬C„_ØÕqèl§bÀ]†“ì3T↠îÌæ{׿*@#„zÆgiM‰«o´ž—à{†ûÒ˜â|ðÎ[×OŸŒ¶€sbyyÉ9-jÔÉ2¯_-÷½ÜéÂ=ûqPX©n;©,5œ™ÕØ)nZ†'äž?“àÅBŽÊ¨äèÚ:S#l¥FwšTœ¢2C¾ Ôò,è§ ½·¢éÒ€OÉöÈjf9+@ ìÞÚ- Ö®”µÂ·_è'K²xQw§w6VaêšÆëgËJ\UT‹€ (V+•²©· ò3®—’nLâ:5R‡e£‡<†©©#Y¢ó¡©ëä=ÓÛaï`j¡Qnn1üàõz ­«œÆ¤Ö{þ«ä<Çû€w·„˜|Ç‘p“ìñɲ*M|f°EŃjg› ²ZN*Ø^YÐó}›‰Z úähO@•Õ·î´Ï‚Y©_–‡ƒcí“…E÷V+L!,Ây7ÐX+óˆ¢")Õ; ‹˜0vHIbøA­+R’ ]siäƒ Ãè ¨<½g?Í‚Ï ŠE]/«^WÇöŽtÅÁ½[¨ƒÜŒþv–tü…“LvÖÐ!åsÖq¦VÕ8´/K?õ¢“Ô Ç†]-eÌÛ¿lreÇ 4ÔòUH1 2$Ep+ga0c’Õâ§ÌˆA$äœââ6€Î¸EQƵ·ß™?šñ.R~ð{ePXËÚl5'nj¹ªÍ?„Ç%g8äÊ6ò‹Ÿ”¹ |…ò¨S7VÏäóApß’ƒ¥ùXv‡BÒ=×!]’Ô½r?d5ÅÛ @/”.—L[!‹=@ ƒ q›Â"{ºõ‰^§þ¦Ç‰äþ_®Í¹D”Ë=4f܀Ι+XƒOé½fÒ[ò´äÖ…÷‰]Q2Ë8Þm—\¤.­#ÝšîWg1l _—È©ëŒÉ†ª¾n.âV‘®«œÄ£SÞn€oþÞsþÐÖJéDLÌE8 €ûô:T7ñ•€¡Š,-°8õÂzW‰»œBbÖεŸqTP˜“)F)O¡0 n¬™?j‰4<K4˜µ°áì p“ã™·`øQ,¢É¿¶C¨{Ç»_é ÒÛ¡÷0\‚Z÷k5'©È4^] ›DxªXv὘kNª¥šq'|àBÚ3á­ÏÜž·Ã)?F¶ÍQôzRÏääò%Þ[>'Áž»!À”YNÎh`7^|T[­ê¾†úò‘oc(ƒË@Ì'Ìþ×46t«Ép£dÜí@SˆÕb\:tJ}]fz”åÁÞ]é¨@Cˆ¨§ÆêÅA  ÷TMPê6Eﺨ6za%«óÍpîù-æt¿Ý@ËzP2ØWcONÈÃB¡ÝePÕ;ac.k¤‰¦9‹Çæ;BÉÜ=ùóõå TKXuÛåD}2nl)Ú5Èë¢ñ3îføÞPHbà+Ê^uv"5©wbBÄ6|bÇú¦žãLÈžMKyrþTu½K®‚ÄÏýÔò/æ”âdÇBR’2"»+³J©»iHFV‘hMüàßËtö$.ÊéàóŒ8jEÑÞöÁ^‰¸†i¨¬7“†÷‘;¢´sô }ôÈçàjP–ͱ*°×Êš9Ó3õ-ѱv¸“øò½É91ÛçPôÚ·jË.ËÚúå>g1•÷#£¦“ÀÔ ßk `G¹?}“FæØÿÆî{JNÒ3yw ½!uä«ï ÏQ Š®†â. ƒ¢òñc)##æ|wñ„Psº±W­a8ï4;ß@ZØ*|‘šx;ÇœFQ]$FÉAêZn 2â{ñ…IŒRo¸»Z;µlvú{)DZK5nMÎXG7vŽèaQY/ói¾~'‚%…’łў›» Ò4ð½ k´D*¿ÕÕͼWyã·\ŽÓŠ{c%5Böl {<í‹Ú¦ý*2¼ƒî=Ô½ôWT>+n#­&½·ØÀ‹r]8x7ÑBe~-…ô«±¦¯ãáÛÄô—·ýùÓ&Ub2~!÷_Íx¾ÏÚÿº$Àg8BÀ8Õ+Ì'!—*¥ÝÄtqiZ÷r¶'^¡Eý¤&];ÍÎÑhoúòÄ%ˉK€¼¾T°K¿f~cŸš5¾¨Ê(]¶¬%.CѾ¦jêwgf¥"íÖÊä‘12Èø¢ Ì‚s:ûA;–Ë—`_ÆsÚ] V‹ x%©&™sHqm];°½r̳ZWÒžƒ L!‡ÑSá{FMMð– D ~l9 ¨)â³óEø¡+WÖɶRÄî¬N é®퓹¶–ñ{$ìzŽiµuâ_2õ‰ö;^ø•oVÝ阱'Õî8kœJÄT6"ûÉ\ªÖd> I?å_R¢%Çk{(Bœüd빎Qï/¼.·Ö%Áå9R/%ä®â8´žçKcï!ï¦#[Nêúªÿ(gmÓ¥|Ñ›[ L¨!‡$üjÚã3O-f[ßàœýn á“ [øŽ#®™£6¯`F ®Z»ÎI´Isó ›1ÃÉäšUœgúØä¦ß5Sêí›­3Þ´¥§¤ºUkͲVÂßGˆ:n¹W³d*šž£Å7áÎîQò£Š³q{žÆ¤Wô.±]¤,mZ@š{H©õì³­H×Äk‹Á _@n3ø¦]ðû\Üü·Ð® É&¿£l’ûÈ]" Õôœêú óS§ÙˆBsïŸÆìœOÌÈSBÖ¬$ôÄ¢'¢®óIBjY‹½ãkJŠ”+.¹ýb§. œºñÍq$â+ÿnåOïXbçëºß©e¶ ĺ°XÚ\J.¼q´·v/—\Æ ÃÂÒq2”Œ7Å B, ) 8µTò¼O ÒT©lh(qêÁj!²’ÜcÖ2é}´•X2r u’ ;ò,NçbCòØ•€z7þÈnùúLiÓMMZ‡ñ¾ñ{ñ ž~a ÍkþYPÖëŽsN?—¯‰Ü¬c¦e?!îÈã.®žm—ÅŒˆ”k7äÈÝ â½:—áb,¯ãb™ÊpÌ k=Žª‘ôäH[ãݨYÆHRݽŸÇ8ÉT«”á•*K·q]^á^fk½¹-v|ä Ž«FsרdÆW¨½ßÚÑ ¡Çi°6¡Ww ôoÛÙ"q°î”²GÝ,ÄËÝh¦ö{/a6ÙÒ°õˆüî\Ÿ€a¯œ™îöÓ|@]VÌÜOÖB⣠<»`³ÌwÒ¹ÞîH§æ&2Ã&–¬ûS1í!MÈ,Ác·Í5;ªä\ma×…óÆ#(Ð!êåó¸sÇv=ôwl¥:Fç(Å‹sÀSÆAXÜ҇ŖOb¬®fÍÓlŒoû4˜—Î?—åÁXfp7xõCæ_`PèúP²Ç¼/Ÿ ’Ž$?äÇ„‘9/d¡ÍÕÇ}·"­2 W7>½< Cœéo±ñóÜwZUë®…Ý<†|½óÿ®êï`~¿Í›×· £z‡LÐÎÅG”Ù@²L9œ#ä–ÖÞ¹Ö€§ «¥Æ×ñ²¯Ý¨ Šò0Ú¨,xT@ÕX;‘, ùù›5°ÖòkOÁ6©ýt9ˆ6^ª±a!JWºÜÌN`vbf_0¹Ý低7É©Fr¬öýâ…‰ŽïÀ”W¦÷º¾j”öžX]B2â9„~…,xÚ>û6ûa öh6–m?vàË µTñœ|î‚}§…ñåÖ~ƒ»ÒÊõî(B b¡&Þ*Þy.¼lýì·óŸö7.iE¶âï³ÌCó±ï4ê˜ÞØÑkÔ„µŽŒŠã 7+è;¤ªNI dæ†o7¿}{…´’øŽ¡7ÊÖ펡‹J >ìÅó˜ ØYú»8!Kc LZ&ÚUÌÁÍŠÛ_—ÍaGÈ£=½©ÓÏá¼C‘(bòÓYi“·È[ –Zƒ+ô6£2“.—H›c¹–ò¯=£6 p:t&¦+Gá]Øû´cP*{e œ…у…„Þ2õˆáí^êíÚs»¬ë:tæ÷æ´ €@´!ûÄ{©lñŠ`Ó†•}R-ï)1kÜȃ4æ;©•dFÏp i +ÑÚ­RÓé8¶œþB÷/;Ž Ê4‰õ,¢5õœÚ #}bªãB~¯)–µ^nÜIñ°ª[ÒnºÃÉó£É]&rà~š1TS ’%§ÜêÛ£¶%!Œ)ö¥ÆûþjOœo:šƒéÕÆáŒ8+jX0+o‡×ÉrÂUäܸÏÒ_NŒ ¨[;S.Ѫ(ÙÍïqcR#SÏ&iJËØ}ß]jé©ÂøÑ¬^àÚÅ^WzÔ€ÈòÛ«c™è9Ì9®~`¹ö$£›“œøGäí_5ÅC¸wl8ï©eVîzäÖq›`U½áa1ŒÄ£ÏCÝEmøÛÎÓ2*7óQ¯x¶W¨J±ÏY°Žg´d÷åYѧ?æý¿d_sjg¡°ŽK2àtE%L™ôäZè¯Ò©­–:-ûO¸’¬ã;âW 3èr²±˜MN¨û20ᳺsJÜÙ#ÍçHbÅÛp‰û›ã¹úÍäˆD‚>T‰Ž2º -"-š®ä[¹F5Q†kx¸vCYM¾ˆš¼Ô#»2¢„† É…bèöÎlÕ Öì¤ò,)”&ùîÎ9ôòˆ14óõLëh˜GÑ[>ƒ‚l¥¢íŒú>üí—8” ¿Z³ƒ˜è‰Z0ʺü©8+cuEß¶ÒÒ}Æ7ç?ˆò´Ðó®MÁ*U¬VF^%?K¥äCܘA>›Ëc¿O:è>:Ózù\DJ=J=* ÑßæS0ó²ò[<ÀzFT:•‚ô¯ÙÝMĶ1\þ£Ó½¼Ä¨~¦ÝÁD ž+á„ú˜‰¯ ø?œÜ›ƒB±¥½FÝÁ^•šk(èn«)‹–féÇýR!×ü5À¤—.;®éŸó8ÃkAf›·,1=[C 3tf{îÝXšï»K9±sš”Å»Ãø„‹QñšÊ®n5¼ UŠr9Qó‡nÝkÁîWQÄ J‘[Dz¡¦òàœ=±]XŸÌÄTÑO,ˆn,£ÎeŸ¾ ö³È }¡ëá#ÚZ<.$ý#å‰!„Ð2àä-Ɉ!zµÚ¤u™›—â›eCó\†UŒœÜ:©·æ ðÁÜ(¥ŠE‹ "?£6ëÄdKÓfÖ¬+¼:É-lNø.…jîÏÿžtæ­$©XW/ýGÒ:ÜÁ¥ÎÅ’ô‹¤b~9ä¶Hž©oµñ«.ÌÚõü¹Êì†B¡·a*±¨ŽZ("ØÔÑ3^žÏ¢ýüÜ ®g|m­xûÚ‚ÌíR7ËŽ;!üõµ<ŸoCDkWïᮚãê›îѪ¬•ý»mðÈí¥²_ãOL8W*)YŠöÆèŠvÊao -¦Ï~¬ößÏðÇsQ˜¸GÁÀ±Ü Â8ž©ªh¯ÒÛ:º« „xb€˜ûÄ{àÍM¦³H–*Ø^{kŠƒÝ‡O¬ÇÅtÓ—°ÙÇV‹ß^µhƒÞ5,k8äƒ3pP" ÈüýuGÚó½°Š¸G«=ŒÄ‡ö³|“%”±šêãm­m[½>õJî±Ô;¢Rx³hÞ“ü7rGò*‡™²™QÕôFü¦ƒ¬,·«§»©mTÀ$#tj-ÿ®>Áîß³£%¸¡™ÜÅ_ߊâŒËÖT“®X +“§‡Ä͈UŒõöñPø!Akë·Ïòn$-; ijdŸ}^3 ´÷¿yO›9ì,dP>æ±gæ5ü]§üØ|¹ómåÑɳa¡…–oUÔ“ÁîjR¦ëóöaQdü.ù¼$í{M}_.'Ð ø= @1æJ­új°k'ˆÆŸ:ñs¡"2Et½Œ…§.Æ^Ü9I#Uš÷%o¿Fm‘VÇGw™ ”&& ãñžHí´1’¯†xܦD˜|bðߥß.œLUž×úq¸àoXíégÚ ¤ >šbe¤Lœä8µ¦Q âr`1“ÙGtÕªQÜãǧDÊ.I컎%=»+ ŒÖùY †Â3‡*ùÅÀ;›[ý’¡¸¢B)É«ÇÄt/íÃPh8_eûòðá{­~Æzs{§Í¦µ­j_þ ßÊÄvA¸'wΧ²Ù_ëŸ1Œ}«ÖãµÚ;¼P„ñÐA‡¯¢Þæ|d{Wµnó\9%*êôz«IOU|ê×v€ n†Y˜sXv”îLÍy‰œõR¶p4z¸eoÏHf4×u^ãÙ3ßlï)“ž I¢˜ÆéhæTŒ_¬z›?¨¿©>ùp!YÛ[Ew¹Ã·ÍÕü«óu@Í+–i8~©ÍÙÀ¢¬¼YöåÙŠT6¤ ó7 cü-Ϧ©‚¹S]óM>ÿœ4„Ç0$5/P¼2~ ¿öÈrêí)−‰«?Óú!8yDÇÙQºmgYánIŸ¢¦À wÔPµ©}O½rm¢ß^ÃÅ;Jdb„óÊ­ãHG£ ωdñÂZr`¨r*ÚÙÎ×p3”VÌUÈ¡#¶ASŒ…–ž06ž[v¼kôå½FÎ#9^²0¾Çq4MåD‹‹æ?l…‹Íað¤´9 7ef~r â‰b™²C«[~—/Åx+h×*{€Jì[*7iÃÙPHÇ<ú½–±ÃpD˜þÚþ à(9(²Saž>«Ž¹ã[õ-ÝtQÉV©ñeùXa<€ñýU±,›,RŠgªOæáQ1ž…9“ ·÷§ØNklˆ9v W£AÌ žº3lAµ¥Œ@&šÏë»T‡+=çd»’AÔ‡“€õe”4Ö=ó+9óKŒFÒ;Ó²~Fœe6_ž÷´q •Ï =– Æ2¢iˆ‰,ü "MªgÏi¦ ³ïÀŠc®Í?D£ü½$e£Gž1¨LŠlJØDP_ èi‚w*›WšP®È…Ï5óòGYk ™á5¬ß^B$·Úê÷ÏO]µjÞD?þ°º}ã¦m(k/ Ï}t4rŒ²2¿É s¿Ç5¬M¯ªÿ|ÍCÈÌH#Ë–‘¹9qÏ|ÇGCÿJc¡©*úf¤-ŽmÌÙ¨O¸Dõ.žF~#‰°q´ì#—Ò‰ÈtzªUFÛ($°ÓÒùѵ¹ú]½WfŠm²•8ï䤖8U÷÷ÙèÓí—äÓ&Çaƒn  ÀÂ’Ã~éi€ãÄAÔ‘¢‘¬ ¤–_tt…ªVq·Gô¼QèÖ‘>o+m×0*ÝJ-d}þáU?|„—ì1íÃ×¶™tµÃ­S—‹èa •³ý'—îÆéœsëC³b{i„±š¡¥Ff™SËúÔJ¡©Î¹ö&z…c.Ń–¤Ì@$/¹HÆãO‡ž@þ¸­Š :´¯%AçÉåA¿dòZm$}µG¯úRͧóþ…¡Òã ¶â¸Ië‘5QçùŽeT; k Ð—‚Ò%~ÈçµL-(>#=¬M@7lê—›5Ô p8èïß»¿û*­«qâÕçp®C2 C;K5í]¦†ÔÚDÁ@,Ùà Œe€„ß§j¬/=!ü ú`´Â|ì/—ůÁ£XýÖËÄ@$Sƒ¤7*(.às•yÂ"ÆN~¯viÐ?_É6öìjpæÇ§wA*¥}ÀíÖEΧÛ|©eûôW6¥ðoÙ0Ûâ¶'8Û¼Q}o¶Ü›¾M³{lmÙ輺ˆÞè¸Ü?MrØ”€nÆEöŸz¯ê—iYŸ½P´3ÙX¹y…_Lº¸ñ $WH{+žÇCÇ_T—CmÜ“÷ Ï n(çšà¡é6;êág’''&Áá Š‚ËY´~ S¿±`²ÀQš|«ƒHÁ‚pPtcø¡pðÅ‚ô²nû^’eH¦¥Bï;~®»©÷æw»Ùh|ì…èRd^Њâ;}¨ElJŸ<9½_Á;9ðén‰î¥ÕZ’£Uì„Æ"À³ç‡ÆŸy¢ØE×1j'r-S†j$7ß[!ÅB»uÊZjöLEF—ê5Dn?B{Ïú×ñh?Ž67¡Sy‡¥_¸i)îIο[Xìç?]þ¨,lî}¸Ÿ¿œ·Ž£¨&`9·Vu÷Ø|M¶8C²cŸÿ!Z<ÍþÛÀaoƒù:VG3»+"͇CÏ÷H¤Å1ê)¥¡Çó—‘&_hŸDL¿ƒxÝX?’úý—E“MOCÝ<¥¼ôU.­ì†HD¹ ¢­ò›ŒÕ ¡Ÿ~éàè|®´³¤vÕˆ ãŠÈM¾½¼j¦ášµæ$:˜Z9>UŸ‘Jž(»_ƒ|d€"ÿÊX¢ÈWÝ­J=™½)‘%[w]Ü“éÌÿç×^a endstream endobj 99 0 obj << /Length1 1481 /Length2 7279 /Length3 0 /Length 8274 /Filter /FlateDecode >> stream xÚ¶P\Û.ŒC 8A‚Mpgpww×` 0È îînÁ ,x·Á‚—àÁ]Ã#ɹ÷œsÿ¿ê½ÚU³÷×ýu¯îµ¾^5´/ÔµX%,aæ`YÔ••ƒ (RÑäà\l@ ':-­6ÄÕü—VììAÿArƒ\mÒ ×Gž Pt³pp8x9ø@'(ð"ÌY r‡XTØŠ0(ØV æèå ±¶q}\æ?Ÿ F‡€Ëïp€„Øb‚T@®6`‡Ç-@ö-˜ìêõ¯ Â6®®Ž‚ììl 6˜³µ(# Àâjл€ÝÁ–€_ TAà?±¡Ó´m .ìZ0+W3ðh°‡X€¡.nPK°3àqq€–‚2@Í ýCVþC`üµ76Žÿ¦û+úW"ôw0ÈÂæà‚zA Ö+ˆ= &«ÌæêéÊA-Aö.°Çx;b2$ü®•Ѐü«= gˆ£« › ÄþW‹ì¿Ò<î² ÔR æà†ºº ÿªOâ ¶xÜv/ö?'k…y@}þV¨¥Õ¯&,ÝÙu '7°‚ô_”Gúß6k°+€ò ðÀN°§… û¯ôÚ^ŽàßNŽ_æÇü|aŽ«Ç&À~+ðã ÝÇä¸:»ý|þéø7BçàXB,\æ`kýïìf°ÕüxøÎOÀKà£ö8À_Ï¿Œåe ƒÚ{ýMÿ}¾ìÒª2úRºÌ:þ¯ORæ ðaåâ°ròÜ<>n€ß¿³¨ƒ Uü;Tjü)öq—þS°û_çÏð×l0þKö(Z0€áoy€?ÿÏJÿòÿ'ð_Yþoÿß‚dÝìí»~ûÿ?nÄÞë/£fÝ\õ¯{œèÿRõÀfVl qsø_¯‚+èq$ ÖöÿÝFˆ‹,Äl©qµ°ù#–?v_Cf‚Õa._· €•üßãdYØ=Þ.Šüí?ο—”ZÀ,M'/äì òB> ‰“‡àÃñ8Š–`Ïß°³Aa®!€ÇöüV0gô_'ÊË`—øeúìÿE¿êa·ü|äBþ†^è? €öÈ `wþä°»þòØÝ~Ãucáæìü8Ï¿õöØêðïË ö[ ÏÏÀ,„BmkCÛ®ª%H=X·FE&i·ô2Y}æÛÝn°PSß¿^q¾Hýܳ¸!Ãp.¾@yïó£¹5¢å•Fë­ïi’æøV+úܾ±¢zÉŸ±j‹ó½wòÕ ²Cl†ÿ¨HûÆÉK½ÿÊ£GÎóCoù×áð™-oïy•0îÊ'Xãtb‚J¦hóÍs¦‰©P\YÉјðŽ<±§Î/&ñòÆ(“˜Ñýö⸊} W9㯧½—*µ9]:IhH ‰ÉÏñ†Çé|$wÒ‰f}J߯à4± qÜ+æïE¡Ï)¾`0Ù üäc;ªÔ…*½w±Mç oúv臂vä-Û&U‡óM/Ì@γK¤ÅAƒ –ò—ÍÇðâ£ïÕ´Û¾âxI!Ä<sرÜÿÌ9AP×0·<ÑÅÍSk®¨«ãȺ@¦7Êù½¤®ÖîŠú¤XªÜBÁä¯ê™|ØKÙ]ßÒEÍbLÑNÚZIðâ„°‚…¯bgdµUÖoÇt‹KUäÖ¨7gǽ åÚS,Žc_hW믥_úYÛ9 äÈãía&ûTݳKøD^‰^…k†í_¤uÓmèMïžsí\0y®ÛL´­pGÔ“+x¤9b& çJóÏpéí¸gõ¿»W `» »ƒ}YŠÔ©5V‘ýÔÀr·²Ûߢ×rÌ¢ýašÒ¼Íl™mPÛ …”÷—Áò†LASN\˜±|æ®ð'K(Y§Vì«ËÀ:æÏ*úS€¯ÿÏ_¼ 5Æ'ÓxÄXñù ñP|{Ènô7Çs£Y yÌ’ó,NBÕ®йŒ¥ÕaDLt qδô2>Ϋ—IªF Aʆ6e G¢–LÀêSÁötßç‚&‹ÏÎe½M<Þ ÎYŠß~[ ¨º£NOÐ{/Ûn®P=vÖKzÍ‹;3êâñb,EžOI@ep‚ ¡&ß]?öü]ïš(£UIÔØÏré2Ÿ-‹šçdDãùb†¶[dÓB‡Ò' T?úS}b¸G¢RÌÀä™Ô®²û¾‰Xë…ãâ©Ên{Ê-´|±ozO/"²͉°™u*¶rhÛÍ+´?»2`èÕ` EXl©B5ùÁûnY;¡§—šä<3 ò•;F¾‰û0¤kÔË]ªOý[L}!z¯JCÒáÚ™Bå¾ .jO‡¦oÚ]¡ðÍ~šbÍû³ñg½šU¶$c ¢Î¸”• ?ÛL= Ïòz¿ÜÔÛƒ°”'õø’5—Ñ#a’øš$ŽÔ6­K(¸X»וLW"Î?ªœ]ÌûêHG/gVLÇ0ì3õÎuM¨{:täV;Sì>[‹ác×Ô&yÆ×®*ÉîFðÔãJŸ3èÒ_oP7¦Ðbri# Ù=©ëú~M©-Túr§£ƒbzCB¡C©_ƒã¸úi9ؼU÷qh ¢¹vXß÷Ó¿phx1VàšžŨ¤±,kÃqt·2I‘‡§¢ÅÚ‘/1ÈZN¾*rLŠ!(~~òv¡.Œ5_^x•m„;Š¿UZqyÞÐ|îC€Ü”'‘]ëbpØç^ƒ¾ ‘Uܾ»Y‰]L/Ô&2ðW]Y‡Å(‘ƒPÊ ››+”Ø’,»a¶‹ÃÛ-é· ÀRâ%nq}‘Àq.‹“Ö‡%þÚ¡º-4;ªî+kÙ™7­øÞí¬M©Fôˆ…LI«pºÄpš×¹nßœÒwCŠÓØÄíÝ P"VùðÚÝ|8³½K ¾ÉíU”‹¶ÁBáj…C˜±åR·ð»§ÜxøU_ÎËÏbD~6_äº5ëŠhÂN§ÌJP·—sÞé^O?/6£Ágõn0ç›Ï½§·ÝV Aa‰¢lÁv¸oÇ7º;Ø&‡9‹Åõª éUu*6Âh…£O’Ø"2ŒåLŒêéó/ ­Eìë˜f´–àN¯û=Ú^$&ÛkèMy1݃Ùpœ[ŽleD³ceÅ[£v˜¿”­’Íþ’fËë‰ÄU"ÇAÙiõ33Õ¾Äùj ¤Ê \æ=Ž@‰B¬û§þ}î!pì½c*éM€Lbcv•eá‘íi :,EgaN˜rÚbs¯¨þZŸ¼ƒ]øªÝ³a [ÿA*+¯Iå B_yƒªS´,c)‘]2<ЀªâÁcj0ìT”ÒNym#ZþfkÞ¢9Þ:fö&½‚jÔϘ8‘794Ú³¨S‹~žÓ+ïàh–.¦ºÀ¹åÚf‹x¢Q¢5³¿_wL;z¨X#5õiéDÁO¹3!JëeGÕRÖÊΫRnåòƒ”ݪ˜tü<¶’J*">`ž}º­îXdËD-Xá–Ås°K•/àÓWÝ ÏïØKM)‰a3AÎKªØ5¶0;$‰È†–úLÊ €Øç1ákM ßË%¾ìÉ|²€÷kFÍuà’žÔS®qí7k:kœrøH“C Û”jNç!©óU‹faWBXãYöÏ_gòóšrªˆèÑ)Ðø~™¥gm™/?…{­YsåÇ}ryaëˆÌ¼Ùø‘ ©E¸&·ã¹Æô9`÷Y¤¦È'…/<å/›uö87K/ÝcÙ¯“^ê§G‡ÏTp×x•‰ÇZ`R¿ÍÖÉØöJÄÈZýuQeJã±ã^=Ñ“¦§‘b/;¬?Ò~yõ5†*ê°àÿ4Ú~ôk•·2~ƨà­K‰Eû¡ ÊVºH¯º/œáƒ óê»áM&)pA–)u®¨›_’À¢€ÍZ™€F^îãþ ©Æä¹Á£#ªv÷ŠYAÙˆ/®ŽûÝ v¯¸–SBu·$8Æ>óKpÀ>ùš ¿}`+Â/ÙI–üh=€"^{Ž·ù 02YFBìþU'B]/x‘(ýú'†ÛVΔÕsÝÂéç(M«%èˆAÁó´kyzIŽ‘x>@GtËiñ,ªxA¦^µàwEðB髯àî.Õ R»ÕŠÝpý<´@û– /±œÕÒ¡ù•ò;wÖ“÷ àâ VRTÄ Æt1±:ݧqör/©rF¤„h:òKQÊ]‘÷ê5&ŠñГ'x—µ+N;­Æ®›Î²,†¥#Z‘$Ñ& ._²K%]Ú⩉ѼȆá׿ïDròaù¹”k_ˆáUC(ýÅ=²…ÿMkgçDÌÖ³Cs/¡@8/…~½Elͦ8ì¾)œ˜ËӋ陎uÎTÑáû£<Þ9ٛ祸>ÃÁÀ°óÖcº$i)º¡þ•£–‹$ªò)OÜ13ÜEƪthóñ˜ÉRº¶º_ö~â‘NdÝ‚êpÈ5ä)cG ”É.Þ«Šíö¦·#7Elx9íŽymá¡-4âm;¢Ù±f’#¤<yÖ¸iA‰„´´eØUéÔ‰6Q"õãARpZ8[’÷ãß;¶66:Ö/VfN™e'QÌWýAWÚXk’Ä;M®‚¢¨ôL~Ë:(¶|2ÓÃk²gN¸Þѯ.õ¸¦~ ?¾ã…BZ[)£6­-y#U ø”Çúž.€^rq9–c—æF=Ãçrçªô©q ýºQvŸQ™â6-W|>dz:4•6ãs¯‡Ýùv-ö³²¼”’ˆ ¤wU (gˆhu¢=ÓéèšÏ B²üÚÂ¥´ZU:kZηB°v‘å Ò Æ…ŸË©épÛZVµ}°äÿ,M¶e¤¾éj¬àZLWoHPÍçK¿Dà´®(ï­Ò¬å©±wJ{ÞBÙs{*6=5;µ†à›X£Xÿ‰&ؼèA÷d.#ì‹Ûî;Ìަb¹]îú,OFüm£ Ëo(‹û…ßFÎ೑ëøfž‰JV…àìkÉ„x¬‹|E¦±}XÖ9 zý Ü”Fþ”o‡bk–oLNˆ¥ï©Ý€>Üzi×…ÿ`( ¹ dPa÷xíË1yzkð6ÄMRéϳ›ªœHãÛuÍu»žæ%²r6О?}çnøJF ¥%ê³õ¼ñwl«Øï§úãœëïØìêVk÷À¤ –5LbáÒM úÓõ®§Z˜‘DÀ3Õ×¥ã(RbõÍ«ªþOƒdÈcê-e……ûT’ÖvÎ}Û0ø´Ý­ÌõJ£--6Jzƒ¢Kö¿Fïaª7±¥ N]¾_’“zÓCh_˜Â§ÑÌbTѸCR¢ ÂÅa˜­¿Ï¸!p9x±Äÿt½3DCùtÙrVº+Vi¤Ž¼˜ìù@-¹ž V¯÷4.çàØWW‚ªéÉøSê³éheÍUö·%è¶IlKõ‡¡73ŽŸ²t¡è~θ“îü0Ac:íÙ¯åÍÞ·IãÑ›.WM`°†e/×÷㪠3ÝÝ&Ž*f;¹ö£î;¥—Ó::Bçåê¼O6š £IÜ·W¹SP);©Ü”P¡6>A`œó,|s…³Ã|)ªÑÀ‚«<Ñœ4<Ò­‹ÓrúRÂÑ£,@weN–n×"4cÒ®zäÍÚìÌÖ¥â`Ôf“”VYMÃ5DÓã"ã+´¾‰,§hÕÌEÛH3E…ºÖú{o µ£ýàBɲO†Ï[â³LúÏ:_b˜­@($’.`‡|Ñ!Ú¥}É+ 4N2Oû&PnYrÍ…@“ôç$ıµüÐ!‡‚˜–F¦Ïß7v©Ñ–I(Îm’Íï2?Úiý`ËÞôV€{`Ik59{7™a¥QÜó¾©àM"›‚Jö¬tšv§ô1“}¹Ô¬¿Gu jË[Å©=M戞WUš¿ ™ôËK¶Ê†'(¸ÜÝw«¬À+#ZC‡ôfÔ¥—TÝWrŠì]½à%‰UáÄíìÓ¡%F¸J~‘'ùs§Ì¡ž—ï/¡è-ÞF~¹ j/7ëNdg¦›õ»¹„ÅHv–zåGÂUH’uÊX,›‘Ìy½ÒÏú¢VÎHò³üŸ­¾Ï<‚Œ|Þò”6«sÒð°*uLk—-ÿÚt]NÍ 'Nè÷¥[ä@’â…ÙÝ1ã~a‡ÕC;Ìá­{Ô)¶mT]-Tð ø{nñ¤ÃÂAU‚)WèdTTöûQ,¯­1Ê>-j¬ñÆ'Z‚±…þEò¶cºq½ù µ'7ö²”Ìݺv‚w#¬|YM)]o„ rúØ%/Ì„j#³¯ÌÖJÝEHAŽ™›ý%2 5Bªàç‰-o$iô÷cýw‘©ÑUÌñµB%.cd‰ùÙ®–bé8,Ä©³‰^D/JŠ Ôœýì[Ÿ7&ºŸD–ã‡ÞÔI;¥¬ÿ@¹S)Ä/ŸÒØS4ÇÍzg¢=Yÿô“­ÕÉð²ÍyI;=Ç25À® 1Û>E¢¼–õb2j$7gbp›<Ø3ÿ–H¾ã9 rU7q4cQÃnÞK ½ …Òuì@·œSÒÉŽf`1¦ÃN÷7_ÍÔ]yøuŽ–%O Ãk 8>açM߸`ûú:T,×^ߌÙXž‰/—_\^‚§0´¥pé"ߤ— Ɔ—„&ýhðÉ܈‘hCÑrÐûð-=И‡*æÞYÆ}~+’ú†lÁæ8ÿuv§½6Ž¢~C‹@f;¹b”ú ·dä±Ó@s†—]¡ÉÀSð¾î{§Ï]øƒÕ[;ÝŽ1Η¼Fvß'X2÷&‚ÙÊî  Oå“ÑQ"?¦0™s‚§ó¡üðïø½Ô‘»Fnޱi7‘1lZúÜ _Q@.t¦ø²’C pìU¦–#Œçåišíûœ¤«7R0úr¥P ÀÙkm¼&¼#…qÒÄ×Ò”ŽJEDéï˜ÀQu:-0jÙRÔa5ÔýÃ//ùnl¬á×3îŽjµ0}‚Œ[SÖFðÌ$Î(•ÅI+¨ÙFC÷Ð@»-¯-^”ÀDÊ?–ÏÒ¦{ò'ædP8žÞ%«Píß#j)â;Ÿ8¤èUg¼§ŸKúiæ­N Qކž·ÕgÜPèm‚h9‰¹`!îR=øÔþ8`Õ{ÃLÝ$ƒréðr–"Î}z$r‚ö.\XÓ¸Äê…¼ø¾‹âØÇ©ž‹”HÜÅ_¾rË¿–™r;W§˜›YxF©þý0|4¹#¼•p(´»ƒ™|¦<ìúu‚]ðKÜCÖ7N¯Rn´%¿a¶S/‡àï¿•©/ª ̓¾Y‚±‹^¢Ë8oËÚ€‹wzª+åéve¥ç¢1VÓÌjT)×áØ¤:3/ ߈¦š(=9[íÑÊUÊÄF£V.\†”½]W%ïVéÕ‹ÑppÇi+™Ô»¡ .ƒŽdã Ùj:N‘ÙÐ}þ¦"k7œª1ÅЫ…ýá‘V㨳?Íåð!º‰:•e1ÀåЉxul;¹Ýҹⵋ³q+ÓÎDx/O*›N`ÊsÂbû`b"ßíö³&«£ŽáÅ~S÷*?Ê%^Ùl/!yúœ´,Òúè£ãJw5 wªF»Çá èÕ‚LDuÛ,é…\4æ¨@–>4ôG (χñì ëg„w%aŒ9·Fnð7Á_"¾]yÙ^õŸÐå)•O9kaÅr÷Äk¡5,‰˜Ô¨s8½’%ZHÀS¹º¶#÷m7ꥴÜc_©›Ë0f>¯Ÿñy5,±ùD%›eˆˆD/e²“ŠNmí‚4Gö¬;D.zÜTÖšoÓ®¾1ÒI¬ ŽÄ¸ò ŒS sª_n&é\MQÁbT¹ãÜ•¯ÑŸkHÙ÷œ.г¨7(BZܶ<„Þ¸qµ^äíîÎ¶Í ëúͲ¢ÜõúûÂoáL£î “ qÒY=a Áœßš×&£i¹Ó:,bJÌÏš' ä̉Þô‰NfÆŒ®P•\&¥¹Z8`"úQãEŒüÆÍiGÓãTåÚ*ÆâZ3áKk£,”~ȽúãÉÃѲ?iRïµÙ&îÛ%ßM«܌ŜÔé e%;z16 ÷Úž$ži© ²‹¼‹ÚYÇ4l‡§1.?)"¬BE' ¥´Ò?¾i‰ÇVu¹Ÿh´Åg_ZfJáЯŽ;Í^SOÂ2œ;[[¶\Û‰7¯ANˆÿnKU^T$åÎ¥‚õê+å‘ÖÆ†sàÛa£…‹–íTöEŒÝkè§/ɘX¾Ý‘2Í]P¯üB3Îm M¤iìÎ*ÁĶ_ûÜ;Ž·½­äTmä{_Cý„ÍHã}hÔmmåN¤i™€ñg DÛùÜw“üŽUä•a\qV%Û¦RÁß 1öˆ2>µYŸ‰Fz ¡Ó+ghÅOFf0 $ä.Øxçø}ûâÔäy\³íº¡!ô¡™¹þ¾üÚ?%{}%‡!âƒyP¨|ÞMÛ[ âV+l®–.+±YÑàÝåw^‡ÐµŽe£qÏ=aò×Ù3“~…x¡×v•Ú9ßÌxÞ/ßÈÕ¾ÇEGbJ”äe*÷ˆ[Ïc›+ßS&¼^yK¯ÙdPJßÜù—V3¬ÞÌ {fû£•ÐI~NK§Mõð6éêÅô@NUö)Ó[ëŠ'Éõ2bnÕŒNù*’AUS%K!;ÅŒ2èËZ+„„bŒ×îäu«[i×âG÷¯¦†%’“ÞD ‚ÄÔp‰GÒŸ©´Êœ´ÊúâéµÑßm§ª G†Ã$—Ë,¯ZBM”Û3½É‚‰+_NW¸›É#æª/fnG,Ôê3®¾ìöœ1â÷–: Ô„7WoÿÜÌ+—ç‘(Œô“1Í_mŠlÉlFÒˆ«°Ln` @^ „M$WV­­Ÿ#Î5¤þ^ÿñ§`ðp"áÈ„HÔÕ„\—ûÎ×`“aÇŒ®u>÷’ u¾eÈ„\áZšÕÐ'¡‚¹ÊÄrn©XÇ{é—%È_£0X5[PS[ÈÎtö{=Âè¿YSt¶jO¤Mé8Mº eãTº‰}<Še•ÎFO­³3Ø)ÃCWÙ¬È;]MŽ+!ã};$èuy‘,wÛ?¤sQ>…—ŠÎÆÍBŽoˆ6\—žÜ#T9"„¼+ExÛùQÈÜÃÆGI‰î.Ô™á“ê¡ùöºEÌÈL=<ÇG<Ö‚}ˆ jË×d±ê0@\ùöCL˜VÔ÷„²O'–ÿ¾`ä±®8¥/úÅTÝtE“Uo©¼ÅÇ£KM«è<¶Bjðñžù­éVìæ_ѾZ'x ùê´. ÞhLšS…_Ëz«ýéŠ",¡ø)A¤¶ÕgIm=`ßï¢ ÓG•‚«Wî¹Cû†C®2ã(ÈÓB„ëÞ³ÅÓøÅò6j—Ñ‘>¯FÂT0O#©ãò'´ìBJIþµõ~à z2+»juŠÜ·XcF-‡!‡ ;­gÆ*ËÉç––ûƒŽv­D‰ªÐÓ®;cú;)¤ír…QÕKä}fÍdE Ù~r¦çÈ+E3g²Aöo¬“Câz\R,5ª~|VÍÇ6¬Ÿ\¼«ËÖÂ1 ÜUEíJ1WAüT²EõŠ 3!-ÅŠ›R&4?[•×Óc׃IÌéÐáv,b#ô € • 1زÃÿ©"®Oû‹og§á C}ŸˆxUYvMñ=xZ}p-ûî‹×“fç…•¸¥žnØð0YËCªü>cBlG”b qªš‹–'½õvš;‚Ò‹ìKmÂÖß-øGwîö—b#÷'5‡9¦Ò_q]´E‚„Pb‡.ÑÜbç›R…Çža(³rö"’¿ r’䌼Îm2ÒQÇ‘6$ݧ/#>‹×†*Æ$±æå‹RtYÂÉܹ޷Çoó w–²”<£w—öè'…ÇgŒ¤­¼‚gÍe¯rëÚcýˆ¡C®Ì—±óÔ™bsZÀ>’õÃpDwÒ~C’ÁŒÀÏÎñ&ž(='Åãýóh†9c+Vþß …$à+•¶–­œbÔ‹4: ž#ÔÖÕqu(smSn«eæ}ÏÍÁÿ¹ ´ endstream endobj 101 0 obj << /Length1 1942 /Length2 10071 /Length3 0 /Length 11259 /Filter /FlateDecode >> stream xÚ·T”k6ŒH HwRÒC7HJ·t 0ÀPCwHw ÒÝ% ]Ò H#ÝHHJ7Â7žsÞ£ïûÿk}ßšµfžkçµ÷½÷ý¬¡¥RQg3ƒš€¥¡vÎ,ì¬@€„¢º:;r²¨´´gð䨴š`G'ÔNà G0È&“9à ¡v9;'€G€Wpüÿ1„: $A®3€"+@jvB¥•€Ú{8B,,ayþóxiÊ`çççeþË f v„˜‚ìŠ gK°-,£)È 5…€=þ+ÄK!Kgg{66777V­+ÔÑB„àq¶¨ÀŽ®`3À¯’J [ð?¥±¢Ò4,!N+Ô¡æÎn G0&°˜‚íœ`..vf`G,;@]V l¶ûÛXáofÀ?Ͱ³²ÿîï_ v9ƒLM¡¶ö ;ˆÀb(K+°:»;3@vf¿ A6NP˜?ȱ™À þ¢H‹©@° ÿ©ÏÉÔbïìÄê±ùU#Û¯0°6KÙ™I@mmÁvÎN¨¿øIBÁ¦°¾{°ýs¸ÖvP7;¯ÿ sˆ™ù¯2Ì\ìÙÞØA\À²’ÿØÀD¨¿e`g7ärÀ°»©%Û¯öà¿”ì¿Ä°|¼ì¡ösX`ˆ9öƒêårœ]À>^*þ¡²³Ì ¦Î°Äõwt˜lþ7†¿#Ä „;øëóï“lÂÌ v6¿Íÿ:b6mqe%¦JþW).ux±ð°X8¸~~~/7?Àç¿Ã¨€ ÿÐøÃUÖÎ àÿ›-¬Mÿaìúϼüg?ÿK \0àåï9×rMa_ìÿÏÓþ—ËÿßÿŠòóÿe$íbcó—þåßÿ=Èbãñlp]œaK …­‚ÝÿšjÿÞ\E°ÄÅöµ²Î Ø2ˆÙYØüÛHˆ“4Äl¦q6µü{^þ–¿ùµi6;° Ô òën°°ÿ£ƒ­—©5ìþp‚ å_*0l{þ;¥”)Ôìךqpó@ŽŽ T l–8¸¹^ì°}4»ÿ5Æ6V;¨3Ì+Ï`uDýu¦<Ü6±_¢¿/€Mâ7â°Iý‹xÙl¯#›ÂoóSüølJÿ"> l6#›ÚoÄ `Sÿ¸l¿,ƒæ¿ˆ–ô/â‚E9ÁN âdýÛ–Öä7‚‘7ýí »’l‡øÕl6³? ¬<ð–Áü#jñ„…³üšùˆØüaLlCØr²Ùýay¡@X^ûß´a¶ö°;ÚÎlîü[Êþôïíúí #éð„‘tüÂH:ý aW›Øb µþÉÖô?#ºîòrÀè¸ÿa<<þ‚ÿ5’¦.Ž0nÎ]°yýþë5»ƒMQçg ¦‚AV5Am×Õb¤n,[#H«ëíáq:}aÜÎt³9^– Èi¯'ÄÍ> %«Ì•†LÌx“2þ¸u×ïÊð_I’Év†“êÛ?fɼ9ë²S˜AI,Æx“Ã7°âUÉ1õôè´fîƒy»9¿Wnülwú®Ë¿°]bQ%‘:G‹eµïÃGêPѬ;ÑÑÇŠÁqÔKqÑ}3ö>s%ÞE|㱡“úeyy £¿/™ó4O¾§ŠçC.1ž§UÖлÏÄøñrNptâÜ—¥ œGS=p9C_&Ð}LT{ÎU3“]Ÿ†?En6Õ~J²¯ÙøƒR¡) …„O*Íà&lÂú€ ìjE(éŸo‰©IÂäꙣ oW/(1ÁñŽˆšºêçXA”Ö…ÏÇš/}A`Üâ~Q‰Ap‡éõ mPê:~-w%Ù{}˜ÎË‹× w³£áËÖw$‰‚$‰ÛÎ| 𢠀ä‹ÊÀùÏXæZßévøµ>K…JðvâÒŸpß«>qBkƒžihG@\WæÈdý—!Eœ<)ä5ïÑÉ%Év:ø~ì•æºóOùIåž;?õÚGuñF¶ goY1m¸öŒà¾ I0̸•|ÅnâNP]?¸ŸÿÊhãUŠç3‹`‚•€yƒ•3D 3ú„É“¥6µÊ¥i€µO 6¿¾«[½L »%Õ5´—ëº0¾V\ïg¡‹\Êô#ùeÅs)$Ëpõ¡Uõ ?Høi¾¥oZìå†7úçY@γí¬]ߨ™²´YX¡Væ­ºwq™âìj¾ Cô±ÿ!–È@kÌä?dwÃÔFiún³ožø©ÕtIj_áPa-Ј´ÅôÜno™|L®/¡ðyÀJyþ±—a{ÄÒÙ1€)³Í!w™¥Y ‚±]-Ôü1yhwÆjL:X,…éÆ~XsŽñ¨¶Ëø“z°ˆ·¤éÁÞ¾ëóøˆ ¦v·oó ;.µø}fzT>kþªvŠ'7 q.üm‚pEõp­eaVr%u;Ö‡eŒ…fþ\êÖ6õN“Y>~\ÏŠ:oŸ‘ÚœE?º~Y”¦ÛÕ\Òá#·JÅì÷t½hËßúuû-Ó:&-!h$ù?Ц &Ûs¨ŠiÉ9ð^òàÕYe›/ˆJf 3VóxÆvƒÎmÓ~‰ &T†¤l‘(XÉî_˜èÆ26,IP-ž"M¥;Ä9WR"!„¨ÔÏz­£™Â|žŸÃ ¤!k\BU=›ø™ïõ4£0”ÏB[ÏÑY˜t‹ü•·Ó +Y>ýò˜äýf[ö¥I=±V–¢¦úê‰ë™á-‘–%Æ›c‰!–ð•ŠCeѮʣ¶*|g5${ɇèݼ¡‰½ýž”9{"òÚ^Ï«§7gæ÷ûòÜ Š]¶Ê ß wýl+ée(¨µõ¯úw]ïtIt¦³ª#>bòcƒE𠑉oKÁÖå3B,<Ÿè¦ÈåE£þì Ì#Ožméž¹a£¹¿Ÿ.Ý œP*<Ä•£û©µÇŠó« fõ’xÚú§­üçÄ]Ëòê …áõöEè$l—||ÊÊïD‹ê÷õß„a¤j6úG²¹†yã”—,ú[­’P…ÌŠÞñïô;ªJ•u¾=§*YØ“R»/ßÄDülO¼R¾ g-7¸gJˆ5é{ô^#ï=Áè(AY­X¢Q1^:+•Cb™µ‡Êý³N‹Â¡ÛvRzTcpKÕd–Û¡u‘ì•„Žh¬aý6„¤7B[,‘qÙ)‹ØÚ”Ÿ,¾xÁ?1[0GÞ"!åœßâÇ#w%Šˆhïפ€QgC‹‹¼ÏE7ì8„¸_6îå?3pc•kÈ9wz–ôŠÜI³DÒ0 1ÿ” dÄ»<ƒ¤¡Qí› â,Ö¦¤6Ø,vò‹¨¥d™uTM—׉ÉY§Í2ÿ,ðÕ£^‡ãÄ»^³;¼Å»¾ÈŒè[F•{P"éyäkp~ã2rFècSðM#ž¼³šª^öH?Fêrßuk3ð32é"p‰Jœ>AôT& 4[ö+sîŒÈË“+BzøÞÔ:£Šï>‡$õ‚¼rÒ¨y‚AWNÜ …„?—L\Lùæ¶(2•T ebv,KýÛÞÕ€3¬ƒÓ™w+¦ 9lÔ=¾‚sX{“ºv‹OÑzO2¦¶uÔF†% ¸ —3ÍÚeø~Íæ¡:»V£R|Q«úÄyñ¼½¡+˜¤å’t3h`jD^á/pÍŠøÃ>>øÕ”ÆxNò|¬­Ú§[׈\Þ¬ð*ƒ.Éœ‹Ðê˜Û†µß«¾Ï“]È4ΰj $(PÉ®õÄ>+õ[®†Çk*ع~{¿óC²zI¹H³”-¤Î”´ ÞsÖk€S€\ÈùŠlôÕú7]ãÏÍ:V]œß.27ÜK€ò2kýâNœú}Ò'¤°Žº[KM½”ËÒ¯ž¼”Õ„¼¸¶L˜Éœì2dâU:w^^'Cô¿   sÂ×9'Bï/ñ–ó+Á¨k´”øô¯^ãÍY23PCô缕±eË*Rç2BZfÇÔá“ wÄ‹!ê˜¶ÏæY‡:k¯Œ²ï-éô{®hV-´R+2á6r¸Ç4Ò‰¦ª'xZSkäášû›¹ C1¨G’ñP­Rù7XÊ·NøŸ~Hâ8½ú:àÆ©Š]6ó¼ôº(3FòDý¸ö9ÉpqvOš‰…)QA¯üd§Ö˜4˜Œ´”känÞùûžÖЭϊ¾z¯G\`†‰’&Ä€:] dpFU]ñدJÔ!¦ëoÙV EB .ñUnJú±ŸÀ yÆ÷ÐZÂÜÈýÄ—1$¼Û<À»¨9îáyä¿ëº©Ý›#š×í~wõóߤ÷k3“Õõ†¢â{¶-16ÙDÑ{볕­4ß1f®'ؾe¾ÀE×¥àѧó—~ YgëÅŸN%‰N‚&w×êófÀ蟨™‡ü´õ,?7þ`[a§_pÝA3õÂîIýwÍ‘ÒäöøYIœÄ¹‘`¯nv_2Þ­u­çš"W©ñ‘Óãœ(ëëÑ' †Î— B3_^ :Ø{MÖâQ”Õ~ŠFÒo•í‚$ÊM~NT4Iñvþ®¨¢ýâgÃ\wÏèiÐø%€*Óø›ºA„æûωRÛQ(œšÜqD°é¹0&eäà}7å ‡UàTœ„ÁkOaôi;x3>¹÷ð"ÃÚ¡–¤¥ZV‚8ù“A±ð¢E9h?¨ž¨-ïî%ù'Æç˜€l:ZžRÊñYÉŽÓ°"6ùO¾x=5箇1ÏJ%*a“)Ÿ$®ßÆ-HÃ;¯;wæ@ÔªÍÁЪôÁ3\ÄBÁz~oy˜kÍ쌇 õ#¾þ›&YA$@·ußn^´ñ•®e!9„ó'ñ÷Vž5^[¥^Óc20AšÞòé<Ú‰–1©Ø§„z7dȦ-s¥í|Ád׋¯t’T0(¢JxàÜìèþF¾x<¡§±T/bDad>ôÉ‚DVÊÚT~Åq>æž+Ž%¡‰NõŽ$qê9kÃ-Èé›Û”;·hpæ}Ô 5б/&;û(ÝbiØáKëãÐ^š‹×; ¢ GðW·]ò†ì#z¤w/»]‡I¡O}Q_•ܰwjÊ_œcNb›^³šÝfyºÙã´"‚öîöÐVàN%Ž…’ âù·ÑU|vPBä<54s]fõMe'žØ3bØöEùº³Jáöä\(ŽÞeº©Š1n¢È™†¶ 3$Ž%©¢Œed¬\'·òOŠ&äc¶{‰ò¢Ñra¥ß¾ØøXˆ­±W¼ùºµ\à‡U"œÝÜC[‚Dg ±Âœ_ˆ$¥¶.’å¢x%S°¯‚ÕžêcÎGZüÑy˜þ´0Ó5°mPVÙs¾ßY'‹d6AfÕ ç  åzASl«K’¼ÿGÁ ÕÙŠH;oë›9Zë÷³õExçº6F^/‰´ªO!¹ZÃè¢ëMdº:[)ƒR"â’Ó¢ƒûüé+ µÉF18¸Ï×mB^òkFŠPF*äFÛŠþÐH§”«ÞÿŒÉ8P"–ô걫”ÀR'Î k‰ÔʼnU³µÄy˜^‡}é%“2-3vx#Þ*I…¨¦sõÑ_2r `v,×r=‚Þü*ÍÏBVeR|Xbâk \Oý¬|‹/ÔÒ{³ÝSÑq£ï÷…æ¬æ ÂJUÎæ¯ªØž¼d –ßßN°§îÆë8s² ?q“µÅa±‡¯sâî")N Žê°t ¥W]#Ѭ’'>WQÜVå¦ô7Ca©špsí ºÝ Fç&Y{£e!xÔ1vzǼ¨·ÂÚ=Ý*²Ÿ\‘a‘)Ëü>Jº‘QÓŸcü@)h¥ ·:½%±Ië.t)+0‡çú€¢˜”Xèì³þðª[íÚü-8SÎE¹ÝìùNïþ ·SKëS› )xÆJæùçÝa(@ÕÈgÂü¾Ù핬'¹¯»wâ1†.¹há)H ŒCÎÛnF­-Ä*iºÛho¢Ä,}KŸ.PR†BQÈs<¥õõ(÷Ÿ‚YÓϲñÓiµ)­j¢"дi_j|´ç>'b¨dÿì&ifãËw;ÿ²7õÜIÌ hÙÛhz!$B»?aEº‘Þ°ÄîWÚÅ1™N5ÛYÅ~,¹ìÉõã=Œõ·_Æ‹¨»'“X“ß’˜óúª•Òº…¬.„¯.´sú†J-ààñÆs=ÏÏQ›H¸õæš.…F˜â\ßa¹]ûîÊ8¢Ée† Üö®á+Ï pldée8úúpúM:¼Þ èÿjBBJ'a¥$å0„kÉß+ŘÖÀ`[÷2üʉ™ªþÆbÕB•¤4êé‰Ù;W¹÷ÛÛswLÏÍ ?:TQ²í§G³’5ñÄ’BynáŽv=õÜ&÷Úà ’‰_Ä4KúuNJV$¸Gl!¿IX}¶T^=M¦&Oók/lˆ…Ó>žïÔ*Ñ–äµ¾¨ÿÀù„þìÙ6‹*ÃôÝâÚê\);¨dñ}‹ˆ¤c {ü6Ž­\¨"õðc@ÔËÛ É>–öqB`ÅÁ~­úå÷iäÂGŠiz9AyT‚4ŽÌ³<ØÓU ³Ññ! ýÍñÍ7v×øè=dý6$-jÑë~è@hðPJÄ™Y>e61ÇAŒ*âCÔ&×øVýVê¤q2¥PÅrÙŽÂÓöªP÷¯1 pêõû£·‚šâ@’o¶±ŽÏß2·ßÃw6?RŠsV; cJÁ_¥÷Ä^>åriÉcɮĔ,gÝ+h2Ÿx´\̪ŒsÒ!þte<[ê>;*«"‡‹!œ¢´úáÔC=ØBû!ƒ<ö=®Ë¨?m#Ý Šé¶ü]Ì …Ëö4JïhßóÓøê²ãˆòx%ÃM -qê7©Q-΋ˆP…@£r P©^v }õNï…¸¸­¬ÐyÓ±.ÂzWÝíHm÷iß¹‹|Òþ kóØz#fD”3~-?@ÅGÞÞàÕˆ’ä2R-¦ijx èRlç(ÜŒ¥ÈÒ>\¼ÊÏíYÜsÔ˜„¾u[_5¨ÜVÖê ›S_—?àéîtH¯é0k*A»wÒuåTw|y>:'L×NC“Ú­j–ápWÑNAR3—ócÚR]Ï G§:GK¤aÎ52H¡öBfP]o¢!lF½”çç‚atÞ‰ñž„Ï u­ »Eôp R–5gõ¼À3>º[:²ëü¼7‡ |GËû wRÜ9aj*âÙˆÛ_Ïaÿ° ÒtÉæ-lÜ={Ä¢jæMÖIêK÷¤Î3G¡"-?³&È6è a¦Yë-ãØ*½J¼gäbM_•‘bßÏùñ3H³{'È{„ý…ŽæÌ"lÞT»¯©ÒK™=PW$Ñ%bDfǰˆ¾½LJ>NùØù¢¶ÊUzMDw¹4Œ8fãò6Ѱ/–pšþ-Å„:®¨ò®þ¢ZƒSa;û– 6Évµ3‚JÖZŇ6‰åíój§Ž‰&]ÅñbA *•?†„™‡¨W… Ï溾µRm4}¯è¢:‹ùùÂŒ_ûðüXà çOEZ¡›kñ”P–Žoý·h#!ºAú&Ž[×ëëû"—¶vw,„bo‰È#HÈÙ”Â;•äJ³7+‰¦{äݽQ,¶… ,Ô‡ƒ>r¥¥¼bó‹Íõ³ÔO/ïöÍÝt›Î«³¼ÇþàÓéÛ=\q×gD¶ܪþ`PÅK¦Û55·sk8$K‡ñz‘€ÿk7ÌÚº‰ë,bÆ„šÂ¹KaÁÚMó»v¯³,”8@xÎá©Åĉb¿Bü˜D^œEûë¼]­6->ß|.²ð%5JN-Sxy4ÕælØæB/{•ø(µ¨çe×}°á{v _ô8$RÏQ>^ÛêšOÎB£bÔ-þºofb.?W:}ÉYÎç©›ë•üô°a ^á*îÔ} ‰~­oô¿Z¿yóËA® |Ü\õ]ъϲ„`0„%.޳G/Í5.Ò¡>7Œ)m´—ÅóxËÌçò9|¬HeÏÕ '/ÒP,D‰"çìD" §í½—4¨(r₎YxNÌ+‡úásÞ½ã²ö˜Ô#JëÞ~ÂQC}í÷]+$ItÖg G ¸:ÇO‹Ji0ÙClñ64ÓØÀ;ºK‚ÏYE¿çäËo!ò´5ÕãØÿ(›ÔoDg)äTûˆ§ DÒ]Æ™ŽO ӌޤrëªË^¦#Ä®шÏþFƸ¹xGŸî›ì&gí·”©(À’øv#¥¤r¢¹trõˆ8ÌŒÆöY…Ôözã¾ÏIíÕÎ1ùèùQGßæ¥ë‡­Pú£‚r¾ ÍË|?”HňÑ/dG¤¨„´m‰Õ’Ýo¶áÓÎ^7/ÑÙÇ%+`ÏfôÇ~,\ñ½–õcâ¼hãêý‚\bMÕ<ÄaèxÀèû踻á°cþX²Œv8Ÿ±ÇîôÔÀ &f|3QáØ”!MXÅüŽOàsŸy'JuMC~¡PÀ’·X²kŽCJ#~?÷ªòYÿ“å§q5TG£y‡’¥8 ˜«×î ‚v ^*ŒÛp &_ͰYPQÞÓŽŽ¨ôD£+Å!ßs:”•عÍÐG¹ZaøŸ‹Œ `›ó‡Â­’¤LGß>ÿP\p!Ïú4Œ£Tª®È@šæƒ?ú¸&#à0JïÖLQÎd%¦ÒG*§ü½Ìªž B–žî}â#{.évÆ#ËöÂO!3Íšñ„·¥îßI±€3a?d_Ypú";ºNf)D~ëD•jhfË™[í¸®cìH л'O¿™ /¢¢aÑI}”²o/¡SoqµÁ¹Æ%zê§ZWä±ìÃïæ™v»]<FþˆÌW§é+ÕºSeM)쌀&~ì×· —G¾&PWLi\©I&ßL€c;ùVçïâK8*ËémèO)æÉ2·«wßwÐ#7H彦YÚ4Í§Šˆ\æË~A‚XäÙÅ£è³áñ n¿EÞ8«h‹½rÝöÖ—Nt+þsgÉs#uâWÁ4¨ºYøcÃ=“mû‹™Œ ÔXmM™jG©ˆBŸ)jÔâDÔ Šó“%Ý£±ãV…²”ÿëïS×\vè–(¶~z^3tdú)ñŠöÈæÕæ?|°÷ Ìîh¬HÛ‹% âaˆžÈß@.‡f¤Uzâ¯_+Ϩ³Ÿ‚o‡T ³ "L‘³Ågpk(Íè^!ç£V?oY£lÝ8ÓZ£ã.9DÁIÃl¯GggT²¤’Ñ0‰èOt‹Ùқ˰&ˆ–71ç*޵p0EvT‘á&¸¶,%ªjFÖßõkêÏTr|Ò»¼Ò” 6ÂP« \A)hijϸLir¾t³Î&LÍÅöš(ß’)ÖDáž-\hÚ6"<›ÄýJ=ø\’ä›ÖæHá¶Ü:ÉOñɼ+—ârÚ¼veÿÕº`mò°\@ˆ´A"¾—ÏS.Y¿×'‘§ÜgÎ}ûH1%OZ±iQظ<ê+÷ú„"¨6hoT®ty×J=ƒS+ýZlmm>elëd¤Hu]ª(½Ë¥®Æàsp‡Ón«…3‹ünYÁ{kq¨…Z8«rå¡»cñK­¶ ø‚'t»é¥OWñËé±é×ï÷TÚToÆQ–êã¿´ñvÔ_™-ª%)¨·{fá½àOB™ÍÀ m ­{­¬þªØ½ÒAÜexxM·„{‚›1ývöƒyžˆÅujðìxÊ|ˆ2½Lús¼WèLE¦þBdÚìê†sp|:=°†¸ŠÌZJß¶ùÀ¥`( íüV‡úE§<ô?8¦½§¤X{¥v4Iú D•Æ@ïJá¸@³Ùµóéà󫬤ïÞŸ;Ù„ÜùqxIØ‚÷BÜß/²Á»YŠû¡yp˜ú Ä-¡>’õÂ1M=ñ·2Lx8šŸjH6z*éOgû}ï°ÿî§òžzîG)Ô Ÿ;Kõ·S%·ECǼ1sÑ·57,!Äã·L劈vîgIÊýØÜý<䔫uJNŽä;[2NyìutW1Ðé~“‚eº>Ísx=d)¡˜´z*$ÜDÿ…«q²i4©Ä…ÿ½1cìÇ%$Óé|º<<ÙšS5ÜÈÊÖí¥rÆ!·らÜz®>¢FÙeÞ+îPmå’hþÉ]­ûd^ ÜX*–Œo†|y_ʆQF‘ ¸Â5 ô‚.‹úök?C›êËS¸€e}¢¯º“kìKœ_Ð\ÚÛïÄ Œ¸Ê{¦lÌ»íS†o €VscNš<‰‘à•£l×ì;«uX¾Y:> ,tRŸb&V[ãK;2Q޹“® }fº&¿È#z9«ÕºhmÑH£/†ªX5A­O^5ÄÓì<ÑqHh5]!ûlŒÌM®Ü…r½y#.Uº`õq …@#¤¿‰5'ïÂÚÀúëµ–»Q]S·&HIÓËô©ä•rr êÃÉ™qÀÒþ ¯6îKY­,Á®6M¥Ÿç­Pǰ+”³¢íJ¯÷Ã,—…ðNùè¼M“Çàñ÷:±ª5hþŠFk¡™·^pؘTÇS*œË?Ç68T0Ud vSãú(h˜˜¿)Ülò èakÇWç7iÜÝôM‚ ½rg$+ætжä÷κm;ŒÒè«&o#Ì_±6œª§Ø1 pf Éß"ÁS¥*ç™9 ’?¯hõpÝÌÒÝûzÓÆ~ýÙT‰”ÞD‡Ü>p.²ÛÉÜpúæþ¢¾½Y°§»Ý‹g¾þ­MDí3Q«.™&‰FEz5W¼Ãép f¹ü’7Ëškþ×¢Üv˜ ,>·"!¿ò”’ÌêÙt9ø”NrÎ}7R——Qdè$ã± 2MnWúSu½+ —…TQßP½¹âLõ_>yñêH¹gtH˜, K%!ø¸1ìiÑYgá‰úÏëÆNƤƒ‰#…΋†ûñ;øo/Ü›k¶?û÷P†+$&¡ëX¼ÍèºfóÑð°6·¯ÔÎRxz=2)k˜îéÞ»F0Mœ$?˜¶d×ầ‰“ܤÑ86ð¼AÌÏÎïÕ‚ÇЗì«"šp—ùû7’¶-ŽhQÿOÔÍ'1ßcAÏIFê© pAW{bóFy1TE¬ÎÓH˜ÙØWû›E¡ÒûƒÚ(Ö %É1Ô`å–I\"7,î¶;~ýÆ9'kýÈÜ©·“iü=ÇÇÐȺFtþ8ªÜ Iþ•¼‘½‰ö—Œef8cèÇÕÆÔkëàó½|F¶MtL˜ñµ³PbøW·ÏÍ®Ÿ˜~žo15¼ã¹Ñÿ˜Æ:ÏsÆÿÆì‹²·žð‚×rN¬®}‚îga„Ô;¼>žH3œÈãÊnáâ5¹aJª1Wej¦X*c!%K¢Ýh'qŠ}XÿÏééê÷N‰$oŸ¬ß‡U,*Ègô=Μr²/¶"¢ü)èNvºSÒ–šÄ÷âñá?­Ôˆ3¢Œóv>{!¬²“wôO‡¾ ý$uùðdÈf´šÅ|)û¬Ž¶ÁIÂR¹ËËHa|µÒRà³ÛLž©”-tDi)qò ¸>L—ûxp§Nû¡çaí½Ò 4OÍÞ#6ÖYüÙ© ¥¬}YA(Ä¡Tžô!ñÝá#o‹Á5w$ÄÚE†ä"±ZQÉ>yˆÜîcîõ$Ü«wé‘ډ~y êÔ¶Áy"ÇÄxQ®Ç³i޵›S°u¯µJÁ¬¢Ï –(é»^Òg£/·$Ãeß®à@ eÆÅO·­Êb^Ý¥ÌûaKêj½…PócvQm°÷ ZÕf¼ÒN͈°ê –n•¾ÐtìX›YB%é×è?_ÚL4âTÅíò‹n‰– è´#JZ¿Ùðž­úéâ•…(Æ ðŒ‚“—Q±Mô,¤v¾©†fχ÷°ÊÌÜêrà„"a÷è©ò™£’,Þ]V² €Ôèõ´¥‚&Ek|+â K9ÙŠ_ƒi·é4PbcÁsªÝÁ÷ð5ðø1ZƒGÓÇ*Ÿå¼Etùð¨#­]Yûíè»è‚Úði*ó÷‰÷éCXš ` =¢±«L¬÷ç·ûj.…]u]ϱ2if†ñkó¬o¤ïi~F xl÷bÈ! °º²÷<‰Ãâ ™Oz]fŠ£û$ ÒÝÔÄ`æu³w}á¹'°=À $ºÙ¬ ûä£}š`"Ù]=cÿ¬`ßäAö¶Nîg­ûËÛòÛ”\Uà–¿sYUò¹!†N˜0ÇQ"ÂÓ"+óÇm2å±ñ¥cÒª¡àÊ,©gQþ„”—òva¥ü©ó6žÂ¬2SÇLAM C€¶íd61~¡–+¹€^·çª‡Nª‡µ®;Ê('ï±×ž.F]ùÑàAÎÌí ÞØv£KZJ.¾•ìtþÂz Ó„´£|¯yæ† 4§ÜÅü6£å×<¾ÊŽm¡R—ŽUo¼ÙZ8V•ÈGâGˆh?<Ü´Ïû”»®¶³Üpe=zžÐÀá;wí*Çõë¨+è_ˆ¦®«Ò!»LH.³0›••Ù/Š:IÛÑÂ5PHí§[; w”¿§zxκ›1|½ à`Âç¬v\Ø‹ÿ3òÙ÷Ï¥tü.Í)òÝ»žß³²óíôÕ«ÏV¦]Y¯ÐŸögŸ9&\Øc]qñë)ö´ó(ˆ$‚ yjRœ~Ù«·­Ú¡üÆè¯Vд±’RGr¸™ âÆi1xçãÝ–™e^‚Ö¥\GùüHüŒo.7{‘öS¶rsfCnŒIÌû¼bfí OOïñ¿)m~’M¢Ä¾´¤=ÍA—%oUÇêNSf•ש]ÇI¿Žæº<ªŽ L¢ðçm¥{´ª t;)_ó“'RÔû í,ñ¸JQ–ŸÙ÷Œ»*J»÷¶&Ý7T^k]@X$uY1úSU‘rwƒ©µþí¬&ê‘GK“ºŠˆé}³ÎcÇ}ð ë}]‹{‡*FÒaédp6™º¹úw,R‚+ά»ùyYL‚a8ÜÙvή±)¯ œ…æw_¨¨FÎÛ½»´“ÎLΜééh¼PTkž/{MР œO_Wâû¸_¢¿Ä¹ÄèË:óù1‰³™õIùþäð“ã8pU.1WÁ¥ÛZ~4‹cmëõ„‰k]RžÖ“Ñ„ ¢çUWŽš±Ò@‘m2f­CÍ&þÛŒO…Tâÿ$j=Z endstream endobj 103 0 obj << /Length1 1588 /Length2 7897 /Length3 0 /Length 8929 /Filter /FlateDecode >> stream xÚteXj6(%Ò)½tÃ.ÝÝÝH³ÀKì²´€´t7Ò‚( %  ’’Ò ÒÒùá9ç=ç=ï÷ýø®½®Ý½gî™yfž{fz}nY;¸ D Crƒx€byM}}¹§ äçù°™™  HÈ?lf# ‡‰ýG#ïm `ä=U¨yº@üHX ð¢ÿ!Âb°Ô ÉPƒÃ ØÌòp7_ÔÁy_é?l¶ì¨¨0×áYWj †4ÁHGˆë}E[° @n … }ÿ•‚M‰tãåõööæ»zðÀRì\o(Ò ñ€ ¼ v€ßm´À®¿›ãÁf8B=þtéÃí‘Þ`popÚB`÷Až0;p_ ¯ªÐvƒÀþ$küIàü5ˆôwº¿¢'‚ÂþÛÚÂ]ÝÀ0_(Ì`u´•4x>H.f÷›vñ€ßǃ½ÀP°Í=áÃJ²ºð}uèa‹€º!=x< .¿»äýæ~Њ0;y¸«+†ôÀþ}>(b{?y_Þ¿¯Ø÷†ùÿƒí¡0;ûß­Øyºñ îžU…¿X÷&ìl$@Š…wÄÇÖ‘÷w_7ÈNÐoó}þnp7€ý}+¨=äþÛßì žÿÿvüaƒ@;¨-`q€Â°ÿÉ~o†Øÿ‰ïU€€úÌ€÷"€¿?ÿ³¸×™æâûý‹æÕÐQÑTQàü»é¿Ýrrp€?·0ÀÍ'€€¢¢a àß™tÀпNò_±ª0{8@ôÏßOê?‡öúK l- ;àß¹´à÷ †Øþ¼9Ph{ÿúÿ–ý!ÿ/µÿÎòÿ!øÿ=“’§‹Ë ¶ÿPþ/Øêâûç^ÞÈû}Єßoì©Æ?×Xîb÷¿>U$ø~+da.ê¡õØé@‘¶ŽŠæO»áï•s :pèïgÀ ÿÇw¿g¶Î÷O‰Ç½2ÿpAî×èß%a¶p»ßûÆ'(#`_ìû‹¾G‚ÐýbÚA|þÐ2€—GÞ‡î› ØÃØ¿oUHÀ+ûÛô'ðÊÿƒD¼Š#a¡{¡ýƒî™š#~¯þ?èžiô7½g‚ÿF à}AèÁû®ÿÀ{ñòÂþ†÷Èíþ­‚¹@ì‘ÿXAYÿ”×?±÷eÿ„ÿš­'âž‹üCÇ÷ãûþãy‚@| ¶Ø3Sp[ñ0§Ú°–ójY*oîµ! ôýÌó§|ÜC%–XÈnÅ1«¥dý—¹³êo”fº@J–NŸµäÜÏóæ¿ýò_­£«÷8å¦SÚt ³Iœº;EHñ?£f˜ÂoB)4N—£+Ct£èÐÄ´=’¶sèÖgÆÆZÛ9âÍBòZIX-¼E«µ­úu®µ¨Ñî²òƒM¯ÁšàñÖüeׄЕXó¨ ­lu‰Ö ìdïw‹=ý½s„]4í1Áj^!kLHBEñ^jÌwFsEx×ùe^;ÙDþ6ÊÄ2;vÝog|?æŠùh æèÕµa%qûw*uL_iÁÓßd9òãÐu\êø޵/F¹¼âß»ÑöxX/®ôU´e`ëGáí þ2W$@†Î ùtÓé3Mйf*ÔgiMWD™öFá}-ù¤$kLÈCU˜ÂµIîsm¶³,í·¤ª]ÚL–9W»v²_b-”âšF‹ @SÖË‚5Uý©¿?PvvásLoû,²T)Bõ\õG¼VÌP#hÖËToŠm/ªÆ»$7Ûp+$ðøX¦ÐlI°Ýß.fåK0§`¼fäMu%Ù›?ÔŽGxÒ"¼¥ˆÁµ†všÄ~¡zë‹QÝ\¥M’¤y:Ü}ô™}ÌÕ3ßÈpaæ®3e½ÐlD Š¿@à±}'[<¬œ.¾ë b—²ƒÏ4õ$»ïõ•2·Ö¥µÃ3;Ï@â‹è÷0M¨8µ"š%½rû‡ìçN%qgïFJóÆH*ÞTfžÙ„Æ6}u¿©–>À™ŸŽ:¯€Ý`Î}é‘¢;«|©Hí6V)µî©\ ºyת¤YLÛŽa&ÚK*’X÷._Úæ\êEV¸E¤Ò4<ÄÒòÊ"é²üÁU¥­•n°)93ÎÀ+§ ·ÑI¬ \þ|ì¨êØr•¡?é2 ·ÌìF‘/ –ÍðEÒáÜ*àã·E«µ8©b™$>Ù@h,NbFÔÅ9æóy‡ûû˜çY•!*ÌYJS&Kð+ÕdvfáüŸÑ«tOƒš°8*Þ~æ˜/" ¼S÷Ú©ý™zh>Zè±,9R•µ5À·.5þú%s€p‘-ØõçBºö‘üwn#Ún^*“§– Áƒ¯¸/o½o8ã]Ž’k{s$‘¼6xMc&Ò²Uîݱ/1nßlUi½ò2Ã.4ÖNÏ#á‡S¥=œ:g‰}ï]E¯ŠnÀ5È—Ç¿0à òY »´ML˜­+]M–~U¥©(ʳ“Ṹªyiׯ9‹ò(1MÎÛÔÉ¥+Þ»ÙÑà0ЦØo>IFñýˆ¬^BÐöCÒ¾ãÖçè÷cgÉ´€,¸ ±&±|â=¬s6½W”öáiÇ{q?º1ïA"jJ»I`&=·Dùúä˜\À•Ø?«bñºS܃ps#ÝX‹ïÇ|‡3qÙ ð›­X 2øj¶Â ¹}¦_aÑåG`>1>/•´©1Âàd¡…HÙÎð¬ŒðÐÑ´@Œ½Ý©z" †'X¡¦ë1/H¨¾n7ü¨Ìy^ƒNß%":M’ Ô S0nºSI+“£›¢ˆÓ‰b0q3Ï7ÑN`Ž}¤²tSv Ѝ¤DàXÇç?H¾ÖÖ–ËÿQ;Ä’Å~šcß$â="ê|¨É°ÒŽ™k+ùùA“¸ØW —«<"óûò-å-V]ÞOõÌžâ‹Ö‚PÊÜ>þs¦a²Àý“uè\G<8Š-Ä¡^“Q³qc"ÇåÛÖ$z—÷ø«±Sh¸ÀÏÌè„hd*Û¼2}jï7±Ø (Æ—oºQÄù}7+C÷Ñ__4É4­ó‡†åëä¡nŒhßeÓv¾d‘j‡Öè<, I’{GüIâm†m ˆ8ëñ…µ…7¢|ÙˆeÊ0§.)æ{¹ŽèeEZ-,áÐЗÌglç’ XäkY_ѹÉ[ÁeùýcòOIp2Q»¿ú%œÒÏ[„õÀΕ´£JU}úÉ¢m]Z—OÄ ùV£»ÈÏ]!ÿŠŽ‚>¹˜ í’=+iÈÚ/°Þ1ûËfÖm“‹ ¬F¥¶YMÍ©ž˜R—·sâdÄ“H9{ÖZ!£M×s]©GÎRãÍ jGÓ¬o0c—HÝ%òØ á¿ft>ìÐ&e/·½|ú×ìN¦¯-¶6)…‰Ý7\éã:ZÙ£»|qMý¦Ô7b rmDYFî>˜~Àsóäè[ÆKMŸo. zÆøƒ'æ|’;Šü*š`‚ÁˆWÄén\·{(B§“ÒçõÜNjJ–¹Æñý]¡ý%oR¤½Ï¶Ö«~®š}cJÛ¨†¶9ñ]Üsø†£Œé”Ƀ•â.¤‚{γ_n£†¸âš„ÔEN=(QÜ©¥žÌaÛk/‘ ÊòÊDmºr] Õd/õ™ô£87¯„±{g8}ç~ˆÃè‹lÍå´ÿ:ƒ{èhj–I]¸ÀÌÁJßQÑ”–™u»øòñ,[:ÞJ"*y2M–ùÈdw­wiK«å±” äð—ìƒù=W4}:Û:-04=¡Xíë—ÃX³xìoS‚+Áb}9×;¦—a{ú93ÆhéEíþûÃ5{cBèf.º¿º>ÄMjåfÓšû¯³ÜÈz 8úœQº­º¹fNaÄbx¸lkäëºWªèœÔ¼ ŽžîÄÑøÿúäã›VØZa·fíÀ°p¥ñꦊÄåW± Iš_¾„ñË“² šô#´ÑʾȈÒãÑËïÃZÜØXªr3`š‰co¥  ˆ¹ZÁÕ}7ʰOEÇW­Æý' vµ†HÁÉ}ÙâÅšCíxóÓÎ>¼­úgŸë]xc¶uƒR][t±ÝH2äËСG¶`ÉÞ‚ˆ - в­«,93/ð:éç”Ë4Ñ’­:9aÒÂø‘øRÿ®!£¶5á[•©~Ï|†½ÅÌë²l¾øxâæ¯Íà-â Ã'X¬*¤ì„ô'UUHUé‚cÖ”³=‡Ÿ6ÉØ œÁgû£GEô(몠ԮYð-DíãÆÿSsáâðóšQ]Eûø%=s8Go%ÿÝŒ©å ÜK¯ÂÝ­Hy]ý„¶ ÞÊÓ_Qê?Þ¢OS9Ú)µ¼þ.ÞÓÛ1x8°|íÆb«6–ZþÆ?3¿¯+<‰ot$»?QKާ/çÝYÆ'_Úü ¨4Ü¡%ÎèìwL¥6b¾²BåÉ•/_î鉥¤TkÎ!ÜE%\RÛ´Å;.«89zk(ð:–Ï£¾g‡bA T²–ÐùŸ(Fú2øð2…HÖJ&ìfÉhîßîù„cøÅ–Ltˆòxpe¡*o`@|2ÚzF†©Þià êTËð$ÜñaÊVï,n&º%L¨¾öÃK¾²·ß³2gO#1¢ù"DúL¹•Ì®ßËlœcBO&3¨ÄS“ƒpUõàQc–^ÇçÏ7e‡¯Ó82ŸWXfë²—V\iŽ ÎÛ¾ÉB_ÞzPzä–½©ÕpæM K³1V Ø~0œ¶uö“™2Ð%ǥ؈ûCÊ·U•8š>}aÉGäìŒyù@ì{ùE”¼†È«´Öül= º÷/U9s|vrZ ³žw#T4kxó™Xö( OpæÑH. @õùÛ(ÚwÌ{Oó“2‚:ýß¡ ^f_›Æçd«ž*MØ&|›ýdá,BË‹Zÿt?ãÕØá«’‚ÍÃ…ÐØ–TÉöêÈùá¦<+/è?hc¿ Œåw«Ç´ÍÚ²^ªaÑ{Ÿr¥ÄOó(%.Tß+'ØL`&Uf2¸ÇÆ*«Sä°4¬¡{KCír;!Ú ·ŽÆ`µ˜8ì‡å¯¥ðªgÔ—ÚZ(4‚éµíÇö(u–Îx¬«™ˆ…ª—n?Äm÷«^8›KpYñEžÆVŠ;š¯”=ëýz¹zÓÄw2½&Ä(^ú4ÍôãS/_ó®XMÇæ5¼öp¶x”’òùÈ“-å¨W>à’9åÞIÂKWõ“ƒ˜ž,þB‹ú–:YG½~s޼b€ŠØ`ßTIN|º]îøþÎÏ¥› ±Öé³”¼šY;ˆ.Ø÷:È÷ÆôyÿÄë”=ÝÇNKNé#p·£Ò¼Ÿ6 «Ï¹ÄJ,2ùTªÒxõúü¢Sƒ7_ëGÊ|Ün/yK“;fÑÍãÂýÚxlMs÷†gŽÊÜæ÷#À -¿ Åñ[nž*IÁn¶›¬Ù! §)ù|D…EÅjôßhâr_ÎP®ÕãT®½o,{É|qÔ¥å5e½Ã:õ”NqÅg*¿ Ì´DÈ[IÁY=»À1Ù¸¼ƒ–2±½pô·'¯á¦è}¶UBÉþÆÿ°´~<³¦ŒÖÌüd£2¶(mXÁV·Ï¿’£ŒèVâDº²½_vytx¥®Îúu¡šŠäʺH â ¸5ÓRùÓÆ²}®´~›ËoB‘™™mÈ‘º}Ëv£Ú<Æ¿-ƨ~”ð–p2.É¿÷—šñöþ‚Yq›!ª”zÇIì„ôþ";-ƒ]bµcœÎ ]‹ÒÃŒ3 ›÷Mã,RýÕøÇÎ`áAÉŽw6GþU ¸ë’ƃد啕2~uÒŒ––ä á¬ÞXDto{_hŸçHµÕH§Ž@b|tÛý-üc|C¦bug»á¦O¦DÜK³º™°i×RY õ—Έrñ¥?×KÌ•ˆ1½Fû­-˜…¯U}ºiV[-D§³MÂjŽýψ«u2Gû~=âN²aÕj§>õ¿úÚ¶Ez38µÑ8="·ùtÜÉ)‚£Á1¤^ù‹ý@•³m«í¾qñ*PI>w‚O ÿ=ž¡ÈÄ_ ¼îÁ1jÓéH<#Ê‹aA ¢ø~Íû6 JŒ³íAdi­M€DæyjSéûñzf–;©å­§Žq÷ò‹ÚM ¢'<[_%o´öo+¦L{ÝiC§,¸=‚^0<\)=”Ù0’õwM}Y¸½ê¶éà8²‘¾uWeÝp´¶÷’ëÊÑÚþS@Ðs¼Ùo8²ìp"¹$2ž4º5>¯‰U ÐÜGlãï(Üê®Í9BŒëœ”PWs>ýôKÜl0i)¢[Îj,¿µ’çÒ«JÛCnž¤ð?'e`>ت·(8PÀ¬ ‘ëÖWka2æÐ°ì¶ÿ©Í™p39òú. ·ž4Àô˜…>-ˆ±¥U$PqhÖ@Úo?¹üñѯôÄ® æd’G‰ˆ¹öò ¥ÆñYÀHægƒ”Å–0(]Þêýxmù+Q—Tà‡}–/îÓ ÿct>£¿úy(ý–ð' bçÂyvB&úФ»›¤PËúvHÓGh¼ç¨&GœÐ£l|¿Ÿˆðiáp–¯ôŒâŸz‹5æw¼»Û“šëêmP¯§Â&{  ÑT’Hrã1KÖ×PAnNh¶;áé– 6ÏEïÍÁFtoï~3„ f|ŸíŒ£ˆ¢~30=_a~ó±iDÝYîW²Šiµ¶nWñyë û­ö¡ŠyÏ6ö^÷7]Óòªjwúý*ðþ§âÛWܽÍ!k±2ŸÏyLnö½ÛÄƯÀÇ ñ MÝ6«|ã~½z\Ð/L_„ÀÕû¼ÀC$9@7é_0áÁýUnTK LšYµQÐE£É¤/‹À¹Ôvë:¢™Ž[3ûCfå’Ú¡ÂC,ææþLÉôå™5;àæÏ<3D_cšô׬Œ¹ ÊE1/ŠžÛI*Åóïéó®’qB¹Ú‡…%Ã?‹wM_}Kuæu•9ήÒõr@yW…6éÕ²ù™û;e.£\ß¼ðõ¬ ‘ÙAJqú‰^äsr3Eê2ò×~êØ4·„òî´¸ÑBC^T™„™uò ¯Z‘ vY“jÞo6ôÔÇÓØxWĘMë&”‚xæ¼àÙ*)j¤ÑN‹h´YþD]FC¤ì³DA‡–¦=A;É)§NO6!nb.äÀ“úeš¾ye£*þZFò@«‹jáÑ·®#JtÅVrh X*Œ2&Æ&¤ÞŽ¥·¬>,‡Î¡‚§—*qÓOò[Þ´…Xèꥷ¹Y¶Z„VÇL”n8ÓŸÔ2±äû”ÁOKL²7÷“Å>w/ŸØç{’j—]âVÅGœhÈ£ùìápæ”<·} ì¢ÅD¦$2UßÂó‹Ýºê|«bº™«64«z`ïÞÙ‹ïkÆ)ÐÝ-¡?¹uмùá#ùQɵȵŒï`ïWðÌðÇ9*PÅd¼Bý—¥;­–E²êüXå=«¸;swACß=.ì&oà›Y†ù}ሦx|°PÛÎ$¶:»@å6g¬CµÓþh ;NÖDãN ”%ªß‘]ŒzÝ5»²}¦Ìˆ!Goªu=Fîþp:=õ!zɑҪFÝÜ]ÏÁÔÖ6&iAÏøÌªHüŽU¥4笗¸Ë"¨þ$³æ›eå! %_–aK¤Tè‘•øzÊÌÕO®ÙŽž×ã“®äx‘´É²wIxaÄuo—Š•ÂU[ž ÈÎrno`bSŠo„p¿¬Í%-#î4œ¶·æ‹‰'מÏvŠÝõúb„¹i¦fÁË<&±kò¸Æaf‰³ѵS |?vÚsîr•–÷XáŸ@wÕŸ˜› ¹ök…ÛKvö©ØòojìV/¬®=î¼TïH®ö?¾÷E%ä’e]s]òÔŽ0öUFãÉ¢iB?¢8òúµ?¨aB2Ìr¤]{¸t(,SØ©+&Ó4èù1ÊÓÛ²ê"KAw lL0§’™îm†Ãû#iÆ;w‹Ï³¸½9-}ªh^‘×óx¿£³·ña8o&á¾»—>Ú…£RÓ‰Üáô3ÊõknÜÈOµé ¥tËÃù.ÈO–T•õÚ>c¯üt­§~œ¨Ý®§ã>º‘ÀÜ»Ï^QŸÎ¯Ðï×Ä"ÌQA(êâÈÞ» $v˜¿ÿUÆEÖ ¡VËžÚ,×XO–Èä²Úr'¿z°eGÓìfìçèz ·8,ZÌH†õÌ1Ò,™´õâ@Ö=;®†ëa=Z Å.#úƒ§1Ò‚ç»mþÍŽÇ-Õõì£$ðù—-ååŽÒ<Â)~7Uº~4ò.{Ÿu¸dˆÛ»®2_¸2ƒIš„IFÂÖºÖ÷hÉvƒ ¹9wêÕÜÏlTÂhÖDÕ›o­)úìZÈIŸ3ûŒn|´¢½1JZÚòÔæ_[äÇz/ÔWN”¢¶°ú{|‘D&óÇõo†ÈrÜÑ.z~)v¯Š~Ç´ù£ŸÇ³¹@ –1¨dT£àÕ«¬H>ŒI‘Ÿ¤¢øjjÇ):ä¥nOM‘Ö½N”¤šƒ Oóˆg¤=×sh ¿Ì‘‘‹¬ 2"~çôâ.cï%%ß51H‚hí1Ú*öGÃãúþïp;‹ObÏç—êf‰ý;‚«º¹öbµXS(`tO7Ó˰¤‹E\žÏ $òø\ª9ä´éB1Îæ_z³³…þc³îKL3¹Ü¬¾jñFšRû-‹rW»aã°éˆ¹Jðµ ±|$Ͷ)q•<¨íI¶¡I¯C?ó&bk¹äÏ!ÚœæÚ³ë+ªÃÂòöæˆÌÅ)¢ÎnjeÁèœ{. Ø®¹ŠFß¼_V\£Õ”›@0‰ãP”††ß,EÓÎÅTŠ”óíäa0Õ díXyÆæE~­]Ž*ô¬Ò{pjç‚—²–]ê˜ÓÊ.D1Vqá‘^YÂqëèR¦ßÉPW“½2 %þƧ ”íJdºÐtˆ¸.$ªSMõBÛŸ\9|žEôAíÝ.Y !Ýë[Aèô›GªÎ5‚Õ”¸Wåï—\\À%ÞgÚBjia‘„O¡1ptãVŠS\±uÎÐääD²¥³æÁWÎÙíaäX(=š ¡ß‰î´RÀ»·§°²Cö-½¢ ‹üÍI-§`Ea3Æ®æt¥,NQmy tTZj½ÁÁM7ZÐ2 ¢%yÐO:²+Qø£È:'ñÙh¢û°B:‡øÁq>¤lq¯_ǯ•=X= ›Ð_´}‚¬¯|Ò¸Îë Ä VAÝh±ä®|+œY/ªú(‚¶óL˜xÃÚ÷Ưÿk¬ßf ø®Dâð­à·ž¯Z+1ŽÈ»ÏãÙÊÉG¢Ë íçQÙ)Þ_Ï^/æYt?N¸½³|#í…káÿXðnßBÄØª±´ %Ó¾bYCû'—RÙŽ ¼¯%nÕÃ37ìÍit­å‡X "îƒÜ$Œ§º×šölã?æ©xuò>¾n;!79mK4«Il¼Iç Æ¬Ï? y|Ù~,Po¥Ãšèá%fMC/=)èlÔŽi#óº5Ĉ ‰øA嬱h mÁdXŽ,»w;zÆâ­€¸ˆÁæ™eùÇ–ùmæoü£“ lŸ¦™8~PÈÚrqL|6ÉTó(2ð¯0ÓùeÓjƒ£Ÿ]”7Neü /´»«ƒL(C2Çà¶žÞÍíx¥'Р±8ü‰>Zo ZïÊkqLí/å'KÛÙ>rP,½˜¢|#áò]2ë­dMÆ¥²Î@7½‚iͼVn›‚S£…Â23¦5³…ÜOM<<©Åݓף­½fžÍ”¦1·E"ué1_0®×  Ïkx7wp}¬9” 8ûñ-n6´CøÝÕL_óꇌ££íŠ%[»â2lÌÃëgW¥×uÍóû(ƒÏñ•ß7Ëû{©Rñ>¦júj\º¶µµèCxì8‹eËÓƒd½u „’0¼²[(6Ð~ÍdHøÂ†·©•ÉÖÓ‚ó^O:ŒÔ¼8,}‡Ìbðxl"u}®¾$„E=|[¨½ ´cÓ\OLÀ]0ßûRÃDlD·yøJ{ÇæQVsKiã ÇvëÒ†Žˆ¬Ee¼¥J£ÄçqéŽ ?EŒFZ¥í:.îñ<è¦IK=ñ‡ã)Šî|– Èa7†i¢t"™­<%¯¶FM™ß&¤ˆiIjìÃÔC7qVDNºÐ<æPÍw¼Á»!Ë­Âﵺr\],¥!¾3¶ÜÓ’( ×wè»Â X½¨½‹›'"=OõÚq¦vZד÷ÐX=o=Gbßõüª×þñŽò…¶jT;àòSe=ä‡Í(¸9‹7,ÐrìÖªÁå¹ÊµE:òdg‚ã{'Õ%Ê“~aùéa„Éœh°n)?}^Õóf1¼;ƒêã5ÓRø«óâj–š ]ÄÅËûX|É'(¬KÔ*P‹"8‚| Šder|Ûª†©¤fë©Û¬¦µ@¹±Ÿ†.ójª·œNtêvù¯Ê²“p딩«Ã-B?¾ì‡˜ÞÅCó‘Âü©>ˆæ]a x­Ô賯ww ý¯×Þ'MV¯•ÛŸ[×µ'mÙ=VÑoŽ% ¥z„ªCáVøËimżZ<5‡…ÿ×y>†¹ltF…Ð$ Z¡«mGÇ2“Bé÷2,è}þÀ¤ëÜÚ høt`ª»qò0¼«0¬Ä…´Ô§ª©®ÌMëiµO"‰dp΃ m“3~_M·S¿"â1ÂCh¿]f²i÷i«‡½»ÉQWmãÐh?€Ú ¦àœ=åÁ±¼æöä¤ÎûûʇðÕãB)ÁŠƒ€}/‹æV”»‰:ê&i÷ú-Ø•ÜZ™_8ÖXFŠ'nôpõ YÊ‹ú­‚BågÛ4·/¿ïhášu?kœÝV´²>«ø,b{¼ÇÖXZ‰èÄ WÛÑ]¾52ÛA ZWÑñ¯Ž‰5ôìXïþ ©@–ßýž®É endstream endobj 105 0 obj << /Length1 2204 /Length2 16628 /Length3 0 /Length 17963 /Filter /FlateDecode >> stream xÚŒõPjÖŠ"Á!¸hÜÝÝÝ$HKãîÜÝÝ!¸»×àÜ‚ÃåÌ™™œùß«º·¨jzmYÛ¿¦$UQg5µ3JÙÙ‚Y™Xøâв¬,v&6DJJ Øø9"¥ÐÑ dgË÷ qG øM&a~3T´³È9[XÙ¬\|¬Ü|,,6ÞÿÚ9ò$Œ\@¦E&€œ-Ð ‘RÜÎÞÝdn~‹óŸ¯Z+//7ÿÜ¢6@G‰‘-@Ñl´y‹hbd P·3ÁîÿCA#`Ûó13»ºº2Ù81Ù9š Ñ2\A` €Ð èè4üU2@ÉÈøïÒ˜) §¿êvf`W#G àM` 2Ú:½¹8ÛšoÑê² e{ í߯ 0þÝ+ëéþíýÈö_ÎF&&v6öF¶î [s€ÈP–R`»F¶¦Y;Ù½ù¹¬Œß þ•º@JT`ôVá¿ës2qÙƒ˜œ@ÖÕÈüÍ[›%mMÅíll€¶`'Ä¿ò“9MÞúîÎüïáZÙÚ¹Úzþ™lMÍþ*ÃÔÙžYÓäà ”•ø·Í›ñÌp²°°ð°ñ€ ›‰ó_4ÜíÿR²þ%~«ÁÛÓÞÎ`öVÐd|û‡èédä€ÞžÿTü/Bde˜‚LÀc 9Èñû›hö7~›¿#È ð‰åmýX,ýý÷›þÛ†™ÚÙZ»ÿ1ÿ׈™¥•ÕÕÅéÿ]ò•bbvnOFvN#' €••ÀýöÅûyTŒ@ÿÎã¾²¶fvÞ¿Ó}ëÓRvù÷Ðüû@hÿË¥d÷¶¹@ÍŸE×cád1yû`ýÿ¼îÿrùÿ·å±ü¿.úÿÍHÊÙÚú_zš¿ þôF6 k÷[¼m®3øí íÞnÁöÿšjÿ>]E )ÈÙæÿjeÁFo× jkþ¶ÑŒ¬L,ËANR 7 © lbñ÷Öü-×üëÞ¬A¶@;'Ð_/Ì› Ëÿѽ™‰ÕÛ+âô¶šÿRßnèãJښؙþullœ\#GG#wÄ·Y¿!N€'ëÛUšÝþµÌf&[;ð› à­Fo€™#â_ƒåf0Kÿ%úq˜þ î·ÝúƒxÌJÿE<,f•?ˆÀ¬ñ½±hýñ¾±ýq°½!§·&ƒœ¬þ˜¼QÿAo);™Xßg3ð9ûåïÖ¼f“?è-£‰³™õ[íÿs¾Å0±³~ëóSùËðí-ù“Ü_`6ý|Ëø_Èõrp~ÛÔ?oÕ˜ýo„ff ?ø/í? Ë[æÿ€oæ²á|Cîö@ÛX¼ÉþéÿÖI«À·Šþ™Ë[lþÀ·—€ùToo³ÝŸ`o¶o¿NÿP¿¥jÿGýækÿöaû?ýç`ý·ô»Ïñ6mû·yÚýiÇ[¡öÖÎNÿà“8ü²¿…wp¶ûk þÉÄúWÿßÊÿÃÁùæä´ýïYYßÂÿ¡x;f°«Ý?Ôo=sþ|ë™Ë?à§ë?æõæíöøV°û?à[<þÔøÆätü;Ôÿœ¤‰³ã[“Àÿz;ßîõ?ø_?†@ ÐqiÞ΄?Ȳ6¨í®Z”Еqw‚eà2â^{Gße_5@\àþŠ=ïË¢h×ìÞ—û Œ#¶â×&++ƒŸ^)_øp–êÛ`ÌŒ·¼¦0ŽœœÙöä;;?~f·55Ç9kVr½™¡Åep¸ØK?” j®¼­°8ƒ£n¥”sk`¹”´™Bøëнüuú/¡äƒ.ùÏS€ÊI¼Çš€ë¶ c§1uarþ Ù©K™Ë(Y5óf™Á èþ$hñ²ó Ñ,7cê-~ºN‰âïK ìœÔ¥=eeÒ˜‚RH}‹RÓÇAµLYèò^ 5ÃÓß 4œ2fR FÓ0UÔ¯<X§MF¿:~1ˆµØöU „ÈŒ‚³\°6\ ˜×hæ·õ¢Ê Q’¢F\<‘håyqMžŽIó‚r°“ƙۨ™[†0¾1AÔœâöš>dÛͳ^ ôi~1”ë›Gì Ϭ1BvQ ³7‚VHd,.ÂË5ßo õ_¶nŠxâS%”LéÎÜd|—E ôZÉuBŸ™Í<·l†ê¿Õ @…áy<Õƒ^Ó­3ε“^ƒ?hÖŒ™ÅF •yOæ8D˜0‹”'x†ÕrõøœýŽSï¬-í«s¹¡ˆ¯»Õ‘Q\Ô*G"榒di-©Æ A¬À³A\–•³s•:çCN|öƨuöÉ«mƒØ"®ØÎKä½éÜí­!W,†3c2Ƹœ*Û&ðmE‘&žAn:*9ÞñÏ™%“'É#ÄX~È*Mɦè)ÕÑuœ«f¯œÐAcñ÷IsÀ¢aaà³|¤¡˜8œÓq! ÓŽtŠ:Ry÷²d[‰`¡ó¢ÉOPÀÔoD­3øƒÊÓN1Åc_f©Sc5áÆ²0AØ·ïñÃf*¬✂EEeá£,Çípn‹ªcŸAT¥ñUíæüXÉ]àÇ«¸¹=µ n†¡êFf"·üÓGÉ¢"‚’åìór¨DÅî}èW‡Ó‹e[dþXæ‹ß: ÙÅéŠß!]?šVƒØÏz´¾¤ì‘ÑSÐpν÷bŠW»=ýúyQúS¶Ûä"‘"¯Uã 7ž%<àBã5eÜs*¼Ç·<9v)QÊ#‘«ì¯?H6®~˜2ûA•égš_õù°þ,Ð{ §üg;©MˆÅé,‹ó“êǺiž,B¾™vu¸L?é^¦ã;É ”ñåaI&ŒÖ{¨†iu?å›’Ê”ªøÏχ:NÒ¢duÛ”û¨±ãIdÓ§­¯ _µ¸¹1*-ȳÈ Sà4&'#rÀÈïÄ!‰Í3f¿«©=³ç®x+šxî¹LŒÍöO‘.©Òc¶˜¶uÔŸw«ã%‡ÌáZzÇNõSÜgíô!¡ vþ6-™ÒÚÔ¯l,ÉÓ-:§+ŠüÆ1‘5jñ™ÏœPÕ<5߬´‘8ÄKÖB^)AwA1XÚ–Ž±åî®—(æU†È—Dót'‹ÉPu½f¾˜.e0Ì'}O̓häââäû*¬î‡æHÎÖtŒ€þ•þJÿ¤£Ä§<¤6òçÑb_÷‹– >²æ{\Ÿ±‰Í(,ÀÊåG(Œç>ÿ‡+œÎ~ËÅm¹Àú»Å» Ò/û¥E´îߘ 0á§e½Î˜+Ykñ]ü ’AZ} ÉÇz ™¶¤`йÅ_Áúqg긃ޥ›ãÑÃ?.A`@FBó¸Vêþ­D¸´jåÁ© "ÄI"\ÉAÌI'Otw7ûä`R[¤UÜtä½>ا²2*Ký¢&i±ú}ú‘˜¨ÕÒ–Ôþ4ÏÔÚií CÿM(Šíáæ}b'|í²¨ò¤u\[ *Ÿ<îùS+áhªS‰].2Ä÷G ðåã¡ÑŽü¿ ß$>ï%´v^fÅ%}³“VX%k³Ë<Æ© ¯E@¯.I”õ/Du µš™í… Ž}˜ºÛZò‹Ù iÆTK þ“Ñ0z¾œG]³L½ê Ô,ÝxGévÒ„woÍœc¯¤IÆA½Qƒ¹GiåO;üÉd ‘0}¤Üò,µýFÉk•ëú m‹ú>ˆÅñv})4lÙÅœN•ºƒ=… /2qÉjWo±½ôþö‚ÃJ–Jv*û+—`U>çAùd×ökz[ñY—Îßó`;ˆÌº¾$£:÷=8|]<žÓv€Ónm÷ùädŽ®éhf`[l}¡ íˆ0¬Ír쎠P—ïá´M¸ä’GŽçSA>òûW £lÌd'¨XWf¾EY\9$”´j”#Ækë=ü6507’šeB¯ø†b;˜(Úß¼ëçÀÀ½MÀ/ÇxöyœÚ:,0XGžÐY Z$fí(`´¸ _l–r÷Ý×1´Œ>‹p õÎKç§ cÞ‘æõ{%µÇ VxJy‚³A¦í¶¯ÇÆ<}¹)âž *ØÎ'¼Hï(É;ÒX1Æû¿£_Èk¢Ë®x´g-í˜ÝoÖ:íã@tR—¤H\¥©ØFŒ ð%t¢Qo¦d&n;¡]fg.‘„t’8B.ñûg©6ÉÀú.šì—Ã9-=1@«ßŒ‰Ùî}Ï[ld,ÃY½ž[Ë UØp¼ÖŒxŽ †}ÂFǬjU6sØÝ퇢m î¢cG!\¥¸¤ÍƆ^E¡]• ÿ\ç¹ÓäüÔb8óþR÷4íá5VÐfdóa$€ïõ¹™u6 ͸ E¢÷×{Tês(ô|gË­É~ÓŽm®Új`—ìï0ûzwºð˜§0®NÝÔáòx ŠxEQÍÓâúº™Ÿ"d~â¤b»¸8ÊÅikú¨=IñÒ©¨Ê§2Ù6Ö¥wÚ5áZø»•ùÊEIJYpâuÃP!A$¤à¶ÔµWéG3l·Ôª©?|KìHÄ©ë—Á½³ ÊïFŠÅ&½Ù¾G̹§DÆÆÄ¾òôØiilëeffèª_ƒÐº?ü#C´=ÀR@]°cŽ¡vÚG‚/7 ÓÆÌ7ª-.H ·k¼xŒØüð>!Õú” Ÿ¶ž ˆù€H¿X|Ûaþ’—†ôüô«ƒ´Ö¼ÅÚ¬Wءε5¼.Ÿûqî|{C3 •Í @ñL»¥›Ìà‘|ßïñeª3 n¯°Š’•4!b0»±º.D›ÌÞyò osm¤æÈZüsÛñé©SD<”É £ ܸùªfÀRòe\Œqæ9׉j.V÷H6÷³èöLÂìŽtã§ ×—o%ª ˆÐÛ|Oq4Ÿ"z}Š¥Ñ£œ\ˆ-}SFâ¬ÊT̉¶™ÏñêaçQ¯~ÇêkBg7v'xü"‰CÖ8c Ð*™æE·?]ùø³á:úíë/&çVÇϦ"pÐܨªÃXåÉRÊi+“‰ß›§žù^Ejß Ñpô±\ÄE-(Pi8sÜy…xŽDyxì~¡²ŽÞ忯. ÏQQBuþ’Ÿý³uj»%VËÊIÐÚÅx}2ŠgØ«v¨W¯ÝÒóüGq•‘,vúMõ{í­võ¦hÔ™VýÄÌ7Š! ïoÈm7Ò7O@A3/Ôý í†Ú— ÉÏ¿›J›We]¾aìžrŸù™¡Ë·ÕÑ;µæHxd³9]ôÿ4þâ ï>ôíèßåµõµÐ`ž_j¦Òyý:;\°–³¢ñ•AD#0˜ßµ éå¶d?ë´ºÔc¨m¦hgò—pîzÍꛉ ÇàùÑνÌç¹Ï¸‰¿9úÐP'¿l`È,I¤3Sƒáµ_µŸ§Gžö'œ‰8éŒû¡áðxŸ”¶†¡£ê©f«¼—›È3èàWç¹B÷C™½Ä tØÒýfGµqºH]E“Ž ­††©5DÔ§‚¢*Û­TxÌðËZ„„Ë®*‚Ç»l~òÌ ›ûòz(B??DQ$Í. G,,žÔ(¨+¡pöH ®Ó†’/ð@½†ÇãfÍk` •*çU¡š1oVùrŠ3Š`ÒãVô4EŸ:¿Â˜ ˆâŽÔ¯Už#njñ+f¯Opz€_ mÎ@/íra ‹5úG® ›îƒ^…Ñ¢œß›&…ŠMÓÙVBßdd+ÐEND†U5†¿tÏ!˜ó±VeÎ)e&áÍÂãô} 1É‚7!ç9cèy%§~`°iôÁ5í‰×ŸUnùR7‡Y9s‡rùÂü^0Tà\d£ŽMcÀ ºc®ÈÊ Šg‹=¸ë¼,yëw¡€{“Û‘éî“FShÛ³“#@ɲùÐtóëõš ì‚WèªNæB[Êø/ r÷B@b‡ °ÔöiÚ"7¢ÚK„ÏÆÃ ÜiÛ#PUUûè s©õR `¿‘£?U€ûm¾ãN¦÷øÑW”òð¸™Éa‚Þ-¬#°YíbwœÒkM7“=1u¤fwNÌsUõ$‹ºg«ïY¾øY<Îå#eôMcŸ4V´ÛAnø]Õòƒí-á×¶¼œüR¯ý-ìí^Y´îIMŸöŠÃnµ3ê¡Ï—P«’åÎ2¹2g “¦¯0ËöovÀ^»ï§—ŽW¾ß?ÓÚ}´ëÁƒ…öf÷ è\ŽýR“*©ñ°®äñŠ—b0>$ £fN!´ê‡ zt'ì¡Þ úµšì~£©Œð±/[Z8Ãzº\aðôuáÖZŦʽöl¥Ô^Ä–ÁÝ·‡ˆcgÜ©r„¯ßM)­!÷0P^Ljüþ+´3Ø•¦ñiÂÚY[¿=Vp°°õ^¨u`9óŽAjÝöÊ]ßLÆðÙ€_é½»Œæ7æ5r2Zâ¹Wp3ìSɨ_IédÈ5Ü-3ÿƒ§ï/dwñë5dqc¯/SxHhM­)ü5Û Ü˜VÝqñù;¯òG꬗íÉ;rF¼ kÚ]Ny£ñ“¦Õ0ð:2éz¦+ß,;|iÙÝV)mŸ©­ؾòÊEU6jXzk²œö leN¡)sÝÎz‚éÞç­æ…¦8–áúºwV<"ïŸÂ«†‘ƒW3¼wHî‰[…’8 o9äP+u†¿ìÚv£NyèÛ—· Å“|Mdîû6]5˼j½úÉz*}‹#\Í'ZÛUŒ4ïúÛí£­þ½,§«®¾Œ æjm;¿&Ù`2ÉuàF¤>^÷* FË9ÇeZÈäÝlß çÇŒcM®h;zÊñ5Áçê;@&UkËp º³w™ƒSu@W1ƒêVµT•°Z‡´Q:LçÝ*hƒ`7SØÙýéÈ8ÐmÊLW!&Z]õ6_5Ds•‘«¸r¸Ôò^§n |Nªm†ï:pÚd#ª4Öæ§°y½ÝýüqNwZaEù¢0ÿÖ]®\5Ž–¨Kš ‚B@g°Í‚ZA™¸úÝþûôS’×:QÛO°Ó!|]±ÑÜ€³|«sLÛ=[â£$˜°2D 1®³:Ë–Ãe"·È!cá€ZÙòoÊÁvÈë×[ÊrÅç·ù¿ë^ö£“fg$ ÃùByˆ­Z^Ø„Cñ4RÞ2<¨êî#ȶ<Õ‰IÂÈuP9¶}4FÀ©VVàŸõqâ5"¿+,31IÂÿ>ŸÒaª0˜oÌ28Ú‰þ%uÝ¢ÿãÂy­Z –\Ñ @ˆnVºI*z Û“_œh-k¢c@gH_ åÊO¡ÚÊ•´Iº²ÅŤ&½ý:.¬- ‚ìÏ?dKÑþà…(ÏŸTW2 ¨D‚v‹©$½ÇÎý:ˆŒ‚¤8.z“2Ë_u»8áýÞøu›¥#—™m%:̉–Ö³xõÝoÐï’Äõ/鬨jý‹7šI¼þÄÊA¢èØæs’éZkæî~5hú)/Y3ã Ï‹ dÉœ°}ÎÀO¶ i^<úÄUâÙ ¸mbsZÃdtJg›‡“Ìã«Öé>× ?­ÄÀe¨„Dˆ#‰µf^^Ñ*ÌIJ,£õ¬þ8#PWŸ€°#+‡#”ê¥Âi2/=^?ú9 M÷ßôw‘|ùÝ./¬S1“Â-ú:аÊdt’H#NºøR¸ûžh, V²Ä`É’ò¤yZ÷¤¿çL^ûùëeZÔzâ~³®X¤#›‰×—óòÞU WÄh¢íëõ’à͆ Qå¬i=fRÜ×[ONI 'Ó}Å_Î÷ëLÜF&¿±]¢µ<—°Ç&îõý$Í#̬„gßr ¾?žÁ4ÄN¦/ºÐ{™™_R&}ËJØâçëóP ’C§¸éóí Æ¼Ú0¨Éª<¢\ññò-m$o¥íu2g³ogò·ì8ÀeRu"µÕVêm$eg¥¿và¥Å½˜•ºë y}~}"J–rÚ—¾m”XžÍðÜñ˜ÊÆi°ž#ä;÷åĶ31 °l'Yýò{«ÛR ùæ³ñ–ý‡×w–ìÚ{]j¸ï…®_$³ß›½Ö£õüÜÚ a† Ù¿æûÛŸÆú]&\pæd88P ûT¸î× X眸'«Ö‡‡r,Å”"â'€°SÊĘ-’_¿9A–UÚpÈg5Ÿª¾r\Xo"†b7‡#j°¹Üex[‹ðç],Ïb`ÊP–ÑYJDÁ ›°ª-e"Y(ßx¥'ã±ø=ORHöYá¬ÿÑ7ýÖl èdô_]öÚ-èQO‚g­åv63šä·ž÷(‹!Ž'Û=ƹ°Š{~?øS}%Üǹ’ði]pDSO²%i‰ ëSÕ 7Ðç$~÷C‘fk°‚r:‰4j£9c»«?N J%ÐËFçyõ .ðƒLÊ oËå®^Oª³Ã^^ÚŠZŠÃäqÕEŸ©©Ú¹©Vj€y!¤þÒ4Ô´YjáU·N6?r\t|]¿ïVZ¦+¤g•M ÆvãÉ-|]‰¡]éëëDyN¾ROJÐþøÅ QÛñ”{󇾇 ã\öNK¢Lí-œ+Œ1>y4(„#ß›#5Êöþ~«Å/:ÒñÞœ:eoîG½Û;O²4¥c¶qo/Fxwt<ìè§Ofé{¸ÍÝqЌޒDZv=~g=bÇsü@…ûÃüнÀÑ>ŒCÎà5³Ç 52g•½Õu+(ñÌÖ¢4¿5"¤uA6…„ASÈmYböå­ï÷f˜]ÌYó èvM…½è ›/`-ŠÇÆ2j'­O÷kç·äÖ„£ß3h›F;í\C0fµÊ€p-…3à¼Fñ—#-?¡*g¾Ï+âTŠã)\„~ 4I®(«µ1‹çdìvÕ³Ó+ÃjïWŠˆ~`{Ýs—~äç6Qöª¿ÂiÈôlÉls&]þTyW9Ó,³ÅŠp™Êð´k=—­×¦jêõê4pØ)ßnjuâç7+&¾/ü@n,ÓZ£ˆÒ3ãS"Æ«Á8C¼))Ó«²¤¨†âdj§11h9âÖ dˇ&TcÛµÖ].GœFµô:{òŸ¾Ý Ç ¯h5` ãÌ®d×!‚.ˬR#”XÎèD ݽóÜÀ§n.òn|,]xš#PÂø<ùò‚¬ ïl*·zj‡¼ço²ÛMžNíÕw[ÏgðqŠZ틈†\ÞÖ¦Ÿ)TNË#ibÛ°ãÄ4m y(Ú@¿¯^¾ù &ðs²®¶»Ö£Rc/°'Ý(:ÿdõl ž,þ£ÃöûppB^ev ýi4WP¢ÓÈw{'ö=TÍ@¿&ÌÙwy®z„O\F¡¾÷ÍÊ¿õ#ÖVl:W‘!k›éý€,\Ÿ|Û9Ö7"î¡„ð‚ÒÌû¤åBÉËŽ]¡Yõ3Pv k-:ᇿgïØ¾Z3-1j ÌíhûcàâQy(ÃM<àƒ$'ë Ô×`¼Ü:¡<¿7RI¹Jû°ÝwG!‡Áž˜|4&ö-Éä}¤jšÑÃÍô“°ö óG•:ßµ_Š‚ S}µ.¢ƒÁ×°ô´XÝŸ “¦ï]ìÉéÐ;­'6 %ý&R¥“"‡åüÛºöDw¤<ü²‚£L¶ Ö™|R´OÙ&IJJV2ÚØ¡ Ÿˆ ;ð;„%?þd %ÏÚl4%Ì«x Ù_8;=HiŸ+o÷ìSòqæÚÿ=@JɸqNÛ¿ÀÍt)ûeÞ-‚™É–7ÄØP±Øàºí 1o·ö”®Gé´ºt6¡%·|{ÅoÚJÇ?Î4sÓüïCÍsEì.…+Ó¡ĶðzŒÈhOžqOö³^'Œh’Ê÷Eº:,²=£ù'ä}Rtc€f·Lž­éÇß$>Ù¡¥´nw7š.Ы0É!‡§ÎŒ.}eÒæ=G2?˜Îo|b,·/ aòýåÏòFLö#¨gD?ÏB1‹JŽØæ2¡¥ Ù§6Áä¼Ëz¤Ödðòc˜Õ.õø2™BíÏ­ñzL¸"|zb·ðÀƲËH½Ü]U-øÍ\ÞqE6E{ÔNa5é¸åÓoBЩÿ»’$LÉïó?±¬Çkp2{wÑQÈØ~-¹|¬çݶ"®ºþ.Э®©ÃH°q`Wòå½jË'hÌÛ¦ ¹Ø­1šÏ3–4ñÜ”Q¯ß¼Vï '‡ÉJMìøÙ=‹š-ÙñÇgf®QÀ5ÌRý¥Žá¯ta:MÊØgEÑìƒƵœÖͺ¿(23 à·Ä²õ!?¦²ùeÌ}¸g[;ñnúºÇPKý‘4û™ù$#N.- ÇŽ!%NI7¡cnß®×di>¡;«6´ËÂAdèeBÂ÷Lß9žñ“ô²¯ö_““Íb¹ü|è;‚ܱė/ù(ÍGøAÊÖË(KµoÖLüDb5°fÄ;Êâö"!}¶âsÔ¼=W~„“åãã£Ê }¯]{WS„à½Gu³ŸUŒ3 i«7˜áéw—ø¹kÑ’l01:ûvÉP”Òw] ›hß>ègøÞ¾ÛÝÄ-m†°FïFæÕ†‚™¼=Xþƒ¼Ç©6½VÄÆ­Ýy0*ƒ5¸Ö¶¸¦cüç¯Ò­d&*)¶ÂÆZîé´Ø˜anµÏQ8–f‘¨Ä¡ÐÉËH['ýò–÷y™Ìƒ°…ë<ŠêvQh$7QôõSô2ˆO¿ jÈziÙ èþŽuxêyë`Ì€1™¯faMsuöƒŒQv¡NŽ5žójSþ¶JÆÒô†ùÚÂ4¥…S?ÄXµHÑ.^y(F°GùÀ;JÒÃÍã)gŒÂ ê„)g†¿(Ťؾ_o>G³|“Ûî姯d9•:qWË×¾fÙFÚ¶´\L-¤02?%»5…u±§q,6G-\Šå¶ìZ €1Ô›MÁŒP±»gí˜íeø€]íêšrFà»?¸€ ›ŸpISí÷´Š}üÈmCù3—Cç)Q¼³Ö’¦^“@T¨.¯e¤á¤%G×d^"Ä^”©ø>¬ÿ‰H+¯[éÃÝÜøšöô;ü]õOã-εۓz¯vtr,4ök"+Iw£òÜAÎ9⩈Ñ­ŒtïSL¤[/|/öY¹0õ`_·µGQ”©}tL=(£u·ËyɈšÐ˜,“d:ã†/{Q`’’՜ۣp­+ØÊ>ož—}i&…wçr/Mï ­e‹OgUJîå›â™ê@ÌFçV_ö)º£=ü›߿f–\v:À”ºÀ¾€O½¢Ñ çPô;@¶<Æ1W¦ó+2F¯È&žGÜÔ¨¦Mg9]²R"}ç¼O§ŸDàºvûCàâ+x—}º÷+–wekOù‹ŽH‘ B‡”m’kI_æ¿§ ¡«¹P˜Äí|âBr‹”süp‡¥1Ã5N0·¯!Õ7N=ÆÃÕ« ´è»¦Ì¦Þà»VÉ%¶ë‹¶Céu(â´8­µšl³uô“” ¾2¬ áôÚ+æ¿rHíwÝ“U8Ì–~{K¸ <ÜLÝ y>§Ø%|[p·Âk„ aHFéÑß;´sµ“ÅuoÜ…–žbê#ÃKΚ$Çlç×2ûotèÖ ÒzvoõçwÚƒ…5W–¦­zŒ§¥¢õ¯cXföÏjXó´5¼]u=â…wã°,uÕ:’áãtä%©hÞÖ…§ÁÎ*3#ÚÖ’å‹t`Í­,'bX‹g.оf¹ÁZ•×Dz¤Œ³SeAIa•"²¡¾­³=l…¾p€e™ìOš±Ó)ßþ€5œ2 x(ã,ëD±æÌ“V·½õuG…풾؅ ¡õÌŸP‘øì¨Ž t¡vBë·»‘è+ ‘¬¶£_Ó³£e‡¤'ˆ!ã]­Být*"d | wö×ãË—#3Xmê°û§³KyÒÊ™•„³BãYÇ´Ñ—œ1NH°ã „ƒˆtÖlHc¡ùH–îM­:#º ÑLþ•™¼ªƒB¼m Â#>n³M ü‹eßx¢>õˆÁö×ǤrÕbÃU’71T—ÆÎVÁåkˆº3M|/å·GÑ-30ö°MyÓN.\d¼¹(–šÄÏç®GwýÈBÝ’/¢R™1¨é#_wò‰k?8£ræv‡ÃCyÜô¯w”ËÛŽå£Ì¥-ËZ,1Ô¤2 ©GW$Î{ÍâÆd­wÀŸB<(Ô$cÍÅ+d¬â*O²Bô­ŸÓ‘\Ïk"WOLÞÀ| =¿£@YÆ¡6îu14êºs†WÓ=¬+§hÇŸ[töÞ!ûJ!<‹^ºŒVpüNž¿ôlîá¼jýÜÝ퀙3ž>A òRªé4œã¼VY“´›ß¤þ7`{ Á®z"dÇ¢éޒЮ¿Æô:-¬…‡•ˆ"µ]¡sm|Gt”ÜC.ÊñÑ/æN¬e6^1úH€ù»ƒT²ñÁ¡RÞÀ¼½ÍÃP1}k¦Ó=›¨‘M~â*ô ô\Q£•¬Íó$Mf‘¾ÊCÆg6G?yPP²@„¸„?Ò—-0×´ÑIŒ6+~p^M]æ/ý|ZÜPEb«¡+4I©‘ûÓ PÍWc‘á…ßÐHÍ+ÜÒ ð3Üèlœt»È©ÄêôÖ\hŠ©íý ö”ð#ì ý3x} WÙ9C*-¿ü2Ð><²µ‰ÏF©ŠÁŒzýJ霅-\ü¢r‹§E™@óÍäú5ÃtX¦£˜ü]pÆ~³½= ›~¨¿;ý{¾SÄ0áD(Áv «N¨àa‰Hp™úÀİɀ[<ÖÝ“oÈû\]ÎføÍdz'Ýaß²ƒíÁX­JßÈËÁÖ>58°ò°™8]±KNõÝ.·g­7ÙÒ…~à ­öÜŒ;±‹ù–gªƒ¼\¢ã’™ƒ,9?I?0¼s"-z÷ÁMÅ‚læÓ×ntHЧªEc¶™Ì`†5uUs öÃÖÛ€Ò{ä§3gÌ€ÙÐ!?–&½ŒOm¬ÛðºxW(³zø°¹qHâJ’z5ñµÁåìò¿e>;Ï';ÌÉÅÒÂ"ZĖο_RbR\Ü'òÁf–„·Vðú5t>¡Ü‰LCÇ…>–ÿ8xþÉ[©Ë‡ˆ=|ª¢ÙÍúÝ&Yð"~!z)];¨¶‰?’ï N¡áÈ$K‹„ VŽ_éÏ2ÛŠï®òΟÜñøZ[Äé5…ï–•c¹&Ù±/uÄEK M'ËzaqÆçb+ô~v8c„¨Ž"q>éÚ쌴 ÂÚÔ»÷«¹á(»³R„Lg”†–æÊOE´LaÁ"E4-h)ÚpƒÖ <ûŒ‹*9’©1Ð $u'v¯ü-ò(ÆpY¿}ÙZ¸ª;ØJî5 ðwòMYõ^´R­LÛ i‡cÍŽA¬¢O÷Ð{³¤âªXÊœ™þF²Á,9"ç°±*£·úzß<@»a›ÐG8ˆtµS< SøVû{‹\ùÙeí‡ )2˜£.{9gýµ#¾©H ÐòHOÑŒ]Dý:gv]yzÚ¬ó¬åa zƒy}[áƒõHrJÀgPÜEHQ¬Ÿû©lœ@5Zm«E}˜¦mœšZ¦°DâmR˜ÓJšüXÆŒôü5=iê¨ÓÇÐg'¾TAüEjZ)¥tJÎs6Xø‡ªæb{ÍP¸ÜÏþñWK'@K£×ØÔ#2«Ÿr£÷(fß[N#5æ@]÷[¨Z*¶Ã¢KÌæ8É£ä8Žêåïµ—œÍ¸nøž|ůn?s’£ó‡)æNëÚþðû,þâ|.gy6â<Ïôí‰FýÌ!rÕŽ¼–Àà,åI‰ëKs Gñ;( ÜõCà ¬}bž]¥›Õ&œÕ|øM¬(H‰ö`yÐá´Åý“µê9ŠÞÉŒlV™Íëïp ížôžB2ZÙä¨z lÚ»×I˜DH-æóÅZÄ#rYWdL^Æ0Ê”Ê<¯­î1½¨‰#cïýª™¤J¥1«nÃÆV>Ä'K|ìrðy’U· Ú¹l_NzœL(Øž9/qG?A9¸çů¹KÒyưáë°f1J3 /ð†±BÚx¤Üõp9çUÅmµZ“›ËÅó«NGLÖ¨ÜmÝã´yå—&8Œ:öåÑŒ2,f4Žb o<®m觉¦yV ”šù¡U`ã %ÃÅÙZ2º 1È 7%ݳì,ó^ÚOV2ceX—?$•W´ž1Ë ÙÃv«)™ÖS#¨¼ìjúð4Úµ˜™~"5ê(e¥¾5*ùJÊA@1YYÀe•½è £Þ%k4A~æA:X–,‚$k©§ëdhéOÃþ`ïH·¢ˆ"JCÎZýEúäwzÒ¶Èv$ ñrw™j1]kÛ(Rr-Õ»çöÎÄÔDÂ8ÈŸ©Ðˆ¬åÙÇMT­f¢ óVÓªê1³JË%Pד,ð$Èf+§Qª¸wYùúåÇ"©²Ì}ë/Îe³‰Ës—åÕ‰)©Ú–òÍPtµ¢P%ía‚ÞÇl•±Î°ú¸š/¨“ÉÒaŽ·ê«GpYpeËÞ÷£fìxÈÏ-ÄýÊ“…9\óô š8öË¿ò}wx¼´OÌ‘Yþ‹ }ÙJ¦GÜjÁ²øâ#BUmI]Ÿö(ª2T¤ºÙÞ·ýíw¼QB¨[Ž›à=kxˆ‡½#ðsš…â0>U¤‡Å.þÎó%EžUçÕMo‘Y–Ϧ¾˜Ñ¯ÒF|½ 2lÈN^µàçN.Æñ-aîƒÔQÃü…,G6&;„Æ6û^œ²›Töb 1²Ýu¹kéà×eDˆé/'Tùx.Yžë¢ïá;D›{jh‘cá’ý4-JœQl÷Ðëö;(ÆmJ‰ò‘t-ép€ëòUO¡ÐPœGÐøÛ£­9ÒŒ;s§À‚²ò.­^…Üá›®}õz |÷Dwk›&:l›s†¾ÌùUÙÜI©®P±ÐZW…’l¡!ÞÆñ´^¡ÐHÊ͹ˆ\0Ÿv (Š-K´TêTœ‹ó®òû’tŒíù¶‘ö1£oÓ˜b2SÓm&vJã…Gs,Z–æ§FtgT„V§‰ˆ{›$±»ûvÁhSõD¢ØX°ê/|¶øó sòS8ù½«hlœ!óÆÇÙ õ-áÈFmy8^:_ÈÛEÚëÇØ\¯ ²ãº¢±x•ǽ­ë‡ÆäRèä>R94'û†§ã ƒ’¨ía‹ð~>â:\wKçÆöle›'Ü,¯Ô.*ªçÐdÈ›4í3H@Øf©EÎ?¢‹¯DÏÓ¼²ùéÛ2‹hO Õ;–Âs¯²åL3'¨w–Œå„UŸ(eŸ ‚¤w2Ãþ®Íø„£dG]cCQ|˜þAjîÜÚ GaÍRÕ‘Ëz¡´ìÌbvÌ,ŠÃË@ØôI(¬=þ« Rh¸øˆ'.ÿÞƒŠBP^ż›?@F¢·W ëzϱóÚÐ)ìl{‰—ä‚–,ŠÚ>Dܼà÷ÎbHÿŸˆöE'jÿ_l_9«KkOT§cP]ßAa}Bãzê6÷“þjeƒç^:ð(k (sAŒû`”80FVOd¤ÖÒŸÐ}ɬ>(íLœÒµ¸Ä8&~Ã×\jëJVÓ31‹ ï©Òß5¼Pê|ý‘¯Å· |ލÂ=êòBöøhò -U²†ÕP@¬ÐÓIUÂò{bJ™/‰_C{Œ'êa#“ŒVöú…Á¿ÃZÆ~ã„:6Îy=§lóØ;èá¬7•”ó]ûÑtLìwùuU¬•!¯¯42ÐIjà¨y,ˆAá£xg;n'úˆj¯ójòÑC òU;º\’žvÏj~WYÇ nÆ8·jòK*¨˜LÔŒ®€$¯W÷G”Ë(ËÇËøýÒ#ÑHiMÿn öO6ßúQ™_\€ïü'ÏÏU†ˆYWÅ” ¢Fˆ¹Š[2 í6uÐ “Ƭñ‹ÛÞ Ì)~Ç×nàâ×[-„t KºØ½ÁXEb=ŸWoawµœâ>{Ãsx=Ûoub•oÛpl²œq[‹£UitC‘ºª8„×m…f‘Š#½¦Û?rÕ†Öj`¨¿.Æ`A% cK¥¤Á~\aN¹LRkYC]V½ÅNÈ»žIXö³ÿ¾á~*Ýb €t™.Vů®•ù”€†ªŸô!J)°…~%ÍN…ŸIÇ»xmš÷éÜn>†§™5ÑAS{áfDóÏ賓ìTNcÓX3Ñ‚ÿQ]ïÉŠþÇå‚9ŒNmãqG[ér~ÚˆY^"À§ ¹åUÇù9Ë}˜jŠ¢ží1ÉbrË…nòSåFÉN‡õê§w®‹æ²pÚ”lžjÊ_¯‚ËU¬ ßuœŸ]½uëßo±wÏ“.´¿VPw"·iØd†oÂaÜ'ÔY{h_)bLémdãFJP€›&ÌV–8Eø€ÜŸæ qëÍì)‘·´‡–|%³™Å!^©¾µ3@Cïðb’¼`§AHßÎ’ÿµçÖØ\íCˆêix O°=ÿQf’d™3ñ*G-Kú /«g˜K­.|²âoË‘®Ù¦¯T·fgr¦*Þ¥â96 ¨²s5ÆÄ x}9>|Q #‚ÃfçuG†ŒñùD{;æ×o}&NŸŠ]…õ$wþr›&AyjR‡‹©¨ÞÑ«·= l4DK¸2TàÃ:Ô™¯Ä’m€Å͉ xók ‡kXO¾/ZJÁS/ebç))¹}Ãía1›bFäBt÷7Z²{`ûC~?24¹úz_?‹¬Ü\­¶¬G$Ü<Ë}ªó„´[óØ>Ó£iËáP5å§pJFôÈi2"ur¯Ÿâ^ð˃1¶º.•)Æ‹éÈb’lÛÝ} Ëû„ÙP¡â 29®zˆþó¸Äú£’Œ5ìâ¿X¹dJ‚çEú  ^ö€¢I.¸™Ä¤ZI,zrËæÚÑkÌÞêVžbH8ü3T)éõ6ìkdÇËåÓ»in1”ƒŠXuØŽç†,J«õë—ÛGp˜Ï6þŒ{Θ½zjÄfŠpè,3døDeëÃTIÅçÉ8+ Ôý­2ÅsØ$pñÇ_†ùw!²Èd£Ë¬l>Ëqs/Rïéô°^D«u•b{<3‘3ZOWÊ8¯Ž»ž¹EþfqÒS«ñ›+v»;)mù9—Àˆò.¨—…´~ûãfFŠJ÷Ww–®ßå_"V²)ËDIsÄvÉc“ÑxhÃ5ïc­\R!ÐÖMØéµoŠ)µd¼pšH²Ô•5º¨Núêé½€Ï(@Óíº4‰àû‘’«Aò@êô͸0ß0fŒ{£av»Ô±%ÏÐh‹”Nbå‚5a¬Gh «åRãku¬PJaªÀ^³Ô‰“8G—4ho…†«÷19"M1ÒL÷Á49i×íË/Iîx•Dí­…¶„dºRrE7î­p–y£\ˆWˆvEÉwxPGjjèå耫ëœî‡m sŽwší~6ò°’´¼ï–Êè`VÔÔº4Âó:SB;-òÞŸÛù}z.SR69Û¦aúÄ{RDç篂؇ÕcCbtç?4w{ÙDv|“ ƒ…xŽ"­Zþû$ÍäÌôñ«Ê\ Y°èŽj"VbR뢺À"UkïÔô[9—Û‹i¬É L„´ð óâò ¡Ù¬C5WX¬“qŸ€À•âjEÁÌ®Ù×ë¬3Fgù•‹Ot…b´¤KU>!ɶª³J^OMبLž¨Âz ÇÅHîø´žûÎÊiêeB…¶Èùï?úëÍ“tPå“v|9:“5SÚ˜Ã@.’Iø.]0(.ð'…áx|áôLj/NÒÒý!B…Oq\îáž{Ò /!â&ýý‡ùذFåÕðÝ…‘…‡uß!4¤ ºd\n÷4|_­‡M2«L(o@­K·š¾è¿–ñÈÿNv`Ó×ÉòŠâd<ÌšNý–HPq@Ý n¦y>×8ªî$ñÚÇFˆ¾ûþ[LDùÛ{ÂáÚ÷*r Z7¹¦°&õ®DÂ!í´Ÿ¾5 åáÚ îÇ0’§ecðꑊœmKt*ûƒcKÀî7á0B#W¸1Þg,Ò.…Æá÷j¥CN¬Ñ$ ôˆ_Òëq©*Žmž¸áö¬-õ” 'íäÝjDo˜*Æ5íêŽk0ì»5”§}Ìrµó H“x É.ŒÜÓåä-4A¥XV5Ê©Ý^W^ÄãZ:(ÜÎCrHìÜå««=ÿÁ\÷ Ž0éVaý×¥Ým\:^±áEÑÛ¼]‰DËêä ×eÔ\ÎqAhL^ †TW6ZÄ wò,ím Ë9Ž3ãÁ±l ÝYG&ÔÀðº?f{%ìüQ¤¹‰GSËt8…}íè:¶Þ".ËŠV¨)²|KË#á ]!,;¹j© ³hÆ©á£ý-P%¥'žrcæúºa$kA}¥>Ž Ÿç¦o7¯W?®nW*"eÞÆyDʧJNdõ]ÅŒ' vP0×ܶ-Œ©(Å|íñ¹1f®lr!ìÇWKQLƒž°wÔuöpX²ìÁ¯?EõñÎ;zþ¡6{:.êJþ%Ælüá\eÁ½HJkÝía‘šÜ¢:€$è6;bûšÄ] +‹*†‡îe´ßòš.Ø×?š°¼ä©\ðÎ…¤(´|ì22*±Y»Ä).!’¹ä‚ Øüòi7ùžR±¶$ùydÏoÇ!R¶teï®pLβϱŠSÐó+Ý!ZVÆ úîõ;yàW¤j]FÒt^9Z1—SQ®q…”Ÿ¯2©ÆV|‘h)º }Ì'å.É{ ëõŽEkýkQ¶ˆ…fØ"z‡†ÆNÈ~òç~sø FistŸŠß'ÄR ‰!xÆR¼ø¨É÷ŵ}?ú®À>‰ðëB{Ë0EÿÌûš~Ÿ±–\ª2yf%mKݤ@¦FG=퀜Mtòtû‰feá1›pxç mM-¯Ë¶«Ìo?¾SE ½B`yj‰xºœøjɨS†;‚ÒÃT¢ª±†pyÊßlq¯Ú™^ñyäF˜jüÌJŠ}Þ¶:؉•=gyn5feSf¾Ž'ŸâN;'6(¯Ì¬Ë¹8ãNLlh<À,y­Lí³òQY±ñe’Y2b͵g*P¿4þºP_±w0©o(!¬ ›÷{œðMÜ‹¶¿Q¬Š.¸a ®/’Ûl3/Q»ây©Wqâœ/H»=¸•M@ÔNJÿÄu£…ÁFQ]+%¿šw0Ô Œ÷ ~ÙÕÜܼâÆZfÀbš+2™k® ®šeÔ½.ÚÒÏcŸ‚ î{ö‘Åå·Î\Š®–͇QZ—_ý66ïÉué]ô$sý=”.gÛñžöz€ ëEn0d+ká¹·hŒº?AÏ'0ïvß¾âå —ˆ™}¦Ìêuuª›/JCëˆlÚ¸ƒ£mIÓDÙF˜ÑÒz5jkÂи"qZ¡Ê$ ýI¸Àë݈&¡E’Eš)çæD“.—Ï‹¦ï –fÌ0†,=ÂI|jËŒùÎåœ*G\2‰-¼“wÕ ”Ö×l·Ðû¶¬¨ñ/z÷wŸV>úcx¤|­ã: _ï>¶to&l¤7p°vt¦©„,ù>àhþCñ‡Â*ÞLê÷ô]®îÑ, #ݯž\ܘ é£êJ{½V+( ÿÍ5…pLr¦:º[5¶ß¾fÞ»U.ç;J˜»‘–êúò ›±‹ Ðý{à€*ªZP{JôÇ–¶tüÿ'™fûmró[³¿zV${s…b ö|mSƒWÑ@~-.ì>;¾¹0Õ.”Áá…ñ׸@’<ÒÊA{ŠÉú ©ñ~ý5¡+"N³>¯ÑÛŸ˜3ZÈçÑ¥èD½EqÑÔ¬þ^!¹K-eÆB8ƒ±kDÑ%­:|GBÊ)×%©2‰QU cñ§ 9,dDO_KÇÉ•7žígæ1“9ïտ׏¨wq¨; Q£í‘Ë@íœx{wÍ êE ¢àXžø^Xq5ØžöÞd½’Ibç³´qL8ÒŃVmv2‘ s ¢E"b£Ëž¥]Q{Τ‘ޏcbr;Wû&‘ÍQ^{7*ÒË:È¿0¤þ“aÅ0Á^û8éèÉP+ßòþsþþ¤Œ×RIÛ¶›ëi¼]Årëw%–ÁF²ûôdUudÁ«Üç¨MÁä£0³€YDPˆ®-^@FÎ+ª¥Àzýû2Q”L @o®·ÛvÚsಮúñÐdŠazËr —ø²V¡:Ç€Ô1²ö’¬Þu¦‰z}¼|€„ZÙqçê ·h+÷“¤“|üžš!Óa–IR<Ì‚ÉAúoÖ¾h`jÊ: +R% Vžq¯ºu\ZbýéÓ l‰ëw âÏŠiþäÿá÷ð´#O»¶ü28î–r['È3ï&iŽêèИLlkä.YðÒèÔd¨+QkIþ\ÙA,|Ðh•mˆñÙš$7`¾+h@êDÏ<š¨·‹âý·ò†4íS ï®}º?ÜHFÐjW} a¢Ÿ߆?z’ëtÒÑ!!USO´K6 ›¦„økLYs†TÐÌ)âÉVvž…7ÅÚ#r~G’H·¯€K!¯Ö“ Nµ¶å,h@ã ¬¥þ±à½¸g)2Uèu*§©z}Bà â6Õš~tåŸx ¿ÊF [Ÿæ–ßùMLF¡Ä™ãx®K؈øXfÌç9£Ôí»1‹^æVhXïHô‘ªµöÚÿá>[•)±®&5ƒ¨ùÊ1æX®«¤„K£¥ýÔ/ÇQN÷`ªBéû­.ÄR•ºÙ&Ø„ð{9ßS JÔ `:‡bBàIß8þ|ï¬7™¨Äà u¶È ½sÙ8…ÑHÚ‹¶{œáÐ×YÀn˜™KÔô·¦ ʯ>&{ÕS÷Tyï9¾7q Zä_Ršâ¢…‘žH4àJm…iø”P Y":ê1õsP4í æ@Û¿M:o;Íp1-.gNšGõìÁeD:ÁȬܟzXü:½ˆªtiÿc6Ý\A2ËÔß—,¦ºl¹—ñX°‘áíºØºnÇb6°àÔÚœ.ÊÄ +½Šã6Q‡ áÝ’ÕYòl§¬¦¡yµùïÿ¸dï,JëŠ;¨i¿H9_@æ„è§æþQÐkQ|¿ ;GNžf§#±¡˜MÊ?;ä´Ñ#AõMGéêÕCÉÞ¢ÃÕP@Yà†4 ï3«ZÇè ¯À®}=ÎKðL;6Å^ˆý ʼnùK½HCE‰²¹á©4y@Ë endstream endobj 107 0 obj << /Length1 2641 /Length2 18416 /Length3 0 /Length 19950 /Filter /FlateDecode >> stream xÚŒ·PÚ-ŠCÐàlpwwww `‚ÃàîNpww×àî œA þ&çœ{’{ÿ¯z¯¨‚Y-«»wwï=P“«i2‹[8˜eìÁÌì,lIe--v6' 25µl ü™Zèìr°øÃBÒh †È¤LÁCe{€‚«-€ÀÎ#ÀÎ+ÀÆà`cãÿ¡ƒ³@ÊÔ dPf(8Ø]©%=AVÖ`Hœÿ|ЙÓØùùy™þrˆÛAæ¦öeS°5ÐÑÜÔ é`‚=ÿ‹‚NÈ v`euwwg1µsaqp¶¡g¸ƒÀÖ   ÐÙ høU2@ÅÔøOi,ÈÔ-kËß MK°»©3Ø‚Ìö.W{  3 )¯PuÚÿm¬ô·àŸÃ°³°ÿK÷÷/"ý_Φæævަöž {+€%ÈP•Qb{€™¦ö¿ Mm] þ¦n¦ [S3ˆÁ_©›dÄÕ¦ ÿ©ÏÅÜävaqÙþª‘õ 䘥í-$ìì€ö`ä_ùIœæs÷dý§¹6öîöÞÿA– { Ë_eX¸:²jÛƒœ\òRÿØ@DÈ¿eV@0€›“t=Ì­YÐòtþ¥dÿ%†Ôàëíèà°„”ôY!½]LÝ€°³+Ð×ûOÅ#dvv€È 0Z쑳CÄ@Ë¿1¤ÿÎ €!düØl¿~þýd™0 {[Ïßæµ˜UAYCß@•ñŸ’ÿUJH8x¼™¹ÌœœnN^?À÷¿YÔLAÿdñ‡§¼½¥€ÿïd!§ôŸ„Ýþ™ºÖƒðß\*¹è~ùk6n6sÈ/öÿçaÿËåÿoƱü_Çü3’qµµýKO÷·ÁÿGoj²õüÇ2·®`È(;@6ÁþMu/®2Ðäj÷¿Zy°)dÄí­lÿ=H‹ Èh¡›[ÿ5‹µí™-Ȩæàúu³˜ÙÙØþGY.sÈíáÉ¿T@ÈîüwDi{s‹_KÆÁÍ0uv6õDfƒL77À›²@¿†ÀÊb Õù,œ‘µ”‡À*þKô7â°JüF¼VÉ߈À*õñX¥ÿE¼lV™ßˆÀ*ûqXå#§òoáTù œªÿ">§ÚoáTÿ8¬¿€Uë7‚DÐýñCéo±4u1ÌAÎæ®vÿʹ8~É!M¹Øü6†$göALÌLÍm\lM]¬ÿ•²s@ª3s65Ú-Áˆ¹ÿÿ=ÿÿ’°ÿ-¶‚ÿËžŸó_ùÿ8@ŽÄü_Ä ÉÈÜÁ2+ÿ&ÎõKbg÷»Ä_CÄjñ„„þf€4ø_x~é\!›÷ ä’`…LŒ­©Ý,ê-³@,,AnÐþR;¸:ÿá1±ú¢·úõ0ÿ4äþû$¹ 'fíéh ´ÿÃ"ý!½´ùBNãwÖ<²mmÊo=äìþ(r%²þææ†pÙC6ìwÕXö®vf¿î6«?r€\Ö¬¿³„p:üáÅΩÌñ·Ãò¢ÚÿWw¹Øÿ‘þwo!1«#ÐòrþaÊó— äð»ƒ\“t´uý£0È·V§ß…ÿB®@—¿î¹¹~ À@ 3Û?!Ò?À)ù7-7¤4 è¿Œû— Ðí®pCH\ oÓ¿ùAÊøŸ¥`‡Tñ»&È­Ï ¶vþ1.c»;üáápý=ô˜} q1wpþó¬! wûBvÿcå ¤@HTÏ? ¤O^¿s†0yÿÎà¿îSsWgH£À=yËö?ø¯o0@ ÐyyÑÁ\0ämcȇŸõâDîÌ»SÂsÔ»ºéôÌÞËÎ]ïÐSè벃6œ¯ÅSFû^®îHÓ]‰­=zu4#†¿ORï¼÷yx“ 1»Û‰¼4ƒ74]|$Þ4Hò‚˜YKlÏçÑÉG'жº[:ßÉ•]­û§û€¬GÓ`å—‰°Å]õ½:E”‡ÊO̱Ú1¯Ëæ© Ìr(ÀÌ$H XgóW×sXyÓÏd ŒÈ¾Ç±œ%Þ›q· ^kÕZ.=„T„$°WX³4ÞßRð?{——ÆlÎe£gÚ˜$óï&?0T’ÇÂg³u^æ— òílb ÔëG}‘½«iâÈÐèx„þ™€ÑÒÝ]F¶Pµ½tÀxo$üÅM„3£…²Û;DOï½­e¸+ý£+Å£“ÆiC¯1CËíÈÛ¸«mkRáN¾8ÊÄ—{|=>Åo³*¨¼ûßN;Îyìyh~ª’>uEGF,NÉÀx‰]œÙÊK=špÕ€ÍõúE§Ô‹×½ô†£„+2Ú_XœÎ÷ž¸N & Òùï½Ü݉[ëÊŽAãPñ·â‚ðÁ$h<"éÉÃñ)šüXy”>®o 7×h1_R1¬m,Û"T k²©ñ$FÇ.êdúD­42+šŒ"'ã…4çÔ‚Ú{ž1ÞU—_UnN÷'-ÕSú¥OÌõ,yŽyŒÔÅ4†7 êÒH&Ì@eÑ`µì¾_¤à'î Uó½õíJØèîŸ5½Z|Ëòæq*6e\ެeÍ~/Öøðçû»Ñ9å¶9»ö¼=ýÚ4œ ‘ãU4ç]ìêxGKo6©±ªý¼ƒA£CÖº.kŸé–Ÿeâpë£õŠó°vÙ¶×Æ«4º«øÑkÃÞ¤m…gv2¯Ö¾W‘ä4§u­,dŒrÆË(úÉã…•ðŠáiñН*ß«ª¡G±Æ­ÅÇÈ1‚Âôr}æâì½Ô×»’þìZEö¡ˆ{¸ÓñK¼„ü‡Ò­‚(MÞCE>¯£úÇX.6sh¹Œù®3WÃc4wýý©™¹»9 Á3ŸFÇRWŠbš³E­/3¢ÚͲ·ž–I`¨-†JL¢¨j¡¨¡Y‘/)‚òÏ+èã*|´g¿UÅXâ#ÜVaKµƒ¾œ·Hë+Ë®ÎÊæžüñÁŸ‘¨µøô-o/õHì9 o{“žz6b\‹jÆ)â•öêŒÌAÃM|{2Xz:èSÛZ¡Úla>;aQ£Œ±†h*sNJÎE_©^¢q6ù} »•ûÍ>GOki~^;g·XÕöëz^¯/¦^‡³ìÄô‘m,›g?£¥=‚ôißTÞrGȘû Û¿íâØþ¸€°hŽó-Þ5öáçÄ7γ©çóñY¢í&Žé©ž=_Ò™š‰…r‡¹Ø÷ 'ØÆpÁ½i§¥y(GËÏ´)ñ5aèЪ޳2é‘ý¦[Yº#÷?§¹×²‹ÕìÄçGóu>y­%f™ã‘…˜pk¡#穹!Ó¼ª¯ßé=¬N0ºÑÐȪ”,‘„3®ã~ä§¼?Ùb–8¢Ú_¦?Kl(£Ó¥Ýc‚ ‡z’”­D%dvNœÐ*KYÀÓÀa„H0ÙäÀ–ïÓ¼ôŸª’¦Èr=ï\Öß¼«0ù.‚9klB ÕL—R3G‹`—qG‚¢H‹¡¸=‡F+’‡™-½©¦Â$ üÍ;J“S–C]ŒçuÞ¦(óÙ‚1ž^,mÀ—oWþ2x,NÖéýð7úDy÷¶A¦•åîË*µÚŽ“e&55—Û™Êü _ßà(X}2s'ßNCøà28¦õ)ªFªÖ,hT@׉ÜÈ4TàÞ™dòü­¸1†v·ÏdÓÚ¡UKë|•½\$Ðökk!æÇÉÄ‹¸›þ|¬µëÅÀô€ëÏkÚrRLj t:a¸*}ö޽ëªÈ|íîÙêrÖcÕ;x-djšcbï:ÅAÉcФ"a·‡Ü 3¶Û¶ôÃ<—ÇnÒˆÝwùËï¢2˜.sË,¶m¹iÍÆÍÖœ˜Rå®YªIõßø·^¨¨Øß È^À#:¹N’¶ 7,*'Ãt]öZÝÌ[°Â° :œø1 |LÅÚzß…1Ö Äqü9Þ‚Ì~Úè뀠uL—úÝ[üÕŒ‹ò‰‰(5·eÜ—ð¥ÖE6V¹ñ§•2ºûön·”ø1Ç)똥Þü©žÄòó0m¾€é…$¯‚ýõ.¥0Ѧ€;˜$üRÅhÁÚ«»Ýgê ½ä+8ª¥p|³Q~Çfc‹L‰)ÒE :hCf-†.òìØYO}(Zå–G:X”¤º“1eì*5qÊ!Ë„- Kâ 8QàMÚ“^M¢F×€ôðŠQ9‡RÀaØ깨5=Í.«„éKËàëÔ$rü÷l-gà—mÊBƒÑ°zlÐ^Ù7¨x¨pÛ|ïu…6Øßî‚¶yyö©º¸€ÐõÍM€ý ¥]&·©-WõokÂç¾$-ÒÍãåt;šcã“l,IÝuqìëô(÷xÑÁ”?Æä&;ÔŒð±>޶œwài@w?¥<|Ky/Ë”L1"š•“x½c&‘7=5òð™Ïgõ‹ìtîúÚ÷ׂïåP‘퇶Ì9"6ê<Èô¦pòÙÉE6q·0;Rw_â)Iû7ñD©;foR¬B¢4»†^™yÀI¨P_À؆5}ÚÔ1*ì[æ»P¤cÕ·+/×âx1³àу/@ÍæCk&Î_°hœ{ö‰ÑÐå°Þ¾[éx#‚‰ˆÆ®y¨i E°«OujB_ÜWs5;@ðY> ï´;Óå§–ÑŒŒ|­–ÇYÖ[+³\¹$ $:äÞíïUÙÄ,130iÔÅŽNÝ•—"xþÕ"Æ^L+ÞÆ‰“æFÎYÛ<µma-W#ëÕ`¹$­UÉÇéÏ€UÁ§í@#¾[*Ïö6‰%g´oaËžÖj*Z€ÌÏA_†«`ê[†ht¬»Ê;°…K!^–$´Š—ykgfÙ}·¬ß¤ÿR_{.pÈM2oQEŒµcdæâEÛ="°;mª+Þ\™!ÂEÀˆüSÊíº!¬@ªuqW“$ ÍW®¿Õ†gߎ=3íýÐÀˆñáçR.øù“¯ÚÃq2x·°LÁ£)…ïóÈœñ—-ü×Þc&®kφ¸Dd-e—Ôœ½ïByû^/8Û…©(µ>EO_d<æËÔØT7¢4Á_t©¾íNûøªvce±QøjaÆ¥ByA'-š¾ògzêÞMÄJ…s}óñ,¾æãöÞG J%vÏõÜ4kæTìÐæ½"òò&ì82k)™3·Q3Cò „ZBf+hèëÿY:éE´#?WC‚¦Ü­QI5ÇTBT~ÌšÿMªøx;F:¯·)cøAù…»öMö1WÚÒÊSö&¨4\ßd£ƒ¸d¤Ïët©œPÌЖã÷ž¨Çkõ½Ðºg öžäŒXXš~QQž”Ñûñ ;ל°)ž{_ÕBi-³Ì…¿LÌ7œQ:…ͧ„ùÍD\ïHðŠgZ϶ÐÑÑ*ÂÒât{iºq;|t ènCgä”^ŒŠí…OñZ¨öí…8éF‡™&\Ö­Öàç ¸àS#º‘2P( M ¦{|Þ~˯"ÿ>}ˆ;Öza ƒùuRÔíW%R³yÜ^¦:+U{Z>Üч‘ÊšZrüWÒóa´‚$O¡ìx€ð°ì1Z¦CÛ}âò¹êkÞ[Š‚)³­Ob©êDÉîŽSo³p“¬õØoši¯Êgà›K0„¦é¾ÿð¿ëå–íA ò½|o:eŒBDöæ…E£m•…7)ˆ§þ›³Žê¼Â0$èxK„Ôý¼ Jëà +Ö Î‚z•Ù“¡9mÑ +ÉSõÀ*JGd_}yDEàÛÁ¦®¹ñôïjdˆj6 ¡]-èݤâx´Í#“ð”jD¢ÚP¦íÄ»k-o†×lZ(“¤Ô#+»ù*ù¨¢ðlÉiŽ„Ï'OJgÍÉzÍ h+ë·Rɦ*»"¦Xθ>'-ˆÞZtU¦õ&ï»Õqã4Á¾ÏæâHYj0¶™ «`ž]ª¾è%ð‘?¡ªÜKA}¼"M󳯮Ù¾­Ê þÒ;3ì·£á80î]ß –Á³mp–¼é¶ë†eý¶á¯~~Ùäjy¹]ˆ|N+ÿB®°s[tÛémåy=òXÜQæ\#cnk8Öð,ÉŒsávgÜL²$ÿ¢3¼O?¯s#ÖÙ[jð ç§V¡uº*+Yã¾æ&¿:µãÅíõyBüÞMý;ýP©ñ$ŠŸíÉT8¢–m¼¤i+™¾˜‰zã_¾Eìs>dÓn3j…}x¯üò<~òËt%."Œ%Rp\‘'¾§'ƒv¬¡ùUÀ˜„$‰¡üA® ó=—ɯ îÈæ>­½8ðT’#†³¤ ¨ÏÀ³`”O7P÷›]C‚¯8}ļd¶ô¹®u—4‰åÆÒ¶Êrèýžq¨³ËÌ »1UEûÏqó4ÜÃ7:†¥k¸‹D)ruw}jåyNca’õ`h_[D}S¼½tñåˆ!ôV§w¥pFÔÛŒÃqºÆh`qÂhe9q'˜ùúÝ% pÜ÷ðš‰û†æe¼*QÒ›WåÙ¿g}I c"@6=þ¦¹»9¡œô=4î9ŸUŒ<4Õ•,SÊ󄲉§¯ìai6þ˜(½yâ*üúÔÌgÞ-Er>‰±q¶Ð£,«¨0W¤Óx- ®nÈŠm!š¢“lB•$.”s¤a¶¿'£ éEX˜ÑŒý†7Û_£wm ÙÉv¸ÅzZ±ñ‹”5S²”ž¼®NUË·¢jº`ŽJÈkµÅ,Ì»]`-¿µ½Ðè´q³¥ò©Ý³99ž}DV÷€šuvØ‘»ShÊpó:ßÏ >F,Ÿs½3)žV˜Ý¤¿­Ò¡­3õ8Ã%EícØšÄ{1\Ýé­¼+)yYY›|Åö‰Â9“È%kJS²vF¸ï“çê½áüý¼±9s);U=·Ròº2&¦<³ÈÞB²ü){¸e6–ÿ)M†ü;ØPÊÀô UÜF«9C§&4cy ®½E˜²ï´†¾k†™l[P[æ¾¹è+en‡‡5œ¯ÄåyMÁŸ,óÃ`ýð7NdûDæ–ZŽ&#˜ò^æW§ïXÙŒÁHóa·‰Â¦ç-™˜F¨°š8"”aìOmpp€`ËïÀã/èX Äv|%K7 ŒLyvô®ÐBtÛ™`>HFGAA©â]GªGê›”ï›(¼‘¨Û$µ.›w:?ÀæC%e¹˜&êfèVR¾©þ¾ŸeÖ\ª¬H˜fêmæ ˜%¿g?«âÐNä¾`ErÁ™Ø»ë“ ÑåD"ŠyVE{W±­y·è ¿¨ózñ‹hQËj$:Öð͆AË›ã·aĵEOÉÜÅuå´*|îÊÔˆŒÒn1ÈQc!°ís•ß+ü·’LK=ð§õQãLšìPo¦†€±ß¿WP˜¹l‚œD˜^Ø‘ô—gqîõÅg&èJ¬†–îKq?„©Ž5nÛžóZžV«ïàëòha·ÌßVr–Yr «$¶pJJÆ ª¾s£òÇiåîž7Mœ#ñƹ»SïŒj½¦ñUÚ³wÍ)õ'(áú’§c8±ÉÈRø&Ôì°œ |]Ï~ÈÒê;º8<×k>ûPçýµJH(Ëíøfµ}oÂkñ2\èeê<["^Jg=2l#cÔã+] ð×]½}e—•‹ZIÞB[ ×ÃÙá3@$dè 8ýZw™Oxd¿fœáò~T Ï8MÙ»Ÿ_:i° g–f‚ovMb,´¢KyÔ¤ëòåg¢oßËÀ=?£iñÇYòRÔËä3ê§OÃ?ëÝû–‰ÑŽ#ŽúÇ›˜–ºÕwbšuû«£+¡Çóà㫤pHkÑñ‰À±èßûaš&"%â²êÛ¤Þì¡ñ›½@# aŠr¯p«©ßd›|Ðy½kڲ̕§…Ë(ËXþãYæ«ìå$Ór殑…W¾Ÿi {Ö^–äìÈΩ‚vÍŠ ë Ú•ªB膾ãÁ$›ðn<ÃaeJy¾Ò‹Dúr!òÞUtå×Ì„¯qMvÕ3…qDš85hçDQÍ;oJªŠ ÖÜŽ)/>ŠÀÝÉÿ¨ŒÒ©™ )¹jIæÕÜê¹^ ¶®QÍ©“\G•K#ä«JúR U6"öÃt^n[CŸè#Y®oa­µ .ÿ®|ZYÉSľËU€&gˆ†}ßT޵PÚÙ6»”ãG?‹cÏVs¿/ä}òw÷ÛQŽëZjxÊÃÉ( <$®ôï_;$,â)¸yDî„6 6}›‚¥á:e‡•Æé’Öïn¾Å§_7’ŒÂ¾N ÊCd=ö o`&ò+' #—Xû´›}ª´kÔ]K -{]-¼ej¹ûHéöEÿ£ŠÚ|s‰°$ú4þð²¬-œDXj ­) KŒ¼¯Tô+ó±?N JË ®ÑÕV[ÝRâ™°Î#ÏJ’YXúhk!iœ w:$%'¿¿õ¨îýñWÆx]Dà÷4ü#<Ž eX¹|ENËrqFj£‰}?½Wr“)PøTA²j{áüTe«š®©eNqÌ>¼——‘T¬Ú—€­†5Nì·`$6ΑJ5BúéÇ5å÷’A¼¦FÅë~ [ìŸÒŒ…c0%Åð?JçMGzÁ?ÇÐ÷*½LfÉ!¡Ž¨‚ú0ŠÞÙÐj_ñ\mÈ}àÂ:Ûô<Îï”,CXÆ/â%)ïÿ*#ˆ¾îsY²°ÜžC½nצÒ‰…"$zf/-¯fƒ6æk¤žÊÉ>»(ùœÊ±Â¿`Åù ÍËöœå×{~õÃVx¦È'rÕÄBrŒ¾d<ºw8ÕAFwÑÝ.¾p¶4Z],ƒÀ}å¦z k&F0¹"äCs0[ ë>†Z‚ås¹`VµqÜØed%ö[§X†L‰Òi1ê4npi©âú+ü 3/Ëã ò7²,¦uD]'jq~°óYÕe4·S4Ÿd1(ÕzÍýíK:@¥C3´ø×&Ç4Œ¦‰>Ê7Þß§k¾‹‡.ÌN¿™çV®‹óLùIú…ˆGÅüžV°GFÔØóEN~ÉúɤöÍUQyÑÌ5Ïä^âùŒ¢1˜F&AëãÀÏ×T¯áõá^'láx¸ˆal’¾¿^ø–ÃDfúìß19òÍ­ÓO<Cƒ‚¿Ju¤êà¶ æÃîäFq÷ñ‚œ*ökdóùЇÑð2“BÊ4O6ÎDÛ0¸,ºaQÌdà·Ò†isxM81–¡ܧ¢£Hz‡Üþƒ2#Jk±2ž–›b_Ò¬³ª€:ÍÌ éjbé\}­ÉœÖÎqYÇ­: 5C˜žªýD¬”ùwݼ Ö¬ UåG—´Îw“ðø#f´‰ÚªLsÙ“ˆñg^{_&9šs:ÌOûl¤éâ=ÒÚY…ÎÔ~Hvr­#_ "†”ËÁ‹ˆ5Àq¦LS\Å•‰±\—µ^€Ÿ%ol½ÈHPYx}Q·©ßÙ|P ³A/òWIóf[º[Ðö8Ž,L|© t°Á[êIp„ËGË¢üäÑá+¡Úi°± ¨Ê¡£ªsPOy8#‚‘ 3S,¹»Jä·~Âè¦juçìS`áy[º+]³mÙ˜V^©\Qu‰6ûÃ΄É{õYÜR`®8˜T¸k)“¨xæNVú¦YŠwìð3ð»Ð%TiòÍ8Æ^r•Ü­qá ŽÁLj«.îšyê>J·ß¡:ŽžB\\S°`à‡O *é=gñy‚”J ¥UÉðQå3¬ü}Jj•–fjç³e\g¸Ç}ß|›Ûµ‘cÎç4¬»×Ý÷6Ã1>ÏÉŽ•.è yö8!¬¡>á»àð<ŠÀz<'YxMñT#Y¥ûtÑ’a®šáæ§u0b7étùB[{Òt+d#í:mA¼˜Ý…:U­‡Zc<Û•Åîd?«´ÿÎÅ^3¦úS|2Î$טOŸº5}תX†šïýå‹jÏŽïc Ì-¹J}Ü®±p5™J]æËJYã²o×BS=x=Eè² ‡«bFU1»7³ó(^Ñf|{i°d¿'Ýsƒ^yû³ß—}ùmÈ~%¶JOIÿAQª<›Ê¶swß_”÷ÒÜ;#I ÜÂÝ<ŽÑúÁDjûQ {ß»ö‹(TÉ›¦ÙÏ£yy·³ÙùK­ÛÈ™4TM&ÇÃÉöûg·„P×ûõò ÜD¼È8º*iF ߈cuõ}ªLÄ×'âqxš6lŸF¢M­ßg&^^ s·™âQÌ8ÖÆ‘'YÑ·†®p%œÍ0sÙŽ´Yª²§c-Ÿúé—^¹Ò!oTþ lÂø…O-îå% {ä¾»¨Œ¦ŸSeƒ©oˆ´k›Ê‹¥KM:›­Ü"DëìðòÃù³/eo@JÜû—± ?zê¡Ú}ôyÛq· uÑŽOO¶Ì˜.WîGŠMÅïò•¼²Ï8Ê[•Jß!‰• ~ú—î×R¸^Å»ò’à;g¹²[h,°Ékr»5fß°ì`õ5Á«Sèª"óÇüB1£eDGt—á€òaIj'GSƒRÍu¦.´rÑ©Md7Fn‹\)Km!e7M6ßnÄž‘ùú»xâ­“æ&¼÷J´tC d îXͧ 0Ÿþš ‹¹G¯Fp?ïîg½T«ù÷V3Œp„%¿™w¹ÜÅ<Ïùh—'?([K&J¾|?ënÍ«´|¯iúViÅÌ«¤éýý·]àgËaìœiÑ>b[í¦ñÀ%òS.nMOl±Ô†ó0ï|ŒpB[ái™fµXßC Ÿ‰“N³|‰Ña¡B¶f'(*æ¾S‚ü³Î2ÅñrvŽùQüxk2¤‰žÛú”ÔÁ°LÞ,E¦£Ï²†‘.ÓìÈȦy¼AÆ‘ûÕW®¤Á¯Pß Kë0»È "h«%çi™ŽBAƒæ…54¥ò'i9¡NQmb~{ºS|Zx{Æ•ä8'3Ãþ_¡]·Þ×kª¾£¢Û‚ýÂÀeɧA~V-ñøœ>¼›BRҕع«}ñIÒˆ$c™€8lÕ¿³b†£¸)‚sÁùikN׿Ó*¡[9üø«MJ2€Ë1MkBÒ²&Þøë ½rѱí‹Z@Ú7Š˜ëO£x)i5·À ¬SܽË"?_$R £lxýš ˜® …Åiì29ÑCBé2ßÛ±þT°E¢U[Ô¾î-^)žjGïB}@ìãù©¼˜2KmÊ–yì¶#qšoµÙÍ2\¯,{$l-ô:›§Y²Ïç!meÒÛHkÛ”í)èñzýÐgR2¥f…}•Ãö½§CIAÏ­æØ ‹ÃÀØçy¹6%º+L%Ãuofuâms?º¨€¦4ù©|öò¸µ_–”.MFÒºÌ3(_×LDÇ* †OIæÄQ'c¾®êÛz"‰2(&°<¶%]l .¦•‘×ßoýVj/›é¨(I\u+€í&hÕ^‡Öä°Ô1ȳOÄþÈþ²_ s>§ö0_ÃAYÖ1j#晹ºšüçë(× L¾’H1Tà‹”«Œ”KŸ„¾[GYh‹¯»ÈqiTCŸ˜S1]Ù>~ˆË³s[‘Š™y)Ü#ªgjÓÜ„·\^–aä½ô¹{4À$ŒÖ •)']î\ ˜-wˆ›8l/Í·‚½ûþ:yëºNþty/,áBÁ(É-ïGvy]ÞÜ»°Š =%ÿyùª-†4Õª¦å¯ùâ×û—Ksyâ,:UÉ‘˜døG )Dàé=õ,Ш`³±/ûFꨠæ‚È[|0ÙÞ¨šÉº”`öU¼¨¨7$¡&Õ4 ”Tsë`ijÞ9î˜}ë¹Ë†~†6 cl†.ã’OmÎ,f~Ô±¨Lìá2ÝèuÔ§'¿—‘<[vª’ty±Y Ó‡r‹¿Qð·7§ñÜfÏm—&€—6a¦«| Ä{|>iе4Ä>ªjôнv“§(½2é2:×sÂLXÐ '”3úYž¤Hh9Ì })†«ŽŽE{ü4· ¿­Ì‹k5ŠãÃS÷<ëÁÜS ]¿ñ[ôÓhJ:¨~c*ìB]>ïžnL¡ô2UϤ¼Â´=R+ R¼‘tûWŽ@‰ h~$©*õ¼ã/jlOvÈ; zƒÊQmzèÌ(äH8;T»òˆÖÐÚƒå»ðì&åT»âUgízÒ%·gYéYe3üCÙi•Þórƹ®‡2L?Ë¡t¦OúSî‹–‹Ž VÆ °¨Lä“cü«$8Ïàðrè.d ÔC³™ ó•Ù\8V_ûï­äÄñá6jvCbL¢¹FòôZ:âûËmÎO˜. Sl™Xòš­ïóȪ8Y”¯¶ì _¾Þf&avßlQóW³4_®)ã £ÑWK¾ýÁñu±çŒ®@ 9µc“P³ËTšC‘ýR°| ‘®»¨àú iÎn‡#诉ožõ>‡P•¦Å"ôÈd_¼Ò·<Ø F˜`äÇ2‚| ³ƒà–*Òù}ÀB2qM•8TjTÖè¥QYNr¶í¬ôîOŸ4^mÒöšcÊT:Ã4ú44‚l«‡m‰nþ÷k8"˜(úbï)M{éç7ë¿S}@çioÅ|„iÔDvÝ›«aìÑnhõ+óX‡iq}úxîAü^Á£€£us'u…7\ãÁË•èhò-³*4䵊{Ô. †m[–kÙ눪Úw§š:>É­~é­G˜ÞÍs>g„…‹P¹IDÖ£dcàwQÕÐD­Õs’bÈ`G¬Ú˜ü)¦Ùú8ðᮊ¢ÚDúHÿ*Jè,Úƒ€} i_…¨C'¶ÊF{\?ào_p{ø¼âWõúU7:äê Å<šiR‚æºidGÉW mQ›\ëÔ“LT¸QÔUEL‘ЉÉÝ—á7"i~d3‡-Fa¹5 ?Ê)\'âCzÄÕxÚ Ý‡îœ8:¸‰©ŒŸF>û'P¦ËTGš46;<²1gÈ4æ$ýÞdŒ#ȺÊ/nbÐÎ3ã)¼²®úS,Ó𞀃W„7ñyû˜ú>’é2ËÝÒ±÷Ç ‚M wßàïYw'•kÔŽàú¾hì£<_›IoŽ!:†ÇO¸õ„ïG¨í&è¡ìòUX©Ÿ Ú9ž}ë_c”Q±9PgW>¤ëÙ$x¼ ~Žκ{» V²Ž¦Îæ)²ßöòëCßœtqÖR1ÕsêRª²©“ϵÓq©Ðð]Ú¥nà;œIÀç «ª \/ãÞGzv )-#Ðä†í²æ—ΠпfŸÐ±#úì£h6÷Òˆé«!‰›!į¦Ü“®qÕì­ f%k<*VªsªÝc’c&`èâJ½„o ÷`ìü$ã™ëþ¼·‡4èÜÆÇ÷ÖjaÓ….ëbg/ƒ÷±yx×Sr ¦¦I†í‹ÆÜæFDP-UcmF§d Këcy¼”2ºßÉ“wkÆóÛlSÉŒ‚ûîïܦ1«6à7Ó¾»i(^³Â“…ì£*gQ÷ÍG÷݉5û]Ň9Y×o^Š¥3rWb¥a,QHMðÙ;Ì-¡¦‡«; ­ó‚U˜Ñ,¥è‰Uí.}åÛ\êXkH¢Š£-ƲhÙ­¹ÍÅV᎕ѹ‰H Š"kNX•XÔÑ:A$Y¯ƒѰ³Òq”†Q¥XŒ„‡Ø¿ë“h’ŸÖÌõKÉÄ[(Š«ŒxP›Hya Á_§eé<ï§Ü™”ÑzNJ^qsŒ§óc¬!]—4@¹$¯¤]Ú‰5гH÷³‹Ææ¾¹èôJêTÝÖÿFω]ÚкKq½F#æÀÚ'±ù³OÿÓ’E@q^ô<|üít‘Y N £>JFåš^×~RB×W­ïB9ZâA¼rÜ@Q2/Åw½ ç‰Í<2þPÏSm˜‚©=:”»ªW‡[«h¹¦‘qÙnÊÆš ''Ð Âw‚ãü’â .7 à’Øñ‡íi¸í/åUU.”ÂU`Ïjò£V‘þOlZaÑM³õ°â¶ì"BwÌàŸÈ³Š 1®»FŒg<*]¥˜-o]XL®hËܸ-Ãq˯Ýzèª4àï«k–òû>ÑeÝ@#’äeâÎ×Ç`“´õÞºùD9WÇÛÇ—ù,øeÒ«ËrêÔÖ \eXDKåFž)uRÆ<$àBò‰¹ùO–°`Ï_Yè1‚*¡‰‰C„å]Á†ÊÒlwøÊÏѹ¡|ÝWÓÄd´„YŸŠœs¨åüâXp3ܶKxûB}¬ûyëò‡õª]Ð¥õÏÍ‚3vßö'd€»'Êç¥åŠÁH˜Ï\<^¤Œ$,]>#·ÜXú Ò‡=ݲì†ÙWWbàßC0t§¡Q( ¼YLbïq;¥íw#”ê°ó§Ð%$~ÀÞ·}L=_]s³NNfo]ÑK"×!,“—¸œ¯ŸÖڇ勫-tiQiL { 9Î+gS…àN–8¦xDo¦=ÌÏ›_â¨O­#‚w+áz·{4»¾½T÷´­£ß…~·.8'ûö”òUí÷Mãú}ATc†¾D<å膯£¶VwD’ä!X‘Ê|ÓñíÆPï¼h 7 I>¤¹Ð2}Ò†[¿8–"){+Q¢E 9wœµ•ôÎöÊð·Ôñ±ôɉcfÌ^±Jèý²ˆN2“"‚d‘+Œ¶˜u@ºØ”!G.#Q•³wˤ¶á`ùe²pðÄâ ¿ìå27rZrfe‘úyè±eÐÒ {7³¡šˆ"þ•nâ÷¢OæŒèm½»¶FãczÏ/¨uœ­dØîKW­ÈgïkKáÊ©®Ä]^?‹˜¡†Yú’O´kk`¿I:Ô"ºzëJt±…­Ú˱}ûQKr£:òVæ`{ÐêÓ/ÀCÔòð…P-¢ºaì¼hعž ÿn È,«‘ø/Äj+çßK¨–B,šÈ⺟E¿=sÒZýÑ¡Œ î㥋S8eZ ™€‹ ˆ¨×V;¥â ›ñQLzS…m܇¬€‚r.Q3|T%QEàj(õ«Îú‰ssöæ x°d˜¾þ»ç7/¼9Ñ; ¢>æIKþÂx¥}ý7TâtÐTôÇ;åéÛy5÷ðà¯UDÛá±Ù¤÷Jofы׻cÄ^2oè ;åeŒ‰ž2ò ÅË2J?¥>cOM¿+¡xeÝʧœâÁ£n5庅ÿìqïj·! ×DýtY"Yóð¬õRùGwáX°fÅÃéS zT9‚ê«avÁ¾÷3ðîîmìg¹…5zŠÄ=6¶qîé3 n­¨9fç7*~{K½˜l;m¼ÂCÎlû(3Tc(ßë}ø.Ï0Š7|%&¬¾œ.˜-~ƵöZëêšœÚß½ˆÇüêꚺ$wû–¯ûp%BÖœ(˜ÆÿAJó‡Fy}çT –ùPžÓ{ãé³À+ôG”¸³pe§S8Ÿêì³ÑròãÙ¡O' 9o«©Ë‡‡r6i^›QîÀÈ5ÍV¼›où~ëÙ!ò/h÷vF/¬‚ù\°;¾;œžŸ½i}¯Á³‡:Pz/7"ɱããŠÐPÀ¾¸ H,§*Þ.k?¥¢ß î]÷™«ÅãÁ;+ym ¬lê¾;3â®ìÄÂ<¸”Ù½ŠZÍ„vãlôr 0ІöÐîÌÀmȰ'Э©:PrQ—:°˜“€ùHKF!-®+'soœ vzðÂKõ®ôXo([-Òm蠟K.Ži8»QmØeÆhšªéß|åÏ[à1Öó¹Nj6ì#ÎÃÔb¶iΪËèâ^§†ÆÐ†ªŸÖ`,’ɽã'qI;Ørƒ1¥Çé¡8LÙ: àÄÇ~×û$*Ë> @³b:øáMÎ/†k…»A"äYHIÛŠBÂBÅnä5tÁÓvH•ÁYß<( Qw2Ó *4|GøÆ‹ÑMŸ —þX¹R·bÄ £{Ë®\)©¬§ÛÁDZzQ¿hÐ^ï×#TcZ£±û²àöâÎÖ™Jñ>>ß¹¼Œž½ûY”ª‰õ«ÔÐnØ1±ùN¦kÈ<2é¡’¾ð'ÄEá'¤cíÙø•cÚZRªYKÇ¥Oߟí³*…ž“kÖj•ZFxêV÷©îˆŸ¡ö,éÝë_‹ª4_uÎ j ì ´ª©sdb§ Œ¥ÝâM‚îg¦:@©Ò/Ù¾nâ^åä±±7hw$ˆ‚‹¯Ku%•äÏøhä¾ög ³Æ-4 ‘…’ 2žd ­Û#ý_´³ýÄS§¡«K–MˆA2aßwzžÃÌ«– Çÿ”ºþq¶>ó:É_v ±>KA©àÒ™¸·ŸÑ¹Çѯï6‰ ýF@<”…âÔZð~£ðá•«òž*(¿v×CÀN'8;¨o×úkDC‡ñ¥ÍÖ]øÓRQÏ:ÛÏo{ÒMmãážQF/òéSœ7æÖP\K>hgXÐ~2 ÊKHL@é´ØþÚñÃæ}†áG娬}•oÀϬb[ùë`éwzå¤ðe z!#bW)‚wnpF¥,œŒ´3é€&ŽŽEãþo_CK%ž¸Ìl÷Ý—?­™ø­àžQŠ1x™»D¿~&áMà˜N^“€a~hÿѹµÇÓIJE£±ðl-±¯'Ï@޵p†ð°ô¾‡ãyüLºo²”jlO±k6ks|Ö{è™ÕèZˆ6ä¸À­‚_Ÿ»Ð<LÕ—™ú·7L{o_pïY›Ùû¬³óÞi ‹§‚çéž+ö ´Êkùhêå5¾cð©ë+×|U.®ªEŠ‚ˆ´Ð£éED9k¤NÅdå D™·ëV[é茸æ:‡”™$2ÇÆ*iì~L·IÛ}Þ,°{Ì™«ÙnÝ,ü6ÕƒmxÔq©P_gCyL`ª[ù†¬SÎС¤÷€§ô™ýKÞ»åÔÉ3«éZظ/Öå5Î_³lS ¥×*ä*/êœåQp‘³ hçkØö­zÜÇ͚‡tð#…¼X"äÊÜ¥s]¸¤Éåw_ŒWTÃ'œz/„’Ò¸óö2ÞnÓÖÑšY#_S¼`?榖PÓk†r¥åewœip} _8ãtP2Æd½ˆ¾zñI¦«,‘½v(Ts”ø[Å,þZC OÛG)š· - Ù9_q6Q[im$÷މ;ÄsG^¥ HE,kÙš¼Ìž%aìF9âà#¼ýœNYTßøæ³ŠµÛ­tb¸iö¸èÑñ£ùVpŒ•KÈ ¬í­ Ýôᬖ´1N¥ƒå¹tN¤UQQL0ð8>pWv$U5+$³úH0Tn‡¥<¹J&ú½)nêCG@ax/}þÖ'"Þý…¼- OôŸààMs·;ñ˜]eòøÈ‰š]äðgÒŸQÙ •´~<·m¾…„7õ/åßÿì òF +í.ñÍÄJJ€+èÒÐZÓñ £öW¦’î]+v/ â€Í¢ã9­”cO¶¦–µ‡õ¦ªå ÎXz'îüp0û–̰Ͽ¹"a@çN8`–¿5ìƒ-ýY¬aÞ]€™í<º¯»I õJþ¶×ç‚ÛùŽ>ãyÑè‰ä©Ö°ðcj…*:#î‡O"\Ew1!|—)/_7€Úûª»2.×aÇ[ƒQùUÌ$÷D±öwÌ@.ÕMb!Ž+êà ÈW½J’Ô „¦¦©8¹šûl:*¥oT!hžîrHÛBW¯‘y«¬t{»ã÷{ÍËû4”ýtlÀ\Ò³„âíÒ3WarNÉ/}̻ۃ5>-äNiøÏjöŠ˜à¹ƒGØhÃ8&?}%0òöê´u“ƒráéOÙ]}§„·šU•ò³fýsÇèÓxqñVRkžxÒýXBQ<Ç:´›ó&ùvà¨[ú؇B·H#xwA¢.‘âëpë‚› ߯cÖè ¸9èÕ•œ¢lL“=x¹í’K½7{°°2‚Õð¸ý쀵%Onü!O=a¸“4Éîds†¼Aã×í„JQžô¼ØTlÑÐqOD#ØHž\§Af§€´lw8ÒZ²†»pú0& RR$༸hÀ]†?åU$ûm˜2US‹O.1<ÖÉAÛO›Ö·Òg:t+Ü8¯æÅjêp£ñ„ÍýàïñÔ’\m)“¹OŠ»k™púæ3–ÏÌÏ%êE?ñ| *¦ŸÊ)^0â|zÑ»aåS牼r?ÕvFÞEþLݼ—†;Ɉj2Ô8:5ro„àYO°?û%ÈË£ÑVýÃs[VÝ5ìƒn°"ö¼OªbÁ_ÊêB7R –k®ðæûÏ*Ám¿9ÙHQuËIÀ’|fµÕ¡†ÐôhÞ¥ ‹^)ꆔNPÁqŸt³/Y²q»i.j»är; ”PlV Ó}ÝìK·MþÂ>²·O„Ñ|½Y¨ÍßKlн•ã;Q ‹„÷ìpžöà)/^Û~dv§’Ì~ñæTV3KZ1“¯O Û&Ös­å$‡ÈŸ\TSãBs£±9¦Þ6bÀ’’•Ú¦ÛzPFž8é¥Î©K!^}¼ˆñêžââ{ü” ÝÉÙu¹Â¡ôê>ì­ZÍÚ€¨G•a{Æ5òmß«ÅzS"¹`»e¦De‹°nh[ß[ËâWj2zĈ‡¸ð ùÏ‘Åò·¸?¶?#·%Å-ö€ö >öˆ ¸5Ò¤° Ž fâjï¹ß¿kŠI-ؼè5Ö ÉQ`LÎ<ýü±¦ÂêÇd«¦Ö²@8lþB!·¤÷v˜ZQ?Ì=b†*Êå)ÃŽ$Tvü®ŽÅ¶Ê™Ø¨,ü;Ð$Bð*¹Ü`…WT+÷Óê×@Ýo°jDÂuøçèç“uÁ¡áï({G^àßöd°8(Gô¬Êx¾ñ ê™ÉçY?ü&º^¿Û3³Xqȯ¤žE#|>AÿŸ èóøE|ŸˆùY¿Y‹üÚsŒ øX‘L©Êó!O}n'irp÷ˆ{×iïº epÏDµÕâä‡Ttz­,V/Î$:߱殺¼¿ì1¹‘!3Ÿz¥ÖQ a½|e4íG÷yï¿Ü4À‚:GáŠ@Ê‹ ¤˜ÝoÇÈÝZŸ˜žÓm‰g‹Ðöd·”Åk­|›¯ÀàÚíîwËPä¿aJÿÅkF7Ì@üàb ¡àYÇW©-_¬oÆY‰*ØŠÓGL÷**ê?ÓþÜž7FvRÂù‚†¼JP‘L«EHKŒFB¼Éòø¼”›dÌ5ó–ð"m "Õ¢,á žè3}äʤ\ù‘ÖÊ缡ÀPg§¶nçöØ’޹[dY‚Ÿ}„k`&Wfú’mìÒ‚JŒ‰+}Ýpo!zÕϤ®Ô8+ ¬Š³e_ Nà1½6L77Ü i‡sÌÝhwýF„ߔ֜žqLÖ'Dß—aBó‹™M“8Yué5þ£ß2vr<0BÈJT…bWº¡§Ø)ïůÐxz{fR’bŠUÚ 2–Zû) & Õ¯çÄD;fC ‚ô–È’) ³“аÇD)A¶w4-–ØUdL¾SDa493ó|Sl*«|üÁÿœÿ\£iŒe )á(ÎXUD.\æô¿‚erÚØ­Ä[áQ^I4(:„LwË7uä±j–‘YI šÅôýÚ¼û…Í:eÍV™ ©’êê’´K}ÉGDKåC±Š¯Ü5'úcrß‹S“² iœND$rnhâéqGý´ç GuzH† ÿµ;òÃ=ÃÊ”y\ ÆmJä6“ÊÉsUö…ÒˆéÿMëà@ze‹B_H§“‡f>=ªo âÄ¡ hpI$ pnÓZ¼ä‚÷e˜Ígõ´±P½¡jïÓ|=¨>SvC - ¤îÔP¦MQ†Þ7}æÉ?–_qS(ĈkI•wTÊi ˜÷Å·E¥Ù.^ûâ¿4êf„o»ª‰vq5¯¿Q ×Û@Ÿ€´=©G=Iß²"êö'VYÞPëDòʺŒ¿íŒGTOm´ëW–x-,£îY¸s ¯m‡ŽÅ= ñÍÖ1Ç9†Â¥u=ó¨¬n=lë$©$P0äA°D©a J%·riåÀ‚æÌ*-ãhŠ1áWÐä3dölU>{r7¿Â¸DdNNKˆëk:ŒU`±NKô–ºý×9· θíaÝ0oiU¢nYõÍ+ôÕzèäýÞ3vB߀tO^UˆUWI‡}Bl>ÕdØ]ÓËþtY¦Ž~_„Œ‰R§/¿jMH2ËØkts‰ú;דäŸ.—R~ófd׈£øŽ¬ óȧq87ûj_ï:ŠT¦&… ñãE•ŠÄh-]Vµ¤ÏÌE ZT0VíÙ”ÂlÈoìþC[áë”è8®9‰*8¤àÜã¯z¹ .ñ«3r‚E¦A½b2Š¢oH|ùj½ü‚ˆQo>@>&¸5f]··õDQö¨î$æõеäŒX·´ Œ™›GX-‘º×¬i§ ^—v^¼m˜Øú—>Õvà"jœ5$)!V2꬧›OKÓгÿŽU>d)óÀ1uŸô|±šcY3Ü3 »¡R-ùEo…å€}&Ñ+n Ÿ(ÙØòH²4Ð@^ Úp6Ä5gmC²¼µ5(ñþ¾ úhU£½’>U«¥üGàökë)š=>qmIʼno™.4‘B¥:Ò¾†”pÏé*I‘6„’p€-S£B*kD†×úI8qK›±ûkÜp2úªSˆÜt:ž‚©³dC~n¦/° ‡ˆj¶ª‘#$&à b#Üþ_þÉb—B[ËŠ_>2Ã×½Q}¸Ó·Èº`íjÈÂ"B‰Ú$ž7/…GÙ¸tévš`9´Œ˜g–dËÕvè[Yî\t¢]¿e÷4ŽŒ½pÀ?üà»Àš7üŠèB¨ó½bšåºiŒÉâ2q@œ´qIŒ$6¾ZSwobo¡’aÑ@ŸA2iÁ[Ür ÅQåÄ9=5(õ\$Ä'vôêmªê ‹)) Ev!³àvu&òÇñšq•é’³o,Û>Ê^)0n"`¤F(ðNïK а¾{–PˆxíuÉly«êÝ,zLÈÖê®}ÝŽ¤JvÈÛ“g‚ªæøþ%!P•5¿Ãf×O\ÉH¾¨)˹[>º©ŸÅ4˜J¬ t)1l[Ðôã\`òí¦]3›­M‰Ã›î”\«uÙÖ{—Þ–N´¡o™^8+È+4À)¾…;ê~%£Ñ.뵾̑=÷ÞT¼Ì£S`"'pÕ·›^¯•Ť½ÝûEÊ[û€wù/ ºÃׄœº=ê0©ŸNv1=¶W?PdÃæH+Áx{+ón|u†Ø®£­º5=ƒ¶Fg-û-EfÔ8MK’´,\Œ'}!Åkn‰ZeÁMCgo"×|Ù"Ž™X.Ü?ŸT|;ß’ÍU[_b:ýÞ ƒ†`eŒ\½µQc{ æÔ!rYùà/õP¾5ºÉá{æÊR6;Ž?¶U5ÕÚ6U‰¿ë õV·+Ã$.Œ÷òYQ¥"%§n+.S#O ŒàÐ"aµdªæ¦ToÄ\ÑUÊæµÓOtÚd”Ú•A‘q É´u®*±3AÊÓCa¿ú£î·¶ÄsJ4×®âó->÷¢RÖ7%=œ¤›Ý–FEû³* ã=§÷5ù ビ ªÆViwc¤|^®‚ô Ûê\`ÆhퟄâJ¬r)†Rûƺ ±ÊÁ…ƒÿÌøÑŽë£½LFF_oq-7ô¨«´N?YÈ(–…nÀ½Bú+PŸÏÁkP¬äÊÿ'†aÒñûJÂØ˜„䌄Kg·A®•õ»¤³OŠù1q<Ô>ú•Ïý›æ"æ ¤~yïu?o†’Êh6øHT1U&É¿{-§–lJ¶õ™wMþg1sPìœA½hãéÂåPT¥æUï„Í”ÕU¦ú‹‹sònæ6Câù6ÉÔ;‡XóH endstream endobj 109 0 obj << /Length1 1414 /Length2 1899 /Length3 0 /Length 2809 /Filter /FlateDecode >> stream xÚT 8T{OZ˜t»n¥P9Ù³YÊš±LÙe)áÒ˜9cNfÎ3g ¡î¸º‘-TR]]-¤Ù×C¶”\¥[²D¤4„¶ï ª[ß÷<ß÷Ìóœ9ïûþÞíÿÿýŽÆFWw=  ©Œê‘ðDÀÚÉÃDˆD}<‘HÆihx@(üìÇiìy|Mþ°æ4óÙÐP è„À€½€ ô’‘ i‹ ‘‰DãÏ@„gØÐB à„ìäã4¬n d¡XŸÏ¯€6}@26Þ¢;›P8 ¢Ó`À‰†²@Ö‘NcîѰoJh›±P”kB …B<ÃÇ#¼@‹Mº€BY€Èy! ¬ 8Ó8àüjxœàÁ‚øsw„‰ i<ÀlˆÂ|,E3@€uÜí.ÏçºÀüá$<éK¹ùlI!žM¦Ñé‡KƒÃ 8`Blp¡:âÑPT Á Ææ#X>-„±i`vt@¥ìh؆óûñé<ˆ‹òñ|ˆ-Ù‘ )ƒ³-̰F8Fù8É|6¤cçF˜¿Ü ÂáŸ-&3˜’5.Á†‚ Í<sá¾úA0$‰[õõ0Cé,‚¤Gœ ’$nl‡Èp.˜Ø`$ı?\8Ÿ(OF†ÿ3ð­…#‘DG0‚q_«cn9gc÷σB"F?@”ü¾¼ýŒ1ŒÀì°¯ðÙ+&89{zx9mž_ùKÐÊ ÂõH€Yß0$FƆ@ä·U\iÐüį™v0Œç†ÅNéóÀ!ó О—Ç&àÛZÎÆ[ÐþJs_¢!‘Ž=Hÿ7ÙgSþÇ%Uþ'Í¿Ÿˆ*`³gãÚs€ÿˆÓ8;lñV€bpB0%ÀßCwƒsÂu€ó}Ô¥aZ Àì/ ñ©P(Èp…P:k–snO‰ÎØ º"|HòeôHDâw1L\ô ìëÁÇ(91í|ÛѦ# ‰ÈȆFÇ£…ሓȆ†@8 S# %1@ÀÊ¥Øv‘áá$Wjl è׬E"ê„À¯&F#÷‹‰Í@@…ȬýÍt‡)q–'Ø„ŸíYÙƒ`(HÇýÕ‰ÐM£÷E—OR”…zý-dƒåõãGÄ2»ûlCwFY›M¿Ñ?×E©¾77ýä§ä󟊃¼ˆA~G3QøëZùbfÀ3݈¶ŸÌg^ð䇪*ï½ú0#Pa¬Ä­A(¶ìØ´F7øuÿýì¡ífš%—ß^b-Õº1‚—[Øò¯¸¥k·nÕ—[]AÉ®¸lu…Òq¯ÒN?nÙ2zl=uhúx]Ù°·¾;_W zz\yxx9×Aœ=l‘ñ¼ÖHÉaoСÑWk»öÝQí(qy´H;€Çõè9%¦Çxñ‹sÕh¯d´¨oGë…‹ägw·‰=ÜF¶Dëú$õãWt;ZÉ\¾ÙË#ß9êª]n¶GÏ6¶í€UàåæÉsÛÔöð-s콪^kmhé|àÙ¦½I?’$Zi4êvŸ® I~-~™[¸86þéøLWÄÌi®å ûíWo¬k`ÔìŠmSÁ®èÛ©»Ê¨Ä甼K¿i5O„5îN±W-â?.xD»¡xÊÒ¨¶GoÓŸºèÚøZ£'Ë:mœå NÛV'ec¾Ã»ôÈíÙÌO*Y=‹Š‡,(:W“ï$-oJèz±Òm’QTÕGÀ¥^y'H=f5Õ¨/:yZº9ñ¯3Zq‰ ëö9u«Ì§ÛHqhÑî…¿X¦øwíkŒÈîëw®K(.>kÈ$)­Ï^íYtAñ¶§‘qÄ;)·Ž‡Ç÷êU'˜Ê ²ÔWü?ôéØI%:È´?3¹fð×õÒ²ï—Ô·x-fL–.×Ûâ’h…‹g:"|gC€å:ó æ*¢¡²[/¢ï^tlM+ýó9yAôÇ8'õž>êIö[J˜ÜT›fûÃͽí«ÞYü\—`{Eî|ëáC9¿Vq 65vˆ¬«]3Êt”ÝiÝi”΃—BÚP¬âç}U&;©ó´AMÙöV=¹FuNiƒÂÚõë6BÇÓ:SB-ïœ]Ó~·n‹Å–’Š.š‰¿J&3?ª»HùÁ€ê8C\üçCT,Ý/eŸÔ{çGçãoÞWàFÕv¬Ò]í“ë±J®¸Y8QÙSÇn®mþ=W|gB&ë\ŠK aÆŒ þ(Çíàx^l²WP|2pý>èð4(ddÊøXÑ:Á[g™ÛÉ\Õz éøè©Èàhß]|Oÿ]&±Äùå„wPÛ@Ëpû5)Z95)xú|Gb7à«Ñ¹Õäó¶nMé‹9Z5Äh~±5}ˆóº„ÓòÛ~|Ú'Õ]ìE6¯¢©pÊË£™AÄGwÚ½ËÈQÊŸRæW¤ZóÔµs,˜”"ÅT)ñ%p‘õù¥ ~¦´”=¥RòÓÒ§â«+LÓUÝržË‹Ë´OZ[ÚEª¡XÔ;E/‚×9†®õÜ-Hr9ŸòR7zeŒ=Rq ”þI– }&ÄKï`^ȋڷ3í1W8M59™ÑÝ:0Ué$zÜGq’\+7—j¶y$K_•ý1ý+ ‡¼÷‘J£¢Ÿ ™ËžòjîV ±~HzÕ´&‡Ý(âø?‰Ü„&ÎŒ¸ù˜??¢Rx¸¹ÿa-U¨æÞ¿ÃbOvó²Ã¯DÉjæb}ùØ¥åï«åm«ŸÁkm›…þÇ®öȪ(tþD±¹µ k1U>>ëÆPã^|{jÃáĦ½Ä—#í·J6Öï fFËW‡Ó·ÞY²Q&(sq°Â’ë-Çó'³ïÔ¬KÕ0(ßëšµá¥i¬^fÓd[ÿôk#µÿ] š±Eý›³2_Ÿ1ë˜ÑûP\Ö«í åÂmXöÇÖ£ò•†û=.Wú$g’-ÜÌ_mQúÇM?Ť2 ¦Ó‘±,¿ ‚ø’w 6½Mvûñç'KÊC™išÔä+Þøìr޹דDÐaÕÖÊV†äNyˆA!`PÚ);ÌZ§xzË¿_r‘Á endstream endobj 111 0 obj << /Length1 2413 /Length2 14876 /Length3 0 /Length 16314 /Filter /FlateDecode >> stream xÚ·PÚ¶-Š»Kph4!¸»{‚»{w'H`Á]‚www‚»»{€×ÙûÜ}îÿUïUWÑ=¦Œ©k­‚š\Q…AÄÔÎ(igëÄÀÂÈÌ “SUå03³123³"QS«‚œ¬ÿ#Q«Av¶¼ÿ2s9eâFN`;9;[Àgk €…“—…‹—™ÀÊÌÌó?†v¼q#)@ŽðÁÎèˆD-fgïî2·p‡ùŸŸ€w&´.ú¿Ü"6@‰‘-@ÎÈÉhŽhbd P±3Üÿ‹â¿…““=/“««+£‘#£ƒ¹ -=ÀädP:\€¦€ßäl€WƈD Pµ9þ-W±3sr5rÀk ÐÖìálk t€ƒTdd ö@Û¿eÿ6 ü§7F–èþãý›dû—³‘‰‰½‘­;ÈÖ`²$eÜœèF¶¦¿ ¬íÀþF.F k#c°Á_™$E”FàÿSž£‰ÈÞÉ‘Ñdý»D¦ß4à.KØšŠÙÙØm‘~ç'rš€ÛîÎô÷d­lí\m=ÿÌ@¶¦f¿‹0u¶gR³}rʈÿÇ,Bú#3:8˜™™¹ÙXÀO ›‰ÓozUw{à_Ê¿Äà ¼=ííìfà"€Þ 3 ø ÉÓÑÈprpz{þ[ñ߉…` 2qÍA¶HØÁb Ùß<|@‡¼{,æßŸ~é×ËÔÎÖÚýù_óe’Q”“Q”¦û»ât¢¢vnON+€ƒÀÉà ðþoE#Ð’`þã)ckfàù;Wp“þ'_—ÿŒÿÝŽ-࿹äíÀ; ¼û³âºÌÌ&à?,ÿÏ‹þ—Ëÿß~ÿfù¿­øÿNHÒÙÚú/õ»¿ôÿµ‘ ÈÚý?à•uv¯¿œøØþoS àßGVh r¶ùßZ'#ð1±5·þ§ GIÐTädbñ×bü-Vû}ĬA¶@E;GÐï;ÀÀÂÌü¿tàseb¾7Áûø— >6ÿQÂÖÄÎô÷ùbåà98¹#1ƒ×ˆ•ƒàÉ>ˆ¦@·¿6ÀÄhkçv€«ó˜Ù9 ý('7€Iü·èoÄ`’øq1˜$ÿ “ÔÄ^¶?ˆ À$÷9åÿ 0§Â?ˆÌ©øYTþ v“êæÔøñ€‘Ñ?ˆ ÁÈÆ¼…¿ï‘lÀþFŽ& ÈÁÄÙæ9xßÁrðHAŽVJýmìôÇÌhü=ŒL¬­-þHÁ•˜üƒ8À&vÖàÁý‡ý·ÄÆæOž¿'Êdú/î!ð'ýµMÿ$õ[ÿÉ|þ¸€S1ûãn˜Èå_¿ÕvÎÿr›˜ÿaëÍ?FÀ›€ýS;¹Û[mÿe–þÁµþɉ\”õï¥ü£wæO¿YXÀÈ8À£³/óŸéÉmmŒ_"æÿ ¾™ìþ¤æ´û— ¸û?jp {ð»ek 4ûÓ@v–ÿHþ«¯ìàNƒ·d÷gìà6Ù[;ÿ«ð3ÎôéO’à}r¶sšÿk,`é¿É®ä8cG  è¿·‚ã· Ðå_Ýå“8‚¯öR7è¿7…œðŸôÁ·&““…ð_cWïäj÷/0‡óŸMÇüë w4±søw ÁstùYÁ,nÿ‚à0î²ÛzþŽñ_wމ³¸ÃN= à éð_<è4AZøigÂdYÔr_!Bäʰ3&0M½£‘DËà¹àÐêüˆŸ@û#-`ÍáV$a° cyKâÝð"Ù³çQc |HSœRó“×/ƒåÉf¤ù‰7}ãyG"Õ½$ˆÄ ªÂ»^ÏŸ¼Ôý­ !Û?Pg}ræFSÌÁ¾wí‘r«î-^ùüsGi÷çGä_ÅS ‘jºþßg¨³Ógñ)àœHÞc»¡ÏÜÜNceŽ¿’}ˆ¡Cò>ŽdË÷Ô^gz˜õX)Ueuì  "ÐÆ'¾Á™¤ñÝÿöoγ° bM`.ƒ™–bÞ¶3ç\ÔTÿ–)Ÿœ•AjŽÎç²Àx‚« Ocøb áu“´AmÇQÎ&ßð4:£XiÂsªF¯uTÀŒ +[Õ~»W9D§ ÒiÊߨ˜nþéä0€¤›a±æ–Ç'J÷«V³‘f9“Ö×®* 马ÍHæÂ2¿@äŒq»3ØÎ 0Pbšž¬·p\$ì˜mOÞ½4—È×þÐN÷ký`R(—êK«xo“ŸÑ9“ÃNG`G•E¦V(a/ñ¾ì—´RÌ î¼)ci³Zî4Ïøýíb>e’Þ.79j¢Š7“Qâ÷æ¼7%·dSìÜêü¨‚Éò|i„uÓðË;·­:<ÃDqäùyV_¦?SA(ONãÍ&Mš÷^!  :G¹N«ËYÏÈR±)B%-àL-¸7£q¤•âзÛQLp½ Ýkzw"‘ÄS© ù:}ðݤù¢xÔ˜;ÒÊP²caõ;Seú£ÃíõIKðÊ}—ž_¯èÍôŽŒ.•O¢ÀLLNÍ¡ßxh`}NTÒ›…aœû´vòíÃoU•J5*ïa dÇÜ·5‡Ìß·’SŠòIšâ¸?ò ºH26¹uÑh,ûáïM™„}Ô™:h+{´¼.C \¾@­ZSMc°°lHšéˆEàýYu8blÒ;ãFôà3aNj…Ã웢Ÿ«ýMo¬°†&‚Í<â‚m÷ÐÕ†õ¦#Ê^4"MfÄ-Œ×'úS©$ÚúA@˜3ÿŠ>>ĹŒ„ÀøûÉŒeÚ®Ÿ§LNaØü1rkUþddÁ°ü(âÉטÞÓug8¦¬?ãN&¦ÄŽàÞµ:€¶ƒR×OãIà}®d.‰4Aïb]¥˜}ÖPT‘3ÒÙ4Üër·vErÓsÉk ‡Ë¥ylÇ´ã1«_)µØ×tõ®NºÃÛ(Í8€ÞX~–„^ÒíPƒÇ…p.Fäu<Ø# )Kêwç:ÚÎo‰NW~»£Ú Ö<5áiâïÆtn|îaæ<â~Ó°ÚÏ`ðñÙbÑ'àøæ6&·´aºLÐè]¢G·/fä”ÏÁ.+ÚÎ-kÚ»êÝjƒ™®e÷Ï ×ÄÂ;p[€¨7u Àö“‘ ]²ò!ÆH{¥â·×‚6>Í1'°õˆ$µƒîÔ2 87¤SÛÁuwË o ™³©s†³H€DhUÁó#Œ­ e¾;¸O¼¨“0ö!4 Ñ„¥²a>yÉýÇ1"ØÃø<Ì)'€KrrüP‘`€ún/[¡Mòk9^gÀyº€†}A(Ý–õÏèNÛ¹26ó¬BJ®>Þ!%üNáZEŸ)†cgáéJñ3u]"G•¢X¾7>¤Àå¥ã¨åoí£!/‘šÜ…F^¢õÅo°.dP먾JKie9M¢! è.áɦYR?›•¦A»õ«À¥Â/F8¯,·â0¿ð dXóUlwûeÉMÊÚÄj)múV«£›¯‹eôy‡p¼Úõ7'å1÷œ¯Ó\ 'yš8«òîWL?|F©è9g>¹¾ÒüZp>Hb› £3ætµ²ŽM ;è¼O¦O=_piHòö‰YÕ7FÆ‘,˜ÓR ›àjÄ5|q°5¿}1 ¡y¸—ë3Áý@ÒsÜøÒ1vïÃ"¯çcNúMfSˆµtMK2íeâw´B¹Y^ަ-}x5iÒðZ"ªb T+ô2?¨§Iƒ–p"úäæI˜ÄAÒ_jF,ѺZÞ&Nä´¾çñ“ÇvØ=[4˜´·ºåD‡¸Í ó2„‹NŸe?G•#ìFóìEzÖSÈ.íÃŽuñ«P4`=…?'u¢«G¬rPqw2Í¿ÓÛÙc¿Ë+ýμÒáM &/aÖ¾ó6äU6ÁõºN·ø¾.€_ófÙЕpš9š4lPÆBoªB^Ï}‹ àź´QÿëÕwƒ_”©ÍžÂ7<™rVêƒÉ!¢dú-©V†]¤7B»HRÁöÓôÆwøaÚ£ègs‰{,eÓDsˆ¦½«‡LzIŒÔ\;/lçmÒMœÛ%\*ÇßÖa”Ï"ŸŠ0â†G\Ž.õøÓSneÆ}UŠÐÕ’ÄÂ-TûÝ$ш¨Žòò°Ç÷O¸•Oå2çà™YÙvSýW­#+ôs­ÊeyKÊБeÉÞ-ÎPÈvÏ ¼’„ße¨8X>a$\ ?{BóÚ¼zfB.¬áÙ)jmX¦¡„@Ѹ¸ú–~E¥ͱɔÏRµŠõ+Kúì:rßtOüÇ0¿CÞ”…Æì¹säu}íßšÈwƒµ˜MBžXòÔy˜0&t]25m²Kâ‘m§ä…çäå/­¡Å‹p=á¨x}‡?·çÕÕàÚŠIã¦F®v±©­ô7†oŒ­O‚¤•ã’E DþxÞê­e!™¯žöŠÿÔ0C“†ÿÌËAvÑÛ* YëxyýQÿ|ßwàz5y„H*˜|X49Í^?›ÿWRŸ²x–W1}ÕÔJÐ`¢€=þ¹)ú~«ÀJ8 [¿¥øÎ«ËÁÀ·²«e¤¾#£{8e!Ûñï—D~Ü„ˆ,ã¯?Y‘JÂ?쉒9éù4ZaK.;W·Bödƶø í é“Ó3SØtW¹=•£”•q²_ñqÜw1mB*‹¶„ž™¼•áèxìÉ+Í áï·ÇRyÓô ¸*Uß´ñz¶X{Á«+„V‚‡‡Š³ð$ÿû£¼ H»ã£öanžË-pfyéjXÈi`ßa©Ý7‹ÕïV¶g]|þ,Åðd½Kh±F/ù ´J†=ä]\f;@õÚoíqt¸34«µúžev­¸¬Ó#îWU!(yã¹Élsã›SƒTû±vÕ;¯÷—»þš±TTÕ+DnÜÛ Åï¼­ˆ[ÈL?ôÐ'ÐÍK3éІµbW®ÂmÚ±3¨–ŸÆ{¬è•ªb,ºˆHá®8‚b¾§“‹êéWÆ¥÷[ÜÞHÃuK  v´Æz}|^Š6¢*7ú†R·6_ÌÓ† ã…Íï£Ûäc§¡·4œå-`ϧ(­À…Œ©^0Ѫٲ'M¥’/D¹z^Q¹¶øÑׄ\ê5_£œŒµ‰­!öö4ÍMT±¥b BÁÕ“ß›p¹»´ »Ùwº%Ž…C…NëçÃ… Óë1¿®>lSŸË[ ]¬Í‰ *Fûz~ìP|À`a Ÿô«dÐØKOH?I™:ÅÒO\ÁÑÞ–aàÉýÙ™¥øÃ› +s®µµé@V‚¦ WÉ1ŠáðZBb i>º1áçFïD·ôæ$'ERÚV¢•´>E“TœâaM/+òÙšŠk}Î¥•QKÐÛ+«ÒXíI_Å3y•kQàºhêER4Õ*hõ-RÁž šÑ‡¢gÀ÷zÛ)óD߃Mù =|w¡^{T'11&ŽfjkÐBüåΫBDiMJLÀ«û6¼ÁÐ(r2p‹µñÖSÀ.KÖf‚&Šù¹q­9žø¹œ™EO} ¡—Õ¤ð>/-ªÚ0%ësœXÏ,¦ÌIÙ/¨IZ&VƒUyya°$ˆ7ÝÞ&ß¹!eż +{Í©[´JÈx#b.k…R¯ðS ›aUt~³hÝŠSþ·g2ìôÞ”Yîó!É·zÔª#‚#Ïç‹XÞô*ˆyä¾ï};¯òPã’\’œv&¸>ß]‘àé(Ôçv‘U*ÃÜ—hÕ…`„;¾ù¦’¦2SÌ1›aM'ˆ6ÕQÙ`ÎùcG­\«é¬èmYáƒAŽ=5 ü™@Å/=}^+V@/¾q;,ÛT•‹3”îK`tt¢yÊçò=ÛôÇÖ‘/ÂJþ1ï!ð°]&½g8<ØlÖçS.™ún T—fÔ ‡]ù´LH™CàIÇıÇÐç—}9(àxº§Î^lÔÛ–H—7³\òsûÒ§L\sù˜)ËDö¶À…À˜V¿u„½oýôõGH‘Ñ””÷N0þ~ºCU6’Ï-J‰?UìùVçÚ<"þgþË9yEl¯‘_R„Vy#ÈŒðŠZe}“Ó¤ |…Í­¢ÊiÄ´eEv¥ê‡Ýç*/»ü=I|F½J¤,ÎÌ¡{¨I”] mÍùb<Ë]n¬Jz‰N'¶}æÃl‡õƒáÃ:¸…W›‹µnëgÞÍ–»/$¼sê'£ÑÔºdh.ãz_BtÉ|æG;"qê$ÖîÊgnDÁÂÑ£§cVm͈¸¾¯¹›7"ceþæë¬£ëºj$MIQöHÃ3­x°tÁg§b JÝgNªOÇÝ\Pá|yVÍx?ìÓFgüšUè6I0±#m]‚uÍmv€›A©P¨R™Æ$k0|Ê;ë­#T’ðÝI/…9cÉo{“zŒßˆË•ÓÅqãùg*·ÄŸÖÅaRõĻʻdaÉ`˜v’r:Ðn:?žbôß”Uäþ\” 4W2’AÚÄ…µ}ú¤ø£¹©¾Äà]’ù¼ÑG›ž&§®ƒ_eÅvÈs†ìß=Øó"¹X¬ÎLѾº꺡jgÆrC× ¸ë&§(×Aå¬MŸ[CŒÏú-¥_-ïvÕÖPÁþ8¥ü2HÔeô¶Þs&à+¨Û磵å䎺èéÅiœ‡Z/“& ŠJöö'† .ç«©kõÂ}ƒ™N¶¹_›>]úÁ©N»PÌ!UPPR4üýO3s ÞSøç÷«µÝ_¶™ƒóL¦*Ž¢у ê®cì8C[i×<•DãK5u(WÅzdØ,_€W±¡Lò~ЙMjš˜tyG? Cöc(Âa1utŸÖ!›¶E4›Œ½@y0ßâQ¤mËȬé ë‘§…c>D¸³écvÁšŒÞ{{½1rÂCkEüù†z“Å%V8{ÕSbª´d`%'§“)E☋NȰv†Ž«K•d6i0”)'Ó'—56G¸^/“zÅA«RŽ©¹@æ"^ L‹ @*o·qï ë1`ùÉîô«÷â$ënÆ:‘ÙõÛ+ÛÇOHª›Ëã‘Xe#ݺ¥Ó-gQ±ÖÄÅ!zÔÆù0öÏæéËd\RD´­N›:ëêa“òÙmó/>ý ú!I{3¨$P.†á%¿\ 'ClБzC5³, ŸÞT¶óò‰XT®åŎשLvçï©QÂÐGpn¨Èº èU³åàXÃÇÅV~©g3îûU ¸6œsý ¢ƒÐ<ÝÒP©Žy)µ/Am,C!ÅÖiÈî¨Ýuú^JOÙ²ã¡&í4Ò¶±´Ëˆã…C^@ünüÔï ´T™û&¹ñk„œþÙó÷èt Ú¥Gkô¦«ÅîfÙ…6.3©zNˆ/|0$D†‹˜þv5ózñáÒ¥X'ëZÐ+Þxoå ›TœEÍÞPѧŸÍ&LËÞÎl_Õ <º¢ÛT3Û©#`Ìì ~³öOFUU°u"È圓£ÐÜ"¾õÿÔ²#eÆÄèÄðròv²*͉ò³¤±·ŠÛâç‹uÊ1Éø mAå„*—»_‚öš…ý/ vfóT¸Ÿ`ÈÂÉ‹é‡Æß •¸ŒËãWé@· )Dávc»8~’uQF˜º6ÁhPkY‡µù¼Áãeª ,×.äÎHvzÊSfyNx q¹ß›#a'Y¨Ôç ¬:iP ¼'x³¯$FóÑÎÙzhæC}Šçh•Ê!T⧤¦¹ùXÛËЀ´LImuÿЬ2þÆû¨J¢zX¥.óAÍÎ)êô±ÅÔ_‹H¾ÊŽåQ°»,7æw-¹øu7k÷ßÃ"íÌŽœ>­i ߈‡áxúޏ¬5ÅÐùÓ¯õ&n˜îHïá”I_–v‹4¼&œ$–ÈÆ}…Pà*4äãa-vjòOP­“ç”í¢ÐÛÏ!¬U¦„ôµÛ­©c˜¡§N1kÕƒwñ· -’ËÁeXáyp¡’ÖȲˆîaÐf}»’Brû~9+ï:1¿E5ÎCõtrÌ6mO·&tE7—†åš~GeEû²5–Šz,te¢çûd¦qI•¨P¾ÅL…intöÃHã*ÛåІñ×hŽèR“‰p†'o»)…ŸÈc=¾Ëø½ž¢·üù{x+·!¾ël+?ÎåÏShnƒPÔM³¨ú𬓲æzÙ±÷DWÁ#ê6?êË ä,Üî¶3iÎÞMxfí^˜?åLèÿÌÅxFìÉ›‰ö:©lzwlj5°CØ~Ì”=¶Ü)í7ýiüÃ[×RÑÓ\§òV¢ï~‰þ¾æ +† •Yùk&3×q(åºiß_1%b>Õ`”7 $·˜­âѾågvÙ©¿&Õø(è»­£găÁ?Þ¡ÎÏP&4Ö÷ZõËýD”ÛAÑ£?>2GcåuíxhzT¨#ëÀÂ<¸q˜†ÙØè@LñB:Ⱦ›n¸ 2ÒìJKé–±®-†ßO?û¹öµ¾™„Ò.—· Sóý\ó8ú+ægtŸµ_‡ Ÿ¾À÷â»&ˆ! Ê£õàOT*ö³DˆDªðçx&ÆOE$F‘Iw9¿E£_” vŽ*‰ã‰ŒO¼ýi[À ¯Pø,5µEµ >{M¦£Ô¼ÇíÈ//ΙdÎûC>¡Ð;š;z´Õ9Î;×a[«AóÈä…<û Ù¥ÏC;æ¢s+5…bw“3R¨=,·è6þ‡ ìµ›¨›”<¶´K[‘äYšz;ÍyvÀuÝœHnÀÒèÁøT ûÚz÷bœmjm‰Þf÷vý³rkör+œÖ‹Gs—›t%ºç„21Oì!‘[¹Ç|í;NíJޱ긌>z#ìæñÏsÙÝêÐ䜄Ýâ güàä¹°1¢„O †TŸ n£]Ña‡å?SÂ3%¸W&ŸÊu%xŒØž|Ím]…Á2>—·k6Z:½â¨Xã, ÐqµS‡Ô‹ÈèêšüV/^1Ã\MÙm#æŒfÒÈmÉK m33¨ce{ݾaí=q*¸½CìÕz"å9êÙóKh”ŽÚŒš ;2Ð.¬›u± ˜¸žOR¸D ‡ÝÒáñ°ÝŠDŸ´¨‚\w OUÈ —1¯‚RÕâãvÔØæŠ”¸ƒSüã•qׯ×Ý=’! z~ôxâ‰S¤™L¦Pº°¤ªÑmÒb»ÃËÛŒ‘ä꺈J¶rÿPÌSSåÕMe¾ÉU ~77s5¦Ó?Ñ[GêÃÕÓôp1oÕÉøRÍSÿòTfÓ …ÀvÑÐC§Ùá´8Qˆ·=,‹÷ä›KL ëÛ!&¸Öƒš5÷ZAB5÷‰˜Óþ•õ”¯çÔâdçTµÐ8Vé7¿¶±üdzmñyÚ_)D鸰Èwݡѱ†œ‡ß\¬CÑßþÀõùth³'cé] uPÊ\þ•¦Ýß›kwoâ½ é— ý:A®¤1¾f„ëÏi£–c:85²v=.Š4c#£€–D<3éíù”S žøƒÉ´_Ð7¯@"— áaŸUÈlÖœ Ka¡0áŒCÔËðŒI®Õ Yä<„º¼²®×Á‡½Â£>ZV±hµˆÛ¬£Ó×f‘n_ï{Z¢a–wûÕ™%¡wß>Ï X“û¹†dQõ)óÁ½áå¸+'>xs'˜H6‘¼®¡ùÓ&3nMXU˜XB©úþ*¿à}W,ZçfKù­ŽÂÐd[Á¨”åC9o¨Ãd³Wb@Õ|õ6³–ÄyEO`&xˆ»¦Ï­ SÂ4sN-MròŒÁpÃ<_N±f-]«-ì[ÔÉ9kŽšÀ8¨×l’™¸§†0¾Ð¼†®~7« mЊå׌ê“~zÔè`…„ÇÀX’l{øÆdí©þõkÇK¾/ý­G~bñ‰G¸å(A‰ ½¬‡Äv2¤˜‡P0H×ôÝ|ÛÙ‘jؘ֠v­OóƒVÁ¯Çb, ôU$£5Pþ¾ÈbàÛô´^©n-Ö¥Õfˆx§îÔ5¬!ë …ãH–¯ðXÂb3cÐ|&dx)w2&(ñpã‚ò³4]{NJ^¤ÿ¤aN5ðJoæ´ àmÌžÌÂþPcø™ÏMġдäŽÑ£iCÜ.@Óý…UŒÌ *2tçÉÚòÀ:‹¿µ4ñ*‚S/ÅK•V²€ m¦tôyé8¶e\TðÖP-k£ÄuíùLu¾^Á“Æ/2(³¬ñi;.×%_}lݰ´;¸Ñ1ÏY{ipˆ^ü4³·_ÿêë·¼^ß®³_“äN^M†T{Ùe–ÝóÃ>z{NÕfe—}šáÔ>ÝÓ…pàÀ•wú›ÞÖ÷<ôxÇý’ñÖîDzøsÄ£/TóïdLÜ?M‚˜y·};N1ò>Wd¡ëVâ&üÍ„‘B]º¥¾ÝúBÞþ4Àô™­‰³Élul­e´òBòà´ŠžS²®]†b2^2v€nÒvÔŠ .ÊuW9 ÷`fxIPòc­‰û,1Eoà)ÖöšhË[‡ŸÎý>è„•&nÈŠ,ú—€ÿ/qÖL³†2 ºô®oÌA)u•üæ®ÂºM|¸[!}m€È¿¹RÉYðQ@œŠ;/EŒ„ïžHØ@K|¶‰êmEÈ‘ð××ÊÉýpY:|ø•0øU½ Š Ù“:{1¿Îhö†‰q ZBùÊ«…ÐS a‹ÏãÕמ%ûM›‘´¦c(×âù¤+i±ß~vs1p®†ò{â„áû2–d8ýD‹d•Ǫ‡|´òrCñàF{Ýínþ>s¨«9xKX4]ÚŒÃËŠXø –Ú¹ìW’ûÊ 8QÅIuŠÆêNwš¡^WtÇ/ÎïŸÉK­¸Ý½°%6a0éÝ×àZhL|œF- кl_Iaã6/Šâ†4±6Ù×/ÊÝLÙÎ6nW2Ƃѫ†Sœ_â´¾ìMÞÏRÞz«FÀΓmÕº™n2Ž›ÍWÈN_2{I‰ñ²á–ˆø•íóU{¶Xö7›üt•]}-´ÑGs-ñì4Ë 7Eé"Ù(aâîÍF®ù”g Oi Õ?îp‹}<»ÓC"~aðNz„•³7ÿ Ã2 ã¸É‹áîã#4¦K‚ÑÑvK¹Il…Ã6bzó=Šc¨ˆ£)ÑXpð*}AY£A¡®ZjjYâu7íÇòœ”nbGDq“g º€?TIÆç÷/8'hí—•ç¾õÜ\ÆNðæXÓ+MßÎS†õ£Hå*#^þJQÈ9θd¶W$hÿ~>h<é{é¬ÿ£Ìq섯§ï ^ËÓemžé‘Û›ÀòqK¦¶¾“O04]gD9pYÌ»‚%Rv¯êט`äq¡ì›àf¿kŽ -:Ûeón@‘1^ ×ö³ˆÐ‹ÐäB&8ÎGqPÐ7±bÌ+ß´QUÎ%êD£çÖÂãZ.ÎÇ캈§’Õ2—zn1ÜBt哾–Âam˜x'ŸOÀÅRŽ^[[(íÎCWøá ¯–õhPý1Q+ n ºŒÁ–…tRKa"SGA›–ƪé•a®7kω_¾U8$a³Ò—;µDlá¥Bý°ãÒ÷ #Ôs¥¶åGÒŒu‰¢œBÓ8âcZx¸*Y†«Ù–Tä;Ñ_ÆÈü¬ê‰VuÏH<Ù>ˆàZÂ#¨³æ†Ùu]—uò?ªvc0þì¶Yõ‰‚¶>¾¦NŒIaÉü¸½öàȹt}p7ïÜwâ÷x["BpáÙ|)û¹I•«ÎïÜÛ¶>nPîfù"乘¾ñÔ©~e ×Ï\lßß±IÐ÷£Òå&ub;FZ¥Çe‡> Ò”eÐ*$µ45›ñÄh¼) ÷Îèmè™™¼?±Á²+ç³1r*›B£á÷ÙŽ4+¯«í†G[¯—êžÕè·±†š E±îZÒ!WR(¿(‡ÀNNÇ‚‹Æ;¢«%ƨÓ$ÿ’ú‰D?P ü#×Qre"ùÚ‹ŠdìMÁ¿T’åNY¼ô¾†ž~”Ψnå1ÁœÙéýûM|ÖSùç_­È'{¸§ç±¯ß`k}q€¹ÆŒö âS¸ë¥òeùWÌá] <"Žî‚rÖ´†íu#NÝ\Qy†&ç„ÈøAÕ¡¡|è(ád÷ÂN¿˜ö¬-#¨ÒÒŠÙeX†Ôñîg|”#‰dÌéLsÞ!E«Ò|y»ÙMüò쯻|>þG·­Zㆲ–,hÜêEÈ›oÎÌvxïpìÅf|½†wlhýjÙ—«#,ö#Í]ܨ…áŽfb»M‹Ò5»üÎÊš`ßäWÍ2å$½b 7[‘"ƒo¸IöÓ¨ö³9݆³Í´Š¸õÊ! ÞAÔÍ—@&õh³ìÊì])Ú8lÔ¡s®Ûœ|•œY|žQdi™õu2á¤e…fz™i}(6j‚NSKt(q0cAC{íj6/÷Y|òà ‹1`žâ†¥BO| ë{¯d†Þ§ÍÚxAÕL®d•H_ûÕ›…xBƒp½]­šoX߀?à­Ypáö¸]¢UжÄ=Š;ù…Ã~ ÍIûµõÒ[JIˆ“æÍØZ³‚‚²R¡¡LN÷ÇÃ÷ÍfjÎÖ5HœwýÒ%Vºp†á h:¾Êé79¤©ÈaÎ1-ÿÈ’¯¶’$\&óiÁÏ8D™˜¡_—Î7æÌ.F’•HL@.EB©×M°h´¡ 1m'ËŸ!¬­c M¹£ew^v²`hÉTŒO=Öc ,:júj8XSÚG¥r˜][†v%'u’úåŽä¯Üß#[Y™ù¾ÜEž¨·Ê¯Èhø\®ãîcв)ñ•=AEòu8. 6‰–M¼”7›U)…bòŸ"õr †ã¯YŽ­ô?¥WpÑ£á:í£è]dpu Çè/Ï ]±âFïÛí¶íçmú”Ý £Y¥;×U;¹0vΖu£å#%"á8žd°4ÀiÂ{¿…?gZÐYý9/:pk Þ W³ ¾<^?1CzøÒt¨µÞµÝsy SµßÓ]³:Ù°Aÿ1°6>¯• ç@bþùÛ킊ÿ© ¿»ç Gƒñ£¾ aMAOôû«Ý4"”¾Üg7%JŽSá_æ'D ˜ï»b¦Å"'n*†¿ºîØ ¦’ßdm#„.2>|ÃlNw‰ÄÄRz¦RäÂÿ´gmËB¿*-iãT$äÆï6ÞïÛÀ˜ ȸëCªù…•ÿ6•é$ó•½Â_TâŽñ)N½ó’—ø‡ŒÆ²cG¡å-Yy8\ÃÈÃ÷,E]¬ ˜eŽD8x•+˜-?¬Ö«¥Q¼ðid«µM‘#õéôŸÊ~õ¬Êb¨íxܳ*“X_ÖdäËV¹ZÔz ß¬›FJnìÆ'øPmêÅåÀ¼ògkňXF‡ùÿp…?íþV¸¶ÉæÑq2`AgúqN}•úV;ïsuC.?ÙI_íAòÈùFßEïÖàÑÌ7çM'+%ý”èŸ>7¸w…(—bL)çBâ˜yµ|ptØeÛ MíZ*^ž9ʬÙIOðE=ñ\V#,^ÎH[]÷³a€vZá‘ÂDuR2hêÌ2k±“‘2<Ü9²wyI;!w/÷úZ°‹·9Zü_͈l×°îçûìbϺkÝŠï›ß“TɬÆîŒöRð2Œ¯Ô°°~nŽìèÀ“‹e§“DÃ"ôW2Ô–«?ILžôß/w¿¡rÿ‰éPÀ'Ã~«Kn[×ÍŽÄú–~r¿[¿+W¾ 6¶—e¸ØVܨzÂäñÊÛ†óIvz;d¹4(vPX wƒgïrN•>öAƒË?º9YÃjÀdw_ Ê{Hõ†bï$Y?UDsúÚGÞ}¤ŠÅuÔï… Kn\ “ñÊmM¨ÂäÜ…wHÔGnñnæ Ð[Bx"¶õ ’ìæAËg•c̘ ,áz‹-öµÑ%®Ÿ‚VÙìGbð㎆`t¡1¾6=ïè  ’½¾ö EKN˜ãæ|—|y¹ÅAÜŽnŒm–4Ýð-W&Û¯Hþ°Üï:м椴 2îø̃!ZW衪ùvÛºÔïúƒS8Ôhð5”KëâJTK.6+Îæžs=Ù¼ `ËY•’¬Ý„DäR0ç´óðVs¾DÏ7R)]¿\­ëÓ†¼ˆçhŸŠóÀŸç-ì®N$<ú‰1+½íG.4a>ŠÙy#ô£¡Œ«;[}< ­³Öbeê4URFšVÝyÓ­éW…:ëºÑ‡áúÂïk*©™ïgªÌV|RFëà 3ÍùÄàûÆH•£{[ÙgÑBó–H£Ð…A¼©°’8ùC¢Vßq¡ÉHaÂÀ‡1ÎN™˜>ž«Ïœ‡'-Q¨.n< ôæ‰ãÅDR2ƒ€·ã]¦t¥aöfÂ×¼¤‰Q£V¥‰¦+Èt-µ‡PCùÏ&ª_Ì›ú_g-’Ll>}„©ì”BÝ•[o@Þ¥Ô6œ{¼ÛÚˆðO#Ú:áƒC+8͇n)€èî­q¥ó-ú¦Ca(-ÊÎcycN)tØ%¬`Ý“Ÿég2—Dà‹8ò¥«#(ÛU’Ý4@~hJ†þWòü¼œ}®ƒ9M#Õ…ÐÕ•>#dFÐûœK;†ÊüÏ×ÐÐÒœ‚0õï$ »„½ó·Z¤®SO_>ÊeL ~v³9=£„ã¼î ­ã^ Ö¾“͈‡¹®Vþ’&ót>_¿Ú[‰A© ÃI˜{®,¬s%Û¥ %¹ì>[´Ú)Ø?noìen75û€0þ|< RS99™òÞŸ&v±>âïGÑZ0c¹ÿ™HŠËÅg8H8 Áqzm*‰Iô„4¬!@V70QùÑa8uá-®Â)q Þ[¾”!aË5úÉ¥›hï‰dº9‚Ì*UŽâ!".±ÓƒxV0»l<Ö¼ò£ªŽp}7·÷AÇáƒá…—õÅhc ·KÕ4_âÿ á»9«H@lFhCɺê‘êÕ[¾Ä,šÈ°È$’Á)=²Ö×-ÿÓˆ4I™õo6˜âòÍ—öeæ{Ž7Š…âÁ¤ßÅé^2ù×GT±Tý\PÙ>û B>áAW‰9(4ú¡ö²¦á(¤U8¶ñ2å›hßßµ_ó|Öxϯ‰AÍ^ÜR?ˆ“É&óm#@²¹,6…ñ'ÃÛŠâ¬ÛÀÞ)ýio¼{s£(#¯y´kÊ&9$FÑL£'st5ò—I Ëõ®|ƒ’c¯ûdé—T gâ¯v¤ï*d­ìªŠ–ìŸ>™P°øgÐ~;×ø¾ÓÙÞ Áï\"‹ê&“GÁ`Šìë69×$€…$z?B‰QïÀ…Z0eù]Šq0Hjœ­ ø33±?Åy:¦µ@³l0Ʊ•ffµg+*ÏÌ@ݹWP®tX¹CØÃÖoI¸þê"0§SÒzÑ€¯l Ë©8Ä­G$—¡ÍõÔî >òù6 «{¦Âì×i57‚žã'QÏRÿê)dÑÕ`M^äa“®fRs¾!¯ÖIÜ>$ö² aÎ À—ÏN°ñáÔã­3¾fòìdÊ­CHÐ}qz‚ô¨g2'Rã­Îi!Wo&ÑSÍ 6oBJê¶fúº „ZváBÊT–ÓËϼ}ÞÁn*¡ôñržè¹[ëÈTÝ^˜³0‰HhˆÃhتiv_ö’HΨܜÊb‹îc}ô{¢ŽÕŸ¾E@wy¯W4Ó[¬1¥‘Ýbÿ¬¿z)a¾Ëß!8ß¹ m©} iÿ~h»× ‹ƒ“>Öq<ÚwRLËé§ÓÞ— T›‚ˆ+÷œª«ÙW¯÷„$† ]Y&*@jL… UÙèTÇgç¼ëFRd{™fI¥=êâ89»¼e¿â”*{Ú¸¶E>¤Tíéß\R¼Â/oCÃ둵Äe+¡Åc¯`ˆÎ ð›‡2 )E‚‘² æáãÚBÕåƒlmbN ôje!Ǻa±âmІ‚ž”ljV— B|òcñß-N'*;;ü\Ô†<ÖÎÊóîG(£>Gò‹O*&ËÂû.iO<ÞX왉&o½Þ˜÷ç)ޝaUÒQ.Õ{£·yö«VÒÙ[]gϱ˜òË2“ƒÞ+¬ˆ”€D¤üC݂ʵy;žYÉãÓˆ.ZüNïɪûï?9O4\§ÝÀB“8 ¡W-¾Ù¹•q°v©¤×àŒ˜ßð¦,ÙŒ7‰­áBT¼¶" D¢1çoºTñ†„”…ÈÙ¯Œþ¶Z`´÷žŠ+Ÿnå€5Q_ ««–¶r´°NÔ#É:O űc«<ÈÉv@J‡É1ÕgÂ2I]ZQª0´eæò*Âý"¦BŠ/}·?]îî:±Ý©ä¿¶—U ½_¯^hñÙ£M,"šÔŠ­ÿEÑŠ‡}@?À°bÛ5¼p¸#gñ$˽ÜI/É ®a›gÚ#1óâ-Ÿ›?:›}ŠÊÑð”ˆP`;ÿ®0Ÿî˜¸Ç¶¬'±ÛþéKÈ'™ÔZ€ß&Ì[ µw[ E‘éú¤tµ¶Ø3·Ÿ yϾRñÐåÜP\ 0¾MÉ?;™Ï/ÿµöÞÛc°Wuy2@ÒIB<†8/ùÓñxQ«Åìê¹ATçµñnNÆÍÇË4wùzµ2¸µS:ªf£õs½H!L$ëþ—_:èÍÅ}î¦T’ÓŽ»-Rúãf Ÿbì„”7Z„½ÝmŽŸcÈÑÖ[ѪoU2iyݾ˜ä<–Æ¿’¦]°Ã­ú{Nöy°ÇXi»"lB•cÖIÏ`iB,>æœÄœ/§HâçÆD.¶pù~–z†Ö¤÷î4vx0%(èˆ[ÝÌ6%ŸÛhäçwLìw­lÿâÿî­Î™š ;1Š/ö*Ï­aŸ•d’±Õê~1­e×0§9„ÿñÇ‚>6:ùîÚ0HT¨0£¸šÜ“îØ^9ÍŽ@êfK‹9®òvá+,œ€)I:˜øðÂ÷r÷ûG×gBä«÷úRæú›ÙÜ’Üiã Š ¯:\y2íP)A=A LWôž™mZ¶‰/&·\cêêcÖ3™¡¸B_[Kj®'ôOLÜ5B52‚?Þ¯=Ÿœt=‡U“ œÀ:ßCFìÍå H±Ö $yô•ïÿªͬ‰Œƒ­³³Á¼ãÚX¨æ|K£´yAw,Ò·Þ÷AòÞ;{½sHóg6õ6ê¹eF{þz¸Åd»ÏäÁ´Œ›øý¸¶ c°_ù¹'ÝGZÔ%‰VK4rWMùA[h&Þ’#4™KᙈËI’J/à-Ï|®õîü"¶+åm8Ãäû#ç¦Ào!zS5©Ÿ?}èzWJ Š7ï²î50nÁâºåˆ(ätüòh¥UV•¡ý´Ó1-Ÿ]CR_!ӯƚÌF¹Àþº·šQ4YòÜ{ˆ6Q^TžŠù:‡…¡ vÆa…{ ÏulîF£¼Gʪá¿~6y¬à€#é¾µžû5XãÁdË ªî¦|¯OaMLO”‹ϸpkÄ®bã6•û­ÙÙ¬MëþhB[>J•e«u”d©ªŒa5¯†»Š¤Á–OåÎQNx­Â€°'Âi®[n T-¢·.á9Ð2Ó²_=»Xh[ýöx{J¿­¯1 Th0DùFW„£*z„@Ê¢„ˆ?¹Õg}M³ ú[ëûDe»à#)dѤ܃è`D»ø¬oWD´‰ ;˜2áÛëø(á4$G2ïã^K\©#”&˜ãöØ´ k^}_ÆIÝYždTAoòÓt¸lÜaï˜éO¯ÑriºAÖÕÈŒãÆâNÅÇ?ÌÏBü9w å»Wš…®zÚ_ªgrkQøêëZÙL9ÍMÑÌïì…T¦Ð&ŒÄT<¸ÈäÙ–ÿÔI:ô*\aWÉj˜dZ ‹_šF^œå~7㎧$œÉwÀD÷Ú:ÙØó°ç˜ˆ¾=jE¯îÉ\}Úás:dÂø²#Áx͆åu=!lMFbB&_‹‰‘eä§ŒÖ{çK0éLç¥á‰ÛéÍ€Â6@…D• » FòUBݹÏÂ¥¼á(O²ÛC""BÔèN‘ÿÐh"Ñ”•ÚØú:^›ÑŒÿág²Âè0?lé„´¶‡WÕô5‹z2‹&ê%_¼/Ï€ äŽk‹ÝO®ÞäUêhÚ{î1ÅLÃ@RF‚Ñ,²#”ëï\«É«¸Í½‘,Û$¹ßš)² k„p¯Ý,á “CSŒQà˜o[{fyùc·âšC-DàöÑú¨4‡GhH>mEì律>=¥+Ä -ë_zÂÜ:†‡Ô+ú:ú f®\®’í“éœf}Š«a¦—¶"hÊ2? Œ#I GlKz Þ 8ùì§åŠ[]¥õHFÌ%ñWl;V"GôQb¨¶ñºNsÝ=ÊÒ~=ÎúW§°C¨ŠH¨œ2x¯Ü/ÁÝÙ Ô/)Âbìù¹Þ‘²¥-DI ~è…µˆš!¤êr/3†¤ ɆÎéÌi…Á¤t–Î;·ï»Ðf1Ú;p >TÌóZØ‹æ+‰8y.­µÿ ºó`#²Å)ŽÐ‹hn^Ã×úzý‰‘Ä ~Ù£øSj3üÕ‚eŸ›w±Eæ³#¿lë§Qa «;òhŒµb-é(sÛ h£R£è©;¼NÉÿ68÷¡s‰‹ÕFÞÛ¸+‹g¤wmzÄD‹Ý©üúø3$Ž‹ lY}Ÿêb"bS נгß#¾þ.|úJ믜ªÎ6cî$ÅF-ò=ZôÝ(' ü^Àg5áב‹áu#îp“š oOO³“ Šò¯pŽñŸ€i©/BvŒaNÙ]!…ô\óž<â௠Økl»JQº›«Ð¬lµ6ƒÿÔ ù endstream endobj 113 0 obj << /Length1 1352 /Length2 1258 /Length3 0 /Length 2105 /Filter /FlateDecode >> stream xÚS Ti–Ž+"ü;3‘3I7È‘x`4(xB“t %éŽIçDYEEEQÑeTFÇ•CDŽAŽÇ "·¸‚Œ×ðtEÜN(ξ·ûòÞŸþª¾ª¿ê¯¯è apED4êMà$fBÀô‚!A.Lr¦Ñé¡)AGí4z*W`Îù„±\Ž"$eã!$E8ðSJì`7ìÎ à AìQ"!ç¢ÂD@À~Ž*hôå„,^ŽÅÄ’0ö ì„öf³Ýtá€+Eå˜Á!cQ)u£‘€Bˆ¡dü¸v‹bIRÆa±Ôj5‘*˜„OÏ¡L´¶”® ³@ÝP0–¥½ 4^†êœ°ÖLõ”(#d@Lµ&ab”ú£%* H¹MJüÔ1Ñ`ˆ0! ¢Ñ §}ÌN™Qñ¦æ/Ç4`-DÉö7öµžR˜ˆÀ%ñ麳ü¸«BW8ê[s.[Fh@"v…€î€!gý‘4>S0‚é+ù$š‹ à>R0õR£E«ô*°Ó¯ˆ=Ÿ+ ´‹»R_¹BBê€ÿoÁëBþ›ÎµYþ§Ô?¯È[)‘èüv#„?ù)&‰×3P4âsB8:²²T„)¥Ÿ{ù$Bm‘Œ=¦ðÆ4¨(#…±#BÑÙQJÿãc½p!!Ò.г«@är$žFMˆB® ¦6J„jtB,&NT)É$ &ä4íH ÀB ­I‡\(ä2†ÜP:F±=th\ B¥\Ní’nÊT}£X·¸(ªA…´æ{„paêÆS+Þsçª=7ÝðWI¾_¿RµÛP>ûÁžoÿeúk\AA1Áñ¾–ýlfíªª¸döVì ¦óÙoûg6tLê[ö^å±xiù쥤ʹ4˪.šïQe™T±›Á­Ï Ê»ñ}áºëw™¿}N¶Ç¼ú-H'´¶äJ˜ómU©}s’¯Û[Ù¤²™Üx[loòä÷ùÈû&nêÚ•ý:ã=nQÇKžçWàô‹kö gc_¯ØžÉÆ×¬7ñË bŸþái»š} µ™díG]É\¯šŽÿeësö¿Ó6G›ØõTDò»Ë2#Š=ûioÑ£;+Í?ŸP 9­m°\3¡zeÓipþ™ƒ‹ÁyÛÜæ<±©°Ú&X²ãBÂÑÆÞÃÕ·ì ö–Ã;ëS[Êï±ã}—5'øΦ9ž°Š*M­{rçu›1FÞ®ùÑzrj…(Çé÷l ÊMø{& Œò.{·„Žú󨾼\?Èþ!ëtAc•uŠû±Õ6à ÕçMÞ@‘ÂÜ®ïVÜÞ¿\ïS¾rŠÈ¶Hhh˜µ¼rPSô؇Vwß Ùdâ)×®w;*=_V¿ååؼ¸èóüîÚþ¿íjT–2öZϪQÄùÖ{;jRVǃ»“áê’§þ~¹qd¿Ïé\`DH„ÛñˆsØ•Œo—íÓ|( ¾ðwcCÑ÷‡Ó'/ÜÉ<ÖâòƒkÄ“ŸW>È\\à0ÙzûÂÌ'PþùSþ¹Û:rï¬-Y2uãkàë7ƒÙ¯~ÏÜõ¨õ’ 2¯fNÍ›=½ô§ƒÐ™G,Xe† Óë2Më¬Ì.ˉ_vs—_=j‘\²´Â±{v]•iš5ÉT÷t®±ÊSÄm}}ËáàðŽ+ý­Ä4(Å ×Û¬£^>ÅOxù˨n|–¥{á£Þæ–#7ŒÒ¯»NœõxþÄöoøý‰ä/<> endobj 13 0 obj << /Type /ObjStm /N 83 /First 687 /Length 4074 /Filter /FlateDecode >> stream xÚí¸íJsv,,³Á¤w(  ¡3BZ5ò:·»£fà^æAÜ«ÜïX|•bl޵û 7p:³•Ó™°]Â(‰£ÒŒen#­L$wT€•ćPÀæ­o©E5ña,mm_P«ÜÒ›ýµ ÒûfI;¨pÖ=°½ÆŒ´±P—åîŽ"¹ Ú‡qÁmŽÍ]Ë]%¤L§þSY¥¢ô®b ’£Û*9ºøÀôêL:¯Ò¥¿TºÂ2Eû·19Œ‰zÿ¦ÄÒ ×!õX°v,tÑ)a÷6ä %z÷ "µ{¿EàÝ6³²:ìÀ ŠF«¢s;p—4z¿2Œ÷nûÉ« LÕ©´cóŒÙ1ÝQjØœëᮥˆ µ£ÖwiÞÙÐ Þì€ûEœI!4kóXPc¸CÖ2¬¤‰Í>èh|¬ÎE˜YÃ]áœÆG²6" †1‚³{^Á³šT #Í’<IAyeƒÍ£¡}XʰÒîè£É'%¥ÄÇÀ·ªÉÒxfG2hrB Á3i€lƒß®jñh0å3i¹ †Øõ™á&,À#6rä~‰\ƒÕ|[ê"o$J!Cüýù«>GEºÃŒ4WŸWt‰“f"ÞL/jJ;œ²ö¦«Å ÝŽTZZ²\1ÖJ†PA9l2 õ•yÓ^?s½¼€lû¤:¢´ö|¶X®v¿Le&âõ4_(¼úev²ú²ÄG…”{Ÿ]ÏOf—gøÌ&‰/ñéaN¸Ÿ ë8Í›ýÿ‡e)-·ÖÁD<žÖPmPËŸŒS8xš v.ç«“ú(¦04…ï‡Ü à*èFg>pŠÅ„ª¤µ;øhÓa‚6\J">ø¥œ62&K¹Ó`®óP,£¦’A#c(©1ƒ+eåÜF¨8Q>õšŠ€ÅDán† “÷af$™j箲͎¯ßímÆ,y–ß7¼Jž‰žFÕJ·p€²¬«‚éØÀ…å…ùÊ',|JÔ£@­­B¤…E2…‡Lø.Ô˘Ù*ååz4‰–0®Õ)ÃC©²$d³<3XnÊÙÎJšg뱕psòJIU´—ȇx?|/xjW<ÍxÂKÿ]î–Ü?9O¨ÕQŸ‘Û-I1ÆöPmo3£Q]íNž«ÐÖº¤ÁÇ‚-wÖkNÛÏæ‘Oš3ÚÈyJ£l›½d -Ž-¿3F @¦Å°utÌB©=\<ÄœËt1ºî>H£ºÑHrÙȇ"Ò0eÔÎ'ÔÍjÚ&ú|já>*1N‹Í£!ÉL$ÏÊg¶'žæ¦3 ͱ¤<ò‰ v,vÖû`ãŸ%Á+²ChlŸè8§¤¢ +Ѻ³i¡Ž+ýÅnÆãÐÍxEËîÁbQ dgà„±‡B¼µª[9=¤ŽDª':Ô‘Hg! ÅókÚ3QT™#c3ÜbYº¶FA¡®ßámÆL±ØI]·Î#^³¬!%Ì»,'¬ÆN$’GPÔÛàûN‰N½‰$äC¡‡“'žá=šž"$ÜDͪËp4‰‡xÆÔäl–ðŸ'uyäî&ëø”Ú(%r–ì¯ÙNôÍ]la_œíX=áÈ3lZ×àò}ëpVÄl¥ökˆaÁãtЕs8½¹ýié#RY”s˜÷šú_M°q&ŒÓX(X*ëž|ß°ú aˆ"<Z©©Šã±ŸV™5=^™ió©Ù6´‹ßMóÍ…K±#pj¯Œ5·Ð@œ­¼O+h[ÄH×Qåµ ß3ävø€Dg¸½ÇÛe˜F,ûÊR£û÷ø1':\:L2x¤kp6Ñ¡ÀÀ‘ÇTŒit ‡n R.<'°Ó}œ‹yu†#>ÜsJb* ™'ÉÑᨘq˯¶lP€ü¸œaÊVzjCZX<”•8y-ÏS•å™4õã´¶¤I8ÆY*™\"í³ÿìüi½<^̾®æ ~ÎOÎ?¼z¶{ðÓ?v÷ž|Tø ý|z¶¬lù˜ü‘óÕ#úgå-öðGñxyŒÿdÇωØ~}QÏξÀeôlðÞ#…7_®¦ç³ãÇ—gçuäVõÅ,yñ1/‚ÖšŠãÓöÿÅ®x.~S1]®êÅlù›ø,ŽÅñü|~)ND-h•¨/O¦Ë/âTœÂßüý½§ó«…8_Ä—?¿~©/ÅLü&ÎÅ…¸s1¿¬ÅWñÎOÄ7ñíª^®f@q!–byޤVbõeQ×bõÇ\\‰ßÅwñ§ø×³"žÏ`û±ó6ÂMzÝ?|ón÷gÖ«Ñ«A½â«Ñ˜kB¯2]«×§â™øQ¼/ÅžØâP¼'M£‚[ÕÞ ÓÍíè³þ0—³ïþZíè4m£ÓŸÞ¿yÿöéôð嘷ꔽUôV{W­>B']ë5Œêu ze¡^.×ÚX‚à÷IjQßïÿøñÕ/ êËÃÃI•A &EH[Ér*Õ‘/9µÖ£rúÒ}Œ*Åäø›µ2n’Ðl#áχ¯žìï‚„ïÆ,ie¶¤”7Ň¹U|\#ßcñ$Èó"?‰×&oÄ[•ŸÅ». `~Í!Ã:9ž_\LËÌôíjzžƒˆ¢(Òù†Xúß&C]Î œš Â2ÎëÓC ¢;Ì]ß®æ«úäó9a®/™®䈼˜ñnÛØÜœõþ`³ŠÕ‹yǶnÛ>>üåÙîc²íHîƒær_ŠñaLë®5-滵ÑÖæúR$³EVÌŠñçPü­rÿÓ7Ï>î~ ñÈø†];YhRlºµønD|gJñeW|Lî³,æJ\uäÚ*ÿî¿øøäíëà`,f½Ê‚% ÙkÃË[Ø5Äk+Ö3Óý¢†ÃÚà§|­ÑGí[/d@eý²G÷môözÿÅÞ‹§¤·ñ.+¨u¶CÕEyoÕÑÛî\ê5w@›‘J6ªcÕ|«¿÷ãÛƒÌñãåÚ¸us©í}2AYÆâh.h½eà)ŸÓãßꉟaV¸Ðlq|uqz^æü&ÛSª¿¾û¼&­=¿ZRnÉÛ«3´’[¥èW{ï~ýŸ·hšÃÑúËý…Ã7dîÞ_l_}_vêîa> Ïfl‡ŽÑÀN\ÈÐduc¼¬ÃëlzMñ®¿ŸO/ЪE |¶¨§À·oàóz¹l+øåÕÅçz±œÝluT×Àú½Ê¾Uñ¾º<ÖÇóE}­—lUÉöÞ¼?ü¸Ç^2RÉ© …ƒ­ÆgIîþ^2^ÈÁ _QØ®@[•°—û{/÷_@i¤‚e¯·ø¯«ñÞò;*ÏÐßÖÞ~ޱœ^žlöûéªãú7v¢×{ñ=|¸Ÿ¹îå²ß7ô]JmUh_=~øëë¼~ùæÙXRÃ߯Ҡ¤æ¡5±ò¡4±“²5±±¯•­};}×TŠ©SoÅ4vE)¡½wÁUžL—5½‡=xJÓÑ@óïDÚ×Ñ9Û×µi^KŒz{æýG]æIÞÀ\µÌï ùðÌßc¯ìu‡½n_ÉôÛ³œÃ{ÜmŸ»õcÜÃöÜ{gäoƒâ[ÞQnÏ»w†ëñxöæ›n·çÝ;@uy+9ð8,-s\³f~“÷O9}î‡Ã°Qô¶ç><+ôùÛëù«öd·çßoÙûÜýíÃíÜû]iŸûÀíŒépw­åÕdïu;=îjàw®«ù"àÜöÜ{­IŸùÀíÌXÄ…;D{¿rö¹œ®”ÜÛÖå6¸<þNi‰?TºÂ6ªýAôúÿ$øiv²¬>ñˆÿç š¯4ÿÆKóï MÝ…¸aB†±d 1/Ë“îFêvŒºcêž÷䙺÷7ÑÃHe¬Þü{ÇüC¬ÞÊÝ)tó³ “hv8ÿ¥w¶Ã endstream endobj 118 0 obj << /Type /XRef /Index [0 119] /Size 119 /W [1 3 1] /Root 116 0 R /Info 117 0 R /ID [<6FBA00389391AF5FA6AF5B227AD6C962> <6FBA00389391AF5FA6AF5B227AD6C962>] /Length 320 /Filter /FlateDecode >> stream xÚ%й2ƒqÅás¾ÏN$!"¶ ¶ˆ-"±Å¾'"3:ƒN¡W˜ÉLÃ-¨]‚†ZCCã (Ý‚œWóÌï¼ÿIŠ~ÀC^¨6Ä®XËbIìˆ5±)¶é†ûìyá ‡¨º³ÛªX½¢RTþœ½V‹*"øh³VÔáˆÍ=Q/êˆØ½Ý<¢HÀæ¾ðŠF"ul·œð ‘ Ú­Y4Û)›-"@äÊ6[E8,Ùl!â4osKD‡h'Î_ì¡Kti›Ý"L”¿möˆˆˆWö:c}¢_ÄÄ€CbXŒˆ¸ 1&ÆÅq¶¿š$^ VSdõ«U’Œ­¦ÉÙ7«y{b5C>E­Òäç—U†Žïÿu–ÎÔƒÕË#«y:ÏOV tÞ“V‹tgVYq Št»B ›(á E-ò endstream endobj startxref 208509 %%EOF gp2c-0.0.14/doc/gp2c001.png0000644000175000017500000000645014220021656011702 00000000000000‰PNG  IHDRŒÑÃÞ¢ bKGDÿ‡Ì¿ pHYsaa¨?§itIMEæ+Ip­Ú ¶IDATxÚí?ŒÛʇ?Ë×e_e\%ðuÏ%ÝpºMé×ñ¥0ð€×ÐíC^ùʽ&FJ×\¸‘º pC© 7§öº#^çTVJwNÁEI$Å?Kr%qçþvfvfvv*ÐÓ’ï|qñ׿ºw@O¤™ß8ØJÊÐ}Ü®ua¬Ç‘T4ÞT»ìG-º xgïè?ÉÕ7pˆˆúã'ÄE’‚Ò¯gHÂ*MmgZ¦ /PZbÜçVåäI®apYqk“Îç GÛšêô¤Á3f¬ˆ¹nÎæÌÀ(:×–Nõã[æU>#¦G`¶¥*×@4˜ÿ;& …áIÍZ¡@{ ü†i]\„)76(ðÝÊì`MoQî\ ’@È£EkW´S.L*+`È#¥Á›"lòRt¾iצñËM3N{Cˆð{ñt<©x‹pǪ½ó|·‰44³€¦‘S"¬±Ê49p ‡Ü›†Cíµ¶&ª 7qé-f&›™È©ÄSUeÅ2^:Aª4ç *ýM†ž¶iÿÈÿ€×\qÅk.qx…äç\òÉg<>ç.>-«¶Ê¥+[©_T…¿rŒ%$³Ô£ðp2Q±ÚeÈFF«æå ).q3ˆAœ®©{ø@„ä–ˆEŒ‹4g|fÖ~¼Á2z3¼3¤Ú>º­~¿£ßôÃÂ$ko™mçà4Ø$geüE·2Óé$0ÆýÓ¨G»š#‡Áå2Á¿Ê03Ø*ëX§S« 5éA’ÉYá¥î`Ì,X"”{Ï=ØÁ5+b\|Ü>wEnl®Ðƒ2pâãƒ-õÒhsà öΆe$[Þ7³ƒ•ÖTz`d@VöWýa%ÈM ÀJP`EDßÖ%(|`﬈æ!ÚH}“l[¿zÑaUOo½ê#3ÞÉz5Yúôs“̸x™»AÂÝ[Mb¥U85*íbÉô.|`Éw'Pý IR;¾Ôyä*wiŒ( ÑÜJá›2c‹æFôgnV ›•·‰j™ˆ>Òh›¡‰ËrÒ +›ÐmYÆN×ÌL÷¢ÈeñþîIϬüËÔ2HX‹•iáwoúeæÐÂá›þ˜Ö0쇙ªhåâP¦š¢wï'ïÓ©ì¬8j·êÎ7ô«2“”g'~IÉ_ž¯2C"ðö^¸×G’Dì¼.3/€®€Áw{WDD¬ˆpY°<°?>âÅ’%I——šÌ¬Y²¨ì/¢ˆˆ[¬êûuZÅÕ±4ç´ìQÏOvûõËɳ‰™Ø¦aÂd\›˜ñlb&¶Gµ­ªzõlb&f¤JSäĉ鞙²Jé¸+fäžÓÀAŸzÿokWàâƒ53·æ™™7È Xô÷\óÈ<ð–¤nh¡Ës“¾l"ýY8–žiñ|hñ·¾=¬ô†J•‰ò®/Tª0ãô5@¸ÅuÏ3~hù2AfÜ’(o‚¾m¬(ffm9ç,Qº`k øz¿Áœ¨ý>ëbÛ»L \ë‚­5RÛ„Zo}8èT]@j9c$«´`k…äK×øHÚšª6Ý«·“ U’‡¬ã§VÚd¼èôS f:X†n¾ù»“Ìï ›ã«±SusHЕ§÷²:¢;·óeæÝ=}F@R à`pÓÇm(d·ÏTVk³¡Š“($u­‹:ƒd–Ê :T룡°éDÐo¬mÕ–¢?Ø4LŽMÈÄö0sЙØ#¾ý2sk3±=ÌXu¤ÖXfÐ"<™t<(ªo?¦Œ™p‰Y÷K|ߤÜJ#ôl_½-ßw–"3À e›Ù­$Ý%'ûïïŽÖåôèé ¼CÀ+®ø; ˆP¸\ð‘WÌq¹ä EÄ×sZ¡«¿BmL:EûzPéïjW.]=0ë³ÿ @„Òsï\€Ð³ŸŸB°9 Ð@AÙ“£dÊ_€ÛL‚Ýbœ*qÐ)Ò”™Î‰ÌÌj'N5(¢Ô¿;i’¿‹µ”“Fð®pñ]I¯õ¦XBêr2À¤.(†€¹ ŸgüWO»7®ýðWƒËúG*»fvÚ mž* Õæž#¦ mA9o¤‘FÚ#u<àûX¬ž=[™yJÀl:>Þ³Þ(÷¹ ë"#__»b‰‡Âá‘$T|êLÏFëT¦³Ç‹%áâ"ÓUëUn1æ Ÿ[H¯]p¯ ¢®+†­Òç&äìñR“žW—¯<çg~eI„ƒäŸzGÄÕNÃú3ㆤ×JàŸ\á.—|®ðÌä¾’×\òŸ×Àî/£y=FS?ÒÎy^áÚ+3á` XN8((ƒÓ-0S*TòÆ®‚ÿÐ P,'´ËÀ ­Å"pÌÓ6³g‘A­ÅpBkA9'p¤‘Fê„ ´¾TgšªèvíÚ¡IWï X6yþ¢ÀI“W¹\šNmf³¸_ÄiÞV¥ý««Ú&+JƒÜÊ.ïrÙ0›,®`™Óæ¯Î˜¯ d°E[Ùå|.é¢2|Žâg–\!xŽ@àqÅe…Ük’Á}ÆŸ¶ò¸1Iø²qÃ+™rÍ.“Ãåç±©Ö P·yœYp2bNW8="ϦŒÀù…ö#0¢øæQ^F`ªÊ˹O×ïŽÿ0«°5* 0&£TC^ÎYbFyi"/Ç-1•Ü&MËË1‘d×ÿ×å`Û,›€q HB$÷ÌðÌqñ2§ *$ó–þ‡Ï?Ž˜Í6á€ÉOúÌ—Á‚BËĵ>à)hùÄØv`¦<@Útà{^p]rNr@È‚+Ú,¦¶o\ß-è€[¡l¬­¯Ž ‹&êáT)QŸø}XÉRÇ®©¤˜ÆåWãé6êc˜Ö¥®*Õñ2³×&ç¬×Só~RÜ0u¼Ì͵øePPw Æ4}‘Ží’ˆ>oYJ/{_kg*Æç->×€‹Ç ©·Ó$mm\ÝiûÓšlØeïÖ3ºzl#’>Ò. A, ¸!à;ÀGè6üK@Ä7^à×@D¨Ï?Ý|º±ÊÂyõ¸(P‚M ¬íæXrX²D¤Î¹Ãgë“Mäšœ¤]pí7Ç;N’[òiý»vþfØú]|óhûº¥}Û[·©Çn Œõ%«Ã«w"/§Î•8÷ ΑÈËapêì~­rm#y2Qõž—•%G–|êd¢:ƒ÷ž—…S¹£9gÛ jа‹Û,_gCÎwYà“Æú(Ál„CMZÅGY²±Ñ±dÅWø9m7EØ–—Ëá›ØH-¦éS^»vÏau:ìW^NYbZÊËXµyvÀxíÖ'£"0^ÛõéÉ(/çŒ×¾ža2Ê˹Ó8ž㣳”w¬ÞíT^ŽObvÛÜo¥9ÏN^dIÔ-»;%f·™m6Ç›¬ 8¹‡•Ékf»ãõs[!,MNÓvn·ßÌv;Ç{›¶µ•Nû” ËèÿK^ =/]kç%tEXtdate:create2022-03-27T08:43:26+00:00ˆGhÂ%tEXtdate:modify2022-03-27T08:43:26+00:00ùÐ~-tEXticc:copyrightCopyright Artifex Software 2011ºÅ´1tEXticc:descriptionArtifex Software sRGB ICC Profile †tEXtSoftwareGPL Ghostscript 9.53.3oœ¬'IEND®B`‚gp2c-0.0.14/doc/gp2c.dvi0000644000175000017500000014033014220021655011452 00000000000000÷ƒ’À;è TeX output 2022.03.27:1043‹ÿÿÿÿïheader=l3backend-dvips.proŽ ª ýs o ýÞ’‹áoóDÓítG®G®cmr17ÆAn–7tinŒqtrosŽduction“to“ó߆µTG® cmtt12Çgp2cŽŸ’…8ÇóX«Q cmr12ÈBy–ê¨Bill“Allomš¬rbSŽert“and“Ariel“P˜acettiŽŽŽŽŽŸˆ‹’ºkMarc¬rh–ê¨27,“2022ŽŸ+Ä‘5ó'ÂÖN ff cmbx12ÒCon•ŒÌten“tsޤ‘5ó(ò"V cmbx10Ó1Ž‘DWhat–ÕTis“ó)ßê‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¢9ŽŽ¦‘D3.5Ž‘[Example–UUof“optimisation‘[Í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¢9ŽŽ¦‘D3.6Ž‘[Tš¸ãypGes–UUand“mem˜bGer“functions‘¿G‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡10ŽŽ¡‘5Ó4Ž‘DCommon‘ÕTproblems’ßu11ŽŽ¦‘D½4.1Ž‘[Meta-commands.‘ã‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡11ŽŽ¦‘D4.2Ž‘[UnsuppGorted‘UUfunctions.‘"ì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡11ŽŽ¦‘D4.3Ž‘[Dynamically-scop•Ged›UUlo“cal˜v‘ÿqÇariables.‘)Õ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡12ŽŽ¦‘D4.4Ž‘[Memory–UUhandling“and“global“v‘ÿqÇariables.‘›‰‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡12ŽŽ¦‘D4.5Ž‘[SuppGort–UUfor“ó*m#½R cmss10Õt‘™˜‰ffŽ‘™šVECSMALL‘c‘ü½.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¦‘D4.6Ž‘[GP‘UUlists‘u‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¦‘D4.7Ž‘[The‘UUó+ý': cmti10Öinstal‘‚Øl‘]Þ½command>‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¦‘D4.8Ž‘[What–UUabGout“Õmain()“½?‘j‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡13ŽŽ¡‘5Ó5Ž‘DCommand-line–ÕToptions“of“Ôgp2c’¦ÈÇÓ13ŽŽŸ!Ä‘5Ò1Ž‘MLËWhat–ffis“ó,߆µTff cmtt12×gp2cÒ?ŽŸç‘5½The–Ô†Ôgp2c“½compiler“is“a“pacš¸ãk‘ÿqÇage‘Ô‡for“translating“GP‘Ôeroutines“in˜to“the‘Ô‡C‘Ôeprogram-ަ‘5ming–·language,‘Ïlso›·that“they“can“bGe˜compiled“and“used“with˜the“P‘ÿ*ªARI‘¶èsystemަ‘5or–UUthe“GP“calculator.ŽŽŸ’ß1ŽŽŒ‹* ª ýs o ý´‘D½The–Œmain“adv‘ÿqÇan¸ãtage“of“doing“this“is“to“spGeed“up“computations“and“to“includeޤ ‘5y•¸ãour›!o“wn˜routines‘!within˜the˜preexisting˜GP‘!ones.‘`ZIt˜ma“y˜also˜ nd‘!bugs˜in˜GPŽ¡‘5scripts.Ž¡‘DThis–UUpacš¸ãk‘ÿqÇage“(including“the“latest“v˜ersions)“can“bGe“obtained“at“the“URL:Ž¡‘5Ôhttp://pari.math.u-bordeaux.fr/download.html#gp2cŽŸþ6‘5ó-ÂÖN  cmbx12Ø1.1Ž‘SÀInstalling‘€ó.߆µT cmtt12Ùgp2cŽ©uT‘5½After–ŠØdo¸ãwnloading“the“ le“Ôgp2c-ó/ßêcreates“a‘j=directory‘ËÔgp2c-Úx.y.z–¼rÔplÚt“½,‘™Cwhic•¸ãh›j>con“tains˜the‘j=main˜Ôgp2c˜½ les.Ž¡‘5No•¸ãw›UUy“ou˜ha“v“e˜to˜install˜the˜program.Ž¡‘DY‘ÿ*ªou–»Áneed›»Âthe“ le˜Ôpari.cfg½.‘¥ This˜ le“can˜bGe“found˜in“the˜P‘ÿ*ªARI‘»eob‘Ž8jectŽ¡‘5directory–UUand“is“installed“in“ó1¼9ì™ tcrm1000Ü$½pre x/lib/pari/.Ž¡‘DCop¸ãy–UUor“link“this“ le“in“the“Ôgp2c“½directory‘ÿ*ª,“bGe“sure“to“call“it“Ôpari.cfg½.Ž¡‘5Óln–ÕT-s“.../lib/pari/pari.cfg“pari.cfgŽ¡‘D½Run– VÓ./con gure½,‘6Vwhicš¸ãh“will“searc˜h“for“the“P‘ÿ*ªARI‘ (v˜ersion“and“some“otherŽ¡‘5con guration–¹htošGols“of“the“system.‘žT‘ÿ*ªo“install“the“program,‘lt¸ãyp˜e“Ómak®9e½,‘landŽ¡‘5the–ÿ program›ÿ!will“bGe˜compiled.‘o)Y‘ÿ*ªou˜can“then˜run“Ómak•®9e‘˜˜c“hec“k–ÿ ½to˜v¸ãerify“thatŽ¡‘5evš¸ãerything–Ö¨has“gone“ ne“(a“bunc˜h“of“OK's“should‘Ö§sho˜w“up).‘õÀAll“of“this“isŽ¡‘5completely–UUstandard,“and“yš¸ãou“are“no˜w“ready“to“use“Ôgp2c½.Ž¡‘DY‘ÿ*ªou–Ÿ|can“use›Ÿ{Ôgp2c“½directly“from“this˜directory“or“y¸ãou“can“install˜it“b¸ãy“runningŽ¡‘5Ómak®9e‘ŸÀinstall›[½as–ZroGot.‘×If“y¸ãou“do˜not“install“it,‘1[y¸ãou˜can“run“it“from˜the“Ôgp2cŽ¡‘5½directory–UUbš¸ãy“t˜yping“Ó./gp2cŽŸ!Ä‘5Ò2Ž‘MLËA–ff×gp2c“ÒtutorialŽŸç‘5Ø2.1Ž‘SÀHoš w–€can“I“compile“and“run“m˜y“scripts?ަ‘5½The›ÐQsimplest‘ÐPw•¸ãa“y˜to–ÐPuse˜Ôgp2c˜½is“to˜call“Ôgp2c-run½.‘âºIf˜yš¸ãou“w˜an˜t‘ÐQto“kno˜w‘ÐQwhatŽ¡‘5happGens–UUin“detail,“see“next“section.Ž¡‘DT‘ÿ*ªo– /makš¸ãe“the“examples“easier“to“follo˜w,‘9åplease“mo˜v˜e“to“the“Ôgp2c“½directoryŽ¡‘5and–UUlink“the“roGot“of“y¸ãour“P‘ÿ*ªARI“source“there:Ž¡‘5Óln–ÕT-s“.../pari“.Ž¡‘D½As›KŸan–K example,‘É1w¸ãe“will˜tak¸ãe“the˜ le“Ôpari/examples/squfof.gp½,‘É1whic¸ãhŽ¡‘5is–‘Êa›‘Ësimple“implemen¸ãtation˜of“the˜w•¸ãell-kno“wn‘‘ÊSQUF“OF‘‘yfactoring˜methoGd‘‘ÊofŽ¡‘5D.‘UUShanks.Ž¡‘DW‘ÿ*ªe–UUjust“run“the“command:Ž¡‘5Ó./gp2c-run‘ÕTpari/examples/squfof.gpŽ¡‘D½After–M…a“little“prošGcessing“w¸ãe“get“a“GP‘MDsession.‘ZWBut“this“session“is“sp˜ecial,Ž¡‘5bGecause–rÀit“conš¸ãtains“the‘rÁcompiled“Ösqufof‘‘T½function.‘&@Hence“w˜e‘rÁcan“do“the“follo˜wing:ŽŸ‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýsqufof(3097180303181)ŽŽŸ’ß½2ŽŽŒ‹¯ ª ýs o ý´‘5Ô[419]ޤ ‘5i–?ý=“596Ž¡‘5Qfb(133225,–?ý1719841,“-261451,“0.E-28)Ž¡‘5%1–?ý=“1691693ŽŸ‘5½Let's–UUtry“a“bigger“example:Ž©‘5Ô?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘?ú***‘¿÷the–?ýPARI“stack“overflows“!Ž¡‘?úcurrent–?ýstack“size:“4.0“MbytesŽ¡‘?ú[hint]–?ýyou“can“increase“GP“stack“with“allocatemem()Ž¡‘5?‘?ýallocatemem()Ž¡‘?ú***‘¿÷Warning:–?ýdoubling“stack“size;“new“stack“=“8.0“MBytes.Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5%2–?ý=“73823023ަ‘5½W‘ÿ*ªe–Ï;need“a“large“stacš¸ãk“bGecause“b˜y“default‘Ï<Ôgp2c“½došGes“not“generate“co˜de“to“handleŽ¡‘5the–pÃstac¸ãk›pÄ(the“so-called˜Õgerepile˜½coGde).‘ÄT‘ÿ*ªo“instruct˜Ôgp2c˜½to“add“Ôgerepile˜½coGdeŽ¡‘5automatically‘ÿ*ª,‘fw•¸ãe›ëm“ust–êuse“the˜Ó-g“½option.‘[NSo˜quit“this˜GP‘Ùsession“and˜launc¸ãh“aŽ¡‘5new–UUone“with“-g.‘qÇOh“wš¸ãell,“bGefore“that“t˜ypGeŽ¡‘5Óls‘ÕTpari/examples/squfof.gp*ަ‘5Ôpari/examples/squfof.gp‘ÿôpari/examples/squfof.gp.runŽ¡‘5pari/examples/squfof.gp.c‘ úpari/examples/squfof.gp.soŽ¡‘5pari/examples/squfof.gp.oަ‘D½These–UUare“the“ les“generated“b¸ãy‘xâÔgp2c-run½:ަ‘DRÜ€ˆŽŽŽ‘N½pari/examples/squfof.gp.c–UUis“the“C“ le“generated“b¸ãy‘xâÔgp2c½.ަ‘DRÜ€ˆŽŽŽ‘N½pari/examples/squfof.gp.o–UUis“the“ob‘Ž8ject“ le“generated“b¸ãy“the“C“compiler.ަ‘DRÜ€ˆŽŽŽ‘N½pari/examples/squfof.gp.so–UUis“the“shared“library“generated“bš¸ãy“the“link˜er.ަ‘DRÜ€ˆŽŽŽ‘N½pari/examples/squfof.gp.run–ePis›eOa“ le˜that“con¸ãtains˜the“commands˜neededŽ¡‘Nto–UUload“the“compiled“functions“inside“GP‘ÿ*ª.ަ‘5It–UUis“the“shared“library“whicš¸ãh“is“used“b˜y“GP‘ÿ*ª.Ž¡‘DNoš¸ãw–UUlet's“con˜tin˜ue:Ž¡‘5Ó./gp2c-run–ÕT-g“pari/examples/squfof.gpަ‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5%1–?ý=“73823023ŽŽŸ’ß½3ŽŽŒ‹'. ª ýs o ý´‘D½This–P"time›P!it“w¸ãorks˜with“no˜dicult¸ãy“using“the˜default“stac•¸ãk.‘p W‘ÿ*ªe˜w“ould‘P"lik“eޤ ‘5to›Ákno•¸ãw‘Á‚ho“w˜m“uc“h–Á‚faster˜the˜compiled“coGde˜runs,‘Üso˜w¸ãe˜need“to˜load“the˜nonŽ¡‘5compiled–UUÖsqufof‘sé½ le“in“GP:Ž©‘5Ô?–?ý\r“pari/examples/squfof.gpŽ¡‘?ú***‘¿÷unexpected–?ýcharacter:“squfof(n)=if(isprime(n),returŽ¡’¿‹^--------------------ަ‘5½Wh¸ãy??‘âBecause–ÐÖsqufof‘already“exists“as‘Ðan“installed“function“and“GP‘ÏörefusesŽ¡‘5to›£¥o•¸ãv“erwrite˜it.‘\¶T‘ÿ*ªo˜solv“e˜this˜problem,‘·9w“e˜will˜add˜a˜sux‘£¤to˜the˜name˜of˜theŽ¡‘5compiled–UUfunction“under“GP‘ÿ*ª.“Quit“the“session“and“t¸ãypGe:Ž¡‘5Ó./gp2c-run–ÕT-g“-s‘°¡‰ffs4Ž‘#Õc“pari/examples/squfof.gpŽ¡‘D½Noš¸ãw–UUthe“function“squfof“is“named“squfof‘™˜‰ffŽ‘™šc“instead,“so“w˜e“can“doŽ©‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?–?ý\r“pari/examples/squfof.gpŽ¡‘5?‘?ý#Ž¡‘D¿÷timer–?ý=“1“(on)Ž¡‘5?‘?ýsqufof(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5time–?ý=“5,810“ms.Ž¡‘5%1–?ý=“73823023Ž¡‘5?‘?ýsqufof_c(122294051504814979)Ž¡‘5[20137]Ž¡‘5[20137,‘?ý3445]Ž¡‘5i–?ý=“46474Ž¡‘5Qfb(321233929,–?ý131349818,“-367273962,“0.E-28)Ž¡‘5time–?ý=“560“ms.Ž¡‘5%2–?ý=“73823023ަ‘5½So–Yxthe›Ywcompiled“v¸ãersion“is˜more“than“ten˜times“faster“than˜the“noncompiledŽ¡‘5one.‘†£Ho•¸ãw“ev“er–±Ÿfor›±žmore“complex˜examples,‘°compiled“coGde˜usually“runs˜onlyŽ¡‘5three–UUtimes“faster“on“a•¸ãv“erage.Ž¡‘DAn–½ extra‘½¡tricš¸ãk:‘B^once“y˜ou“ha˜v˜e›½¡run“Ôgp2c-run“½on˜y¸ãour“script,‘׳it˜is“compiledŽ¡‘5and–ÆØyš¸ãou“can‘Æ×use“the“compiled“v˜ersion“outside‘Æ×Ôgp2c-run“½in“an˜y“GP‘ƺsession“b˜yŽ¡‘5loading–çëthe“ le“with“extension“Ô.gp.run½.‘MOF‘ÿ*ªor“example“quit“the“Ôgp2c-run“½sessionŽ¡‘5and–UUstart“Ôgp“½and“doŽ©‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?–?ý\r“pari/examples/squfof.gp.runަ‘D½No•¸ãw›UUy“ou˜ha“v“e˜access˜to˜the˜compiled˜function˜Ösqufof‘‰ffŽ‘®c‘æ ½as˜w“ell.ŽŸþ6‘5Ø2.2Ž‘SÀHo w–€can“I“compile“directly“with“Ùgp2cØ?ŽŸuT‘5½No•¸ãw› €w“e˜w“an“t˜to– compile˜directly˜with˜Ôgp2c˜½to˜understand˜what“happGens.‘SHW‘ÿ*ªeŽ¡‘5should–UUrun“the“commandŽ¡‘DÓ./gp2c–ÕTpari/examples/squfof.gp“Ô>“Ósqufof.gp.cŽŽŸ’ß½4ŽŽŒ‹/Ÿ ª ýs o ý´‘D½This–_Âcreates“a›_Á le“squfof.gp.c“in“the“Ôgp2c˜½directory‘ÿ*ª.‘‘No¸ãw“read˜this“ le“withޤ ‘5y•¸ãour›UUfa“v“orite˜editor.Ž¡‘DThe–UU rst“line“is“highly“system-depšGenden¸ãt,“but“should“b˜e“similar“to:ŽŸ ‘5ó3ߤN cmtt9Þ/*-*-–¹–compile-command:“"/usr/bin/gcc“-c“-o“pari/examples/squfof.gp.oޤ ‘>s,-O3–¹–-Wall“-I/usr/local/include“pari/examples/squfof.gp.cŽ¡‘>s,&&–¹–/usr/bin/gcc“-o“pari/examples/squfof.gp.soŽ¡‘>s,-shared‘,Âpari/examples/squfof.gp.o";‘¹–-*-*/ŽŸ ‘D½This–Vis›Uthe“command˜needed“to“compile˜this“C‘G le“to“an˜ob‘Ž8ject“ le˜with“theޤ ‘5C‘æcompiler›æ3and–æ4then“to˜mak¸ãe“a“shared“library˜with“the“linkš¸ãer.‘L¼If“y˜ou‘æ3use“Ôemacs½,Ž¡‘5tš¸ãyping–Ý£'M-x‘ݤcompile'“will“kno˜w“abGout‘ݤthis“command,‘ÿ·so“y˜ou“will“just‘ݤneed“toŽ¡‘5t¸ãypGe–UUÔReturn“½to“compile.Ž¡‘DThe–UUsecond“line“isޤ³3‘5Ô#include‘?ýŽ¡‘5½This–fÞincludes›fÝthe“P‘ÿ*ªARI‘fØheader“ les.‘¦`It“is˜impGortan¸ãt“that˜the“header˜ les“comeŽ© ‘5from–UUthe“same“P›ÿ*ªARI“v¸ãersion“as“GP˜,“else“it“will“create“problems.ޤ ‘DThe–UUnext“lines“areŽŸ³4‘5Þ/*Ž¡‘5GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");Ž¡‘5*/ŽŸ³3‘D½The–”*c¸ãharacters›”)"GP;"“denote˜a“command˜that“should˜bGe“read˜b¸ãy“GP‘“×atަ‘5start-up.‘J]Here,‘„èthe›H2Öinstal‘‚Øl()‘¦Å½commands‘H1abGo•¸ãv“e˜m“ust˜bGe‘H1giv“en˜to˜GP‘Góto‘H1let˜itަ‘5knoš¸ãw–ûÝabGout“functions“de ned‘ûÞb˜y“the“library‘ÿ*ª.‘SôÔgp2c-run‘ûÞ½cop˜y“suc˜h“commands“toަ‘5the–UU le“Ô./pari/examples/squfof.gp.run½.ަ‘DPlease–UUread“the“enš¸ãtry“abGout“the“Öinstal‘‚Øl()‘³è½command“in“the“P‘ÿ*ªARI“man˜ual.ަ‘DThe–PÖinit‘‰ffŽ‘®squfof‘n¨½function›Pis“an“initialization“function“that˜is“created“auto-ަ‘5matically–WŒb¸ãy“Ôgp2c›W½to“hold“coGdes“that“is˜outside“an¸ãy“function.‘xlSince˜in“our“caseަ‘5there–ôare›ônone,‘Ãthis“is˜a“dumm¸ãy˜function.‘NIn“other˜cases,‘Ãit“is˜essen¸ãtial.‘NTheަ‘5next–UUlines“areޤ ‘5ÔGEN–?ýsqufof(GEN“n,“long“prec);ަ‘5void‘?ýinit_squfof(void);ަ‘5/*End–?ýof“prototype*/Ž¡‘5½This–ñdis›ñethe“C‘ñ“Ósqufof2.gp.cަ‘D½and–UUlošGok“at“the“di erence“b˜et•¸ãw“een–UUsqufof.gp.c“and“squfof2.gp.c:ޤ ‘5Ódi –ÕT-u“squfof.gp.c“squfof2.gp.cŽŸ³3‘5Þ---–¹–squfof.gp.c“Tue“Feb“26“13:44:42“2002Ž¡‘5+++–¹–squfof2.gp.c‘%̰Tue“Feb“26“13:44:49“2002Ž¡‘5@@–¹–-1,8“+1,8“@@Ž¡‘9¹–/*-*-–¹–compile-command:“"/usr/bin/gcc“-c“-o“pari/examples/squfof.gp.oŽ¡‘>s,-DMEMSTEP=1048576–¹–-g“-Wall“-Wno-implicit‘ s,-I/usr/local/includeŽ¡‘>s,pari/examples/squfof.gp.c–¹–&&“/usr/bin/ld“-o“pari/examples/squfof.gp.soŽ¡‘>s,-shared‘,Âpari/examples/squfof.gp.o";‘¹–-*-*/ŽŽŸ’ß½5ŽŽŒ‹9P ª ýs o ý´‘9¹–Þ#include‘¹–ޤ ‘9¹–/*Ž¡‘5-GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5-GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");Ž¡‘5+GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so");Ž¡‘5+GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so");Ž¡‘9¹–*/Ž¡‘9¹–GEN–¹–squfof(GEN“n,“long“prec);Ž¡‘9¹–void‘¹–init_squfof(void);Ž©‘D½If–P,yš¸ãou“are“not‘P+familiar“with“the“Ôdiff“½utilit˜y‘ÿ*ª,‘Q4the“abGo˜v˜e‘P+means“that“only“theޤ ‘5t•¸ãw“o–ÝAlines›ÝBstarting“with˜ÖGP;instal‘‚Øl‘åʽha•¸ãv“e˜c“hanged.‘ ŒIn–ÝAfact˜Ösqufof‘ûÕ½is˜still“namedŽ¡‘5Ösqufof‘žm½in›Úthe–ÙC‘Î le,‘Š{but“the“install˜command“tells“GP‘Ïto“rename“it˜Ösqufof‘‰ffŽ‘®c‘½inŽ¡‘5the–UUGP“session.ŽŸþ6‘5Ø2.3Ž‘SÀUsing–€Ùgp2c“Øto“ nd“errors“in“GP“scriptsŽŸuT‘5½The–7Ôgp2c“½compiler›8can“also“bGe“used˜to“ nd“errors“in˜GP‘"programs.‘V¾F‘ÿ*ªor“that“w¸ãeŽ¡‘5should–UUuse“the“-W“option“lik¸ãe“inŽ¡‘DÓ./gp2c–ÕT-W“pari/examples/squfof.gp“Ô>“Ósqufof.gp.cަ‘5ÔWarning:pari/examples/squfof.gp:7:variable‘?ýundeclaredŽ¡‘5pŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5ddŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5dŽ¡‘5Warning:pari/examples/squfof.gp:11:variable‘?ýundeclaredŽ¡‘5bŽ¡‘5...Ž¡‘5Warning:pari/examples/squfof.gp:45:variable‘?ýundeclaredŽ¡‘5b1ަ‘D½This–ï¼option“lists“v‘ÿqÇariables“that“are“used“but‘ï»not“declared.‘@üIt“is“impGortan¸ãtŽ¡‘5to–™declare“all“y¸ãour“v‘ÿqÇariables‘™with“Ömy()½,›ªor“with“Öglob‘ÿ}'al()½.‘=F‘ÿ*ªor“Ôgp2c½,˜undeclaredŽ¡‘5v‘ÿqÇariables–Óoare›Óntak¸ãen“to“bGe˜\formal“v‘ÿqÇariables"“for˜pGolynomials.‘F{F‘ÿ*ªor“example˜if“y¸ãouŽ¡‘5write–UUa“function“to“build“a“second“degree“pGolynomial“lik¸ãeަ’§À!Ôpol(a,b,c)=a*x^2+b*x+cަ‘5½y•¸ãou›UUm“ust˜not˜declare˜'x'˜here,˜since˜it˜stands˜for˜the˜formal˜v‘ÿqÇariable˜Öx½.ŽŸþ6‘5Ø2.4Ž‘SÀUsing–€compiled“functions“in“a“new“programŽŸuT‘5½One›dy•¸ãou‘eha“v“e˜successfully–ecompiled˜and“tested˜y¸ãour“functions˜yš¸ãou“ma˜y‘dw˜an˜t“toŽ¡‘5reuse–UUthem“in“another“GP“program.Ž¡‘DThe›ÁibGest‘Ájw•¸ãa“y˜is˜to˜cop“y–Ájthe˜install˜commands˜of“the˜functions˜y¸ãou˜use“at˜theŽ¡‘5start–¸of›¹the“new“program˜so“that“reading“it˜will“automatically“load˜the“compiledŽ¡‘5functions.ޤ ‘DAs–UUan“example,“w¸ãe“write“a“simple“program“Ôfact.gp“½that“readsŽŸ‘5Þinstall("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5fact_mersenne(p)=squfof(2^p-1)ŽŽŸ’ß½6ŽŽŒ‹E© ª ýs o ý´‘D½and–UUrun“GP:Ž©‘5Ôparisize–?ý=“4000000,“primelimit“=“500000ޤ ‘5?‘?ý\rfactŽ¡‘5?‘?ýfact_mersenne(67)Ž¡‘5i–?ý=“2418Ž¡‘5Qfb(10825778209,–?ý4021505768,“-13258245519,“0.E-28)Ž¡‘5%1–?ý=“193707721ަ‘D½So–Àˆall›À‡goGes“w¸ãell.‘@.But˜what“is˜ev¸ãen“bGetter“is˜that“Ôgp2c“½understands˜the“Öinstal‘‚ØlŽ¡‘5½command–UUand“will“bGe“able“to“compile“this“new“program.Ž¡‘DAlso–†ìthis›†íparticular“example“will“fail˜bšGecause“as“stated“ab˜o•¸ãv“e,‘ÓRP‘ÿ*ªARI/GPŽ¡‘5already–çhas›èa“Õsqufof‘O¯½function,‘° and“the˜linkš¸ãer“will“pic˜k›èthe“wrong˜one,‘° whic¸ãh“isŽ¡‘5unfortunate.Ž¡‘DSo–UUuse“the“-p“option“to“Ôgp2c-run“½to“c¸ãhange“Ösqufof‘sé½to“Ömy‘‰ffŽ‘®squfof½.Ž¡‘8ÕTÓ./gp2c-run–ÕT-pm®9y‘°¡‰ffs4Ž‘ù)-g“pari/examples/squfof.gpޤ ‘D½This–ÙÚoption“pre xes“mš¸ãy‘™˜‰ffŽ‘stto“ev˜ery“GP‘Ù¸name‘ÙÛin“the“program“so“as“to“a˜v˜oidŽ¡‘5name–UUclashes.‘qÇChange“Ôfact.gp“½toŽŸ‘5Þinstall("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");Ž¡‘5fact_mersenne(p)=squfof(2^p-1)ަ‘D½and‘UUrunޤ ‘5Ó./gp2c-run–ÕT-g“fact.gpަ‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýfact_mersenne(67)Ž¡‘5i–?ý=“2418Ž¡‘5Qfb(10825778209,–?ý4021505768,“-13258245519,“0.E-28)Ž¡‘5%1–?ý=“193707721ަ‘D½Nice–UUisn't“it?ޤ ‘DBut–¤ˆit“gets“ev¸ãen“bGetter:‘-instead“of“writing“the“Öinstal‘‚Øl‘­½command“directly“inŽ¡‘5yš¸ãour–Â-script“y˜ou›Â.can“just“load“the“Ôsqufof.gp.run“½using˜Ô\r½:‘(3just“c¸ãhange“Ôfact.gpŽ¡‘5½toŽŸ‘5Þ\r‘¹–./pari/examples/squfof.gp.runŽ¡‘5fact_mersenne(p)=squfof(2^p-1)ŽŸþ6‘5Ø2.5Ž‘SÀHand-editing–€the“C“ le“generated“b y“Ùgp2cŽŸuT‘5½If›( y•¸ãou‘(ha“v“e˜some˜expGerience‘(in˜P‘ÿ*ªARI‘(programming,‘1*y“ou˜ma“y˜w“an“t‘(to˜man“uallyޤ ‘5edit›1îthe–1ïC‘1µ le“generated˜b¸ãy“Ôgp2c½,‘ifor˜example“to˜impro•¸ãv“e‘1ïmemory˜handling.Ž¡‘5Here–UUsome“tips:ަ‘DRÜ€ˆŽŽŽ‘N½If›~ y•¸ãou‘~ preserv“e˜the–~ Öinstal‘‚Øl()‘Üœ½at˜the“start˜of“the˜ le,‘ˆ6y¸ãou“can˜use“the˜com-Ž¡‘Nmand–pºÓgp2c-run‘ôÔÛ leÓ.c“½to›p¹recompile“y¸ãour˜ le“and“start˜a“new˜GP‘p³sessionŽ¡‘Nwith–UUyš¸ãour“functions“added,“just“as“y˜ou“use“Ógp2c-run“½with“GP“scripts.ަ‘DRÜ€ˆŽŽŽ‘N½More–Šàgenerally‘ÿ*ª,‘³^Ógp2c-run“½automatically“passes“an¸ãy“line“in‘Šßthe“C‘Š­ le“start-Ž¡‘Ning–UUwith“'GP;'“to“GP“at“start-up.ަ‘DRÜ€ˆŽŽŽ‘N½As–n±explained“in“Section›n²2.2,‘uunder“Óemacs“½y¸ãou“can˜t¸ãypGe“'M-x“compile'“toŽ¡‘Nrecompile–UUthe“shared“library‘ÿ*ª.ŽŽŸ’ß7ŽŽŒ‹PN ª ýs o ý´‘5Ò3Ž‘MLËAdv‘ÿ™anced–ffuse“of“×gp2cŽŸç‘5Ø3.1Ž‘SÀÙgp2c‘€Øt yp`esŽ©uT‘5½Inš¸ãternally–­ñÔgp2c“½assign“t˜ypGes›­ðto“ob‘Ž8jects.‘{›The“most˜common“tš¸ãypGes“are“giv˜enޤ ‘5bGelo¸ãw:ŽŸo³3Ÿ™³1‘Jname‘É៙œ„ ffŽ‘{RodescriptionŽŽ‘DŸ‰ffð³&Ÿfd‘Övoid‘;³Ÿ™œ„ ffŽ‘7Ro½lik¸ãe–UUin“CŽŽ¡‘Öb–ÿ}'o“ol‘Ä=Ÿ™œ„ ffŽ‘7Ro½b•Go“olean,–UUtrue“(1)“or“false“(0)ŽŽ¡‘Öne–ÿ}'gb“o“ol‘ t Ÿ™œ„ ffŽ‘7Ro½an¸ãtib•Go“olean,–UUtrue“(0)“or“false“(1)ŽŽ¡‘Ösmal‘‚Øl‘BŸ™œ„ ffŽ‘7Ro½C–UUin¸ãteger“ÕlongŽŽ¡‘Öint‘gŸ™œ„ ffŽ‘7Ro½m•¸ãultiprecision‘UUin“tegerŽŽ¡‘Ör–ÿ}'e“al‘©8Ÿ™œ„ ffŽ‘7Ro½mš¸ãultiprecision–UU oating“pGoin˜tŽŽ¡‘Ömp‘ÕJŸ™œ„ ffŽ‘7Ro½m•¸ãultiprecision‘UUn“um“bGerŽŽ¡‘Övar‘1¾Ÿ™œ„ ffŽ‘7Ro½v‘ÿqÇariableŽŽ¡‘Öp‘ÿ}'ol‘ÚûŸ™œ„ ffŽ‘7Ro½pGolynomialŽŽ¡‘Öve‘ÿ}'csmal‘‚Øl‘ÕVŸ™œ„ ffŽ‘7Ro½v¸ãector–UUof“C“long“(Õt‘™˜‰ffŽ‘™šVECSMALL½)ŽŽ¡‘Öve‘ÿ}'c‘ÕNŸ™œ„ ffŽ‘7Ro½v¸ãector–UUand“matrices“(excluding“Öve‘ÿ}'csmal‘‚Øl‘‰½)ŽŽ¡‘Ölist‘·Ÿ™œ„ ffŽ‘7Ro½GP‘UUlistsŽŽ¡‘Östr‘~ŠŸ™œ„ ffŽ‘7Ro½cš¸ãharacters–UUstring“as“a“Õcha˜r“*ŽŽ¡‘Ögenstr‘¬Ÿ™œ„ ffŽ‘7Ro½c¸ãharacters–UUstring“as“a“ÕGEN“½(Õt‘™˜‰ffŽ‘™šSTR½)ŽŽ¡‘Ögen‘LÄŸ™œ„ ffŽ‘7Ro½generic–UUP‘ÿ*ªARI“ob‘Ž8ject“(ÕGEN½)ŽŽ¡‘Ölg‘#÷kŸ™œ„ ffŽ‘7Ro½length–UUof“ob‘Ž8ject“(returned“b¸ãy“Ölength‘Äc½)ŽŽ¡‘Ötyp‘ÕLŸ™œ„ ffŽ‘7Ro½tš¸ãypGe–UUof“ob‘Ž8ject“(returned“b˜y“Ötyp‘ÿ}'e‘À[½)ŽŽŽŽŽ "%ì ÿRÊã CV’ëQ ÿq¼ªgenŽŽ’ò_ Ÿ‚Îü„9ïfeŽŽ’ë ‰ŸŽ0ˆmpŽŽ’ÛÏ:Ÿ‚Îüó äO£ line10·Ž’à ) ÿ~–«ŽŽ’ÒŸŽ0ˆ½v¸ãecŽŽ’Çä…Ÿ‚Îü·Ž’Ñä… ÿ}ÎüŽ’Ûä… ÿxÎüŽ’à ) ÿv½ŽŽ’ÁJŸŽ0ˆ½pGolŽŽ’DZSŸŸBÚ„9ïfeŽŽ’Á¼Ÿª¤fv‘ÿqÇarŽŽ’ùp‘Ÿª¤frealŽŽ’ù¤¤ŸŸBÚ·@Ž’õjµŸ› ‰@ŽŽ’ÙdÑŸª¤f½in¸ãtŽŽ’ဟŸBÚ·Ž’å¹ïŸ› ‰ŽŽ’×…ŸÇD½smallŽŽ’áLΟ»¶¸„9ïfeŽŽ’ÙzhŸãŒ"b•Go“olŽŽ’ʼèŸÏ¡m·Ž’ÌtŸÎ@&ŽŽ’§LšŸÕR3½negb•Go“olŽŽ’ÌtŸà³¿·@Ž’Ê¼èŸßRx@ŽŽ’áLΟØ*–„9ïfeŽŽ’ÙÁ…½v¸ãoidŽŽ’ï¹ïŸý'·Ž’ò9ïŸó'Ž’ô¹ïŸé'Ž’÷9ïŸß'Ž’ù¹ïŸÕ'Ž’ü9ïŸË'Ž’þ¹ïŸÁ'Ž’$¤Ÿ·~¨ŽŽ’áLΟôžt„9ïfeŽŽŽŽŽŽŸ’¬_û½T‘ÿ*ªable–UU1:‘qÇT¸ãypGes“preorderŽŽŽŸ/b‘DT¸ãypGes–[îare“preordered›[ïas“in“T‘ÿ*ªable“1.‘…“The“complete“preorder˜knoš¸ãwn“b˜y“Ôgp2cŽ¡‘5½can–UUbGe“accessed“b¸ãy“running“Ógp2c‘ÕT-t½.Ž¡‘DV‘ÿ*ªariables–Jñare“tš¸ãypGed.‘nPA‘Jïv‘ÿqÇariable“can“only“tak˜e“v‘ÿqÇalues“ha˜ving“a“t˜ypGe“equal“orŽ¡‘5lo•¸ãw“er–UUthan“its“tš¸ãypGe.‘qÇBy“default,“v‘ÿqÇariables“are“of“t˜ypGe“Ögen½.ŽŸª…‘5Ø3.2Ž‘SÀT yp`e‘€declarationަ‘5½T‘ÿ*ªo–UUdeclare“a“v‘ÿqÇariable“as“bšGelonging“to“t¸ãyp˜e“Ötyp‘ÿ}'e½,“use:ŽŸ{7‘NÖfunction‘Äc½(xÖ:typ–ÿ}'e½,yÖ:typ“e‘À[½=2)Ž¡‘Nm¸ãy(xÖ:typ–ÿ}'e½,‘UUyÖ:typ“e‘À[½=2)ŽŽŸ’ß8ŽŽŒ‹ Z¼ ª ýs o ý´‘N½global(xÖ:typ–ÿ}'e½,‘UUyÖ:typ“e‘À[½=2)Ž© ‘Nfor(iÖ:typ‘ÿ}'e‘À[½=...ޤ‘DT‘ÿ*ªo–UUdeclare“sevš¸ãeral“v‘ÿqÇariables“of“the“same“t˜ypGe“Ötyp‘ÿ}'e‘°½at“once,“use:Ž¡‘Nm¸ãy(x,‘UUy=2)Ö:typ‘ÿ}'eަ‘N½global(x,‘UUy=2)Ö:typ‘ÿ}'eŽ¡‘D½Y‘ÿ*ªou–UUcan“evš¸ãen“mix“the“t˜w˜o“w˜a˜ys:Ž¡‘Nm¸ãy(x,‘UUy:Ötyp–ÿ}'e2‘[½=2)Ö:typ“e1Ž¡‘5½will–UUdeclare“Öx‘‰™½to“bšGe“of“t¸ãyp˜e“Ötyp‘ÿ}'e1‘°[½and“Öy‘7Ò½of“t¸ãyp˜e“Ötyp‘ÿ}'e2½.ŽŸþ6‘5Ø3.3Ž‘SÀE ect–€of“t yp`es“declaration“on“default“v‘ÿ@aluesŽŸuT‘5½Under–6GP‘ÿ*ª,›5all“GP‘v‘ÿqÇariables“start˜with“a˜default“v‘ÿqÇalue,‘Kmwhic¸ãh“is˜Ö0‘u<½for˜a“loGcalަ‘5v›ÿqÇariable–UUand“Ö'v‘hâ½for“a“global“v˜ariable“Öv½.ަ‘DThe–4Ôgp2c“½compiler“folloš¸ãws“this“rule“for“v‘ÿqÇariables“declared“without“a“t˜ypGe.ަ‘5Ho•¸ãw“ev“er,‘€øwhen–Kàa›Káv‘ÿqÇariable“is˜declared“with“a˜t¸ãypGe,‘€øÔgp2c“½will˜not“assign“it˜a“defaultަ‘5v‘ÿqÇalue.‘B]This–Çmeans›Çthat“the˜declaration“Ömy(g)‘%©½is˜equiv‘ÿqÇalen¸ãt“to˜Ömy(g:gen=0)½,‘ãŠbutަ‘5not–Ùžto“Ömy(g:gen)½,‘ú±Ömy(g)‘81½is“equiv‘ÿqÇalen¸ãt›ÙŸto“Ömy(g:gen='g)½,‘ú°but˜not“to“Ömy(g:gen)½,ަ‘5and–UUÖf(g)=...‘qǽis“equiv‘ÿqÇalen¸ãt“to“Öf(g:gen=0)=...½,“but“not“to“Öf(g:gen)=...½.ަ‘DThis–UUrule“wš¸ãas“c˜hosen“for“sev˜eral“reasons:Ž¡‘DRÜ€ˆŽŽŽ‘N½The–¯÷default“v‘ÿqÇalue“(Ö0‘ ý½or“Ö'v‘½)“mighš¸ãt“not‘¯öbGe“an“ob‘Ž8ject“suitable“for“the“t˜ypGeަ‘Nin–Jquestion.‘u¨F‘ÿ*ªor“example,‘,HÖmy(v:ve‘ÿ}'c)‘_Þ½declares“Öv‘ؽas“bšGeing‘Kof“t¸ãyp˜e‘KÖve‘ÿ}'c½.‘u§Itަ‘Nw•¸ãould›0mak“e–/no˜sense“to˜initialize˜Öv‘¢¼½to˜Ö0‘ê5½since˜Ö0‘ê6½doGes“not˜bGelong“to˜t¸ãypGeަ‘NÖve–ÿ}'c½.‘; Similarly›±'Öglob“al(N:int)‘º½declares˜ÖN‘T‹½as˜b•Geing˜of‘±&t¸ãyp“e˜Öint½.‘; It˜w•¸ãould˜mak“eަ‘Nno–UUsense“to“initialize“ÖN›øã½to“Ö'N˜½since“Ö'N˜½došGes“not“b˜elong“to“t¸ãyp˜e“Öint½.Ž¡‘DRÜ€ˆŽŽŽ‘N½This–b’alloš¸ãws“de ning–b“GP‘bŽfunctions“with–b’mandatory“argumen˜ts.‘™This“w˜a˜y‘ÿ*ª,ަ‘NGP‘q|will–qƒissue›q„an“error˜if“a“mandatory˜argumen¸ãt“is“missing.‘ÆSWithout“thisަ‘Nrule,–UUthere“is“no“w•¸ãa“y–UUto“tell“apart“Ö0‘°[½from“a“missing“argumen¸ãt.Ž¡‘DRÜ€ˆŽŽŽ‘N½This–UUallo¸ãws“telling“Ôgp2c“½not“to“generate“useless“default“v‘ÿqÇalues.ŽŸþ6‘5Ø3.4Ž‘SÀT yp`e‘€castingŽŸuT‘5½Sometimes,‘¶:w•¸ãe›Žskno“w‘Žra˜more˜precise˜t“ypGe–Žrthan˜the˜one˜the“transt¸ãyping˜algorithmަ‘5can–\,derivš¸ãe.‘†KF‘ÿ*ªor“example“if“Öx‘p½is‘\+a“real“n˜um˜bGer,‘]âits“logarithm‘\+migh˜t“bGe“complex.ަ‘5Ho•¸ãw“ev“er,–UUif“wš¸ãe“are“sure“Öx‘‰™½is“pGositiv˜e,“the“logarithm“will“bGe“real.ަ‘DT‘ÿ*ªo–UUforce“an“expression“to“bšGelong“to“t¸ãyp˜e“Ötyp‘ÿ}'e½,“use“the“syn¸ãtax:ަ‘5Öexpr‘:typ‘ÿ}'eަ‘5Ôgp2c›{ܽwill‘{Ýc•¸ãhec“k˜t“ypGes˜consistency‘{Ýand˜output˜w“arnings˜if‘{Ýnecessary–ÿ*ª.‘)JF“or˜exampleަ‘5Öf(x:int)=my(r:r–ÿ}'e“al);‘“çr=lo“g(x^2+1)ަ‘5Ôgp2c–Øç½will“complain“that“the‘Øælogarithm“mighš¸ãt“not“bGe“real.‘HMSince“Öx^2+1‘3í½is“alw˜a˜ysަ‘5pGositiv•¸ãe,›UUw“e˜can˜write:ަ‘5Öf(x:int)=my(r:r–ÿ}'e“al);‘“çr=lo“g(x^2+1):r“e“alŽŽŸ’ß½9ŽŽŒ‹ fc ª ýs o ý´‘5Ø3.5Ž‘SÀExample–€of“optimisationŽŸuT‘5½Declaring–$vthe“tš¸ãypGes“of“v‘ÿqÇariables“allo˜w“Ôgp2c“½to“pGerform“some“optimisations.‘a}F‘ÿ*ªorޤ ‘5example,–UUthe“follo¸ãwing“piece“of“GP“coGdeŽ©¡‘5Ôrho(n)=Ž¡‘5{Ž¡‘?úmy(x,y);Ž¡¡‘?úx=2;‘?ýy=5;Ž¡‘?úwhile(gcd(y-x,n)==1,Ž¡‘Iÿôx=(x^2+1)%n;Ž¡‘Iÿôy=(y^2+1)%n;‘?ýy=(y^2+1)%nŽ¡‘D¿÷);Ž¡‘?úgcd(n,y-x)Ž¡‘5}ަ‘D½generates–UUthe“follo¸ãwing“output:ަ‘5ÔGENŽ¡‘5rho(GEN‘?ýn)Ž¡‘5{Ž¡‘?úGEN–?ýx“=“gen_0,“y“=“gen_0;Ž¡‘?úx–?ý=“gen_2;Ž¡‘?úy–?ý=“stoi(5);Ž¡‘?úwhile–?ý(gequal1(ggcd(gsub(y,“x),“n)))Ž¡‘?ú{Ž¡‘Iÿôx–?ý=“gmod(gaddgs(gsqr(x),“1),“n);Ž¡‘Iÿôy–?ý=“gmod(gaddgs(gsqr(y),“1),“n);Ž¡‘Iÿôy–?ý=“gmod(gaddgs(gsqr(y),“1),“n);Ž¡‘?ú}Ž¡‘?úreturn–?ýggcd(n,“gsub(y,“x));Ž¡‘5}ަ‘D½The–Å&functions“Õgsqr½,‘!Õgaddgs½,–!ÕgmoGd½,“Õggcd‘Å%½are–Å&generic“P‘ÿ*ªARI‘ÄÇfunctions“thatŽ¡‘5handle–&åÖgen‘ëI½ob‘Ž8jects.‘bLSince›&æw¸ãe“only˜w•¸ãan“t–&åto“factor˜in¸ãtegers“with˜this“methoGd,‘0/w¸ãeŽ¡‘5can–UUdeclare“Ön½,“Öx‘‰™y‘7Ò½of“t¸ãypGe“Öint‘òؽ:Ž¡‘5Ôrho(nÚ:int‘¼rÔ)=Ž¡‘5{Ž¡‘?úmy(xÚ:intÔ,yÚ:int‘¼rÔ);Ž©‘?úx=2;‘?ýy=5;Ž¡‘?úwhile(gcd(y-x,n)==1,Ž¡‘Iÿôx=(x^2+1)%n;Ž¡‘Iÿôy=(y^2+1)%n;‘?ýy=(y^2+1)%nŽ¡‘D¿÷);Ž¡‘?úgcd(n,y-x)Ž¡‘5}ަ‘D½The–UUnew“C“coGde“output“b¸ãy“Ôgp2c“½is:ŽŽŸ’Üÿ10ŽŽŒ‹ s ª ýs o ý´‘5ÔGENޤ ‘5rho(GEN–?ýn)‘)ÿè/*“int“*/Ž¡‘5{Ž¡‘?úGEN–?ýx,“y;‘$¿ë/*“int“*/Ž¡‘?úif–?ý(typ(n)“!=“t_INT)Ž¡‘Iÿôpari_err(typeer,‘?ý"rho");Ž¡‘?úx–?ý=“gen_2;Ž¡‘?úy–?ý=“stoi(5);Ž¡‘?úwhile–?ý(gequal1(gcdii(subii(y,“x),“n)))Ž¡‘?ú{Ž¡‘Iÿôx–?ý=“modii(addis(sqri(x),“1),“n);Ž¡‘Iÿôy–?ý=“modii(addis(sqri(y),“1),“n);Ž¡‘Iÿôy–?ý=“modii(addis(sqri(y),“1),“n);Ž¡‘?ú}Ž¡‘?úreturn–?ýgcdii(n,“subii(y,“x));Ž¡‘5}Ž©ÆÜ‘D½No•¸ãw,‘h´the›1¡coGde‘1 no“w˜uses˜the˜more˜sp•Geci c˜functions˜Õsqri½,‘h³Õaddis½,‘h´Õmo“dii˜½andŽ¡‘5Õgcdii½.Ž¡‘DThe–e¼most‘e»ecienš¸ãt“w˜a˜y›e»to“use˜t¸ãyping“is˜to“declare˜some“v‘ÿqÇariables˜of“t¸ãypGeŽ¡‘5Ösmal‘‚Øl½.‘RXThis‘÷w•¸ãa“y‘ÿ*ª,‘ ãthese–÷v‘ÿqÇariables“will“bGe“implemenš¸ãted“b˜y‘÷C‘öîÕlong‘“½v‘ÿqÇariables,‘ ãwhic˜hŽ¡‘5are–†faster›†than“P‘ÿ*ªARI‘…öin¸ãtegers“and˜do“not“require˜garbage“collecting.‘ÏHo•¸ãw“ev“er,Ž¡‘5y¸ãou–Ÿ/will›Ÿ.not“bGe˜protected“from˜inš¸ãteger“o˜v˜er o˜w.‘OTF‘ÿ*ªor‘Ÿ.that“reason,‘ñ¤Ôgp2c“½willŽ¡‘5automatically–ö)declare›ö*some“loGop“indices˜of“t¸ãypGe˜Ösmal‘‚Øl‘þ²½when“the˜range“cannotŽ¡‘5cause›Ío•¸ãv“er o“w.‘­0Sometimes–ÎÔgp2c˜½can“b•Ge˜to“o˜conserv‘ÿqÇativ•¸ãe‘Îbut˜y“ou˜can‘Îforce˜aŽ¡‘5lošGop–UUindex“to“b˜e“Ösmal›‚Øl‘]Þ½with“the“syn¸ãtax“Öfor(i:smal˜l=a,b,...)½.ŽŸœ2‘5Ø3.6Ž‘SÀTš yp`es–€and“mem˜b`er“functionsŽŸuT‘5½F‘ÿ*ªor–UUuse“with“memš¸ãbGers“functions,“Ôgp2c“½pro˜vides“the“follo˜wing“t˜ypGes:ަ‘5ÓnfŽŽ‘Cç½for–UUordinary“n•¸ãum“bGer–UU elds,“i.e.,“a“result“givš¸ãen“b˜y“the“GP“function“Ön nit½.Ž©X‘5ÓbnfŽŽ‘JJ¥½for›Vhbig‘Vin•¸ãum“bGer˜ elds,–V­i.e.,“a–Viresult˜givš¸ãen“b˜y–Vhthe“GP“function‘ViÖbn nit‘I@½whic˜hŽ¡‘Nincludes–UUclass“and“unit“group“data.ŽŸW‘5ÓbnrŽŽ‘Kƒ‰½for–UUraš¸ãy“class“groups,“i.e.,“a“result“giv˜en“b˜y“the“GP“function“Öbnrinit½.ަ‘5ÓellŽŽ‘E¨à½for–UUelliptic“curvš¸ães,“i.e.,“a“result“giv˜en“b˜y“the“GP“function“Öel‘‚Ølinit½.ަ‘5ÓgalŽŽ‘HˆÝ½for–UUgalois“extensions,“i.e.,“a“result“givš¸ãen“b˜y“the“GP“function“Ögaloisinit½.ަ‘5ÓpridŽŽ‘NµO½for›Ddprime–Deideals,‘GÈi.e.,‘GÇa“compGonen¸ãt˜of“the˜result“giv•¸ãen˜b“y˜the‘DeGP‘D`functionŽ¡‘NÖide–ÿ}'alprime“de“c½.ŽŸÆÜ‘DMemš¸ãbGers–UUfunctions“on“t˜ypGed“ob‘Ž8jects“are“m˜uc˜h“more“ecien˜t.ŽŸ ¯À‘5Ò4Ž‘MLËCommon‘ffproblemsŽŸç‘5Ø4.1Ž‘SÀMeta-commands.ŽŸuT‘5½Meta-commands–ì(commands›ìstarting“with˜a“Ô\½)˜other“than˜Ô\r“½are˜curren¸ãtlyŽ¡‘5ignored–‡×bš¸ãy“Ôgp2c½,‘”wthough“a“w˜arning“will“b•Ge›‡Öissued,‘”xb“ecause–‡×it˜is“not“clear“whatŽŽŸ’Üÿ11ŽŽŒ‹ x ª ýs o ý´‘5½they–µshould›µdo“in“a˜compiled“program.‘‘Instead“y¸ãou˜probably“w•¸ãan“t–µto˜run“theޤ ‘5meta-command–UUin“the“GP“session“itself.Ž¡‘DThe–ª`meta-command›ªaÔ\rÖinclude‘j»½is“replaced˜with“the˜con•¸ãten“t–ª`of“the˜ le“ÖincludeŽ¡‘5½(or–ìxÖinclude½.gp)“when‘ìyÔgp2c“½reads“the“ le.‘ 71If“yš¸ãou“w˜ould“prefer‘ìyÔgp2c“½to“linkŽ¡‘5Öinclude½.so–UUto“the“program“instead,“see“Section“2.4.ŽŸþ6‘5Ø4.2Ž‘SÀUnsupp`orted‘€functions.ŽŸuT‘5½Some–ÜÛGP›ܸfunctions“are“not“y•¸ãet‘ÜÚa“v‘ÿqÇailable–ÜÛto“C˜programs,‘þ¼so“the“compiler“can-Ž¡‘5not–àáhandle“them.‘jIf“yš¸ãou‘ààuse“them“y˜ou“will›ààget“the“error“"unhandled˜letter“inŽ¡‘5prototš¸ãypGe".‘qÇThese–UUare“curren˜tly“Öforfactor–ÿ}'e“d‘]Þ½and‘UUÖforsquar“efr“e“e½.Ž¡‘DThe‘ÃÔfunctions›ÃÕÖfor–ÿ}'el‘‚Øl½,‘àîÖforsub“gr“oup‘el½and˜Öfor“qfve“c‘Tнare–ÃÔcurren¸ãtly˜not“implemen¸ãtedŽ¡‘5as–YPan›YQiterator“but“as“a˜proGcedure“with“callbac•¸ãks,‘ZPwhic“h–YPlimits“what“y¸ãou˜can“doŽ¡‘5inside–UUthe“loGop.Ž¡‘DThe–Š¿Öforstep‘,X½function“is›ŠÀsuppGorted“when“the˜step“is˜a“n•¸ãum“bGer.‘.@If˜it–Š¿is˜a“v¸ãector,Ž¡‘5y•¸ãou›UUm“ust˜add˜a˜tag˜Ö:ve‘ÿ}'c‘æ ½to˜mak“e˜GP˜kno“w˜abGout˜it˜lik“e˜inŽ©‘5Ôf(x)=Ž¡‘5{Ž¡‘?úmy(v);Ž¡‘?úv=[2,4,6,6,6,6,6,2,4,6,6]Ž¡‘?úforstep(y=7,x,v:vec,print(y))Ž¡‘5}ަ‘D½This–×is“not“needed›Øif“the“step“is“a“v¸ãector˜or“a“v‘ÿqÇariable“of“tš¸ãypGe“v˜ec,‘Eøbut“isŽ¡‘5needed–UUif“the“step“is“only“an“expression“whicš¸ãh“ev‘ÿqÇaluates“to“a“v˜ector.Ž¡‘DSome– 2functions› 3are“passed˜to“GP‘ b¸ãy‘,ÀÔgp2c-run“½at˜start-up“(using˜the“ÕGP;Ž¡‘5½syn¸ãtax)–iãinstead›iäof“bGeing˜translated“in˜C:“Öinstal‘‚Øl‘rm½and“Öaddhelp½.‘¯rIn˜practice,‘otheyŽ¡‘5can–UUbšGe“considered“as“supp˜orted.Ž¡‘DAlso–B|the“functions“Ör–ÿ}'e“ad,–¤¡eval,“kil‘‚Øl‘K½maš¸ãy–B|compile“ ne“but“ha˜v˜e“a“surprisingŽ¡‘5bšGeha¸ãviour–-[in‘-Zsome“case,‘c\b˜ecause‘-Zthey“ma¸ãy“mo˜dify›-Zthe“state“of˜the“GP‘-#in¸ãter-Ž¡‘5preter,‘œnnot–[of›[the“compiled“program.‘‚ÑPlease“see“Section“4.4˜for“details.‘‚ÑF‘ÿ*ªorŽ¡‘5example–ÂÔf(n)=eval("n^2")›Á½is“v•¸ãery˜di eren“t–Âfrom˜Ôf(n)=n^2½.‘€ T‘ÿ*ªo˜read“ les˜atŽ¡‘5compile-time–UUuse“Ô\r“½instead“of“Ör–ÿ}'e“ad½.Ž©þ6‘5Ø4.3Ž‘SÀDynamically-scop•`ed›€lo“cal˜v‘ÿ@ariables.ŽŸuT‘5½Currenlt¸ãy–OÔgp2c›O½doGes“not˜suppšGort“dynamically-scop˜ed‘Olo˜cal“v‘ÿqÇariables‘OdeclaredŽ¡‘5with›¦Ölo–ÿ}'c“al()½.‘ ǼInstead˜Ölo“c“al()‘{:½is˜treated˜as–§an˜alias“for˜Ömy()‘{:½whic¸ãh˜declaresŽ¡‘5statically-scop•Ged›UUlo“cal˜v‘ÿqÇariables.Ž¡‘DSupp•Gorting›UUdynamically-scop“ed˜lo“cal˜v‘ÿqÇariables˜is˜cum¸ãb“ersome˜to˜do˜in˜C.ަ‘5Ø4.4Ž‘SÀMemory–€handling“and“global“v‘ÿ@ariables.ŽŸuT‘5½While–3Ka“lot“of“w¸ãork“has“bGeen“done“to“ensure“that“Ôgp2c“½handles“global“v‘ÿqÇariablesŽ¡‘5propGerly‘ÿ*ª,‘‚the–Œuse›of“global˜v‘ÿqÇariables“is˜still“a˜lot˜of“trouble,‘‚so“try˜to“a•¸ãv“oid˜themŽ¡‘5if–UUy¸ãou“do“not“understand“the“implications“on“memory“handling.Ž¡‘DFirst,‘Ýthere–ÿ¿is“a›ÿ¾common“practice“to“use“undeclared“v‘ÿqÇariables˜as“formal“v‘ÿqÇari-Ž¡‘5ables,‘ùgfor–âlexample“w¸ãe“assume“Öx='x‘°½and“write“Öa*x+b‘„½instead“of“Öa*'x+b½.‘KySo“Ôgp2cŽ¡‘5½will–݆not“raise›݇an“undeclared“v‘ÿqÇariable“to˜the“rank“of“global˜v‘ÿqÇariable“unless“y¸ãouŽŽŸ’Üÿ12ŽŽŒ‹ ƒ ª ýs o ý´‘5½declare–*Òit›*Ówith“the“Öglob‘ÿ}'al()‘‰f½command,‘3Sor“y¸ãou˜use“it“at˜toplevš¸ãel“(i.e.‘cœoutside“an˜yޤ ‘5function).‘qÇSee–UUalso“Section“2.3Ž¡‘DSecond,‘‹Kglobal–MMv‘ÿqÇariables›MNseen“b¸ãy“a˜compiled“function“are˜C‘M v‘ÿqÇariables,‘‹KnotŽ¡‘5GP‘@âv‘ÿqÇariables.‘jøThere–@èis›@çno“connection˜bGet•¸ãw“een‘@èthe˜t“w“o.‘jøY‘ÿ*ªou‘@èma“y˜w“ell‘@èha“v“e˜t“w“oŽ¡‘5v‘ÿqÇariables–³Ãwith›³Äthe“same˜name“and˜a“di erenš¸ãt“con˜ten˜t.‘;íCurren˜tly“GP‘³›kno˜ws“onlyŽ¡‘5hoš¸ãw–Möto“install“functions,‘Opnot“v‘ÿqÇariables,‘Ooso“y˜ou‘M÷need“to“write“compiled“functionsŽ¡‘5in–UUorder“to“access“global“v‘ÿqÇariables“under“GP‘ÿ*ª.Ž¡‘DBasically‘ÿ*ª,‘]global–óÞv‘ÿqÇariables›óßare“alloGcated˜in“the˜main“stac•¸ãk˜whic“h‘óÞis˜destro“y“edŽ¡‘5eac•¸ãh› 9time‘ :GP‘ prin“ts˜a˜new˜prompt.‘–tThis˜means‘ :y“ou˜m“ust˜put˜all‘ :y“our˜com-Ž¡‘5mands–{on“the›zsame“line.‘ð9Also˜global“v‘ÿqÇariables“m¸ãust“bGe˜initialized“using“theŽ¡‘5Öinit‘‰ffŽ‘®Ô–ãæ½function“b•Gefore›ãåb“eing–ãæused,‘ú–and“are“only“suppGorted˜with“the“-gŽ¡‘5 ag.Ž¡‘DSo–UUy¸ãou“end“up“doing“Ógp2c-run–ÕT-g“global.gpŽ©–‘5Ôparisize–?ý=“4000000,“primelimit“=“500000Ž¡‘5?‘?ýinit_global();myfunction(args);ަ‘D½Note–TÒthat‘TÓnothing“prev•¸ãen“ts›TÒy“ou˜from–TÓcalling˜Öinit‘‰ffŽ‘®glob‘ÿ}'al‘][½in“the˜GP˜program.Ž¡‘5In–Euthat›Etcase,‘{Õy¸ãou“can“omit˜the“paren¸ãtheses“(i.e,–{Õwrite˜Öinit‘‰ffŽ›®glob‘ÿ}'al½,“not‘EuÖinit‘‰ffŽ˜glob‘ÿ}'al()^“½)Ž¡‘5so–UUthat“yš¸ãou“can“still“run“y˜our“noncompiled“program.Ž¡‘DAnother›ò’w•¸ãa“y–ò‘to˜handle“global˜v‘ÿqÇariables“is˜to“use˜the“Öclone‘²í½function“whic¸ãhŽ¡‘5copies›Dða–DïP‘ÿ*ªARI‘Dìob‘Ž8ject“to˜the“heap,‘H8hence“a•¸ãv“oids˜its‘Dïdestruction˜when˜GP‘Dëprin“tsŽ¡‘5a–Inew“prompt.›mµY‘ÿ*ªou“can“use“Öunclone‘ x½to“free“a“clone.˜Please“read“the“P‘ÿ*ªARI/GPŽ¡‘5man¸ãual–UUfor“more“information“abGout“Öclone½.Ž¡‘DA‘“”go•Go“d–“æuse“of“Öclone‘TA½is“for“initializing‘“çconstan¸ãt“v‘ÿqÇariables:‘îéfor“example“inŽ¡‘5Ôtest/gp/initfunc.gp½,–UUthe“vš¸ãector“ÖT‘©ó½is“initialized“b˜yަ‘5ÔT=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0])ŽŸ•‘5½Y›ÿ*ªou–)m¸ãust“still‘)run“the“Öinit‘‰ffŽ‘®Ô“½after“starting“GP˜,‘)but“after“that“y¸ãouŽ¡‘5can–UUuse“ÖT‘©ó½safely‘ÿ*ª.Ž¡‘DGP‘í'itself–íAcurrenš¸ãtly“doGes“not“kno˜w“abGout“Öclone‘­œ½and“Öunclone½,‘but“y˜ou“can“useŽ¡‘5dumm¸ãy‘UUfunctionsަ‘5Ôclone(x)=xŽ¡‘5unclone(x)=while(0,)ަ‘5½when–UUrunning“uncompiled.ŽŸ±ë‘5Ø4.5Ž‘SÀSupp`ort–€for“ó4ñkAH cmssbx10ßt‘ʾ‰ffõÆŽ‘À„VECSMALLŽ©uT‘5½When–C/accessing›C0the“compGonen¸ãt˜of“a“Õt‘™˜‰ffŽ‘™šVECSMALL½,˜it“is˜necessary“that˜that“theŽ¡‘5ob‘Ž8ject–UUhas“bšGeen“declared“of“t¸ãyp˜e“Öve‘ÿ}'csmal‘‚Øl½.Ž¡‘DF‘ÿ*ªor‘Î3example‘ ¼ÓÖmy(v);››ûv–îŸ=“ve‘ÿ}'csort(V,,1);˜print(v[1])‘ e½doGes‘Î3not‘Î4w¸ãork,‘,jbutŽ¡‘5Ömy(v:ve–ÿ}'csmal‘‚Øl);›2"v‘¨=‘¨ve“csort(V,,1);˜print(v[1])‘ ˆ"½or‘ )ŽÖmy(v:ve“csmal‘‚Øl);˜v‘¨=‘¨ve“c-Ž¡‘5sort(V,,1);‘“çprint(v:ve‘ÿ}'csmal‘‚Øl[1])‘GϽw¸ãorks.ŽŸ±ê‘5Ø4.6Ž‘SÀGP‘€listsަ‘5½GP‘P lists–PLand›PKmaps“are˜not“fully˜suppGorted˜b¸ãy“Ôgp2c½.‘ÄA‘P partial˜suppGort“is˜a¸ãv‘ÿqÇailableŽ¡‘5with–éWthe‘éVÖlist‘Ü/½tš¸ãypGe.‘-ÌY‘ÿ*ªou“m˜ust›éVtell“Ôgp2c“½that˜a“v‘ÿqÇariable“will˜con¸ãtain“a“list˜or“aŽ¡‘5map–' b¸ãy“using“ÖL:list‘á½inside“a“declaration,‘0Lwhere“ÖL‘&ý½is“the“name“of“the“v‘ÿqÇariable“asŽ¡‘5explained–UUin“Section“3.ŽŽŸ’Üÿ13ŽŽŒ‹£ ª ýs o ý´‘D½Currenš¸ãtly‘ÿ*ª,‘í¾assigning–ÏBto“a“list‘ÏCelemen˜t“(ÖL[2]=x‘4D½)“will‘ÏCnot“w˜ork“and‘ÏClists“andޤ ‘5maps–UUwill“not“bGe“freed“unless“y¸ãou“explicitly“use“Ölistkil‘‚Øl½.Ž¡‘DNote:‘q'The–TP‘ÿ*ªARI›Tuser's“man¸ãual“states˜that“lists˜are“useless“in˜library“moGde.Ž©±X‘5Ø4.7Ž‘SÀThe‘€ó5F C– cmbxti10àinstal‘´çl‘Í©ØcommandŽŸuT‘5½The–ùSÖinstal‘‚Øl‘ܽcommand“is“inš¸ãterpreted“as“a‘ùRÔgp2c“½directiv˜e.‘ ]ÁThis“allo˜ws“usingŽ¡‘5installed–UUfunction“in“compiled“programs,“see“Section“2.4.Ž¡‘DHo•¸ãw“ev“er–UUthis“has“some“side-e ects:ŽŸšî‘DRÜ€ˆŽŽŽ‘N½If›ñípresen•¸ãt,‘Ythe‘ñìÖlib‘“…½argumen“t˜m“ust˜bGe–ñìa˜string,‘Ynot˜an“expression˜thatŽ¡‘Nev‘ÿqÇaluate–UUto“a“string.ŽŸMw‘DRÜ€ˆŽŽŽ‘N½The–6Öinstal‘‚Øl‘> ½command“is“not“compiled,‘nGinstead“it“is“added“to“the“list“ofŽ¡‘Nfunctions–UUto“install.ަ‘5Ø4.8Ž‘SÀWhat–€ab`out“ßmain()“Ø?ŽŸuT‘5½There›–kare‘–jt•¸ãw“o˜di eren“t˜issues––jwith˜Õmain()½:‘óó rst“this˜is˜reserv¸ãed“function˜nameŽ¡‘5in–Ä™C,“so›Äšusing“it“with“Ôgp2c“½will“cause˜a“name“clash.‘A‰T‘ÿ*ªo“a•¸ãv“oid–Ä™this,‘áŒeither“renameŽ¡‘5it–UUor“use“the“ ag“-p.Ž¡‘DSecondy–kÒÔgp2c›kÓ½has“no“suppGort˜for“generating“stand-alone“GP‘k˜programs.‘#ñHo¸ãw-Ž¡‘5evš¸ãer–UUadding“man˜ually“a“Õmain()“½C“function“is“not“dicult“in“general.ŽŸ Äç‘5Ò5Ž‘MLËCommand-line–ffoptions“of“×gp2cŽŸç‘5½Here–D‚is›Dƒa“brief˜description“of˜the“main˜options“of‘ ŸÔgp2c½,‘Gàwhic¸ãh˜can“bGe˜seen“withŽ¡‘5Ô./gp2c‘?ý-h½.Ž¡‘DIn–UUSection“2.1“wš¸ãe“sa˜w“ho˜w“to“use“the“Ô-g“½option.ŽŸšî‘DRÜ€ˆŽŽŽ‘N½-g–o›tells“Ôgp2c›oœ½to“generate“Õgerepile“½calls“to˜clean“up“the“P‘ÿ*ªARI‘oSstac¸ãk“andŽ¡‘Nreduce–¹¿memory›¹¾usage.‘ŸY‘ÿ*ªou“will˜probably“need“this˜option,‘ÒÙalthough“theŽ¡‘NC–UUcošGde“will“b˜e“easier“to“read“or“hand-edit“without“it.Ž©Mw‘DRÜ€ˆŽŽŽ‘N½-oÖ le‘̽tells–RpÔgp2c›Rq½to“write˜the“generated˜C“ le˜to“the˜ le“Ö le‘̽instead“of˜theŽ¡‘Nstandard‘UUoutput.ަ‘DRÜ€ˆŽŽŽ‘N½-iN‘þPallo•¸ãws›þgy“ou‘þfto˜c“hange‘þfthe˜inden“tation–þfof˜the“generated˜C‘þP le.‘TÍSo˜if“y¸ãouŽ¡‘Nw•¸ãan“t–UU4“spaces,“just“use“the“Ô-i4“½option“with“Ôgp2c½.‘qÇThe“default“is“2.ަ‘DRÜ€ˆŽŽŽ‘N½-C‘ئadds‘ØÉcošGde–ØÈto“p˜erform“range“c•¸ãhec“king–ØÉfor›ØÈGP‘ئconstructs“lik¸ãe˜Öx[a]‘æK½andŽ¡‘NÖx[a,b]½.‘öèThis›¶also‘µc•¸ãhec“ks˜whether–µÖx‘µú½has“the“correct˜t¸ãypGe.‘öèBy˜default“Ôgp2cŽ¡‘N½do•Ges›È×not‘ÈØp“erform˜suc•¸ãh˜c“hec“k,‘%¸whic“h˜can˜lead‘ÈØto˜a˜run“time‘ÈØcrash˜withŽ¡‘Nin¸ãv‘ÿqÇalid–÷ÜcoGde.‘Y]This›÷Ýoption“causes˜a“small“run•¸ãtime˜pGenalt“y–÷Üand“a˜large“CŽ¡‘NcošGde–UUreadabilit¸ãy“p˜enalt¸ãy‘ÿ*ª.ަ‘DRÜ€ˆŽŽŽ‘N½-L‘Ç–adds–dzcompiler“directivš¸ães“to‘Ç´the“coGde“so“that“w˜arning‘Ç´and“error“foundŽ¡‘Nbš¸ãy–…0the“compiler“are“pre xed‘…1with“the“line“n˜um˜bGer“in“the“original“GP‘…$ leŽ¡‘Ninstead–UUof“the“C“ le.ަ‘DRÜ€ˆŽŽŽ‘N½-W‘(™is–(¤useful“for“debugging“the›(¥.gp“ le,‘1”in“the“sense“that˜it“detects“if“someŽ¡‘NloGcal–`]v‘ÿqÇariables“are“undeclared.‘’ßF‘ÿ*ªor‘`\example,‘cif“the“ le“Ôalgorithm.gp“½hasŽ¡‘Na–UUroutine“lik¸ãeŽŽŸ’Üÿ14ŽŽŒ‹Ÿ ª ýs o ý´‘NÔradical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i])ŽŸ‘N½The–'‡v‘ÿqÇariable“'F'‘'|is“undeclared“in“this“routine,‘0±so“when“running‘KÔgp2c“½withŽ© ‘Nthe–UUÔ-W“½option“it“prin¸ãtsޤ‘NÓW‘ÿ «arning:algorithm.gp:1:v‘ÿ\rariable–ÕTundeclared“FŽ¡‘N½A•¸ãt› Épresen“t,‘³¥an˜undeclared˜v‘ÿqÇariable‘ Èis˜tak“en˜to– ÈbGe˜a˜"formal“v‘ÿqÇariable"˜forަ‘NpGolynomials–Þ.b¸ãy‘»Ôgp2c½,‘@dso“do›Þ/not“declare“it“if“that“is˜what“yš¸ãou“in˜tend.ަ‘NF‘ÿ*ªor–zexample›{in“Ôpol(a,b,c)=a*x^2+b*x+c˜½yš¸ãou“m˜ust›{not“declare˜Öx‘4¾½since˜itަ‘Nstands–UUfor“the“formal“v‘ÿqÇariable“Ö'x½.ŽŸ‘DRÜ€ˆŽŽŽ‘N½-pÖpr‘ÿ}'e x‘Ý­½A‘©Sproblem–©iwith“C‘©Tis‘©hthat“it“is“sub‘Ž8ject“to“name“clashes,–¾ni.e.,“if‘©iaަ‘NGP‘&v‘ÿqÇariable–&)in›&(y¸ãour“routine˜has˜the“same˜name“as˜a˜C‘&sym¸ãbGol˜in“the˜pariަ‘Nlibrary‘ÿ*ª,‘¥Hthe–bcompiler“will›brepGort“strange˜errors.‘˜So“this˜option“c¸ãhangesަ‘NALL‘Âuser–îv‘ÿqÇariables›ïand“user“routine˜names“b¸ãy˜adding“a“pre x˜Öpr‘ÿ}'e x‘62½toަ‘Nthem.‘n> stream xÚåYKsÛ6¾çWðfr¦D‰Iôf'm'¦ãqtkz`IØb†"5$•4ýõÙÅ‚%ÓSO›¦–{ÂZ<öÛ]ìCW«ßþ LÀ3&¸VÁê6à©`y–iª˜ÈÓ`U¿†w[QF¿­~æ|ά–J$Ä5F" ?m£;D±LDX´ãÚQÙˆ‡CÙ×Û±Žbv-ÎÃÔ§a´:E&çÌh-Ü)㊱ÈYnuõ VÁ9WuÓ •…—MÓm"‘‡¿ÃòÐö#î¤ $µ’)¥i훢/#X±¦-Dö'!è|ç+&UêιLsÄJ0“Úå%\\òp´4 ~% 3©Hqaç‚<§ܳˆ c”š<à|´P,S”¥p(À(‹L¤ù´77³e1­‹ JÆt4|Ý"Xcß9¸ª]9֤жÞìp5%g˜=Çň1¢OÏÉÁ+öLé‹!–"ì³uø´‡á¶¡êC§Ï\ðÔ ~飞ztÚ|þž>œ„‰}v ÀäóhúÅØAB‘B¶ñ4}úŸ`qÏ”GáM1–ĺnï0ÖÏ8ò§Ëa@OPLÏ~'ú¹dã™dË’ÎZ2ÃqO¦·Û¦(íÆRM?B!V·,ݹ:\<É<øQ³‡E½¹þ…ˆ²Ûlж‚ŸµÎÏÀØóåª/Š$<*=j‡bûùÀ)‰Yè‡í'•ëÃ:¢œ:¢+ö=ÿ¡ƒkÃ8ÔxØιœ·B9”{¯©…‹EŒSQv¿´CæLú°+U®ÃMQ·DÝÚ[ôñãµxITQ¡þEÍéí÷CD¸ÊSàÅQ…õ@ßã´÷nðŽÇ=@Ýø«“Æ 2ÞÕ‡àà% ,˜–s¥ºÄò Îíh¼Ž ]Þ¼¦¯n ÉÉ{ð2몓qÀ–y"ÃÁóëb$ФFª„½qg[Û£õÓ‡çîx¥‰aÖo«ÿ´ÕÒÕß%:YÛ¶ÄôЇÛÊò&A¥25³û»_w-©”‡ÍÔ-ð}8ŸƒEwN¸v’²qq,­ÃZkÈÙ[àMqE¿ßƒþÞb°{ë9½óÅeõ! ¸6.KÉ,SîïÀ|D¢QáH[3A‹S^m;טƒoêO±v–õ‘øQ™8¹?ÄïÄ÷;‰Ó–Þ­éx‰ìÅfÛ ÈuÔæðývG1LŽ›{ÝBœ+œswªˆr¾cٵ~<óÇzô[ ]\MC¦Î­çŽÃÀj¦Ç`Ö±\X§,OäÄüq]ÏoŒ·sœL8K”<ñ–±ëÞLBº1¢0 Ûø_/ Š/ í«øï.Ðz éÙLö;àÂÆ.ý3d [:ȵ-úš¡pKB%@î…"…ÁÛžÞ™º²'·-ÊmÇÉš)–P¤ÊY–ËÙÓüâûÕ‹Ïõ}ãÛ endstream endobj 16 0 obj << /Length 2571 /Filter /FlateDecode >> stream xÚµYK“Û6¾Ï¯ÐÞ¨ªŒ7ÀÍű+Ny+ïznq´Ä™a"‘Z‘ÊØÿ~»ÑEJÙ›Ù½H$ÐB7úùuëÍÝÍ«w¢\”¬´Ò.îîBjæ¹\8n™åân³øµx»\)]ën¹’¾ØÔøê‹¡£åc_ÓæÞ‚ºÝ4íu÷´7Öë¡éZ Qª,ÍJ­çt?~î‡Cµ¶_—^·@/mQá—)~þ ßÒÓì´Ôôôiûz ‡p;øÞWÍ!’|↣¯ÞI9U¾åû$'I~X®„uÅ"Û M”pž “ŸkPÍåÑÊ0¯ÜxrîDÎyŸ]fWá£YWÛ ¹•´–)e¢î,ýªC[üNfÅU à”v“‘I—Ì88fo)˜*G©›¡§ãÖÝnê½êý¡î¿­2Thgt.ó„KQnšO\(PÑᢽtHdPµ‰S<²i#5¹hPå¬tbî=}µI¤sQe(È?Z‡Ç-mE™âwðÉ[ä\O ö*úŠÂâ¯IŸInÜ?)ߢ(^F€åÞ¡w‘ªþRíV¹àØoC<Ù§A-ŽÔâŠèPÚLLc,ã"YæóÒP2~l3f”àZ'Cך²êñj-ä!S&Z1!ÆÞgކöb|8ë[ñ FÄ-«÷Õ¶¯oyXÎðñ–PE<æá[|n3ú°LêSô°šåÜÙ1QúD„’’„á!ˆ‰.úCÐÒQÌ©’y+禳2ž!Ø GϤb¡‹·«mR2,6ä$õC XDCRÀÃý•¬Bsyø+ïd’Y%þ{'㣓ÁÑ''WœL•êš“y&Çd÷ôجQ‡tþå]B¢QJÄBK¡ÐÀ÷e²Fp9w XÝ©SÁÝ‚*óÄ-`ÇrÞÆƸ~X&ƒÍVºÏ—ø1'bi¯«QÏð–*üY]0 È€þìKÓ‡z”Ð-r?ÌVù’ ;Önø•“ÅKšY7zsœÊ9 4¸`¼ß 4Ü h—R˜‹QÌqÚˆ ç½ˆ6ćsÅ–ò´ù6þè ^ÁNwŸ»ˆóñ áõ4'äÔÁô v]1ˆ`ú”) Ào”†pH²‹KÙcôÂVW×XÛuØ3¶§ø¦-=sg©žÀî>ÀX ºùéîæß7(_(.–i® 0KH‚v±ÞÝüú_l`‚R_<ÒÝBB>Ãënoþyó›mguªz޲ÖÅr5½Ö¦ÎåIl¼=é'\ÄqÆÕÙEùnÜ\Â0Ø%”›€mºÃboƒ¨pÙ%H¢P/ÜW)}àÙ,—f‡‚Íü ^$‹{¨å¥S>܈ÐÛ ì^FÑs™Ý1 ‘0!úÄ•Íû™ö[üÜŒŸÌèÙÁ1zʯ¹§‹R…ëw-h†0C Ò©?+5¦3È–T_THeðº«öùaüdßœ”PÁd&cÁ‘1cg’’v¬Tæ/6?—F±ÌêѶîo¹c$sJNëz®qbþ]“P÷ypçÍwf®%+Ïøüb±³­mjÌ-µ(š U¬­WC·‚¯Ñpû&VÈ•ä†I?¯ú÷‡n—‹­ü^×Ô³P8»€Pv1!‚ôŸ ÉŒßxúù@ÐLÜ›aN¼ðsŸ-f‹&ÀÌð }ÒphBkj´À儃¶Ô¯QŽ=s*aãr‚Sœ_Ô 1Ú9@`°«þH ޚȿ¢¯}uìñ%äºù9³F5™c`é `¯Wµ1ééCR÷«åe£‹k!MþåÂì|ñ¬ã>RèJ{wl1;)bÝÓo‚ÆP||'ñÃ#‘˜Ñy79è–žqN„tCè»{zÇœÈNø|µJ'˜á~a8˜¬|I9”ü |ßp¨¬€š.Ëa†{‰UXü/¸—ËŒù™CM _ÑWÎk±b'ìˆ&ã¢x?DÝ# Ÿð­î Cohaj—ñmc^ù¦± Yº.åç6}ØË5Ä"˜~•CR ²³s¤ s óJ& mÑ9uÆ´Ð?.1 ­=ó×tËC §¦Ê=C,–9íZ9H%’xîbíjzMa˜3eI)ŸÂŸ‡,yH Ÿ\ÏwÎØ­@ðÒêp˜Ñ‘Eß:˰“?ç)ˆ'’©Øš^îȰ#ÏvtP¬dÜžíœË YÇ+…é‡)à.d€m>Ô8­–¤~‘E$ zèAšC—$LR‘A4ˆ¹Ä)püj›Ñ–þÚxRV\¿¦$Šæ™ZçuîÊà‡ðÑ4jÖTf˜A¡vvÆkæ ßå  ×€gÃЗ2û»¸L6x»(g‚»—)Ø{»%3-Õ´qëÂ4¦Ûf]šQÀ~½¼–g7- 2àÓ\¿2†=8åÊ1®uì<œ˜û<óô³Œi/X¿¾¢=(ÞròKµW‚”ÔÁNÜ5›ŒèRãBîV'ݨ ;¨¿ŒQ|¹!b?·£þχ“•ÌJ=ßyF¯Ê¼ó"½ Ð+èë¦(£^ß5GjPT!þѯMñÓ—jGÓjD¿©‘™ N-clB¡1Q8´Xi§=¨•@I~¿®ûžV±ð§ÿ” ã„‘¬Ì&æs6úaîÿ   ›(P·âBdØ# Ç·]B98û'?ŸŽ±ìd¾é€ äŒ0KÏ=ʉ8ظxÇÓ2½ìêá1Nîâ ÄA_K¯AøŽÝ¹ã±‡¥‡æÏ¥[ZGN¤ÑÅÜGB‰.%ôÚ‡~ ÒcI„£lJx±l¦tÎL<3?‰ãyÍD ãÌ~æ},µ‚I°€ óKÓ£%]ü3Ïá¸B‰`>øªûŒˆq=KÙê=èKï Ñ¤Á©mø;ÿý†2.pg˜u\:‡î¸læ‚ÍmG¤–^?þëý«Ÿ?àh„Ñî]:i}<œþþÂmýñ-IÛ¬ºÍ¶ú¼­Ÿ¹¦1ÅÜu<ͨð:Ì©¬yÑ|Jr’Iy¥høkó)8YÌÊ 4g\¡>¥ p&Ð@Coª¾Yã¬NM|@‚íÀ¤£’ÀðýRÄgQ–;šÞ*5²Ñ*õ!ÎeNÿïE€ŽúGä@ð6Þf6ÇÓ1c#šFç—ÿΕ“éiŽÞÇ ”:ˆ=*‚9¥&Ý8ø?‰2²— endstream endobj 24 0 obj << /Length 2431 /Filter /FlateDecode >> stream xÚ­YKsÛ8¾ûWè6ÒV„Áà1Ie\™J2ÙX³—Éhж¹K‘’rÊÿ~»"%è±ë9ؤ@h|ýúºùnuóó/’Í’h®g«‡ã’XÊg†jÂx2[­gÌ‹j!ø¼[ü¹úõç_X2žn‰ÖzFý¼Ï»²+–Û&ÏŠ¶¨«ÅR/s;ïòǼiqDΛ¦´y_ûi÷ næ/~ ÉÇ[N,—ýNŠ›«›¿nŒÑ› Î SNdÁí,ÛÜüñ'­áÙ¯3JDbg?ÜÌÍL&,Ü•³»›Þ¼s§ï%¸"Ü&ÓÓü²Š®ànîþtð›õ&N Žp0k¦èüÎ ä®Ø1º…`.†ÁÅ3ky ‰SØdD¡êb;£"‰Îb©µóÃÀCý£Ô_Ú¼ó7?ŠîÉßÕUùÒß…—ò2ßäC‘º'²Þ@´b ž3A Þù—Šê¾ÔÔÎW¸æ,î¥Mæ˜Á­ý C“w»Æip€®œf¢HVðŒ]Îv°^•uPè÷©ê®×9®:T¨©;õK÷#!UõÎǯñáv𛲴 kÝô ½š3Üût&itlï|¶«Ëä]ÇÃÌ™»Ü9Ö¿Y ¦î!¦vÅÚ³ýSi‘}‘6.~€vKARäMî7cþR„=»f8†7Ô?)¼õCbÎ$S¥>@¢Í/ÃfWùãE$¥€Û¡`ý’?z¶Áµôh‚-{VU>.1`0uMbÌÅÆ\‚˜nÙ Œ¹0ÆÝ¨ß¬9Œ½@ÉmÙUsÀ£]²P¼†°w%Æ}Š ÍÄ=~\Ôa1fçe^=vO­ÿq ›²CÅ{tø˜}jY`/*%t€w“fMíW¬wÝv×!|œ”äèØ,ÁˆOcªJ,T'ü²¦Xã¸~Ýü¯o^`3B€ûªƒxU4[Ò¬Ûõ½0Yà¼å®ï@T×ûBœaÔ ^þ>44ö´ì<±p¢¦ÍúÓfgCLÌžRL§ÿõˆHØàØ«-Èg‰p609g‡iòeVûF¤nPKrÔÒ‚±HâÇÁÁ&“Sg6„Ú+ŒDí<î,(÷#‘>ašòûËÉþ'|‚cq¯÷¬Îì;Uþ؉–­˜zÈÉÖ£€òíˆÏˆÀg>ú{ÞTžÏÈA Žæ´‘½»IzÎRôCíÒªBRÁé£}GŸ›à'›´¨‰{|¨›ië>vžF°žU[¬ÃýíWþ>vx:5¯|³õG‹7‚'S&©Bé—ÞàÎ’†â=…·n(âaxr!Íæ_j?RTëâ¹X»ˆ€/8ºª]õ™Ëý0ó¾§<ø)>íÆÒŒx‘Oµ`7®„…£ûz¬aŽ)˜"üv$ ¯{Z?3hnä!Í:ÿºßÇúkê/ëü!Ý•ý¬)Rn §Nœ_ù9»ª ÂgÅwÊd¾ØòH|/îˆóŽ:¹ áiqÄ–€/ "Ø…¬t6®&¬ Ú%ܸ¥°Íô?}°º g g9ŽÛ08Äm{ŠõAýEù…ö=ËsøAï÷÷×¾¦  u˜íÙiQº¦”·@ zÒgÄ€þàÉY½Ù¦]q_”E7Ê<¡f9ªävžÛ2úãórš?ï(ªb8…¸Ñåéz0°ã…˜Á^Q'rÔ>z/0FŸˆ¾š«¦qè~ÍçPX;tZß½tyìKÛ™¶Û®í{mú'’Â?@·Å…›b“;Á.±ì® o=–õ}Oqƽθƒ 8La@UGüS"ÝåÎOÕ¯sPàßà블 ¡av{o4$É€ÇÔ÷–Š ËI‹’M%Í„¨8«F˃_oàïD>7.7£bßû}Ðè¤4.ÕÁëõþk0(þÙ}kËâ­eÍùOm‰oM»ªØ†Ž(JAÊTP/€¢,{•¢¤%Fs·”°¡?×nã_Q¬VÝ’Áä¾¹Üv©kˆÿÇ{9BZØ{Ça:=ô°ÚQY°M½£D>)1ßݽ °4×öc1ÞSà•º wz¢MüäA4PT $‘áÓµèåý/†ŽŠ endstream endobj 27 0 obj << /Length 2493 /Filter /FlateDecode >> stream xÚ­YIÜ6¾÷¯( D ¤q‘DyN±ád OÒ@qj‰]­–ФŠÝÿ~¾GR[5«ÚžøR¢(òmüÞÆz}wóí÷’í²0Kx²»{Ø1.Cñ]%!ãÙî®Üý°‡òvÏXw·‚OÇÛ=zÀC‰à¡ëi ƒ2s;5Œý©O½oÿ¸ûéÛïY¶bíöL…B9òwzÐØ&D0ÞòÔPÇÃP2È{÷±É«¶~²ãR¿˜lui׌Î뺻å*øà¦ÝÖÓÄ {°_@©ºeA«ík£ÚvÆ*н]ûpj‹±êÚÁé°1é…©ˆ­íƒGO[ÊKÍ’ŸO¤…®ù`'{ Ë9Ý6`ý“!ÞœU&Q6ÑoEªÑ#!KԴЧΞ%2L¸4ZE1·+ï½jqàñ‰Úëê`åléìN0jCƒ{{†@Mð\UáT•øÆì¢‘vöó^VZò0ælâ~Më4Lc~]댅RÅçZ÷>jð1û%·òY‹:†k:~âq FJ-šõÕ½²PFÉu½”³óÓÔuíiÆÙ Ò·u]Ǫ°²§þ/W¿€Ïô>UÈÄ|Tº¾ÝÇ,¨/i‡ü%­¼ˆI+áìdC‘W7àž+ö ©z¥¤Ü*yvj&D¼ I;Š?GÏøTòPdl{zE}8úÉ 9Ç€7 }w:~B\Ùʯ‰Í×.Þê ž<F¯ðN ìǾ*ý²'K y×W“¢*u^ÿ1lŸíB·8‹¼>âÚ‰Â#M ´¦×È#‰Ó­r‡ÜëVpÒdÖ퇼îªÏ<ŸCmû`ˆ^€™ þâ\› ³˜D7QB†<…?!RÆŒOÉ^PªçqðfdÏl²§(}1‘»<þOä(L¤œá Š©I𱟠a¦f©Å˜ þ{FeAn'jý!“<^MRdzj˪ךvùèŠüä}içz -,cç5ƒµöRdv4'q´{p"¸”E㥠*»½ž9¡ÃØx OÎË’ÔyY¢‚rÊzCÑS$Â+Ê "róöîæÏ Y8*dZ˜W¦ ìÂwEsóûÑ®ÄÇŸv ¯vÌÒfDZ€Qï~½ùÏÍkSØ%›¤ ìpeH¥ÊÅÎRµ‡+‘ˆ¾ Wh—q½Ïí/+ÔŒ”¼-=‚¥i(¦/!˜ŠÎÅ'™#WöE¸Š\£3®ú£Ïqò ËÿÝÇ2 ÞæÁéÑÁi \;åŠËºkƒ[ÔYÈåöõ Óv2,~™R!ç[üneQ™ÚæZî(µƒ3Üï¹%b r±Lâ0‚“ü³‹£0N€O”¬ 6rnÔ*µ¯n`£ROH”ˆª‰ ‰1úž!>§v%wñðÎ(šÆEÍÄð4ŒH–ž‹‰"D1wÖÇ 5û›©Äó‘ºõgÌåÚè±d}c1^®ëáらMˆšío›B9#7¿”!™b3g‚Fè'ñek“ßÉayÂ]®à ›rÅàs0”{éêÜèØØe8EÙÚÏp(ú1ÃxœFꈣͬ˜>o*h޼k³(ïs~qkHŽGÝûÎ1,d }’ÂâÊT”Û„7Ø‹[ß•ØÊæ_0ÝäîªÃõ’-÷eÆ|†Ò0Ê;nòÑÆBíÄ€ú$?äUk‚š*LÌ-RÝꇾs«ÇîèVvvb*Æ®q¸H2”¶Â—ïÆÞ3!]]0Œÿ°s&²š‘1ž'dðRÙbS6bÒÈXOÊ»2ÆJÊQ³»ø“TœSÿPÑ3tü §kv¥t‘m?l=‰(`‘2Õ™)h3›JŸhŠQºŠ­˜u¼1šx‹8øµj ½Ù¥‚óV„ŒšfM5l©¥KîÞ@3ÍB5{ˆ?œ’ZÉÚ‹H W×ET™ bפð }"?K-Vd?™¹“¡OÓý‘jºáBÉ‚>™-'/ùÎr{>ra–±ÏQßœ‡rØ„´ù|Ÿ›8g•òÖIŠþTùŒ”C ÷&(3 eeÌï ®`h¶58j Ýç&¸ îâ–àÜÜ©p ¯æÊ)†¬Û· ‘!=Ò­K×fQæ ·ð+%º,šcÞ%ÑGGñÌîÃ*€¦›ë$:õɼ<|Pá)¾¹¸âT'k4@¥}›ËóÅ`kK™WÖµA׉Àƒ¯=K錳ӹPŠ.°FÜr=ƒýçlÕÅ»ëù?Î.\Öè éå £³glB[FºÆƒ.݇Sí$›îKÇéã÷§ÄlÑõo–¥Ÿ»ØÌQà•Ëí3¢¨ïˆUÈ—òÍßÍ *#O;GW³¦Ã²w´œ¡5kŽ`ôÝ+Ävê^â4Fš¶"¸Å<¦^¾¸FeÕá9:´ë*™g— ™ˆ)j†J¹»)9ïúÀº. endstream endobj 31 0 obj << /Length 1822 /Filter /FlateDecode >> stream xÚ•XYoÛF~ϯ¥k³'¿mÓ´(6( ä¡)PZZ[D)R );ù÷ÙY^ÒÊÇ‹4{Ï|só§›7ï>Šl‘±,–ñâæn!¤f)—‹„ÇLÈlq³Yü}ÙÚj¹’IýúYþLÔºÞí‹Ò¶Ën~÷Q›ÉYÂ2 8¶ßö_¹á~mž=(f”é7_Áåi=RÖ8ŽêÿZßÕ ÝÖ"G·n‡m» ZiÀ[®´Œ£Ú•D_¹ÐMÛ;èðz¹Q^-ETÕò¶X i˜Ž‚eÆWþåJIZ»¹B2uóId×9ÌáLŒ|5ž,ZÚ_Õ4~\‰¾û½~a#g¸5€)Ríz€Ú]^.WFDeK‘¦ýÖþþЭ’3x°ßÙ,áB‹?yèZp5Q‘©[{Ñ ° š^h§\níº®6„­Ô)‹M6ǵꊅu9Ì2uÅÎzjë‰Æ¶‡ßJ³è±(Kš5ƒúΟq ïýRÒ˜1à´Û‡dVLª¬ß20è_²ßº&'rŸ7CNÎ')ÓJôç¯÷]^QœñÑø{é×yYZ™â)“RyÌbÚˆOë$Ú‘wl?ÏžNi!Ú÷/¾þÑm—w¶¥mÝ6ïh–P"_wE]í$s”Ç(2ôé‰Öã¼.òrö²Ïçº~X0ǦÈoÑU÷,µ­ËMÛOºU­M‘Déh¢±î؃o-ð ²›Dö¶“x¿ƒÿúÍࡨ~âü¼©w³7â^â·½übÇm_ëèöà(*-¢MM3HÜœ&¬d•œ +&·;O‚™Â+kgºŽ³èº³!¦= ¦—Ð@¥øSùpÎ]‹Ê(Ýë0Cº)‹ ójC;¶yK3þ>pé|çoäY/ñ‘Áø€WJã½­l“Ÿãoä îDRõÏÀ¤ Ó½ P~¥£ßj4 ÷„}p¿ *‡gã]ó0àît‚Ëé{`HmKRÀ†)ϰ|;= y¥¥i2>`EšeZÏ”0—EïÉÀtÀ/ÁR3T0®MY gcÜ I q@²˜Ç§K/ð_Xå¾TR_‡E\}ïZmÊþÐ$˜þ1âžÜ7àtÝ}ßS ¿‚:æzl,iDãg‡õõ¯b Þ}T þY•ø‰"Iû.)Ô*Iì÷®Ú‡µ[Ðs‚›AÓ@ÒîkÞëÃýÖ¯×Î<€"ջþý€I(íÊÃÆ¿æ¢o’>Ñ›>M:šÕú/tåíåóRÉóڛͬv;²œu½Ûå+úâ B¢A¢ssC yÞ_¸™ ´S)Œ¡ô¤IŸô –àw˜cD´GäA4áï®4t;&y§…$:ržüwk;´ŸÆÇßWÓ•¯V¬ñb|rŸ¨zGx©j‡N{TP1¯×uYW¯ q =ÃXpx †À ´ô¸,0La—)3–¦)-\zóËÍ›ÿ?¢rÒ endstream endobj 36 0 obj << /Length 1946 /Filter /FlateDecode >> stream xÚµYKÛ6¾çW¸iQËˉR/mºh‚({kzàÚôZ­®Dg³ÿ¾C)K^Ù»Þ¤'‹Ï~ó̓ô/×/^¿t–“Ä8œÈœÇ>-lì.÷7ýï^•ÕI¬DL ¶^ õ ¸—ƒôÓ‰ˆ’æü"j¹fgË8í„;3JbÑGE‹0h4åÏ’°CÜ8ÓNñ¹@á(z­7j_šî !|’Œ? ð#,”Ï€÷|ž€ ð? ,Ÿ’¤€/;…qa<¼–ökÕ®G`Ñ|/*‘yâËžŽØÉ4CÁˆâ+¸.FoLJm8¥/F‡îz*´Yvò^]X:å@”$™x„Pàdú.¦Ô÷ç¬ i&–Ÿ2 IU6‚p’XÃO«7P÷Ԯܖ™+É]™dÇÞ}˜¢Dœ^Ô÷Ÿ§c;£}aà ÑîÝEÂí°µ«2­5Êuy)qiÔ'cpÞø3JÆ'³”FÛÆ[ªÑ¶ªž: …!³§zMIf=w1Ô©ÊGÿµ2ªWV¢²2:á3"!ŒñgdºÆl­æPc?Ãkª¢ëúS©öv*üI½\óg$èoÏ×t‡lñÞ~”ŒÌ9cŠ2%BäO­`øyWg9dxqy,$„LI$9`ãAI“Ceª}G_ Û†ûÞWv ÛºGš"$vöÀÌÇ;†rÝÎG’Ãè®ÕŸŠf„AýLüM¹,ª)R°S¤3غ Îkx1ƒR…qîö6œäËw GÆÓå.u2ºómcìoQíÊÃUÕjuÜìkž<§Œúçà>÷î벨 ¼:CwjÒy&Æ N’ ~±ï\}sîFnËüKî.»Gœ±ã]¨N$Éä“.nÓóôßÚ,}†ïü|AšÌíù“ŒÑÀx…ýJÚBÝ”zHÉäñh’äD¦ôÑäHµÂkT©¢.Á%ï±¹ï,!í„MÓ†¼ `GÏ5ú3ø,DöÅñÍÌæÍP*£ûdV´,ö%,pA¤¿Û•þª ÿá¢Ò90q‘ñ[äè¾ð[Ó´«á÷Àé„Ìœ§ò9k~Ñb®Ç«6¬ºðâÜÏŽlLƣʿ›ûó›|‹[Z'ˆåñ‹œð/r¿[9NÔþ!.ÁÝsÆÁ.¼E÷á¡ èÂ%¢vUÔ!†*”qÝîü”*ñJÇ^uoª1J,‡¬s7ÁðØöõæwáÛö(œpx(´}˜Y [Ý‚;¹„Ý]Sù­¡ìuÃý[36°†K’nƒ¦’Í4oµ-bçÃRTDó^µyÈ•~éÀ9ØáŒ­%XxmÙ¶Z¢Â)í`i}à/@ñç;ÕšB•óW¸dޝìsÏ‘Ú[`îƒy»±“>5".÷:½Á=“Ù¤ð¹¢"1óã4–ç1cymÏ¢€^!2 tãÃé“r’!Ÿ83šCÃ1˜…2Ÿ=0ë…/‡Nß·[W 0¹„û r€’`2š ¿ý éφ¦³W¨x|dHäIô¾Æ‘•êÜŽ¢èQøc m"s¯«´~o+>‡2Ö0mºÚ°ÝYe¦*®;ð;_¼ßô\ ¬£3E`R¸K¡ÂÃ+—ivUÓ™1_¸—àÀ‚ˆ$³ÿé,ó¼NíЋ_¯_üØ|Åû endstream endobj 39 0 obj << /Length 2216 /Filter /FlateDecode >> stream xÚ½YÝã¶¿¿Â@bF¤ø!ÝKMÑ¢iƒd>ôú Û\[WYr$ù6ûßw†CêÃKo·m Q$5œùÍ7ýLJwßýÀ‹UÁ -ôêáqų‚©W&ÕŒ‹bõ°_ý+ùçÑ6ëÔ&9•Ãn-Lr¬š5O8™'ÃÑÒê¹Ûù­åОúõ¿þúÝRÍOМñ|•éáù¼V<±´qÁŠÌp6–Í>BL¤Ì¤ãž?¼NM¦*ìüv½Q)Ÿ8'¹r”Ë UÛO8akÚP9QV!9+T¶Úp|*¢¶· ö©jì~½É²,){|Êä±­ë©<õï=óù É fà ÓJ©‚§îÝh„‚N9¯7È`÷hw͌ڡ×ÖmØí.]OONÈÙp\#L4FŸ=5ÿå#=>¸§Ý`*ùè’ˆ‡Ûa+wCýSá,-Ôg(äϸ˜Tó©(r–é°Ê™)i»SY磪_`ocRy¥Ö„Oú>€T61;Ï &sù¹òg¯ËÏ53*ÈÏï·•²ªßA`¦î›âgɶ:l¬(.yQ€²äÝšgQÉ…f:ËïÖüϵj½hÇòìÅi"Îàe\ˆí·•ÇäÒìÚàXnkËB0`DŸ…ÿ¨utñs ‡D²~ƒJwš·ªÎö—Ú»qåy.ÃÒÇÑÃÛn±„¬²ÆÌ"ÑÔpMW´‚•û€~á!LÁ§\¨äG‡˜A8ujÈü7?R€Ù#T’‚Jr\zŒ„8…¢àöìºêŒú𛇖öªOk’ßNÈÛ‘‹Gô]RäôIþü“øž¾)·Žö2øGǺcv¤Ë` &wîÀ ¢“<í3M’¦apé/e]?‡[[çêð‚‡g,°|9• ½rGØw,‡Q“ô'8“ælÓ^ÇŽ>¨îÒìmטó^„ërfÕ^)ÊAsî;°l`ÈÛA]õ>h‡°~š)Ž|;¤'~¥ì™aŸ;°®H^ÕWÇt>r1q)Â~ 0tž‘Ès¦õ˜ÄÏÈú³R&ÕèáŸÖ ”ßU£C^ñ¿á™bJ˜EèÄ0¼¤f Á,ä(ô$GFÜ’»õôÚ´í9:O¦r–†öLKšÝÛfn4`Af‹KOU]ûMO¨èó-3 •¹PamC‡ –CŒ[Ééûh=ÒrÔ øÂäCªÒÞÚX-’Aµ5aûu!v£ž‘ü8þ¢ÐkQû*_í•L$Ï1Í–Oµ¡¯fVãΗ«ÎžÞ÷åPÒÈ{›Û¿#_…ñÉžÚî™Æкm®Às_µôl}ÀÆáTåô!ăÐùo¯BL!¤B€û`Û•CpAÁâÛˆÁs‘1®ÇŒ@`0Tcæ è‹ kíF#<`ܪèeóÚ‡ù¿ATpÑJQX€ggÏu¹³' QÉ~è\\»™ òâÊõ}Õ ¦šD¨÷iuçË,éí¯ô ”K]es]º.SâX¡\GÁß­¯Õué Í­ÒáëˆÊæÆßDÀPŒK32’% jÆPÍxÑ>@-y]ùÛðí}Eîྠw6ÆwN’çt{1§è}¬è`×¹#²ƒo$\d‘ãWðXÔÚ® në…ŠÈnŠy¯¹ØwÝrqc^W‰,ÍäÛ­P7tòxCgc"ýù§¿ã]ßIEˆjÉfÌ•‡è­©*–÷RËý@ÛM»*\»ûG|íÏ%­à>¼\a+té„ ®lösÎÒT/5¸kO'ˆ×{sú\…æ¦Ü/ÖÚ…¤uŸ Ý÷þº ƾ[‡QEIÆvMéi:!ñ¤§ˆ^Û±XZø æDr" (Ù•. ý‡¦\ꀧ=‡ÐÚÁ«“eþ©u‰IúD»X |ÿeȸ*… vxΪ9«<±ˆÄí2é<ɉ­]Ž3ãAšú-œ™oÛ âXú_&èò3ìbt3tÕ0û¶FQÿ¥=ù› R•’sKéÙ½ ^éØß‡XA‹»!¨æý6×])ß•+¼?èÉŒ`üñÒûUg¡?Šçt•™_¥:•¿Všæ,KG/î!”’à"H~¸òœ– .½ûÓûÿfèf§ endstream endobj 43 0 obj << /Length 2445 /Filter /FlateDecode >> stream xÚ­Y[sã¶~÷¯Ðt¦4±°¸ìcvº™v2mã·$´Ûœ¥D-IÙñ¿ïx$ÙÝ}AÎõ;þtwóᓤ ÆH¦_Ü=,—ÄR¾0TƳÅÝvñÛ’³Z3ÆÕò—¢i›ÕZµ¬ðùßÏÿÆÁ¦Úíòý¶Yýq÷¯ŸX¶ÈH¦¹ö§ÒÅšY"l<ïîÉÁ_þÞò:LÓ¥{^)µÌËcÞº-®½í.Ö®9¬ÖÜ.ݦŵ¶ŠÿÇ M›oVÜ,¿àk V‹ý þÔºGWã\¢ý%®¹õvm‘—å«ç Ðì墑f·;´þ€×•K²Z+I#Z-ÝŸy †%HGáb­;&q²9úªFÞ`îÏ ã‡¼n‹Í±Ìk|ÿù3ÿˆ£gÏš«›¢ÚãDÑLÈUHn ¤=H=Ò3„) {Þ¿æ›;x2`çÍ?în¾Þ0X{X0kWl¡µ$”ÛÅfwóÛt±…E¸ŠˆÌ.^ÂÖÝ‚“ ôJåâ×›ÿÜüLjrgF —p’ ¶3¨N$§–"Ñ’w>åMкðÚƒ§ |…‰fS ä‘N0±²;w5,ç§L ȵâ-L „19¾ìŽ`S.·®ÙCI€öSF'‚ötÜ¡èhÇZPN‹5Å2‹;Ë¢VXîj-™ɴο?‚‹‚a$®2‚ð^é‡c'Ò(J9÷ ±ÌÛÙŽ¶:à :ÓhÍ.¿D$s€7¯Lñh˜Op Òµ½ÎÛ׃gÇ%áŠX-/p‚á!¤F€v$Ï&7±ôM Ъ'é»Éƒ10e¦É·[@+Íñ>Œär·<:–q~[my6A[kôn)¡ÆL}¦ó<´“ %„Ê*>½ì_Á”΋Žì’„Q™™e–³øN-±LNaj·OUoÜOYÓSáë5)–Ý3ÇÇï”) <Ä×Ú}…Òª-ö ÄwÑù¡5c}'Nˈ2Ÿs¦/UC–Y!•n¿)«Æá šD—|âá0{* &üâœÛGx´š(i§ªò Ê~rM•ϵ§ £˜À1n¢g>'9,S†h;BCå1=$²iíytèag×±”†&‰P³¼¯iëD(²´ (©6—k')̬vb3XÔþ$ðl«ðÎ]Þviq’€Ì@qľœRКRPç> {Iç©hdbÊ`Ø5 Òí Õ½s4ÇPQx€1Œ"T#æ\Z !ƨwf†M“+d¡‰+x/Dù× Ç¢€cÇ Ø0·™W™w|[Äh?ØÍ¡ÌàÂDp?¶g¡ÓS[\(]¾µá~˜ü 2XÐå§ÔÇެשþÍ®ª]Âä}¡3ÇiK³û ¨Áù¾ÉÔ3¯ GñæF¶žò\ iOŸ'¿¥/*¸èåˆM#λp'z9úqè˜Àbޝ°†?ùb³hóû2þ3†CßÛ”ÇØ]ÂS‚Ò äG6™þEòcõïbèjÁøë±jãÔ°®Í×hÒyoZW7oεۤc„¤½§ò×*%¢_,ÏD8®ˆÌ Á-öÃRL샰ÆÒdâÝ2ï‹ö ¥’ÉØ7SÚQ ‘è•P† NzEØŸ4X(Ëâ¿ †¶­÷`a{°0}lÜñÄÉØ|…ÙtHâp93=èBRý ð4Õ[ó!oAñ{<ŠãÞÂ2Ì»lXa³ÈZºiÈ|8Bâ±ß´ Ÿ¦ËÀû¦MþeÕ•¦²/Žû²Ø±½,–á°ãÎcÓ}¬Øcÿp¦“æJ§ÉÔÞG{øWʯ&hv¡NqìßSf»ü£ÙrJÙt©O2Ž(œ¤Gr&<`Ò UF(læjþmXèk2”ä¶`°Ð÷=>qOÂ…Oä÷ „ÎRͦ„€T›tR¥ê'ÉL0-ÿ¼Ò.€`¢Ø¥øÌ| CŸF6š5Ž’Ñ_ó¾à(ç èvšÁ‘ÛmªºÿøRů6Μƒ\àæ .øråü‰ ~„9ŸTäXxÀäø(þ÷…O3=ˆè†Í*³¤§ßƸæÜÌE}oßZèù¤üóç©ï¥pŒXˆÁœ€ô3F>ˆ(„Œ%ŠŠ3-•èOg #@X1TÔÿ>Uȇ\í~qvÙœ¡ÃŽS —UøLÙ”»<“WlôÉOcK8ŒèÖ®³#ãéïÉA%j¨&‹!&®%~‚”ÔÄ/{~äuíŸñ1*ýkH¥ü ˆÐÆÉu“"çP°y³O¤A/„ß)¥iàCêÏn“MÃ÷t5R'@µEÍånçˆÒ}0ež–µäÚ7e:>L÷¸Mtèrˆ©‹^ ªÜðî)Ÿå væ-"iŸ¡:üNü”.Äaæ1/öM{±¥g<Ê.kŽe×4çG÷„˜ñ P(ƒŸiþ vb^±ok÷Î> stream xÚ}S±ŽÛ0 Ýóe ÖY¶lKkÞС( zt±’§X-÷п/)Êm’;t¢ô(>’OäÇ~÷ð(t¦¹n«6뙨$We•ueËE¥³~È~°þdó¢®$;xç|^)ö:NG‚¾}ýB‡½?ŸÍ4,t3s Y{Xƒ';ž/Ξí„L!1¯Ó>Œ~Jáád’#˜|–ØöÎùÏþsVf…\7 U¸¬³Åкf&Z¬à¸n9ŽAR\µŠpà R¼ÎærÁ,ÌÎÀªZŠwÿ2ZŠ¿‘JI®°Ähˆ„D :¨a";BúŽ{´3TÕAÛñVÖÃôN Í»Í ÒçÑNv6é K÷Æ9¢Æ€„øgpH}¡†3=y*›rÎj*Ør‰Ú€uÇkÙÞêYªFG)°A”"fYÚPÌ@ &v »Ni¡?ÿ{÷V¡k˜Aõ?a®ÿú‹pJ%]ý8Ï Y•4¹÷…¤~5¨«Ôm¿›¸¨µêØ`S Í5 ~"KòÂáN^@.³ ®Guóý]a¥Ø¾[žçJ²7DO¥Ö ÐJ[6±•w&ÿæcpþÇ´D‹àÆ%äd]ú9ãèů¼iA½Ñ<»m‹k'r>Çî8aqåht„”\6 d#;®e*L£o÷©ßýé!ý endstream endobj 49 0 obj << /Length 292 /Filter /FlateDecode >> stream xÚMÐÏJÃ@ð/ìaa‘æJ:/ éŸX#Ä´‚9zò žÔ£PEaÅF|-뛬ø+^öwZ¼ü3óñeý,£>Òî>e9‡t7Pj”‡aŸÆíæöA—*½¢Q®Ò³0ViyNÏO/÷*=¾8¡Jgt= þ*g`Žÿˆ:7ic€úÛ"ú±âÓjÈ7£G&G"a ¢* ×ÈÊÃËw'ņXø(à"×aùdCÝ VLóÁðïe³Æp ôÈÆ‡k¦½ùe¾» ûºÁLZvD`Êñ–œ¬EV ¬d¥QKhX Ã" Û ¸Ž0p‰¬0Oâ ºÛŠî"D9òÜŠå(†3s]z˶=uZªKõ/tÛ endstream endobj 53 0 obj << /Length 263 /Filter /FlateDecode >> stream xÚUÏAJÃPà‘Y13Ð4i»j³tåBA] * ]”vB.{b yÐ ÜdÞsJDìâÛüÃ{ÿÌqt”ô¹Ç &yÐ燈^(Ž4ìñ`ØMîŸhœSxÍqDá¹ÆæüöúþHáøò”5ð¾¹¥|€ü`aaÇ9Áïeå­ ã—R(£L¥(û3”]µ7EÉÛ`±¥EiÕÔêN-6Vj-pâW©|gÁÓíªÀ9£Ãpã«\ª²,~‰UsퟻNöŸívI ÊìN=k¿jF(uŠE}€¥ññ£òÖŸÚg\ غ]ÑYNWô_Z endstream endobj 54 0 obj << /Length 149 /Filter /FlateDecode >> stream xÚ31Ô35R0P0Bc3cs…C®B.c46K$çr9yré‡+pé{E¹ô=}JŠJS¹ôœ ¹ô]¢  b¹<]ä00üÿÃÀøÿûÿÿ üÿÿÿÿÿýÿÿ@¸þÿÿ0üÿÿÿ?Ä`d=0s@f‚ÌÙ² d'Èn.WO®@.Æsud endstream endobj 58 0 obj << /Length 238 /Filter /FlateDecode >> stream xڅϽJAà+#,\„}„½/ ûkl„•Á-„XYH  –Š‚ÝòbB^dÂÛ¤Yp˜ã]’V,¾æî¦ÊÏΠɤ’ÓBÊ ™òœó—c˜É¤Ú7O¯BŒ>Ä;’Î^&{R¯í±¢ZoÚ¿¬÷êÍAg)ùQ°ÃQOú>éΊ ¡njé4”–½ê™íAµÿWj©7_fë½é> stream xÚöP\kÓ ãÁà0¸»»»'¸îîîîî ‚»»»kp‡à~9畜÷ûÿª{kªföj]ÝO÷³‡ŒHA™NÈØÖ(nkãDÇDÏÈ ‘þÊÄ`dd¡gdd†%#S1w²þGK¦tp4·µáþ‡…ˆÐÀéC&jàôa(gkv¶0±˜Ø¹™8¸ÌŒŒ\ÿ1´uàˆ¸˜äèÒ¶6@GX2[;wsS3§<ÿyPQ˜¸¸8hÿvYÌ lrNf@ëŒFVe[#s “ûÿ„ ä5sr²ãf`puu¥7°v¤·u0å§¢¸š;™”€Ž@ 1௒òÖÀ—FKP13wü—BÙÖÄÉÕÀøX™m?\œmŒ€ìe)YÀ; Í¿Œeÿe@ øwsLôLÿ ÷oï¿™Ûüíl`ddkmg`ãnnc 01·¾ˆËÒ;¹9Ñ lŒÿ24°r´ýð7p10·20ü0ø›º@\H`ðQá¿ës4r0·sr¤w4·ú«F†¿Â|´YÌÆXÄÖÚhãäû?Qs ÑGßÝþ}¸–6¶®6žÿA&æ6Æ&•aìlÇ jcnï ”ý·Í‡öÌè`cddä`çí@7#3†¿¨¸ÛÿV2ý%þ¨ÁÛÓÎÖ`òQÐÛÜøñëéhà898½=ÿ©ø_ËÄ067rMÍm`ÿDÿMþ…?ÎßÁÜ  Åø1~LÆ¿>ÿ}Òù˜0c[+÷?æ1ƒšª˜¢†Í¿Kþ¯RXØÖ àIÇÆ cfc01±³8>¼ÿ7Ž‚ù¿yüÃWÊÆÄÀõ/º}úe—Ïå¿„ ð¿±äm?& ü3èÚŒlŒF_LÿŸÇýo—ÿSþW”ÿ×Aÿ¿ŒÄ­¬þÖSþËàÿGo`mnåþo‹ÉuvúØ9Û]°ù¿¦êÀ­®°­•ñÿÕI9|ì‚©ÕÛhî(nî4V0w22û׸üK®ú×¢Y™ÛlÍÿºZtLŒŒÿG÷±]F–ׇãÇLþ­~,Ïÿ¦³1²5þk˘?NØÀÁÁÀöã?À“écnO1€ÞÆÖéÃðQœ7ÀÄÖö¯eg0ý%úb0ÿAœÑÿ"&ƒÄÄ`úƒ8 rÿEœŒ…?ˆÀ ô}ø)ÿA¬•ÿ"®(ÐGvÃ?ˆ À`ô_Äö¡3²µúhÚ$¬¬I¬­ÿøÿÕMãÀþÀÀZ&~Ð21wù£gûKmëìð‡ÓÀ„fÿ€}4ÿü(Åòðƒ¯Õ?àG1ÖàǶ2Øü~µýS؇íÇäêfvÔ'f÷±F¶ÿ¨”éƒÚ?ˆ3}PsüS؇Òñãnù£þˆàôGý‘ÜÉÌøN|°srµý‡ÃGmÎÿ€µ¹ü~ðuý™?¼ÿ‘Œù#¼ûßð¦ØÈÙÁáã.ÿûžùñÿà¿_@ ÐvyÁÖˆ'È¢&¨í¡Zוno‚o–lO=ŠÎsÙ¡Ýù ñS2UUVÀ¦ÃPòpòÚŽå­à á«çIsݧЖDÅÖg¯½x¥é½VØ¥©Ï“E'Bµýø0xt*‚û^¯ö^jþ–àÍ ÒdyöΜˆ h®}nµýe«c! {ŠûUì2p/e3tѪQÚþÅsdù†ÙóXÄPNtøÐÔ¨—nHs·w³¨¹“ï„Òñ4°Þ§Ñ,ß<5·˜cç=Ö+T˜»°I±5±ðÁoQǦÉ=…S¤1=K¾Gmò-æp„Ç­õ%Ì˨aû(`9•ÒñeúÉv¢‘våºe:X©MÊÈ)k¡=ƒÉJ$L+I†Kô²ñÌ}_I𕾂Ӵwtž«vR{%Äbq3ELXÜñ¡ýêÈöay„b(7˜–…L6Ù Y‘ÿòyf\9ß[LiØ1º®ÈS«ÿ=Ÿþû=¸E¨×w'kí î>87NL…‰gC…ºÃÄ‹³×oqfÃZõÕè·SÈz\a;SNÌo,‰ WA´R̘ˆgåÙœCÒi›ŒóèÖŽxª`êSŠOÆ_O‰ð¦ûg_³;ÎÊVÏQOYÏ€J‘’Ñp:³ôév¾zSãxYþ»œç9ܶGܪ8ÎE¢‰šZÖéº Cõ³kû¾ ¬©ÐõV7¬C óŸ÷œdy}È Õ3‚+\e ¸LQ »íͶý2&ò>wY¸TNS_è8þ´W"~ª &y‰žwá7&?¾BjÊø*H^Æ;ˆgòÞ‹IÔn'÷׸ÿßVªå8Ÿš‚¤ n´\ËÁp~ÁkècO—ævlTÃ;KÅ¿§R|n¢vÜ?D˜™òW1æš6Ø*ŠD^ÑŠ3ˆ'M1­aj}1Aú¤}˜ü‰ñ†ãŒÀ@iR…2ãEÓ…d”ÈÚuƒ¹•¤ÕfÔa›Ô+ò}ZõLöSR¢Î”gù×bý÷'Ö~z‰dW´†ŠÝU/…fácÓµ:×kCË.ñê88ùŠb žc’8+böÓrüS°ýXÏÇ[êÇó³Tìi84ZeÅ]Dæï­Ïä%6?°µõkt#ƒ¹­7÷°[aÛ0r…Xë´]^Ñž0¬”|ÓÖ eÇÑ¢ñW‹ hŠ’ËÿrJ‰0YC/ú²-[õ« Kû–z[ðÁƒ…¢ø;ùT2û÷ KæÔ5¨ˆN2HÊä› K?ý,ÑÍ7†š!°dKJÔᄘXË4d»*D'ý;Ý#áÞ§P¬_ó?µ%ý}Ž5ÐôîJGêÞ0 ŸÑŒÈº|(щV`¥]‘¼Ó¹ì\÷§¶¾É‡[€Ú®®ïõžµÛ-%ð¾ï7ŸöÀH5Ñã[^¯pCŽ!§ßTóôW„…t¹Òêöº¨¨KÅ¿PÍaíb¶Ò"©.Jáó|v×™®3àzc3>ñòøÓVéβÛ3ɦUè²›(ñº¬´lSâlᨿ!à7‡ ƒ kø èvÕfeËÏà ¶V›¡fëWi ‹‡vlÐÊ’ÍY«âeµ¢Õ ýÚ¨I« mlݶYdÈ·=×j¤ZZÝQ¯Ái&ª<جo‘Ñ59ØŠPÍ× OAµñP¦­¡„¦©›¶kDdøª8è]mfáßJ[×(ç²Ì·‡Í‹¹µ? ŠiÛu[éí_°´¦Â&ô´bÔFy‡‚xš£áë‰÷•ð~X¯÷TæfRUÞ•¢gŠÅh; ©3ÁwÏN'Ø&}›BqßY_¦‹¸Ôî\1õ?Šš”°ˆÙÛ/'Ýp²ê.LüBêœÍmÀ3xáâ€ß)jêšòü1\œ‰Z®IT§§Oç°bµK}Ñj‰•³‹·Ü²‘ï!+j:Ëmc( ö$ÛÒg‹“4èp`Á¦ÛÇ^&¯¤V+tðƒˆ±õ;Φ†ìt{²Mc ÙyÈiÁ7…`" “u )r‡×žXÝIX›'_¨äR祰’ æ×kØÕÝÝK=ßó8DÕç3¯Uç˜Á›Ü>dÐFäò[‚Ï/¥ý6ZÜW â@šå¡ ËhE6Ìð¬©À2‹Ñ±+Cªs¤*¤<âèZþz×£u—çÚm/RLzÖãDjÁYGUXó‡°I;:Ãþ_Ú0Ñ\ˆBå½[š¼.4e#PU²"»­É4%ø«œ`±è)xî‘ôn"3˹äª%ÉÞËÚR{8a„Ù#O#˜Ò¦¸ðÙ]ÛÜû«¢X8¥#€„O”™¿qPºéSNñÙ¢¿*Áë3¬>µ—x~âÒ¯äÜÂ@ŠüÕ·"Ž*J.0æ¥7ÿF?\‘—àbp¼¥¼—ÊáJ6fɾ# /,¬îdYä #Ö³‡Tï§&©„00N,ž~|ö¹:ÔkÍ}òÂÙgOŬܲӅUíÓlQ(ƪŒzËD6çUI’o Z è3ʼƋîR<Ý™ü2¥w¾7Ü|"ýu¼ºy9†AÑL.¨k`±^9ŽÏX–&8kàü¼þByœßgq¶Ø',ˈ!Oòp²œ† fŒLØú¨Žc þsŽróÅkõU¿XÒ ­=OgØ|ë$Ã>JL û±V ¼,òÂ9²mS7n£ üï5èÒ|ñð¤~¾6ä«%ΈÒ¸œ\ã½HrFÂiÛ‡$'g­ºYÅñ±g1ÕA"<¬þQmÂ8G4W±÷뇊ªåSö–rõÅh¸4EN„³Z^x27+rÜbØ…›Èç>Âf¿ø¶Äë 6‰™µ›uhw}g :)K­Ä¨û#48^–£W–ô‹à~Ú) 5™{F>:yhAß6ä}Äåã{ÌšáÀtž²©Ç ˜Bn˜.sefÝ@^ î2f0<õÑ¢ªzüdÊZœÏrøº.AÂ`'ØC†”Œ¿Ìó£Í)q4•4 Ëîðþý±ÇÛU.…ÄæÛd…_!#½aiꎑæNŒ odÑ>BÀÝ›‡û‚ÕÕû+q `õòV&mr'°k]ÕÚv&ýz™¹Ä,Õ›Ê/{çÀ#q‹›åçýÅíjø#!LžmÏe riÎî¡„,’ûˆÊ Ço^±Õ‹_o]öáê>"uÖØ×|Àzc²'ø}Fþ÷ï<›h±¤»Wº`yü´YôøâÏkIE ¹d I½˜-è´ä çŸUÉ'”+Ê‘ŽÓq£ÊÓ”Œ›vhï4õ &™|öYíèÒ}å¢Dš«ó2¢¸Ã3FÝ÷Ç”{¼_±ã°è³ §$šX$?‡ ‚—JÇÞö€+p<$$“ŒÄ*Ñ4©n—㫨lƒRæP6¼ˆÉ诒Õuÿ~Sޤ—é/Ë%÷â°u—xÅ^Ê|Ê!ÝR Ÿ–ÏïXz³²ža·gÖ– ñÝJjYï<-"4`¡êƒÍƒ•ç8”æ¨%„˜Ûfâ(Ý[©ó ãÁÚ|ÇBÑ·%s$@V 'ûŒéÞVöU=UNm¹Ú[¤tü‘p|4Û´ó°Ô„œvH{iáâz‹W›¡ïÔoµîkÆöÛÉóÞm ½· ¿¼—ëËDü»Ÿ­§òVD”³ËÙ)JÏs¢óm9:t¡ ÷» ×&T§./¬“åÝbÒj¾Z\ÖßxÀÂNâÀˆ¢§ã§Zfq[¼ 7—!Šþáè9•`Y»Ìç€%òó«ÀµU[`ò˜š¯º±ûú*›4R\íô¡åÚ ãÉôœrK«™òºLón4U¤ßâSNxr½U“á¶ã%nõ›'è ·”g>9@Ùîm~¾´ -¾RcôœŸ«ô~j€¼æ0nBÈ]¸ˆáºeƒH¸ÂƒÔœ 8z’É0é·9N…`©áD¦ê‹Uù6ÓoÒ…º^’¦¤Ü<)32Î}bÉZx¾¦ â½ÌÛ²z18¢ò˜NbäëüƒGí!„Wt¾‰^‚ƒŽ˜Düê¦ýjVŒi\±5̼N½œMá{*´ eµh CÝÍŠ¬a9ŠïQä¢ñ¯‹e¥<«™Ò½j*HÛo«?ÞM ­}¶2ôk4™£·§Â¼"!§»ƒ/UÔluê$zË2BÛÛnK/ž Òo–/¶°Yw×ÕD„…ýKežÝÆ™õJ+°)µ™Gv4w;4ég×`%î×áúq²£êœ8X¶ìR^8QDíi:ÈÖ‘´Xäào¶¡úœÐ&˺›TàyΞDx0’tDE:3®ƒ}*„Ÿ/R|Ñâóð{ù¦O-#¢jŸ`™’¸C2‰.p`Ù\ ‡@%suö,§DP=¨.…@H¬¤ÁqY¬þÖº62{¼0P}~‘¾ÃH#8Q;¯².¯2(pƒU´zîoÐ*]îæîÓ̉=älW_à…Ð"ÀvQýNªEåø*oÌ›MS5µu¤Z.7GÉ9…@n(Ö©x"‰º…ìDßcÂ~€sºß«Š>¶ÁR†ÍgP¨Ûâ냌%²£óz½[âGÈ<ƒIl *R²£¶#.Í9ýÚû:6ÌìyÓù]Ë…)0 cÆôëpx3H2jÁ¶gçC©•`Tñ‚!˜‘F‰ì¬®°íÃ/…?åḛ ç[‚ëűYÖr¾çèQræps뻹«i’âæÆ?CA¬G˜ŠÏ5¬e\J*jý@Ÿ*%¸"ª±õ[Ï„#¡dµ¾BDÂàY½ÞãW„X V?ä8ºí§a È1ù‘ãÅË›r÷ŠOml½óiô4½×S¥_v!ûµ6Q 2ݸµO§Ð? {PÅîÙH»‘?Ütµ`þÇ]a»ÉQK®ßg²ðRž ÓµqyÇGÊDËŸ[³Ù½çŠ× ¹Lñ;~¬xeƒi27¢ºåOíeâÅI ¿Ü=ÄpñClóSóT+Ÿ¡¹4„š”UÁ8ךZAòëBt|~!磉HÉoÚ¥meÌèGí““†ÏN_0´88¿ár/2ëÄü"ðø&áD}˜rÑ ˜².¥ŽUmhtãõܤõúð5å“)à~b«½wnuÔ]0Ha1ç *H(ç¶R§puåÅéO£´m¦¸aR?‘‰wI ¹‰§KÂjr)#Žb'"Ñ< 6%Ä5÷¯í.¿Û´Îs‰ü0Ђ f@ÜI†7Oð°ähêu{±®Æ·€4³Ï¾ñæH‚wŽ˜óΫ,j¿äAwÓY<Û“ŸÍ•§#¦{ÔYrÓxùBÜ óÊ/ XD…Ñt)Ýx¿œÊ–@ ùNeÎüblYÎ8k€îvkžÜ©ÅÏ8 Æ—·û)ÃËu®Ö‘8æÿ®¯A§(à)ò1ÙiJ$µUŸcïÚiý,šnàÖe¬ZưWhÀÎö:gÆ0ÝÆÖ„Ãh›S’ìà0/³~v; Ñ1ˆ0è6DÊ&èU7ÃG6¬$­~Œ#NØîFp4žŸkH£ã]įâäÕîû¸â\k*ļÔh¢ÏìFFÅskþ¡5ÃCi›³oö¬šæðhAÂæý6Úv,n-FÒË¢±XÝžOøª^ÓlòêÄdo…,{ŠGYG¹eÊþ¡'3&Ôd']=Aï&úg`åÓ“Y],Ñ®Y1nÁ¤#@fÅK±&nÇ TŠisãÇJ¬W%W !ÿÖˆÅ×±¼Q”*´Ÿ%r’à–ÛÆ%,>æð…õà&Î ÜæôŸìè¿ "Ì`ô¥àÊÜj‰ÑGГÀ¿}j\…FËSdHãä… )$ª' CÌýâÈôó Ìê“þ±¿)bÑ×Léuúù8¹ÑÈ4—íÓÒk‡1éyÒH® V¹[v³­¸… ¶¿!éf£ àå .„ù÷¨º;›ûâ655§øbæZé.ó÷ÿÐÖ^öÓ‹.µÔŒ<ò‰NJä8Òöé¯öšµT›Ú£å8l¨×5,mØ\0+(ÌF Ø&íKÖ75§þ`þR‚×6^¾k¿P“ýhòZÉ!L’$}Åó—»å7}/£ûú€¹2E0ßëjÿËÜ!¯ä:vƒÈ¯ýg{ñ,+ô6¡‹)~÷‘nkÐ~­4Ó¯.¥eSŽ›˜“ôÜÉxÏé |ó'ócB‘W»ì NâV&+c¬òÅk‘ ¶ÙÕM'+ ë‰Ps>7_ßÓÖŽüu!ªÖtâBO|ÿ57=õš$8˜Uñu•Ζ¨3Ü[Ç2^ÃO8k§37jHŸÊ!—’ˆÐw^HG"¥@X$1Qú„ z¦ ù‰* ©®·Æ»}9ò$èá¨ZÉÃŒ‰IÊ”aÎî-àŨ3´7£¾} ãuþ.„¥Bމ÷ý™‹ïÞksýŽ`Þrˆ±£ÄôÛü+G¿—\¢Ô€ÿ:ïy©Óq†—〭¬°ù-±F!8ªA57K\3®Ü—Èö$ìÁýŠç¡KÖR"²®¦R\æô6d­b‡{ÓƒWÏ×Q»èÜm1‘”]´©¿ÿujÖÔ‚¬X«ªÁº¿vâ—Xa‡of€7]9kÓ¾:O\Åà'eäÛ¨óžÝp eØzŒ_m=á²+|ƒ»Õ¬úïa÷¼ÚÑ̸ýµP¾¯¢=H_.2½Bæ¤)<Ây¾Ö2Å`&ïKÝ£º@ñ?L±0Ç`;e'>ö¯÷Û¿ÔF‚XÀ¥iX5/Åɧ$ÚZ(4”Š6¸rw-u…ôf \޵¨WÒ2…Ì[fúPÐ?%4{ÑöÊg&W±ËOÞ/ÊGd·×­pç\4H –Ú[,vUq&ø/$~I@6åÒøVCÎÆÏSf¹Ïhì³P6ðÙM.¾6ƒ’é;OÏë½"ÊsÒäÑ*¢œ‡;Éçs·H¾”|Á¤fŠgÿ“ÏÝ™hs1Ň»P"u'XžÕšÍ§´Ø^yÒÚ’#¹gÉ‹ìæ8NßšÁÃ8äè=Û[ì§IÀügoË:Ê&ªŠÕeåWX;›\ìuÌIÔÔ¦²´?~é`°{SûÉMåM#¯¦‘0eK·3vå*Hê®ÂZ¿… ƒ}ؽtª_X/ ×LíYµüuÝH­”0ÿ‚¯3ˆ¸Èê›ìŠÊ=ô¶Y½G4v øÑjÜšþâ‰5^ 9¶Ì˜dX,c%ÄàÙº@µ ßåå²á®ÿ[}-TˆÐÔݳ&£oS(„6Ï=ð”XŠ/׎Ís×ñG|@òÑA(X÷ÙV>‰´Ç:5n"­RPÕ•º¾~»µãAh ¾ƒ.ÉZ\p}Ÿ‚i½ÓYƒ}» Jže1®=üÆô±ÿþ7¿±z† ¯Îâ¯GqÅ>­ŠB–îö±^Ê;² êa°µ´W³†] †fô§žôTŠäwÁþ´°X¤ò¯Ð~kb9Œ?æ>?eÈá'ÿØ\ü¦C#z—ùß0 勜oã½*3Ö„Û=ŒÚqH…Â~“½Ö[ÿ‹—G%$Énî1±)Þißáï·»16ûiP\p5~·b£†[WYf ¾4ç—nllÛ–,ÁBþ‚¬êæ(kŠ`"}™G­U>賚 ¿F¼ÁµsŒ<”ÇÅbÚ²(TšŽoìR¥ÐmPÝ+lfæ7uq棨 ¶RîùƒüY»‡5gé'€…ùÆ©!€ánw¬Ûs>[G/»Nb6Ýp«%*¬CcµéV–M÷SÌRЊ ÷%2“…á_Íö…á¸fú™ÃU\±”;Ÿ/P1ªÇd ãê_šÒL㺗ÎÜ‚µô¾éw "hÕuÛ„‚nàÔÃÛÓ4}n½€ÅÇÌ]N’~ÝÚf;‡\óÇãIi+dt­˜ìÑ…YüJõr³+›=]…Âþ¥¸ñ!pÖÒÛIÓd(k‹ü[#XÄ”ÙÁÖà.ê¯òkÉ,ï>[ºz­@©œZ¼´Ÿuâ^lÇž•yA3àÛ‚¡6aÌÉpР w‹l›â9ú ²g cdg³:ž1u8Ì'>&ž½AIÛÎfõûߪ¿/޾ºC1™D’é=b{­¡ÌÔëpT£ñ±»ßL•Pv_@#ÜZúEO>P¡]K•MŠaG„Î8ÝÑ´oUh’Ät{aðäô<1rÕE»½Ã ŽÁ"çBßñŠ'—gûµ3€$óJè´`ax«x.lÅò‰+w4p¬àýC[Îá¹ÅÜÇ*ÆÂÐÄ…(ëS”$'Á·ÈŒ(–¿8ÛWÑ­Ü êøÔ_‚PXríÄä=nšÑáóªH𑔃{eãÚçB7(j£GéÁÛTmÁ´î’¨úOcB¹Æ¿´©fiFm‘§òoú‡•u2ñmÃöÍ ¹„Î’k‘ˆ#®ÖsòG½   Jé»8oî¿„¥£D|OÆÿÖN‚[RvX6Èõ1F­ÎÊ$$¿ožd›¸&y÷Ô¥´}2tê‡×Ý= íQ™—$$Š|ÁÄsBÕþy Ôæ¸['ýБéö…OgÏ=î×ÀG¾þµùs¢O…Pòöï”##uI§†/IO½óAý•E»ÉýªŸw}Ú "VëO·(¦ßB&äøÔ}ã¬HÇÒDÆiÁ¤ÓÇvªwOÆJÅ{¦ ¿UÂC­FÓMúÑZÇÛð/ÖÓ^Æ/¨KŠ9Kê¶w;—„+Kè¹ÚèëËß²'ëçÉÔ*µ?Ñò‘l±¢õÖvóÑB ’ÅZ”»v; •}.N"ïL,N}{$ ö½f³-ŸÎǬÄ,ÿqŠŽnÈ› \'­wZÞlw „@þ]Ìv˜'™öcañ §ú»‰/Ofl>ïÄpãðZ*mIÊK¡cÛjÎð—ÆCv5ÄX äBêyû*]è÷º5ƒÓR5fXÙ>²>Zb|µ Ï¿'¥ :¶,¼ :—Ö°#›aè¼Å.ˆ'¦+Ja5Ç®RêxÙ4ö¨ú´£”ýB–¥ž¥¥TlÝšH7“L®EqŸ¦¡èWÝtµäAaŸVÕ‘l¾ûk'5=ùß‘“Ù ™LéŽü Õðl~ÑŒC×{èóèüäº^o?A0ÇÌÔ£U!t$|Å<Ó´-e¼g"È¥Ž«ÇU¢n ¼9 ù¯‰K:è$Fü¾r7:âYI+­õæLJ$Þi#ïæK¾Ñq v}œõ}vH¦ &0c…øE𣀣ÜË-¥žÃU–R ßµ=vòÅJÁ@$íJ¶1ªGô»¤ÏojÝ–ž&¬™8&ÐlcÝ‚F^¬OǼ™¹P¿!‰öëû÷.ÇÞ9’zÔÖ‡7Æíg7¼åŽÝ!R¿ŸOpÅÚÅU.N\BÎåfû1Ïͺ8SJ€¥B´À.22nÌ ŠŒ•aï7¢JÔÂgÖd8+';Ìal>•½×›…‘ŸÖµ<óß•1YPQ«A1¤~aEüḭ̀“©R0áœ[w¢­W›o¼µè( ¡”îið@Ó2†Yo?kA-£xH7Ùã/ ŸûªZ(Œ¦Ž‡·tÖ¼ Hæ®kD© ±Q©A¢ç£D<ù¡H ŽvM†ßZÓ¿,$®/v/è¼±ÂPÑ‹dE,ob¦ù Å•UØ<îYv"@£{ãOòÜóx}í†Súäí Ò+àúdjnsP„£h²—ˆD´X@ˆÛCcŒIŒÌ”ÃÁ'e,BcÅA£ºAô°5|ï &áÿÈÝH›iJÑRTqJœ¨š[¸ù£‘Ûÿ›•g‰æ‚$³PÙëŒò,:’´™‹Î'éúí1Ä/÷ ÑêFƒú¶ ”\ £. 0Æ?Ò.œ“Wµ3Á€bÈcd6ÕŸšîu¯ä¯` zAb‡™Ðj¦d¶ g§ß É%Xcíe)‰¦bù;2‹áW&Â7™Z3 Þ$â÷Å -Û8A|“M Q‰«RÒÈwžÆBÕGÚ2»–BÞ¯¸g.çâ ô³gŒµ°U£àç7Æ-‘šeÁaj'Êáõ†Šâ—ą̈nexƒBPü3ã„éaý„ ÷© õ½Ù/$YŒö£›V­ƒUßHÅŒy•ùŒníYç[‡ß ú¾´zɪL‡Mî8,œün—W§‡Ú•]¬Æw*ÛÓ1á»pâõüýÚÐ+Ø[=ÜûËãëÐL¼rNDkOK6£Pžìc*jhƒ›B`y¨£…)öüë¯[ÎuönGš{õÊ}ð®nšUFX©ñ»žePC¿x2›sÃô„÷—FÏ‚¹'Y’\ó~ðÄž'íH@Ž|»óvMJ®¨&µÔÞZÒŒ„–kàßR)R®lm,iò^¶ß{|_Õ¡á’»è±j@‚R§vè _0ÍÏ0;l? ä´ˆ°ç\ ì'ªõt„æ[è ë;/`<+egv2î,¦Þ,,ÍŸA~ш×Èlû ‰ h\fµ{¦É¿%l+Ôó©GJ^aü¼øõÜy8*7A#VÓÏ"ÓS”ýKäÈTj­]Ëx&㤩ÑYÿo‹^•rR0? 3i\µ÷a¶å#AísÛ*£Úºï+¢ðzoÕŠ ³™ßÜoŸRžÊ;9xŠ…÷G ŸJÎ75 G]h)÷¬qGTÍ;cŽ>»êîƒâsص᫗ËIóaävÜ€”ÓE™: È õæÎLŸè:%]bÕmÔ ñ^vP°‚¸3T¶ÝôYúˆä'™m·ù°çí YÕ,:ÜèžÖ#ë–Z£h¾‹â x„mØ<7ã÷ûE+š_@ Ì2¡Q¡?ïn‹‚çËÅÙM/Áå~Žýi¯Ã¡=Z* EëAt1ð5’"¾˜Î>Å*NBºÅ‰Ÿ]õåJJÊ8^~BXJkèFV½®èð[v: šV<¾!Ú%«Ê„~ ÕBôÐê,=üE¿.gR…r¢Û§¯‰©áᙕd‚vˆz탼¦Ca@t–Ÿññ:Âê­ÙÃPÜBãÔPÝ¥"›!ì„Bú Î)н1Wu‰# ¡®îrmaŽK¯Ë§MGœìYÿŽYš¦B«T SCÐðùÅ>Ï­?‰éê%¾H\Y9a%[¶åÍøì§uvÓ÷iâÜcë êt{œA;“ú½lÞ2Ô®úË ä€S“[AW)ïâæL7VQuî©8œ~­ª¦úDº×öƒ©Ï†¡5‡_ÒCeâàòŒí—ªA²V]ðA |™a_êâýU»Ç6ìz±ö>³V„6î–ªAƒÁºªcxîÿÜïÅóÞŒûÁ=uG`õà‘o4ý¦p‚×V~aYCrÕc%wD[™4¡Ÿ;‘ë{8¢D¦i W ¾Nz•)ª  |âîä »5™ Ø«Jz©?K\2,û›>1ÝÔ´F[‰¤ Áõ"ïefßd¹(m‚”ƒ×1hགྷ¹ûhXWSlðܦ=0x‡Ñ·}¾¦Ú€˜ö&Í!ØdRÞ8 áÐÃ{5•ÌÚdÌ©¯çRªR#ÎsMé3 ð–æ¤Wûê %ØaÚQ´Ëv;èXC±Ê¢H®™A¯Åäò‰âÊ<'ø zÐgº’þË¥¨Sžã›e¡¾Hbæú•ÅD:Þ?"‹ÒNµæMòºz+öªÚèŠàú¼™ÓbÉwŸ%EþÇ@ØÆèªqúqÔ¢7)ߥÕýS@ ”úÙǪ¼¶&ùíö;ŸŸQ 0º¯ÊÿšÙ5 >múƒ{ü­¯rýÍÒ¿üÊKa$ÌÖFO¯ ñ“¹Sr œ^|BA ¸£#?ÇÚb‰2#èa=½ßx÷ϧÙí-mï•Ouh‰W1BHí «Ø£Ï~×UΟ;Í0ÍÓ: ¶ÚÅ)Ž8B‰[&U¢‰ƒ¸z ÓL(å *Ê֮ׯj½@÷‡pfYŒd7¬=4Ìñ[ż”cÈ ù6ª…O‚l›‚Ð-ˆœM£ÒN#HæãÏB)[dè$$ðŒ”Àú})sq_û¬˜°ý×r·NE–jœC’G1f/kùgÖŠ­m÷Ì݆àºn€Ævùyzò¿Ãl[³º¤Ë¸1Ô¤Z ΕDÁJÉèã(k…SGIcо—×Ur÷<çÏvKê!{·€æû†ô§‰YC¹.9 ý§ØÖ$§nÒTjÞtY¬zîiè¾Z`RP‹=nËyìMtûí;pˆkõâN |\UG ùœO&,Év/ÃPºÛ7uBßN¾;¨y‰À+&ýì_‡zBœ—GI ØÆþš*þº/¶hYE…“ß5±2l{ŽÅšŸ|f³°òuâNV©Ø·úGÞFûý¾CÑ{ dA¯È¥…Ú€ÕšÛá˲ü@‚Žsv2eîƒÅü­­.p]²•V=\6cÌÄ#S%õòªáÞ±­ù7I'”=ßîR{K½Æ Æa’ûNÄq•­ßIy â§RžžˆäxžY–À<_g•H¨kÙ=K¯Ò>•ïÆSöoî€$_ºnùÓqÉÒFÊW¹iá¦Kœ˜€y¦­VƹC¨ïŸ2éYÔ6ï••;ákDSÛŒ!¡¹]Õ«a;¨“÷$ésN½ï)„Ñ‹§Ëõò±FpûHœW•(e=ŋÉ5TâÇÆ_ÔŸŽÁx\ÖȤÝ=#ZÇS52ªõaÔ›¤çÆ¥`uò³¡² qØçù(LÁêÃjv”…y WsVÒhå_Þšv­œF*a‰ÀÍ#[ª'H/ÕVÐs§%Ê)¯æÒëÊ{¤_)œªywË]WM¦–§'Ð<+ã·ûI–üÈYö‘-ã³±eÃÚ\"œ§n\Ý4J·×7P¨_ž ¸õkSñÙK¥{º1yrßÂÀ×уմ×3qj»O{m¹«Ÿ9ê Izµ÷H3Íí;Í~sBE=Ùj ‘€±rø¿Amñ”^µ%¢ý†ÙGæ(Ê„ ±u1Ââ7M*2®#„úÒã¹7˜JqQô©É«c<&hYÄx¾qÍ#žÏÓjÚ{¦ÙFR(ŽÁ«:N½Ö:~ŒêŠúÆ«Ê)ÞjQ²Cþz®5Z!HD•¨ç©^Œç··¶ ×÷jõ:ë=K$ã(L³«kEñ] ÀѤù³={¾Q$† ± ®·–Aùºç‘Ÿ¢èNú;Äçm9¡7ëìð-™j2n÷ÏíKóÔå¥ucÜ^ò…à712þŽ2n ꙾ÀYà½0¢T/ZÒ¨Q²,k[7‘hkèO¦D¹ÎgŒÝbwXÀäRuÉ×÷J83úª×äxŸÄl‰i­ñšSÉEù”à»9€4|ºCþ›Tò曃wN1¾t—µoæ³”"Å €,ûANµÑ¶–Xjø{n¤ ì ³ Á –Ú‡Åä F ç¤j°aâÐJFøÕ‡ë’çÒöÛéÏ‘Óh_ƒu¶Dóö\¼)ñÁ$j»¶ÒR õÓÚDŠÐ”âÿ´·Ë»Õš06Ê…6²Á/$äGúöås[ǸC1JŒéeaßçùg…sdƱ$ä¡Ã…:–ôª wºÄ0´SÈGîc& Ù( ¤•Îy„ßÐÊ-90X‰+oÄym­Æ.ÍÝ |ùÞº‚ûMÂ8»õ¨­MÄÊß©ŸÁ¬ó׭þ̧ÏÑ!@]/^‘©˜Bß5ˆ¹T¦ÝWŒY¶JÔZó8_Ãôë ~™°ÓĘíuž’·ÚÚxŽÇæo/'Ùû†Œ¦rñl"ä«7 §Ñx™Â"a˜v ‚É6AÖw×{ëƒu‰‘(ÑŸà]®X?ñ].åèšð^²Êô l†òOwF3¬#Ã{ê||9J.R"ÆÚÄBiCB²Ròlþ¦Ô©¹ubÉ-žÍ\ÞXp 2`©/áU/"†è;³'L@8ê£hþjü³yèD}øYÃW5&B3øûm˜I8“…&‘QúØNѦ|¹,ð'wzWVm6êÐDàDj›[߬Î$¯Û÷O¸7ðè,E,ö±?wµ&s•ZD´.†Ë5Ç)"zÊ–îš>áXÆa€[_•¶¡Z6‰núkÒÈéÈ4,,®΄÷øo„«/ÝS£êÇÈ Ÿmõ‘« 9WEj ó¢‹·¢Bnxusßübp/ö//!è6-ìV+Å’ùÖèˆØµy’/ÁÆÖb¶—k»bFòFÄdsòP%ê˜j¡ýAù§6íq‹›¬ÂSJ×Z ÑøŸñvÊYù„Y[!Î÷çeÓ,KR;‡å}!)Ò¹éä ×”_Ú$}ž¸ó¢Ðh®Ïïe ת-õP¶öé7XÅ&rå8ÍÌÃ_gâ—Šp '½I(+¹]¼ür—¾ø%§€§’>*®oöYˆ`ö¤Ö7å6=\À>1x $ öäõÊÂ7áâím_‚í‡%°„ ììáÿ–ú­':žSÆý–y[kÓÄBû©ðSAä5‡9HËïÅZyâÉ«L#ýSµm+ï%¼‰ÍÉÔJüŠüAå×j€:5ž ï^ƒ%6Øi?&b7߆ÁCñ¨¤këxhµ78GcA~œ¼]nÖ|í*Ë™@Ÿw‰aW+©K ŸLŒSùB-Áó['Dê ɩՆ04^åôgå.Þtú\”³\O©sB°ÓÈkþ=õ‚—zÒnCî'm9 eö%Ú_©De¸WÆ+çüª¢5õ­ðòCÏHÃ{;|‘öB ø±º¨3¥f‡Å_aÛl•-^ÐJR—šƒŽzÚXhÖ`n±ä®X–h4|Ùdž±[Å #}äÒÍ~!…u ¤É ³»(=z•v'äf#_BDñˆzŽa4ß-UX-PE†òɱ~ºV´¡XXRg.t¦xéb\ÇÈãÝ¢Ü&fÓvpm:íÌ  º•RHõÔ˜©¶‹9˜\ë>° ê’Ì7å l»«¹–×–ÉÖ„!ê!•ɾmíÇo¤\R ©„]€…yÑûst–î}£¤RÄÅ÷él[O2yå§"èavÔ-ì½eŽ®‰[àäer#Ý[õ¶CÑýºÿÿ™Š• endstream endobj 77 0 obj << /Length1 1920 /Length2 12161 /Length3 0 /Length 13352 /Filter /FlateDecode >> stream xÚõPÚÒ ãÜ0¸»{pww 3¸»»„@Ðàn îÜ‚·$HHGÎ9÷æÜïÿ«Þ«©bfu¯îÝÝ{õ†ŽJC›MÒj ’ƒBÜØ¸Ø9…ÒªR\ÜNNvNNnT::°›è?vT:=‹+ þCÚt{¶ÉÝž‰ªP@ÉÝÀÅàâææäpsr ý‡uÈ=ÀÖUv€rE¥“†:y»€_Ûº=ŸóŸŸF+&—ë_áIG Ø ¨ÝlAŽÏ'ZÚP+0ÈÍûR0ŠÚº¹9 spxzz²]Ù¡.¯Å™Xž`7[€Èäâ²ün týÓ;*@Çìú·Cjãæ tž `+Äõ9Äb r<ŸÐVT¨; “Uþ&°þ€‹ë¿éþ‰þ ù+heutB¼Á×° .§ÂîæåÆ B¬®Ðçx ì´|&üU: '© >wøO®V.`'7WvW°Ãï9~§y³,ÄZê肸¹¢þ®Oì²zž»7Ç?—kzB|ÿƒlÀk›ßmX»;qèBÀÎî E™8Ï&Ô?¶× 7''§¿ä yYÙrü>@ÇÛ ô—“ë·ù¹_'¨Àæ¹ ?Øôü…êë ôÜ\ÜAþ¾ÿvü/BåâXƒ­Ü– ×`êŸìÏfÍßøùþ]À^cÎgùq8þûËôYaÖPˆƒ÷ú_WÌ¡©.#-«ÈòOËÿuJIA½¾l|<6n>.@€àÿ¿y4€àêàü«±„þ.÷yNÿ)Ùã 0þ³ L€ÿÍ¥}V.ÀøGè&œ|œVϸþ?Ëý¯ÿ*ÿåÿUèÿ·"9w‡¿üŒþü@G°ƒ÷?Œg庻=o*ôy ÿ—ªú{u¥ Öÿ×§è|ÞIÈk‡ÿŽì*öYk€Ý¬lÿ–ËßvÝߋ憀4 ®àßO €‹“óÿøž·ËÊþùùp}Öä_.Ðóòü+¨õï-ãæã]\€Þ¨œÏRâæãør=¯£5Èë/8Ø!P·çÀssþ¨ êïåpHÿ6ý2ÿE<Å?ˆÀ¡ò=Ç©þAÏqjÿE‚œ?ˆÀ¡õñ8tþ‹„ž³ÿ !‡ÕÑïipXÿ r8@ÿ‚ÏimþÀßü_ø,ögèñ‡Î÷ÛuwùWü3åõ¿às]¶ÿ…¼|ÏÈÛÉöùõûÃx¶ÿŸ[vø|®Ýñäz®ý_±Ï+Ïý“ý™ûüOá_îçêœþ¸Ÿíô¼Ð5Ïõ\Þ¿Šçz®ÅõOs¿Èã_Åò=Ó]Ÿ?Ï9Ýþ¸ŸËq³uýk>ÏõºyBÿð|3îÿïs„÷_ðÔgåîâòüÿõ>Ö¬ÔŸ¸¹…±§gu—­lÒG—yâóKžªƒ€›…bO¢PŸ=Ma¸…ävJÌÅ­ ö·3V^m„…Äï*H3CpEDcø—3ù”?ÏgÖÃαøÜãÈwæsÂ2õºV¥Ä/ÕâXÀJa”ç (ê-? .îåé?µfi™b4f eQ8úYAÃ"?&„(š8F¨ÁD@2Þï¢ßä‘pš<ب g¹ ,/"¤v«< ¬®Oœ&dU÷`Á‹À†1Ž2¬îS¿ëµùŠqÏQl¥ÿ.T&}è¤L6tô§Ö £ VYXÛ$^ÂÀÊlwæ=­Ó9^ Õ45ÅÚw¡ú8-€˜€Ñ¥yöZ’)ˉ(œXÙ8cô)’c#[óæNÏÞ|Ú•·z2Flµi½5óú«ÊiNµèß ZšòtÜo‹ÏÕOê¹’«¨î‚É€Yô¼E¡ˆqGk³ÝŸYÅÚXÆ*ô䈬öy>ñ|#´ÿ„fûÕñÉ¡à@‚’´ ÌÜk i¾Që˜ï>Ï/5Πȵž[,fØ=HÿRåÞµçs©QIü.\H¼[_4üóKu×DÀ—G«<Ü%U‹e_¢ñ¨l„ÌÅ5ŽkýQäŠÊoªÅ—÷ÓñR›Ò‘÷PxS:(}@pº(,Jħˆw$ö8$è¢â¬ 5f•ðºâµ8¸LBDiò¹løæa,Só‘Hï¸t$9f‚÷ï&s¸`\>¦–½ú$nTùm|Cb*aBp[ÃÖñ0 ‰Æ$£q5“YÅßF–üöN¨ÄCÌV¶ÇÜ€qÐ;)BíG:2£ié‘5ߢhÁ†ob;Uâ9ºtÒÙ—J7 •]ÍØ&Ëó¦ùøÄmi/j²îW˜[æÇÉ„ ÉÙÄÉFnR[TÚ~5 -½’¨r¸¾»®ŠÁm·Îà*šæþ xMÅŠ?„ڹ柩9ÉrŽ,Ä£ç èJÕŒwX<‘¯ilÚÆ€¡¡„ƒõvfÙÚ¯¼À˜UjH ”¾ÈTšãpé&‚Bå]íb3ò†HkFµ*©Á/VAúB Æ 5íã»õT437}Üàeï©îÀîâR”ïU¼-šÊ¾L+b0áú2ÖâíPRÐñªQ–ÓJ*)8Œ „õJãÊ“e¢_Õ "5·r<¦ ¥†Áئ%fI®Q„Õì­ÿSð)‘ʲ²:7ÖzMðö£Ú|ƒnR-[è©Ó%07îÒ]«²Õ;NÇÞP¼áKÂéú†ÐLÛ[¦»î_îQ{ÜYð¬¯wyZ|Ê­T\#Sè(! #VyL’Þ‡ïÇIèG«ýˆU%`nÃø †>û¦bóÝFnž£T­fü-{rÜ8A•·†±-uìfzíbÒI”…XµñV‹#Ã…·èäð„PõgYáLÖ’œgàðˆ!Áô2°Á¨Gcâ¥Ó0lÂÒRS‰K­Ä°F0lkR%… žìê”NEìÚ-¼±,ÉCæj~"¤‡fØL.q6o‘!-«!h#hMîG—§ªºNR­Œ«Rú˜&Y[ÃÏÞP_ä¿‚;u6ºš¯¸kôH’kÔ\7g~]bvÑI…®ÚÆ]~¦%_bÝú.ž»Iúz¤ün•Z!gªs+ÐRÉ=)…]¦;!À ô‘±é¬b(kæ²ÚŠKCq=ië–Ý!OsÖnDŽÎ.·L£•ë[»%÷HÍGý  UGåæ°ÖÁ!Vê5ž€ÂZ‘_7i½ÕbcP¶-º ˜ý/4r%©&òW}Ø'~IΣ>Û|-9¡¹:‹è¾IŒôéç´›áIÂcW¶Ý¤·O׉ªOv=Èe¹èËd_é’äàˆôžV£ä·‡=šC$,´…¿œ+œ´Ç›F°~n eUÂÄå­‹ÞC†ß5U_ mÀ%œ àÏ}éÚZ <¦ýÙMC B™Ã]°§@£¸°Ù° ËOKŒËC«Á-i@×ð$“m*½ž¢Uk[-x({Š¢¶3@l7p…Pu!]>–­møš³ rO}Hõ•Ù†˜%‹ VW2:yjU‚·gÇK 킟†¬û Hõ=F,j‡fï×ÚHêˆ{1Q¬eA Gʦ|wý @AãÖ¤ÜÄÂrkgöÆE¬‹iB"‰£„ôV(A4 Š'¥‹}|²"PÞÇW¾C,Õ´£¥Ȩ/RëQáíÐSxáp½Þ/=©rN·OK‹øÇ0âꈈ¯íXW0>«ÉÜ•·i{¼š-5yÌzÓÁõE`Ó¹Žnd™Àƒî¢Ì™2&œ­¢ ï]¹ÛŠ$fðÖÖ|Ãóöväsߣ¼ªÌw¨úùɸ/x¸Ò%ß6«cÓ~¥„Ó‘¿ÖuR<®+jÑú-MâÛµ©Û÷B$ymÚ—@?ôÛ-(úR“½;ÙgöCí;ï`¹ãô° §þî—ø­)þŠÌ DRÒSâÞ™êæ#°ˆ¼ïpï…·S?ZÊä陆q5ÍêßY²†RG*Cå8­-“€¤m_IžÆs7lxåÍÆ«ìß0úôO¯¡¢d4>n˜²”š—-ISǬ‚$>æÞێܺ²àNÆü4otÍz?¨]G”sHÁ t+óÃ~¼˜wyl¥k¸”ã!¹]œ[¼K_ ê¿ü¹l˜'WÆ~ØÖ"Þ$×ÅÝZ|óBäÜ*IfÞõ-š*g>“ae­–5ûƒbQðÓc‰`‰;3õsÆ›]ZšS þ»ßÇ3”ûʃíš&9kݯúhÝAßPé¼_7ÌcŸ†ÛñãJ£Í¬Q¿ycfï ]wæÕ¶FGþHÉ4MiÒ_ËVç€ÁWÅÎð®ÁŸ?ønäÜyZ¾J V,¦-É•ÓÉbö ­ødú«â 銜 ëÆk”•¦3o긬7“¼ªþ+%8¨æºƒé5 ø±õ’Ž NIw0ÏØæƒŽÀ<;i¸U$al0Š.Bë­­À™ jïÔ1ù ŸC!áñú-»GGë,« ñ7y(–A^—í;æ·í%c*ý-¹hÞ•)¡®¦ø°f´^qøÚœhJ_øWZö  /Ý,ï¸ÔQÕÂó¶?äÎ$]·ÇÙhB›OƒºUçXÌXÓ1¿ñ›s|Ö÷µ]ž9ሞÉ<·;¨×öŸ} ÎÎZƵ‘¯oH|ÿÕ%{1ú©àØC“Ñ‹†Þ s ÝkkŒ€öÀ$ËCeýùÊÝ<ŸˆKØ›‚ØQµœˆ‚VEÀ4èøÅœƒxÓýAõ–ÕNaD" ‡ƒTÞL>¼Oø-Û~Z—b¶>ž¾U»Kâ4ÞQx4QœD`Ÿ«u¬ ­HI•¹ŽV¾ª`¯Ì×À–i•\WCßh™^´¡2¾Àr;‘fZH1¶õh.ÃÄ„²,zƒSÊ:pîåÍš¹4,×¢5&æýè=PVs—º»DÔøx¤ÊQ H€n¹-ã Èžƒ[±É>š¡ºÔÞRt\*÷ÆoHÄp;­¦Û¡GÎw¹‚•à&{¿XU<ÔᄼÐÈÙùÕ Âhb|éØßX1ùIVý.uI댹‡Ê}´Œïíû^™×“Ç<‹Û!§Ã¸‡ñ:}M¶j'<)›¾A™ŠÓ툩ª8 Ûæüzaþ»@*R‚à $SÕsÏ@4Ío£ûG~Ëù†'17Mû¨°ßØtÿFþ¯Â݇ây{—‹Å0Ù„bÇ«ù‹LêèZKÖ>ãL¯Šà­alÃðWÍé_\ÈUˆš{~RòŒ [K H'°˜ï§wiÑÈïJê ¸™ÆÈlXct5P½Xä ÚfvßDüìse¹Kô!$ýÙI¥‹áÌiIŻÜ&ºï3$¯Q`.‡Iu èm'¢ø“–Õ»¾ÿü2¯?ÉýÑl•øG,¦|íé=¬–7;YùðàmÓi®ýD½"þ‹ýµÅ ©¿üêÃð‰TêËûakƒoIø× ­²þ0³OÃÃ÷Aú¸í懹šåxüH`hYXð9Ñú$RžùŒ{#øÇõm5: M$3ÏIâõÐØ~ß,zÙê8á{1VôÙE&¹TÙÇfE¿âTÔÜ€…Õ¬Zår°½W1 ñ›O¯cc mŽççJ}€ã©=ªV![q`óŽK»ÂÇ×´ÕèÕ{£Ò½ª vÓÇ^S¢Qª&[¦q@¿_–±A…ÃZÏçàQãÍHŸAÌO¤Ò³PÇÒö4ÖCë™H“ïÝüÐøôÓÚùåžÃVRÙ>AùcìYáÉufdQ§àF+»Š ËXºb:É2Åÿ튑Ë—Ž‹Å¤b霩jfì@Ð4ñ&¼¸KØ…@‰T8àϱÿÙ€yÄóÎa‡ƒZ*ºÆñm“¶‡Û~êå'3=IÇŠCà]Í™im+›©Zø0þâYS†¾Óë~SG•<ú‡ª†S˜â™ c‹B³\]†éh§Hùà€Û;Û@®ã±­¹sz-?Ljx‘Þ§}¿Ê‹RwÊgü0d£jZIµàÒY‚¤º«•'#=8ÓµØâ|JZƒ<º4ÕX›ŽLâ7ÕÌõZ áäî6mÁ„ŠÄ¶1a†§g‰þ:琢¸š˜”—4Ø1FÄUñOfÒ]¼:ˆ/¶?ÞÞõ†ùÒu7'‰Àvª[@0¦ÀFmì à+ °à9áwÚ<žTÛý²†êLgÐ/›~éFQ2~ü°n|ôj¨›žFN¼óÂL(«I4%6ÌsÄ’ÏVêÐÜ)•oåw&¾+UŽœÄí´õÒ˜šˆð;±Ýp°6½nu äjúÈˉ„W-‚uUm±´}_ˆ;“¬b¶ŠÎÀ‰@S^Ö½>€SÚAÖü®èjìpuå­Eés?µá5°¢Q¥nD¸£&kHä~÷Iò)î‹Û;Sò…  Ca^ÏwßU#Òv™s%¼ñ„Ô2Ã"áºå²hù¦Øùä!ë¿2:×™~<õžƒ·W Z0ƒ„ÅäKwï®Ïˆb‹_§ Hz< ϲoÚo44R#Y²ÔêŸÎ‹¥V‡ÑºŽÛ97]xî¼9Û¯}Ó¿!}M·4Zú’šT/¬P¦)䩸Wì°.ÌðŽXkëç>7Üd‹ËD´Ô9oåÎŽgÊ6½‹4 ŽÈéb—¤æV]¨Ä®?-$‰'O! +;×O¡ÔüŽ‘ÄB)!/ÑBj‡·ó#GöJñFWÿZ…ìuh!;vgé*Á¤uètýN¸þÅÊÁ0\!]LŒŸÖï½ØJÎV÷½ÙR©<°‚*=?ã//^üz{Àʱ„d™¥q‡Ì’¨Sé°PÏÐd'¯RG=ý™¥®iUcãmc2ê¾VJ}Ždø* ¡ ».J†–0V”yܵ~³<'65Ù›$æ&ô䀈ÙÀ.æ;à£^DÖ±ãªÍè üf…â*¿˜’×È ¸çþÓ%õ…ßéé‡úAð»§½mȪ›èÞRGIB­¢ƒ×czwzÇëã©ìœ»Š ¢«íŸ¦»C޻ǟoÓ`ðÓ²–’‹ÞsW‘Áû+Ű³Aܹ΋JnáR$Úp5Šã”‡>åñ{3sÔu$ØßÓ ¦ÍÉôŽ3x‘êi9† k”ì8¤7yÔÿâÅ~û®î­&~Š×æþ]®šw¾·ÅuaöÔ9È£ó´v£Vä¡û_~éd±„‹ÖŸ©øj~= ,:/DçÇf!8/¿–\À˜JŸÞ2z9F¦º½ZŸ”âüÄßÓÆY­ 8ÅZdÁ2ôRÄÚ`Y º¤SŠz#î9IVðuFÐuý~ÂÖ{\—±‚ĉ'4¾ƒ÷PR)P1—½UyãüГqEñõçQ&Ùf¬í&K; åL^Μ©ÏîÑRsìG!)VSD¥A¾#MMÂ儞æ¯XÄO—ôYø0|iµe3ƈBódƒS26²WzxÇ=ш.ñ™_T×ÝðDpßïüiù7=‚G·3µƒôN®³§Å¼;¤|Ô¦U˜;޲Åôi˜+í[ñuð±Ñ&©Ðä±-¿êg)É—7DUj.4Ï{­\¡ºí<•w]µâ‰<8ÍgYm,$hÔ}îím“È|‚³/ÒKFü-:NzVÞX Ô²1dA,ç8/†"˜¥÷-Ær×&Ÿ0ѯìŽÁá»îGR"«€„³n&¾ £èèhÿxâÀ—þŸسvú-+¦nú²L˜¿a¬ÐVt£§ë¹eаîíkýVDc›a[„бý£Åúʇ†®<·ëN¬®iî§‹N ²CΊdñR!zEº{£nÕE½¿wˇú(f‹n÷½']”—ÌÕï¬}AÏŒ×k»/ Ž+càœÓ` ÞKø‰IOðæ°ås`üaÔS0#…ê›ÍEÔe£?®þGâÙ#)‹»â¡0q½•븡©|SŸ]Vß³§¶£4â}}­óñöÝdû¥ä>M-Ë„ƒØU¹o£Ws®‚ú1‚'Ž‹æ§{xV'ìžC[ž7ßJ$1v+¡øx×KGíO‚'š©¡™Vñ»Éê—þ[Œ«?h‹Ôúp@2N¶Œi&e¯´©|ío äfW6æ*Kâa¼º%¿Óò_Ä8ä8^òâ¨;ÏIúÞ"P/ h¯ Š ÂHÛ“ZûŠ„ÂlÛ#>hf¯î±ã઄‹A²ì|Œ‰1^±,iŸd<Ê:)Ô-œ­>åóvof¯ë¤Eƒ|‰•±†ºÏ7‚Z;w10{ȨýÂ>™—µµå/‹ÜžE^íDa(&;ÀV(¶^û^êZ\B`î´¦,Ïvê!zýþŒG·o(?ׯ°êÆOe°Ôù¿iÎÐ#=ÚŽœ®ü üj+oÖs‡×Î(ÖhŒ`ëkòfqp¨ù†Hqò¼ ¢°Fˆkäe©w‰Ïžáq¼ÄOÓ+têã'_·K@ Ó l$( ØŽE­WL¬Ï×xNé!M\m-,Üz"éº#œoÒD)xÙ]=5(eý9ú:%3ñr)¢x}¼žóÜAÊ(ÐGA[èíIòæãæ#×ÀË2W"EªÇ£þ\‚:Ê.¶ ~tûc~tïß#s:RGzÕ”ÀŽ6«ÝŽ1—÷fÞæòÁt×V¨±Á¯/ˆti{.¸ç¡9(L¬éûu{ŒwÑñ·þº>²pfz6ä¼Û­œèÒè\´©,®?‚ïK͇˜úŽã-Ýy/Ž:KÎUŽºLªÖ軕+…"R±-#‚L‰ø“’Bíšé£s<­–âßR€ßã»XÅ‘™ob*/!~íbßF&*2Ó“GZãáäÊ<$bí9“™”ëFÆLuÈà¬âŒà]Ô/Æ]ó¿TfQÚ).à+7nÇ’ï½Q7åߟ¨Q“R¶ÕpÔeµ¸eƒ4H)‰Ù´šÈíFË-ÿx©ªm„âÈí&^“¨­-ŽT>Ë–Àå‹€¿‰Ôä6z޾sàÍé#ýS· Ñâ[¢º×䉄¡°h VÑô¢>A…SÁÀ2®î¢©™%Nÿ]ÛwÓòô¯¯Mi'="Ke5ËNdCü×ÀO<‰M¸-ŽÞŒ ™ê“\?Á oÂ6•—®‡YaYB–9mz¹©8°QáØ{‹°£ô½-å.|¹^9ž|n7EØÆ„ñúhç9ú0ÈåoÌîs£pÀ$@³ Uµ¢)NŸ‘—¯óÚPn¾ì}ÿ`"²5’كĜù¡qÜWòÝ ÏB¡lñòS^ål°aéuöŒàçYpÑOºÅ-6&â$×Ûs’Ÿ.¦*%ÜeóK|î‡8QŒì³¶õ1ž$æ5]ïÈù¸²‘ ¬°¦L lˆžd Sš•A•HsŒÄäØ*`ý„EçÀS .ìÅÔq˜v[›hä„ Å™7h33&J0ý[F…"DåîË%Y²u—mÏŒÖtæÏÄ Ê7ñ„‰DXê7w{¾!_Ì×͸Zûð“¡MgÖH<‹Ãi.ûâO»…ŒD^n!zï#2ÍOƒx.¦lM~6»º ^g|ÃpÞ'úFäL–kŠY4ŒzC–TLð¸XXæÚëÊMÔNçÍçm[ÕÕC›ÿ$ù¾tÙ[í•ÞëñðϯÊÚ{RLûQl1û¨J•¾¨‹IÔû´;mí;êÜð?<™g[°7Öºž»ÕóEÔêÔ­U$BŒ[ÍMaí(Fù¢Þ‡þx—±³ã¹8ì××ÞfVÆ¢ÓÄM« µV¸ó€g½ézÒyÇûu—$¿ØÊ:Œf:Fµ«Û¨‡3ŽÎñ3ëlO›.¸L„Çèã¢ÁÕÖ¥«FXž®Ù¸vȱÿõ*Áj»p•Æ‘…¨Ho+Ëò‡A)©--ÓI¼Ñ/’‡Æë‹Ç’Rú(Ƈ·ìâ ÒRæO†éçïÝm`eàk ôòï ï~¸=´ž¿ÙÔ*bºV`‚ûØ'´„äÂJ6íO$Ò¿Ôþ®ã܆,|aÙîT µ´jÿi“Q|Á-‹ ÉÕ»!4˜Ïâ…£ŽÇxÞAÐ*>6õ}÷¤ṴbÆœèiVÏç“{¡ŸÝ;5ÔiL‰‚»ñ´užùÚ-HJ|Õ x ˆԾÙzÞç6Œ[tAšu?3ð$ºÞŽÓëšš¾xÆ öäž“”£wð#xUI=†ªëÙ-GÅu×9@3Ù/;¢ØØ”yëAw²‚¿aÚûé®ÿcÄ·)ì-)Vq9‡yiצ’Ù ¨è=¥,ñKú´3Øùn š™!Õ»‚ ¤!'/ÛpŸ¼(“9¬á©—ÙêúY—¶/tûøßU~äÈ1Þ_@hG^ ©r^¤ŸÛAx7QÔÚ_´»»rgÄóãâG¸!Ê„“:…Dá }°ÝH‹–pÞiŠ£EfóñÚ\//Øœš7ô3¤²VX-¸sପG]çhéýœ½K¦a‘t‘K‡*|©B®pàð*„›ÉÍ` 0p&¯tÀÁ€G‚ǰ_Q„ –Õ¢nQ ÒU0{cN›q•'-ïdδrGî°ß>“üqíÞhÏ…yäSö%öK1vï{wë+­ÄgÉp 1Ù%¼<Ãß³Mî;¥»Lg '7w(ô?K´`J^Œ¬ç~*Ùb­ k»/L“ÙØ¾¡ o3ì8ySõM'Ž?†hæoòÃÁd(˜øÝò-FBÂø¹>Ì6¯·ç°ƒµ¯àÆU|åÞÁû$ ®HûçÂ8+š¨P¼Lw Cx˜Ý–rß+úûP@=6¨Y¤D{ Û2æ±½:šö.l_À ;˜ÕeÊ'Rðµ0ùË÷Œ)6\yjyÉE&f szrÉn‚†T¿Ç¨yëà*˪äջʼ9çlÛù¨L†UQÝ[–%Y'§=.Ûó…ÁÂw±rs©õ/JÙà/úkÍcCO+œ4ïGÂ}vÔÙÄ–hR,·7ÀHfJùÒYµ9= ïSTUéçÝ,‚±«íë‰ÝëD9†l||_ñÿÊ¿‰Ã‡A\~ôtÛÂ|IZ>y,Ñeeç(×}\˜T„!ßõçôß*p½üE¸ÞÇt¹™bÐ=Ñ‚EP¡í¨$õÉÆ¨„ÓÉŽ»¼~GžÜ"ëÉ3l ´?Qï$ï²nnÀ|²áz@½µM£áÌIWv¨ÿ@ªKƒ6YM¼2u[É‘`Ãz·“cŽ8ÿï~­Cd9>pjBûhGÄ‹#› “{¨†|^£„<6,ã{A;úÖÁ¯ÍõJÿ°›}Trc\,cÌICH5ýNuéÑWI~Ú¾¸ôl¯ŽÐoáCź'¹+w¾†KT+WÇxÙÞ4§ÎŽ\“áüUFÏ^­Œ‘¦@èÓ–×Ü‹± 8{Ù¥IU†`]Á¸ rˆxùŠAÇw|íªAŒ°É&=` MªDèkz–¨,[¯»ÏBÝžµ´îRÁ¯Æî_r·¨\Á´2qo8ÞÙó¡júǺ>À;¾*t¼›Wl'7߉úy:J µ•›X¶ª4…⣘¡l—Ûû€ööXé­€öx”‹#x:÷wÒOsÞéíÙÂíºJä—ž.°Š·QÀ¬JVFUÍì\h>ŠÄf±…Tš)VâbÍYlùi¼Œ Œƒ$®ªlÆDŸ/ëÐKíœy´:+§¦Æù9ãcû·Ô©.ÇÁP³aÿ%u®,ØÇâ°Dki,VůûÐ`8A‰®UÚØ 8¹âšæNæw¹Ì«k¥oB7.'šr¦ˆÈ앟eÃp—hØÂòë©ØäBÝ^†µR_ÛDV¿îBÌýB•Züãá#%ZlŠ•J£²»Ç¡3úCĈDº˜»—|~˜›-‘É3`¿fcmŸÓN3 sÒ%ìmx†Q¹.‚ˆdÍ¢z87­ÁYG àé•b­±»É,æ°»St´tߢë<à4=nîÃÏ|ïÀ-{]XZ$s9¨K©.Q¤ „PzÅ|lÞLµ-\1Fn |ÒÔ¾|(, ˜±S®q”z̤íA£ÐÝG¥fDZ}©ŸœÔO4/'Çì‡bÐnö½‘Et¨è“iNqm’ðÁð†•OáAÄaž;<µEe?Å—ÊÌþr¹fsMÒ„«…8ë=ÌKŽ„¿Y·)÷5è8¿Öê®àW@Æ“:%ɵ.ã1±hc¢‡oœ©›·J^®.J¥hõ(õ”z|Ò!3È6fò½ˆñ˜0Cxµ®ÓûèÛ 7±ÃÀ¸lªËx½·EÆŽgʲ—€'œé};ô3»f%~^`$Žô)Ú‘Ñ.³™ú­ªø’Òc {tÙˆéÃ-MÌ…<vB¹Loí|ã˜5”û¢¢|$…έeþúýO|°A›Öňÿø±ÂíôNdíKhl`²sûpEncHiœÚM Š+Ö“¦¥üç•ýp@†þÓŠòÖ€šv¿ˆ‰“û|„„íl(ƒ³8¢×¹Ò\Ȱ•|‡Êt_]ª_ŒÛæÇÁ›4hsšK-ŽÙ/ÊÉ'¸Ë/ã(òÐTåE“rw¸b®ØF'ᬗŒË¹°Ì€ ´žâ&ìKa˜e'{äÐã'á×ö'ôypXºÔ×àã#e$TOxrÌúçº7K–R ¤sw¿Ÿ6ƵNLæó{‡_†'¯ք÷+uø§ÇOz5„jâx¡N„Z|T˜ãÈKkB’†tºN/¢ DsºCÝ?«¨Þ¤îwâ(QŶúf™¸’EÐIk¥²êèÐÙ»*]¹'2-«Ù™Ï<07,6à}i·0¾oÆ^¸òÅ¿eÆ»mÅÒÌSqÈÒ¶x¼´) UI½£TEfòwd¨HÅ-íL³mÆÃu6Ö[ëòiÎ)kœýŒWÇ~døºVÐÍzv®ækµýÈÅ£>{Æ!×$È}þ5ïåý'&‰-H“ÂwmO…™IÉÔ«iïÝD0í< óS* Šh,61.ŠÑP˜w<‰@ç°–j+Ü›bÕÂf»_„“ ªñcÖŸP¨¬!}evôª©Òç¼ð%«“f£‚gMx˜î»—ßÎèÏÂ'&¯HŠè¿YGÄâë1 ô‚«Î,»Dâ[Õsôá-–!½šRÚS ®:* dqe½/ÄÔ•L*‚²Å2 dUoU4k¨xŠ™Í§¾’Ü€1í…âž_i ?¨¥*i‡ :´Ò+L¸¢óUÝÙž—x‘;~*ÞÁÛàMd:ïhmää-ÁCmðx¬Û6&¨Q’Í+®­¿ÝÛK&;Á¶-G× pñW؉¼Z yëæÊGl(Q{Zæo³¹ûð2MÔu–!´4dð}ž©Ƀ^!cK`¶Ù»q‡`Å(Œk(ae7SãýË'‹ÈU¥ú–:~ÁúÜ·¾{cŸ&K9$ÖîÄæ,*‹5^iy~ù;3žðy?©Ñ;Úc÷å]:Üȇ¢ž*¿‹ŸõÈè^pdoÁÉ;ï%@éUÍšoS ðΨ)à÷?E›Ú 2¦Ü“PòçUGøs7¯ôlùœ¦Vš}\!1šxAšm@-;¸|ßÇ€K{2µ§;Ç NÕ žÆt'd €LÖVRkqŠOS ”áœùÝ_™RÜ×ûà—ÀWoðo9FOX,šÐ=æ§(+®úé¬ÓñžEe[”OªES§ÈµÑÃ!mkÝ™ g+‚+w5h‹èº³T î§ù¡,Îm’YlÖþûl…v`#r_×Þ×3÷–p3ÔŸw,u.2P˜ãúüVÓB2O­ÕÉ>\˜û D<’šº©i–Íkiî^aëèeéG4Z ÍŸßUŒ$^Ò¡$P³2*£©Ëœ&~;8º£“X8L½´»äÇ%ÿD{ÔÖ@ ý@æüCz±LʱÁØá‹7«ãÝq…ƒêJwqØ,¡+ÒŠÕ(à¤GBÍDâ[Näl>?¹²„ú :ݿԾ:µý!C«+Nªþ½ uò'Ïð-%ã‡îî¨XšÊÔ¡2•´Î€ÛJwðiúËv¯cI¶í]-ôDSµ É´ßZW7`+íU)0™¬Zå~0ñ^êc3×¾ßoÙÖø'„»dZL¿–SHÌnu¹kþãÙ¦e*Â[åô1äå—ß·CG‚6?MoN¦œ©àÆ†Ž…€˜7bÄïè6µ¯ÿPËî endstream endobj 79 0 obj << /Length1 1525 /Length2 7831 /Length3 0 /Length 8836 /Filter /FlateDecode >> stream xÚWeT”m·¦K.înîî–f`†îFiIéN‘nV I¥;¥$ú¾ßß9?Κµfžkïk×}_ûYké´õ8elaÖ EÔ“—‹G §!k¬¯ÂËàááçâááÃadÔ»A@{p ApûGºÝÛän÷T  êðòx…Äx…Åxx|<<¢ÿ!Âàby Ø ÁP…AAF9˜‹7lïàv_é?V¯¨¨0Çïp€Œ3¶B@7ó}E  ³ƒÜ¼ÿ•‚EÂÁÍÍEŒ›ÛÓÓ“ èŒà‚Áí¥X9ž`7€.‚{€l¿ÆhA Ç…ÃÐw#þpéÁìÜA/Ÿ°@XPàÿïLÚ@ðŸü#VjˆþÑðýIý§i?•Àò碰þKv¯`€åoÁ›óòØÜñþ¿eÿ;äÿRû¯,ÿÁÿwOŠîÈoË(ÿ‹tC¼ÿäÜkØÝí~4`÷[ýoªè5–…AlÿÛ§â¼ß ¨ý½²9y¸xþ°ƒŠ`/­6ØÍÆáåüa7øµw0¤ C€½kî£xxþËw¿l6N÷ïĽ<»@÷»ôïº P˜í¯¥ãáp 7Îýmß#A€/ïývÚ‚¼~ ÀÍ…¹Ý‡î'ôØÁà8¿®VTÀ üeúxïåÆ úäpÛÿ ¸Áÿ€"nÈßð^}ÜÐ@>·Ë? €þ(àvûòÝ×õþ ÿ5;~¿ò¿…x?úðï÷ ä²Á™›†Ùˆ‡9Ö…µ]ÔÈPyrn|äÀë?yq†e´®@é±¥"'ñó”??zV¦ëófôÏe¢=¾’»F'c2'Ë%¿×ÑbdsõmèvÖk~cD’—{uw¾MµÎNS+~¨­=Ù·&ÝAÏ3éIVr×ã©Ì% ¦¦ªóJ‡o˜Ì û\¸(c£1)DDøqQÂÚe2Û«dke&?w¨0 N¤?$R+îü|ý~„Opµ¾Œ¼òšjwÏEí,sW*m»G葚Õ`’q½Gâ*ž%ä¬-,˜Å1ª\©¶>{5àMv2ûZuTé]žÿ³7Q-kb^Í-q¸JŒHbu^—,·ÕÕ"ïºö1â]UýØÎebãõXX Ö}üº2UŠ¡ðm°uï­A.+IšPš¤ëî2gÌì¹ÞÐÍpíšB|Ïöù‡²Õ9§Â÷~Ee§ì¥ ¡ÕíÆ>!Q«{#) ßùß^û¾i÷%¶¡b膄¡¥TŽå¸hs­36<¶Øl!ŒÿÂ^ÏŽ&M–l9ÊÞ°-.o¯6CK扉º2¼¼¬mé§ÜžbçƒL£Ê…ìÙ^´sÕe|ŽA¢Ùñ о‡ÉµýÓ:ŸX[¢0",ÁÞt÷¬”ï¾IÏ`g¾=ÝCI !4åö¯€qfrÞ "‘St:¯fÊ™Ôë–÷ Cíb|’Ñë#;î-ü°ší€g«ÛDõ´×ÄV\íuÒéBzH¼o¬ÊHQp@fXR{¶²ÿÀS†;>?™Lµ'kwPj›jÈÓž‹½Yߢ$%¶k¦Åž’© S(žz•õ dÑÙ‘ì«Zò>rÌ 2¾XÏ a={l-R×ä½”1W2C¢ZÌu ÊY0}øFÏ9| Ÿê@„T[ÍŽvÔ’ö!ûf–æ$ákÑDËJÝú;Å+Ñ/ø•„½½ sšè%Ç#‡0o×uâoczžîµî¤SîÖš¹Råu.õ‹—Ä7u¦¼Õo,v÷œš™¾3Æé´bP$ö^ŸLòææÆ}T˜uYi:‡ÚÚ)=¹¡sHë—œeÓòŽ“¿…GP IÕc“sÎåÖÅ–Ÿ¿>ÃL^GÌ"V_Hœ.š‰[E¨ˆ´kzVÝ-Üð «Ó&b Ã*©~l”:Ô°à^ù=•¶¬õàÅ÷uÔ’…T­¯<…Ì…(#Š`F‹ð@RgºZØN£í™)øì¹áPš©•\Œ¹ƒál›bj‡BcÜÄ8ã Ì*ÂîÒ¥Ÿyº"#í2<Â÷jiµ4Ü£õðƒtÍÍ!¦Œ´èószYý—ë:lZ:¬|è˜Ä­bðý.éŒ%ažµlæÒQKP‰‰CõXŒ¤{[õy{sÕ+4VòÍ;3ÂÇ¥”Á«0lÄrÈ€íÁÛ7vHãpØÒrÅ„J™õÓÑÏF:­Êd ²,ôZhŒâ/ •ªVÃîÌ÷¹Ëò&Yàî}«ÉN0Âæß›|Èv#¦dÖ¥’r{AŠÄ¦yiºÌýZQ"~Ý™D¥O©-†?sË+‚—['²ÞÌîsË‹»€ÇÌ5ì%Ʋh½Cr‚OÔ!´ô©Ëª°Vt‡7+þ^«?ðÕÔvI¼ˆCÈøÖåz§Iú:q8°’¸/›LB/I Ѳ’d~`Üv':t«±Œ.¤|:õE dj¼±¡"2¶ÝÔZÿÜoFèm,]%ݦC<Ï9J|å’`»¸_ÉlÖl(õ¦¢r„<{„Ôy1qŽ‹` U:V|°Çd'/.ù)_†ñÓ#ãýO}a@Pã<ñO"³Ù#~{6 Ô wµ,‹þž Oî;š9Àg¯û_¼x©%K†£íªg¨q¾'Ø$阂ð<4µ7œCfU* cb9!oßqRA—ø-ŽU8ýKñüö›û˜VJXÙâ\»z#`÷jí‘€?n%I§Ç¥v!&ä )Q¿ L(׿;ÊP5®œ¾(fGûÔ+ãã2ßä¾›_¢çí3Eö¡6Š9?¦‘…G$j‡Sx" ‡äàMµtõ×¹gynOßËuÖ¦•ˆ \àqà|ÅH¿L‚ÂÚˆn;íÐ+tqx9½O×6 1KWšÏ|ñ°»™Ý’nÔšxÈùH+:¥ß¯®­Å Ÿ¨ “ÕÀ?;R§SAý×äÑ!Ìkªè0á©¥¯|PEÍãôù”Ö¯—øeŸÕX5h?Ûð'YæåðO¸’ιëu†©›+ÐaèŸÒ¯¥¦®MÛyWì¿þîYvXÐ{Í|õDÊÿH²ÝNYoǾ«žçƒ¢És§u«Mq§]ÚG3¸ Ò1ie¹„­NÙ1a6U¶""¸¯¥s”P@ÚÍ.^ªì¶l É ì <6V¤¨î¢_‹¯¨Å¨v#Ä_>#y%è6았4_ªçVó¢d."‘ÈHÊ.šDs‡±}2WkÅÌs~‘ðœ›é%£ÅFì½”2iF¹é÷¬}Œ6„ßg4ö py쪿jŽBS§á»‰Ûžê›M@¢cè^þâ6›Äß¼•§ŒÂÌ©‘^8q°6Ñ*Tó© 9W”öëGOŽrop3óƒÈê´q™¬C#¾Û:r¨….à fú ï ‚S|˜NYë~éd™O@2Üð(1ç³£ÚŸ²à²—àJZIiÉcEÓ”-×5 ¿µÞü„ÕÌ‘TÓN°ŸhàÙ¶qÓÛIg=p`ûÞ`²³Jî¨íÜÔ©ð0Cèñ«b,ã¤WÚt’VÄLóÒ|•mÕ3™Ÿç¥”S9ý²’ØÎj¿¢H9@¨t\}¼€K1戨ö׬»OËš ûd¡‹OtÍÈ6]­¡>«÷y>¼X¤àóþ….dC©½v¿ù™Æˆå+Ž“‚²0Ý«ÏIv’œ”bûc$g„Ëð•ÖúòI¯g§07Nµúñ5Ž–Tq€Wz¥¬ÃW†–ü¸Qgº‡ á*¬jµ€…Íwôßz3í´^¸†?$eï.HÈ&éìí7éÈŒȦîÉžñ›5ÁŠi_¼ß´Í§×XÚ„wa)‘'ÆÅ‚ÖRtǨK\ ãúÉ/ºC}LÉ-ö˜„Ç=sPimev·ÇêÏ„’%0m³È=9ßÍÎmƒÇ—_ÖK@J¹ªª%ÈìBˆ;ÔY¹˜«ÜôÙ<—¸ –{ &Zs>pžÅiq˜•EŒÚrÙùº]²®ŽR™ìJƒp<ßËó—H¶uÁˆs¥×÷ÿcÀtè¯7ј’´,m$N¨.û¡°û¯ÿ0#5Lz¾¾³üÁDK¼1éÍS¾&T;ÿ“= Mj±ÛÓX8QQ[ši.ÖP¤¬ŸÚ DÀK ÐØa GÍŠtpË͈[ýž(r¤ѾzlÈì¢ç(ëãd'D^vóðʶR*‡¸ õNÛ¯iocŽW&HflâI_ÁK9_.êÉr–&RíZei&‡¾Cen nþ˜Š ëÉ¡¸æu¢è£3õ»¯ëóü„œ³§Él^øù/©»¾ËH œl¨&RMªÉl¤~j#þ¸çæ²/&Eü|¯™ ÎÓþ<–Nwf(ÀÖ‡9º¤^4L%õü¬<ËUüštXßýQç`¾ÙÖÁ÷Õf×Y’j§flÚþ¼ VÈ»Kqv<†Íª†Ò¬H|¯m¼ñÂg·Sü=± 2n{B WB¯•ò¨O—æ’X 8yçƒ1Ÿ2Ë-¦^gÀtBÕXB¶úÚx·„FF²dJÍ=NäH‹¡ nYâ³Í§ª'èÔi°ˆ)ŽØ”ÏbOÅ Ór–A²­GU×Z±eyÉ‘k™Ãð…·×JéÊÄQÖDÒ9š\ŽúÈ +¯ä«ërÒÈ·_%NI4«>”Ü.2a@ªdÕ%ñ#Gr =gbÿØÜ_¶§pâ‘ÒGÈ·'LÙÿ¤Bw~Žo”Uù“íOÅT®ä6J$ AÌQ¼ðïñ:uÔù²8“̇írnǸž›Êø1·ø5·ÐûFme†Î¿÷Ú&ìeq³’xG­ šãéItj5©½Ó Œµüþ™¯Ðng9 ¡.×lÐU9|~˶êðäûf¥þâgû|‚>7‹ˆ=W»AݱK3zKu£ÅónýëË®‰Ÿõ=†ªî2×ß$]”vĨœ;Ó´~êD_»Cì–ƒ|f²À§NUsLYßê89ÂE=Äl§^å6à¼Äí®t¸*[åß6<£Élʬî©Mê-ƒ‡r~ÚNnÙx¸š’ÝÛPÔ˜Ž¢•rLp,—ÑšÄÛÌbÅ‘îÍfâ«jG9Awo ‰®¯¥ ÙÙÈÞSõ}¯,Ó!J”º:ð¼s§úk0O-]rZøÎ[úˆ:4Yã^ AzÎ…nõšvsMs­¹BŸWäÛ$…‹¡ÆŽ*Iõƒá€\Ÿ'Ũ‡P-W–šê\ð–%ïPãZ®.¦\ïÔÌúWª¤ô¡S•Ø»\¨„MI-ï>“ Á×KYœq¹ö~ý$ ‚¹Hlr¹ÑôÖ+oªõ»s¨·N¼1ÕÞr•á+YHnJs3"KL´¤Î ðÍð¯jÙæ”o¢ †Rˆó]Å©Þøð7F-ä±vœÀÜ«*bB¥·»JËvîŽê¦¯™A;juµž8ä• X­.#Ò7‰ëÔÒWË^8;[ÝDBð]m–$ ½Âv'E<ùœDl.%ßQùËíóË`ŠÍL¶<>˜C'”«jÊɶ(.á'Ý-«x¼òÜÅõ•>ã»:«ö¶Íá'mùøØ‡Ðà]VMI£ïº¬Š„^Æ%w4V,—±Šìfš=õ'Çšß/šQ“vÈÄ^x“êÊ=›‹À«‘^QZzíàŽ7”Œ é˜eÔÅÛsšw É,Á§i®’/ ã(hä×"  \d ½)ްس“¢©Î¶D¿6)r½HÜSì*ß([ÙƒÌϸ¼y„Á¬9/¶Ð÷1Á­\fùKoŽ ¢_¨ÍXn騠é;nl y;FGa¥anÛÌ1]*ñ…}¯Sf*9¥¥·¿6/ôcm㪬‚«œøW§¿¦ZÀ÷6–O¹mðÝÀaqêÏáï¹å_Í; ÑnÓ~¶Ó••>Žaü‰Ç’±hù¹óÒÏPe®< Ów×^·¶¢¡Ô£›h@7=_/9®èÝÌ–„+•É«µCz§OA¥·îU†”¯³)Isï’dˆ‡Z]ׯÍÈ*´<îL/ƒhèÁªnßïNiÌ>Þ¦szrdüvt4Ä›îœøó29EÌ!JDÉÓ;r¹þ„ÄMÎ=¬QíïÜ&;¶´Ï¬ÐX$9ºžobOȆ¢] Î w”„µ *r¾Á~Ê[Ñý8bPöò¼çÌ"—é;m_ënfzU:ùI0_þájë[6ÜvGd··Ož±/@óg_ŸL3†!³)v«åЖ<:Mš\ÍÚ交W r¬ÌH)p^Ǩ¬>I7ù0ÏK`l ¾_–½ÐÐó6ÌÕvŒm’,FæzÇîG+È,ç3¢¼[†fŠÚþ–Òm&m±+&wê€bÕ³™] ùW›Ó;ä{?É…×S Ž :12Òä|/j±"0ü›f²ëãíŸP¥²“H–Æ™{›á}ˆÍ_À¾mÄj]“f#²M[B.©ßzf9­!²žø!=—ÊÂ훣¡zy:ÍëÑrlýQÙ44Ÿµ6?ÝÙÔÆ‡%·ô‰½|™Ó+dóåíàG¤U"Çbò˜›oÁÙ¾ÍÏ›<¨ˆ‹…ß<`0%uÝixZw ÛC<òÄ—ÂÇWÿŒJ_Né]Û1OóÕ–¸{ÒQ!ì­åÎäÑa` š½ôõ§"952Ñb›úÅÀ+â–!®©’Z kˆJ³l¯×ƒ©ôŸÓdÛ~6Á®ÐÒ›á¬êB‹Ç,Bã­öžÄΗšÚ±—;ÄÜ´74ãÒüÁ·Ëâ¥Çm,SÌïðù^Šð±ÉÜ܌ד«)L˜z»Ï†} üHêªyq,ϳûÉõ‰åч:">×8P:Šçºf›š©>âi®ëj<ÖÒ™Wß0«ÁãfVúèÎÌK9«cÍeÏ "ñÂò͉æcÖí‡(ê˜qº2”ò©  µX —›æè†ÊªŒÔÏÚÃ7²?ž ˜øÞáÍÐ]gŽP19ôS{»0 6³[Þ™‰^Q”šÑ]. ¤ ‡To̓6€åtdOº3æÚ1[;NPÚvM(3òb"=ábƒðÕxm_ýä &ûØa) ŽšÎ¤\s,‚Ûã²üNn> ª°ð yLÖãM—Y©BYÏú=…¥¶aZ]ã̉²ñ#"±ÇH{}`ʯ⹤C€5û@k‡™Ùý͘-`îb. íL¤ Á½XÏư ÚpLRJz¯y£s5ÂÎ{$qÇ Äø9*¤FÂ¥?u€ |VõĤI¬Ô0hKÌÇV )e¿N±E>44ÍS106ëaî81ÇäùXáÀYs÷ˆÈ¦Ì‹¯mH‘ú¼G„xwÓ&W×µ®ù¼•s1±Ã *òu…v”uO¸½XÓv:îƒ×Ï8ì€ÞŸØüéìÖ†Si>pK hEÓ—ô\rKvíQƒ¦e*žÇÜRišm”þžôÑnÕ@Ð øuænç$…kA:̧IÓWØ™lûÈþÓk˜Í—tÀŠí¼½U)åfSŠ;fx77Šw ±í¥. VÑ#’2ù1¿vQoObÃiÆ-á—øF˜Û’]¦^1~ 0rmW*bzDy>6‹†¯awF¨$öèO’ü(ÿ-û×*2;…3æ? ÄúÜ*Ê•$· #vTå$™Æq:“RÓ”ÍX ˜¦`ècý!´×Ãý:ÑóyüÔ˜Ê!ÞJ£±šã¸~jÊ/7Vö”þŒU¶ÀŸ—䤲‹|êbHÙÄú´i`Ûñ£„¼J€|}¡¸¥^†i(>z<2“ïG•8 ”tÒß t~oޝ„¾ÇKÇOpäî¤ÓÌv7QV,ºCØÐ÷ßàŒÙ~·¶š»$.²ê|7uyEl7z7š¬üfROéµÃRÇ]Ìrûè—Ü®4óIÿ›/TŸ½M®þRÓàêð=ü,ØêÛ…NuˆÆ£³HÄè»Lˆ‚<ýÁdIèDõ<ÍÒ—1i«ïúØAL?É‚P(mGp9ŽÞ-Y—³ÜFÃ-4ØNï~ÐÝAœRÍsݧYdÃÏT~xÔËçjQœà¬©‹ÑìS²U©°²ö¦½Â0꽋ÑåùRL‹Æ³u{…KöYRe2þ€†vz!ê8ÇãhÈüÙ²ÔïJyB\”HªÕÿ%\™ù%œ‰”C†È¯‰7*?ì¨Où'YaSÌÑ Æ-&Óþh°ýTI¤¹h¯¦9\*%pÏ Èæ·Êc>KÙô¦öo}­{®Õœ:Óôˆ…=Ï‚³r'³²ÒÆ_Ô}e÷A&‹WÁ€šj!=[)2A’¬¨Kˈu¯êŠ.æ«c "V»ë ± ÔgõdO÷(4öK`Í,"[Oø„ÉÃÑåØ:_C4Ž(òS§þçç¨ckT]õ'^¸lÀy:òm ™ÿ¶(#|_™/ jq›üÒš÷=AOÐ9'ù Tm­èžC7zUœp–ÚY—éŠ$·RœÒ÷ã¹#ÓÅÇÆà\mÉÚèT2´]¡¦áwUj"Ÿ®³±VÄÄÎ+󷢃_ŸáÖ³«?õËúLw:H\Àð0ÕÛBí¾õ#hç^5ÔNQºí®£{ljùoï¼‰Ï \ÝlpÓ†=,Ž„01Ñ9 Q¿#Kºvú–Ò)@È„ % Yù}@‚Cl«²‘•Ä4RÁ…EâD"ØÃ’ø>\»ÐgÃõE=ÇüÁÙ" ÝÖÎÅTè©ïQ ô´_}¶â)–q\ÊÒE„Ÿå|­3lê Rº³öÆkÕÞ¬{Õt”uÚ”~EOסk·³®x²-*Zt‹†iʰ‘x1$$ã­ÓW—Wæ`%‡^Ç› MÄ·`£I“.¬“õóô6 N‡;^ Ø?Œ3Ø¿9Õ…¾µ?j^jë”þ6«ý°°uÎFò’•ѱ¢XÿÓ³o#| SûVÕÈ|{¡YöÕQ‡|7ä¾c-g"ëÕÐΜÃç®O§˜-#|Eœ6ŽŽ~T]—_¬\×Ú;ó )¦³)Û>ίø¦óÒìÄfñé«W™x£€¢óÜ^–èÈÏàQŽï>©¢åë-Ðy[%ÊawõÆËðWñÃð•U’¥g†ñRVÇígŠSl^]Ÿ,¢³|Êò^… Œàçv#|“^ øwôª¹$jµ‘ŠTmüìÍÍ=¤:‰ø…Ði\.Ë„çºLyµQÂz('.yº/ÿg endstream endobj 81 0 obj << /Length1 1484 /Length2 7120 /Length3 0 /Length 8123 /Filter /FlateDecode >> stream xÚ·T“Û6Œ4)¢€ˆt‡ž„.½÷"]DJBKHBï" Mé½wé½ISª4¥ R¥HQPzøb9÷Üsÿ­ï[Y+Ù3óÌ왽Ÿç]yÙYèóÉY# 0e„3†Ì(hi©AH ag7€caûIØ`(4á,þ_ ‚Áú!,P á Pwu€`q°¨8îÿ D ÄŠ7¸5@‹ Žp†¡IØHOÜÖƒÝçï%€ÓŠ ¾_”÷W:@Î †‚[AœZŒÌ »£Ä °‚Ã0žÿ*Á)i‡Á Å@www~ˆš²•æâ¸Ã1v=†rƒY~Ž Ð†8ÁþŒÆOÂ0°ƒ£ô6w À:áV0g46ÅÕÙ†`wè«it0çß`Íß^ÀŸÃ€ùÁÿ)÷'ûg!¸ó¯dˆ• qö„;ÛlàŽ0€Ž²&?Æà €8[ÿBÑl>Ä w„@±€_­CÊrºvÂ?ó¡­Pp$͆;þœø³ ö˜•œ­NN0g šägŠpÌ {îžÀ?—ëàŒpwöþÛ²;[ÛüÃÚ 4t†»¸ÂÔÿ`°.’|¶0 @$&*(& €¹`VvÀŸx"a¿‚àŸnì ¾ÞH`ƒæ ·aH¼Ñ7ƒr…ùzÿwàß  °†[aP˜-Ü™äŸêX7Ìæ·½Ü` ÂÒ ýüüge†e˜5ÂÙÑóø¯+>ÒUÕSÓâù3ò‚òò€7Ÿ €O@ƒ„Ģ؅ï¿ë<€Àÿôñ_¹jÎ6ÀÏb?ûÅÔß=»ý!ç…pþ]L¥. ÀùÓƒ„AVØ/ðÿ3ߥüÿÑüg•ÿ+Óÿ·#eWGÇ_qÎ߀ÿOâwôüƒÀR׃•+çÿ…Ã~kW f wuúߨ‚•ƒœ³-–Ò|`!~Ðo?­ ÷€Y?€c¬ì~Óæ·ßð§àáΰ4üç#›ýO «2+ìcåæï•æ×Eþ´aXQý»%g+„õOõ ‹ (Ä“{ùXKà ÆÊÔæñ‹Ý ¿3ƒM`göØ P$?/ZD”ûéúm‰€òÿX¢ Â,áû VìNÿxÀ ÐæK  ó™Øb˜_æ¿:¶rE¡°#ý¢vœ¿í_ÌfE23…°’xj_ó´õ¤JŽÞomD’`7ùä¡ßH¾9¦GiÌb9V?#}V£Dy¦¬lnß¡-ïr’¹0½ï½ZË\ç)tÄǬ¼aË žº:º6ç}ÌÀ:u« 'Ç8QžI¼Õƒó€1‚¼“XÆÚ¶GŸý–Ï_5]âÜ9¨Š•EÕƒ[µÛ;«ŠÓ5©î}ù¤‡i†ö¬ Ðü•õÉéEÐJäã°$íTV ÉöS’X÷Jò¥¾þ9ŠnÆ×ênOÖ¾±…`(”$ú…®WÍåÞü‘Uä¶Jé U¹-»mÝSºÈ•xR£½g·º·mÆÂß)jgo þâuÊHœ£’OFeç­‡[Ì eÆk쓎;Fu¥ÀUß,”btP Öðœè]ú᪑¤fú®÷)'¯V¬ÔeÙêßzö¶(7›Ü–¿ª)V•x¨Ó¹¶|m‚r{Ù3æŽ8ƒ'ŒLÅ’íZ ¤ çî?m xH!(HæO®0¼ ¬ÿÜw½ÀäÈÛKè2w¿½]žcÖ¥2Â9Š2Òk©vÎ'5?çl |[g•R©àåî´|äSé±l¦Ùç„(ð-÷juþº4Mñ<!`Î|¹Õþ4І¿%ŒµüãJ÷³C¦2ÜhkœbíìÒ³ƒ@êá^D+Ž ‰[q`äÙ¶×Å6n*@›YçEPòàŽ„ÑX‡­H_n)®ô ïÕwé–$u!'9ÐÐ…ž`ÃT37U¿w;O.uË*å}Šå`¸ëÚ;­øUÙ[v¾|·?r>'{B¥Û´û"²Uné 9+‚k¼š~âëÖb©@"þû/?§oÚÒÓí§KÝd6m·`¾‚^!,î|“g0Ê_<ë}2x½aϘ•ù+-îjCFÚ›%ÈÞ&â‘2Z'†ëi|>û®µÀ^³{¤ö«òqUéCEßÃoD3bzLn¶~­«Û?ª²-¾I؆¶7§«—@|,Ûí¢Š þ\¯ÝM‚v­L9@öñßjâˆzžØ’ÜN¶£Õo Îå ð÷¥D^òmÙL™ çS$=ôŽB^F›ûÎzûKŒQ0ÙÊZn\/ŸÄ˜c8ãý!®ç})iò!úÏÑ‚ï^¼pÈæ5„Ʀ~ól&‚ YÈ®lÝ& œ;ï9ïòŒÎRŒ_»õŸ¾F`‰HWð6•svØóÉLåYo¨AÛP« aȧ¯ÙåÞašcÛÏ:;IfÜ_(\:;Þ©_”– ¼=»Zgý¡±£çž:¾,NÊ”kÞ%l02¼¦¡ö<ÿÚtÓ÷iv(f}öanP «hÀž æé’Í™o'åúhø`æ~»žNk;O—»¾;ÜMØ—¿¤à~áݪ,VHkÅM˜Éfªo4žÈK_ ÐŽ…QõÈ«È뇀E"~ƒa =ùØg½—Ž;Òî± ·$?©šDUõâ{¸Q¶Ýö XUæcKcMƒR±pÖ{9(êêA1µ}77íó›º3HWµi„ÊÇ …NSkç®ìå¸Ó,mÇBuKªkˆ9 ?K Vé’2?U@B7†e%NºpîÃ69”M9#HrŸFŸÊŒÐD¡p¿&·¶XT_§³Ñ!2^x»RœUìz š?މrÆVpT Þx;V|Z?ù8°šoQÓÄèQ ô‹ÐÃLÓ!ë=µ´Ò„CM@ ËÞNÍèö†“œ¾䪣´€V¨ã™*C¿óØ¥gZ7̰·÷ê:X.=,È<âcÆ ¨4KY]§÷jœ×®àH ‹W™4ËÖ‡ðïãJôª]Ûz§ìÏVØ`ø¨‹ç8m#âá²”ÍHìIRãî[ýDUXËÍ~öšàWùäÚáñ¾Á¾b'É#¯F¿-ï±g=—ó]™–L£'ê ´L§„<ÌýôàlSj¯¹!›äêʤi5îySZ)\-JjÁq.öÖï/+Èã\J*t8 :ó=b‰¤eÊÜVï"Qåb@éE×3ê åùÐ@5}Ò#”_hŽ¥tÝsu.E©…<»G/ž0Í›khA­ù@&¦¾oà®¶Bź¾ÖÑ$|w’lV:á&Eï»ãgk7Ö¾ rOÛß3îÊPÜÛˆ`Û÷ÙËdiT_ oº¤ÛœÕŒ“°ð'±ÖMTWckhIì2éçü@Cí¤ç²qû8OÝ”&ÖÏfŠï>ob©Hí§»à³¼q?wé«í— ú¼2à2AD¤ûSr=‹žŽœOV4¯5¿Ã¼ÊfÆÛ5Œ¦Üù²AÜI[ê$;ÆM}m@u?ú£R3n±Ž-ßlâÔëÈ[Uª›Èuš›UB&V¢Ç^ùoÈcãLO•ì¼3Àaûà¡ ƒê#Í‹1aOc ¯€±ý•¤o>³ ˜ëùöòÖ›ÁFR^3‚³Sê~­ë¦5íõ—“‚–nÙ—HgTá -#ã’´#þÏ·Mø0)É›Uå5^“ßcžà„’Hê‹`ÀõŽÝó–¯ ©ëá8Y-8jÛÔ£Œ\Rö',`äJ7õ1d†VÂ_†–e#ž z„Éû<4‡;ä’Ãü/z´ ßë4#¾¦Ûôz¬ (r&>rή™JÿŸ‹*y7ú2MÖ5Óô錵@T…Ç´¯dú’¯ì¢ñËáÍ â@¯¶Äµ¨ ‚[[Kclò%¤š¸ÀðèÏâMòÔ‡€©…iŽú̱°«È mH{à“ÚÇYM-”µXĹùM¾æ‚¡õUsfo¢CÁòÁù+ ¦ §ˆyÙ‹|¹¿Ö§;µŒwRñ²éÁˆ&MñÊ£:£~ƒß*¾…‘>œ‹“»s’óš9üœŽoÝ®-ÁºšâGC8[ÜŽ\l=JºÓD« Rx3 Nû}VÕóîE €ÆõòN¹Åã‰>KËÕv{q )î]œGµ/®. Ù¹ÏDèØo__Ž›‘ØZ{Ɇij/èìÝtïÂóÀ‹àùê%™?&m†=ƒßÐ&-öÁ¾¹$ß`T¶®ïœ2¥I—ׯˆ½á°î•)xe’9•ôí[ï.|Þð{'YU…:ž€žç=ã,¢žõW JæÙfhb˜yÔt‰dp|'‡ݪcS*‰UVrÂáZ¼»/HP†YÔ[ƒ§9²Ø=X.RÄîo~¶á{åëà§9*ûùkÙ²A©nóR»[\•iÍpb1èx̉,ÚüÊLÑ­mãÔG;ö•+ÊTs­ïÉxÙ »Atz«ÎÐ6ñuyù;X9€Õ<ëþD¡Cë‹ø¯•¶B¡»¼ .û]!oo«å¥õN$ã£ÚlxóäíÕ§s=ÂÒ-v¹e})óåÝDEeºÍ¤ÂÈÂê—SÍÆGȉ}ÂÜ ‘~¹lfrÎ3­UÚiŠ[ÄäTGsÑæå£“: ÕŽóïÞ{J1›{ +EÒz±]>´úºtÐG¾h“û†kW„B“·=³$PŽ»tˆhmRQ²›àع È»½TAo™±"{?‚%ñXV3bd¦‡!ýrË«£ò/:î×dž!|J£tkÁqˆWÐOó«•?ÚâÛ¥K¿hx¸v,½µÀ1–§mF¿÷5žfÊ’ZWŠ‘­l‰çß0_BÕˆgq2ªJ—Á6f Í×NHTè›Îyêëdœ¾É÷½^kYnÄ m‰†úFgFÎ\t¡›d©,âЭ@ܤÌågOoéÄ*½)Mr܉X°{¬b ½vaËOmdã\Øë77¼]é’Z7q¸»²¯@ÀZzåÖÑthI%“œu67(Ç8Þ¸.Ì_Œo7룗P¨n«‘q쨫±¢¢\½ÄyPp|À#Êû¸Å‡?ÿ¤öÅ@%Câæ.ÎkÞ‹„›£ñˆ´‘ìÛO_ ÷â­|)Sa§CŽ´¾ÝîmÔú.>žpæ|ñ†ÍJ?`›^˜¥$6³”þiV6˜%±ÁoU‘xüž˜Ä ÿœ½º«}4>c–ùV•”­Â·Ü˜ºÀy™Óíi¯ëQfq­(?ì[¤j\eóƒ´kCDᥨŠíóæäÓ·ôâ·Nå¥î³^ÿÞ·MÖÆÝ(sxÖo‡ºuÈDÌ +“ؼ0fÜÃ_líw¬r RJ^!ÆÉ_¯6DyÀ«ÂJ\nÄ 5U–Æ—“O!?Ûæk_s÷4[œzœ>‡pqÚ¹”ÉäÿP Ñpv$á}xhÐ,ô„<¤3ëÍ‹"íÜÝ ò%Âv‡í¥në%×jvJR}AEÏ ÌbÍPƒØN_²–µ'ç_Óæi+î‘„â§\nõ˜W%‘LÆZ¹^x6ê:,áEcÿ‘Ô„Ñ—v„<õi}ø`"Û¨­‡sÓkatËÉÛ­íy—6†;kè{ª9ŽbJõ],©…Æab/-cKˆ‘½¨¨@¹øt7…öÆÉü׺kxr:Yœ!è·6ÕìœsçÈŪ¬É|ÈpR]¿ª0èÊ ‹”«Ò¾îf|ç¶¢¤D­}U÷@ãÙâŒÚÚ©šŠ1·añ\®Î6D%nX[¿/ܪW`âGË4Š’?d~EtRá¹¹‚|örÄF•Ô<*zÔ2q*ÝÑ¥œSÀl¾#EFŸ¡±ªeü"S4†''5JÞ»Iu‡ÂòŸþ³”Æü•ŒÒéº}ZG-Ï~Xê1›1›ét$Ðc )ØŽ³ýÉÄ0§Ì%ˆ ž×2xy,GZg(ÖÛ׃ˆæF¢o0œ’)9:Aeuyö‡$ôb"3cÃ<ß…TR?iðezµ¡±ùAÃÈ è^©ÝrdfRI¼Ý} #s”ZÉŠ’4.««¬KJíp3¬H½ÏòÛÛø‡\z» ±›ÑxÝÄ£ü³vÅ÷ˆZUi·²f@ý¸Võ~¯›©Õ n¬„4툻àS÷öÛyjÌ×]*KHš\e½þá×å³WÚ¸Hë VV?ûÌG”ëê@õ1>=!•/oü˜›¡Œ¢$WÀ`â®Y~ÚEþN«o±eŸ6UÞ÷Q¼Ž#ÀiL5`ÛPÓ:ZöŒÀI£j1úT5vÜË’²¡ë%À%ˆÁÝs`‚çnJBOÒ³š¯‘¬dÑ<ãa’"KÃWùèïï%F.ªBr„Ô°…9®Ë®Õ&G@´ž½I¼Kuo æsž|­üÄ”Bz£*6Z Jxæón|«]‡‰kÑåý¹r†8Q' 7OÊ£¦ ¥‡ b–ìC¡ÅzÔUùORå˜Îýµ9ß!šœÇ¤Ëžæ·x¥<,"_—¼zѹ˜#¢Cj/?»"&,óôóš"Á«(œÓ瞊ñ3׌ -îÅB# W‰>î\j–K·Ê»àˆ¤ÝÆÇ¯ža€dì—“åX÷”mûJýiü 0·3½lNéî‘3â±â/ýÂÏìZ7v[|Ôø…]_[ê>È;žzÂeùýe’®n_Ã&çëÇBqÂ4 µæEA OŸPi-V"ž1 «p[Ê ë)k“-u\NÙ®<ßBvÚÌ.â:ã]â´ ÷‚oY—å7Ç|ÕèÞ¦4Õ$ñlr!®“ïl`ë’ý‹öÙ€È&‹ñöÉHô™Ò†^µæ]‘Þs5ƒ×l¡Q—#ži3¡;q×T‘ðæõ+#+»L3GŽ‹9Ê]óâÍoÈuò7Ùîõ‡±(ŠãDPà³sá^§‚Ь¤iyÄ]ô÷±Zh&É0¼±¦ä>í ˜‰zp~iB’V<kåfàÇwfÌDB%Ÿ×šiꆀv¹O4¾&Ló4ÊJÃøùf%ã/6.h+hoá'æô8ïöŽ>ö£Õã¹ÃæÖ…HT,H™µ Y$ºô <ÝÊÞ€0?»ñYQÛµÁ½;tTá•]aw4sbÈQØÃÚyµ>ñÃ…¿"bà„±cþ}AèÝî‘‚í>Çx#ÁCƒŒ’GìšP/:B¨¾×x$BÓÈ•L¾dž¬fJ~„,Ãûp³ËSM-s„“Á iƒ«®'ïº×ÀÉû¶éOe82ûjG7]—Æ9ã¢|íÛ^Ťáe S˜ú‡O‰t}'pôúÒíPe›'ÃÄ8Xn&7Ñž î>xóÏSøh*¦Ì]Ö¢d#˨òFÀÔ£ôwRhÍé[÷ ¨-ZÅY7ê­øÄúå&Æs7îÂÙTåU½F¼pÎ(õH/l̂ʄªƒ¿ê¼{f.³Ç…/>@“]–%~½e®ÇRB«ðX‡yr¦6*qƪ`Ï­Å[²± VH{IîíØ¯eà÷ˆ#”½ u67úd"O¨vø“–ÿQYU“VW÷‹ºÏăuTÞæ9ŒJ-wSàÁ·l?¾\”x,ß—µÔ3x—*®dª½'DŠ_’×ûjò1š£`ç?u­!úTìú<ë̬”øëA1k¸þ@®Ù÷†$BàJlwøá¢€Lî™Ç‹I®»^a¡çd¡Q*ÝÄ*ê1¡èÃOnzý­†TZiÌN§tütr#Ês>s® *îãŠÝåçW•™I•_wwŒKHJv·â¬Ù‹ïNže ¾¬+¾§ê·bD„˜frõ‰e¿Sg»±H“ðw©[CºÌ§oÞ#y·8ï-·ïðr5m)_jXÚÂ~bXYxòõ;óLœý.¢`÷Óg»‹³ÊJEn©ßôÃvj£d'UsšN' ZµH8[4,ê)l ƒ’ìèüõ×ᬃâmo¿ÐÀ½LNËê/ªöΑ8Ÿxð2nøa²¾¤¿ð¦Æ9íÖõ[‹ËÁß_zû¹¸ÅªÆJä÷¤[ȕ̿‰MH¶ëexiGhˆÕwJDz­güÃUÃÝÝ™×dâ Ás3üÄ$Ã,RDÒFsÇT„.B£ùËšPq=õOj—#±e°âÞÛj%]} ñ}Ëïõ Å_V»’´ÒJDÜ-³û.Þ=T.yWDfÿ­/b¶ (M¼àLkÌ¥=¿’íf¿É{B”pÀt@ü©4•ÅÇ®óÄjÕû ¸ÄDx÷¢ºœ‘ñ«‹{aܽ–];š2~mYA—g#28k¤É­Sò|FRq½OÙ¸hlUö“q2þšûbÊ-YMo2èóhÚÈ‚Ó0\‚ê»æèGšFñßC›ST’DÏzKÔ"d>(l ׳©aá¦"Ä+&..\Xw¥VK¸£ü@DN"™ŠLm@ûšÂóçû.S΢ïÍ.÷ô’y/×|”0¼¦Ñ H¢þâ¶Aå’É ÆÜ…?Þ©D®ÔÜè»b2'^y¹Nã¹Î/õèòÆÆub¹!Ÿt©r}®}º÷{ËôTN¹,à˜J¢Åý¡{y’“bë7Nâ(7‰êoõVêrôyÔ µh§Ĭ¯œUAdEZõu¡±üìÄñQ¤Îî¼;Ñ(Hϧ3b4wÑ.ÌAÔ•ÄìåTȘDé>“µEÎå‹I¾iTÖ,ºPV:7 „6–fðÖÂ=¾f¾pGr÷LGo<:.#öýTÖS¬_ù,äOý¥Ä`J²­.mbÏ‹¼ÜRàOšûZÆ/ªæÅÈúW³\ÎDO£õCñ”ù üŠKƒª+ŠûxšÒ:PÏB–i?BeÃ:Až·‹™™vüªÃ·Øã¨âÏW´¨¿f»ÇDïÔÚHé¢v ÓÚ™}jx?8¾µ’õõ›)ÍØvQä’ê~o}ÖÅ‘ÀöкÂw"™aæ>¡ /5 ¸}$ÑŒáNÛ‘ŸÀ7®ª<ÕÌ# |RÛÊ]¨â„#)ËõHÕ/úŠP=뼚CVa}VEk–‚쨽‰ï@ÌÖ5óƒë”Ê6Ðz":^˜­ýT,æ´,¿t8T.+óžUVèçÊ×%,Bͦÿ?dƨ endstream endobj 83 0 obj << /Length1 2545 /Length2 21794 /Length3 0 /Length 23242 /Filter /FlateDecode >> stream xÚŒöPYÓ COpvpwwwwwîîî„àîî àîÜÝ î÷dfÞIæûÿª{‹*xV÷jï½7$òJ4ƶ†@Q['ZzN€Œ"=€žž‰–žž–„DÙÜÉ ø–DèàhnkÃùAÈhà’ 8x2¶6Ig+€•““žÀHOÏñ?¢­'@ØÀÅÜ C ´µ:Â’ÙÚ¹;˜›š9Âüï@nD`àà`£þË ` t072°È8™­A ¬J¶Fæ@'÷ÿ¸ ç6sr²ã¤£suu¥5°v¤µu0奠¸š;™Ž@ 1àWÁYkàß•ÑÂ’”ÍÌÿ–+Ùš8¹8 •¹ÐÆdálc t€‚”$¤rv@›¿ÉÒ¨ÿôÀ@Ë𯻬92·ùËØÀÈÈÖÚÎÀÆÝÜÆ`bnȉJÓ:¹9Q lŒ ¬mAö.æV† Â_™D ÿ)ÏÑÈÁÜÎÉ‘ÖÑÜêW‰t¿Ü€º,bc,dkm ´qr„ý•Ÿ°¹ÐÔvwº¿'kicëjãù01·16ùU„±³й½3PBø Hû[f t°ÐÓÓ³q0€ö ›‘Ý/÷ÊîvÀ¿” ¿Ä  ¼=ílí& "€Þæ&@ÐXOG ÀÉÁèíù§â¿–`lnä0ššÛÀþöMþÆ á;˜»´èA»Ç ÿõóï—h½Œmm¬ÜÓÿš/¦¬¸˜’Õßÿ«´uxÒ0ÓhYè ¿–Œ ôáý_7òæÿ¤ñ‡­„‰-€ãïlAmú_Æ.ÿ,ù?‡ƒð__²¶ ­È/¹6= ½èÃÿçUÿËäÿ߆ÿòòÿ¶äÿ7!Qg+«¿ÔäéÿÔÖæVîÿ@Këì:2¶ c`ó©jÀ¿­ ÐØÜÙúÿj%œ @AÀÆÔêß6š;Šš»åÍŒÌþÞ–¿å*¿N™•¹ PÞÖÑü×µ æÿè@GËÈtu8‚Vò/trþRÄÆÈÖø×cda88¸Ã‚† B,OÐY4ºýµÄ:Z[' Tž7ÀÄÖö×DYYt¿D#VàoÄ úØt¿€Nä_ÄF ýtb¿#€Nü7bÐIüF xÒ¿(žÌoŠ'ûâÉý‹ØAñä#PÅßAé7bÐ)ÿF jU~#PtÕß]í_ÄBÿ"&P.Öv µÿuuýËI #P†Fÿ"ÎÈÖ 4ÖÿI˜™I¬­{ý5o:ã? ¨oÀß@Ùý½l¿  BM~CÝäøKiþÛœétùíá—Àê·þÝÖÙáï ‚é”¯ÙïìA3s·3ÚüÁÉÌÿ€ „-þ€ ZþA ±ú‚ºeýG) NüöÌ2µ­ÿzP­¶¿“ÛþG *Æî·äÌôªÙXM~w™á©ÃšÊŠ,èõúƒÊú—ÌÜö÷p˜Aͱ³rvü#&Hbÿ{ú  ìm€Æ†Vÿ ËÄü[ñßȬÿhþËçøGú_2ÈÏÃbõþw2, #G µù7ŽåèòÇÈX@NAïÊ¿UŠw´2p4ûÃ1(«ßaA6“™ðµ5×ÉÕöç? hÎ.@Pf®ì(ÈÚírïþ5Ñãwr O@‡¿CýçÒ3rvÍÑé¯g t#þÿõOè4‚]˜µ5â ²¨ j¹û"€íJ³3Æ3E²£–BAã¹àÐêü€ø.‘¢:#`ÍáF q°ëÃò–ù5ÿ"þ³çá÷ºw¡Mñ Í^Oz±Š;Ͱóãè}? j{qaph”ùw½ží½Tý-!¾ƒ·K’äØ;³#Êç¡Ü¹öˆ¹Õö–-„Ìî(ìV³JÁ=•MÒD©|Òö/ž&É5ÌœÁ$„r¢Á…¦D>s{?}}3…œýã_2– Öû(Š©ÐSsñóýŒÇJ…2£c1–&&.Ä5òÈ©§à~’$ÆœgIárß¼ÛwîBülêäeš´ûŒéտБ6 Ý_]FÚ¶sAdØ}(Ûñ_KPõåЪ›õ"Qœ¾2Yq÷ÛLWZnT;M,’q9&k_Óf‡~žuö+ƒC}4·!ÉMwƒ C[ÞjÅ|½|8¦® ”"fZËKœé¸ÉeN£o:Ô€¨¨]ÙŸ ‚¹=Î>2lÐÓk²Cvƒàœ°äxö®¬?“m[ŸFš³rEÖ | d•}5lO>;+À2cÑÏ!ÏMé Ï]&SàªÖO–Ñ­W¢Ó —ºãKÇm²ÌŸ÷2KˆuïÌU Fh¸[ÜsäÓž¨Vª4ǰä+lEÒŒî×û÷pÜïoÞ”— ê¢تޟUº† ~ÞPf Ê oSôËîp”Kˆ|St»5Ó cHt¬,èB`Ýý^M™çak´£èÉ•ºLB˜„¬pA¦Wê€;ÔkAg^¸°ë‹?zøuƒcM«Ü9|Ƈ•Ï$»KDz­ƒ ªç/±•”ïòˆ<ÖÁºç&G·†'¶ˆ=­*µ‹™{\,ŸR!¬bI æ¶üÒ.×xÈ?E¼˜D4®ª¸ Ô-â|MŸî® Œ¼$z×ÊDÊ;v$((%ËX•.¤B}ϲØôÈäÀnä©rÔ®YE½æ.çÑîÐ'^æ Sù 3¾ûÄš˜=é&–«`Ó_޵m^M2›E07+͆ñU++ éj«Ð—‚à“I°z´Ñ>R$4Ø÷ ê@MtÒ¹"Š<“H.A çW$2¤õ—qDÉ÷Õ´ =5B’c`’Ne`¤ÝžlP1¬_a‰üUÇ»Ç;gfÅg°ã/#éJ‡EçL] EY¢]ϕˆ½ª_ým¸ÇöÆ’áà&ô}¾qgâ1ЗzA§¾r7XŸÖ5ÜÏg¬š­æ­UøA××ù’Î7ˆ¥ÏwÉ–tˆ§7’©•ØvÉî&ÏÍÌ0ƒ{ÉãôãNlñ=kê÷Fo)g†¦Ç4!0Hó4ô:q§Êš‰)ïwL¼Ù#<í5ûS?í¦¦]f9f­t½[‰¦¼/§µÕOh}»F‘é×pË/d$ïe²5è+F¢]3Ívª$å+Ýúü£çêÑJùе5~·…8ÇXV[¨1½`lQîfö¡£þ>»=´ñdÕ¶í¡Ï6ƒ*ݧAþ¯WÇôq¹¶÷ÄÇ÷ã·ý~$=•íƒh®«Œ:¶eÝk€*½g> ³á÷Îû¹‚Ö'¢Pœõ ˆÐóIÆÐ¥‹«\Q„’ Li¥ WÒRšÃ©/ÕYbw%?1yÈâ¶ÉGž[$žÌdêf=·åˆ) Ò.F3ÖhæõE¤„2G?­{øÔfB*1 *­— IèR )ôÓßõ䯝ÅÓ™\wgZµ’È‹0ærâ© P( JÓír—¡Ÿ° ” e ä¯ÝfZqUywÀ‘5Í«CÚˆBÅBG‚¥€±{*ÎÛÆ!uö(co멽1xñ•ò²•ÓC™JVCZ{Á‰mEpß–Ùeõ+ÏùªÛzkà”…Í/Çp˜K— &zŽŸðÉ(uË轌ÌܸX¯æóŠ„uÅk“ÇO¢¾P0ÈVe÷å„]’¼UÀ·óª‚Ñj‚8Þ{ª1o—•–̱¨sOýW‹O‘ÑÑ [›E£ú!ÊZå3i÷[¥ßNø¹Ý½-ÂÔÓSW CÂ迼RÈ©FP–½v ̹‡QÇÙ½,~ tð5‹hŒwF? ú¤Oeåùú¨p;£Ço‚ÁÊôQ|MÞÀeÂKeMïKö(jŸf9eÙvru´ U¿¡_—çJÙŒ¥ú¾ª*×|nËhØ"r•­\Öº9u ;{ù,^àQwH°i66Ï:?¡èúƒ”èr®ácJl›ªÿg+r+ÓªÎÌEÃÉʨ‚Æý²™¤™aíç{fŒ/#>€rŽM{ÕÂÆâ‘B@œ£®åqž£ñçtDØNèw•ù{œ³8ÒYX:Ÿ‘ÎÊà" óÊ]d…Û"eÄØ8ˆ%¤Í_HãæM±7l¬XÝÁC%a¢Eåê/¸¥`våG ä> `¹„Äû®NZå‘îÕßiìÌÕ‘-Œ©-Žï’väÑûK^°ÐÒèÌaÌ&a ³>v Á²÷÷xˆÎd3úÓ^hå¸}ß\qbp®,Ë„·øA«Åœ¯4Ïhèš@ep*-8‘~Ä4éYë%L%ÀóÙ.ç¢b³Ó.puÃBÖØƒÕ]a©]ÞGCÆÉÖ[þž$V»qvàGŽ'oÕ€2q ¿ÌîL{éLu²µ@øpÉËuFíë1X7AkÛ\½–ã1@Ÿâ€4;€…¬Æ êöãdz?y `úbUï¦ê~]¿ˆ4‘I¨Cäკ\lçrщ‰›z3ß[Bë ÈNŒfÓ¨!T)ÄðÐãTfÌOt[Â6n):)õMIv̼ÿDVSÏ ®©À?ö^ba݉$û5)£C«„‚­‡´í)ÇlÌ&þ+ÖÙô’A×7åîs2ußéµT:=›DIé\t8hò$~Øš½œáñ4ØÊzY\O)Ñúµ¥3]ËtÃÕ.›Ÿ>èÇúÒÕù:ÐK*¹àß{=ŸÂ]6O¥×–›vó˜ã¯Rˆ}Q¬^OQ»ú./l4× (S›yJo‡¯ÏlÓQ ù=cÝgá  „„ð#=1Œ iÕ|5¿âíÒcØÀ­Ú›:ʧÓLhßTM§“JsÛµ¿En|o…ïõÝ'½Ž}ÿv°'é•ÉX¿‡{‰K þ†^ GÕPhvÈ#ŸËt 4Ô›Ÿ—-×s¡ÝêàùìX3Ö°IK¡˜¦® ï`¡ïØvDa4øÝ•t|΃³ß¤VÞ[Ù ÎTÄÃà'eºÐßï7Dˆ&À¯¬=œ”Ьh…˜ÜÉ»1û‰ç yý|§öTǵ$†7‹úA…IðŠeáòi÷nC\›pª\ êŽ!i,õ؈EöŽ£ÌŽ—‘M²Yðù²Þ‘â$â›)ùU©š5¢¯VÕ&ûh¼˜co£?'¾"1‡+*i؃µ{…y=V„ËàE×ZI¤t¢ .®¢ Uû¡[­^ΜF&g ‹Lqõ۵ݓ%ÔÓˆw(Ÿ›+ß×cû–<ÒY¯÷.äx¯ê'œ “ªáø ”mÏ*¨'†_+Þ{?â$QPÙã;0C» sÎ?oƒVîôAïêÈfÙ¿ ¡MîiËI@’FÁ&)2™Ro]W/xÉ5®Þ' ½/š+JïËøq‰”`èê+°ç[ç2~ul#,o¾U»‚]lÈÇò<ß)ŠŽo™÷õ…tQ\ï”°Èàu¿_sn;½•üjÁÿÕ­¼6P„œ^lˆk¬ mIÁþÍçÒþKe²ïgY¸²¸cì±mæ·ý¬¤…âÕ{,£“aícçzì' ýù¶#Ç=„”¨:pòåº}ð€ƒo”Gá˜Ê%“d‡‚­Èϧꉡñš€ƒ ;tÖv²,RlàjÏÀ/Šî¥ùUƒñ¤ÊuÍïSÕÌÎQ*Þí½={ÝW%P¨*€ ‚á$Ä£Ÿ`÷ÓàÐÓ;%SÙXR$ûF…"ÕGxé<‚ #:Ø~JP ·¢Ë©&$3Ä-…i³2 š%‡w€Œ¼†XéÌ8ÇÛ(·¥`è‘Áü,~q+käaï2byá2»…Å-Bó>l9¢9 ¸-'ÁîÒvñ.ŽÏVWçþ°L®Z´êá"Mª&âÞ[LûrŒ¡0™ØõH×oèoàËÛ’0ãW'Mâ~…l‰;y t±cGñÏ ÀÑÞRýZÆÔ{iP)@àîÞ²Åy>E…šeDïv™`øCæe6|ƒÎÄ›i-)ýp¸¨‹P¬4 ©rÌDÆqâÝ4¾ºšÊ³÷ÓM}C£FO}”.œßô‰Åh?xÛi¤œø+ôàèg|½ûo‘\û¡5c¾±›’.¹ˆ5þ:ËD°Ä ïÊÞ/‘ ™ñù³¤r)a>ã6é<ç¯ÄÌ„I3¨¨ó£AMð5Š9°²U¯“!¿ˆ†rk(&ZÒŸ·Ñð´XÒgò²zã‚[¥ßD&a•óì»þ•`§î)÷zJ¾kèÈ3!J¤:å”gÌÎ`_ÎÞìPÎB?³á$}Ëîî¾’ÝÙ}™Øá"iå2ÑÖÄÛȾ›Š¥Ó݇àyEg&óû®ãQ…º¼Í)‡bלSü"§M.¸g‰¼J(ç€+ªÚöb?…Î[ἿÞC#ƶqÞ㘜.®©M­rì2߆‡0î±¥‹¹>,åNâ'«¼Ùø‰³Jýp¯ÅU2îfŠ)è×|kNœ9ÆßäGà³e£"íaúõ³ ™_¿5-2Ù¨ÒV—póÈ‚•û>&[Mý¬GlžÁ®3‡e¨´ Ó{æõ¶ƒ¢Ú5)3å0#Æ}(é×á?•¹×Ÿ×ü.&uÃÅRUàÚØüv[ÂÁþT „ÉD `MÉܹ¯ke»û¢uâôhYÃáîðõ gtÔ¢1Þ;ÅBˆ@¼€ü!MY 5*Åf“AYÁ`“Ùæ­ébçWh¥=L©8¬ ¤e©RuâmWÓÁøorZ›oÜ"±íûóÝßJ'½¶X|`‘..“è0ª÷ö2Ãë ŽõÞDQùÑãÚ¬EÕú\¡É9vº×ó£ 7ƒ¡ý¢ÞÊwØÝ®ï|Çÿæ£×ÛŠ#|´Ùå°ýº´>ÝEVìº,÷‰G}ƒ³\䢄­ê±ˆú“m#"Yù]®;! ð°ás=vÍ/¤ ‚0½-†¾ì ò?æGìx÷úº½ß=Uûù.uÇ&Ôñs ½ %¢'bµŸf©Çedâr$oãû1¾ôé@þ#Ä©”>/@¿®„¤K?)ïd¥}бŒ¯Ée¸¹OWû)œ2möYah£DÖÐ$˜j©¥m5(Ë–&j¡X¦ÅcâÒô§é¨Áöçç:Ñœ‰Tînõ÷•ƲŠñ7”-oLo^™ùÔuºb˜KÄÓFóÒç.Òt;Çí¥¶5)*Ç—>ð·…qqãl¼G}—©â61YošJ*Ø<…C¹éžezû¯îwŠü-9$Ô¯âLòK3& 6_hï}|¾ÕއÀýÇ• ÓáõS ¬Ý€ î<ÍúªÐû<žB–©À4`ÈåFÔøŸé_i„³ÌÂéx‰¤ÑI2öïP®ÜëI®ƒêª–›Î—ïP-¼›§Ùõ:~V™÷,¶m´örÇE¹>PË’–¡˜—Fh•U蔸Ÿ½ÇïàSæ<æŸ=ÅØ“}…{§¤Þ¹Bÿ•»‚¢Ùl]mÊ¿•Ù仨pƒYôí|­ò ]%È ¼`Wïgj¸0MÙF´q!ð«ê[8 ¸(EH`½G×ôÍSˤ6ì·y§ã— ýh Q½t·Î¨@•,¯H2õ¸úþÐ 1þ÷*³X%à´ñSƒö–oxŸ8Uõß òÎqPJÐ{£OÕkzΣAŸ2©,zô:o‹f˜@Œ,_˯• QˆÄ„±¿xR)Ìxp¥¨:3E‰F³Ÿæ\7¶ *ü^½Œföξ®0£ÅÑæ;¬„[ôa¥—Âxè›Ý²‡€æ…‡£Wp€w~ôLJD!§ŸIÙŒuKq—Óiôì™cVì¬V­qÃ|ü“d†ör-:^%κÑÑ"¦ßÓý{/¨a§6 †‰¾t=‡—´ªŽ‰ª¬I—.j)|/p˜‹ºà‰ª«11°)Oé AuZË«Ü*êœ8o—øŒ¨nHÖ¿ÂË6/ *±p„ÜvÖ‚G•evÏödÔšî+´¬lë–ªõBC-‘×P>¹BUÜíS E|Šß ÖE•%p¨ìÖð(ä. !ÅpHæ0–ÂÖ§ ó÷†¥±€³zh[]¼yŽÈbþH9ê/Eƒ5·¢V¨´#9Z%P&F؃޳ü€Q;>9"rÊ8?..ÏÖ‰Qw¬±­6HS#:ˆ,";§“6 ¾™MŒ ¦sÎH­ð}wÓgÂLwoë`äè‹o~?Ñb¿§q‘ëD.˜ùƒùO|[h‡øQOaoV%Ky½­ctÿðze@‹‚²B¡¬¢VqÄ­œmÁ³šk­qßFåG~‚½¹ä}ÝU{RpUËB \$NË#³ÁÍt»JTjZ(¹„CxË1qA"Ã)zX|±{8®Ïex©oe“'E[Ð:®¶mïîÍz…çÝÁ…Ä™l6w`Gü¶©GÍ´Ð…H`¾õfƒ™g{½¼\êœÖɘi"‰ªÂ6ðªÃ6Ëf£ôN2$›ãý…öq“>ãˆ[œæÔÏŒLܼŸZì†JÂŽTÞâ·h, Ñ·Rø$Ϯ֎ %Ðïò©!åf}Š?<›­u™!"æö$y®ô7ÿ/ÝTc9Ìü„kÚ‰ß"·ðÜÁ^ñ†ŒÛ¤Ñ8QÎ [gú‰‡ýˆØ4Oƒ’yK[÷}Åè7²Dû>Â^ßÌÖaÜh§ÔÉûÙ ~€k˜Û”¥Â|@Ðô,k¤aL[Ü›Z8#n™[#QàÓòA±d׬Á.úÐà[%+î±ØüŒn\gÝÞµß! ÛÀÐKš Ð’‡Ö €@¸çõtòœ-„'ŠêÊaµ6K Ó£òö•u|æ¾c°¬iæ*•àN˜_W3>Ýkì{­NÔµýJOX0ËW´zžTDµ2´,ö{l£å•ˆÞv®—ܤV"Î%¤’ iÝ+{Ñ$Ž!>"cüX>d×H}Ag\ù[à^Lw+T8Д´¨¦ã}°  [wý ¾±gæÂHLH¹ Ì–FÝ©” ]õY]ª¸ùá`ê•QA6º›mäˆû)W4uÿ’-À´’.Ýpçxöu±é&'P2‚ñq \!Õ˜lR“8;¶ ƒ}™_dÍó Z:LË8ì0 ‹R’¿=o™ a'Þ† ‘‹†1 ºE:Y£Ëò0ÆØ^×d<@t}9¤!¦†»Ó!E?¼l/L&;hèFŒ\=šÂKAQÚs‹RÛêË쇹<ˆˆÉ7_Üú„$ÃBf1qüšx ã1Ïû˜•7…%¿Ð·à‰ª†¡—N1Yéfë­é|M™OÞY«#’2˜×Óâ+É ¾…/ÈìþŽøÂò>ÈŽÓÿfzl·˜êÎUhO}ŠU6î®íU3F¥ßæêX™Ò¸gò£2¤ÔÝ¡±6½hQ ÃêÇ­õ—¨Èg(%ìò—‘Nî$²\|XÅ€ç«k¦Âtåâg~U†wª/rHJ$ø[Ø·ˆ´ïטš:Ôq,Ñ:߆D5RªÊÈ7^k8t¿ÉØqÛ'Lâ¥|ÓŸ•DŽCŸ¸0éŸnúÝAøÆÊ–TùúVHÑ¢ÃsÒM ÑÓc¾Gä ÎŽfïVýa}ÌÍH0xÎ[3Ç7bêˆI¯ê9-à^ü„[f.ðhœbÞWKÝ,_Ö˜Wß¹c†Ž“Eª®þ$b3€-ž´ó–ëgã…Ð÷ZÑ·U‚‹q/åh¸-¶C7 \IßÃ[¹SêÕÞÀå Ø´+8ó¦5Ç¡<ÅØþ~&ò{}–q¼z=•±UÉBÊÖ]U˜eÆRú5„‰Ä8õmo‰ãŸ˜ìM¥º“Íᢨ‰äBÌ_; { …o"ûÐ"CEö2©âÌ0•±£Ÿ#²Ãª…-"8dŸ´S“9/.¥6ÆÝŒirÈÝáÏU:f ƒôôýëy’¸˜ ´ØG-¹2Sݦ¾?°íC†“ŽÀ"ÑB'6âÀrä?ä,Íö3œXPF¹Æ<¿ËKÏïh,­ èjg~tx¤šÉ£V­]ä:ª£y#ÒߌFãªíz{X8¦ÄˆwÚ¯ûs‰¾å5¿ÏÁË“Ïkݳƒ:?­×àÝÜé$+Ùæƒ‹Náfº@—Bˆ}ã¬0,y ¥uÜB$õ.LýTÁ·‹¢˜ñèÁ9 åU§Î3´,b6+êQ(ä\LÈä$CÍ€•EÞJÕ"9ݵàÌ»w0Þ& q+œ›ð\¯ŒyÙ í÷ ¡âpÈ ©å'!HxrÐØÛOq0h4hý÷[¼v>ñH3_1 7´ÖÏŠ*Ã$î?ÝC¼æ§¿œ;ãùðóé:S_)PËœéx‡”éµX).0‰³Ÿ¤ÁÚ¬—î=2[d^5|9Ò¨,~Bi˜Hø¬«d€#ó&?aš™¢à~Ä%æó7û Õ<î&ÁØvI{¾h¾˜Âe6´F¿Ròâù3E'Ôa”M¿lo6L#nù!ø®×õCÖ€>)$Q´¸÷ªÏ×;Z8úˆ§¯ì‚ƒ$Z_qC#׌Túˆ ü¿ßd—-3 ºÌÞ`ä`ʺ=|XÓ!¨°Iد(°³ÃKêÛ¢ü ~AQ*Kx)3fa~=´š‘‹Ð‘" š[IÖú¶Iu>]D­‹š¢˜íæ®Ùþ|Ó½ó XñSÆ"JªS@”Ú5u—GÎuåÒ«'›» œ,”b1+Ô]|Húž[ò,%ë÷%üÛâ¶1†¶Ø›ËWú2a°}Eï[1îÉ„$œÄêZé×iº®ùŽÊ~µ^×OSV>ºu>œ¥áz¦•ÛÚAqíXLæ˜%HÝß$‹-ÉêÀ>zâVßúØè9ú/¯—k!ÎúDO}ÚHêk ¼èÏá–!j]YPÖ 8ÞÛ~}(Õ׃U b%ŒÓV–à~%˜Î8X¤ ƒ)`ù"üæLÃì-Û!\Ô` Ù&¢¾s bÛ*DÕ±‘„åúû²"ÿA2þï/‚ñP+èohç~0.x¥¸WØŒë•õºI¥s TBî†á+òNþ¸¦-*N¿+‘Ñ(€õæ ­Øü”O©N9Ϲ7÷}$ÏáBÓ=iDyÅ0™à©¯i ‰77û„Á}c ²h‚ëŒ/&<”ÓÙì1gEeËž 3üµo™Ê?a:6ŸöÇáI)žµ¢'ÞT¥Ë—5‹Øæ©0!Í,#Õ“‡ hûø{75!ÞÅ{‡î[ÃÔ;½–9žj.¹¿[W„=¢ m±rÓœì-õ7&y ´†.B¸b®i0(tê Ò›˜pí5ß6ì  Y£½G5ùß“xu6bL:N4”8€8üUº˜Ø"iºœè:$ÓÇ¡@L2³ú·Ý*ÓrÌ’'äu˜ ëy™HßJ’Å‘B…8ÔjLØIl-aÇZEÒïÁw<­!Ù¡â'œRUÈ×[U5IÍ/4Æ<‘N󂾡jªðÐ!ÑïI'ý±\j› úˆ”²1ìÝìòöwòÈc‰R…€‹S ¦ºD‡'ÌwÝô[Å?`iö'hîóÔæÓÀã%©EÕýïpRð¾ S³ ÉsÔÎpÛ>0B³}a¼8†P„Óo‡sô¢.Vn+v˜É84bŠRÔGR<¨ù²‡¦íX¢¾Aíg?sÒH^Ó^ðR”3ìâøâ®ð9<û¬pC^×COÃüfl–芴6«µû=qöi~Ô­C@CóDŸ©ºü¢òé‰ôþ7Ÿs³°IÚѾ*ËwªÇªdޮδýœˆÇ@oߨûͯ8WP”Nö·ÓF,F—.Áâ|!W>ÚP7«/B«m§ÛIÅy±eh ‹sˆÊxôå~æþ–N%ÚùO=¦C»gÈÉéìòôµJ¡Ößîé#˜ãõÚ×ótûì4²…¦>ÿ¸<£å UXw[|¶n­àÇüØÊd]¯R§50º–;tD4Ä3Ûg|7âÆ]ó’‡oÏ ÷ëYjãòH§¡ÐŠc´¶¿qÁŠé­Œ]=«Ñ[¤ƒFo¶&ŸüÚçÀ¦re£Ë!°¨1¦)û)U•^& ÙÍÒ+g$p„°es›d昰DL)/+‚騨Á}f>e"~_–*Ì9áÏ_00Ðx»y5 Ò·5ž”9zïFq(„…¯8"5!øÏ¿Lêï?zKÛ å4³7P"Ôúwè ŠOïg–DòÇ){Àß¼Úl)6YDm2KÞ}¶·øÑkȦÈ+ùu»sÞI·ŽÍ#‹æÄÉý^t…³vãñ1l[í¢pS)‘")[ºÚ§Dv¿{Ö=Ä,¡k¶D't³½õTf(BÕfÕ!«ø‘jäáÎ~ûÉÑjž¢gþSŠê DA µ`© •@´<^’u"¸êòuMÝê,°GÔþƒcˬùW­Váæ= 3ŸKúðΔ.IŒR裡Ͳ·p3NAŸ‚[.çäÖ›Êóa&™ô‚ŽÌŠ®4À›mì²;çÓidhF#ê`f}y´—˜æ!¢ïKÙí‡ 3žÄS»RªhK@×óðÔêîÉ¡ÉðÕvÞ{N‡ÌáSlÉ×6|õ`Ü”yQ'E>âP[c“bÇ‹˜AT4ë»ÌB^w ‚?Ð,¬Ÿ~ˆ„iC°ó{Ýÿpæ2þÎ*ävE­‡7 pm›3!s1lßÄëÂðÜÆmĬ >dJ†çìê¬ÖúÜú †É$2“¯Š©[Ÿ+×ÑMQbgŒŠéo¢MD­Ù´ÚSÒÆ”¬¤«¿,¶‡øó”ì´MòÂç>°Æh¡E){ˆö`âú&¾2œÊnš½­¶^Ú© —ü¢Ð?^ YgÅ?€Q¢…i ÞÆèé…”"ñð1Ź" Ëc ³-ƒ“"<==Vÿ1ÇSúŒî‚G…èÍòÑDzê»[ÌÀ“3:¹8WžÕ»®æ;Löæ¨"dŒ¢OS…¹zv4Îkdâza¿´\,eLµ´†>|± BÒ—µ·¶DÉÀã«fy›ë õn¢ŽmŠËÐ~Åðæ!ü˜NóU(ºÝÛï¬{Ò1Ÿúsiú;MðR ïí7ïœS/½Æã¨D eFó°?‰YB †.³‡ÅiZOÝWdÁd3ÑA-Ñx‡Ô.÷Ô«L–Ë£ø}óâxÕð@PË%’!'¯G/[,cïoe{½¤W³Ø{Ò)Ú7®ÿìÆB(‰™×ÛBôþ«Øñ%Ïîu¿/˜B]:”B ã ¿èŠ5ulîÚuÚlF£øóyžç­3¤àT4jYqìÆ¨teŠöˆ™´zßJ3è­J–ÙW"êì<»L î:ò¯Ÿò–ÛÉ´$E•”#õ‚‰ðUšö°æ1]§¥¦ºÞ‰ÕƒGµAx™mºnŸö40vf–Ÿ»ÈÖokWà‡¥ƒ¬”ÔW©dS[ õäT÷"S„ǃjÚ…½NN0mýøYMÑ„Ûxqq×yƒc[lÝ‹)R)n‰­I¢kó ‹— Þ8Þî”z0_­¿iÆDL…ŠÞÁ‹˜&&¹ÏDìhMšÍˆCâ '-_sú6Á"˜:îVü‘‹`5L>8#×y]ýõ=Ųķ°T|/vÉz^_¦.‰\ÑVâOÒ)¶B¢ÉV6œ,‰fü8ŠÏ_6¨ŒòaÝÙgY¡ãIS!½o§l¤›hŠ…ºtT€ÅA]áîÔi´Âî½íE¢µ!¨ëD¶öcÄÅÚ#Ķço‡Z}ÆÉ«ÀæRTpÉñ”Ð|§“¼2ÑË u€/G#ÚÐØ‹{¨¶?${þ©ç-9‹èœ¿ÔžõÒãÖvî(ê@¶ øóŽïrŽvP÷ž…^ŒÕY»®¡ù57w o«c]Xh-D]ÍŒS6G¾Óͨ+|Û•ôg¯¥~ù®oè×ä£ÍÉäÈžø¹=˜Š»?-žÏ€ Ó/½ÑzÙz1ÛÖð¾ªlëG>䏨±b>w{°Àï@~¾¼œËÐæ&–µÉ‰X¾gÅ‚™ÛLuCò˜—µåZ+ux]…eiF*\zÖ¥ZÒó±(¶òñ¨þ‡‹íìȰ)‰KìïHŸ÷R;YS•0 Æp’Y ¥æ>‹%ؾĸ¡HݺF8T|.·+ê qU’³ê°É ªïÄ Š/±…ðK —O²èl[}t#=kpJOŠý:gŽÖíI48OÙC U ÁÿzeDݵ«g[Öe¥qŒoíH{ñMÿ}ÁL›’à¡$³0½ÄEß³O‚‘œæ‹,$;¦°oŸÔÔèÑ—Ñsþ;y¦$=ï“ÊâhµoŠñÁ‚ì|8è4ÁkÞ®.SËGìfeJˆj.ÊZZ‚=.ŤúK…ñÜžåë¥BNò,k#¯ ˜¢Ýtñˆ‡±*e‚g–{˶(Üv¼Ë2œÙ2^îÁI=°*Ü9¯ëq‹Úý”C`ÞÛˆ vb›Wúg¢á Á1$äašÛÒ:ÅÓ»Ø-Ý] )b4è C˜•¾1a +ó­.¬µàÍ„’ ñ¨I)W²:ЏdÁ9eú{,ø*{kÞv ǵbñ†"¹zFöž\…ó¨FöŠ÷λ&;áHò1Vì2¥e.‰l×Â+YÞ'e yÌÔ²ÛïÚ Èˆ=ªŒ·Ðƒu?Ù‘2¢*‹Ÿ­PµT3'r¯#ÙÎÚaŒ×¾éßõ'M»MLª,nòo+ËV(ø\l2e¿ïõ=‘Jk²Ö (9±Õòì×ßMþÆJ÷mû®]\(v·o4{-0=€q‹(„m—@ Fù¦'‰ÜXŠëc1ñ¶V-8gGà7.,ó ð÷àÊUÞP2tŒ«cãq%!{ÌðA‚GƒY1ó×8s E7Ï´KP¶Õ?0)OŸËUä ûGȳÑÚ€3SŠæLi‘¬Øz¡è_À2÷¾Ãt=c”FsÃ|9fÛÓp­¤û‘÷VKª³s {K˜:!ª®g .Úr Ž,d'(ÊÛDFw°þêˆ+B6kom ÍžàÉ94’[FÜ.mˆèÁ¯ø«‰7…ñ½654O •7¼Ã†YŸŽq¬^›°÷¢ßù*ÌB´Øù—€µôó#â JÇÆ†3Z›MYF(ªCnŒŸâ‘CcY`BæÞ¡äøÉúáøgpE„YÕ1r1wÐÓ„uoŠCžšÝu-Cˆ¥²©‹yMæ ö²ŽÚùo£³Õ«£c¯ë£ôŠº·ŠOŸ\ú– nÙé„é¼ý²áZ7°`²e­±û÷hŒl!óÒܼÂ=i ¨ó^S0dïº)ȈmCƒD5›êaù¢¦+Ò•‰ÈŽŒ…¸bˆ¡y¯ OÝ1vî?ùg}:E PMVR@4 ·4o_Ÿ}˜ÙÍÆ¢?^oh/üÄ.¿v¹–ãEÂôÚ€tÌôÞç]AÇó½Rp@0"­œÇAv.×b/ñÚò¤ áM޼zm¬0[¥IO@dd…S¸ƒàð¼[ 9êªd¡å«Ð´Ä¬Qhá „NÂu Z,á)ÅawFRE½¦ëš82+Gb_·³dðŠø|!ôÂZ7£`¯I@.Ék}ña”šä›ÍYõpsp¯šÉ·P¬ë3„qò1–1h[/7ÄE© x¤©Ö¦Teì‘”–¸J«PI?hÆa ­Ja©!›¢  RñïÉÄ­DçÇUµëhì ×õhI"€T;4›åÓð™'ïß‹ÎÈÈ«žLÜ X–pc–ðº#<hv¼Ü~á\afi,÷± w%_Àì=õ@$a¯*ýB=Yp×:h)JËHKtý‘Uü ’òÉ.x€)æËŤçI·—k÷¬­ýBýgõ4Ä#$è ø®ç0µ]4øìÚéÁZz2øO†PN¦³B<Ñ—á¼+KÁ‚í`‡°sDÞ¶_ü+ÂSt¢ŒY}à ïRåð(hו¼FXk¹©‘ú‹é8ǤÈþÄÃŒˆ$d7.Ïœ,+}ìߌÅvëQä~HÓŸä¡7ÿtö¤×RÊØ`=ý)ÿ¾¸q¦$þFhâ†Æ¯9ìcÚSvÇ] ìö%‹‘Iút}ÄY¯,çG+¥'KŽe­úúAß_ ]þ~¾]d.CŠŸƒXã×ÝŸ$ˆGš$ŽÆ´ÙPcR¤¾wm(͘K¨WLÔ#_ôÕù³ Äœ'+=ø¼åS¹!Õv›¬¦öùRštá o+þÚYK˺¥³t4ƒÚ“ÕëíÄg¢ž»²~f…J’ ®ë(-Ñ~']änùLmžç·€É”Y6’ÿb!æ7‘ù®õ&ÛÂóÌl©¯L¿úbQžŽžÏºRg½Ûlï‚ÀÄvª@dG ô£»1OìÕ@P±,Ydr.%10u<Óù1‰»{ÞÇáçÅ)«KíyÁEÀöêà;hÁâY×K˜äÁ¢=T÷•v:ëÀP¥b×·gÁI&G²ì •ÄS”ש«˜$àaÉz…תßȨîÁàB]ÊGj‹Œ+®ÙK¥Zô÷äV¾Ó¶1¹éÄàÎÐoM wÉÝ(ä«xËJÝ•ôx”º÷*É­;'2Ÿo,èG5r©)¦·YK"=.Ò§¬ ·ç£ÝÈr(tèfŠD&÷ µ¯Þî —Ë–¹´•ÍŠB\[¿ãuõu*meƒ™eµÜ”нÜÔ¿'_ ×_Ö;g"Es’$;,qAºúÜÃao:tl-0ðâÿÖÀsÙ¨®›½Ûô˜³buºvÌÉۯ拺˸j½Èg¦¢Ÿî»“|¡¸&ÓÉÛ=Œfz¾Ù XfÁñ[ëþÕ‰‘:Ç·ˆ™ªŸc=¹Â‘›„¨$FU :ÐJqÁ&ÊäòÆ-·y¿U0a=ám$Éóô ÛäŸ~ú¿fçn!ó g~;™)Ësý\£ì†á<ÁèòÃËNrÝ!€©p‘G˜Eð±3” "í Žåà¡­³ø. MÒ'_ì;i½LZÆÂ×-› ìZHD¢›n†'*>ê̇#ïË~Þ.Unù’º¥)£ZÖµh+½xãE£ ÑØø¤ÛÊ@ 5±Ð!ò#°¦ÛX[IDž¦Ï“I-µ[ …‚7äˆ_„bŒ‚ÙÄIáJÁûƒ©úxˆuj™!¯«§Ä&íuÏÆ}¢#w¹§òVºF¦¦#öÏgôÍá—H—ô—Œô¤®å S(³–6ÙŽä•/ÍPŒõ,†¢®©³·nR1Uü^#)…o‡j<¾~|yý‘Ù?ãñ]óÞÒè„)mSÉϢƊê[…Ðþù÷èMÇî»è*øµXi?¾‰ý.…iy Q©ÚÚ3sKNœ+¿©œíø=ÈéaÔÀ f¶ÜÎ1¯ùªH»H5ÄrôB°1á'¯f¹CŸ‡ò–˜º[’ìk, BáLðô6ÿ©“r3ò¾,?K‰Iª`r*5¢•Áëk…,‘~OD•a‚b— jnÕNd]¨ØƒFåƒfXÄdƒÔ|Ú”Ÿ ¯ýñFÏÎaó7!T«¬iñÏ!Z}ÄýÁíQš=•’² éo·ê†*cEë„ Útd°6‰ô*ÇŽkæÌ3#*„ÈîýãèBÈWSéÖz½‡Æ¹Aö.ÍÅvu±ï¼l XªÚ`GÆ‹¦Øóï4§ìÅÞQì ßÀq¹ÎãXuÌK ß1‰—f$ÚÞ–z;L8qDâ/®C¥â1Á\G8nQÔ˜2[ý@%·à÷ Þö±Cx}¥8â*”ykÆ@Aø­ñao˾ª4_Úû{ÆÃä…"ñ°ø&5ñ*õ6v ©"{é ÷s~µ''ËÊÇ1¥€w+Ç%ie( Ja¹éX_5¤1 Ð8p»Ji¨S®Ø½¿s9€pcÑNV£æmê܃ çÜÇïãõ%Š%ôUä£tIj¸¿s3xèQ´`/|ÈíZ”`2LO*ŽýuE+˜æm”\ènPöº j>š¾TÔ§¤­¾G=<³ ,¯å#uãouèVf¥)Q„¬{o¢“ÁkIcªCiy£#üê¯Y™*׈„¦×hsÝ+Ÿ;½ªî% ˆw­À¸EârzíeêOk ±™ý´ 1.–gTkÐÌ^½e¸ømÅ7µ&¢8=™=˜îì]ù¸î?˜ò¢•0ë'àTÇÐhªû˜3[n…¡ðpõÁ|"}Ò““Ÿ bÙâõP³Û 4³nýÆXVž£S›·£k#¥u\xì'G"ƒæ‘º$<4¼q,û¢uÊ·åy˜j ¦j°!ˆj LgtB»šÐF«œHÞôÕ^2Or2‡*lYºÀ]ǨúÆ¢ƒµVve˜W×hãû2à3#¬]:B)Ô()ªóAŸp+}Mᎆ~¶ÈÚÊWl†U˜ÝÚݧ.9¸kéÍFd=ìþD4~÷ñö%vc@ÃGýnËtqjsHÌæóiÛŠdðj¬w”ŠYÂåï22t0Ö›…ÙÛ“u)†3¡‰Z˜à”ç®ñ¢J‘²ƒ&ò; ‚ðø*”.ÜœßáÓ)¸ççéóVW¢.W£ô Î\îQ? ‡öËYkÊŸ0?*FÙÇËð±©ý©{äh1¼eÜù°žEjwþ‰ÙL0c«q!œ’Ôä+ØB*¹±´þ1˜È£‘K±”ÝŽeZ®4{+9ã§¼6èúã5¬&bž‹¡N[’>{]IµÑÐ"Ÿ;o¥Æö<öøK¬œŽ‡“׺o—|ñ:¢D mú‚À1(±Šox I…ñCölþsàÐ^, ›€®,O„讘X:¤›(× ÊXs4O^#zÆ ·zL5ªÒßñGêž±;l䀋¼?û^J_YÃn syðIGdvùJçå8¤6-iîy/šós½þ¨©•G%eá‹üþî²FV_=]žbdÞç¯_DcÎZÎ üå?nw<¡ù:fù7Ú›l’”x¡¯̘…o]“T§=uX_Å}—A¤úpRÁ寭›8L—3]G0ÍÇ?»Pdë¦-õ¸ÛNU‘D².‹#¿‡Þh Æ!úŽ®hÉÞ@ÕlÀ×€ŠÁ¦bVŒ¿a‘RµŠâ+¶³÷ÅÐAO)o\_úzÊh‹œ’¢™DÁ Ç}¦PÕv„¶©A¤ \yß{‡1ê&š6°ì/èïr"ô7ô¦¤ ¿GLOw=fï#$—ø•n§<áž/˜å³ÐЧo9RÑÁFæz÷_>=¿”ºÆpÁÃÔLÐ?,ÔWðZcV„&ÝAË0˜¾L 7õøqÉìÇ)í«¹{ÞÏ#ÅX =†khM í3'1+¥ ågŠÜÆLˆ¼ÐB¢±yÉy6TÅÔ4Pš}'Ðï–a€4npê4ÌgF„Ú¢É(ÓaïIeÊy6,–]oÊî!O<€hby\‚ƒàwÎNáå4badF)ý g^Óeñ’‰B^e¡Y^vö %Ôñ=ã–#ëߢáGæôt³JL·7âIf}“´?™¡ÿ3¼ï&Kάî'íyôZ¿™Gg&v²ì9Ö@׬ÀegHûèÖtŠ”ÉxU*?‰`ã|›;{ˆEL7a t ãØÕ’5.ùÖåÉ“UÚ4ñ¤ðÎUw—«ÛR ˆ÷É}ÀÙæoúJ@N•”áeº¡%b£˜Ž´Š1‘²Ápÿà•Y¯î³¢Ê{˜÷§a§í&nÏÀ É⻪,ÿ"îyܼ¤AmZ"°4,œýwS§—ðiÄøiý•¸2ËÎJ¤Ì=Ê‹œGE{‡+òž#Ó€H³ùÇ–'™úé Ôè[‰ˆ/¬ä×ißT“š"O î®äÖMÜWØå­œ£5ªrŒJè¦o3u|r'NðÃc|]哸>!*é+ûÍuþ4ò±è‰èÛۂ—K}± ]DdùŒ&2×jÐŒd`¹£J©íyR½âD y1ÀN<ÞsrX]ÐMXõ æ´½ê\¶ÏBŠGŠž/F½ ™ezòhú„*kö6ß~ÊÛžh+¢†ì̲4¹Zµ8”â΂פ½¸ŠÌ3ÂŽ—NÎÅ~»}?›í¾SpþÂU\Mƒ¿4ê‘&ÙC̲d뾑6s]êgˆÅÂ!=êÍ·P³s’ a€ðZ€H}c%ØÃ(2ãäÖ:ðý‰­Õc3¢ª”‘È­€…Þ,¿¶„ÓÚ·2í‹yÌ=j€‚<…°ùXh>}T›;öó£ÿÀÏ4š„²£«YaÁ5œz<Ü0W&q¡ô¡#! ´5¨P¹{‡Þ!›÷ç¯pЂɣ'a­lŬ9í«öÄ]ËN7Dç¹¾29{Ѧ’K±J9.}•õ¸07Æ•ó×Êzþ|Ö“;_=ê©,p¸È‚1ßËsu¹×çÓÖå†?IÛ¾M¬Àç¹Ó¬Ù9zµ,ØçºpU¼WÇ[ûL$ÔÞÅf®¸í2õ°²=\ºd8óŽéPäû[45 EøSÑ}³;Á4ñ®›Ã´W'=©Í„x¯½SKiéÄ2,Ì—b‰gƒÞ/½c‘±Áw}V ¡ûÍg•d1"Þ>†ê»õó b¹•:dæœ&!©i~në¹nE:ÿO õæ¿6œ{'\j’Év¸3¶ööŽÕ&¢bØFT›®µñÝ7SPm¹_¬¨«Ù©8Ù…‚mÌÅÉ zã]F’œ£1ý:ÎÒœf ¡î‰sŒ`ò ¯—öT{ Ã_ ,æÌ†è´“6|µ=ßêæƒ9eýBÿ d£fÒ¾q¦TùŽOiä9*MS-Xæ—(“9a¹ßõÈ]}åå¢mGÛŽAz­rat¦à9>Ta¬NV®®™6=vVU0ؤ/:½ùº·þüàP7ÿŒÄ¬I¼ÉËÂÃBñ:Эf^lä¹÷ R´ã q‹aÏ©< 2×]T,ç\Š^S<^)û\!NIªº&™—©ÆT†ø™«Ý@;ºÛöwpÈ–"ÎñŠÄè•Ï{Øý ¾ä¡«(ÿjö1%x‘nK‡p™‹Ð2D'Q¹^r5ÉG³#&Ô?7Ã^ßÎgËI­x«´<Ƹ,ÉäùÈ£Kച﬋DI"YfBÜŠ™°ÂgÔ ™,Cß7gÃ4½  {‡jñŽWáX¡;§ä#ãjyðƒ£`#OÓÐéŒ,M謟<ME«øvwxãç/ìk£BÈe½¬îï §ŸÀ&Š‹/\ÔIµ« úÇZõÑ-8ñYQ°÷ó¼á4vQ€£°=hݼÂ>øÅ¨¶j¶‡ÓËWÇ wÔLöè„]ãÇ,/–ÝTª²GÈêú\”ÕaêŠK[»¸Ï˜<*°”«0kAÔ-¾Œ+ãn;ÊZb&Bíùˆ’ïc8¯ñ ÂÓ¿ím Ý9* @ª|)¼Œ Òû¨VOBzûõãÆ»èn±­­q‰+ ‚²}ƒ¢(;?º¦²åñïˆ$r aìÜÒ‰xýÓ1T¡´^­ Fd?YÐ’HhŒ¥dg¢+ëó ͤs¾!Ú’ËuâhY‹(¾'Ëb±¯FÂsÆÉÕz¥øR€(øk&{âÄO“nk·`ÏT²0šŒFR3¼ˆœí‘´Ê-‚„o}R†TùLo2Ïñ}ý|QûÚGÃñ35e2© =K#Ýs"ä–åê“WZ¬‚Q¿üU5êýy´çåõ=È¿@<«¯ìN„uIé/N0ê¶*Ós”yÀpÜÄte.ùÄÏ×Þë½%¶’à0±o®-ˆXmÉÚ/FrÈdè§]Ï«*\Y›S‘ñ8`c»}2¡pp@$zñ…‡1E« )B#ZžiƽM¥¢3û#â”=O£MÕÒ2Ø•ü:^£ ž˜ ÷žËõ3äuôÆî¬%)çwh\5Û{à|ŠUHZËÞ Ð#K¿Pd§œeÓ »ŠKÿgSÏxJ2Ò>‰q­Éký¾‘û¸P©^w|U2 "Œ•”¤vuù¥ííÃë9ÂJróÉù—yOð@“ï†Ò«î…F×j¾q'ßúš¿øÈÍÖö@µí÷œ'ÝÊîy›Æ«ô§ðOjF-dD[¶£uƒ=-š¥*s@e=þˆÄä?â<â»*ìN#§f'Yó)± ôêA‚ ÄYpå|Ò°žÑn³¥8^Sq°ÙëüDƒ×jIj_€.;ô(¢¬±RÞÃ%¹ø¬’.‚Ĭpclhl» …—ˆò,·9 žûH=FÀaGó…,mZ}oîáÛášÄ“h¶XIüŸljÿP…’‡ý>îE|ˆ_»ú5*ˆéX ~9äÉ,§/5´8ýcÏ{5q¾¢8Uf-òˆ€¿>Ø7ËM,ZÖ*yÙ|ãõu[ˆyE´É[,î„ qØAXѺ«zu^ ³L>T×Ðñ4GT…9ÛÀ?Q²pý‡SU—y ©èi• ®#ôKª¼hYãØ[a5ºýÌœ\iSiجï8å™ëú<`7›Á‡÷!Õ—»²X’ç´xeälïùÒ Ç€FJz Döc±”¦Ø€%kÛhèî€EõJs†ã;3 I¨c¾ü — ö¹çQè²éOÑöÝ”‡ð!’{ (óDó§fl`Mû.S$›®J}üˆ’[XŠ~@keÕ(ïYäÊ3ÍS I³=íERä+ÝæK‘ÊÍ6=ûóû<@Iîëhœ;¯“O•F çþuè–f¬bÕÝÙ –nXõF àoW’×¶£,õLRj`â(Tíqcº¼‚よ²®¶Äqƒ8Yçýù_¿³=!>ŸBì OdôÖ—D‡2²»·¢¤ØŇ_Ê çM8A«z‡ÇάO•~ç;€Wµ£ëïÍX;Q/ƒª"_à–û]Úm·¤“¿qòPON{s¾S*ï†þ,}¦t×M› ‚ÞÉÄ7søÖü­FÐg‚,Áöš8x3ÎÖ]¡q¦½DÊ+,&«À £0Ñ“q> m€âÓ3‡–°¢å6+èó1”ØXÊÞןö§o¬tÂI.R!´ÊƒÃ«õ+Én5³Š!ö9"k¡ªgN4“‚NcÍ÷LeºÃ}ÿö˜ ö ¦ •»Ýã³¥ð¼—ûÈ·!2CI®ñCd2vzûˆíç'zŠKE gªÕŽÓà²ÀÅ‚v86¿½– ô~Êõ¡ **:-Ñþ5ª5«ÿÇ.#˜þµ®ãûa¹—|é¡õìþ]ëtn>¼M'Q¬ØüŽŒ!þ*ピÞ)½x~¤‘ñzÏ`SýˆÜ$V˜uŽÂÜľÇ_Õ~0ú¤ø!먧LœËÙ¨z‰˜Á¦Lz¼­´ûfìbµŸÛ0{‘R@H ü‡þ7ôº„ïµ×ÕåuË«®*û,ƒá<¶šŽ-L˜¡æïÿkv•:î•Ì«¸0[‰pP¿…W“‚’Žº˜d/ߦ£ØWojÄœû†Š£$z…|Uw>e'ÐÝ2ž»£A6š¡´æê‹¼:S%⪦õ¤Ps=¢a£vhÁ5^à¦ý#½$ºqŒGí²Ò«•Cë¥Ðö5ÎÄß !…0ÊÜXÛ’ EÛç×ëÜ»T &ˆì!Y™Ã#^¶ð|P*i¾eÅ~^l«mF’GGéÁ1Ùeÿƒ?/œJZ§T©ñkîR»PÉ»Ô#8˜0§ê[L±;m n®1j½Ay‚“èkõD¹ çCZÏÂDŒ3«äT™4i¦0>©–»6œCv2>L·Sêj"ƇøB Aå·Èa…Ѭš ‚ðH5V\ ŽyÀ-ÏŠ÷ø¬oæš¹*è—:?¿!dž' ØL‚âNXÞo©;èÔU+õNÈb˜ƒ–%×……Ð’?.\Ú·}¦ì …›Qº!¡ 1éKÊV˜›Õj7’B°“`8Ä09Jª[ÁLsÍíi oméÂq$ÚÁiZ#J‡‰Ð-c%ÂÆŒ…Ñ™L]cÚâf2á7E>v Ðý‰XÐǺr7ûƒy™Ü…¼DQìÔ Ëuu0à«uæíqh`:ÛfÉ #_ãl”ÓvùÕø„¥kòS×üþd4ߨâôS‹AD[Ž"d,BQ—4Ú*ȉ[ G§ë`òI’ú :9h×;ˆœÎ{­Ìø{ï3:Á[J­:Æ F/^=è˜ê¦eªvØd•ŽÇ€ÚŽa$,Èú¬Ÿ8 ׯ²ŸO×þÿóQ ª†›FˆZC‘÷ê™þ9Ê,~‹ü§Ø9Ø—ÝÞ¥ê¬õÕó°:H(Žù†‘÷—RþVj.7Å-ý[ „¢àzF-,ÓgOr©ª…9ÉÃq´ƒ¹'Yþ2 è“8ÕîJ l<ŒîU¸Ë·…@25jŠœ4à@ømOQÂÆ’~À!Ùï–åKðé÷x>dÿÖ{/þPYàP+ˆ]>¸ãO-“^¸™áD U ízÖl7-­j•",Òá2ˆ±&ë÷ Ƶ`ùh½Z^ÑÈÊ©'Bm•ú КZï*ŦöˆéLµSÊXGÆKu,[+¿ÌÖþ;!²ž¤ÿé(DµJ*Ø ry„°nàmä¡EÜØ’â€ÐØM ™·‰Ôà‘Ô­}—´PM”Å^`cÖàœZ¡ÃK®íñ\S'“Ä”w¦`Ô%‚oʃEHržÄÂêBb¡|ÌAUVl°I¬ŠrÏm›RM3æ5˜|x\ADvMbo û×ÁCÑn x ¨%²šƒQi5bånîðÒ•Vö(N¦¸KÆt×”yŒEy댜Ñþ!ç¥'‘B°7ÁGˆI†0¥§Î4_ „évL1„7ableSSÉè¥Ë†Çêæ]P—êpow/³G÷(r‡Fš^W{å¢Fúø‹B6çN|ÍÓÁí÷â7xÛ…ƒ1ºÆ•û³dãâ« H,lŽåX†1$óÚ5 ueÚF¼<Ý v¬<ïûþçÁƒD«ÐjÈ–:Ÿ¡TaŦd˸!Bä2†¨·@ûûH”Ê£ê÷ͳ…kÏgøËßÄF°×rx÷E’G=­–òØhd¡>à»>·õº-XóGƒLGL)nÄÒ`ªud*˜Ê!±Ïƒ³½É)ÞSw 45þ”"}‘Þ‡FsÔ$LRÜTïεÎFÈ?mƒ@ð`Rç+qG•ªJy¡t”Ľ/ó ·4þ>»¶¾Iôʵ †ÞÙ'ÿôb¢ÏõÎÏ2ýiçLÌb@¢Úˆ¹Ô–ˆÌÒ*E’?ÊOþÒ^….,‹Õ|A´àPPZ'nbïÒ ]ÀÞ©×'3Z5¯j°CùÓ£ \²lT-vÖ+/•«‚Ï» jk¢$ðQ0büCjöoªû²uOn£‚$zÈ,ïZ‹I<úXüW~"Òë£×³â_ç-£×_Ifàa6àDì… $¨»öqü8Ihշ͈êV¦÷žéoBipÙ½T•æ­KÜv±øXŸeâíæ£†Q¡_D>ˆ[kRMè%ËXÅ}±¨°ã±Nþ{.’í‰èpçßƒŠžzøoBA}®Å¦rR“âÿ:Iâ±Iðå\#&M›0’8KJYÔC7×ÊhÕ  x³0Ü€1X±ß™ˆ¯vZÈü‚xå±p´KÉ:⋆ðç·> ¥…C]0¡ðG(Àh=4ç&FwxÁæÇÈ«K›Ñ¼âÉ6ñÎec÷yY%Ÿ§{o|NÒ„ ¨™î÷öÁ Á“°° ¯=n6² +ƾ$½]A¸~ß­XÅÎå_Näû™~Àm?†çVôª;CKÎ/´¹žÍ“§WD:ÉÅTiµðÖÝÞ-c`‡–«œ:EÐà˜'µÔŽ2„ ˆ†cïôNµ*»@œ$ùÁÄfXÚ ‹Iô Ù窖®US¦±lÙŒú&e/H}‚ .b!UIÅçlr¾Sh^g]ÇÄżQ/Gµn.[©Î7@É`‹.‚ ò ûÏŸÚ&"HRËpnWDåô ]~QѲ‹à‘RJö¶·‡o´Ö)‹ON9ÂË}õ¥éA‘šÆ×ñ·wyCùxAÒû 867QB¿š7‡‚ìb/^og¯ÜÇN¯ÐÚüã;‹ ‚æN U³ÄQq Û,ï¡¢§ÖÓ)FHÌo‚›¿¸HÃ*/éHþ–ÎÌÏW!¸ŸØÖ«b g·?“^:ŸÊ8B K{º8þoΗ%'’8†xñE¹ÙÞ.tº¢±ø’ ¡=Éç›f|¨R{ ä½rMâö{œªÚËÞƒ]ÿr±2Ós ~ù•ä×ÌžíÔtóì3³›MªîôAo„a‘—±C&g¾håL™ÌöaÌW7bY š{8Æ–-H•fîî* <ù!¨ŒàÝ #Ý®¯ªãžëkäú²êµíc<8#á°) Í›%S`:ÞÎ|76¥Á,^£.e#´õ2§RÝ$‚*oãOqÿÝVN å Áñˆ¡–v ¸àŒYë+§è`̳ÌÓϵ º¨àµ¸-xözÄÒORÑ»LDV¾* \å DÈ?_65ˆÅéè–ý=³lž™—9®ê¾Ñ(F ùåi( .¨lˆ±«u/þ;5Ô{’@œd ä[ƒk¡×bÕ5Õw?’J?gê½4Xþ•à XL-~:+²F Óç²\:8´`5ûìÞ’×ÀÊ« ˜œùGÎõþKø ·Éû’- ôÆ-±DTí‹»²hw²“Ð"»íÜãð§Mì×;šëßr;"‡òæà1Ãô¹§Ãtc·ánGióYhÛd 44"»+‰äíÒæ¿àäE£$œß8 ½ôÊ~\Â6õgM#‰¢u]ƒµ…µ/ߊNàMS‘ìJ´ðl’ËBÛÕùaÅîÆp3¹ŸªÁ ö§†ß;r_J_¢F9šQŠ:`®ÿyÏïðmSóD;äHدu?„hvžÃ~”O s¸×=ßÈöËuVJÛºvK€Âúóá• "Ùc|¦!q¡vÔ¨÷.¤ëû1äîGàòK¥ÿ˜‡ð‰ÎëgZ1È»˜c2|¬ÖU¹®jž–’N™vÍŠ>労[ç™çKd¬>aŠKòÆÊ–û²,ü‡¾xnÛz²qö=ܵëÄÈ„5‡óÂxÁ`f*•èGjÛñÚIš`Z!¾ÁëW!A×QàäùŠ0°2wøêƒ2'@MZË&§Q‰ô×ÈÐÖ2½,‡UY;7V€Ûšà¥ž[—y fÃéêM†²fŽ^n£Òu•c‡5ç#“ ‰p‰È…Tü‚uÃEð›¼3‹ÕO =Ñ—Û?t(¸ã}hƒ‰™ÊêýÂÃÛº3/MrÅ›QqUª°Jÿø±“nï–Ôå¢FqòéÌã7~ÙšiÚ-m{röWŽM‚1@š“7+C#ÿ×ÐàìÊ#›•iJÚŒ©ÉŸàÚnÓÄ ¹+úÇ†ÝæöM¯Û(‹|ÃýŠ`|ºs ¤G¿ÈøkÁÔ¦C3oãÚÐÅ endstream endobj 85 0 obj << /Length1 1636 /Length2 8948 /Length3 0 /Length 10017 /Filter /FlateDecode >> stream xÚ´TØ-Šwwh‚[Ó¸»Cp N4иw‡ A‚{p·@p„ Á5H @p·GfæÎ̽ÿ¯õÞ굺{WíªSUg×a ÕÐæ²t4Ë;B]9¸€ a€Œª7â‚@Üè :W{ð_ft=0ÌâþA6s}²Éš¹>ñT¡e7{€‹_˜K@pƒ@Bÿ!:„²fîK€* ì» 3È8:yÁ Ö6®OÇüç/€Ù‚À%$$ÀþG8@Ê ƒX˜Aªf®6`‡§-ÌìÚŽ°«×¥`µquuæäôððš9¸aÖâ,숫 @ 솹ƒ-¿¨™9€ÿì ˆÎб¸üi×v´rõ0ƒO{ˆêòáµÃO‡´•^ÔÀÐ?É/þ$°þš € Èõwº¿¢'‚@ÿ6³°ptp2ƒzA Ö+ˆ= .ÿèêéÊ0ƒZþ&šÙ»8>Å›¹›AìÍÌŸTn—Ò˜=5øW{.0ˆ“« Ðbÿ»EÎßiž¦,µ”qtpC]]Ð×' -žÆîÅùçÍÚA= >+ÔÒêw–nNœºPˆ³XIö/Ê“ ý›5ØÀ„x`gØÓ†ówz/'ðN®ßæ§ü|œVOM€ý Và§t3w0Àæöóù·ã¿:Àbá 0[C èÿd2ƒ­þÄO—ƒx^ž´ÇýþüýÏèI^–ŽP{¯èÜ/§¢¢¶’ ÛŸÿí“–vôøpðð8¸ù¸B‚‚>À￳h˜AþªôO¨ÔÊ ôg±OSúOÁîÝ?ó_»Áøï\jŽO¢˜ÿÑøkÈâé‹ëÿYé„üÿ üw–ÿ›Æÿ· y7{û?ÜÌøÿ?n3ˆ½×_„'ͺ¹>é_Õñi  ÿKÕÿ¹³ª`Kˆ›Ãÿz•\Ížö@ jmÿ÷!.òO°¥ÄÕÂæO±üi×ý½dö(XÃÑòûUpp@ÿã{Ú, »§—ÃåI‘¸ÀO‹óßGÊA--o7?À 3óB= ‰›àÃõ´Š–`Ï?4 àB]ŸBOíù¬aè¿o”ŸÀ)õÛô'âpJÿœª#¡'döpšÿƒ„œ#^Þ'ô´™ÿ°¹ž”Ë þ|bØü >ù|Êmÿ/ø”Üáø´<œŽÿ‚O©`ç®9]ÀîO/Ö?„§ž\ÿ!€žÇ¿â¹ŸÒyýSúÓÑÞ`ØŸþÿ´… öôÔü± O·ðüÇ»{‚-Ðçg-DBlëB:®j¤(<8¶¾ˆM1lé§³pøÌÃ:Ýn°QRXª³‚VaR)Ã=¸KrÌç’ 4÷>{­ (ámÉší·¾w&‰Z[íès_‰Æ ÷¤êû©Ð(9t$·}ï}õí[á»”rݱ5ò ®<ú<ëûËGÃf¶4·«ùU0îÊ'9buc^–L3ä™g#}ŽìÊA…ÊŠä‰3}~1…Ÿ3þH£œÈ†î·ËSäc¸ÆwýÍ{ùƒ·K7=™!)â9þè£ôNª2ɬOiÑ*l4íqçØºÃ[.ûfï-5­+Øî‰1#ø03)'"¡RtÌj›b’C m2oöÑ’òª§Ò‰@«¹ »zäQÝ^ žO ChëÓMN½÷ 3Qk¸– QJ= ´—/œ >§ž;¢`Ëzð.–dåõ ÅòÈ2ac‹¶©UkgÀwë¬:ÀÝeÚá%Ï!¥éceïÉ÷Ý V{£3‹LÇ®í1K2cø†ÆÆ ±š¶”Y 6Šhâúl*· ¡V $òXº”¬ŒÜVžF ŒA£º­= –Ìêö~ô«ˆþŸ„åºåRÕ•¹‚Yx…hŠ(ñq×ÍáëcnÄ _×…eWðÃו#â˜ÃòOõ+{NÇ>žp€DåÖÚÒ8˜jöo ß«'¼8œÊ‹ã£0jè%|.QicEòý%òèÓ X(Ÿ‘c_%{ëÜ@"Þi 2NóÜK­Óì`2èÝ=ðß ì€a‹ykœ»¶<ÛÈG ¬[rúAͨ­Wï?(\ܽRnvj ²é›õñ÷u@þÆíq0š“zFjÍ7ð1(uèý:˜’BH!È& æÍøÁé4‹(ö)V¨eW‚r/Ü É jgÖèó.ŠÐ Q&®\—ÀSc5Y÷‚¦˜÷¸Y@…¾mh‡§áá¯Â$bï©Ì[`¶vt²ê KØ¢èpsÌ/÷{)›:Q.%:u“-—åÂö¾!ùKk·šÞbó5ÛE6Wä°«Ç䤼£[¬ O¦›xFn~S'«œH’Ëñ;\”Xȳ{ëc*ÕŠñ×íj(N±©k%ô2J'I<'3 À¿,(œ Å#*˜ŸÞáì¦ ,õHh¦3gò"ôöM³¤=²‘G:hö1ñ¯Ï) ç› n1Éf!L<§1´d\³ý·\6’ÞM%œÄ’L².1ój:”*®›0Þl.7EŽ?"ÎàîBRØ‚c>*#yVc *Ø^?|é§õcÜzpKèMõ×]×]{Ý"oÚr#¦p˜Ä­«Íê•o·‹ æ|¹3…O]’Hí˜xP»Ì7Þ;àƒ…¨þõ ñÞ• å÷1õR9,¦W„¿êCCnÿ@˜A¥Ù+väuKÊwNäôö¨E+G÷²å„€qÔÑVJĔʱ–YV'H2áªô(åÉ:Z@¿N»dM£…Hª  GY!¢õIî@w-`_‚Ö¾8Vuþ÷5úÎ"0T§O ™ô¦Éc<ÙŸE¢±Hu57UÏœPÀø»]æû²se‘XèjÝoYO±æc(»‹ ׿}3“¦{©#t -ƪVów°‡Kí§ýדù'm2ø‘^¡qϯ6~ÍI ¦1\s×=Ëønß¡áËÀ¢7Ø‚ípÔ6[‘M…/ÆØa†þãñ™r\¯Kzˆ UÁh]Ò;$¯8ÿyr_­ üXþ¾†÷#iÒiñ¶J—ä($áCéÜiä÷õf„‘w% ˜é’¼’pD?y™“(;€bð¿c4¦ï'm˜œ>Ln°y¦¸ø…ÕIDâ)ÌðàÉR §7Å7æMå$°2¶ò;ÍÁ¾{ÆÞ­ó©sãmp2í$µMFã¶hdì‘Gýš8œ…$Û&VÁ+h’µíÅ(¹Í¾QªQ°d B¡U "æÍ÷¢v‚í(Õ")僊œÉͼiZ Фí|+§g¶t‰fÙå)}ÇX—‚cB >D™Ñl9Eb“«ic~}EËX‰D@¹ÕOïïûíÒA\§sÜ®fuæZóRRÕìöEß”A‚GSêÌCÇš*àA¤ò¹eÉ~ÄmŒ¼•û3YwýôÜ­›ÿ{ºÌL4yÿKs&­³˜ArÛI¸Ç.*Õr¨ß‹‡x6¸£daõ‡FÎQÓKÉàS9Sq[DpDü-q ÊèØ!ҘѣCô/;Õ(¡I%ú[ƒˆ•4ß’Š®ˆ §ÝºûŠð£L+ÌoJºÆ:„ň¯Ç;)‘T2Ô0Sœ¹§Œl øq5ÁÛWHU«,TÀÓðᡦ¦%Âe˸Y«µO<3á':eJ%ÛûʳdjǪƒÙÄ\Ufô¾‡ŸOkŽãÕ'f¹Ê})eZa$0«TþÏ¥‚QL$Çò!9—µ‰‡‹¯åÇ@àâµ8fxOÄÔI–¸fW8c+Eê gÕÖÞh«74»+"ÌN¦´ÆÊYŸc>å>˜ß9Ò…5݉ xamko˜ £¶q¥ˆÿ"Á#Ì]ä:<ïÅH!ÿŽÖCô™æû ¦]¨:…íCZ¶.’!‚Þ˜'UI¸÷¼Tû¦œ6°QMÐÏϘK¿Ÿy› Šá…ÿ“Î çr¼J|f[ÔÙLÁ€;'Ýa¬À ÜšÎñ®íÏVpŒê~nLRy …[HàîkHkÜóÑCÎlÖªvò×p3Äá1+–——‚Ó¼JíqŸ‰üÝ¢ÊbÏV'ÞñÉnm`…ºÍ¸²Ô໌úqã|!÷œ©/V &%×–©*aK5ºÃ´ ‚·/¦(¶Í´XþìJíöÌ–º·ØëOiÏË¿{i¹ÌÂ*üþÊ1ÖÒ4"?_JõFÃ<$&ŒZ˜¾[íú,Ɉ®±(rÀÞšqx \šV‰³“jÎgI0Áª.‡Æ—€U««csC¶lïÞ%ÔNaÂ=M6Jï$“™1°G…Ë6ÊÜ¢‡ö­cAãV/:IÝ)odÐÕBÆ´í[îwPf\_]@• ߇—RÌýL»I\Ê,˜äÕo§ÄF rNqqëfÎxùQ¯«¯2±|6á§úè§ò2¯š­ÑrFÜØbE/š$g8àÊ>tOH@Æòrö¨ÓÔWNåðAñŠ) ‚Ò|¬Û!ižkÐNIšOr·²âm¹`zB¥óÅ}ãè|·ÆËrq¢«¼|;ºµ*‰ON½ë cɽ÷ë®ÙÄT‹Ý´&\€Ž©>KXOÑ%fÒ{ò¤ä‰Û\Sbg”Ì"Žwë9ÏçÙ.Hk_·ªKå8†’ñ[àÂ.MÍkòÊ„¥Í¯ù\/¤k*Æñé”7ëàºOz[¨œHH@DcB¸/¡Êøx‰*†/dŸ›¤œYm+q•RJLÛºö2 s2Ç(½WÈËY@A†iä|FžŽ%Ì–WW»\ey¾Ÿ³ ü,Ñà_Ý.ÔµåÝ«ô‘öYñ@ ¬ Öe æ$™Ê‹¬ëbd.bOËñBøGÌ%'ч…ªQ'³¹TTá¯\ž×ƒoO†6M‘õºSŽåär%š,pI±g®1eÓß Ôq˜ÎÓ?«®Tu_EùIõ“Ø·>”Ñ¥/æ f¿mŸ5Ôr<üU²ÞfH ”9Är>.ÍqÚ‘æ²Ä$tÿ­#7ö†èr{9BD-å Ö'êpOÕ¥.côγÊWô–²:? gp¯1'{mûš×‚’!¾êÀrBæÚm.ýÒ(Þ ë3C ´ÜÖG…3w„ü¥¸k‹cæ(°tšÖ“ÅD}r.l©ç«PƒüÑc®FøvÞPhb  Õ'ub5©²u1!k>±}cϱQf$ÏÀ†¾Ç…÷rþÔ5Ÿ\IpýÔrÎf”âdGBÞ&¥GvUdÑtÑ&#¬ <7òƒo’'ìêïNœ—Ó!àrЂˆ¢÷ÀẍAƒ{ý´ÔVß“wÚ£´³õ‰|ô(fàªM±Ê±×úJ9ÓÞé[ bmq%Ïñåx% ÖSpb¶Í ëµmT—œÍ—´öžeã²Ëû‘ÓÐI`jPlǵp ß¾I%wè}c{ô6+ UÞRo@©r4ÄEyÍô2ÿb îÌ0(*‡ –*2bÆw_ˆ%«³{Å &€³Þ ÙñÚÌxÁ©‰¿uÀù* ¡“’ôUrP€º–¸„äN|K¡o£Èî¦ÚVãs5»­þÀ·ÄZ Un ÎXûíW¶öèaQ<9´KGdB°¤=òXÚ.®©[Ÿ m=y½Å³Òk]Ýwwê#"oüKqZð®,ÅC¢†ÈQG°GS¯±h¬Û>¢ ÁÛëÞ9ºÝGå°áÕ?×dðë£/Õ…ƒwm&Ræ×RH»iX wwXÙ¬'a8¿îmÏ©Ÿ$4ú ¦!ãr·d½48mwNHÀ¸7€€±+®U˜MB*RJ½ŠéiZ}âlK¼@‹º¥![=Ì|¦ÕþîË—,ÿU$v&JÀ#|®`›~ÉòÆ.%ct^•I*ºdQK\†²mUÕØïÆ(Ìò…´[ ³GúP?#à›‚2+ÎáôGíX/ᎌç€cWD-&@ERM2=f0ýÒªºosù:˜{¥¦°2˘@ c Ì'ðŒšã-ˆ>üÜ|P>”Ïg÷æ›ðCg¶¬‡Óó Ûã©g7•h_Lµµ^7½|†] œôP[#¹—©M´Ûò"¨x³â¦H·Ë,ˆ=®&PpÇYåT"¡Æ°ÙI©Z‘ûÌ%ÝÊóP¡%Çk{(BüdkA(7{g^ç›fV…Á¥YR<rq@-ÜiløU¤­À4$‹q]_õ“R¶V]*úØ„Ø|xdB4á¾áŸéhJûÚ:çô‘1L„O‚\hdîG\3KmVÁ‚üaõ2+Ñ:-ÌIÌ'lÊgèhZqLœùsƒ›~çT‘·o¦ÎhÆž’êFµëjAʨŪcÑ´,-¾1w*Ö-Uœ¹øˆëÓT® ½übLH¸Äf~²´Uh.Yö•V1 ÄgS‘®×ƒ9>—ºÿMºàGŽ™¸ÙŸ¡c„’WÌ~û™¤w‘ÛÄ:YÈ:ªiY!•µA¦‡NÓy¦Þ1>L™Yž˜‘‡DlIèŸID‰ºÎ& ©eÌ]µWR¤Ê]vÉî;tãÔŒ~}Frá_È¥ü¥¼Œ5v¶¦«ìÅ«wÍ}±.¬Öç’soì¬ÜKe—G B°°„tœ %ãñ‚GKBr!NÍÜM)Aš/*êê º±š‰-%°h}z´‘Xxåê$A·ïYbæ±-áè]’Ù¼„ªôÝMMZ‡i¾þ(ޤ_O¿œ(†Ö€œaÐ~Êéïçrå5–qÀ¼è'ÄyÐ êÞt™OèC¾tCŠÜ>#ùQã2X €åñºDæD.—%qµÛA5’âÙFîhJÆëgR]Ÿ¾Žž8É|È-xQ‚_¤,Ý :¿À;ÏÔzs]àðÈ/W‰æ®ñ…@¡úncKƒ”§Îʈ!^Ý5Ð?¾ukƒÔÞªCÊå{¾øðLNèz#_“d„ÉxsÝÆ#RÙ©>!ãR$ºë/³513·ly$ôà ÜÛ“weÒÙÞîÏM)dv,Øv'bÚBXƒG®«¶T)@­a—y³¯Ç†hOãNÚôÐËØ‹t^uœ"ÌϘ…2õÃâ>Î7cË4N²3÷h°,œ~-ycÂ[çÕuš¥ÏÅ Ôõ¡âˆi*’ޤ8äÄ„‘;/ä¾ËG73UõuÞˆ´LGÊ[Yÿ³KŽ8ÕÛF¿þ“óÔwRU릙Ã4†b­³L„[õÆ·?§×úÍIÀåK€[ù«ZûfÇŽùGäé@kòwör8ûÉÍ-ŸfBØbüÎ,ê ì ãe Ühóß+`´R›s«"€+±¶"YÁ³³W«­EOÁV©49¨6~Êk-¢<ä\¯4¹©uœÀÌÄw=Á¶ãw:B\¤‡É%°ê¦ù3#ß¾ 7Ð;ï5}Õ(íb5 Ɉ§P øeòàI»Ìë̇¾XTðt,ûNlß·+©‚ùì9»Nó×ç;uîJË—ÛÃ͈yšø+ø§Ùð²µÓ?Ooí®\RómÄ›2LCsÌbË4j˜ßØ2hT…µ ‹ã 7*èÛ§¼œ@x—¾Ùxt]|ñl9±ŒñS”Û9c'µ|=nLPì4ÃMœÅk Ìç ÌÏW0û¿—_ߟ7†­ï# w"L™Ä…ó}F““ÆöÉÔ×å: £! y‚-´¦|¼ejÃÛ$¼ÔÛ´g€Ûlk:t¦w¦Ïçhv‰YvÜR™â[Œ”ÁÆuË;dZÞbVx‘»©,WÖ¶RËÉLžáæÒ–¢ÕEÆ“qìS´8½yîß¶æ0”ikYE«j9µë†zÄTG…ü ¨^-jñ¬ßHq³©[î=ÿî'Ï&wžôꈓ÷eÊPM-H–‚j£ç )QL/ þ‘Êq¾Éh ³Êú Ñ”8JX0o»×7ÉR¢¤ì¸¯Òß~½zIÓÒñöí‡é^LJäÛÄã±Dڢ߲s-=U?š%=žmìe…G˜<§­2ö€™h ¼8ÁríNF7%=òx¿sÑåÚ²à@½'ÁZÙktÐk‡MÂõ„‡ù0Ru7VµÁ+l;8O‹¨ìwzÓŸ„>(ö8 ÖpŽãñç99™õÿ–y– ÔÎ@f"‘dÄéŒJ|Ý7aÔm®¿šG›¯¶Rä4OdÖû ”dßa¿ mŸB—“ÅlpBÙ‘ לRámMïkâ>+Ø„KÜ!ü>š­ßHH,èCè £;×,Ò¬éú@±‘ýª*ÊpµÏv £Á÷%¢&/ÍжŒ(‘!x|î‰ãæÖl5=[fRi¡rƒ|WÇ zéyÝÇÚÙZæ54Ìýè ŸþAö"Ñ6&}Ÿrþ¶sªˆ„û–þƒL‡ ]fâæŒÒýNjΊX]Ñâ–çt_ Lùw£¼Í ¼«°Š–ËC*ɨ)T@1Äõ)¤ãÙ¸÷wI§]ûÇZ<¸"RêQ‚QapÓ ïÔ×§Ï‹)tç¾YŸèp÷gîZ>ÿ’íŽt„qÇÞŠŠêWæÇph„¯H}ÝC^®b豚$ÒZ§y¥Ã–Μî„;Ê[6Uæ4Îô|p,—Œ*z€¬~µñücÁ®<ü¶¾n¯øÐÖ‹ÝãýÕš±¸‚‹‰€;UÚtc ™¦ ï÷=ʼng´œÄ Ž 5t§þ³õ¦¯lN,.é@™K¤˜q€È/*háÍÇGKa1ƒyN›Ußé7Ø’HÓ>ì^ _p_·|}î6^Leö«ëö¹\<Æ1UOê É õüÚ½ ~ÞE«—ÚCgà_^ÚÆ7ÌÆ5äÖtŒüAÞãõL}?èá=SèÂ"]jYXD—›Dª_!þ‘ëÅë|Ò€tß®Ïé'‡Fë+þ¶Ÿt4U®z;¿¿t/®Èò`ot¥}V~)µ„¥ñúÚWÉæà¦Nü ‘’“ê°­1ü5nØOñl“%!ä8^·OÚѱÃñ…‹æ¾²GíßF!;T½—š9ؘ­ùé‹¢o,ÄžŸ(–8nvP=p˾¨¦}«}S8ºì¢¬&Ùî› Þç³ýE÷‚ô¢…›Gó‘A2Kü8CgŠZ•—2L²!tY6±›P¿3à|:ç$Ø*G;KHìä¼WF_—öI¿ݺ”;(5dÊOäQº'ÛµeüèyÿŽŸçöÝ;a&ÅR†ô…A‡‡Íã‹k„xßmÛ1n`ɨ:AöûVt$ri?îK|ÔÝ’EzŽ ²w/ù2v*DCor𩼰q&mqúrlãFaâ³XÔAÏ“F®˜›\Ûbåb †•*’*œíK\”ÒRÿÕîÝDõF7¸õ)…ÍT—Ðt·MçEhå vŸÝ :+º¥Úãðâ‰@¡J»²TwVžë<(q²ÇÎzÑÓÞ¢ô"’.û•‚·Meµ`x´¯Ñäl©§sfõ¼Ÿö×ý[Ç8 5 «”ʵäžÓ]`6"0µ€µ™¥oÒ©âÝ”ÑEæ>ámD4{ðâê×Ìo£7z»‘ÀÙü¿›>!k<0þÏ9¯2—¥+(òÓeƒ¿45£×—Û¸«›*J¿¡ýðñJ¬}Õñ==fÕ÷uVîÃg±½ò®Âsz1é‘,¯¯e<šÏx)ã%ð{¸É8gBªxöú]ôSÎ^.òÍ´~]6 JJûÞ)-ò ëÄmÅØ`Ë”´›x­M¾¹: GâßYîòÞŸŸ?¥šÆzQÝ÷–²8‚þÒÆ¿²¶ŽÉ¯#úPÙ±ú*WÀ%ØŒ¦xBé B¯ÖÍ9 jûèT·¥{†™ÀÍÂhëÎ]N2e¯@Iy¹Èq¾p%@OÖ9ø¶ÌÍ[‹î%i™|©eo©Qå#Ê}¢ÑÉÎG’ŒLTC?çî½<9o´,¥•TÿY­9ýáB8V*lÛ²ºû™>;SpAÆØÆ[ ÿ}ÕDš…›äHŒ!£h8ÇFf|_‘÷dëȧ®»6†õ¥–µMŠ4v8U*x\Ñ‹|©Á4tí\Lj¥Z8ØQ€`$6ÄØt× Õqp´ÔJ4æ|®yŽ‹}Çw3=¨_T²% èÜñ7ã •:έ’Dä¨×e –K`ŠÉÒWʺï›éÝn™bÙñÚ˜1K¼vu¿ÆøµÖ©;Ÿ«ÀU³r¬ù}Ý«ÎAçR®4yË]wT›¼¡,GµGÃÑ kåêY¦òÏ®­3Õç?Õ>cËù¥Åf©^Wðe£ÿRGð]ñÝ©­^x?,½Ùœnþ–y6JD׳€ °/žì§-®Æ½vƒ$iSÑ[Ÿ’õ´Ç³b¾õëlâg/SC,¢Ço%rV/V…Z€„üçßm•Ö ­ ¨6gÚÀšü ¯Jsìˆ{ZÃê¹fé¦Â-?´ðdÉ¢„±›p t—0,ç¼;"Ë–ªg ®ßûÐ^£ Œž9vó æŠ #aíTÄœ…U4`­ RT2c3Izs¼pkÒ?`aò½¾t%W-m[­J[Û†w†—Ë^uìÊð={…›hâ> stream xÚ¶P›ë.Œ/^¤X°â—âîî.!@wwwŠ;-^Ü¥@RÜ­¸TpŠ[¹´{Ÿsö9ÿ?sïd&ùž%Ï·ÖzŸõNè¨Ô4YÅ-a`Ô••ƒý5@RYƒƒÀÎÎÅÆÎΉNG§qµÿmF§Ó;»@`Ð×ÿt›»>Ù¤Ì]Ÿâ”aP€‚›=€ƒ ÀÁûšƒï5;;€“]à_0ç×)swˆ%@™  ƒ‚]Ðé$aŽ^Îk×§×üëÀbpð±üIˆ;€! s(@ÙÜÕìðôF¹=@‚€]½þ‹‚AÈÆÕÕñ5èááÁfîàÂs¶adx@\m`°³;Øð»a€Š¹ø¯ÎØÐéZ6—¿ìš0+Wsg0àÉ`¡.OnPK°3àéåMy%€ª#úW°Ò_,€¿gà`ãø7ÝßÙ¿‰ Ð?Éæ ÌÁÑêZ¬ ö`€ªŒ›«§+ Àjù;ÐÜÞö”oîn±7·x øS¹9@F\`þÔàßí¹€œ!Ž®.l.ûß-Ó¬\\VNv€7€[à÷ß,jæ¿«`ÿOª<Ô ø«Ø§)ý«`÷¿ÏŸáïÝ`ü7— ìI´`Ã4nÄÎÃzúâøVúŸ”ÿ?ÿfù¿iü ’q³·ÿãføãÿÿ¸Í ö^O«h öü£a s}J<µç°‚9£ÿ>Q>Ðü·é/$‚þ~×´üäÁÿ€Ü Í? ù|¢røäx¢‚þ>QÁþ9@ÇÀ'fçÀ'f—@^Ðõ?ó‰Êëü¯Á€ÜœŸ®†?Ò}šÚ¿ðŸ{ öƒÐ—æa ÁPÛúÐÎëZqRÖÝqáº]Ý FVŸ%ç.·[,”4ÆšœàuçKñ´Ï}8+ÛÒ bË”>ûm(í)êw¾÷¦IS»è‹“„ƒ%ûâ ähd¬Zb_}œ|u‚ìÛà?(Ð8¹ñc©á_{ôËz6 T| ŸßUÿZëˆq_1ͧkT:KWh‘;GLìÊJŽÊ„wâ‰={q9ƒ—?ñH©ÄŒîwÇõÖÇ`ƒ3þfÎ{µJ‹Ó¥‡„–Ä€˜ñotê•Ä÷7 D >eïbpZÙF8‹r¢Ð¨Lv?úØŽ+ö¢H\nD¿ò‡w|½ ôCF=ñ–é”lDùª¦/ëÙ+Üî NKýŒËBÀ1¸üà{=çv¨0UšE±|>ÊÞ½ÖÿÂ9ᵎA^E¢‹›§æbIo÷‰u‘ô@”óGþ& }\}¬½uµÑ4Ù墜g_Ô2ùº±W³{¿¦‹˜Å˜¢þìì Á‹ÄrºŽ—ÑRÞº›Ðy[¦,‡°I³³0åe Û• :¥ÒªÕÛL¿ò³¶sÈ•Ã#:xN˜táSý÷‰¼¹×;¼!xÓ÷j[wnï‚;èû%“ç–Ítç:wD¹¼ÇÇçÃÉByRüó'ú\:Dßݳ>M½§`»»‡M®Fj×+Ë|lf¹_ßûÔ®ÛrÊ¢Õ0Giñ ÕlmXË ™”÷—Áò–L^CNLˆ±bþ¾øK(YflÊU`#s¾µùø²ÆuŠÐ‰ƒl`.cÙÌfö˪>Sq8üÏi¹›´õÁÏ鯣oÙÃQj.߬ëj:s–=¥52SÏ{üŠh­ŬÚT ‹XÙ[æïˆm,ú}9œ°Ú 8ºN“ÞqZù-¿º¡í÷@‚"„Îë¯Öß(ºÔ^Á\&bZýƒ~F {—SV#®ÎÙŸ% b<¼MIò‰–º޾Áv_bùü\€ïÓ=ž¿X+J 'ÓxÌXáå:ñH|W£07zÁé¢ädBîyéE'¡Jo„ù…´¥ÕqDLt‘ qîœÔ*>Ϋ—Išz;Aê¶6e G¢,–tÀæë®ï¹è¾/_÷˜¬¼¸ñ6•÷(^´ »ûºP}O'”ž [#Óe._;q>@zË;3îâA5‘*GŒ§Ê$ <[UÏ™ˆ–‹• -·ÈÖånÅêêi~ôgzòÚoáý‰Êž&ϧõ–? N·Ã:.W&H•÷‚ÜSï +ƒsº–N„ÏXgc«–‰¶°Ý¼B?eWŒ¤ ²P„Å–É×’ÕôÉØ b^ióÌ/ËU}7òM<„!Ý \íQü¸ËT4¢›Ã®8"®•Y‰Ñ°*;9r¶¢5rœ¾cwÌ·ðq–µðݯÄ_MªVÙŒuˆÚS’VÒül ÏåuÙ}Ö¶>Éξ; KýŽÖ„/Qw=&¯AâHcÓ±ŠŒ‹µ÷aKÑt=ââƒòùå’¯¶TôZfå\ ÓØ!ÓÀÒIï´š§Cw^­3ÅÞ‹Íþ  Þ°É ¾.P  ¦ÇµgЕ¿î°NL =ÄäÊF ²÷³±÷8‡RK°Ìð{1G7Åܶ¸|·â[|uŽÓÚ;¤µ`‹ Ä‘YˆÆæqÓà/ÿâ‘ÑÄXGzRd£Ò–ò<¬e Çñ½ª$žÊZdkoD¾Ä kY¹êÈ I† ø¥™»åÆ06ÖB9¡ Ô1ì(þ)…µ%‹Å†ÙYO"ÕWGˆÁaŸô·…7pïÄ÷ž{¡´’¿è˜È8¬D …RÝÞ^#Ç–fÙ²]ßíJ½c`/#^åÓœâýìx\å¯iÜEµ£î»¶–™/èà{xw±¶>¦Ñ#3%mÀéÃi|Øâº+¸0 ÿᆧ¾ƒ;°þ¨H¬Üc‰n1šÙÕ+Pßê–墥o#_¼@áfl¹Ú'ô“›¿zò¢â"!FøWqÛež[›Þ¸°ìlÖ¬åÛZî{›¹—oÍhñ"ÞÍ|Kyô¶ßäIY¢h!»°ïÜwSÛ}ÝlË3£œ%ŒbºÕÅô*Ú•Ûat‚ÃÑgËÉaÌìÂÒŒLŒjéK†ÅÖÂöLóš«pg7Ÿ<:sô“ “íÕug½˜ÀŒ€l8NÈG¶¢¿Ù©’ÂQÌ_ÒVÑæpÕ?³=g:qÃÈqXfNíÜLe0q©V©*—ù€#P¼ëÓ_|Ð=80¡œÞ È$66B¨u)‹OlÏJÑa©ÚË‹B”s ƒ’¦=ò. Ðu—gó.¶Þ£dV~«òQ„žÒ6uHyÆj!"P2:ÔŒ¢ìÁcª?ìT’ÚEy‚­}³µhטê˜0+H¯¤÷3&N¤ÄMö,éѤ_âôÊ?&8YxÓ]æÜuí´}øS½Tsþð°ñ”nüX¡NröãêOy?¥ž„(MÃîê[Ŭõï)eÜ JýäG©{Õ1éøùl¥UÔD|ìùöé¶:‘íÓõ`ù;Ïá^¾€_t2<`¯¶¦&†Í 9¯ª`×ÙÂìÄ#›Û›2)§¢Ÿ'„n4Øý Wù²g Éj6Ú=À¥ýig\SZ›Ú›œ²øH3#Còß(U.ôCÒ–ªWÌÂ0®±¦²ì_ædò½å5åTÖ%z¥@ë;¹@ÏÚ1¶Tq$—£QsåÇE;PÙ:>cÞiùÀ†Ô.T—×ýR}}‘½ïŒðÇH%²îBµ9d›ó•0N£'†ÊeVTD÷>}¦‰’›"6ι?¿yh ŽyÛŽéE6C¬™d )B^´|‡Æ´#GBÚ;O2쪵Å Z‚(‘>áARqÚ9Û“ãk;ZZ›Vª2gͲ“(–ª÷…‘¦·7[%ðÎ’«¡ÈÊý3_³ŽÞZ¢Í÷óšXî‚¿ëÕ–y ÜÐäÀO}wˆB&­¯’V›Ö—HV>æ³Ö0ÀÐK¬¬ÅãÂr âÞ¸ÑÌó¹Ü»*~,fFJ¿d”9d|ýŒâîMžØR4Žgmh]Æç»1òoõØ/Ê×ñRK#RAHï«›‘ÏQÅEúçÒÑ5^…dù t%„Kjv(÷Ôµ_|]Æúþ왂A:ÁДÐKYUmn[ËêÎKþÏRd»Fj›Þ–J®­×éjÍéC*…|éWœÖ•ÕõÚqeß‹ÿh ¹$fPfƒ÷Èñ‹å˜97§ÿ.ÄM Råϳ—¦”HëÛ{Ãu·õÆKxý|¨+¡pîÞÝ EZ¹=ê³õ&¼<ñl«ØgzSœ[ïNÍvõ`RK:&QuPx¥Tk 9ýÙV/¦æóH"ös•œ²)dIѦ¶ Ì iò˜&K!¡Aå¤Íï¾|ZnÃVºeÑ– íÒÇ èÒÃ/ÑÏÕZÙR‡g¯jVe% ú í‹SùÔÛXìÙ•u"îÑ£ÔF(ˆpqš2n \ލVð˜[=!êJg£Ï,¤Úy¢UFjÏV’=¿ h£†ËäÓy!†Ù:„Bb9év¼ÍB¡EQ6˜¼ž@ë4$98|Ç’Çh!h>CAB[Ïß qˆ!ˆioaúüøc{Ýa„âbÅ&é™Å}æ;Í}¶ìoy¸G ð›sgïæ3¬7¼•¼Id³PÉãþõBÓ¾ÔAf²á+¦¢Îü œú³dŽèpu•Åû¿üTh‡Lx‚¼ËÃW‘C·ª:¼¢5tDw^M’pUÅ}=·ÄÞÕ ^â5± |‚˜}:´tÈWÑ/ògáâs¨çUͽÝÛÈ/o;¡HÕp§ñ§Ìðü\›.cw³h`É÷Õ¹ñ€pe’dír#ûN$sþ€Ô‹Á¨õs’Â,ÿ5™?…‚ cŸw=¥ÌÔ=¬ÊßtÉT|i½© aPˆ£Gô›ì>’  2»?e<,î¶z RÂÞ¹GaÛF5ÖC_O‚ä½qX>ªnF0å ‰ ’Ì®ÇòÚ¥Ô¤ÁšjA ÔÔ[ìÙ/‘³Ð‰ (d¨ÿy[d/AÉܧc÷ú~Œ•/«5µ·@P?÷PâÒL°>2»åÚÌa³Ì]˜ÔÜ1sçòS©4F¤NPü2±½@‚Vï0&Ñï º²¾f¨øÑUŒ 1?Ûõjì+h8M6UôŠ„0rÝù¯Á­%c¢‡…ˆ×ÃÏdù¡·RN©[ûÈ÷ÊÅø³ê 8ãYïM´²gš0?ÚZýœ¯éÓ^”vÑs)ÑŒáŠZ²íSÅ+êY/g¢Æòr§‡¿‘{ÞÉu¿dyVÝGÍXÒ̰—o¨®$_öAÜ¡Ø`~Ç9+•ìhöe:îq/øÂh¦æzÊï}²&qF^§Ï!ð;îÖ=Û×סr­þævÂÆò\l­âRàêÒ<‹¡%‰û*² ½üulx©@hÒ~³OævŒx'²¦ƒnÃ×ô@cê˜gi÷¥ÝHš[²e›Óœ~­{-½ævÌ.r…(ÿô[n‰ÈS§¡ræ /»b+’¡e¦àCÿ¼'*õÇ®NüÁj=n§ «^c{5ÉC–̃é`¶ò£{ˆùÇŠñè(áýÙç̹Ás…P~uø÷ü^jÏzÇnO±iwžaØ´º§ÐA.µgù²’CŠpì•g×"Œ—äiÛì¤j·S1ó$QÀÙ›¼&¼cÅqRÄ7R”-ŽŠ%Déï™ÀQÚí0õZ™2”QU”ÃãIC>„[kø­Œû“zÍç>AÆ©›cxfCÍâç”Jb¤•4l㡨æ{íE9 ªRøH…'ì téžüI„¹Žg÷ÉÊÔ‡ˆš øNÄ?Ruk3rÄh¦“~„y«ˆW "…çï77úDZ!šN¢.Xˆ{Ô>õûG¬ºÌ4­ÒØÈW† q&èsc‘Ót÷áBÆ¥VTrb‡. Æ$û/?Pv#q¿ýò+Å­ðFzÖíB~Šbq~ù¥bø/ôãðÃñäJŒð‘оÏóäs¥Q×/Ó@UÂÉF}<¸Ç¬¯œ^eÚܨ«~ƒl§Ž×þV¦Q!ÕZ}µc—¢K;“±¿ýÞ_[%÷jOFj1cãY å[£dOÂÊ¥A8šHš‰"ÚùF¿fžb&ž ¥jù*¤üÝ–ÊyŸr¿ˆnŒºƒ;NgéŒî-MHp‘,t,oÄVÃáx–ÌæÕç¯Ê2Fp£iê³ šØÙ Ljt"'=ŸÞ¸?F·òAg³@ClQ=ˆ×§¶3ßb£Û{Ö½öp¶ï¤»˜äHeÒ Ly.ͱØLLäúÜ~Õeu72P¶apoð#_á•/ ’§/JÉ -£?2:®y×òfë°ûŽJR–¥#j;H/e£Ÿk3dèCC÷Ex>ÄõÍÙY?#¼/ c̽3rƒ¿ žŒøzíep|ýéç«|ÅŠÙÓ gM¬XîþxMÔ‰Ö‹¡Ua“:5®1§š Ò‘å<áë;rß.£J«×ÀõÆÅ c拪©yŸ”Qñ4å4l–"ÝÔ™j8ÕÔKÒ\m<Ø‹¾Ùè)Sk¾»¦–H'ÑV8ãªs0NÌ©i­¤g#U‹QùžsO®jLo±9õ»˜ç\I¨I¿iå›å1ôÖ…œx‚«ã2oo¡s~T·ØoÕù~Àß~gå`”•ó•yÈó¥Ý%-2Úö{Íã¦Ä ¹ %²±@ÎÜèŸèdæçÑ•*k¤´×ËGLDûu^„ì‘_¹9íhûª];DÃX\ë¦}él”ÓϹ7öÑOÐÈÖý¤H½7º™¸ClW|×5¬Žp3VrÓæ¦•íèEµÙ(Üëû“J…øb¤$§qÈ.ó/ëCdß`;`Ƹü¢ˆ° ex-‚8S,©™þ¡ =[qˆ=µµ™W]2‡ÁìßA8&kôãrE÷Fðù²ôÛõî•úð–¨ÍpYI¥±º|ã–Öˆ ›45OW–‹”GˆÝq¥]òŒVV÷êî”—kZnàIÝ^ZŠyìJ£Âcl°–1I Ü=»YÿDM5Ý—B¨Ýe“^ð˜ë¡B7­XF°ƒÒ-+ qËÁa~µY‰ˆ{ún?‹¬iHhMxÕö½4s·ÊDìÎ:OMÙÇ®*=7e|«Ž%ùƒÖ¿'uÇ¢(-ð«ç WO1>ÿ/‰©šÔYä» æÐEÎÝÙ‚Ÿ„Ðf,\?·"Œï‰ˆ>ßä<ÞÒƒwuXBIíD|ÕY\{KŒ*3\2'ÞÐw®\º®ã"ƒDïx•.Íò—Óp)W0mk!{McF þ‘B+_M­\:“G¹]b¨ci;=”žÊ_%ǵþ|$ì82\¹ç¾´£ ˜º¶~¥zÃ2×ÏžñÁæ|}z²D»ž]C‰v´ºMÞÞ–Ž0:gT+ïr>Öw·¶+ôf0ØEÉ2—’„§¸º{·‘:0ð~9h§¨‹ç;oï;ÞÉçe˜é \«%É„´¡¶ýç%”+Í5>%Ðm+±}5ªjž‚¼@rÏ\G§b‰gqGÆñ34‡Ÿ‡çs÷‡¾éCï¾ÀéôçujÒ»EÛ47Å&óè*°G¤µk{ý˜5…n&'\þ:ÒD·7Þ%Krwa²>8©c¥I%媛íßRì{S}þì’ø!ÊZE iHàüQOy('²å…bçÇõÆyœˆc<@žYPß^F²Ÿ ö{q6‰gƒïg•Y²ú‰#˜.0¦ÖïF²¯ûÍÕflZWØTÙ8QÝ* §'³/Ÿmç‡YÖ×N@ ?\cGV/Rgȯ \+Þn:ü3­_ªîj?NM%t0Ø·ž£ˆ?ô(²†;úÓ+ %®ÚÈšú-3?YùU}¡É VÔ£ŒÃ=<¬Iutƒb/ã“d§¿|@·än+¿ëáYPyµ$|#lD±X}™#­F¼í¬u bºaàÚR—‰36O¢Œ¹ëC¾a)Ã÷™E?óÈ·8CÀÒzžfá6<$z!´}Ô`þ‚4´,ÄçKCIœ§ÝÅzã¶C^iÂ`19ìr%R%¨¯mó­º :sW|ÛcÖšïžúr•„H¨Zm)ÞS„ïC°o?&ÇOé#W¬Çb©Ü°®Ù~ýA•m/4ñÀèGP+\,„3=lk8t`˘g˯¹Ÿd›(ƒÎˆÛNôt÷ŽVÉ©{Ñ~#%mݤÃÎs‰Áù†Q!šgƒ”;HÔ3ð%%¡ñ‰Í;”^» ýu‰]û/˜ë‹‰ödè|kC{ÅÄÏ÷?¾RsÒ~F˜u?¯þ©¸œÖŠˆÔ–êÕ"ô½âĆ?àñÊØÜa7E7 Gï!Æùm-o³Æ^3ÀHžVÅc‘êÚÕÌD飿ƒudרìÍ·Éå€æÖ ª^á%árÑ/¡&/•ï;³Þ’‘.,ª%{ÏAê[ñŽjOîª<¨î$`‚ëÚ®YÙ ÿ€ñó0Èš_Å-Kä[0°$Æ 4 Õ“[]ÿàU) Ðò«´RëçDâ“G÷o/QuúÝïnq¦Ú8”}¢sKE¹Ð= J숆`Ë Ã¡zt¿%7ëžK¼Ä:„™/Dücm¨+l¥WΉ:b¼ÖH±ô¨oW>t©°}ä-gÜÜbïC?ˆG4éJ.a¶öHJµ”¥y‰ÔëÔ½—‹‘*7T&~cjên¢Üè[Yyß𱚱gnÄïrœ‘,Läš2¶V DUµï7Ï#}€±ÅFr…1EKdzëdÒÅe ÉÊò«c}'¡\ ¸tqùúñ|.£(ÖVüêǃáCƒŸ‚SýO…ÁÍÛlYÝÁóDÒӨǨ3˜è;ycœž8ú®)IC@ðjp‘TÓâ|‡ o-g]¢¬èËÆø//=°Êþ(pî$¢l7PaLàí1äõÞêîM™!¦†¯F$¦Ôc]Jòhãˆ`ÜL{")q9ÊnMæ{6¾ñ;”—ÝÆ›Ü+ô÷ñtÕvL…©…œ‰uŒŒõÞ“ÁÎnüº½XÎæ²˜Á‚‰à›Íµ½d¡>ý$ñ$hqy'·Îê1w.KåuÌB/R,Öâ|”2ÿ˜Þ€ ¥w5ÎÚeð˜€h~Ž5*©^¦ÒH®ÃвȫÉÔm>!­]¥q¸‰Â¦x«{z£ÁpüìDíµw¥©«K"¦SËÔj8 ñ|¸híq\ê^õƒÏß­Dy¼³Õṣ接1O×+¸Wʽ=«XÝI „"ÏuòBäGj]uÕP¿KÑš&çôðV‡®4¥óø.¾Ç ÉÄ"&Ûs<÷äTÍl%ËwqµJµërM·û\þ¢ë¶Û,ØÒ¥Û§è¼ ~óëÜâôþ'æM&.l«ºIØp|ŒË•½±ˆÞ2àSV¢µàí]à2•>mE¾ýòñ”&ª:™Éó6üE, @¹qÞ5ßnÔ‹NÆÖK$El±?RQÞ*jðš ©þ…îùEl9mSߘ±ÿÍM­'}å›Ú¡¾úd›‡T‰ìLZܰ 'ÏÒŸ[Àk H“ó‘`Èp)R™­‹E¿æ'¶ÔfÎÃbn-ú¯¡pYä\^Š—Ÿ ,Õ(®° x5†Ê¸ùOè#Â7œj¼^!œ^ ÌÞ_áâÓ…¹0ÇÌb+ÿ:4¹W]™ ËÒª6ð¿CjzÙ2æÔÒžÎ6•މv÷Švò½…R³Üqº»Õ'…SÖWñþñâ©V¸áêô´•d<]b˜ÙKáð§—§ªÐã)^k%¶.a1qe0&Ù‹ Î©í …²=ƒÉ¯¨F_DæZ =ÝŽ Øž‹ÿ˜ÿ›Ã<Ë ZYjGS‰¯'p/e~ “´1â/I|dšÁÞ²…x#ܵøè •×OQÌI¿a»ŠÀ£3ba‡Q×3ìò½¸ËGL.V¡rËÕh9\gµlnK|Áá ÒÌ*-à2Q g"Ã4û¼/×mm™5ÔÖÌ&¤{´hrE…pe·M3ǾÖjxr«eR~ª…Gøv¼wíªiÊ•}'Ôø 84 EýõÛiù•s 6Ä{‚íú3/š4¡`]Ñž£v&¢ó9¸Êœ@?I¸žÀ«[ëY(FÐã‰y;ßÍôʈµâ¿>ÆWטƒ(-ö½s¨ÆØ- Ûb½êsWýLÎ,PÇtÞŸƒ@öÊ\,#0ìvòe…ë+ ‡EJôeçtÅØžÿ³¢M endstream endobj 89 0 obj << /Length1 1373 /Length2 6090 /Length3 0 /Length 7029 /Filter /FlateDecode >> stream xÚvTlû7%1:¤‘I(½énI ©1 Øcäh”$$¥Q¤¥A@¤$$”.%E@RþÓçyß÷ÿ¼ßwÎ÷³ÝW_×}ý~÷ÿuc3QUg´\ ŠBÄÀò@uCS ,!‹øùÍXOø_Zÿ8ÆFÉÿ/»:ÅâuP,ÞÍêùz!@ˆ´©ÍÐ.X(Ä+<08Êà‹r†c€øÚ@3]àm/8ê/gƒ¿D€_ "ùwº¿£'B þCa04Ò Š D \.O8ð¶–6+„¢œ;B=}Ðøx¨á uÂ;üi ÔR5Bñóý= ƒðÂúˆù <OúÉš(gu4 Ga}¿ûÓ@`à0ü­‚þ¬Õ…öGáþ:» PÎ.¿GpöõY Þ¾p]¿=ð*Àt®p,P ËÈpo <æúÜ<Ð þÇù­Æ÷‚óB{]ð#ÀC.püçõƒ±_xîþ)  3†:Á](À²ãÕp—¿düæ1ˆà]0x ø÷çß';<¶œÑ(ÏÀÿ¸ÿY.HËZ[ÓØBøÏÀÿ6©©¡€8Qq ¨¸ˆ‹eð‡f1†"þîüŸX]” (÷W³ø[úWÃ~o_àobÿ™ËG,(ð€Û‚¥À0üäÿæBþoèþåÿðÿîGË×ÓóUà·ùÿ°B‘ÏÀ¿íx¼úbñØ7Dã€úoWKø_t5„;#|‘ÿmÕÅBñPE¹zþû>Zˆ¸³1 sû *é-~Ì‚£}¿ ( þ/žU0ü£áƒÇãOš–ÔDÁÐοÙ%.% „b0Ð@~ÅxI ˆƒàiè øƒ` H …ÆâC€øñB€.h à÷>%å€ ü³ô[ùGÆ×aýÑä‚ùb0xšý¾‹É8 ‡Àa€éI4ìÖ=÷×÷ÞW«rø‹®)Žñ¯Zf Šâ¦1-¾§4dé‚/s"ç1GªéýtŸ—5Uf¸/p›oÈbšRMšÏ‚ÏRLGW›S#ÌmªÖôpQpŠš«¬_x߉ð n$lÓãÏ÷ö•¥1.d<öï֨驘ý=¹j²öRZŸò¼â£h¢E‚mDé8ÓÓ VR¬(¹Ã^íøáÑCÞð%·^Š0 d+Q¢g³ žt2ôå¹¹¸O;› +ñ!ÇÑ8µ =–O¸²â¹¢q[ß’8‰ÏívÚ¡“K2 ˆÙWÊ}Ä××\nµQ6  D´c«f2ž­]ˆT†UyI­­ŸƒóúÂèvp“\ u¯yÚΟɨ¿y|uI:.\÷:»¢âáÍ4î=̃?n¥ní¶ŒªëÑ jnj-Ã7¡=. ä5¡Ä\žëˆòŽ<€~¸£UOÑ9…sªˆž}eí}6‘½a»HûB@Ð: ûG!ŠýZáX·ò1"÷Ûþ-Ÿ½·ˆ(öÝq;ÑæE}Zèà¡5e†Ð rz-i,˜l%mÕ²ÇÝš²“r1Áþ¾êµSBÖ îsÜZmB‹8½×ß$)¨UrÂè×ðþèI¸1ÕÕ2æ©äv/„GJƒ£ûîÄÞŠc{vm‡f¥… š|ç[­å¥»š‘˃ŽÙö†(ã~ó„)Ò¦’P¾Ý¯t/¨û}5œ™¢§$’LÈ2ÕØlÌ\}%©6rË:JšçGN~å%@¦8>.X-z¤Ë°Œéf7*ñsœo„Œ…¦nήš?¾,½Ê§Ë?té½ðÈX—·FÔ!uxãN€ÇMg@Ï–ÊÜÛñÙF›y=i·ðÝK3Šnª3ÕóCHåéÚx“ÑN“~MsL`x«í÷mÁ6agA8µãÊ!Ìø¥Z®‡½Ð…@qþ¸Îÿí‹ö“›¸.ȧvç!Ð@+LkºFÕm›ä2Í~±áäÏŠ›©üöe- ñ;í ,‚ ­ìO¿}ìé]˜ßÛFî6±¹4±‘]aà4M³:ÎÅÕ› @„G+&ŒIÞsFRéOr!_q¿*ÎÙ;Ÿ¢¶ÿÚ0é§Zó€Öø¥À]áǹµmU¯ JÔÿÃòMÞ3²¾Ó ¥€õΊ¶M©Q’¨´ƒÝëþcö_S©N˜¦º‹§üÒˆF%ED‹"áßߎ5‘+ƒLã–·2•“4j¼áÞôO+9ÉkD òËÈ4·w€|‡Ÿ³™“ …$Ðo«²"­Ç…Á8a#±Ó‹Úð¥áØØ›Šùõ½ºzgœ]»1ê<>^¨Èê|ñHNâTQó|ƽj“HòpÜÆè½8€àå¡~¨D“ò/Âæg;¼oò£Iä*ØoÞ¨^|bHC)òÙ¾éË¡µ“3Õ+~_ö¼: )ÝIªpÇ^ß“˜{(èÎÃÀŸUÏx4‹eiµéŽ ÖzVºë»[ÕbÝ[hÖ߯w™e9&ÛÚÓ²_>9.¶ËåƒöXÝ4VwO›Ñ&S… ä¬ùØœÎ*ê> ¤gíÒÐæ}ÚäÔYsýärNÛ%¬XA¸{]øc—*ñõåc‹ôYJÅ»4Ú_ìŠú¤ä^?© Ax•BÈÎòCyÞ·g{(èìrGáé¸Bót‡ØY—!Nv‡¡½”éíV¢ì»˜å¸WCéÇJ+•´Ü’7ȵ{”1ŶÁÒÙe4û áþ%¬)Ÿ»²Ô„1ãjɰõÙÜ|‰û~€ìÌ…ëožËƒq¾l€k]…#ª×ÈfÝCpÞ–öjå7Ÿ~¸`dµ.&èsC'-»M7š-*ø2œÌtS]meÚôpW×¥Ç>D¤ Þ,O¼Wœni˜ÉïÍÜLÅÕú¼TÜ@ÚFFD¦·ùÒ{Úk»õqO‘ªœm.pf&ûP4ŸJ_Mæ|Eâtjq“AèyÝM⊒éUå•ÕMT›j~#.'·ú1·HócH,.[ó(vKlÒ4i$ÉÖä1¿&ÀDàϘÝè)6<¡« nË›][´Õ$ˆg«Á.7ˆÞÌ“?>ôºØÄn~¡`ŸGoÓ*q¥¿ ™/ëÍŽÚ;*w5WŠeì`Gué³X5ÇZv(ãì"]zN×ï|«šH­œs—¹u€ö·ÿ8äÅñnm³¬•rˆFœ^ɯs:ÝΜ½û]~GçÅ[²qU+¢ÍÍæ´îËÒŸ®y µÞ¥l]5j•k“ï…ÜŸ5Ñ»ÑLê&ܤâ»Òª2#‹ygòWxyÕÂAÔ¶._W}õ`×2[hôóV÷ž¸¥%úØ!‰Ò¤¨¶×…x0;Çõm ·lew¥|CwVïÊs k«‡Ë¼Öæ1¢ŒŒ±‡mÆØd!Ù2U±*fÃÁ[GÃyÈYaÅêŠ;ÝŒ:¤–ùÆ# ûÁgDù^ÈÇ`žæâV g™õºO­l}wïXå•`[^j½o ÁLÔ6Z‡æ½au™©m™à¿ÚuÄ}x_ÛpÁ$t\1Éx`WcØ“`åÀ€ÞÜ«×ú—Þò[¬lÎä©üÎ<{ê×å²yù‰SàPen~ÝÆ€­”¼œ•Å(Ð=žÈ4{Þ•×n—ÈÒ»6gצ¡,e¹9üIÇjl,_øéÆn Onùækw^áÞ¥Þ>ÛÇ“¸ÔÁ´°ÀôõŠt»‘ÚÛÇ%ì³þšðG^äwÎ~œ_ŸëÚÙ8?_Ï×Ö¢[לïèñ©Tï>¸ÖÍ’@)ô­Œ½5;Ðù‚ŽžJ?vøú~á ¸jcSâ˜ØÛ$SL«ÊËJ5£@+ä蔥Z =]H‚¥Òø˜xÐítï5’ÒÒ0ïꨢž\àý_ÝþÐþÏÜ|¥J>kdsÛ‡E¤WÀÕÖ*e'M}eR§åtõ8Ý–¤)"%ÆWÖ#_£GÔß|ÙŠâVWlW;QÞ)zÛÁcK_ èpuè ­;ûé-¦ D¡? gšKßB([Å;}Œúr‚ý ÏmÿEÌJ4>sYo0 ݼ‘jàl3r mù#›^lS²4)Jl§ÙžP¨x„«†y@c:x×F¹fûžÌ½$KÈá *!j ãeÈ€»ÝIÜe^+ãqzþÒo”¸¾3i°ç);\îbGЃ?ôãÓ“ âoÂ*âë¹ç(>sÎÇä?@²2™‘*1uˆ>M˜â NI¢º6´t×B¼:Sø ÝñP«¢‚®B»qî½ï¹3ùEKxÀ_‚ñK^抠©-/WCÉI¡\±Oäw«8ž×¼NK´þĸ\A´V¸Ñ ‚Ewò›ÙïòMâÇS°Gœ'âŸÌgP¡;bÛ•QÀ{méÁ=×÷Xç“~y ¼ÐºDP˲B¹çœÖ'ŠXÜéê®ìVKîƒÝZ&Ó=ß½'ö[vodÄy£_´Åì=È0­Ö›i27KU¥ßÎÙµx/¯Œ~áMUCgiKûëýÕï«ÜyÞñD%,,Æóï± ‡WÝ—k;{MEü^Ê< Õt"ˆìYk²‘bRd?TêÊ>É${¼×3™Ãt\Ä{µÙÍŒÁTµfKI¼{Ž4Šüö„²'-÷œí¨Æ·ÛÑ1‡¾‡Ä’!ܳ½¹¼åTÅŽFm±§`£J²HºfõÕçÓj KŠ•®›ú·i  ShËõíë1㩎z/>±É‰Åôš ”BÈÜÉJ¾{¢2 j~:žºœ 3‡WD²¾˜ ¬ðmŽ×{åî¯1Ì ‘ÛëÓ··”1¸$¨ýØæ¡³!‹é cÙR%0÷’:߯ü:º|‘ªå^4ĵËÕXÿÑéû•:ß Šº³¥;ÎhóF‡JM¾èÒhà(ƒúf„Ó7šº¡‡É¬‚¥¼¾¿àE_È6„ é¤=!¤—×Bâ(„Ù¼©‡Ðé¥ ‚¹nERÕ 9òñ›“êN6 2¹’_q¨|=•Æ9ŸÑÄõÔèÅÁ©kô^LuЉë¶ÛíÜ#n­„ƒ™f&â/WÑÔ¾6³†­$~ê¯ Ì£Ñ#Ì¢–¸{—‹åuŠ=“þGb# >=¦‹¢\±ö‘ê¹/. ‚’~¥ÎeÜÉsmZ¤ Ó™[{w·÷Z§ ~íÇ ·¢p[¬¡<7ã?§as›ƒ¬:®‹YßgA‹Ôh'ß {!‡¤“зYÛ/Ì»|,È6nFd·ÈjêxߨjK«)×q÷ô‚.áö×™n”ŸÇ9”o gÒL«¶vè”t옇Ñî麵j÷#›Ò«¼€3^Œ4×åê±"ÐrØli ÙÔ£Œ‰ç…3îþË€ókbôgÓƒRk”°‹…ÈÁ™-Ïu_‹2–)¾KÔ3 &åCÉ)!’1ôJ6µ6Î~Û…ef‹¾R%à|Ä*\-¼Õ¼JÕ— é#^8ÚUVWÝsª½J`uÿ ½T>&gb°^pÅj¬å¨‘dK’{uÉægÊkÁçe½"KîÆÐøm¨äi¾{£Ò·P¾_ˆø)æ‰ïŽè E¼bVY-F] åã:Áqto/gÐuìxõº¼B3hFÁéõP%”òG`Ðṫ0ÃküœË á§ã³ -ÉÔähÅFéçèWeÏYöOžMÐTq¹Œ:¤&[ov€­tÊù%«… guˆ±þÛ¬À‘„Žä!'žá?ºgÞBCÕŠ.ì`)(œp.ËiøG:¸«ìI4ú¡.#dŽdÙ–™ŽØ­‘ÂbÔ¢X‡p »üaš®A¤Éäyb›àF˜ÑÐPÙ,ór…¾%¸[â°L-äx»”\^ê-eœáVî“å”àãU£f‹ÞŸI›×yç©M>¶ÐªWgäê¶C×Ð?)Á¹$ñK|úFTop€\NSìö„ܳE²}Ô8¹Öé ‹> È…9JÊ*~¨|î"çU†”M•¢³êcu%úF—%¶®í\¸Aó œ›]Uoý*¿$…ÂìHh™çØ$£ƒøÀvše­{E³³áí®6î‚øU³Y$¼œ£“§«ežrX±IX!—ûáÒï|?Fyžj5½`ÍeBªÒEd—}ø†ÍXÜ­ôÉr3RÐê»ßl[ª5 ÿœxZ¸=õJ?g^®Á ¢ƒ1¡Jˆ©Ò±I4B.üЏc?3{—µÊ½gäìÎþK¬mÂÏw#ûÚízQ.žl[«­›ª÷]\” Rêt|åÒKž®É­éuB’» !Æ,Îe>ÃŽÊ’_È%g>²šÔ2>p |mÒS ý|^K-À±ã/kûõ±­Uî²j_[v˜d¶ã»—ÛÁ©~ÑËQ3â6Á‡”¹÷óœ[¤IÄd´š<Ô×@ )=)çì5VxŽv׫¸Sö(ïȪŒÆpîE¿HsŽùöù\£Þá`Û~âwdÑpu‡-¥.F>«CY˜Ú~ÃMUq*ÏäÚk£w Óš‡¨¼’Ó–dÈ™ZõÚ×Ç,#9 Ÿž¬w®‹ÒŽ‘kz¸¯ o~F¢_vzððP³ê¾ÜXÞ­ ¤õlùzh°‘†×‹LsNsiþïg#:0ºó¬{Å~D^ÎŒíU P] ÜÄY,gÊu7û]¡D×höUrz²b;…@îü¥}M墄Ó.¿» _…¡sÝŸ¬À¦Oêã÷–°ëË=yñôQ£ûÞô$ƒŸ%³“ù ew¬ýj:ßéÔ‘6²˜#Ù´1”ÂÊ+Ë¥ûW”–|p{7ê«ÊU¨­‚è©VÎ^ó®0èèkð'øÙ„ZÞNT¾C.Ñ#AlD©u,"Gn„,p—‡Š§¹ƒ|ωÍÜÌÀMÿ’0àf—y¸îšó´·&óí¦)‰£‰¾ì+nÛã½™ôp°Ûaþ+`¸BÕ¥,SÁ}êÀ¨©w¹ØÛ·Æó'[Ñö/z!s÷lïóÐU«·j9íþð44! JãnX*ØÓ}IP-ÛàâGU):=´@Ä?“[|;bLÍüÎ#òYkáv/½3À|ÿk¤W«›DtY¿õý h¡Õ—¼N’Z!3kƒ&5c‡»‘:–$j Ý&®.k@ǽVÎPú²¤­»f‰‚Hˆ½–)~ùÊ¥ì ¶€÷ S½«¾#^öÝ­*y}ýG$—èD® …B*¼^tÞ7JÁ5»äk†Çª¸å/¸Òˆq9:óôÔF1°–=ÇP.­ÒO±û`š$¥ØÌD»,˜úéXž-\:~Ð⥙_mKÆ BôCL1+4:JJù9Êùl7ù"P~g)¢8{ånÈ2¶Éž½˜ñ Nâ‘õŠ4'ÚÈÂøB‚¼‰6R¯M¿ÕîT±.XJ¼Vs09L,ųòƒhnðWý'×qûG.Y›‚í,‘DÍæ¹ÝŸªoà·Š;¸óBËôÂÃ޵=ûôÄ!á &Ãm¨ØeE4†íE³¬¼†„1RTmÐw$u»[3x÷Ÿºtˆ®GBˆ<vMSãŸìß¹R´.ѱ¿ì$CDE%~zßKg·ð?Ç1P endstream endobj 91 0 obj << /Length1 1902 /Length2 9690 /Length3 0 /Length 10869 /Filter /FlateDecode >> stream xÚ·T”‹6 H£€t3tÃÐ)HKwç 1C %% Ò‚t7H ’R‚ ÝÝ ! å7žsîÑ{ÿ­ï[³ÖÌûìýì|÷Þk ¦—´ Ì ¬ƒÂ¹x¹bY5^ äçù°™˜t!p'ðäØLú`7w *öCÖ ‚#dr 8‚¨ƒ”=œ¼ü^!1^a1 ÀŠþ‡sÈwk7ˆ ÜÛâô«Fž_nm–‡ÚÈœÁP¸;ö¯üä n`kDß}xþy¹ŽP˜Ô÷?ȵ±ýU†‡ âêV’û‡ƒaÿ–ÙáA (ä€]`ok{ž_t}\À)y‰5øûºÀ\¶ˆ2Àþ[0âÛ×ä ÀÝ<Àþ¾*þaóòl Öp€ØÅþí!Ûþïß â 0"Æüõù÷É 1a60¨“Ïoú_¯˜ÇPQOÇÐ㟒ÿUÊÈÀ¼¾\B¼.>A @TT ,( ðÿo7š È?iüaªµ…DÿÎѦÿdìùϰþ³l€ÿö¥C .Àú{ÎM‚@kÄïÿó´ÿeòÿ7俼ü_çü3RðprúKÏú7áÿ£9Cœ|þa ׎X5b ÿK5ÿ½¹j`ˆ‡óÿj•à Ä2HCíœþm$Ä]â ¶Ñ„À­íÿž—¿åz¿6Í kÂÜ!¿n €‹üb½¬÷Ã1”©ÀˆíùïòPk˜Í¯5ã€ÜÜ@>Ø@Ä,ñ |yûhöþkŒ<ÜPa@”ç°…¹aÿz§B¢ù_¢¿0/€Gñ7ð¨ÿ‹D€Í߈À£ý/ð€þEÈÑCˆ»ão ™Õo„ký/Dè¬aNˆüëBà—ÄÙù·Ó_Íá±ù"Rÿ1mÿ€ü»? ÂýPÀù"Â;ý¹9ÿ†ˆeâþqa¿óDpþ5"—ßj„­ âÆBÀ¶ðßRÞ¤oÇÄüˆ&º€Ý·þ‡?D!®¿)ˆ:\=`p°•Óóò"Tn@D‰î@!ÏŸdD(ß‘¦÷‘ŸÏ_ð¿FÍÚà ‘3ü¯s€˜Ãÿà¿Î;ì ¶Æž‚Y‹‡:Ô…¶]ÕJSzqm~F_^mJ0ê„3OçùÚ«bd(Ž»ÊXÚT‘ ¥jΔ‡MùQ²]x›ve-¥<Ë…#É÷®Ë|ãÊüqÖe¦±QØ §F­?>NԢƳ4A5aI2˜º îæß®Þ*ºkwß6Ý8J.ðéR(á±Ò9íû(ÑFtŒ«ðOF¦øqn&iºJz£w(ѸK™¶ò>ë&q韲úzSùO Tzj„ªÂ ɉž+Óå ½ê''NÌRnrGb–¼-Oâ?þÚƒ”7ô }üà¡¿•VϹVvªçƒ¨ï­ Pìë7&Ѫ6Ç`RˆˆÁؼžXqßã»ZQËúf[âêR‹ ôÌа´ë•Yø½ŒùzÙÇ·„¦`ŒRH´]ØN Geߤ¯Æ%¹Áó@Ç”¿J\É_Jõ[f~Žï+ì@¸ÑÑøis“]¶(Eö³sg! cIhpê÷êÙ~|Y[ƒm5æQƒ~ù¨YaÀncB&²à­²;N£4 ðÌàÀ0¸´Å ê»/áJ£®{ýŠTŽj§Cäh¯<ß[ôk |þ9üï>¶‡†‹5oË’uãÕó—‚ß)’̳®Ÿ ¾ˆá‹²ò&©mÜ/|j±þ4í9–]ÉRð¬ÙÒ™óá˜òB›võ}`å¨-°÷òÚ„ž££“m·¬¶ŽébÀ)ÒJè‡1/ Áò¹°¢w&b©a,¢¦íˆò^”q-sÃn/?ª)¨Àrž uô|u¢mÍÕfç€]]°ìÝ%`M°«ÿâk$š¿Ë‘t2“%GÐXœ× ϳyÛiß6ùC«õ‚*Ý ¨ê¡.êJˆe¦õ!¸ÝÅ>õµ©¬jÿ€ƒÆìÏl[Ÿí}0Ü‚9²Û\ó¹ÞËCp·j%Þ¿MÚrU“Nãøá2¬?Ã~\ßeùA'LÒOÎúÀˆdoßóÑg”—ë\í^k³s;õĽ6&tþ+AZPµ“II ¢mâH% H­!M‘Êeïv+Ø‹m‚ÄtÜÇsü°J:¯±(¡Ág±?ƒ)=?Í+0ïê/‰P;¤ãõ=÷’úÞV¸ô?î\8g‚“¦, ê&…Ý3eˆ§ºðiI¨„º _½sȵ%Ÿ“’ËÂ`¯zß nÍ[¬N»â¡ëvJlKpKÍxŽ×¡c‰ë´ƒ¬‘T¼yÄâãKCédv´E÷6rGkQªÄÒ¹ ä\ñ<Wš¤´sQ»£Ÿ‚Õ˜’R'R‚Gàævßß óy§»=’Z‡òI²6íZb™yq+7æ»c¥<¥w²üX hœ„Ø~H’°^žIC2phÉö­ æëÓÒ‹¡ä£fó¢’šadi965ãäoÞÉ );fLsÞ˜0¬¢Hó]­@¯‰®¾gÇLícÞøÐ¢!ëü¼Üãa}=‰Üßša9“ø°)IlV°S‰ú^7¬LêÇGᄲŒvp ±“¤Í[Ã³Ì Úp¡Yª—<'*qíè‘õAFsz'œ1dù<§¾Wð|öâ8ÀìüG`øç3R§¢5ÝDêÎZº¥cÓ8ù‹}WìÍ~ Êyà J’LØr5Ì›®;𣒳†igo×¹/…^Ýœa/”Hn¾À}:\–°‡×}'Aœ(`?'ÄÑ9þ~z¤ÝS•Hs^~zv¹”':e¨l¡¬ÈG¡0b˧&üHüU.Z¢Š{îÇÇ­6~ˆúÍWXñm˜FjâcuŸšO§™d&BÝ4„*Ôƒo{ñ„?“Ã^%» ÆÉè¿t¶t“,þ.B©¯3üâLÄW˜ê͈ÿý®á<,óË+Ï |·Qꄃ|F‘¸#2ŸAwͧúû}J&ÎìÚG+;!éË6¦4Èk‡ÝR†±hÇÛ±‘ î”ÆrFÞMH×î1öÖ}*:š‰žzÔ¹Ô$xÂÞ³~Åþ†-ÉB}§`EƒÅA>¡ÃO=k=½Ä´`-ÉŸ¸ºxàkinWbµWȬ¥ÍÂwr:_¤J·ƒÔ s^ivÖ/øš$tRàïèrÚþu¾u…ÌCoLTzAÝ/ÁyÇÙ>0Djøú‹Ö륹lË,‡FR’"ÍÜúçÏÊkQˆš‹dw®^ÜîiB–/hçr%t8R6À{®À]1pP£P‡¥¶ÒôG×—G¶÷Ëð󜷲 ‚ìúÀ„÷>ÿÌ1yüãîÖrk_ŠÌKdV%}ý•}†ØTöx—9‡°ú9|q•êatÐ`ºHwb£s²‡}åŸý”Ëp"›ìe? 5èžãÀå²Ct¥îfåé,%Ìì[–Ñ;71Pßigàù|=DõFû>Ä×Öo›sh´òÔ"÷ÖžÙ´ç’qÙÎ ½Ú"iÃ5O@|Tÿp.“ìkí˜PËÏô:¤÷½ƒâïI#p>§a;¤‹®s½Ù<}P•Âwz91àůõ¸bêQùUIvœÜ‰Î·úGÃ¥¹=VvÖdEUÆ;}ñG8ÀT”åŸofáÛ{>øC×þK¦:}šS¼´ŒÁ 6ìÉ"u³3ºÚÊŸ}ZdÒÆAömE’0tTò²æ”£ý$–È}k™HX“ r{xT·m°÷ã’÷ ÷¢7ID=?1Ýý1p̨ØxÓ0»¦°_Ÿ=˜ªc2« Ùsn‰sÊ%‹Ý[•®neÜFúãY˱4§'|hL#dʤpϸÊó‘x2UŠ"æIú,µ»ÞT8 åÀôDÛ6üÎùù›sË*—ëJ¨nbÑUãWz(rö~‹dyj{â´AÚQ~4Ø·›7€JxsgÕà‘¾$Íezbgôä—{~ÌÕÕØ“Fsø…ªÄÔ'z4W—o~%ãõD4õbÑM¾4ŠIK)uÁÌ’•Çû“Õ¬ÒüàÛjš†ôwÍl3Ý9B÷$ ¡_.tÙ–k:fu²ú¯û“ä·b0Cøõ!V„_ÐÀÊ`ôGOðh£oSiOøBPa2ÌDl¾;D:¨û#ByÁy(©O!ÏD@; ò€Œtûj¿h*(Eª³$çh€Y{qw/%€<%$1Ï äÔqÐò€nDYı´Dé £å7*iãqÐ8½âpÌL`” î,7d⩬S¶JŠŒi› 8£ð¬ñÌ™+Р>×X¢ÚŸÈ|ÿÑ­ýa¾#O‰H~U•Ÿ!WI&F’°yÛn[²‘ ŠW¨ç¢8D ¢òÓ˜±\YfX1á0³BŸÜôû"Ùy¼û̪rŸæ×˜¥”±(Q²³N(Îk’Xí.§jVB—tÏ¿ÑѽF=ÿmÌDw¨SÂŽúŒmdœóÐ'<]­|êT=Aÿ&8ûâY¾¬>^Ý+Šä¯¸¯Aîk^?ä½¥BS¯cèµAŸÉ%„ñxyGDßÍ—G²:~›íõ¢ã@=|_¹Ú‘…º'¼v©sYÐ_±v{SÂÀ°Ÿ–ý8àíÔÿö¡p~Li†3 XüxØúŠÛªä:çù¡— Ap+hïfg éTöØí›DŠY¢èÖÃošþ;تGy,ï.rz¿æ&Ÿ¸°ã:÷ÆxsËöä]š©Üd{iI³o`*[F´`°%¦h= ÍÊZºJm—J*$Çk÷•ÆaÀϼ¦_[üXw¯tC±õØ‘C2tæ¾-I¶3Ž\u&0\’Vÿ.šë{éR¶xo%· ÝÛ¼M¾ŒÄãóHIâÉ'WÀ¶A%ç_PúàF9ÓIÏ&Q¹Íòô(hW‹š{”Z=RT‚ÞŠ/Ζ$Û…[õft;˜_O7—;Yø²’Ôž„@ò †J­6Sm¦ ÊKÊÈMšI î‹fó-©ÚÕ§ZÄ>Zu g!×=”¤VÍu–:2(¤½Ñº½“L Ï >P§~"çÛm—} dHž6|— ]]ÊÓ’`ác}ùé#Õ3Ç"{‡Ï´Ûeé­L~²^¦á v~1¼.€½ÛJ¾O¨ÞP}v²ü,ÍŸ+.±®Èó4Ð1) ô»ö}æÇ\¯tˇM1É·û$3³‡f‘åšg³—5<Ȭlä*û[é. ÝDgîШ/%g.”wî‚}¥I 1ön,Z+ú5*äçšj;O´iƒl0¹jƼ<;è~Hm„=¤XÑ3°?îx9zzÃ9o²ÄÝ=Ù*¹ŸZ™e—­Äù:F¡‰‡]?ˆo|O+î`Œ´<¹)»Áä-q¡$6Cäy©–’Üèìu¬zÚ­}eûœ­ì¡ÑnóèÀèãþ êÚ©½ã©S¥< {5çÛŸ…çÝ‘˜¨@­h¬'¢¹íÕß¹Oòï»’wq‡.˜Ph(`ìCðÊ-/‹ÖrÍ ã­Ÿ8>z12¨öåæÌhi#`ɘÔyÏPMMh÷±FÀÀœI¬\âL&CZ‡º˜—8†Œ!¬ºo]D±^¢FÍHš«…º`ýH™Zÿ´ ªÐkLádÃÉÝÂ1 ¯’èþ€íEùƒ+p»Ô.ƒÇqªßÎ-=w´à±§ÜG q?Ú×~‘(C¢ãJáH}Ma+ ]Îlî¾<µ<ׯD!¿XÅ'äGäy^˜/©=–tí'0Y{iMpuó8Ôë*`÷™ŽrvD0êõÇbi1¾õ“,·þÀqWÅu’¾ + J"Yuy×!B{ÑòìlÎïX£.Ý9é^áÎ×ÌUÒÉ)`ë)%çî\æßnmÍÜp<²5¯ q­¡åÙÏŒå¦jЧ„ ]#}CÝõ4ñßkC2K%§{/Ø9.W™äýrƒ$GâÐo¯±|šLO5œ[—Žbúy¾S¯ÎTVÐJßP%Ìr†µÅ¥Å6y3¿²Û¼`^¤¶¦ÌA.ÚÖÄ9â¶Y†1uÒ¬“÷ó阺Y«ƒUІò=ùóì€Ì€/P̦²:Hšzoð‚}t™E3ñyô|]o…ZïÝìÛÄ)ôé½ÊŒ=Ò¾b37[NIY?º]EºÌrNì%¹‡²®q’Ó_ŽñÉÖX3CS¿¥½í¼ƒh‡E. ”_‘1_, £:y¼H6/%Š'dyÁF3¦C(¥±k:¯ÝèCâCÚλ)n(Z¶U GÕÌYI¢™á3¤°¿~TëÞq”lÕUš(:÷S³Úçhè çò k¦k­•n½y»²‹î,îŽÞFÔððü›˜ÿ“Ä+™´®Žµõ¾kœÏáÆ¡ºf¦Vn²›W««cÞüLû’ÎÐ.RédT?_RÞ (;•£¸—†(ð¾W—Jö¨xû¡aÚm=!±Ó}+n‘ö”'0>ß—ÈÞ4óMw@þ†×dÁ;ûË/«ü;º‡+oz-¨ö¿µêÜ›ÕSw}Ù¹6RbÆUœOàïF::6 œ½\e´b wâ«Î9zám~„+ÁȃŸÌ¸>°;QëSM•-èE²kW 'Ú02‹ÌV"a<¹`À|GPÏõ&–ncºƒìôÝ$w™ü8½¤‡µë6ÌÌü5…+¯nÀÃtJŸç#"Âεu:á®#Ò -AÆzSñ¨ßÕú«Ýû?ç-fËð…¿›ù(÷á~ÂÆ°$PÚi|?«hjñ‚¸ÖôýƧƒ|f”„™Ú›’%ÿEYÀ4`_F†`/¤PA`42J²Cgf< OÁ1e/Gèç5§ˆGÔh‰æž§AA´¹t¸:/MÞÙ‰l(>AÛk_PIôØwfÎ'3Ò¾y ÷ý·ndž£ò?1[÷ö›Qê·ËŒ5Ð}ärc©Ïñ}{PRΈÇ#îL´¬ŸÁÞ1^Ä-µW¨²‰Fr(ÔÖÚ@àrT1nÚô«XhdP»?„HU ‡n¼ú„`21-R?vƒÎ««!¡0v‘™ôq¤I.JîûÆü Kf@ªo¤²càB¶šWò‹õ´²ê±÷åãËÇä‘6ŒÎX•òCW›öýä —;GUbgGÜÞ/\]-Õ‰$·¹fÛwoAEqƒùð¥¯eNÃù ‡[^oÂ#ìŠø^÷8^ㆠ·È¨„=þ‚)8•© QÁHQ=8ˆ¢%¢Ž ˜º½só¦r1£ªu²í-M+k¶Z"؈ÙZˆèF‘ƒD7éÏ̶ȿÄÛ#Ö}ë*«ËFž«‘#¸ó‚ñ äi¶I&þ@‹@;T™\O›ÆhGì%ù¬PÎà-KEԫч©¾ñUj.äã5@ý¼Y—J¿6·óžOþ(¨×^VÇk#»O­ÎCMsËQ"Ü0‹Y6Ô˜çÌj[ÅÌr‡ãÞ NØmÎЈJÝ“Iï•nø¿¦>xI+SC7eûfã±·d²[N` åΞԮßÅ(±bÒŒ‡²ãšÕ*Ì/ÍŠ &]ÿîÈäyJwm¦`³ÖbEWN„±=ë÷É/uÄA õÍ͇ ßlè½'| )¹©¼ô·nµ®»CžÚÅšçצý,HT“ÞwJ ÖÛ‡Ë_‰ß ÍwÒâ½èã ®Û=}xöV®8FG·ô%T“ÑžoƒüS}[,^HVò5Lîõ’¤HŒÁBÐ ?+NôÙÓ¸YuÁ»Ý= òV5L²L)#8c¤Sø¿¾Œå@š¯ç|3ãJ?qò/·ÇʱCô}aÎI­©E¤\‚…„îC»'ñŽõ×ó§¡™{²âÚÍWçác–qè&­†}+²«i˜38BP9íÍ¥ïÍfIÌ->[¶‹mQQlkù®Ýç ãQÏ6o}–ï´¤`ºÇWró_Ð߬3&>Œ°µœHïç–k"ïgÚÇE"!A’gÀ‹òfµ0 Ž…x]¯ªWÒª8 *ª½-õ@¿7e&?ûàZ›gCEøkE„Þ”üIaå ÷‘Ú›Vá”&Éý*‘Öfç÷sm¯Ætk}Æ ÷“–Ó?ÆÃíôì}tÉaMªúõ;Bô>ùXŒ|µY­ 89O£\Q3à©U{¶àö“âN¯æÛ„£îãjâÈKªw>5–+ßÜëvãÈt£‹<ÿ#o°(®áöÈvñ$¯O šÛ’ÜÞG†õ’½…˜€o¬ä¹øÏÓ*ö«»ÎþxÅ›é² Hž„§HtvS"v¥a¤»Ñ8Zm‚Q®õC¦ûНð¾¾µì#öõ³¶(gûTð¸l¾V$ ± ñùÉëÌçX^ƨ¢i‘ Ô1’*áÇ£„2mAs¯ÈwÔ 6¬ýè…ÚâºVçŠ)àÔ0Û$êqFg"BÍ¥Ñ=Ð,‘¾Cªö¬?;UדŒ(;èËõV™–bÜ›À#^™ÆÏ #¬ÊwèD›ì&$çtÅ„þX€ÅøŸCXŠXÚQwÃ@7Gù´ÒW‡=-ZN›×y÷ªáTœ%­#¢/B3C%yNèQo¼¢Gj­QÜ1SZ8}B|…´AáÉž«—b£ñõ¨èzÞrÉ™i|w?¯BˆÌX•ṼýiFý.§ëYL±¨=;·7`â}3ºKAè°Š“¯B¹OU½©Ën0F;ž%–nj sž¨;GcÉö:Ö}¯¦¢òGô…¹½ÜQÒÎ]ì“4äªÎ†§Ïš¯ŒúIõæžã°€è¶ÈÖË…éè%­]J2~ÜŸÎ]&vaÑ ¿õ籬¹‚N¼bîzÇ/Fz|JŸåí·jžï¬û õ«9·<Á´8sÓ0íUÔþŒ[‹{w‘%ØÇ{ÿÓüE´”ç#Í;ü¨I.k»ÎgcRö‘¬ê‡”q¼mB{ü9ÔÂù„sâì^ó_ùfd ¥*áœcÿ¼ZG „—è/“§Þù|NÌoB¾xO”Œïþ6O2΢å~zoÁ;Ø[µ¿$Êè°pÁÀÿêü-S':Æ‘iþQÍ Çü/žá¯DÝÕá´qHP ¿íT’ÌW$迉èäù.‰ß¥4YbzsÑÝXšló²àó£²x¬.5»ìW £õz¯­ž¥,gL•¢EA}Gìñ‹ˆKQ›„>É ¹n½– éôßÅ4i(‹“ÊO¥ñ¹d¥‰  °ŸßíÚÞ1C¨Ø8 ,2ËÖìKÌ~/ ÇDΊ¦Z&?³îዺy|rø™R-š+Ÿâ©\v' o!O Å~Èh1#uì†Dù‡+tW§(‘t¥¾ÔÀa¡}ÙJ#›¥pÙÍØO‹ú÷Wl¨%T—ðWŠç-žÀŤôL¥oØJ†ÙÍ;£@¥à8Ý>måô_TïqþˆÎQ™(ód,|2ÝEÆ«hËœã)]8mYýã°”ž ¾Â¶xÅ랎[n‡<ÎÆ9ÜBEz»2ÁàMGÍA=îÊÏ/ÈbÈ¥è^6¶ WîÙoSÍéЊ%È|“ë)¡Å~)dg0Ä„Ö'¡D)îê\]¼ßöUÂxê'‡÷%17zWǶÄ>¾ìÉ´•hÀ!¿\,PŸJ¡ñ³âLûOÌ3,‘w’zè“.²b÷œëR«AÄ^¯úÓúfh>"ÄÅ\ciO·ˆo)àOÙ_~ç*~T)ƒ_VsÉ[Y{êÅ75þ ”Üx¾–.vï ÷ QÒè^Í´QõcÕ›ÉkŠyLË6ë<©6}°>z ·­¿`—±]#Ü© J9(Ÿ bíoα÷È3xJRž1îKHì¡—¦"šÚŸÕô÷i¦š9éðë½dÅñµÍ£sâíCÚX°ÜS)c­ŠÚPÓŸ® <(g ¡ÙŠ¢¨)¼âjŽ­>À)Oóžž;g—wäï;’Ÿ؉[ÇÂætßÒ¢¨‹A: e»~è’œ’h±ˆ½ÅžibâþîP|ÎûŠ>…WeÎÃEÒ»$ü g_ªˆØXúqÐ>m³/†Xõ[曘ýáâj„à]–$ÈáÍt0•æ‘ ÊÃ(øÔ0oSÛ·˜òX0,Ê·OSýuh Ò`øç\rS•Ä¿2ýZÀýz·^ý'æf}§©Wõ¶9[LÎMÅ7^Ï+6t›¢±±h)IIú‚B¢ÉÈ1ÛÝ'ú?ïMUx†@ÅU˜ðú—|§…gbr¾ßZÙ ­Ax|ÙÀ^Õ)ÛÞ›Fkàä­E±Ù6÷™£°èE¶×Š?>”M)T»·ìcÝWKó´y\Mzî¼z3”@óâ‰:§ª®†ÅŒ²•Ä#øÄÖr¸0 â¨u¼£ßÃ\» 4üŽÞÀú>úGY\£NÈÀ¹z8HDb[#-ïœskl”È_6ŽGðSL¶µMÈq#[Õ©ÞÁ±ëF‚@V؆0×ÍÕzó°ï1e9ÚR’ëâbAO¡s¸ý˹½óÿ¨]š±s— ¡¾Ñpi½QvÔ¥¾Çå%? fq/äÞnË”œÉ¼ Àð ±Ê¸hGŽmØÉ1b<ËëÅ ?”Ð@{Ó¾:´˜Û—‘¬cÂá»0Øç$†õ>ˆ0µÿу+´¥p ô9› ®Ù"Ð\ðU¢œM{Œù(d±ß 2VújLúaZ¥O¿E€u¾lõBÛ†¿Ôå9}Ô{y5ü±ÒÓ¥Àµìq…ˆûÐ 'ë@ f?9­{AK¤BéƒjLµ/VóTÍh\à{ï à?¿¯˜™ß« HM;îz\p-7ñú8Ó•€ªGK½Ø­Ì0 ôœˆêfÓ€~Ô…Q­ Égè™^äšËˆOû‰õ¹3 ]}\§ÔqžÞš­?› ^kPiªÀ †¾·uw¾”%.È©¡9c{S!B Þ’áÇÉͦ?>%;8«,ÚQŸDQBv÷"T&å&J[_ÝÛOãs¤¤…»gæ"uºW9€0™Ä>¦=”¶"bQQ4ìÇLÇ®¦/¤ahgáG‰Y¯¿ Ö!·@qÒ’Gg[Z9RJcwEíœ×Ö6J¢T¼ù ŸHS4ᬥö6¥Éà1¡|MTø~˰ùB®ª·­Š2Gf‘Œ…ÇYƒ­ï4íù˜~šÁ0fÞ›lO€‡UzV´\gýøYJb¿6n~'æWŠ;dR1<ŒGkÔó“T>L£k:›eN6”\ +µXi•p^"Å¿=™ îz-m3¬‚Q>ý¶›ÀÏÏUEðUƒð®=#ûº ÓC•;•[‰¶nF#6ÖbÖ÷/¡’ëdÕAÝqI÷âw#‡‚vYW1×ìÄ»‰d˪ yqz[¼™p ô ÀÈ7WauÈíöÞ¸Λ ÚåQ–Ô0Àvó þ§k]¸FWðï‡twŠIX‹f“näÔ%«Z¤¨©©×Xóôü©ð—Œ®àÓ™«õz–)JÞÖ·ï׫>”ÃÙV|rZ8ÛM9ðŸ)̽&­4~càR%†½:{qc$ß$h-Í,~ ñ9ðÁ€˜‘c\ò)O<9kÎäLßÔ6›»NÒâãJüF§Œ~L: TÓ†£²†­®Û ħpÑÈÆw¤äåß\bÑÒÂ’íïì:q¶Òo(J$þ9K?¸¼·6ø²m{üRvë!î–{í×Ý þ 5¶äƒ}ßÝýÞe—Æ<ÊÚã ƒþ= å\Úׂ£p÷T6ßH¥ðÜPL¸ª.·Ïùûé‡#;mðK:am "Ìq ­¯[†ä2Þ/ìêÃÛ¼H×âXàI)Ÿ}I}ž3)ùL¨–SUÆužÀã+º}W§Pá.Ôžz1N½x$+ ÍÙ÷[õÐë¹·}=ƹ¦Üm9&†g{p0JÛÞ¨àW*yÓ«ùê:áw,R2¤^!õFW¶k‹ÿÿg%<Ç endstream endobj 93 0 obj << /Length1 1489 /Length2 6643 /Length3 0 /Length 7647 /Filter /FlateDecode >> stream xÚ¸TÓï6N H#%é@ºCº¤»$Æ6`06d£A$¤)é¤C@º•–T@JZ:Dâñ‹ïïÿ?ç}ÏÎÙ>Ïu_w=Ïu?Û³¾Ÿ"aQCÀQ|Bü‚Re# !A€  ¿  0›1ƒü '`3…¸#¡¸Ô1”Ý!@S¢ÐDðЉI ‰K „%ÿED¸KT€žP0@‡ð‡ Ø”n>îPG':Ï¿œ .€¤¤8ïow€¢+Ä Â:@”Ä„Œ (åóœ2N(”›”€€——?ÐÉpw”ãâxAQNCâî ~µ кBþ¶ÆOÀ0v‚"ÿŒ(/ ;€`PŽD»xÀÁw:;ÀHS çÿ!kÿ!ðþn@ˆ_èßáþzÿ …ÿv‚@W7 Ü w8@a€žš6?ÊÅ ÂÁ¿ˆ@öz¡0 =šð»t @MÑDwø·?$Èê†Bò#¡°_= ü ƒÞfU8Xáê £¿êSºC@è}÷ø{¸.p„Üï_+(ìð« °‡›€ úØ¢©ò—ƒ†þƒ9BPQAI11Q!ä1â rø•ÀØÇ òÛøF÷àç†p8 Û€@ è?$Ð@¹{@üþÛðÏ ¡öG(œà?ÑÑ0ÄáÏ}þîPo€• Z~BÁ_¯?Y£FÀa>ÿ¡ÿ>bs-3-C-ž¿-ÿÛ¨¤„ðøñ Kø$ÅBBBbqqQ@À?ãè¡ëø/_M¸ ù§\ô>ý«dÏ¿àü; \€ÆÒE • pþGèEAè7¡ÿg¹ÿvùÿSù¯(ÿW¡ÿoEj0Øo;çÂÿÇt…Â|þ2ÐÊõ@¡§@žøÿRÍ FW†z¸þ¯UDOƒ"Ü­h>¡ü‚þàP¤ÔÖ‡¢@NTó7ù5o0(¢@BÝ0h/AÁÿ±¡‡ 䂾Ehiþ6AÐ3ôϼªpükØ„EÅ@ww ú¬Ñ+Q€Ÿz*ÁïßbðÃ(´ ÝcÀáNðë`EDh/„ןãBÛ~ÃB‚Â{w ƒ8ü7,òþ'LÀè†D!þ ¢(Üùo@¸¡‡†üÿÑÈÃÝ=Ô¿‡nò_ëß7â ÌN!@Ò¡ÎoC[Ï«é½øÖ†p—Ú#ã,z"DQìÓ¯üœ´ñÒÕÇ+Ù+î¦èÏ”„MùÓs?ö~ô>3h!Y#…¡Ú³¢´Ï—Ûÿãè½#„ Œ sO‰\!ß‹7`$µ³Â±âH4›º|&Þ)²þæ[þU;rÝRrà (<%cN¦GÅ(f·oc=·`f]B X<"{qÇÝ*ÕÃXÓdä ë9ôÅ™Rk4ퟫióó2{{RDó´º*Å*Â(h)}2g&ôÑRÅg>l@b°+‰ž*—$ű膱/`Û‰/üœÈëm‰ïñ¨sÔU"Ô{ò±Þ£!:%›Ý¹pÈ`»šaüC€øncB¤oU «[%ãt u¯R–Ó…CÍÀ­iÿ|£3(*>³ÐÆš«Æ{"bómôî¹]Lz¼°u’,L¢ïëk%1}“Û ƒÙÜ¥L€‚ŽB_[—ÙyÉcð>/ÿÉëh™ù½DøñFã‡ÖÎð}ëwFªñ 8ó¶ôíî­øMÑÓOä¦Üªb¨j­iD‡-WlvìD aN6Ž~K»º´¥‚äÌ(K¬©i®1ù´±ö:Fªîm ©gŠO'ÈH(\¾—0¾™+ûøJ6¸Q6Iâ©à“Ï£û˜*;±dÕ+„?nÙÄÙ»ï ãÛhå´[:Ùér_ÐvA°šÄOO}‘/_ÌõÄ>ø(":ª¿?Ù^·6{L¯¬Ó„añ`±è(¬‘<Ï"vòcž¹¾ê¾ö•ðŠ­paES B#É@ˆÆ{œ–²‹££ÕƒÖ¿A|~za¦{Ñ0]õåaánZSìÖñOö—+©°{j7Եɱ „Þ0©eÛVŒð„ȕϭ…Ÿ;9ñC<&!<#w3u¶wïÕœÁä@Ü ,ß+l Ë¿Y—º†­’}‚…j•êõ¿`Ö$Œ~;ñöçúÝCòk[Ô„™tZÇǃÔ>Îû¥(îE„&¯2ýüWNN €"kjÅ0ì¤ö# oœrz¼üqT‚†™bqgŲt óœéÂè5±róeˆ)¢&å³gsöN‚|gÍË{Ò/3«e¿Èñ†ö®•µ?b)ûQŸ”N3f¸{ËÓP9i¦'Ó@ʼn€–dBÁ–7»z0“´ÍåuŒ½l]Qó\ß«´&Ík6¢¬Ù¯áë : ñþÇÕ´c4`¢¯Yãà§5\2„¤{Fô}È¢²5wW`Çó}ìˆUnÓϦFm6½\…í4°Ä;2 ú/¾üè?ÉÛËZËâdR¤#\³-¿”èÆ=*îI2M#ûY_°¢Nš¨¯› j³/’i¼V#áРó1( iÒã ­%.Ÿø6ÎFòìv¨:QþE‚¡ïkŠ£#‡M¿ðQr§/Ç2«y~iiËJIƒ[Sïzg³‘ÂÊG> ËU¶}o&Þ(Xƒ˜$«átâ9Bh¿ajE\>pÑ“¥Ù½.S˜2$ñÎë#TŸ/Ð|sÁú”ÆM"ŽÿÛjŽwçì¢axfcâ¢%Øfšµ=zíèК\–»Ú€lb }/·¼lÕÎl¼ÖýH|„µTþ}v´f‰:¨Íˆ%W:v#éÒÃÃ(’@Qô0MLI–üsž'üsšñ ~EZlõH+˳±³ kÜ!¾À¿ˆ±Þ~…œ‰džç éPÌ«pØ Þÿy¥vâë¤_)±nI0ÆžòGéæ~6£izI7Ÿ:xu­Ütnu¸/¤X’n}¼!?ÉK„µ{hÊ…%¦:‘‰ÅßèExvÚán~¬‘Œ3Ø`ëï2¸Ý~GÖä.vÖú^º Æ2y££wÕs†I҅ȇüuF‚›4Jÿô Ñ™vW(sTjß0Ôº|>ÃÞW]Yž…-Ø2_àżQ<$3X`¨¿Áú­¡Iê¦íWÛ Õû3`Žò®µz¾¦z¢Âô=¶ƒá³ôÑ3_hˆ\ŸUZ^Òuçi“HŒ¼;ž Õ (g±Ê£2´5 >5k}9>ªÏæJ=Á{œÍ3ýdá“Ô3ÔR“I@a«ó1úÊŽO¡OðŽ)î=ÇqæHõèi ʨ¸?Ÿ,?_mN…CÁbò¬ûÌE׬Îâݮڌ̆R@Mò¦KÍç.¼EÃ]ιÉá62A,ÅË«×ÐŒèaÒM˜¿kbâÃNÉZƒµfªŠÐ\Ÿ, ÿÄØ9Ï{wöxžÄåç0u¿T­½øôv;A§w{Z â”‘z5ó ûR’6«¯\»é©û}E],€¨p‡ø;^N¶uP®"MÜ»è—<þëUœ«M¦“‹QêÅå0ñ`-z3Jß÷Û]ÙŸê,~¥ÃÌu…œw»’ªÃöh}¾ÔÔÏúŽkwY†ú7Eª`2õ>à#ý±$¨ºëVEgitÑx¤Ø·^ŽQóa‰v¦QqõeÓû6¬½zXã*× Ã8È9¬“ÇøL?’»öR[èPØŽáå2~—é\CˆK¿8Ê3ÚµÌ*È8sT[Öe*í¸s'Ò÷h]¢·Ç¿£@|ãìcœÔUgêÚ÷-e‰öqÑGGåÚø£ø½™wÍ阒¾·ZÖŒ#”ºQOšã{RÃn!¹wS$£{ÝG&5Ÿç"œ+MvµN)¼s›ùoóâóØ UM½= êÒÌ€©hïXb‹ÕëóÁÇ­‡m2£m‹¸¾!s’èñ hnUÑû)àðƒ|Ä‹d?kåR9ÖklµÛ¾ŽÌ£ܯÍ·œ£>ñéþ Ú*ª@JÄöhy8ÎǸer ÙPóOEEd wnWi›F>9þpsyîJL [³Qîð³Úŵ”ؾ1h€2Ò­º½;íyÁ4€‡‡LÀõá7‰ÅfzÃuð!Ï8w£ð,¤•“çRVö1Êy>°,Ÿ.èKSªþ†qéÞãȆØm`‰™Á&›oèÄ݇o›fÌóéò:EPš>‚Ýí¯ùq&îGöX%ÞÏg Q¹¯ú)8ÁÍ­R»¬ø¤z!ÕsÏ]o< ‡æ“c;H†pWÒï˜K´¯Ëõµ¦Kq-h3:` ÅPuI&°œ¥yý¨ZÃosÎ)&8vUiqo™kub}6­çðµ<ú¨È8Çuþýt„°fÒ¸õ%yWZÜgíáE’‡Û{‡›6*Ðâ+«Â})¤LÖ—FáNæÊ“ð ÿ Œäû¸?DMC·ÆL¢¶ëœ]ŽûËÞD§£ÏtŠêùëwán Ó%Š˜^¬®%r0ò8º)>å­â}/ëï\&,J®Ü,žq2I”°—\Y—2Ã@È¿) VLOßß4(˜—Œ2Ì\jŽÂâgað‚9ÑÑvè?}Yru;üþ0Q«PU½œtc»¿¥8(R´l@µÙ¡Ädzü„u_R5¯™:ÎY–๵< l#ËÏëV¥-©¨ÈYÚwÇ‰ŽšYJi«;ŠÅew–Ú¿Ù$½·ønaìA^Sx~Üèw¡7úw?Ý.?â2êÉ;^i½ÅðÊ=¿È*~þ½§ÝW¢ÖºêŸ14ÇÞgê¬79ô¡[#ü¹MÄ_6Ó|iWJ{ ªªN–½[ñÞ™ó÷`[)?®Àºnw¤¡D3§Âììót_bPc›B—.»¦kJöük9sæ®Iƒ…a5‰Ù ˸©²ÆÆy–Ä'šÉø[2>発ÄÀ—x[Åm=ü…½{X(ÝÚ‚î˜ð[²FEMëp.sÒÀz£¼o7ɳð:ºà\Ü´ØIöbn›Œ}ñ—  Òå»—ì ýþ2‹Ã=ù)gíLct»Uwn¶fKy^‚H*žÖËä>ñápÝAʤ™lIº1Û¶c´Î¬rêf¨×î-ÝJ•#Áê)zçl]{~$b.÷0×W~Ve÷©¬îù3Ì6{81cŒßc{ N9–Y îçíýC.Å>"çˆå¨sŒ/€§G‘+ı*^ËMçÖùO‰Úè㨶Á¯üT¨ ºž{ÍÒ.¥‘ó³R™.­;Ñ¡2O}]X]\X­lWRáìƒs/*ÉZ”qÌ’~Šd¦¸ÝƒT¾J4ø–‰c¿TL%àv„YwôŠÁ8ñq»Ú˜Žíõ¤"yB|›ÂàÞMž«Ö ?v_i™ÉŽlÜ ×Ã+¨øÇêÚíÌ×ÜÔWÍŸcÂQ2ô“Ñ.‡øò%®´\Ùƒ#ÇM•»IKËyç>÷9W*íØæüJéÉŠ˜[ ˜2Ù‘‹ÞMÇëJe<å“îÏ÷T÷¬PcsŽzZ 1¯Y/XßÊRÒ} žÎ”ß+ˆ€¸È¬EJé’I¶&&1ظu4ºèÒ6 ²¥•Á¯—Roõ»»µÑV Q:_娑ӑuD€ž!QI»êgËÊ’›Ý¸p*¸Nq¯3m肋çqUOr6]dÔêè4ÔÕ„?îõd¯¯8S^\ÑŨ׶DÖxë{øÅS#[›GªÎõ³ŸóðeU”äšc)M”ú lj²-Á}½Jḧ³§¹êZ3úN5Otk­q4l·"ž*ãïSû.Œ;Ü^¿-3‘ü2ú2Óîú[YUhê!GëÕÒ<«]€ám\Ò`¼¹ÀGÅOÉ—u…]ò€G‡â"Yd[µ‡žK[ÇZŸÍü2u&Dä§ccJt­H™ÑJS’{Þ‹{F–zË|YúV¨Ò½„Û‘Eæ±üúKšÒò9ÌÆù~Â$õö©‰õê›Ù1ó¨k«ÑÚwQOÝŸê ä|d+øW‚앱۟Ø·¡zèÝ«saõç=…I—G˜ŽÏfrú´ƒ°¶CrõÙÅQ(R¬Su_i-ÇsGc1LÒ \,›5Ò_Œ’’;=Û÷/O”ŸÔÈw< iHPc3ᯔ[ÇÅ:æù¢e0*HË20Q6&»t€Ü\Ø ñF<´^š.eþèu)¦7Ïð<û)j{0P”|?Ïty°¤†§œ¼ ¡¼âÝ%£xT 28ýÍTI¯ÏúÚ@w"žqN´²è¥º»ã² n7™èGÖØð”hvÿªØºŽ(ü'Ióꥫ3Ù)[Ĺ•¸:žk‹œÎ4¨¢•EñÁHü`7ÃzغÇë£ÙÝgz3ñt®$üѯ_Tìß6´j§MEèÊ8ßÿ†Í¼ÞÝ*TA1CòN:àéþ³G:Y )N©Hlµüé³° Ë´LZŽá8%=ù%ë¤ Ñ™Æå/“ÀS¶^-;­€¯yV=TÂ2#IŽØŸ^uKHò_Mµ¬ÛÓy*xU;xä‰úE #Øa’ÇæMúr£pÇãÛšjëRò¨—3q¸F&zà^gaeW«‚¯ezârA.f.y%mXƒæ•!o¿3Rg’Ruʘ½Öý,¡;FN“ˆ…˥ݧ§;HCq˜'©$yTÅ«÷uWqñÓÀÑ~=ևѮMYá´„½dÙ-Ó/¨ Àtž´Ï-°Âp-’O¯ïy!Ü(Ž7Ó˜ÓT»õ³ÄÕäwGºõI%—+X2Þ;&*EeE÷Ìêq,­dc«W’(ò£ƒ[‰P¤&ÄÞ‚ÍÚ°¨ÙK²u“c«‡ ¹¶ûDp/•õÝ¢]pŸ$•@wÁšN äi¶üÌû¾þ­ñª:L&²§Ulë¨BûýŽÛW›-[e¶[Â2cçCɽ<8d;(†ÎÒ*«‘ÌêÚ‡¹×%z ùl:ñšÁ ›Ä¨ÂºOܰÉGtMö+c]‡:¦jT‚¢7Ã<.škÂf’rÉ% ²ÑóîúcTx}ÙMs®siXa—?KQí·ãïqS9}ýVTÚQN9X/,îPÕpÍ DÅ]¨¯ï³âi$<Âà-÷ö?FV"½w 4²eÔ´ÈWVÃgn í:6YŠÞ}†áÊ»0ædÄgfy'–{øá]ކª³ÙâÕ/^ºkY5@X©T$빞è¢þj¨W—íh¤ª`³Ö‚Häè ‹ÍÚØÇÇ×’‚Õª½œÒn,²× iþ uäî¤òàvÐJÔm½Ûvwð‹ÜRý‹5Åh”“µ®”±¼ª²\)ñʾ }b}cð“iLYû8ï(¾‘Ú;Õëö×öBÆgj ·Ø‰Ÿ°„®ª&Ê …ù×KÛáöyþd;¿7Wilµ šÂµÞ †`E±¨§˜Ð9Ç,–á†úDí£<½'¥<ÀñÔ–>¶”oÁ,‰¥¯íyÖßë…YÏÀ*½¿rˆy®ˆ™¿U&ëPÑbÒã}îÁé¨àeíPhš6Øiµød;ZHíÇ&“ ©¢ˆgùí¾e½ ÏñJ†zaLO"ß‹5ãÆ…‹AÁÙyJûû§˜V¾># “¬8¡òÏ.“¢)`CÅ;Ξg ~q²·|Ìä:ö#Vå.â+×}¾õÜ4™,]àÿþK¡KCºä—¼/ã£d/^cf÷ŽmÞ¿¥Pþi/ Ÿœ‹ó¹ÍcuëFçÖ7–ÔÀ3ïþTÌrŸE~ ÖÆÐtµ¾¶™|óò.×dŸ_ƒ^lS•ÞÔ…0™aqg-©÷‡mü{=øÇ^JŽ£ñË­WFW-Ù,Ó¥° ûýS_é¦êTMŸÉGªÓ·ÞnEº¹»è5(à*tBØß½IJ…u D¢ŒÎ¾u³1írm¸ö/̾+e¹+\çAª I=çéž­BYrÐáSV7¤~]·0xKw¼_e»“ãÜs ˆ£¥óÅó¤Å [xºü„ŸBË÷‘.enTèúåʵêï ÄTxœ\V‡AÁEÉôÔgú5_jœÎdVx¬Q®_(búC" i‡Y󫽫“±øÜz¾?›ùAGΠ—eì—‹_ffF(bw¶d·Åï¼´¸›V{zþa‹WQ> ¹¨•$)ù1*m‰Øˆä¯Õå^kÜ\“Œ»ª——5f§ûʲáº`*wÄ|å^zè ž×õFu¯r:ñª,dePvÚwnx ù0P,¥ÚñlΚÉ#pÀÒOËÞ0Ô³gc|(SÌÒì²s!¯>?†ûxygÐ~éiíèŽ)œàû4£À®òɺN½ :7ºs‹ÖòÇfÂâýX‰r†œ×j JÕ¦çÉ›wЩœ+ö°Y ¾2 IüQ‹dô±\%Z¨D®ÿ&ˈµûH­ýQçût)Â[² ªÕ9ۣʲÝÐXbÇŸ.üf÷f óÖ¨yÆ„›¿±ý$üž(Ô»ôDÉÆÿCXÿf–îÛõ”+ˆgùáЮt¢qÌiøsdÃÁÏÖê'É42÷ÉDö,['§Ož¯ Ð%~¥ÝZÄXlöüò®Pӷ̸a¾>ÀK‡L5;N‚ºal#‰O9‡!¥ÅDÝèØgŒ¢ B&$uA…óiÂïî#ºH«´ÍxÍ’¹´ŽFíS¬kŽ/SÊÃnàÉÆ×m©m31¼un ØSdñÌÝUúü?.XÔ;› ºÇå—<ÆXu2­©ý4´Œc,-Æõpâ Ÿ-ŽÚýˆ%Y»ÅVC!íù ÛŽoP¿2W‹¸BçöE:f,7Ϩ6ÌÎ*¡ô"Ú;¹)KKhúšYªï¼ë‡ÂlŸ—bp+imúF§žXSG…ûU}Á—æïžÁL9Ø0§'[ÁHTjì(•:ÇôÜ5°ÃÛí‹„Ï1׋ÅeYu+N¨‚~bzý!’#UÛYÌ•¬l£ÐIî½?`§ÛB‰ƒÔí(e&Ìk.û´8­صFé ‹CÄïÃGÚméúX¬v¿«©|",;Ñä~Û|}®¹£>°F Jøzêå&츕››®˜cJ¿˜Z¤p#ø,¼ g/’‡îï…cœB}Jˆ}ê$–Þh•j“®cŠY1I¨»¬Ü·v~Ô­T¤k(”?ô®e¢œ¿ã/…ÿÈù`ÉÒäÂÐp”¥ <xr UŸ<ö¬ÈÿJöþ}ÍS¯A Z¯ÞDÖ•1ù]§);—̬þH+~ðb€t®¤c·‰ºÊ]LñÍ^V¡®ÐÇ]©<Æ@½¡.ž¤Ì‚ù [+nR«Ô—ªÄ1yïæóÓHµ¬ì¾ãì2Ó€ÅÔ÷H6lZùk±(záꑼ È€=òŒrÖAÛ_ÛZÃÚïo ½ |GÑ?’èRí®™¿D† Uò» æoKh§Sv4ZvŽÞ†Y Z°“0F1ö§)vSº.à8)ߊï˜MQ ²œ³›ÒìÙc’g9I×·®×|çáó~ø ­Øúq‚NRõ«°ŸtÊNvÂR¶ú¦®;ÚÔ‘G/­›ä3ßTÓßLfžHºl#œÙÆàŒ6ñï JÌ©žäÏ_g> stream xÚõP\ÛÖ ãîî4îîÁÝ5Ah ƒ»Kp ! îî îî®!¸»=ŽÜ{Îýþ¿ê½êªÝ{Œés͹6 …š&‹„¹½)HÆÞÎ……ƒ•] ©¬%ÏÁ`gçbegçD¢¡Ñ»Ø€þÃ#Ñ耜œÁöv‚ÿÒt]Þ8) Ë›¢²½@ÁÕÀÁààäàdgp²³ üGÑÞI t›”Y öv g$I{O'°¥•Ë[œÿ¼èÍ|Ìš$lAN`3 @èb²}‹h´hÚ›A.žÿã‚^ØÊÅÅAÍÝÝhëÌjïd)ÊÀ p»X4@Î '79à’*@[Ðߥ±"Ñ´¬ÀÎ 4í-\ÜN Àa6Ù9¿™¸Ú™ƒœoÑšòJUÝ_ÊJ)0þn€ƒ•ã¿îþ¶þÃØîOc ™™½­ÐÎlg °Û€ª2J¬..Ì ùŠ@gû7{ l4}Sø3u @FB|«ðïúœÍœÀ.άÎ`›?jdûÃÍ[›¥íÌ%ímmAv.ÎHä'v™½õÝ“íïõ¶³w·óþ²Û™[üQ†¹«›¶ØÑ$/õ·Î…ôg rð°³³ósò@އ™Û´<@ 9þ ßjðõv°wX¼•ò[€Þþ¼n €‹“+È×ûß‚ÿEHs°™ Àd ¶CúÇû ²ø ¿¿Øðžýmü8ìüþûfø6aæöv6žÿ¨ÿyÄlÒêúêjï˜þ.ù¿Âwïì=Þ,\<Nv'7€ïíÅ÷ý¨Áçñ/[y; {€À_é¾õé?)»ý=ô/à}©Ø¿M.@ÿÏ `ça7{{pü÷?MþÿMù^þ_ýÿf$ãjcó§œþ/…ÿ9Ðlãù·ÆÛ人¼m²ýÛ.Øý_U]Ð_«« 2»Úþ_©¼ ðm$ì,ß&š…ƒ›•û/ì,ö™«]̬þšš¿xí?öÍlR³wÿqüY±³ÿÙÛ’™Y¿Ý"Îo£ù§ô¶CÿWÚÎÌÞüeãäᜀžHogý†xÞo[iòøs˜l¬vö.o&€·}öNH,/€MòêOÄ÷†”ÿ‹ø¹lZÿEo2àÿ²ux›‡?Öú?,7çëüÖB°³õIÞ77@—ü¼YšþƒlfÿE¿¦}±É8ÓMy !Õ®±ˆD.õÏvŒ62c/Kö¯æíò;]‹TÐì¨)é©u»¦Nª½×RRŸ×¨~FÊùFþ]gQ=^ìbõ7'ÄEio‰kdÑð˜‰/V«_nM+ÄYùvîëŽÝîjªQe‘"x VS¬‹éÒm"ÿTY²i”ÆÃâ£OÙ3”Šä¹ÄXKßKR@ùÔ*µŒí¿ÏÔ³–¡q„zd¹‰à0p°Ù è©Çögõ܈u?;GªÁ¼,ÚU Zé½h å³öÉùôú§x ¼ýà•S½öäú;´6Ñ“¯?$‹à÷<’n~ƒ3BšU²*¯(x”wÁóÅ MÂoãжï1K¨5Ü¡k\Ÿ©x ”7·'ö~KZ`Dª{Pš N\Z÷S±*¤a?5Y “*ßÝ` ‹q<9_²CŠg;¿Ñ«Ï*JW†øân`^æ:íÒ‰JýEÉDMÏ3‹æÃš¤q{c² û¾×c|DYÀ™¶¡ŸÀ‘Qd¾áŠ&ñù;:‚WB®—ŒÍ¡xœuVÌùÆå”9[T©a¦åeϧ@Îá›þá4ë‰vãºôA8<®òxë´Skæ¹òˆyºU­.¥†)÷†°í\œä×P¦ûÅ™°:hPõ“š~ª×Åõ¨¿i“Lž÷­6ôœe%(k·iöÐãûFS('­NZ„_ëctøø°*¬¨²’©ˆSáµÆÇ#³]P`”$!É,3f~hh¯.ôü|Ñ1DÑFÃç÷ÛÙŒÆ,_Üq‡QÂðì ‘^âu4 }\ØVzaº[h¶Ï ˆÚ+)dðL`5ÆF˜<øþ:cd©b£#x~,‡¼ò@Ÿ‡ó@>ù‘š5î>[rPtêÎÜi³S?Û«‹+iTŠÈˆ’œþqµÄ3¡X¬¤rùÁ¹"ÔY*˜À¥‚›Œ‡^‘äînæÉÑ,?§P'ÿkã¡ïZÚò°<Ý‹†´ÕÊ~èG2’–H; ‡“\_pKÇgG9º¼ÑH(·k´/5Kªã6‰Áœ¥€Ê<ªÄ8”÷-ÄÃßœ;ÉísP!~œ~ÊY¡jz¦ŸìÔ‹' JeÅAr(Á°Ö¹7Œ€¡!krå¥/û·T’Ñ,&–"Døð« HZ‰5Ò²¡þaø 4yWiœ {1bKäižÔŸÎ%ñ±uhW²úNÝÔsÙ¿§ß/•v:{ïpÚø­?’‚Ó¥vÍHÂø­IXïNlŽ+»Ð}l|01ãQŠkÙJïV¾ Ñ¥Òsª #nÚÝNWÏÜ!Ù|è‘|ZØÌMÞüœNçÃ2íè‚;Ç Ú–*L"a>JGŒÖp-¥ åä$ßõ°çð$Û‘ÿ(p+e¤0 ÂA>940qBømœŽw8 2)5› ßPà¬?˜ò4då¸G؆ å|¦cßÛƒøPt€¥Üæ"Hûɲs½¯ï· “màS×^M1#Ž‹‹ž"±«´yìÆaàpQ~ï»nÈ]˜˜5[ŒŒ«ÍÎKÇûrS¡¦µ{b§àvE¢Ó~ÖíÖ˜#Sþ­œTIïHf5\×cdJ¤ö¾4¬Ñž…˜WFŠÚ˜òË^ÍEßw,î7kœ÷ð :èŠSeÀî²´œC¦ù„RÂz±è×rc·Ðn3ÓÈ¢z)Ü¡Ľ3´›”.†níÚ\ƒŽÙÍ]q ë ƒS2Î{ÿ³f[¹¾ŽÏ-¥Æjœx>«@þ£üA¿ðáëµÍnûûãý0Œ#’-‘]LÜhÄËÔ|·´™ø°ËhŒËÒÁõåQþ;mž÷ÍÆÓhÈ?'ö¯@p"¶C›C‚¯ÏM3ѦP¨RÏø¾Ã2&aÐsåì·f{;v9+Aò7áuž`M±/GPb­¦¹ãÅ+è ùŠªž¡ Ã³™—*jïòÄCËy~~˜ƒ×Úh ;NýÒ¡¬.¨6Þ:Òùá¤s̽অíÒMüc“ÈØë†±R²xhþm‰{·ÊT\°¯ÌйžBsüPä‰{Tÿ¯Ó1š@å"³î,ÿC¶œ’sSS2E&Ü´4NǵR LõÀ˜`ŒŸ&°0”Hv¿q”ÐçíÙ"CéÜ£÷ÊŒu±s’€5Eùéáö ç‘›¤hÉIè6'œ„ u´ ìÜ ¦…ºÛvË—Ü´päç×àƒvŠË:Ô:‹n1ÇZ÷–—ùtŃÙG—ÛkZØI¨,fa*ˆg†-ý¯Ì^_ï{½¢&:¢aáTÒpP$çAôg5TÕ†êR:¸Ž?’l¯€NEëÛNOOUØâ’aôÈF¨. ›¯Fì¡Q£Š.X§Þ³è–ïj)g× oO¥,î(6ÖE|¢ŠÕç‘ ·ŸÎé;ßGvûÉbF;»‘}ôOJ´.UC¶$Ùf;#¨›C¿¼‰36Ô† Ëjø™ìu@žˆ¢uÊL­S<)€ùqôdÙ`½þ*öƒôÕ›g«}½±Ð%xvXÝq¤âx1uJÖÚlìfóÄ;/ѧPãÇ=Ô³$òoü>C7I «ßÔ}èô<Ùž¢ü‡üüöèÃwyhU%ÙšCª(nbbQ)IYë-³PÛÍñ:ÖÎ"6n¦kã¹Püƒ>5ÝÚŒi¼Ï¦ŠjEii½HäáqÓ¯«ÐttÚ4ÀÚѧ:¹L«Ó ÔR¾ (­×²×O¿3@"J>è}¦c† {Œ¨ #i“›Æ’Æýy·¬â¾Ó LÅÖZ&ç–l)¯,Nçó^Ø¢—†n¦Ÿûþíí»‚¢vþZls‹M´z¯13ƒù«ÙËZ1ÌâZA!Bî¥È/·Å3„ßOªJ¼Z§ 7ðƼ@³·Ð«Ö f"^ýg×À{9“Yjü/7Ü=˜èHãQXr‹²Félt.º¯ºÏ“CO{c®$<Œ¦½ÐðO*[ƒÐÑu´3•¾KTŒ+Hs|¡"{al>õ’ùzœé3úxî)GÄÖƒtZÊÂâš“ÁÑmÖjü„¥Í¢b¥¿/ËCF»ZœŠlõ›{ŠPE×I£©Sf#玫•4UPyºdDÖ"ú(¨æù!A>ƒ £‰3–ÕÉpÆ*sêPMØ×+‚DÙE…°é‰Ë´%ž:b`Í…Åñ‡êV+Î6u‚…”³ÖÆx¼\^ ”mO¿Ôƒû^ÚÂçª ÝÁ¶?w+ fßlš(7NfY‹&ÈÉ—  IŒ+«ôÏ ØòpVäÎhäÆ," ý±P(C6!çx☤'¦°8µzàGš~IÖŨ6¿­Å®˜¾C½˜‚°¼ >ߨåTâî3ê€nŸ-´ƒ2ŠæßÀá é<+ýºuS ìÙèqh¾û¤Õ–MïñììPùØ´o¾sG·j7ï6‹®—9ßš:zRý9ø¥]DLf{ƒ"mIã%ÂÈoãáþ¤õ¤®®ÄwxнØrñà° ‘m8‘Ÿ0×~'×}ôè/A³ÔÄíò™Û 󧘞tàf•›ýQj· ãtÖX_ô¡†ýï2þûèÊ'y ð=g]×ÒùzMÈt¯Ÿ 0Ak"N⧣ LåÒ³Ý-qLknö1a‰ÏÞNßîµn·<žÆ4߸¶_[ùµñOXSº“ ¨é2W¹¾¹S¥¾qóWØ%€V[‚=¨ÛþÇÉ…Ó¥ÿ¦}{û.8Y_./êîñ¥ø¨êoÒZk*^¯©F£b°úá–Ô¢+Nð‡wïB¼4!Á+)!ž×A°Úªˆ=Y²b¶Ð“eJý'¯{óçp6j¶•Ÿ0àN—KÄí˜=ý»H¸çðF !‡{=TÒê3ð÷ƒõ€œTH1Ю.îô O €T¾°^욺í‘üßó[h¢-}K¡ØwÌ2kv—ž†rÆÏFB*hžrÚ °l«T” d³¯.Mp§¬ÅÃÅãi`÷Ì$BRoÿOÉ«UISŸ¨‰v‚rdŒÆ–T¡êíd>l량Iy;¯Š‡šm_w€õ^«ºÎ¹ÃIãæRU°zrXéÌ—3>¶û3py¬ÐØ=ÓÙ ÚqýU *m5p>¬Êó8€qUýxD',Åõ—yv’™ˆ&»ž·šæÙëja¬ùÅÑž"*QBnª˜Ñ¿H v%®@IF4ïs«¼+qE¸èÜötAŸð2t(k(L¢ÌùÂ*Ö5’0Y9öb³òÞf•6}‡+BÃ/V×ýEîUÂí£a?“<»¾¡œöJM›6eÿWò« Ï*„?W`±šÏ¸/ÒBÇWWáz®E¼ 2Ž´ycí™”hFWEž«î™´-µnƒA˜®¾¥ŽÎUEÌê[U2•bí²¶ÀtØŽ»ðÑn¦˜'ŠçÓ¡iÇ„…6¾R\¬.¦úmž8z¨ö ohy±ù“<^m_²Ë…®¡{ßI£­„ÊHk€ÒæÕv3ô³Á¬þ¤Ò²êyAÞ­§B™z"I§$4'µ°^«$¢*YÌ!Zú ùk-ž„Ý{¸ÉPÁÎøX>Àižu²%¶Ý/;G²ÃØðR$«w¼§µF›÷—H<>O‹šŠÖÈ—%¨†pÛ£¬]m©*ÝæÝÔ¾ìE;¥ÌLKAG†öó“Y7¿pŠ…h¥Âœ0?¨èï!Ê7?î×¾“Þ‡Uh§uj50EĪRÕìšñs”0 º+(53K!ü1—Ún®ÔŸgÊÞ÷e¸3êÛšU¯ÁüYFŽBa?@”qF¶Y&v‘pÛ[H’d#o¦g ÀdN_ãÍ™K¥ÝÊ‘¶M¹´#„‰fÕÝ~•Õ”Cô÷æís¦ê’ú ) ¥TÃO*PE¡=âê)îqsbúQP‘•G%®Sg„*oú#}ÑL_·¹PÛsØ8—cÃŒ°‹V`nÀ7Å_Ö¢Ò9p5z®ôã½_ú*úIbã›~“[r“OÖpÛ°ýìÕÓ€fšð‘·0 öζC‘Î4ä zoÇœæÃoHV)™ÅŒßúnRg’Q%0ß`¦±0Å2©rѤNìi9>#_-4RY2¸%óâ’AiVZj £keê”HSs žÈEÕ4±äÃ7x-¶ÅÇ«ÇçÉÞëÞNò¨›—R1É‚Z5 ü›oÈ+¬Àã/ô’ ëR¦?¯HFÒऋ=ˆ?Ò7Mê÷v*ê>'p\¤E¯}ÙËfÓ·voÏbð繸wîV@ ³˜iBûû¼¤úr¢@TºjÇŽ˜õt—RÑ0ÀËý¼*<8•´•K%l¨ç’j)Ë!î²M|E§„‘òîYª&üD`4 ±“é)Š&7} ÓnÖ³¤"…+y¶6&ßwNœ<ÛnH&¨ ‡¯4Àâ—àMJR4P¶"þb+}+ë —9“u³e,ÔB´ãJŠÏæbLÛÜZSña;0%+C4ýµ -ñŢĨÔPÔÇäõ‰äÛÈ ŒóžìmƒÔÒL†÷Ž×D^«°Cì,±à™?þ¤½™‘Ãç6ò•¨›­zÜ*(×&¦[¤¯0}#ƒÎ¹tujàÃ<Š^½Hg¡™†X  ~`ð6i©×²À…ì]õ¿ùDo“ ’9áô÷D¬ö ÿ]Ç”pv>ü“uËÃCŽrj!Ù²°3@Ì9ulË…ó³aS²<‡á¤ñ€ß&z.! T]Ũ؇±8êÝlîèþ¦2·Ámâõ»x^þ… Ôs<‹«Œ¸’.qekêØWÑ<Ó完Ç"4þ”ЬÓú}ùO‡ †/YXÐ_1:t›1£ŸDÆN[Êì½"m§µÇ¨n½ïQBމ¶»Lsà”L ¥²ø»JyŽò¦2¸áI|;.eË^ˆäLTx´ÉÕìû&¸‘ ¶½•EÓèù1Øá ¹ï—¤ê8* [G±©„ €¡ùû•Œ%$BÚÕ!DN4Œkίø!¬áÜk·¬¿³ÇŽºÓËkêy¬(ð§þlxjn­$v\'èTˆ,Ìòêéh„èñ8FYºcõ;Æ΃oÏ¡õÛÕ‹„"ÄUçD‚M’ R¤†§·¾ÆVÈY¡‘Ò³*®:‰/\$Ç!V ¼Æ"D| ZúAwZñÑY Í$ʺC´Ã!Äñƒ)9 j•c› PšçŒ‹ó™?ÄÞëêsŸ¶U£ ƒåÝþa•}|Éá+‡áÆÿúü9üÃŒA¿#º­©°Ýz@Ø:' mí»qª+H%Rãà;ÃŽ³å‡A‘}²[Ï,/ÈùHeì|É|ðQP× r™£ß~³¨çäbÕoiuv¿,x'å ÿL•†–)?<=šÍ ’üàù#a˜tdÝÒ¢lÖÔÚ¨SUùוßçÒ(.4Æð¸+Ót^ôâ)íðs«*6?‡£ÕØUÍ©½æt~ D{ z±›Á]×ë+1õ¯´x©®Ø~íZþWçÏý°–- ßs»áSêÕo°ØM"XÔ™¥¼¦QèÌ®%@µ\ވޛ˴¢ø@jwÓmË;oв!çe‚_°°JEç¿4| ¢| 8 °Û"­Ê¥¿vøÜ[ÐmÆž,’$¨ùÒ”¾æw¼Û[pódéž§S7£>“~:–©iìß'8lœ£"1þY+ß'Æ”YÌZ±EcMX¯b§:Ñc‰Ï¡Êt;T—[ðBÉÛUHiú ^¶Á*#F=73$í×ã7%Lë ÉVªr…þ9tí_ÀDhýh¾0T×(ß”VÂü]\¬ü\5Ô¢–iÝ/>Z³Y]…Oä 6 ,~¥`~2v²2)`b†ßÿsm6£¢HÔâ0aöd•8°„•Ÿ¨2ü¹ÚQÇÐ"-nÒ¾ÄÚ%Ô@zzPÔ ÖüîKsv‚ÍšÃcP}bÔyBÝØÜÚ¯a"Á¾/âÃR± û‡˜h?ΦJÉ.3šCÂHû—œÕ˜vû¬êú÷~eg©Äõz¾+F±TÜô•‰ýB¨XŠæ"ž£‚–8ÁzÑg9Ñ.ð%£Òp•JÆVµ³¬ñ‡Ü¥~]Cäþ±;@ÖÓ¸žÈ7ºu‚dÉ&ߺd3æ [C5+uï|Õi”5*"yk”5ý­ÍûHBük¹’X;¤ì¯}úTXŠ5w5?ÎWµ¬ã³=g9æb¿4n·$)Sû"Eó,9"- ëô´½ÉðH {Eú·3gK?(wͨìgðW}'è“·0ÓÃ*ÑŠðü8oOñAŠ®RÀqçüìwžöhœxàGÑ¿#ÑYmųoq=³Õr[Ñ0Î{\#?½7Q^40ª©B³—¸× ‘@Âl ŠP2SÜÒ/Nô0³4h¥•µ_ußÖ˜°šÖÿ• õ„i)}ùñ–ÅÞÜ j:lÅówÀéÁ‘|å·¢*N™-Iôë® øZn’ï¸þEôÏÔíˆâËÚ¡aí÷#1é˜}VÌÉg¼ˆÜAÑVh’ïmº…T@ï/ “}…%†<úµz£Gi 37kœT·I t¯/ªÝ2ì\‚·³RqÅõ뺧­Xa³4–9„-Rš”Ò˜¾×(ª ºš|—xyn¿>þiù-ÞqÉUCãÒM#“Ç‘¶ +iSÛ³åGD†9DL£dòXùmÌ-¶%\½3¯@ï÷?yÊ‚Á2ã8g+ çkT]&fÃÙÜ<ƒ>Ì/eÝSEEâ¶}©x-æ(2M U/6ut“ 6í"ø¬lÐ׿D}0A' 't0âïçDÓ=rA œX±øš£nψž"¾ÝzÏè…¼ÒõãÐõËã0¬íq„…àæç>‰gŸ–=«–‰<]|Œn7äïʇ)µý´pԈ毓U¨¾âÑÐîÂ%~ßgCQŸ0z蹜V| ¦…Šû`¿sÚ„¦TƒGÜ…¹5bÍâéø™“Ê6ag%Aà†E¼¾À¾‹L¶Ý¯íõ°Û•êé¹ }Ö[µ ?ªr4¤Üë(Šè"mïÂfÔ«ù äfU˳\Ô>fgø"´«(£N/‰î¦`Gs¶ì¼ÓMß«Úè€ô¶«ïQwu¿ž_½Ñ'QûHñžSÑUÃrCÛý³P…¶E57hå'avýɦT²¦¶ H²„»d¶ü²HgÔÌòxmõ,Ý_!æ/Æêp«ÂÒÍð»Ú¬Î>eÁ„ f!yf¦­ß Ï+W¹>18¸¦òY¦<×Èu±ö‰̃éŠFë¼bV¿c–:ýñqÝâ 7‰i¤‹›Äþ]áiYa_qž—Sî;$Cœ÷RŠ¢ÃuË`_Æ.ånØø)¥Ã…÷¤Íd$äßB³Ðˆ¹Èõð" 1Ѥô¬ó»‘°"-¹Pvý™tü>ÞŽ&Q“˜h_%’Àãh ´_IßíÌ~)ÚT‚A¼_ïn^ù¾“ƒø‰èxYΰÑVèÄnNžâè–èjj…îd;-A›f1ê³£ïm#ebH¾e&ÖÜô~;EðEÞUXׄAÍ)óاà\:”C¦<æ“©‚ŸúnŠÿ€ÏKn €Ð,q-\žE+B}ndðdÌœ¿X¹ëPõ+]/}jtš5±ñØû8÷ Ës~#ZÖ8’„)G?dÖ<7‰ñ ›Ûˆüq‚üû&4ÿýÓqÇÃU0;Œ °èžð=ÃqÓø Ác“å—ÁÒ<Ö`P×U€Î#ìýú!a´*î§Ð®(ùö³è.hãljƒÊе-[—vÛ¯QL¡”/OpŸ›£Üg šº¢פúi»[Ïù»Ú÷ Î}­P„êl³àUg%ï(ëÃÒÜß‘(s™`žE”-D‚LŒ Bé9[T¯.Æ´€q ޵Ÿ)g]{@i$¹”Í2¹” ?Å5pìÇÛCEÜì±ûƒv3§|ŠñÙ‘&ƒ£ùJ0ÇZ3î|Shµ: L}?Œ±Æß½² %óW›C±¬eC˜ó$»ÄT*U w¡¯lÆâ.>>›Lóu2˜’“5Ço2h­aÈs‡ÒR6Òá¨H–ÓR•=J—ÈIÝìÿÖ/r¥÷z'ªîOštÀT¢âm;ñ5~v»}Î…©m³Ôs-2Ò’ªÚVbI2@Ê-Sáþ„®8s!¿^sXkƒKFå«EËWëûÀîÆð)§qÌø‘ë?ïµ¶«£ƒ'CÓŠr+ŸØRoÌœé¦Ð:!üÚ‡’.ÉËr¹êÁ­ ÌÐÒ8ظíÇpºŽ‘Üü¾Ž.BTPލ?²É9ÐìÕ@‚¸­N퇣³¾Xž‘»o_V'f1RJÕˆõ{ðøéÁMž( ¨ÿ•ËËwõa ?ù•œF‹³©|Àä›:oa~Ïû¶F.Ùð„)¾Ô_4¸(#‚ÞšÐ×RP%ˆ–”ï”#P'©b´G2%)ÐJJx-¥–”__¤\™.ó@H ™&®‘¨Øl Ë2bA̶mÏ ‡ëöðu¾{ΉÂbe"¯áåäà=ãßÅõý’“©¿:{ë'ù°)Y „7}è£ +/&lÙM6æDCƹr1/Jke~:únÃëèðþµUv¯CÒãË÷å|¼-N§5éNmØky”¬4 7Q,ÇÛ&yq™ Íø?RZ¦H¶”ŠañH(? 20´[Ä¿¢ÚÕb7É™>L<5°«³He*Éù•·H°‘b€e«â='zÉ # ó‚Uó9!9¬IðÜÔB"»biѹª= µ¢>=«1¡ŒévÁfs|Z"¶Ñn™çRLü¸ÌFNr®xX ݸiJf,CA¢ÆÉÉ6¶\è6%Ç_ûtšÁ3•Ѽu"³Mrq¨Ih›ÖþZûä¢Ô\9$èÎ#fÜj½ Êãm(l8Ð3¦Rç3¦tÓ¸ÜHðÌ’ä]ZªìÝO[o‚¸…´L†¾êÅŠ»¬A[àÅõÍu¿>’Ï-¸[érob„ñš2dXçæ*«)rþþh#=F¸ºÜù}4&Þ3ëÃæ2ubcÞ¢âÊc¹¡DM6߇©n°¨£¬ù÷Gß3Tùí,ðr€Ñˆ2b›F´ÒôF>$ã™ jLµkOß;Dl{¶^àhòoæGUZr Ãåsb9°åXo€+~°ýOtUY^R¾²Nï´F÷ /Q®A+6 ;ÚÖôGäé‡Nêuäi¤Ã©:$àÚ#f2P ÓÌÞ×òèlyYSöÓ±‘Ø΄jæ_ŒöÇê)®ßDóyöêHÖQ9~=™ÜõÙ‹êà×¢ûн˜^èÃØî¦Í/ˆ~áK¾ñqf2%Æ<ßm¢ƒ~̲í%?¦Ùeqn®ÄéeËrô[’<,¡(ó$êüHÅ;|8ø{O¦­À°v­áaV e‹Kàxù;$áÇ„¹«é¨§FÃÕÎöVDë‚Öýålc½á@ékY¤Sk§tد'æxÆjá4A0Jh¾E(º1¯Þä{×~õûÔ\ÈÍCÌM!·'ýY$D¶µ·B˜yŸPǹ—fw8ECXóg+äDÙJ§¶àL÷¡Oœ³|¹M‘® g àohz·_…êtÉœK°~õÏ)˜ÒD¹·úÉ~ÐYú1Y+@‘Éf yS·~Axöc‘XHïØ·óÐÖ²_ ÃX"ëfŽ— ™KµvB蜖×NäÈ("‡3/ªmÂ9‡íA™UÉnÝþcâ@îñì˜aÖØ¯Ùh¬=^íe¨ÛÁ@ìmH‡Íp™cCL×]ÊÐÏlÆbˆÏ™$ 2§"‹›Šz‰ÒŸ|CX _¼Sƒë?i„LÎA[?'ðÉ\Ôp¹€ª¤O'ƒ™ô<ÓWå}˜åG0’¹¢1å:¥vÕwh¸«qxW¹4%ºžM›;ª+UéißÃël^>!$~jÁâÝA°‘ÇÜO8˜¥0V¢äS"*Óÿ|Û¤ÿ Œý„`þVöƒ+p£‹kŸé%ÊéËi÷w=â}°ÄÔöõ³&ÃÖÙÉt!~êÓË`0YwÓç\Ú|ÎæŸ=µ‹ˆ õ†zeÜ?yðçZ†áH/Ö*—¼rZ'ˆµU‹ ‚…§Z k‘Š,9è­¶1€ïëüÙðâL#‘¶·Äù›¨²ºõ, â+E²!ë.$•Ñ‚†¶VBÜáIÆ´o 5‘ŠãÐ⽟iY«Ê*}¥BÌBÆC¦fl}xºÒ­QÃv(xß ©Ëê0þðM6‚Ç™ºÒfʦ”æ§/[¤{!2¶¬=ñ(Û¤@C›/pvâ!E 5U·Hä„@>³ŸŒÞtПö¹N96Éí.{ŒŸ“>-Èõl6þªÚcßò«/·B¸Ò•®CIõç(^´ïÁ Ø}¾%MumÚŽ ºˆÎ&"Z |. ÷A'·Ö}D3Î6m¶Ñ­'/©ïÖæxLšV Br–貎Y&¾äÇzƒÆ'ñ:;D³/75cžÎWé´Ö³œ`º¬%å¬.FÍhWÿ™Ú´‹;Ö¡\VtSdë³ß (l3dW„“pZ#ÈâÌO²Í”µÅ>ôDÛWq£æéµGÝÑìxÕeˆ½¸µxnñŸFà(¦ 9¿SÇ(˜Æš—GE>yœâ ÚÚñÄ ÇýþæxZˆx÷ë~Ç/À'ß;@!-4 Êd…nýòÚ·‹·M¸¼?H"K;;U"÷óþórK5E‘ôÐg+žTšr'µ‰œ:Á’âÝýe)ïZéc[á“fŸ3󃧠У€þVäò6ÜNÝ’ ¾Í±Ô$=1^nb»¹ÙWg‚5ÁwÝ»æø«ŠÞñT²2n‡jÞµˆÏöh8"N?…\\€§ŠEã¯Úó˪"P×›„’µ%hd9¨^9ß ¨ÝÀÞ*H$¡KU·êÔfØå;Õ ŒÀ–(‹-aCÙËZütbe¹>»j–7tŒÁÛF˜NþMÌKô ô­+v÷•gÃ*©:³r£òø&l/£Ê& Ts7}ý^€)/·Ê“Ð`£%PØÕÿ^ÿ˜Ä d„\ ór|T01v²Wä—/í{h  Fª€w ­ºÖ˜N’eêzÂÙ‡œæËwô2Pò+Ì^ÝÒqÏ"@¦¶eCKª´EâzÍ÷c  ƒT¹¦€³Hû“»5Å[w÷Ì—=Äø&v÷Ø”s·ã«¬“OÉ 6ø­«/)\4šQ™=…”Š·ÍàJÿ3¬d¢{^ê÷ ù:þ1®AÎ1±½+i[³’#à‰¨KCøÏ¼5–¯„V^ Áˆ¢BJÆv.¨÷š5dzw HÖ8@uÞ߯,ÏÓ:ïd#¬¢„÷Z úîñ£ŸÍ™šÚH§«<ì…%*ИtÍa²O#yæÑ4jŒ…ÄŒ¯r‰ïå¡{$]Ra3Ê϶#¹ï=ë"ÚgÚE8ËTó„Ø×ƒŽ…P1H uØv/⃖©Ä£$\‚I™DÎ Up–^ J¶N–˜ûŸºM¡L¨òˆôwW»A¾ìåë¦î¦VÓ¢i±*õ5¼§¨·…(‡×ã )—8”àî4â j2‹9Œ–B°âp¯öi1~˜ô©íNý²´ZAtŸ÷=âaŒ¼ òSz107‚Ž Oüº¨OˆD1ÿ'g¦`Ĩ‘¯“Í2Û1¢]ÿ«WZòRMZ] Ÿ?›*þ½z +‡Û Ä~D-Ú×HÙQ;ÔÝ$ȹDüŠý]WÌãl^n²ÃLž{ä-ƒL#—ì¨0ôCNšn1òitZkÇ›ŸKßÄ·ÀyGTºŸ1vøŽé›˜7ûlÿG[Lªšºn„n‚²eZO“©FIú5XÇʵ ;Ì,‡w‡PSV¿}Eþ .‰_ö‚8’r!áœ[èqæV÷ìeq7krðmË•_´ìÚg²¼ü‹ZñpìÉØÇÇcáòÅjJ@n5±b;3ΡmZ¡3|Rc~©y3ºÎµCžéð_ëI’(ñï w…áhp˜¹ _Ûº†¿pyßœØ.zÓ %¨í}ÿ:YÛmò•›is§•×ëZÊwŒÈâc3u…ˆ+Dþ3ƒ±{7Ì€ÒX„U[Ò&3ì~šî¡«†‡Hs›V»°#Խ咦±³†˜Öm*ÿtšæh™EÆŒØñ}FT¢¡éY!µ[dzKùx§!}S,™(ÖÒ{óq™üSÏùOÉ&Ž'yXú ¥÷ßæ‹Ÿ~`dåÎ E£6çÈ´;ÖàÔ Ózq¢ôlE û㟜µ9šHÏ(ÍÒFŽØ9{\K­\ªþÂŒï Räý pu-ö{À¬¯ìr®t´ðL Ç5Â?®³ÇHÝim ˆƒgSëî]Økáð0ár’(,µ¼Îƒ´ÆÙïO‡iáˆËõ¡æéFm —"C3þ—Ã’ÖvòÎdh•?4)Õdú3¼g;¯%НáôµëT, ÜŒ¹ŠÆ¹*ðw÷$çÆXT ywQB4±a6Ú‰trؼÖ3UêHDŽs¶Qúéšï†ï·¶MØñ7îéz¥t©­`¼bú¦…Ài5ºÕÝTµ²Þ›:•íNº6kÚe Zöï·Œ™pæu‚ÓrzDO·–‰x`¼Ûþ"øs7N¥UØÛÓ„´U#¬¯â¤”ªGEdì·¢FA%A?ÞQÖ•ãCæ6qÊ_Ç ­kÄÍoL²ZUé ¨„$þü™Ùõâź7’ÓNM ÍÁŸ)ë蟳Åg·íeTqÓ[œïw‘ðº4ud¾ä57:ÒWŒ3rL¶fí´Á(ùÜê±cøEÔ:ƒËc #'K·ü˜º´'dl¡æ\Y÷ÝÄ%Ë Éå¹û²ÉuëØ ‘¨‡ß \‘Rß¹Zfp]†“µ¶¿ÿƒ¯|U'Ì;>¹ç`ôð[§ý‚HþR¯I ù4À´?2…¸ÅÇÅÒ@®Øð(¸y©qiy¨_¨ÛEêy®ˆjiv Ø–5Vw÷>¸Õòã¯Æ«¤ÇôN˜3à04RªƒÄ”",¸:wNÔN+Ñ1c1EiÝÏeºÆtdFl»Yn £BDÀ‘!ÖõèHy1ñã¹K§d´&åRÒRWlÕe(ÕÅ.'‚ƒõ`ÏîwöµÞ~û:P•‡^"(íÇWŽrñQ»Âf¹®¥º®³€\_$¦’–mTn—ý$J½ = ½Åµ`…i×ÕOtâzZ󜇸–Nx@UMKœ%¬´ZM<üw½ç8PòY÷ªVŽ8eÒÍ-¹Ó«FQÞ@/+f¦BÄ ÙÙzä\:Ë ¥«õÓ >4έ(ٖءs Ü ~3ÚÚ1Wš~‰»iÍhÀ…áV¬å¢¥mÍýin•¸íg^–!$ì*Wrè8ƒ·ß¿ç5 h¨SÙw¤¡Zñ'ð<7®÷×k²š%£v´žòˆ|/’B4ëÜÈ=š5ÌŸ U€ìÎsÛ×}¿~ç°fO1Ö¸kŽ^³ªÛü÷Q`)gBDô shcávtÇXfOýCb—Np÷UÆç ÍöïC¥KpE€‹È†á6å$ñw]ÔÁòÁD·üÐ_>…¤];‚õX3sŒÃp¯á5tø¥ûì#~-B¶è|šw‘kÿ††€–AóÂãŸJŸ ‰%¿#$F'H¡hÁàôRñ >­žæÜJ¶…²,u¹½ÔêÚÁrê÷Ã_®k– ,ûÚYhJjäGbõZÄQŸ àÃ.K=[8ÛC±ÆIo¥ÍpB¥l¸ÕTsXwžíï¿D Ýæî-|I é… b§bªc ÎŽd*á%¯×™íÞæÓ%µ·WÅPýV´Ðd¨sèb(*PÚ¦»>!C äá‚^},y"{ÎI?n¦“‘‹ÿ¥?²Ïûçªá{d k?žÂÈeæ½H_8NRۦŜ1YÅ0 ~´€„ÇoŸûpÈ2El×VOÙ†P;…„Í~ú·Ù' Ô Uy%Xɯ–«;u =E=þZ$Y¬–xå)ÛÞÉ«73ÜçÅxF”FçÜŒõŸ#=)c¬}¸ó*êÅ¥ž®ös#z±¦ƒ¶¿¸Õ-I©°­‰\mefZ¤0~” ÛǼ†\2 A7g_;i:ÀòØÂ˜†µ¬òCáØÞÉå—ãÍ£ú€ZÉX!]õŒOÞ“ÏžÑÒ95+Á`°¾ŒÊ°«”®ü99`G7lVYSñËr‹*VÄNÙ—,ƒ [Ÿ“Òö¤Ø‰¼˜ï‘OÌõ”ãáã6äà:Õ¡É\2ó4~pœAéÝ/Rl#±·Y”(C‚P ^å¼Õ§kÛªAe®m@ôàø1é^®k•Sæå Jİ©².ßJbsaB Ã{æ²tÎq+=›Uq¥ræ3À TP†9=¢ƒ…? è4~;ycf— ÐÌOüŽL¯ 0s…(ÙwÎ1øðä˜,p,╦ ïÀ_ ä ­ø¶­EGLMW‹š"{ŠXγêªp³BB‡ÙˆÓÁ•`9¹JŽd1)ÐZ+êwß®öºÏÂÅ‚zµ!ŸÊñvÄ?‰ó3~Â>cÜq'0#jwÎyžR<øàÙI¯ù:5^tO¨€ö"YN+z§Z²ï;tõÈ왼$¼®¥ÜZ»¢ëçE ZOäGQ(cÁ·šÊöÍbúë¦ÍäÖºÙmVé-…ª<ñ¨"°èíúQ}aU²»ð ¦™þæËt‡Ï1 U^b}Ù¨¥rԺȦn# …u´65|i•t>w¹ò}<õ²6R«VBS¨¡[wöveB5Ÿ`š¯m‚¯,—N²ÃS;£‹Óÿ i*• endstream endobj 97 0 obj << /Length1 2077 /Length2 13944 /Length3 0 /Length 15216 /Filter /FlateDecode >> stream xÚ÷PÛëö ãw+(îîîîî ¸»»»»w·bÅbÅ)§X‹Û¥{ïsºÏÿûfîÌ$y–?ë]ëý%ä$JªôÂfö&@ {;zf&€¨¼š3€‰‰•‰‰žœ\ äbüž\èä ²·ãù—…¨ÐØåM&fìòf(ooqµ0³˜9x˜9y˜˜,LLÜÿ1´w∻Ìò {; 3<¹¨½ƒ§ÈÂÒå-Ͼ¨L©ÌÜÜœt¹„mN Sc;€¼±‹%Ðö-£©± @ÕÞtñüŸT|–..<ŒŒîîî Æ¶Î öNÔtw‹%@è trš~S(Ûÿ¡ÆOP³9ÿ­Pµ7wq7vÞ6 S ó›‹«Ð ð– *-PtÚým,÷·àŸæ˜˜ÿîïß@v9›šÚÛ:Ûy‚ì,æ  @QBŽÁÅÃ…`lgöÛÐØÆÙþÍߨÍdclòfðWéÆ ae€ñÃø9›:\œœA6¿92þóÖfq;3Q{[[ ‹3üïúÄ@N@Ó·¾{2þs¸ÖvöîvÞÿAæ ;3óß4Ì\Õí@Ž®@i±lÞDðd@;+ èz˜Z2þN æéüKÉü[üÆÁ×ÛÁÞ`þFè 2¾}À{;».N®@_ï+þÁ33Ì@¦. ÈþOô71ÐüoüvþN €.ÓÛø1˜~¿þûMÿmÂÌìíl<ÿ˜ÿuÄŒbÚ:JÚ´ÿPþ¯RDÄÞàMÏ gae°³r8¸9¾ÿEÉôOÿò”¶3·pÿ]ì[—þS°Û?@õÏzPþ7–‚ýÛÜTÆ\‰Éôíùÿó°ÿåòÿoÆGùóÿ[‘„«Í_zª¿ þôƶ Ï,ÞæÖÕåmäíß6Áîÿšjÿ^\y ÈÕöÿj¥]ŒßvAØÎÂæ¿9K€<€fJ SË¿fão±úï=³Ù•ìA¿o=3Óÿѽ-—©õÛíáü6’©€o»ó¿ÅíLíÍ~/ ;ÀØÉÉØžém’XØÙÞÌoÛhôøkˆŒ vö.o.€7v¾s{'øßGÊÁ`þ-úqEÿ n£ø'+€Qúâ0ÊýAo~ò€Qáz‹¢ø_ÄÅ`TúƒXŒ*Ð[Õ?ˆ À¨ö½åÓø/â~Ëgü½e0ý/bËnjoóÖÐÿHØØ~Klmÿxüî4£Ù!ë[p3{c§Y0‚¾Yü}ð Þj7ÿ|+ÞâOÊ·¶Zz:Xíþeñ&ý ¾Õió/øFÂö|[`Æ?¾¬o®v®¶&¿Ïâ_!ßnFû?IßB¼=kþ¥~+Ñáú-¤ÃÛuog4ÿÃù©ÓÿÐc{#ìð¶Ÿöfÿ ÷FÑñÏtüF®@ç¿f÷¿…²ýÚ»ÍLþÅùMú¯Ö2¿±qþ“éí,mŒ-ÿeð–üO)o£Ïèâþ‡&3Ë›Àãÿ[½€Nëÿg7L]Þx¹üu}½-Îð_O# Ðh ¿²doÊbÕÒ}W/ŒïN¿7Í?O¾§™AMï½âôÉõ6•º.'hËéF8ulu}WœêZh•øÙû¤£6¼3Y¹ëÑçÉ0Qen¯ þë,öðLɉpÓ!½šÐ¾Ï³£F 5dx¯ y£+²RÆû ¤GÓPåÚdØÒžò~‡,ÂSåúXõ½À²òB“ÜE\RzÂw4è( ×7óèù3¯Ä2‰´ð¾§±¬½u¶Yâî½6ªÕXœûðÈðtp !¯Ñ'ç(¼EÓdp–½ËKc¶ø—ó˜¨À¶&‡ˆ}&zI~ðèÊI£ã0Ù8­pKN’ùv51j}F„ËÙS5r it8A^Æ¥5ww—,Rl/4Ø ‡»p¢5“w‹‡UðôÞÿ¶u­}r-{ò£qF×k\×|~k½MdCì9ÜÑS†à×>WŸO‰UvYƒ÷g«™S‡y}ÕOÃUâg®Èð°%©™(¨%Y­œäc‰× lzpuÜ]&`pzýÔºcx«êk Ž—û/l? 'u2¸d½ÜÝ Z” Ž/>õQwbš¢ Va€ípñö)æ;L ®¥ƒµy[„‚nM9¶ÈÓØøUÄ€ …J¦lE“~äTŸê¼RP{ß+J|õGþëÊÝI‚ÏÉ+úõü2&uæûu¾zŽ{ŒÖÅ4†7ŒjRˆé&ÎeS ·ìu.ò’rt…*ùÞûö$nõ~ž3¾^²b0|žŽ-X"nÙ°Û58¾v›—o›§ñ°m_ÄÞ×®MÇœ8]GbpÚèNp0÷fëóáª:È?ÊåÕ?f¬ë±ô™™e¸+S†Ú«—]€´Í±¹1X§Ð\À‰Þñ&j+ºx¶•|¿q^E˜ÛœÞ‹¿º˜9Æš !ë'ö‘S[Sx]þQQ 9Š7n#!Fjœ¦ÕÇëÛ˜t—‡¹o5¤­u-¾ìZEÜ]Ì>Òå°– "Ý]ú­0J€ýTQÀé ü)–É\*sa‘íÂU÷É]ûÓç´¬¼½\–n]—Ù/cãi«Å1Í9‚–¿2£ÚMr¾½Ð¬BÀ› 4Š"(…"†fGò¢’\VPÇUø¨ÏWœÄ˜ãÀÜWaˆµ”¸Ü¡.˜¥”ðWgç°Oýìö§Åo-9³âì'? ½¦cï`Œ¢QãÏEL¨1‚Í:F¼W_Ÿ•8j¸Mè`NqŸ úÒ¶Q$„4W€ÃŒ÷¹¸QÂ@E0>75÷j Ô;Ö ‡ä1‚†ÙÂýö€¥¯±´ ¿µW¨jG¯žÓkÍØëxŽ™àˆ:²a;óâg`´¸G6eçhåí1{„„©?¿UËΧE˜%SÌÃwfÄØ§»ÉCÖ“|iýðœ¨~ÏöFž¸ÉïHæK…ëÇÑÉ{Ç—¥åæ§ä½…| KbE"*JïŠøÅÆ d÷ªÕ}U`6%—ØëåÄþNËÌtß¾/Ñ­DM€Èb¹ý|lgâ ¨àþô3Ò|„“•WÊÔ„š0dpEï9‰ŒÈÏÆß²5GïfxÙ7rJ”l…Fi 4–ǽ6Æ‹“²M±‰ÃqX Ôáó•Üà)Þ××ïöW'êߪ¨dWŠ~…2¨cæþðKøÇ7ZÁ‘²ƒõêc¡¤Fž2*MÊ}:Èp°‘!ÉJDZŽø¶’ü¡w”*«$‹ ²‡^þ¶ ýÅ¢¶V,eÀÚᵿ6ƒ£eÆgè[müü«G› ãÊr÷É…Zu‡©2£šš_;YòÜ 0ß 1e,¾˜¸“ì¤#Nv;Ž«}I«ëƒ4 ãÑt$Ñ÷ ºw%½–T@ÁÆPî m[À ª©ÅKWÙIEm¾·¡}šJºŠ»ý\`„¾q³´˜p³¼ ,'rˆØB¦â‡ªÒfîØ¿©Š,Pï«.gEe ÒýÊ+3Û±a§4™0Ùp¤K“ºa(&×r }ƒSP°»Õ”¼‚†ut"jiX’OèùÕoñx´`Æ ÁkÿÃfðSú·Î”ñ^ ¦ÃÝD <óY£¯=J€,Ø)UÚ¹·ðûYgù]B#Ab^Ë„/ªúU:z¹Á—Õ2ªÇUæ^·|yp­§¯ÂV $P?ƒ­Ùù‡)²µ OAD+î?Ã&|pÊqsÃÜD뢕€^»P ›±GFÁ;2°Š$}U/^Ã…#Ÿ‹Å¨¹Š…s\ŒhÓ§íWŽSÞÕÖ {aí“ø¼ø×ÓÔN™¨#$@ÁR3¸HX:&.¿DÑ0A8žt6Ô „(`¨Ã ±Æos¢ p+º´ê²úÄ^°;1Aþìpþúòø• v+U3ƒÀQLnèSwœ÷ú£FÌäQ3÷|Ÿå$I™W/ƶœC)ʲȰ̯òÓ%\±%ÛqñÃ:¨“qà%ïø8·¼ëä6Ñ>ßjP“c ;´_g 9ÍT³/yµóehÓyu­÷îrÂéW×yå¯Ì_Z¬ýæšÈƽ*°mdçØ3ÅTòÍïÙc'-^5Ô'Çœ›x¹Z°Oë’ÁuTÄÃ\ÒDü‰Á]“÷14Óž®磈œµµl‹7,·ù; ‹':p›#Ÿ*Šnü€/¸Èò£Æ4Å d7‘„½nÖ[N9ÕOMü§>·ÂVQ¶A`†Ûµ+ ÌfN3Çd”jnW½À–¯¼j¬#Vd(¸ÂÐr¿®¢°q¢E{J¢PÍ ¼lm!•" ôE‘Öxï Û+¦øT›ê¼x‰”ì µéoôÜo =ÒöðMH§±RÁ_Ç`µûBÏÏr–p"ÔJ-Dšm 0Vb¹ÕŸ%ŽeêIÑuôV¡Ç¦-c¾öL÷%•_†©CpÌ,&{löÈ… 6<@$ã<ñÉFóÖ^?j¾’Oj¥„\C‘} çÁ1ãvØm–00Ë™&Z’Q¡çÐ¥W£ùÁF’;ç© fD)ßòL‰Pó®îǸ1ÅÄÜ[ǼI`öˆüáç¸4ÌoW€’>ú§±–ËlðÞ—Ô§ÃÔNiHºÒQÁìÜäÀ›]‘ü™éѧe.Ÿõ5É™¼Ís=ÞN)Dx»áo0¦,[uÄZÓ0˜Ì$‚<ÛXßÐ:ÒöP±]>}ÞÆ$Mµ‰Ríêzeå§ÀB}ã[–Ôéb§ˆVô¡ïBOC8Ü®½\K„L‚ᢇà@ͦÃFNkèN}HÈÒ§Ç0èñxñ«†hUUÍ áîi“…Q— Ô\Ï â.ó@GaŸõ¦¢é#Ü© ëÏJHתY{\d[Y˜äI%›½c âïß9¯Ê!`ˆ™…H'/qpì­ü%€í_-`päåA·êm4eªï”½Ãa_ÛÖÒq]8ºYí"•¬¶.ú<³ HUäuÜ Ôçº'Ãôlo‰°—sB ðæ7ïk­&£HÜ ùÒ\“ßÓD#£?T>¸˜9ag‹‚+x™¶ve•=±KúMùhÏŽY¢ ̪ÐÁ£võMœ½({GyöfŒ5…›+3ØpiáŸ!JÙ]·øeˆÔ®j’¥"°À¹Êµ¿µaÛµcÌÎx?5Тtß=¼Ësyýâ«ôtšâ2ˆUT&ãєʵ<:¯B°öGÏ{ÜÈuãU+Ÿ¸¥ìùQkDüS(ç€Þ¢“]P˜‚ qËñKôÌUæsDuu#BôU¢Uoú§÷µ[«û´Í°šÀ÷‹³Îò‹éÑÔ•wi?û·a+e.µ5.'²¹šOû˜ûŸaÌ>ÈÈ1c bÈ7 be›”M*÷#œ÷t˜›¶ÍÎç;5ªCà³°ñ‹=OOd×®“áTÝ»Ô?1ƒŠ( 0„e_”rÞz¼^Ç>f¼Ú錞´Ö ØpÝ·øîŸò\½t†êKÉf“:›²'t_×k¨(½ÕÁ‰—=Ãè`ååIoæ4…ëdŽ_øi’øSfknéò.dy¾ï¶Y5·b—2ÿ=¾—7^ljIËÇySk%“w~Ã`_á™ >ß•NyáïJÏׄ ©·G«T’ÍÓ}$ *?e,8+9Ý ¤Ï€áêoÊy’‡sW¿Í9eKÿº:H—³ * ×6Úê ~Õצuü%ŸXBÓ–ë׉ßçµÞɷ騾/:+–®]†Ÿ/¦ß9±eëš6Íñè«x„'ΠfÒ¢ƒ¶Øá—…fÈ¥QÔ|†WӌϦrDOˆ]Ò8Ûr|ñ ©Â>L&=N³Ÿ¢«ÃGS‡ê>äxVJnLh?|šÓLñsñþxˆ£ft˜qâ^Ýz N39¬ ©<ß$ Q†çÑòŽ·‚´tÆ0{¬åâ ½^rÔýw9"“¬~º: E;J.¬±§ÑÊšZœ÷â a”¼„/¡ÌØ€ðݰœqJ¼ŸÆ:Û‚òùêÎ{ÒÂi“µ/Bi¤Êø)îÓVÙXÉ‹–ZÌ·M¼”×å³ÐÍ¥Ž(|3Tç?ýúÙ%ûB€\¨† ÆÓøÄ†pfé´6Uj¤ÞD ŽzC7' Å5좰wà æ0iùA•–Á[Œ™]…õ s?†çÕY¯,DÏ0•«0?8ÀûjKÃÊêÝEÐõÌß gœ«(MÃ*Yƒøn5ÕÀ÷’K¶OŒ"\¦#’”†³l&ãoÔ¼iô˜Ô¦ˆÈGEV÷  ¡™RÒð^¼È]4§h57 ­nÞ‹¥+Àì ¢;u³-'/ áÝ›õT¦÷§¸Õ±c6Awæ°±ÅÌUhÛLù•@¯ÎUkZ‰\„/Y ³¶¶ÑYk¼â5urǃú9R>5ªÉõ ám€×£½°½ew„Íe{õ}]Ã(•6È×ø÷™»€ÑÛò«Udìû¨ý `ÉY/ +xÀ;m5 Ô (˜U˜_lµB5ãŒéˆ ˆüªs¬ì‹üÒ®…— ­RCZ—æBjá%dï­ò»ó]Óàåú‚Īr/%削tÕe•=3â…8_ãM0¬ÆÂ+0!Ü?¹•Aâ0má²~4ìµýÌÉx¸å¯|ù«ÉÕü×Nü%¥4œTQ׎à†£Uåe&5üxÜIÖ|#m^k¡0úÈá¬SÑNW…ÔlŠ(÷’­´ÏgN§FôŸ’÷ä<áW2N/­|›TU’ƒÍM~uJG0²;› x8ýÛÚÚ¡bɤwí)d˜‚æmœDé«Y[¾hIZßí#XŸr(whÕB>œ×~ùwÜ=IK0ãÉ€TLWøÉóŒÐî;K0xn4<¤Pî .Wé¾óÔw™wxSŸÖ~Lh2ÑQÝ9"PÔ2ð"á é-ØcãvÏ0ï{VáD/‰oÚl7š°_U ¤Æ3d¾•åQû½b’ç”™èö¢) ~¾âÅÊWqßê¯a/$ÍÓÜó à]¬•æ8‹…HÑ‚ Ô3‹:”½ÿåì˃ç­,Líþ^æØVk; ÄꣂΠ¡–íÈžhâCäwòÄwÄòØÇ‰g"옟ùþ£œÖ‚"ÇÁ##*%„ñÌÂå'ˆæÞæÄr¢Np¬K.‹ip²kIºÔ×Iy#O_ÉãÒœqAjÓ¤uèÍŸiY¯œßdH¸DÆ?ÅÙ€1¬#BØ_Í`·,ºF¸Á˶…¨ N1éðUv_ÉäÙ‹C|[:OAâÓŠ03Ê"øl·Б ÷lóÙJv¸ÅzZ0q ”5“1•þЫNWK·"ª:£‰H«µÅ,.¸]¡¯[ ‰áTº¬ÝlÈ|j@·§LŽŸà•=Àæœìw¥”#š2ݼ.²‡‚/€+—lñFå#“À “ÛŒNÁ* Ê:c ,"ÄšoSØp#…à]~Ñò{¢¢¿Š"kS®™¾:eá;gO«ŠÖîCð|ñG|Ô]x\0à#¡/e&«g—KÙ”GC“¦xÁ^L‘>c7ûƒ.Ã}F‘)ú¡03d·ÕjJÓ%‚N[^ƒµ.¡ig&ï;£¢íši¢ÙTã–u`*hh!oÍ®c?h¿ù <¿)ø‹yA¤ÎÖÉ…§¯-'Stù¨Õ»Öcúâ\m‚ù_Œ#`ÊP¦wŽXX@å.pTŒºƒB»>¼¢¥[`úÆN»‹Z×H!šítÝ¢ÑQ``ŠØ7‘ʧ‘ÚFåF2†"uÛD–e Ž—G\ˆ$¼c W3#ø½4ƒ½rò·Õ#çÙ&½)¥ò²xéÆÞ&ö²ÙÒûvsê!öíøî‹„W¬Iý‹±>‰*=Ž„‚hU”(ûàªKöÒKzƒ°kú %5‹ÑèX]Ã-ÃS«0‚Úâ—ö’ºrJ.wùrXZq·ø¨qÒÈöùÊó ÿoÉÆ¥ؼ3ÚˆqFM¶ˆ· ÓÃÀØ«óó Rçm£Ýà{»qÂÏåÙ¬û1ÀÙIª Ã_íK±ºüd§*÷m¯ù-/ëÕÐuù”;2<¦V•¬¥Aæ,ð I-<¬¢¢ ¼Š¨ãn¤|þØ£M‚Üü½ áÆIó¸£Þ˜ò]Q­7¾rûv®¹¥þ¸ÙÖò5t'·iŠ CMŽËÉ\nª˜Z}Ç–FæûMçžê¼¿Wññe»Þ®·oaOz-ý ç{@˜»L-Þãžt‚ÙÄm $Í1 riÍÏ ó<š­\*Ô8èk¦á,}Y(ÞØe‚ÌC»ö'V*IjÓ¤!ÔÎŽRÌ;V €;aj: X4ŽÇé š^êë„ÙS i`ŸN½¥÷åŒ z·0Œ½BߟMƒÓ.-ZïÍ<Ú&•±¥3Ôô¶ÏI1‘JòÂ{» tŽ]bÌîø"nÐ.û– šØ³Âm#1¥»Üøz£i꘦[“§ü´‰¹[vGÉ=Ýb˜lmX0ê\k·¤nyèA,Šä ¥>öf itܬÌד’x?ÊDzÁ¡O®/ ‹ìøA` jN¿¹ð@ÚÆ­ÖSé×Ê“Y̼.d Z§×œûwÞ9K0ÓÜiuGZˆª\§èÞ¹‰È‹¹ÚÕ2lÖXΔdN´Ù.YÏáûœÔ!Ô[¶Ñrš“Ê H»rœÉÔ5M7maË?§[I"úº_ͨâÙÏ4;ð(õ8òã7A<œu×Vïm³3 +IZ(K¡z1Y;<0ñùtgß« Î" ðNì6 2;Çxò Òå½?s‹'µaÎ@LrÍmˆìºð­j~8iÒt^ƒcMò@ Ü÷ÓŸQ~žó;}”èê³~››duŠ Ÿgòn: >\¡µìù‰)Kàµtä™%kt×+’¼ýQÒŸw¿ FM¥ùHLŸb7Ý÷O'£eZÑ…ƒþ$X'ù  §@£LeŽø“\ÿPþ#Âl?­ú)IÇ ¥x‚t_Ö²åâ¼ÆæjÏ'y˜"ãý_ÔkÖÕ?Íf¶;Ü9U»4ýOýÛX¿¡Òn­„ßž¥×‘QæN¢¹WÞ¶4|“‚ž÷97vj„v?iÿæv.ùkîÎÉÛZ°•îçWõWòëí§SëwWMœJkå‘üäë=[ê÷F˜/ ×ÀPu²ÅÝxÂPn;}¾šÞAEBJ‹OH!Õ=[ë?»&Êq£{4¹pcŸ–ìf–Ù+,sÁ¤Y«ö°LϺs3ÂÖö äV‡ßóÄaæ=qY„Qtõ†¹~TõÀdˆ}gP]Ž­i£ÀÛjù8=ö5.²¹HÂVŽ\#¬Í5èu¾ÅK#mÆc*>WÏÈTL°œ³U‹=ྠ˜ôÓµ‚k8g^#•gÝã,2¡\ëõ[ªWÄÇÕ·úÔª6÷ë Xö‡ÙqAÎìÂÌE‰žì÷`ôŽÃÏWñÝ› ¹ü=©r̶H!²èD¯žŸçšqdÅg+§fŒ(F_ï4É÷±0®Çü5Y¹IZDPÍdâ/ }ãDÝ—Õa*¬ÐËÅ?wË/imÓÈ~RŒÖ$eC´:V¬‡·N!ȉŸ* #­uH¶^=Ý[ò… ðº“}èËôü` =–”Š,‡ÒÇŠÀ{x—Þ¬DÚD<=Å)/9€Öj˜ØPe>sÂò•üh+­`5Š-™ô«–x¶dÆaiçÀµ$WÈæÒÊCþOÏÄ8afµjj?…¨“<¶´à'Ž[t·öšÞ`Úõîºì)†ut'•\V8ì{“Z?*›`úsÚmùúÙŸƒˆ5ÏW™´öù‰ò=htÁÉ艬Uø=?”âü R)6 XZ–C›ÝŒ¾òãÉHä†àó«@ éü€¤ [?Ô¾üÕ7âvÍoqCاij–"…/xt î`vÇè›\Ö{~ƒ±Áü‡û =„€®h>@Þ{½øH þr+0¡ ÛNë´ùˆ‘ÙñÀ0YEª:lj`xeÌ`¶þÙ:†œA —ãeŒÅ2èíøíGHâå³è êï¬|s©¯¿ü'I²È—R†NÂú²N4Ëc´EƒS¾ë”íh‘—·'K—HÌfâåpy1»ý2÷L„ ŒêqÉ)Ï£©× 6À|þúå´–mß›sýr:(]ñnKÙ‰<ÁoÇRë}á OKøñIR%ÞÒŠC^ŸÐ÷Õ‚-yrþSS²Û—´Éû€X º°½#9lû@©3—Gà…Ó8‚‰-¼^C;¹ŒÂufNHÿaí T»˜VᬰEÔ…RÔÒ ™£†ªEÿ°”ˬÂײc¼ñÏ_Ÿß–AÜ„©”tžz(¯dbÖðï󵤛»Ç/ÓTd»vu>±¼DdÍ¢JUHçcOÎZ”øüH½¿çËûEÈ¿NÝÔn|‡~ôH0&Îk Ø­Íš“iEŽÆ=¡'?4ï°>Ò9BNúB$ù¡¶—M¯° [”ë—ßÁÝû¡Ñ›þBâ'æÚ‹åF+>½l†84›K Åjãå»Ü›î.! wÚ^©ü…iá G =ôŸ§3~‡ê tíð°ê€¨+Ø—e¨©§_bV<{'ÏffÎ^°ˆlK‚´[Ô˜j§p Í’£Ò[óû÷É­ Ëx È1¹OrWgäôRÓ•Ú òÄ3±^ŒÞ¸lü¥îžÔ.´5¡M|Šb%ÎÏâ.^ £¸L‚Ÿ)[û#r«¿TYì‰%¾ŠîÈ6õä,:k–:úÝ~„’9…cm(¶æp7’õvk4~xMʘdeÀk)„Ш›7*/vK=€ÂŽ$HJp·ÉCŸ&­ºæ k‚­-SùŒDÖUÓšbìʾDعZ¼Åǰ8Ü™Èqvf8Ï CT‰ç^Á'ªì^exXa”wœè¥™@4ú Ü×È—ûÌUþïÜ[°Æ™êAz\SUrBkðaqùJ»,V#7ØÄP\Ÿ¡Ç‰·±^l ßYÊÖÝ5“xÑØï¦ŸÀ‡å‹…N[Ç÷XØ'J µ4¶ð;G ¹^AdR¯ØÑ'hI“$AiNa‰ ÒA-r±ÒËc)À)ƒÜE,øsôi{¬Tƒ/gS¨q{ Œl`s@Æõ|#KHêº69é/fsPLQÄE«˜ßeM:¬°¶sW§SXÖÚ]°ïN–X½À°'TÙ8ë^àŒõçí|§Rf ”ÅØÖÔÑáÖרÅY$]±a…ׄ3aJ]¤”h”ˆñCV0›íÇuÄ«®ç‘ç¨ü„vlÇe„CÞK?—Æ~ÆÓ d[­ÞÍ‘sz岃Z<Õ|U¥yâ³?ÜóðÎ8ÉŒ'¿×žøplMÞ÷Ëw̤)0Ÿ¹ê,jR¢´ËFÚúdýCUaŸ©pÓ•þ ,MËÔ4kG|V‘Gëk·ÃãÐèMaÍZDH96–¨½ð ÓyvŽe±(m©¥paE“¹ÌT ãþaZ¤?ÍPÒ=9A‘Ççlétã2ˆ…@E6t›,sË5XcןÛtv-¿‚4k(˜ÝË™‡ys‚ @¯2mƒb± ™ÎítªífÄI‹º+]²§¦H¿F)KÊ×V†Cƹ¿,æ˜ÿh QÄᩱÜJ;‡—ÖÔ|v»½1­`Êø :¨aEþ8¡±„и±(bû°”K‹¨Ó]£Ãó®ÖOV‹7S’ìºæ”èS!uå¼XgçHHŸ¼._ƒ“f?ÄÞí©Ï—y¢ÄO6¸ˬ ¸òF¢ÊzÅûЬ»=Y EiRk„;:J’˜i$´H_¶¸‰ÈÑ—“‰º#¬¡×Ê&~ù]PöY†2¨fµ )sÔy=%- ïfÜQTf°ú×Û. wò¹ehWHûêªÚfH4Ò¶,–0«ZFçP*çš?Üém ñµÎ8šl-5ÑMEq~@§:øÈ„꣞1· äí±ã³äê ‚íå/™¥…TYÿ¥ï§ï1òÁ\•VäÓŒÙëÄGwoDWÎkfþ=ÇeZ §Æ¾Äù …GMLjþö%¿Ðìˆõ:kŒLKÅ`Ç|»W%eý@$«  o¡Õ ÷ËpÀÉ1—M/㥠e+±Àû¶hF.$3æí-.A§ïqcê×ȳæ?üjƒTŽ¥Då²þÊ¢h¢'ýìw$¢?2%ÄîÆ¦*Ô0Q+ºÕ)â߬UDD@Bj’ƒj‹‡{¥Fø,˜=˜‡j%žCý®ìt7Ù¡#coT¤ n±bCÚä~)tèûp‡\“6‹>§õNôHé [^¸¨\¾0†Ú½¦QÓÄFœ ëÆ„óFY¥å¦è”¸n´>6±Ò'-1èuB9‡B7÷LYʼ×¾1ÛScxB˜yTbS/’µÙ“üP²’ÐJÐ ƒN›q«” :ê™6‹`^šúIv:óÃÝQ w5̉ˆZ^©)æ ¾m¤‡qFgÊæŠ§Ómã,áÉO+¤:ypѰý™÷n5‹pR±Âõ’zÝp¸ç{Æx…5ÉÚb3ñ‡K™¿]‚çÒ嵨S] áq=ó}eÀìÎ0#?‰= 9R`¼¯/¡yý¼ú€ªuŠ·µë¬ú³‡³ŠØç¢^u­‹¾[Üo,.U!w{°…ë×bñ7wnR‚¤Òݲžs5‡åW¯¶.¯´…*‚L=/Í/jNŒ Ìf (&f=oÆ21•±òˆEõÎx-?B‰ÝÚ>Þýg#Í‘¬Hg™ëð²RßÝ ¦­YîþyÃo–õûÍ…,>Ý$½¤€ÒÂôþÛĞȡ+ÂØ©½;J€žÖFkan ª ¶m6ºÓ­ §|ძ¸-\ŽéŽDT—Ì|ËÏ:`i±Úæî„æØW 'ÏëM‘m¨­yòå;qWö,J‚Ì‹ÜÉóy!Ókˆ›¹9N)˜þkÞëIå;5æaíò¾Mð jÔfî‰Ùsþå˜é.V³x[ïmêø}Ÿ  …3SÚÓ¥†å®9ž×}=gù:o®Q½Cæ§‘àvÏ €_@ÈÜ€¡à¶!õäC²æ–Þ¥^ ÀÌ‹¼FF¼ýå¶â;ìäÂ}ùmô£j 3ÉÒÂL•»`P®Í6-ŸÉj-ȳ±÷Ç‚ˆÃsŠ"¸à?¥a¬C÷Aº²Fº$/‹aµk9uà<Ë@f`šv¿-È1Õ­Ÿ…ƒFöhÂL„,\l߯5´ ÞÌ)Ûãy –²ÁÆday-¿ßð­ïÝë|î7²o?WZW3¯òÏÕúÁ‰}Æè3]Lýt+`*OÛkÓ÷IJŽü}»ÑÝ/Ïâ…D'ÕŠqšW¿æÁDñ…á½ï}'¬›\„ͶP.Dä­XC‰w°WãiM<ÞG1:ðci~9­©"|ž¾O_J ­Ñ•Æ3Ù–÷½Mgw]7å[š‹V–ùæº\¾ÿ@p&(;E«õ;¯DÁƒÙkµþBƒ'ÑeÛËø9"¯º/rÐÆ q¹ ‹]<±¶0[àÇî¬@*]€aïZ¿¹V•0Xš‹™x¤!ñlÁú­î(‚>ìvùÉ1*& m)òbÉÉ)°€ÐBŠZï¹)¯îÝ‚Oh73 VïVÈš±è³žøYœýOã>üé'?ñAš>¦’%Pe¬ueÝ;œÊ ýÝZŠ10Ü‹Pbõ/É_À™¨•áå•á›F4ƒ¨3œ@;iôRï{ šZ¨Ù×Ì¿f´é'nTÝûÊ)¹Àjî5<”Ú¿3™\£× d˜Feì £±Îlž°ãæuïQû´©ú°åä O:ãSÀžŒÇêVe~ä_Ò‡O%ú¦CrG‘Þy;ÏO¼&2›>rÛËó…Ô|äܾu®kÁAÅp9 Üd[à’ó"Zk÷P%ë#¯ ë™mXЇÞZ94†¸+óÅw5¿*¡œc%™Æ¢p“œŽÂúBÃyçÏ™XÎ%—OÀBf‰A ÈBGîAµý{_QÒ®àœvÒí:§³ýû¬ï¬xY×¹G%Ö â}ˆ‘à 5^·“¡L‡D­¨,ân÷F, );].|ñ-‰©f;ÇkÇ­$~†¨.ö|; é%¾‘„öO_¹Nái&ôvù-” —®ü† ^ü ùétýì¸^ø«µ=.V2í¡’Ö$ßön×w„À[õãÚð§rK;ÿ*bc>æVK¤KÙ2ɹɣqÑl%ØW¢—-,fýØÊ—Äá°ŸoÅ”f0ž|Ë ýžÜJi^n-.a¿ßÔ¶`Xª³ØvSµ"Æ›¯íýòœ|@MfÿåCáŽwU:7’Ê8*Al£ŠQiÕ7ì€0ÖâyÆ™ºíg|‰n\s\™>y7"N±y–|åvg1±/žùRLòb‡Åà‡ Øè‡÷@<Ú\ôÅÕ¯júEƒ<ý* )1gÊ˼ڋØÞVã•YõùHÓÈ0¼#"3Ìàn£óægŒ¾‹qµßãI¤¸O©;Ÿæ­YNÏf,²8×K7Q¬ý-ŠºÑFqC•lR•ñ#þOìÖ^v8è8³Ž/RÖ[I"߯ ¯W5ÉJæ¢êå¦jDë ¡.QÐ^¶ü›ÛD»u ó%A\Û‹6~K=›þ^…Öf¯ï^5CÔ.ñ¹bifEa­¿ª•‹¥rÁ]0:ÜH2‹ÙI9;Œb’Æà(¾NÀJOv½:l®ˆž„žï‚KÔõ—ú,TâìÈï7 E6&WÔ˜ž_ºRWm‘ ì‘ •@« X½§v]Ìlðy Å÷ºIÒ9Œµ]ö±HÛŸÝ~·‚<ÝÄ‹ ­ù«ŒhQ©ìtòky¶G?fʼe¿ë,¶1 ¡ÿ|#|@¾y9áöÔƒ~Ìý”fˤœ‰OfQ;Ÿ'ÜÎÆŽí?d ­xºcîˆw¶È}j !r„ªc¢C€ Z§ü*ÞÊÝTÑ•)À[5Cú^Iø!š|Úip¼MY/{ c›~ §"†–Ü»[T¿¢[{C_¥aín-ù‘ö3r nüG¹WµtžÁUû› ’RŸBBdnÉs­E”ãÑl¬±>XìnÓíçÊu®gOc€˜.MS™ÕQíwb1ü«’†Ô,{t÷М…q¥ÆÔŒŠsP)ÍÈ–Cé‘68 2¿Ã&ÖpããLç¤q0d’xfìÜ|¯äôì‰õÇy| (wW®EfÙ÷IbÝâ!OsY`Tñv¥Õ]fï9ë”nèë%3=%R¿ø0U åÉtA!kÇÀ|U…þ•)E‰®O¿c…¼#–Š/VÀ@b^=žÔX$¢€½ãÂ)™?H3ËÿpFF@P4~»S Ô(æx¥È‹u¥ZýËCT—0óZ$ÒOøS 7|úôàå;Õ¬‰,¾ÌBØ/H“é¬ÄMJw•Ž­ñÀý>†÷/–“étJŸ%0Ì_}aßËÜýDýx•FΡjí–Aý ZE†ùN±]§W"Û[ö™N¢"Öu#dêÙ>³hhC»Q~•Þ-VþN“ûÂïÝ‘š‰kþ>—µ‘nkÃ9AÍ…þÖŠ‹ü=¥‡ÃÀqÖªyÖD— -O< PÌþQ2#1HB§`ެú2‘|¦ØB}ãÊãrGË'B€1Ç„|«9- I°nÞ['¯"f¡ÉÎÞI¦°á˜†ó‡‰’L¥)ø(‹vÖô³ ¾´ðê…ì!óm„fÑE iYË ‹â 9FVBé^ÙMÜN£¬—¦üâ’ZÁºnƒÉ8PžSÇÔ,`éÆÇ(“=È×äÈ– ìÂð;C+$Ädžh«WÈj1_dˆì£Ÿ'þqg¿ðÃÕÂ: %\ …«ømû‘ö ç,ŠÑdåîìÖóhà`ÇÕàôý«~.Vh±ž Ùy¯ð‡"r„Þ VÿËÓ3úsŒ:¼§ñ˜D”††µQ³¨/š­ÂÙôOUsLÎÒB()öÀ‹ËμÁ°îÐ’ï48ï«\0gqlããM¨yœÜ|¦úýô9˜iÄqdï¶xRÂmKìMQ´M!Ií–½á±u§Šé;Ž]ñåpª~°Òóª†ý?–B• endstream endobj 99 0 obj << /Length1 1414 /Length2 1899 /Length3 0 /Length 2809 /Filter /FlateDecode >> stream xÚT 8T{OZ˜t»n¥P9Ù³YÊš±LÙe)áÒ˜9cNfÎ3g ¡î¸º‘-TR]]-¤Ù×C¶”\¥[²D¤4„¶ï ª[ß÷<ß÷Ìóœ9ïûþÞíÿÿýŽÆFWw=  ©Œê‘ðDÀÚÉÃDˆD}<‘HÆihx@(üìÇiìy|Mþ°æ4óÙÐP è„À€½€ ô’‘ i‹ ‘‰DãÏ@„gØÐB à„ìäã4¬n d¡XŸÏ¯€6}@26Þ¢;›P8 ¢Ó`À‰†²@Ö‘NcîѰoJh›±P”kB …B<ÃÇ#¼@‹Mº€BY€Èy! ¬ 8Ó8àüjxœàÁ‚øsw„‰ i<ÀlˆÂ|,E3@€uÜí.ÏçºÀüá$<éK¹ùlI!žM¦Ñé‡KƒÃ 8`Blp¡:âÑPT Á Ææ#X>-„±i`vt@¥ìh؆óûñé<ˆ‹òñ|ˆ-Ù‘ )ƒ³-̰F8Fù8É|6¤cçF˜¿Ü ÂáŸ-&3˜’5.Á†‚ Í<sá¾úA0$‰[õõ0Cé,‚¤Gœ ’$nl‡Èp.˜Ø`$ı?\8Ÿ(OF†ÿ3ð­…#‘DG0‚q_«cn9gc÷σB"F?@”ü¾¼ýŒ1ŒÀì°¯ðÙ+&89{zx9mž_ùKÐÊ ÂõH€Yß0$FƆ@ä·U\iÐüį™v0Œç†ÅNéóÀ!ó О—Ç&àÛZÎÆ[ÐþJs_¢!‘Ž=Hÿ7ÙgSþÇ%Uþ'Í¿Ÿˆ*`³gãÚs€ÿˆÓ8;lñV€bpB0%ÀßCwƒsÂu€ó}Ô¥aZ Àì/ ñ©P(Èp…P:k–snO‰ÎØ º"|HòeôHDâw1L\ô ìëÁÇ(91í|ÛѦ# ‰ÈȆFÇ£…ሓȆ†@8 S# %1@ÀÊ¥Øv‘áá$Wjl è׬E"ê„À¯&F#÷‹‰Í@@…ȬýÍt‡)q–'Ø„ŸíYÙƒ`(HÇýÕ‰ÐM£÷E—OR”…zý-dƒåõãGÄ2»ûlCwFY›M¿Ñ?×E©¾77ýä§ä󟊃¼ˆA~G3QøëZùbfÀ3݈¶ŸÌg^ð䇪*ï½ú0#Pa¬Ä­A(¶ìØ´F7øuÿýì¡ífš%—ß^b-Õº1‚—[Øò¯¸¥k·nÕ—[]AÉ®¸lu…Òq¯ÒN?nÙ2zl=uhúx]Ù°·¾;_W zz\yxx9×Aœ=l‘ñ¼ÖHÉaoСÑWk»öÝQí(qy´H;€Çõè9%¦Çxñ‹sÕh¯d´¨oGë…‹ägw·‰=ÜF¶Dëú$õãWt;ZÉ\¾ÙË#ß9êª]n¶GÏ6¶í€UàåæÉsÛÔöð-s콪^kmhé|àÙ¦½I?’$Zi4êvŸ® I~-~™[¸86þéøLWÄÌi®å ûíWo¬k`ÔìŠmSÁ®èÛ©»Ê¨Ä甼K¿i5O„5îN±W-â?.xD»¡xÊÒ¨¶GoÓŸºèÚøZ£'Ë:mœå NÛV'ec¾Ã»ôÈíÙÌO*Y=‹Š‡,(:W“ï$-oJèz±Òm’QTÕGÀ¥^y'H=f5Õ¨/:yZº9ñ¯3Zq‰ ëö9u«Ì§ÛHqhÑî…¿X¦øwíkŒÈîëw®K(.>kÈ$)­Ï^íYtAñ¶§‘qÄ;)·Ž‡Ç÷êU'˜Ê ²ÔWü?ôéØI%:È´?3¹fð×õÒ²ï—Ô·x-fL–.×Ûâ’h…‹g:"|gC€å:ó æ*¢¡²[/¢ï^tlM+ýó9yAôÇ8'õž>êIö[J˜ÜT›fûÃͽí«ÞYü\—`{Eî|ëáC9¿Vq 65vˆ¬«]3Êt”ÝiÝi”΃—BÚP¬âç}U&;©ó´AMÙöV=¹FuNiƒÂÚõë6BÇÓ:SB-ïœ]Ó~·n‹Å–’Š.š‰¿J&3?ª»HùÁ€ê8C\üçCT,Ý/eŸÔ{çGçãoÞWàFÕv¬Ò]í“ë±J®¸Y8QÙSÇn®mþ=W|gB&ë\ŠK aÆŒ þ(Çíàx^l²WP|2pý>èð4(ddÊøXÑ:Á[g™ÛÉ\Õz éøè©Èàhß]|Oÿ]&±Äùå„wPÛ@Ëpû5)Z95)xú|Gb7à«Ñ¹Õäó¶nMé‹9Z5Äh~±5}ˆóº„ÓòÛ~|Ú'Õ]ìE6¯¢©pÊË£™AÄGwÚ½ËÈQÊŸRæW¤ZóÔµs,˜”"ÅT)ñ%p‘õù¥ ~¦´”=¥RòÓÒ§â«+LÓUÝržË‹Ë´OZ[ÚEª¡XÔ;E/‚×9†®õÜ-Hr9ŸòR7zeŒ=Rq ”þI– }&ÄKï`^ȋڷ3í1W8M59™ÑÝ:0Ué$zÜGq’\+7—j¶y$K_•ý1ý+ ‡¼÷‘J£¢Ÿ ™ËžòjîV ±~HzÕ´&‡Ý(âø?‰Ü„&ÎŒ¸ù˜??¢Rx¸¹ÿa-U¨æÞ¿ÃbOvó²Ã¯DÉjæb}ùØ¥åï«åm«ŸÁkm›…þÇ®öȪ(tþD±¹µ k1U>>ëÆPã^|{jÃáĦ½Ä—#í·J6Öï fFËW‡Ó·ÞY²Q&(sq°Â’ë-Çó'³ïÔ¬KÕ0(ßëšµá¥i¬^fÓd[ÿôk#µÿ] š±Eý›³2_Ÿ1ë˜ÑûP\Ö«í åÂmXöÇÖ£ò•†û=.Wú$g’-ÜÌ_mQúÇM?Ť2 ¦Ó‘±,¿ ‚ø’w 6½Mvûñç'KÊC™išÔä+Þøìr޹דDÐaÕÖÊV†äNyˆA!`PÚ);ÌZ§xzË¿_r‘Á endstream endobj 101 0 obj << /Length1 1352 /Length2 1258 /Length3 0 /Length 2105 /Filter /FlateDecode >> stream xÚS Ti–Ž+"ü;3‘3I7È‘x`4(xB“t %éŽIçDYEEEQÑeTFÇ•CDŽAŽÇ "·¸‚Œ×ðtEÜN(ξ·ûòÞŸþª¾ª¿ê¯¯è apED4êMà$fBÀô‚!A.Lr¦Ñé¡)AGí4z*W`Îù„±\Ž"$eã!$E8ðSJì`7ìÎ à AìQ"!ç¢ÂD@À~Ž*hôå„,^ŽÅÄ’0ö ì„öf³Ýtá€+Eå˜Á!cQ)u£‘€Bˆ¡dü¸v‹bIRÆa±Ôj5‘*˜„OÏ¡L´¶”® ³@ÝP0–¥½ 4^†êœ°ÖLõ”(#d@Lµ&ab”ú£%* H¹MJüÔ1Ñ`ˆ0! ¢Ñ §}ÌN™Qñ¦æ/Ç4`-DÉö7öµžR˜ˆÀ%ñ麳ü¸«BW8ê[s.[Fh@"v…€î€!gý‘4>S0‚é+ù$š‹ à>R0õR£E«ô*°Ó¯ˆ=Ÿ+ ´‹»R_¹BBê€ÿoÁëBþ›ÎµYþ§Ô?¯È[)‘èüv#„?ù)&‰×3P4âsB8:²²T„)¥Ÿ{ù$Bm‘Œ=¦ðÆ4¨(#…±#BÑÙQJÿãc½p!!Ò.г«@är$žFMˆB® ¦6J„jtB,&NT)É$ &ä4íH ÀB ­I‡\(ä2†ÜP:F±=th\ B¥\Ní’nÊT}£X·¸(ªA…´æ{„paêÆS+Þsçª=7ÝðWI¾_¿RµÛP>ûÁžoÿeúk\AA1Áñ¾–ýlfíªª¸döVì ¦óÙoûg6tLê[ö^å±xiù쥤ʹ4˪.šïQe™T±›Á­Ï Ê»ñ}áºëw™¿}N¶Ç¼ú-H'´¶äJ˜ómU©}s’¯Û[Ù¤²™Üx[loòä÷ùÈû&nêÚ•ý:ã=nQÇKžçWàô‹kö gc_¯ØžÉÆ×¬7ñË bŸþái»š} µ™díG]É\¯šŽÿeësö¿Ó6G›ØõTDò»Ë2#Š=ûioÑ£;+Í?ŸP 9­m°\3¡zeÓipþ™ƒ‹ÁyÛÜæ<±©°Ú&X²ãBÂÑÆÞÃÕ·ì ö–Ã;ëS[Êï±ã}—5'øΦ9ž°Š*M­{rçu›1FÞ®ùÑzrj…(Çé÷l ÊMø{& Œò.{·„Žú󨾼\?Èþ!ëtAc•uŠû±Õ6à ÕçMÞ@‘ÂÜ®ïVÜÞ¿\ïS¾rŠÈ¶Hhh˜µ¼rPSô؇Vwß Ùdâ)×®w;*=_V¿ååؼ¸èóüîÚþ¿íjT–2öZϪQÄùÖ{;jRVǃ»“áê’§þ~¹qd¿Ïé\`DH„ÛñˆsØ•Œo—íÓ|( ¾ðwcCÑ÷‡Ó'/ÜÉ<ÖâòƒkÄ“ŸW>È\\à0ÙzûÂÌ'PþùSþ¹Û:rï¬-Y2uãkàë7ƒÙ¯~ÏÜõ¨õ’ 2¯fNÍ›=½ô§ƒÐ™G,Xe† Óë2Më¬Ì.ˉ_vs—_=j‘\²´Â±{v]•iš5ÉT÷t®±ÊSÄm}}ËáàðŽ+ý­Ä4(Å ×Û¬£^>ÅOxù˨n|–¥{á£Þæ–#7ŒÒ¯»NœõxþÄöoøý‰ä/<> endobj 12 0 obj << /Type /ObjStm /N 76 /First 619 /Length 3732 /Filter /FlateDecode >> stream xÚí[[sÇ~ׯ˜Çs*…æ~«¢R60lÀ„òƒ°['¶äH2üúÓ—Õîh%K8y8•ryvv¦§{úëžîÞ•d„Zä(´Æd¡°& c…KF„OA˜ ^¼ˆÉ «DV@ÄJÅžõBk³Nhä`“ЯÀÓ+g€w Âi¡Cô¡0v°. ràš“°Ví\Ï+A°†kÒÂaˆ¶xuVxØhÀyØP‚íxØfvYà®sRƒhû °%£c/h¸B \cÁ ëaqM}T"À–LØb€M…(\¹!Ø_€%ÆDA¤1ö¢†®†Æˆ,\­HÊ9H: õI¤”LŠŒãɈì€_r"ÕJßK€²°ˆµ è2•T€€-ÐÀ v@iÀð†?è¹AÈaÎx§ oBð=‡&‰ÈG2¶Ð· Lü¬•= Ç Ö×`Vë- :€]µEÃãLÖªDNÙQ¶ÓHaÉÔ$t€‚žó¸;$÷J÷>ìÉ£oו¯çUOîŒG³j4› >ø¦'ßTÓñÍä´š‚CÒÀAu6<•@»ú¾Apî§|Ò.XŽÂ‘úçŸIÀ0 ¹x8œÁ.˜²î‚£†ºK@Õ]0Ǽ fª»…š£—SÉW“ñéa5A—Ý=!ª¯3q2ßÃJ%uXÒÒ݇šå&áT鸴a÷hÍz< ‰kÚ}Yo<‰·€´%Æu€ýÞ…ñ,Ö*TbÑê¿­qI ÿWªQî½0FaÆRÓˆqð´³zI»|ßnº R±÷„1¾îgÌ÷î‚véZ÷wÙ®Ôn®Ñ¶jä%5â&j8µ¡‘Ví}1j–îØøàbDj£Ð–j»¥Dáô}¨]¨´€Àê#õ‰s+(ãí½j½oœ¿wc·z´{¿}¿}Ö}¨Î¬é›y[Œ8(OÊQ(¹ú¡nyÜäÐPḾƒÂJÍW—\• —B«J¨ÌŒjVÇûX ÑHº“AT²'o>ÍèmO¾\UZ…ƒÁl2DìúP…)´(üµý¦zLø‚ñx¬T¡N<)MHv1Ú¿>'àÞp2í\ &{zòÅ ¸y?<›]LAK¶æ“Ñéøl8:Ç—yO±®MøÑ™>x_©ì|]Oî?®À渱6È kAÊÚÒîUÚ*PA<º/¨t‰•ïb–°Š-VºOÈý?ü±.w¶;@öGãÙYõ”Ýñ_ÇRœÞmêq Çpâ¹OÇ(ý"wü"¨®_Ýñ‹íÎO xƒ¨ÿÖÚ>”ÌøàŠeãÊ'j!­kèÛU-5†BÍZ­" &5lC-pБµf¾¤Œ¾¡j.Å–‰W29¬ržÉ±Å;5ß@Û‹>¡Þã·M‰b;¶Hi´žc|¨ïk8îòoJ:Cva®.R^¢¶®n-î!ÎXÛ€ky6ªvÏ5‡ŒyË;ÌP)úš"ÚÙ«æÅ}çqÿ”÷BRÔF@ˆùböó‹ûИÿLƒHÑ+ôrÄÉk\á(ƒ–}«(Ë"4jh?†ø;âÇ#1·+[jn-ifyj œÌ¨hœûÔ‚­KÛÅÆjÝÞ]Úæ`m¶ìLÙ™WŽÎåuc‡ŒíÃíJR}yæ¹M„:·T«qÄ^ÑÄö¾º-6ÉÒbNè+> ž&@?Fö3D©r‹‚ò*ϾÅ|ðýVÊ}| ¤’@) 2¹hÆm$2oräœì@À¶g¸ÑzòwŽ¡Cì^£ìêãaKx(E  `´l4º¨Í4B‘\Æ}ÓÑÉQeRùÔ-@‰3ÎEOt %¾ý¤ò4!…'§ç‚5ܯ´ÁÒ¶eܶžáø`Á(ÂLÆ0d‰#YÁDÛ%Ü©‹@PX2ŸÔ˜.àÛM”ñÕ¦BÉ‘ãXÂ5 –^ã8X&ñ¡¥€L!,—…«ÌA‚Ž9Úšøê¶F2 (jÜ/·5Ebï@,)àp±¯8œ^šÝ0#uÝ'ùDãâÅ-s,g­§P^s»m§wikžE˲J‰ŽÒà›ç:{+CÁY“‰ŠüÓV KÕGYüÅÕGÊÊ꣎íȸj`µ¶ºF`÷¢Žtó ÜêðC +ćÇhmͪ¼æïN­L#ÞÏZ«h·W@@ÌjkýÂz4º`SÓò¨Má©™Âf*782±AŠÙº,£>·$½ `øçÿ/ùt¹|®‹@êûèïü_¯æ<-Õ%3æ+ny$Q¡ €Á\ƒ.Œy 3=;/ÆØ¬x@Æ\ÊŽM+³Â(ïhE$It’° Ðu?A(óu]ŽN‰N Öš‹3Þµ‘â ï<ý®VÞçš)ÇǺŠ/¼t½‚Gç8ÐŽUhF2=Õ+j¦p”_œ§Öa>)g+îS ð@¡ÁbÇ­Õ¨¼Ä#Åt¿¶Å ÉóÙŒŽ25Æù¬Hµ•Ú9FˆûÔR¥ŽŸ¨c݉½º~ý¹Ìÿ#$<ü<ÞP=-D‹çÝ6ŠŽ_t6~KTÖSý®,­4”çÀÒôhóÌWÖ¼ùõ²kx#~«A©ÐÜx*Â[…{í²qÖãšžÉTú7ó´‚ÆðÙ:Ñ=<†ñІŠç,¹Môh@ývŽ·Ë}jÁ8Î'*ÏÖžóÛ><¤¢‘ ãX§èÈ#*=_[ò$ë…:m®¥LüXɸŽÞ;8r,[ƒø§ýÛÛîç#»Õôt2¼ž'ü’–ßì¾{ûäõ‡?í<>Ö &.çSáÊ׸|襤+È“ž|4=ÅOšBÊÁõ³jx~1ï õ$ŠÁ¹'÷gƒËáé£Ñùe%€ýᬺz‡é¤'ëEPØñ[[|ü/ùH>–»ò©Ü—ò•|#å‘ÈOòTžŽ/Ç#h¯®òLVò³ü<ü—ñÍDžË 9”¿ÉKy%Gr,Ç£J^Ëëj2ŸÉ‰œÊéð«œÉÙŤªäì±¼‘_äò«üöoVuoŒ~õ[ñÕȽþewçÉ>#gÖ g9üBÍ÷ƒœÊk‘ÛÜöå Àí%!‡¸6HuÀºøv}Q³õˆU_€`·EÄâ&ˆí>ýúFìh·™\{›‰èmn[Ì “ÍQ‹kQ>ç„ÃôŸ€²‹ æMüõõ³7û àÁZõ¬©ÕS.}Ç%ìÕ‹¦ÐÎêîiÚ©ÏÌgÐpVê–ôFº½|öôð5èöfjNÍUSùGTk¼=äï(¶+ŸÈ=ÏÇÿ¥ oå;ùÌ;¸§žFg+ƒ1ÇRœ‘ËÇä¿Mp á¤4ç?q¿¬>ϸ7!n 5›¦ëË›©ü]þ~3žUgŸ.‰z~à è®çA>ƒWCÞq{§—ƒéÅêX&ÿ”V“ñ‚í&6~vüìpÿ9ÙxMD³Ž#ZNé~Lìo5ñAûÑ`Ey4Ãá!HfÁ·eÅ7Šå;ï~Ýy÷žk·ìÜÙAqïò÷k÷¶T\-†$Û¨,çkò†NhJÅÞ½OŸ¼z‹®QÐÄy–7æ^Lן^<<`¶m6 ´ÇO߃6‡‡ë¢QеÁ2£[ †·wQ'­Í!O qÎ…p3Å<ýmMÉrÞ¸ðènAä÷N¬`G¸é–.y£X~üüýó7xÎ?Ü–†s@wÐøLà[üÀ7¶ËSN­uˆÁd2þƒü4œr0¤^ ®§³±¼Ž –^OªÓ꬚.è¿Qœƒ’÷õ«Ç ÿú2Äúæ8¸{ÊÓ!­Õ"ÝÑB²jüh0[¸¾ž^®¸´[QÐn®>§áù÷Ý szY5 AÄjwûÂù¥dóFAvo÷ï¯ðQãèhm  C¤õø¥‘ ̵^ÀoÌ1Û;pn—ˆw~Ñ>_^&Eµp~ÿps¾ŸçvHi_—ÑÞ(à¼|{t|Àh¯Iæ!ñ ‡ÁW,þÇÑ^ŸËO²ënÈÏ…üÿYç=Î+5ZnZtˆ¥N^©V'µF¡2`-fh%V‚“ƒTj¤•¾Ó÷ª›ÇƒiE_Í\z_@\Bßkj¿…¹§ý®œÑÍw¢¢Ú\x÷!¶#©®ø׈wisñݧµŽpÓîs)\·_F a á‹SÙn w½ ¸ieo¡x§ÌïÈÞÀáÌæ²;•vGvº³Á£Ý\öb ¼(:/ùš+Í5Ïñ-$wëÕŽì%W³ë n áj¯#|É×T)[ÙV¶ß\v·ÒêÈwŽ/!naïNÁÑž¾ƒzaò¼¹ðnþ]®Õ’¿ùÜu{Äã6ïfË®ts›Ñƒk5_qÄñç Sü½Â Ö íOeTý ãçó©øÈ?Ñü3<Ã?í1üK<Ë¿B°4wr s»Ž¹å/8âÂ÷åùBþ=Oý‰ÎŠãó/mDÍÿb÷Ir endstream endobj 106 0 obj << /Type /XRef /Index [0 107] /Size 107 /W [1 3 1] /Root 104 0 R /Info 105 0 R /ID [<3A4FF5EEA71972315D9B10866D10D849> <3A4FF5EEA71972315D9B10866D10D849>] /Length 298 /Filter /FlateDecode >> stream xÚ%Ñ;/ÃQÆñç9Õº•u©û¥n­ûß]Ý©V1Œ/Aâ˜DÒØ$ 3ƒÅ$!6‘tòÌSy~]>ùžß9çŸüs à€ „ J‰±,ļØKbƒîöݧ…O8Ÿ·Ù¢XkbUl ¿(!Âq;W*Dô×–-¢\”±€ÍE¨DâÄ6ªDðm™!QM$l–5"L¤<›ÕéS«ˆ¨ Dæçÿ÷³{¶Ñ$¢¢™Ø)^km¢]tˆNÑ%ºEˆ‰^Ñ'úÅ€q‘ ví£CDîËj˜x½°!>Ï­FÉÀ“ÕyT°'Ï.­&Èû+|{±š$¿ï¬¦è">«iºýG«ºÜµÕ,ÝUñ¥çĶÈÒÝ<ƒî!?5#,n endstream endobj startxref 176847 %%EOF gp2c-0.0.14/doc/gp2c.html0000644000175000017500000016625414220021656011652 00000000000000 An introduction to gp2c

An introduction to gp2c

By Bill Allombert and Ariel Pacetti

Contents

1  What is gp2c?

The gp2c compiler is a package for translating GP routines into the C programming language, so that they can be compiled and used with the PARI system or the GP calculator.

The main advantage of doing this is to speed up computations and to include your own routines within the preexisting GP ones. It may also find bugs in GP scripts.

This package (including the latest versions) can be obtained at the URL:
http://pari.math.u-bordeaux.fr/download.html#gp2c

1.1  Installing gp2c

After downloading the file gp2c-x.y.zplt.tar.gz (where x,y,z and t depend on the version), you first have to unzip the file with the command:

gunzip gp2c-x.y.zplt.tar.gz

This will create the new file gp2c-x.y.zplt.tar. Next you have to extract the files with the tar program:

tar -xvf gp2c-x.y.zplt.tar

Note: You can do both steps at once with GNU tar by using the command:

tar -zxvf gp2c-x.y.zplt.tar.gz

This creates a directory gp2c-x.y.zplt, which contains the main gp2c files. Now you have to install the program.

You need the file pari.cfg. This file can be found in the PARI object directory and is installed in $prefix/lib/pari/.

Copy or link this file in the gp2c directory, be sure to call it pari.cfg.

ln -s .../lib/pari/pari.cfg pari.cfg

Run ./configure, which will search for the PARI version and some other configuration tools of the system. To install the program, type make, and the program will be compiled. You can then run make check to verify that everything has gone fine (a bunch of OK’s should show up). All of this is completely standard, and you are now ready to use gp2c.

You can use gp2c directly from this directory or you can install it by running make install as root. If you do not install it, you can run it from the gp2c directory by typing ./gp2c

2  A gp2c tutorial

2.1  How can I compile and run my scripts?

The simplest way to use gp2c is to call gp2c-run. If you want to know what happens in detail, see next section.

To make the examples easier to follow, please move to the gp2c directory and link the root of your PARI source there:

ln -s .../pari .

As an example, we will take the file pari/examples/squfof.gp, which is a simple implementation of the well-known SQUFOF factoring method of D. Shanks.

We just run the command:

./gp2c-run pari/examples/squfof.gp

After a little processing we get a GP session. But this session is special, because it contains the compiled squfof function. Hence we can do the following:

parisize = 4000000, primelimit = 500000
? squfof(3097180303181)
[419]
i = 596
Qfb(133225, 1719841, -261451, 0.E-28)
%1 = 1691693

Let’s try a bigger example:

? squfof(122294051504814979)
[20137]
  ***   the PARI stack overflows !
  current stack size: 4.0 Mbytes
  [hint] you can increase GP stack with allocatemem()
? allocatemem()
  ***   Warning: doubling stack size; new stack = 8.0 MBytes.
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
%2 = 73823023

We need a large stack because by default gp2c does not generate code to handle the stack (the so-called gerepile code). To instruct gp2c to add gerepile code automatically, we must use the -g option. So quit this GP session and launch a new one with -g. Oh well, before that type

ls pari/examples/squfof.gp*

pari/examples/squfof.gp    pari/examples/squfof.gp.run
pari/examples/squfof.gp.c  pari/examples/squfof.gp.so
pari/examples/squfof.gp.o

These are the files generated by gp2c-run:

  • pari/examples/squfof.gp.c is the C file generated by gp2c.
  • pari/examples/squfof.gp.o is the object file generated by the C compiler.
  • pari/examples/squfof.gp.so is the shared library generated by the linker.
  • pari/examples/squfof.gp.run is a file that contains the commands needed to load the compiled functions inside GP.

It is the shared library which is used by GP.

Now let’s continue:

./gp2c-run -g pari/examples/squfof.gp

parisize = 4000000, primelimit = 500000
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
%1 = 73823023

This time it works with no difficulty using the default stack. We would like to know how much faster the compiled code runs, so we need to load the non compiled squfof file in GP:

? \r pari/examples/squfof.gp
  ***   unexpected character: squfof(n)=if(isprime(n),retur
                                       ^--------------------

Why?? Because squfof already exists as an installed function and GP refuses to overwrite it. To solve this problem, we will add a suffix to the name of the compiled function under GP. Quit the session and type:

./gp2c-run -g -s_c pari/examples/squfof.gp

Now the function squfof is named squfof_c instead, so we can do

parisize = 4000000, primelimit = 500000
? \r pari/examples/squfof.gp
? #
   timer = 1 (on)
? squfof(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
time = 5,810 ms.
%1 = 73823023
? squfof_c(122294051504814979)
[20137]
[20137, 3445]
i = 46474
Qfb(321233929, 131349818, -367273962, 0.E-28)
time = 560 ms.
%2 = 73823023

So the compiled version is more than ten times faster than the noncompiled one. However for more complex examples, compiled code usually runs only three times faster on average.

An extra trick: once you have run gp2c-run on your script, it is compiled and you can use the compiled version outside gp2c-run in any GP session by loading the file with extension .gp.run. For example quit the gp2c-run session and start gp and do

parisize = 4000000, primelimit = 500000
? \r pari/examples/squfof.gp.run

Now you have access to the compiled function squfof_c as well.

2.2  How can I compile directly with gp2c?

Now we want to compile directly with gp2c to understand what happens. We should run the command

./gp2c pari/examples/squfof.gp > squfof.gp.c

This creates a file squfof.gp.c in the gp2c directory. Now read this file with your favorite editor.

The first line is highly system-dependent, but should be similar to:

/*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o
  -O3 -Wall -I/usr/local/include pari/examples/squfof.gp.c
  && /usr/bin/gcc -o pari/examples/squfof.gp.so
  -shared   pari/examples/squfof.gp.o"; -*-*/

This is the command needed to compile this C file to an object file with the C compiler and then to make a shared library with the linker. If you use emacs, typing ’M-x compile’ will know about this command, so you will just need to type Return to compile.

The second line is

#include <pari/pari.h>

This includes the PARI header files. It is important that the header files come from the same PARI version as GP, else it will create problems.

The next lines are

/*
GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");
*/

The characters "GP;" denote a command that should be read by GP at start-up. Here, the install() commands above must be given to GP to let it know about functions defined by the library. gp2c-run copy such commands to the file ./pari/examples/squfof.gp.run.

Please read the entry about the install() command in the PARI manual.

The init_squfof function is an initialization function that is created automatically by gp2c to hold codes that is outside any function. Since in our case there are none, this is a dummy function. In other cases, it is essential. The next lines are

GEN squfof(GEN n, long prec);
void init_squfof(void);
/*End of prototype*/

This is the C prototypes of your functions. The rest of the file is the C code proper.

For teaching purpose, let’s run the command

./gp2c -s_c pari/examples/squfof.gp > squfof2.gp.c

and look at the difference between squfof.gp.c and squfof2.gp.c:

diff -u squfof.gp.c squfof2.gp.c

--- squfof.gp.c Tue Feb 26 13:44:42 2002
+++ squfof2.gp.c        Tue Feb 26 13:44:49 2002
@@ -1,8 +1,8 @@
 /*-*- compile-command: "/usr/bin/gcc -c -o pari/examples/squfof.gp.o
  -DMEMSTEP=1048576 -g -Wall -Wno-implicit  -I/usr/local/include
  pari/examples/squfof.gp.c && /usr/bin/ld -o pari/examples/squfof.gp.so
  -shared   pari/examples/squfof.gp.o"; -*-*/
 #include <pari/pari.h>
 /*
-GP;install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
-GP;install("init_squfof","v","init_squfof","./pari/.../squfof.gp.so");
+GP;install("squfof","D0,G,p","squfof_c","./pari/...les/squfof.gp.so");
+GP;install("init_squfof","v","init_squfof_c","./par.../squfof.gp.so");
 */
 GEN squfof(GEN n, long prec);
 void init_squfof(void);

If you are not familiar with the diff utility, the above means that only the two lines starting with GP;install have changed. In fact squfof is still named squfof in the C file, but the install command tells GP to rename it squfof_c in the GP session.

2.3  Using gp2c to find errors in GP scripts

The gp2c compiler can also be used to find errors in GP programs. For that we should use the -W option like in

./gp2c -W pari/examples/squfof.gp > squfof.gp.c

Warning:pari/examples/squfof.gp:7:variable undeclared
p
Warning:pari/examples/squfof.gp:11:variable undeclared
dd
Warning:pari/examples/squfof.gp:11:variable undeclared
d
Warning:pari/examples/squfof.gp:11:variable undeclared
b
...
Warning:pari/examples/squfof.gp:45:variable undeclared
b1

This option lists variables that are used but not declared. It is important to declare all your variables with my(), or with global(). For gp2c, undeclared variables are taken to be “formal variables” for polynomials. For example if you write a function to build a second degree polynomial like

pol(a,b,c)=a*x^2+b*x+c

you must not declare ’x’ here, since it stands for the formal variable x.

2.4  Using compiled functions in a new program

One you have successfully compiled and tested your functions you may want to reuse them in another GP program.

The best way is to copy the install commands of the functions you use at the start of the new program so that reading it will automatically load the compiled functions.

As an example, we write a simple program fact.gp that reads

install("squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
fact_mersenne(p)=squfof(2^p-1)

and run GP:

parisize = 4000000, primelimit = 500000
? \rfact
? fact_mersenne(67)
i = 2418
Qfb(10825778209, 4021505768, -13258245519, 0.E-28)
%1 = 193707721

So all goes well. But what is even better is that gp2c understands the install command and will be able to compile this new program.

Also this particular example will fail because as stated above, PARI/GP already has a squfof function, and the linker will pick the wrong one, which is unfortunate.

So use the -p option to gp2c-run to change squfof to my_squfof.

./gp2c-run -pmy_ -g pari/examples/squfof.gp

This option prefixes my_ to every GP name in the program so as to avoid name clashes. Change fact.gp to

install("my_squfof","D0,G,p","squfof","./pari/examples/squfof.gp.so");
fact_mersenne(p)=squfof(2^p-1)

and run

./gp2c-run -g fact.gp

parisize = 4000000, primelimit = 500000
? fact_mersenne(67)
i = 2418
Qfb(10825778209, 4021505768, -13258245519, 0.E-28)
%1 = 193707721

Nice isn’t it?

But it gets even better: instead of writing the install command directly in your script you can just load the squfof.gp.run using \r: just change fact.gp to

\r ./pari/examples/squfof.gp.run
fact_mersenne(p)=squfof(2^p-1)

2.5  Hand-editing the C file generated by gp2c

If you have some experience in PARI programming, you may want to manually edit the C file generated by gp2c, for example to improve memory handling. Here some tips:

  • If you preserve the install() at the start of the file, you can use the command gp2c-run file.c to recompile your file and start a new GP session with your functions added, just as you use gp2c-run with GP scripts.
  • More generally, gp2c-run automatically passes any line in the C file starting with ’GP;’ to GP at start-up.
  • As explained in Section 2.2, under emacs you can type ’M-x compile’ to recompile the shared library.

3  Advanced use of gp2c

3.1  gp2c types

Internally gp2c assign types to objects. The most common types are given below:

namedescription
voidlike in C
boolboolean, true (1) or false (0)
negboolantiboolean, true (0) or false (1)
smallC integer long
intmultiprecision integer
realmultiprecision floating point
mpmultiprecision number
varvariable
polpolynomial
vecsmallvector of C long (t_VECSMALL)
vecvector and matrices (excluding vecsmall)
listGP lists
strcharacters string as a char *
genstrcharacters string as a GEN (t_STR)
gengeneric PARI object (GEN)
lglength of object (returned by length)
typtype of object (returned by type)

Table 1: Types preorder

Types are preordered as in Table 1. The complete preorder known by gp2c can be accessed by running gp2c -t.

Variables are typed. A variable can only take values having a type equal or lower than its type. By default, variables are of type gen.

3.2  Type declaration

To declare a variable as belonging to type type, use:

function(x:type,y:type=2)
my(x:type, y:type=2)
global(x:type, y:type=2)
for(i:type=...

To declare several variables of the same type type at once, use:

my(x, y=2):type
global(x, y=2):type

You can even mix the two ways:

my(x, y:type2=2):type1

will declare x to be of type type1 and y of type type2.

3.3  Effect of types declaration on default values

Under GP, all GP variables start with a default value, which is 0 for a local variable and ’v for a global variable v.

The gp2c compiler follows this rule for variables declared without a type. However, when a variable is declared with a type, gp2c will not assign it a default value. This means that the declaration my(g) is equivalent to my(g:gen=0), but not to my(g:gen), my(g) is equivalent to my(g:gen=’g), but not to my(g:gen), and f(g)=... is equivalent to f(g:gen=0)=..., but not to f(g:gen)=....

This rule was chosen for several reasons:

  • The default value (0 or ’v) might not be an object suitable for the type in question. For example, my(v:vec) declares v as being of type vec. It would make no sense to initialize v to 0 since 0 does not belong to type vec. Similarly global(N:int) declares N as being of type int. It would make no sense to initialize N to ’N since ’N does not belong to type int.
  • This allows defining GP functions with mandatory arguments. This way, GP will issue an error if a mandatory argument is missing. Without this rule, there is no way to tell apart 0 from a missing argument.
  • This allows telling gp2c not to generate useless default values.

3.4  Type casting

Sometimes, we know a more precise type than the one the transtyping algorithm can derive. For example if x is a real number, its logarithm might be complex. However, if we are sure x is positive, the logarithm will be real.

To force an expression to belong to type type, use the syntax:
expr:type
gp2c will check types consistency and output warnings if necessary. For example
f(x:int)=my(r:real); r=log(x^2+1)
gp2c will complain that the logarithm might not be real. Since x^2+1 is always positive, we can write:
f(x:int)=my(r:real); r=log(x^2+1):real

3.5  Example of optimisation

Declaring the types of variables allow gp2c to perform some optimisations. For example, the following piece of GP code

rho(n)=
{
  my(x,y);

  x=2; y=5;
  while(gcd(y-x,n)==1,
    x=(x^2+1)%n;
    y=(y^2+1)%n; y=(y^2+1)%n
   );
  gcd(n,y-x)
}

generates the following output:

GEN
rho(GEN n)
{
  GEN x = gen_0, y = gen_0;
  x = gen_2;
  y = stoi(5);
  while (gequal1(ggcd(gsub(y, x), n)))
  {
    x = gmod(gaddgs(gsqr(x), 1), n);
    y = gmod(gaddgs(gsqr(y), 1), n);
    y = gmod(gaddgs(gsqr(y), 1), n);
  }
  return ggcd(n, gsub(y, x));
}

The functions gsqr, gaddgs, gmod, ggcd are generic PARI functions that handle gen objects. Since we only want to factor integers with this method, we can declare n, x   y of type int:

rho(n:int)=
{
my(x:int,y:int);

  x=2; y=5;
  while(gcd(y-x,n)==1,
    x=(x^2+1)%n;
    y=(y^2+1)%n; y=(y^2+1)%n
   );
  gcd(n,y-x)
}

The new C code output by gp2c is:

GEN
rho(GEN n)        /* int */
{
  GEN x, y;       /* int */
  if (typ(n) != t_INT)
    pari_err(typeer, "rho");
  x = gen_2;
  y = stoi(5);
  while (gequal1(gcdii(subii(y, x), n)))
  {
    x = modii(addis(sqri(x), 1), n);
    y = modii(addis(sqri(y), 1), n);
    y = modii(addis(sqri(y), 1), n);
  }
  return gcdii(n, subii(y, x));
}

Now, the code now uses the more specific functions sqri, addis, modii and gcdii.

The most efficient way to use typing is to declare some variables of type small. This way, these variables will be implemented by C long variables, which are faster than PARI integers and do not require garbage collecting. However, you will not be protected from integer overflow. For that reason, gp2c will automatically declare some loop indices of type small when the range cannot cause overflow. Sometimes gp2c can be too conservative but you can force a loop index to be small with the syntax for(i:small=a,b,...).

3.6  Types and member functions

For use with members functions, gp2c provides the following types:

nf
for ordinary number fields, i.e., a result given by the GP function nfinit.
bnf
for big number fields, i.e., a result given by the GP function bnfinit which includes class and unit group data.
bnr
for ray class groups, i.e., a result given by the GP function bnrinit.
ell
for elliptic curves, i.e., a result given by the GP function ellinit.
gal
for galois extensions, i.e., a result given by the GP function galoisinit.
prid
for prime ideals, i.e., a component of the result given by the GP function idealprimedec.

Members functions on typed objects are much more efficient.

4  Common problems

4.1  Meta-commands.

Meta-commands (commands starting with a \) other than \r are currently ignored by gp2c, though a warning will be issued, because it is not clear what they should do in a compiled program. Instead you probably want to run the meta-command in the GP session itself.

The meta-command \rinclude is replaced with the content of the file include (or include.gp) when gp2c reads the file. If you would prefer gp2c to link include.so to the program instead, see Section 2.4.

4.2  Unsupported functions.

Some GP functions are not yet available to C programs, so the compiler cannot handle them. If you use them you will get the error "unhandled letter in prototype". These are currently forfactored and forsquarefree.

The functions forell, forsubgroup and forqfvec are currently not implemented as an iterator but as a procedure with callbacks, which limits what you can do inside the loop.

The forstep function is supported when the step is a number. If it is a vector, you must add a tag :vec to make GP know about it like in

f(x)=
{
  my(v);
  v=[2,4,6,6,6,6,6,2,4,6,6]
  forstep(y=7,x,v:vec,print(y))
}

This is not needed if the step is a vector or a variable of type vec, but is needed if the step is only an expression which evaluates to a vector.

Some functions are passed to GP by gp2c-run at start-up (using the GP; syntax) instead of being translated in C: install and addhelp. In practice, they can be considered as supported.

Also the functions read, eval, kill may compile fine but have a surprising behaviour in some case, because they may modify the state of the GP interpreter, not of the compiled program. Please see Section 4.4 for details. For example f(n)=eval("n^2") is very different from f(n)=n^2. To read files at compile-time use \r instead of read.

4.3  Dynamically-scoped local variables.

Currenlty gp2c does not support dynamically-scoped local variables declared with local(). Instead local() is treated as an alias for my() which declares statically-scoped local variables.

Supporting dynamically-scoped local variables is cumbersome to do in C.

4.4  Memory handling and global variables.

While a lot of work has been done to ensure that gp2c handles global variables properly, the use of global variables is still a lot of trouble, so try to avoid them if you do not understand the implications on memory handling.

First, there is a common practice to use undeclared variables as formal variables, for example we assume x=’x and write a*x+b instead of a*’x+b. So gp2c will not raise an undeclared variable to the rank of global variable unless you declare it with the global() command, or you use it at toplevel (i.e. outside any function). See also Section 2.3

Second, global variables seen by a compiled function are C variables, not GP variables. There is no connection between the two. You may well have two variables with the same name and a different content. Currently GP knows only how to install functions, not variables, so you need to write compiled functions in order to access global variables under GP.

Basically, global variables are allocated in the main stack which is destroyed each time GP prints a new prompt. This means you must put all your commands on the same line. Also global variables must be initialized using the init_<filename> function before being used, and are only supported with the -g flag.

So you end up doing gp2c-run -g global.gp

parisize = 4000000, primelimit = 500000
? init_global();myfunction(args);

Note that nothing prevents you from calling init_global in the GP program. In that case, you can omit the parentheses (i.e, write init_global, not init_global()) so that you can still run your noncompiled program.

Another way to handle global variables is to use the clone function which copies a PARI object to the heap, hence avoids its destruction when GP prints a new prompt. You can use unclone to free a clone. Please read the PARI/GP manual for more information about clone.

A good use of clone is for initializing constant variables: for example in test/gp/initfunc.gp, the vector T is initialized by

T=clone([4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0])

You must still run the init_<filename> after starting GP, but after that you can use T safely.

GP itself currently does not know about clone and unclone, but you can use dummy functions

clone(x)=x
unclone(x)=while(0,)

when running uncompiled.

4.5  Support for t_VECSMALL

When accessing the component of a t_VECSMALL, it is necessary that that the object has been declared of type vecsmall.

For example my(v); v = vecsort(V,,1); print(v[1]) does not work, but my(v:vecsmall); v = vecsort(V,,1); print(v[1]) or my(v:vecsmall); v = vecsort(V,,1); print(v:vecsmall[1]) works.

4.6  GP lists

GP lists and maps are not fully supported by gp2c. A partial support is available with the list type. You must tell gp2c that a variable will contain a list or a map by using L:list inside a declaration, where L is the name of the variable as explained in Section 3.

Currently, assigning to a list element (L[2]=x) will not work and lists and maps will not be freed unless you explicitly use listkill.

Note: The PARI user’s manual states that lists are useless in library mode.

4.7  The install command

The install command is interpreted as a gp2c directive. This allows using installed function in compiled programs, see Section 2.4.

However this has some side-effects:

  • If present, the lib argument must be a string, not an expression that evaluate to a string.
  • The install command is not compiled, instead it is added to the list of functions to install.

4.8  What about main() ?

There are two different issues with main(): first this is reserved function name in C, so using it with gp2c will cause a name clash. To avoid this, either rename it or use the flag -p.

Secondy gp2c has no support for generating stand-alone GP programs. However adding manually a main() C function is not difficult in general.

5  Command-line options of gp2c

Here is a brief description of the main options of gp2c, which can be seen with ./gp2c -h.

In Section 2.1 we saw how to use the -g option.

  • -g tells gp2c to generate gerepile calls to clean up the PARI stack and reduce memory usage. You will probably need this option, although the C code will be easier to read or hand-edit without it.
  • -ofile tells gp2c to write the generated C file to the file file instead of the standard output.
  • -iN allows you to change the indentation of the generated C file. So if you want 4 spaces, just use the -i4 option with gp2c. The default is 2.
  • -C adds code to perform range checking for GP constructs like x[a] and x[a,b]. This also checks whether x has the correct type. By default gp2c does not perform such check, which can lead to a runtime crash with invalid code. This option causes a small runtime penalty and a large C code readability penalty.
  • -L adds compiler directives to the code so that warning and error found by the compiler are prefixed with the line number in the original GP file instead of the C file.
  • -W is useful for debugging the .gp file, in the sense that it detects if some local variables are undeclared. For example, if the file algorithm.gp has a routine like
    radical(x)=F=factor(x)[,1];prod(i=1,length(F),F[i])
    

    The variable ’F’ is undeclared in this routine, so when running gp2c with the -W option it prints

    Warning:algorithm.gp:1:variable undeclared F

    At present, an undeclared variable is taken to be a "formal variable" for polynomials by gp2c, so do not declare it if that is what you intend. For example in pol(a,b,c)=a*x^2+b*x+c you must not declare x since it stands for the formal variable ’x.

  • -pprefix A problem with C is that it is subject to name clashes, i.e., if a GP variable in your routine has the same name as a C symbol in the pari library, the compiler will report strange errors. So this option changes ALL user variables and user routine names by adding a prefix prefix to them. For example the GP routine add(x,y) with -pmy_ will become the C function my_add(x,y).

    Try this option each time the compiler fails to compile gp2c output to see if there is a name conflict. If this is the case, change the name in your GP script. It may be difficult to find conflicting names if your compiler is not verbose enough and if you are not familiar with the PARI code and C in general.

    Example of conflicting names are top,bot,prec,un, but there are thousands of others and they may be system-dependent.

  • -ssuffix: Add suffix to the names of the installed functions under GP. This is to avoid clashes with the original GP script. For example, if you want to compare timings you may want to use the option -s_c This does not affect the C code, only the install commands.
  • -S: Assume strict prototypes for functions. This is related to the ’strictargs’ GP default. This makes all arguments of functions defined in the file mandatory unless the function supplies an explicit default value. This does not affect the C code, only the prototype code in the install commands. In this example, the prototype code changes from "D0,G,DG" to "GDG".
    test(data,flag=0)={CODE}
    
  • -h gives the help.
  • -v gives the gp2c version.
  • -l prints a list of all the GP functions known by the compiler. So if a routine contains a GP routine not on this list, gp2c will show an error when trying to translate it.

    Reasons why a GP function may not be known by the compiler are:

    • The function is not part of the PARI library. See Section 4.2
    • You use the old PARI 1.39 function names instead of the new ones. gp2c currently does not know about the ’compat’ default. Use whatnow under GP to get the current name. For example, mod() is now Mod().
    • You use a GP function that does not exists in the GP version gp2c was compiled against. Please recompile gp2c against this GP version.

      Normally no functions are added between two stable releases of GP with the same minor version number (say 2.1.1 and 2.1.2) so there is no need to recompile gp2c when you upgrade. But if you use the developement versions, you need to recompile. Also some new developement versions may break old versions of gp2c, so upgrade gp2c at the same time.

      However, if you want to compile scripts which do not use the new functions, you do not need to recompile. Note that you may use the GP environment variables to tell gp2c-run which GP to use.

  • -t Output the table of types known to the compiler, see Section 3.

This document was translated from LATEX by HEVEA.
gp2c-0.0.14/doc/Makefile.am0000644000175000017500000000275313623476440012171 00000000000000all: man_MANS = gp2c.1 gp2c-run.1 $(GP2C_DBG1) EXTRA_MANS = gp2c-dbg.1 GP2C_DOC = gp2c.dvi gp2c.html gp2c001.png TYPE_DOC = type.dvi type.html type001.png PDF_DOC = gp2c.pdf type.pdf ALL_DOC = gp2c.ps type.ps $(PDF_DOC) GP2C_CRUFT = gp2c.aux gp2c.haux gp2c.htoc gp2c.image.tex gp2c.log gp2c.toc TYPE_CRUFT = type.aux type.haux type.htoc type.image.tex type.log type.toc EXTRA_DIST = gp2c.1 gp2c.tex type.tex $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC) MAINTAINERCLEANFILES = $(GP2C_DOC) $(TYPE_DOC) $(ALL_DOC) $(GP2C_CRUFT) $(TYPE_CRUFT) gp2c.dvi gp2c.aux: $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex latex $(srcdir)/gp2c.tex type.dvi type.aux: $(srcdir)/type.tex latex $(srcdir)/type.tex latex $(srcdir)/type.tex gp2c.pdf: $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex pdflatex $(srcdir)/gp2c.tex type.pdf: $(srcdir)/type.tex pdflatex $(srcdir)/type.tex pdflatex $(srcdir)/type.tex gp2c.ps: gp2c.dvi dvips gp2c.dvi -o gp2c.ps type.ps: type.dvi dvips type.dvi -o type.ps gp2c.html: $(srcdir)/gp2c.tex hevea -fix $(srcdir)/gp2c.tex type.html: $(srcdir)/type.tex hevea -fix $(srcdir)/type.tex doc: gp2c.dvi type.dvi dochtml: gp2c.html type.html docall: $(ALL_DOC) gp2c.html type.html gzip -c gp2c.ps > gp2c.ps.gz gzip -c type.ps > type.ps.gz install-data-local: $(INSTALL) -d $(DESTDIR)$(docdir) for i in $(GP2C_DOC) $(TYPE_DOC) $(PDF_DOC); do \ if test -f $(srcdir)/$$i; then \ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(docdir); \ fi \ done; uninstall-local: rm -r $(DESTDIR)$(docdir) gp2c-0.0.14/AUTHORS0000644000175000017500000000006314146167425010431 00000000000000Bill Allombert gp2c-0.0.14/COPYING0000644000175000017500000004325414146167270010423 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. gp2c-0.0.14/gp2c-dbg0000755000175000017500000000050113623476440010670 00000000000000#! /bin/sh #This file is part of the GP2C package # #This stupid shell script is Public Domain. # if test ! -f scripts/gp2c-dbg; then cat <&2 Package has not been configured for debugging. Please type ./configure --enable-debug to configure it for debugging. EOF exit 1; fi GP2C=./gp2c exec scripts/gp2c-dbg "$@" gp2c-0.0.14/aclocal.m40000644000175000017500000012570314676603631011234 00000000000000# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR gp2c-0.0.14/Makefile.am0000644000175000017500000000050313623476440011413 00000000000000SUBDIRS = src desc scripts doc test test2 test3 test4 EXTRA_DIST = BUGS gp2c gp2c-run gp2c-dbg TESTS = scripts/runtest dist-hook: test -d $(distdir)/config || mkdir $(distdir)/config for i in $(srcdir)/config/*; do \ test -f $$i && $(INSTALL_SCRIPT) $$i $(distdir)/config; done checkspaces: config/checkspaces