Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:15:21

0001 /*
0002     Copyright (C) 2013 Mike Hansen
0003 
0004     This file is part of FLINT.
0005 
0006     FLINT is free software: you can redistribute it and/or modify it under
0007     the terms of the GNU Lesser General Public License (LGPL) as published
0008     by the Free Software Foundation; either version 3 of the License, or
0009     (at your option) any later version.  See <https://www.gnu.org/licenses/>.
0010 */
0011 
0012 #ifdef T
0013 
0014 #include "templates.h"
0015 
0016 #ifdef __cplusplus
0017  extern "C" {
0018 #endif
0019 
0020 /*  Memory management  *******************************************************/
0021 
0022 TEMPLATE(T, struct) * _TEMPLATE(T, vec_init)(slong len, const TEMPLATE(T, ctx_t) ctx);
0023 
0024 void _TEMPLATE(T, vec_clear)(TEMPLATE(T, struct) * vec, slong len,
0025                              const TEMPLATE(T, ctx_t) ctx);
0026 
0027 /*  Randomisation  ***********************************************************/
0028 void _TEMPLATE(T, vec_randtest)(TEMPLATE(T, struct) * f,
0029                            flint_rand_t state,
0030                            slong len,
0031                            const TEMPLATE(T, ctx_t) ctx);
0032 
0033 /*  Norms  *******************************************************************/
0034 
0035 /*  Input and output  ********************************************************/
0036 
0037 #ifdef FLINT_HAVE_FILE
0038 int _TEMPLATE(T, vec_fprint)(FILE * file, const TEMPLATE(T, struct) * vec, slong len, const TEMPLATE(T, ctx_t) ctx);
0039 #endif
0040 
0041 int _TEMPLATE(T, vec_print)(const TEMPLATE(T, struct) * vec, slong len, const TEMPLATE(T, ctx_t) ctx);
0042 
0043 /*  Conversions  *************************************************************/
0044 
0045 /*  Assignment and basic manipulation  ***************************************/
0046 void _TEMPLATE(T, vec_set)(TEMPLATE(T, struct) * v,
0047                       const TEMPLATE(T, struct) * f,
0048                       slong len, const TEMPLATE(T, ctx_t) ctx);
0049 
0050 void _TEMPLATE(T, vec_swap)(TEMPLATE(T, struct) * vec1,
0051                        TEMPLATE(T, struct) * vec2,
0052                        slong len2, const TEMPLATE(T, ctx_t) ctx);
0053 
0054 void _TEMPLATE(T, vec_zero)(TEMPLATE(T, struct) * v,
0055                        slong len,
0056                        const TEMPLATE(T, ctx_t) ctx);
0057 
0058 void _TEMPLATE(T, vec_neg)(TEMPLATE(T, struct) * vec1,
0059                       const TEMPLATE(T, struct) * vec2,
0060                       slong len2,
0061                       const TEMPLATE(T, ctx_t) ctx);
0062 
0063 /*  Comparison  **************************************************************/
0064 int _TEMPLATE(T, vec_is_zero)(const TEMPLATE(T, struct) * vec, slong len,
0065                           const TEMPLATE(T, ctx_t) ctx);
0066 
0067 int _TEMPLATE(T, vec_equal)(const TEMPLATE(T, struct) * vec1,
0068                         const TEMPLATE(T, struct) * vec2, slong len,
0069                         const TEMPLATE(T, ctx_t) ctx);
0070 
0071 /*  Sorting  *****************************************************************/
0072 
0073 /*  Addition  ****************************************************************/
0074 
0075 void _TEMPLATE(T, vec_add)(TEMPLATE(T, struct) * res,
0076                            const TEMPLATE(T, struct) * vec1,
0077                            const TEMPLATE(T, struct) * vec2,
0078                            slong len2,
0079                            const TEMPLATE(T, ctx_t) ctx);
0080 
0081 void _TEMPLATE(T, vec_sub)(TEMPLATE(T, struct) * res,
0082                            const TEMPLATE(T, struct) * vec1,
0083                            const TEMPLATE(T, struct) * vec2,
0084                            slong len2,
0085                            const TEMPLATE(T, ctx_t) ctx);
0086 
0087 void _TEMPLATE(T, TEMPLATE(vec_scalar_addmul, T))(TEMPLATE(T, struct) * vec1,
0088                                              const TEMPLATE(T, struct) * vec2,
0089                                              slong len2,
0090                                              const TEMPLATE(T, t) x,
0091                                              const TEMPLATE(T, ctx_t) ctx);
0092 
0093 void _TEMPLATE(T, TEMPLATE(vec_scalar_submul, T))(TEMPLATE(T, struct) * vec1,
0094                                              const TEMPLATE(T, struct) * vec2,
0095                                              slong len2,
0096                                              const TEMPLATE(T, t) x,
0097                                              const TEMPLATE(T, ctx_t) ctx);
0098 
0099 void _TEMPLATE3(T, vec_scalar_mul, T) (TEMPLATE(T, struct) * vec1,
0100                                   const TEMPLATE(T, struct) * vec2,
0101                                   slong len2, const TEMPLATE(T, t) x,
0102                                   const TEMPLATE(T, ctx_t) ctx);
0103 
0104 void _TEMPLATE(T, vec_scalar_mul_fmpz) (TEMPLATE(T, struct) * vec1,
0105                                   const TEMPLATE(T, struct) * vec2,
0106                                   slong len2, const fmpz_t x,
0107                                   const TEMPLATE(T, ctx_t) ctx);
0108 
0109 void _TEMPLATE(T, vec_scalar_mul_si) (TEMPLATE(T, struct) * vec1,
0110                                   const TEMPLATE(T, struct) * vec2,
0111                                   slong len2, const slong x,
0112                                   const TEMPLATE(T, ctx_t) ctx);
0113 
0114 void _TEMPLATE(T, vec_scalar_mul_ui) (TEMPLATE(T, struct) * vec1,
0115                                   const TEMPLATE(T, struct) * vec2,
0116                                   slong len2, const ulong x,
0117                                   const TEMPLATE(T, ctx_t) ctx);
0118 
0119 /* ****************************************************************************/
0120 void _TEMPLATE(T, vec_dot)(TEMPLATE(T, t) res,
0121                       const TEMPLATE(T, struct) * vec1,
0122                       const TEMPLATE(T, struct) * vec2,
0123                       slong len2,
0124                       const TEMPLATE(T, ctx_t) ctx);
0125 
0126 #ifdef __cplusplus
0127  }
0128 #endif
0129 
0130 #endif