1 /* 2 * gretl -- Gnu Regression, Econometrics and Time-series Library 3 * Copyright (C) 2001 Allin Cottrell and Riccardo "Jack" Lucchetti 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #ifndef GRETL_CMATRIX_H 21 #define GRETL_CMATRIX_H 22 23 #include <complex.h> 24 25 #define complex_scalar(m) (m->is_complex && m->rows == 1 && m->cols == 1) 26 27 gretl_matrix *gretl_matrix_fft (const gretl_matrix *y, int cmat, int *err); 28 29 gretl_matrix *gretl_matrix_ffti (const gretl_matrix *y, int *err); 30 31 gretl_matrix *gretl_cmatrix_multiply (const gretl_matrix *A, 32 const gretl_matrix *B, 33 int *err); 34 35 gretl_matrix *gretl_cmatrix_AHB (const gretl_matrix *A, 36 const gretl_matrix *B, 37 int *err); 38 39 gretl_matrix *gretl_cmatrix_inverse (const gretl_matrix *A, int *err); 40 41 gretl_matrix *gretl_cmatrix_ginv (const gretl_matrix *A, int *err); 42 43 gretl_matrix *gretl_zheev (gretl_matrix *A, int eigenvecs, 44 int *err); 45 46 gretl_matrix *gretl_zgeev (const gretl_matrix *A, 47 gretl_matrix *VR, 48 gretl_matrix *VL, 49 int *err); 50 51 gretl_matrix *gretl_zgees (const gretl_matrix *A, 52 gretl_matrix *Z, 53 gretl_matrix *W, 54 int *err); 55 56 int gretl_cmatrix_SVD (const gretl_matrix *x, gretl_matrix **pu, 57 gretl_vector **ps, gretl_matrix **pvt, 58 int smod); 59 60 int gretl_cmatrix_rank (const gretl_matrix *A, int *err); 61 62 gretl_matrix *gretl_cmatrix_fft (const gretl_matrix *A, int inverse, 63 int *err); 64 65 gretl_matrix *gretl_cmatrix_build (const gretl_matrix *Re, 66 const gretl_matrix *Im, 67 double x, double y, 68 int *err); 69 70 gretl_matrix *gretl_cmatrix_extract (const gretl_matrix *A, 71 int im, int *err); 72 73 gretl_matrix *gretl_ctrans (const gretl_matrix *A, 74 int conjugate, int *err); 75 76 int gretl_ctrans_in_place (gretl_matrix *A); 77 78 gretl_matrix *gretl_cmatrix_add_sub (const gretl_matrix *A, 79 const gretl_matrix *B, 80 int sgn, int *err); 81 82 int apply_cmatrix_dfunc (gretl_matrix *targ, 83 const gretl_matrix *src, 84 double (*dfunc) (double complex)); 85 86 int apply_cmatrix_cfunc (gretl_matrix *targ, 87 const gretl_matrix *src, 88 double complex (*cfunc) (double complex)); 89 90 int apply_cmatrix_unary_op (gretl_matrix *targ, 91 const gretl_matrix *src, 92 int op); 93 94 gretl_matrix *gretl_cmatrix_determinant (const gretl_matrix *X, 95 int log, int *err); 96 97 gretl_matrix *gretl_cmatrix_trace (const gretl_matrix *X, 98 int *err); 99 100 int gretl_cmatrix_set_diagonal (gretl_matrix *targ, 101 const gretl_matrix *src, 102 double x); 103 104 int gretl_cmatrix_set_triangle (gretl_matrix *targ, 105 const gretl_matrix *src, 106 double x, int upper); 107 108 gretl_matrix *gretl_cmatrix_hdprod (const gretl_matrix *A, 109 const gretl_matrix *B, 110 int *err); 111 112 gretl_matrix *gretl_cmatrix_kronecker (const gretl_matrix *A, 113 const gretl_matrix *B, 114 int *err); 115 116 gretl_matrix *gretl_cmatrix_switch (const gretl_matrix *m, 117 int to_new, int *err); 118 119 gretl_matrix *gretl_cmatrix_vector_stat (const gretl_matrix *m, 120 GretlVecStat vs, int rowwise, 121 int *err); 122 123 int gretl_cmatrix_fill (gretl_matrix *m, double complex z); 124 125 gretl_matrix *gretl_cmatrix_from_scalar (double complex z, int *err); 126 127 int gretl_cmatrix_print_range (const gretl_matrix *A, 128 const char *name, 129 int rmin, int rmax, 130 PRN *prn); 131 132 int gretl_cmatrix_print (const gretl_matrix *A, 133 const char *name, 134 PRN *prn); 135 136 int gretl_cmatrix_printf (const gretl_matrix *A, 137 const char *fmt, 138 PRN *prn); 139 140 gretl_matrix *gretl_cmatrix_dot_op (const gretl_matrix *a, 141 const gretl_matrix *b, 142 int op, int *err); 143 144 gretl_matrix *gretl_cmatrix_divide (const gretl_matrix *A, 145 const gretl_matrix *B, 146 GretlMatrixMod mod, 147 int *err); 148 149 gretl_matrix *cmatrix_get_element (const gretl_matrix *M, 150 int i, int *err); 151 152 int gretl_cmatrix_set_part (gretl_matrix *targ, 153 const gretl_matrix *src, 154 double x, int im); 155 156 gretl_matrix *gretl_matrix_log (const gretl_matrix *A, 157 int *err); 158 159 gretl_matrix *gretl_cmatrix_exp (const gretl_matrix *A, 160 int *err); 161 162 gretl_matrix *gretl_cmatrix_cholesky (const gretl_matrix *A, 163 int *err); 164 165 gretl_matrix *gretl_cmatrix_QR_decomp (const gretl_matrix *A, 166 gretl_matrix *R, 167 int *err); 168 169 void real_to_complex_fill (gretl_matrix *targ, 170 const gretl_matrix *src, 171 int r0, int c0); 172 173 #endif /* GRETL_CMATRIX_H */ 174