Main Page | Modules | Class List | File List | Class Members | File Members

2x4matrixf.h

Go to the documentation of this file.
00001 
00014 /* This library is free software; you can redistribute it and/or
00015    modify it under the terms of the GNU Lesser General Public
00016    License as published by the Free Software Foundation; either
00017    version 2.1 of the License, or (at your option) any later version.
00018 
00019    This library is distributed in the hope that it will be useful,
00020    but WITHOUT ANY WARRANTY; without even the implied warranty of
00021    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00022    Lesser General Public License for more details.
00023 
00024    You should have received a copy of the GNU Lesser General Public
00025    License along with this library; if not, write to the Free Software
00026    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00027 */
00028 
00029 #ifndef _GAN_2X4MATRIXF_H
00030 #define _GAN_2X4MATRIXF_H
00031 
00032 #include <stdlib.h>
00033 #include <stdio.h>
00034 #include <math.h>
00035 #include <gandalf/common/misc_defs.h>
00049 /* This library is free software; you can redistribute it and/or
00050    modify it under the terms of the GNU Lesser General Public
00051    License as published by the Free Software Foundation; either
00052    version 2.1 of the License, or (at your option) any later version.
00053 
00054    This library is distributed in the hope that it will be useful,
00055    but WITHOUT ANY WARRANTY; without even the implied warranty of
00056    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00057    Lesser General Public License for more details.
00058 
00059    You should have received a copy of the GNU Lesser General Public
00060    License along with this library; if not, write to the Free Software
00061    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00062 */
00063 
00064 #ifndef _GAN_REPEAT24_H
00065 #define _GAN_REPEAT24_H
00066 
00080 /* This library is free software; you can redistribute it and/or
00081    modify it under the terms of the GNU Lesser General Public
00082    License as published by the Free Software Foundation; either
00083    version 2.1 of the License, or (at your option) any later version.
00084 
00085    This library is distributed in the hope that it will be useful,
00086    but WITHOUT ANY WARRANTY; without even the implied warranty of
00087    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00088    Lesser General Public License for more details.
00089 
00090    You should have received a copy of the GNU Lesser General Public
00091    License along with this library; if not, write to the Free Software
00092    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00093 */
00094 
00095 #ifndef _GAN_REPEAT4_H
00096 #define _GAN_REPEAT4_H
00097 
00098 #ifdef __cplusplus
00099 extern "C" {
00100 #endif
00101 
00102 /* macros for constructing four-fold repetitions */
00103 #define GAN_REP4_AS(a,b,p1,p2,p3,p4) (a p1 b, a p2 b, a p3 b, a p4 b)
00104 #define GAN_REP4_AS_C(a,b) GAN_REP4_AS(a,b,x,y,z,w)
00105 #define GAN_REP4_A(a,p1,p2,p3,p4) (a p1, a p2, a p3, a p4)
00106 #define GAN_REP4_A_C(a) GAN_REP4_A(a,x,y,z,w)
00107 
00108 #define GAN_FREP4_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00109     (a p1 b q1, a p2 b q2,\
00110      a p3 b q3, a p4 b q4)
00111 #define GAN_FREP4_A_C(a,b,p1,p2,p3,p4) GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4)
00112 
00113 #define GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00114            (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c)
00115 #define GAN_REP4_AAS(a,b,c,p1,p2,p3,p4)\
00116            GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4)
00117 #define GAN_REP4_AAS_C(a,b,c) GAN_REP4_AAS(a,b,c,x,y,z,w)
00118 
00119 #define GAN_REP4_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00120            (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4)
00121 #define GAN_REP4_AA(a,b,p1,p2,p3,p4)\
00122            GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4)
00123 #define GAN_REP4_AA_C(a,b) GAN_REP4_AA(a,b,x,y,z,w)
00124 
00125 #define GAN_REP4_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00126      (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d, a p4 b q4 c r4 d)
00127 #define GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00128      (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4)
00129 #define GAN_REP4_AAA(a,b,c,p1,p2,p3,p4)\
00130            GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4)
00131 #define GAN_REP4_AAA_C(a,b,c) GAN_REP4_AAA(a,b,c,x,y,z,w)
00132 
00133 #define GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,op)\
00134         (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4)
00135 #define GAN_REP4_OP_AA(a,b,p1,p2,p3,p4,op)\
00136            GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op)
00137 #define GAN_REP4_OP_AA_C(a,b,op) GAN_REP4_OP_AA(a,b,x,y,z,w,op)
00138 
00139 #ifdef __cplusplus
00140 }
00141 #endif
00142 
00143 #endif /* #ifndef _GAN_REPEAT4_H */
00144 
00145 #ifdef __cplusplus
00146 extern "C" {
00147 #endif
00148 
00149 /* macros for constructing dual two-fold repetitions */
00150 
00151 #define GAN_FREP24_A(a,b,p1,p2,q1,q2,q3,q4,r11,r12,r13,r14,r21,r22,r23,r24)\
00152             (GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),\
00153              GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24))
00154 #define GAN_FREP24_A_C(a,b,r11,r12,r13,r14,r21,r22,r23,r24) \
00155            GAN_FREP24_A(a,b,x,y,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24)
00156 
00157 /* most general macros */
00158 #define GAN_REP24_ABCS(a,b,c,d,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4,t1,t2,u1,u2,u3,u4)\
00159  (GAN_REP4_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4,t1##u1,t1##u2,t1##u3,t1##u4),\
00160   GAN_REP4_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4,t2##u1,t2##u2,t2##u3,t2##u4))
00161 #define GAN_REP24_ABC(a,b,c,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4,t1,t2,u1,u2,u3,u4)\
00162  (GAN_REP4_ABC(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4,t1##u1,t1##u2,t1##u3,t1##u4),\
00163   GAN_REP4_ABC(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4,t2##u1,t2##u2,t2##u3,t2##u4))
00164 
00165 #define GAN_REP24_AAAS(a,b,c,d,p1,p2,q1,q2,q3,q4)\
00166   GAN_REP24_ABCS(a,b,c,d,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00167 #define GAN_REP24_AAA(a,b,c,p1,p2,q1,q2,q3,q4)\
00168    GAN_REP24_ABC(a,b,c,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00169 #define GAN_REP24_ABS(a,b,c,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4)\
00170  (GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
00171   GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4))
00172 #define GAN_REP24_AB(a,b,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4)\
00173  (GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
00174   GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4))
00175 #define GAN_REP24_AAS(a,b,c,p1,p2,q1,q2,q3,q4)\
00176             GAN_REP24_ABS(a,b,c,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00177 #define GAN_REP24_AA(a,b,p1,p2,q1,q2,q3,q4)\
00178             GAN_REP24_AB(a,b,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00179 #define GAN_REP24_AS(a,b,p1,p2,q1,q2,q3,q4)\
00180  (GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),\
00181   GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4))
00182 #define GAN_REP24_A(a,p1,p2,q1,q2,q3,q4)\
00183  (GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),\
00184   GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4))
00185 
00186 /* macros specific to xx, xy etc coordinates */
00187 #define GAN_REP24_AS_C(a,b) GAN_REP24_AS(a,b,x,y,x,y,z,w)
00188 #define GAN_REP24_AAS_C(a,b,c) GAN_REP24_AAS(a,b,c,x,y,x,y,z,w)
00189 #define GAN_REP24_AAAS_C(a,b,c,d) GAN_REP24_AAAS(a,b,c,d,x,y,x,y,z,w)
00190 #define GAN_REP24_A_C(a) GAN_REP24_A(a,x,y,x,y,z,w)
00191 #define GAN_REP24_AA_C(a,b) GAN_REP24_AA(a,b,x,y,x,y,z,w)
00192 #define GAN_REP24_AAA_C(a,b,c) GAN_REP24_AAA(a,b,c,x,y,x,y,z,w)
00193 
00194 #ifdef __cplusplus
00195 }
00196 #endif
00197 
00198 #endif /* #ifndef _GAN_REPEAT24_H */
00199 #include <gandalf/linalg/2vectorf.h>
00200 #include <gandalf/linalg/4vectorf.h>
00201 #include <gandalf/linalg/2x2matrixf.h>
00202 #include <gandalf/linalg/4x4matrixf.h>
00216 /* This library is free software; you can redistribute it and/or
00217    modify it under the terms of the GNU Lesser General Public
00218    License as published by the Free Software Foundation; either
00219    version 2.1 of the License, or (at your option) any later version.
00220 
00221    This library is distributed in the hope that it will be useful,
00222    but WITHOUT ANY WARRANTY; without even the implied warranty of
00223    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00224    Lesser General Public License for more details.
00225 
00226    You should have received a copy of the GNU Lesser General Public
00227    License along with this library; if not, write to the Free Software
00228    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00229 */
00230 
00231 #endif /* #ifndef _GAN_MATVECF_MACROS_H */
00232 #include <gandalf/linalg/matf_gen.h>
00233 
00234 #ifdef __cplusplus
00235 extern "C" {
00236 #endif
00237 
00253 
00254 typedef struct Gan_Matrix24_f
00255 {
00256    float xx, xy, xz, xw,
00257          yx, yy, yz, yw;
00258 } Gan_Matrix24_f;
00259 
00260 /* generic matrix multiply operations */
00261 #define GAN_MAT24F_MULT1D(a,b,c,p1,p2,q1,q2,q3,q4)\
00262  (a p1 = GAN_REP4_OP_AB(b,* c,xx,xy,xz,xw,q1,q2,q3,q4,+),\
00263   a p2 = GAN_REP4_OP_AB(b,* c,yx,yy,yz,yw,q1,q2,q3,q4,+))
00264 #define GAN_MAT24TF_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2)\
00265  (a p1 = GAN_REP2_OP_AB(b,* c,xx,yx,q1,q2,+),\
00266   a p2 = GAN_REP2_OP_AB(b,* c,xy,yy,q1,q2,+),\
00267   a p3 = GAN_REP2_OP_AB(b,* c,xz,yz,q1,q2,+),\
00268   a p4 = GAN_REP2_OP_AB(b,* c,xw,yw,q1,q2,+))
00269 
00270 /* declare functions specific to 2x3 matrices */
00284 /* This library is free software; you can redistribute it and/or
00285    modify it under the terms of the GNU Lesser General Public
00286    License as published by the Free Software Foundation; either
00287    version 2.1 of the License, or (at your option) any later version.
00288 
00289    This library is distributed in the hope that it will be useful,
00290    but WITHOUT ANY WARRANTY; without even the implied warranty of
00291    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00292    Lesser General Public License for more details.
00293 
00294    You should have received a copy of the GNU Lesser General Public
00295    License along with this library; if not, write to the Free Software
00296    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00297 */
00298 
00299 #ifndef _GAN_2X4MATF_H
00300 
00317  Gan_Matrix24_f *gan_mat24f_fill_q ( Gan_Matrix24_f *A,
00318                                     float XX, float XY, float XZ, float XW,
00319                                     float YX, float YY, float YZ, float YW );
00320 
00342  Gan_Vector2_f *gan_mat24f_multv3h_q ( const Gan_Matrix24_f *A,
00343                                       const Gan_Vector3_f *p, float h,
00344                                       Gan_Vector2_f *q );
00345 
00366  void gan_mat24f_get_rows_q ( const Gan_Matrix24_f *A,
00367                              Gan_Vector4_f *p, Gan_Vector4_f *q );
00368 
00380  void gan_mat24f_get_cols_q ( const Gan_Matrix24_f *A,
00381                              Gan_Vector2_f *p, Gan_Vector2_f *q,
00382                              Gan_Vector2_f *r, Gan_Vector2_f *s );
00383 
00389 #endif /* #ifndef _GAN_2X4MATF_H */
00390 
00391 #define GAN_MATTYPE Gan_Matrix24_f
00392 #define GAN_MATRIX_TYPE Gan_Matrix_f
00393 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
00394 #define GAN_VECTOR_TYPE Gan_Vector_f
00395 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
00396 #define GAN_REALTYPE float
00397 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
00398 #define GAN_FREAD_LENDIAN  gan_fread_lendian_f32
00399 #define GAN_VECTYPE1 Gan_Vector2_f
00400 #define GAN_VECTYPE2 Gan_Vector4_f
00401 #define GAN_MATTYPEL Gan_Matrix22_f
00402 #define GAN_MATTYPER Gan_Matrix44_f
00403 #define GAN_SQUMATTYPEL Gan_SquMatrix22_f
00404 #define GAN_SQUMATTYPER Gan_SquMatrix44_f
00405 #define GAN_MAT_FPRINT                     gan_mat24f_fprint
00406 #define GAN_MAT_PRINT                      gan_mat24f_print
00407 #define GAN_MAT_FSCANF                     gan_mat24f_fscanf
00408 #define GAN_MAT_FWRITE                     gan_mat24f_fwrite
00409 #define GAN_MAT_FREAD                      gan_mat24f_fread
00410 #define GAN_MAT_ZERO_Q                     gan_mat24f_zero_q
00411 #define GAN_MAT_ZERO_S                     gan_mat24f_zero_s
00412 #define GAN_MAT_COPY_Q                     gan_mat24f_copy_q
00413 #define GAN_MAT_COPY_S                     gan_mat24f_copy_s
00414 #define GAN_MAT_SCALE_Q                    gan_mat24f_scale_q
00415 #define GAN_MAT_SCALE_I                    gan_mat24f_scale_i
00416 #define GAN_MAT_SCALE_S                    gan_mat24f_scale_s
00417 #define GAN_MAT_DIVIDE_Q                   gan_mat24f_divide_q
00418 #define GAN_MAT_DIVIDE_I                   gan_mat24f_divide_i
00419 #define GAN_MAT_DIVIDE_S                   gan_mat24f_divide_s
00420 #define GAN_MAT_NEGATE_Q                   gan_mat24f_negate_q
00421 #define GAN_MAT_NEGATE_I                   gan_mat24f_negate_i
00422 #define GAN_MAT_NEGATE_S                   gan_mat24f_negate_s
00423 #define GAN_MAT_UNIT_Q                     gan_mat24f_unit_q
00424 #define GAN_MAT_UNIT_I                     gan_mat24f_unit_i
00425 #define GAN_MAT_UNIT_S                     gan_mat24f_unit_s
00426 #define GAN_MAT_ADD_Q                      gan_mat24f_add_q
00427 #define GAN_MAT_ADD_I1                     gan_mat24f_add_i1
00428 #define GAN_MAT_ADD_I2                     gan_mat24f_add_i2
00429 #define GAN_MAT_INCREMENT                  gan_mat24f_increment
00430 #define GAN_MAT_ADD_S                      gan_mat24f_add_s
00431 #define GAN_MAT_SUB_Q                      gan_mat24f_sub_q
00432 #define GAN_MAT_SUB_I1                     gan_mat24f_sub_i1
00433 #define GAN_MAT_SUB_I2                     gan_mat24f_sub_i2
00434 #define GAN_MAT_DECREMENT                  gan_mat24f_decrement
00435 #define GAN_MAT_SUB_S                      gan_mat24f_sub_s
00436 #define GAN_VEC_OUTER_Q                    gan_vec24f_outer_q
00437 #define GAN_VEC_OUTER_S                    gan_vec24f_outer_s
00438 #define GAN_MAT_MULTV_Q                    gan_mat24f_multv4_q
00439 #define GAN_MAT_MULTV_S                    gan_mat24f_multv4_s
00440 #define GAN_MATT_MULTV_Q                   gan_mat24Tf_multv2_q
00441 #define GAN_MATT_MULTV_S                   gan_mat24Tf_multv2_s
00442 #define GAN_MAT_LMULTM_Q                   gan_mat24f_lmultm22_q
00443 #define GAN_MAT_LMULTM_S                   gan_mat24f_lmultm22_s
00444 #define GAN_MAT_LMULTMT_Q                  gan_mat24f_lmultm22T_q
00445 #define GAN_MAT_LMULTMT_S                  gan_mat24f_lmultm22T_s
00446 #define GAN_MAT_RMULTM_Q                   gan_mat24f_rmultm44_q
00447 #define GAN_MAT_RMULTM_S                   gan_mat24f_rmultm44_s
00448 #define GAN_MAT_RMULTMT_Q                  gan_mat24f_rmultm44T_q
00449 #define GAN_MAT_RMULTMT_S                  gan_mat24f_rmultm44T_s
00450 #define GAN_MAT_LMULTMT_SYM_Q              gan_mat24f_lmultm24T_sym_q
00451 #define GAN_MAT_LMULTMT_SYM_S              gan_mat24f_lmultm24T_sym_s
00452 #define GAN_MAT_RMULTMT_SYM_Q              gan_mat24f_rmultm24T_sym_q
00453 #define GAN_MAT_RMULTMT_SYM_S              gan_mat24f_rmultm24T_sym_s
00454 #define GAN_MAT_SLMULTT_Q                  gan_mat24f_slmultT_q
00455 #define GAN_MAT_SLMULTT_S                  gan_mat24f_slmultT_s
00456 #define GAN_MAT_SRMULTT_Q                  gan_mat24f_srmultT_q
00457 #define GAN_MAT_SRMULTT_S                  gan_mat24f_srmultT_s
00458 #define GAN_MAT_LMULTS_Q                   gan_mat24f_lmults22_q
00459 #define GAN_MAT_LMULTS_S                   gan_mat24f_lmults22_s
00460 #define GAN_MAT_RMULTS_Q                   gan_mat24f_rmults44_q
00461 #define GAN_MAT_RMULTS_S                   gan_mat24f_rmults44_s
00462 #define GAN_SYMMATL_LRMULT_Q               gan_symmat22f_lrmultm24T_q
00463 #define GAN_SYMMATL_LRMULT_S               gan_symmat22f_lrmultm24T_s
00464 #define GAN_SYMMATR_LRMULT_Q               gan_symmat44f_lrmultm24_q
00465 #define GAN_SYMMATR_LRMULT_S               gan_symmat44f_lrmultm24_s
00466 #define GAN_MAT_LMULTL_Q                   gan_mat24f_lmultl22_q
00467 #define GAN_MAT_LMULTL_S                   gan_mat24f_lmultl22_s
00468 #define GAN_MAT_LMULTL_I                   gan_mat24f_lmultl22_i
00469 #define GAN_MAT_LMULTLI_Q                  gan_mat24f_lmultl22I_q
00470 #define GAN_MAT_LMULTLI_S                  gan_mat24f_lmultl22I_s
00471 #define GAN_MAT_LMULTLI_I                  gan_mat24f_lmultl22I_i
00472 #define GAN_MAT_LMULTLT_Q                  gan_mat24f_lmultl22T_q
00473 #define GAN_MAT_LMULTLT_S                  gan_mat24f_lmultl22T_s
00474 #define GAN_MAT_LMULTLT_I                  gan_mat24f_lmultl22T_i
00475 #define GAN_MAT_LMULTLIT_Q                 gan_mat24f_lmultl22IT_q
00476 #define GAN_MAT_LMULTLIT_S                 gan_mat24f_lmultl22IT_s
00477 #define GAN_MAT_LMULTLIT_I                 gan_mat24f_lmultl22IT_i
00478 #define GAN_MAT_RMULTL_Q                   gan_mat24f_rmultl44_q
00479 #define GAN_MAT_RMULTL_S                   gan_mat24f_rmultl44_s
00480 #define GAN_MAT_RMULTL_I                   gan_mat24f_rmultl44_i
00481 #define GAN_MAT_RMULTLI_Q                  gan_mat24f_rmultl44I_q
00482 #define GAN_MAT_RMULTLI_S                  gan_mat24f_rmultl44I_s
00483 #define GAN_MAT_RMULTLI_I                  gan_mat24f_rmultl44I_i
00484 #define GAN_MAT_RMULTLT_Q                  gan_mat24f_rmultl44T_q
00485 #define GAN_MAT_RMULTLT_S                  gan_mat24f_rmultl44T_s
00486 #define GAN_MAT_RMULTLT_I                  gan_mat24f_rmultl44T_i
00487 #define GAN_MAT_RMULTLIT_Q                 gan_mat24f_rmultl44IT_q
00488 #define GAN_MAT_RMULTLIT_S                 gan_mat24f_rmultl44IT_s
00489 #define GAN_MAT_RMULTLIT_I                 gan_mat24f_rmultl44IT_i
00490 #define GAN_MAT_SUMSQR_Q                   gan_mat24f_sumsqr_q
00491 #define GAN_MAT_SUMSQR_S                   gan_mat24f_sumsqr_s
00492 #define GAN_MAT_FNORM_Q                    gan_mat24f_Fnorm_q
00493 #define GAN_MAT_FNORM_S                    gan_mat24f_Fnorm_s
00494 #define GAN_MAT_FROM_MAT_Q                 gan_mat24f_from_matf_q
00495 #define GAN_MAT_FROM_MAT_S                 gan_mat24f_from_matf_s
00496 
00497 #ifndef _GAN_2X4MATF_H
00498 #define _GAN_2X4MATF_H
00499 
00500 
00501 #endif /* #ifndef _GAN_2X4MATF_H */
00502 
00515 /* This library is free software; you can redistribute it and/or
00516    modify it under the terms of the GNU Lesser General Public
00517    License as published by the Free Software Foundation; either
00518    version 2.1 of the License, or (at your option) any later version.
00519 
00520    This library is distributed in the hope that it will be useful,
00521    but WITHOUT ANY WARRANTY; without even the implied warranty of
00522    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00523    Lesser General Public License for more details.
00524 
00525    You should have received a copy of the GNU Lesser General Public
00526    License along with this library; if not, write to the Free Software
00527    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00528 */
00529 
00530 /* function declarations for functions common to all small vector types */
00531 
00532 
00533 
00534 /* documentation for macros defined in individual header files */
00535 
00546  Gan_Matrix24_f *gan_mat24f_zero_q ( const Gan_Matrix24_f *A );
00547 
00564  Gan_Matrix24_f *gan_mat24f_copy_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00565 
00583  Gan_Matrix24_f *gan_mat24f_scale_q ( Gan_Matrix24_f *A, float a,
00584                                Gan_Matrix24_f *B );
00585 
00593  Gan_Matrix24_f *gan_mat24f_scale_i ( Gan_Matrix24_f *A, float a );
00594 
00603  Gan_Matrix24_f *gan_mat24f_divide_q ( Gan_Matrix24_f *A, float a,
00604                                 Gan_Matrix24_f *B );
00605 
00613  Gan_Matrix24_f *gan_mat24f_divide_i ( Gan_Matrix24_f *A, float a );
00614 
00622  Gan_Matrix24_f *gan_mat24f_negate_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00623 
00631  Gan_Matrix24_f *gan_mat24f_negate_i ( Gan_Matrix24_f *A );
00632 
00640  Gan_Matrix24_f *gan_mat24f_unit_i ( Gan_Matrix24_f *A );
00641 
00659  Gan_Matrix24_f *gan_mat24f_add_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B, Gan_Matrix24_f *C );
00660 
00669  Gan_Matrix24_f *gan_mat24f_add_i1 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00670 
00679  Gan_Matrix24_f *gan_mat24f_add_i2 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00680 
00689  Gan_Matrix24_f *gan_mat24f_increment ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00690 
00708  Gan_Matrix24_f *gan_mat24f_sub_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B, Gan_Matrix24_f *C );
00709 
00718  Gan_Matrix24_f *gan_mat24f_sub_i1 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00719 
00728  Gan_Matrix24_f *gan_mat24f_sub_i2 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00729 
00738  Gan_Matrix24_f *gan_mat24f_decrement ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00739 
00757  Gan_Matrix24_f *gan_vec24f_outer_q ( const Gan_Vector2_f *p, const Gan_Vector4_f *q,
00758                                Gan_Matrix24_f *A );
00759 
00768  Gan_Vector2_f *gan_mat24f_multv4_q ( const Gan_Matrix24_f *A, Gan_Vector4_f *p,
00769                                 Gan_Vector2_f *q );
00770 
00771 
00780  Gan_Vector4_f *gan_mat24Tf_multv2_q ( const Gan_Matrix24_f *A, Gan_Vector2_f *p,
00781                                  Gan_Vector4_f *q );
00782 
00783 
00802  Gan_Matrix24_f *gan_mat24f_lmultm22_q ( Gan_Matrix24_f *A, const Gan_Matrix22_f *B,
00803                                 Gan_Matrix24_f *C );
00804 
00814  Gan_Matrix24_f *gan_mat24f_lmultm22T_q ( Gan_Matrix24_f *A, const Gan_Matrix22_f *B,
00815                                  Gan_Matrix24_f *C );
00816 
00826  Gan_Matrix24_f *gan_mat24f_rmultm44_q ( Gan_Matrix24_f *A, const Gan_Matrix44_f *B,
00827                                 Gan_Matrix24_f *C );
00828 
00838  Gan_Matrix24_f *gan_mat24f_rmultm44T_q ( Gan_Matrix24_f *A, const Gan_Matrix44_f *B,
00839                                  Gan_Matrix24_f *C );
00840 
00852  Gan_SquMatrix44_f *gan_mat24f_lmultm24T_sym_q ( const Gan_Matrix24_f *A, const Gan_Matrix24_f *B,
00853                                          Gan_SquMatrix44_f *C );
00854 
00866  Gan_SquMatrix22_f *gan_mat24f_rmultm24T_sym_q ( const Gan_Matrix24_f *A, const Gan_Matrix24_f *B,
00867                                          Gan_SquMatrix22_f *C );
00868 
00877  Gan_Matrix24_f *gan_mat24f_lmults22_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00878                                 Gan_Matrix24_f *C );
00879 
00888  Gan_Matrix24_f *gan_mat24f_rmults44_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
00889                                 Gan_Matrix24_f *C );
00890 
00910  Gan_SquMatrix44_f *gan_symmat22f_lrmultm24T_q ( const Gan_SquMatrix22_f *A, const Gan_Matrix24_f *B,
00911                                         const Gan_Matrix24_f *C, Gan_SquMatrix44_f *D );
00912 
00923  Gan_SquMatrix22_f *gan_symmat44f_lrmultm24_q ( const Gan_SquMatrix44_f *A, const Gan_Matrix24_f *B,
00924                                         const Gan_Matrix24_f *C, Gan_SquMatrix22_f *D );
00925 
00944  Gan_Matrix24_f *gan_mat24f_lmultl22_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00945                                 Gan_Matrix24_f *C );
00946 
00956  Gan_Matrix24_f *gan_mat24f_lmultl22I_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00957                                  Gan_Matrix24_f *C );
00958 
00968  Gan_Matrix24_f *gan_mat24f_lmultl22T_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00969                                  Gan_Matrix24_f *C );
00970 
00980  Gan_Matrix24_f *gan_mat24f_lmultl22IT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00981                                   Gan_Matrix24_f *C );
00982 
00992  Gan_Matrix24_f *gan_mat24f_rmultl44_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
00993                                 Gan_Matrix24_f *C );
00994 
01004  Gan_Matrix24_f *gan_mat24f_rmultl44I_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01005                                  Gan_Matrix24_f *C );
01006 
01016  Gan_Matrix24_f *gan_mat24f_rmultl44T_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01017                                  Gan_Matrix24_f *C );
01018 
01028  Gan_Matrix24_f *gan_mat24f_rmultl44IT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01029                                   Gan_Matrix24_f *C );
01030 
01040  Gan_Matrix24_f *gan_mat24f_lmultl22_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01041 
01051  Gan_Matrix24_f *gan_mat24f_lmultl22I_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01052 
01062  Gan_Matrix24_f *gan_mat24f_lmultl22T_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01063 
01073  Gan_Matrix24_f *gan_mat24f_lmultl22IT_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01074 
01084  Gan_Matrix24_f *gan_mat24f_rmultl44_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01085 
01095  Gan_Matrix24_f *gan_mat24f_rmultl44I_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01096 
01106  Gan_Matrix24_f *gan_mat24f_rmultl44T_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01107 
01117  Gan_Matrix24_f *gan_mat24f_rmultl44IT_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01118 
01127  Gan_SquMatrix44_f *gan_mat24f_slmultT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01128 
01129 
01138  Gan_SquMatrix22_f *gan_mat24f_srmultT_q ( const Gan_Matrix24_f *A, Gan_SquMatrix22_f *B );
01139 
01140 
01155  float gan_mat24f_sumsqr_q ( const Gan_Matrix24_f *A );
01156 
01163  float gan_mat24f_Fnorm_q ( const Gan_Matrix24_f *A );
01164 
01174  Gan_Matrix24_f *gan_mat24f_from_matf_q ( const Gan_Matrix_f *A, Gan_Matrix24_f *B );
01175 
01176 
01177 
01196 /* This library is free software; you can redistribute it and/or
01197    modify it under the terms of the GNU Lesser General Public
01198    License as published by the Free Software Foundation; either
01199    version 2.1 of the License, or (at your option) any later version.
01200 
01201    This library is distributed in the hope that it will be useful,
01202    but WITHOUT ANY WARRANTY; without even the implied warranty of
01203    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
01204    Lesser General Public License for more details.
01205 
01206    You should have received a copy of the GNU Lesser General Public
01207    License along with this library; if not, write to the Free Software
01208    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
01209 */
01210 
01211 #undef GAN_MATTYPE
01212 #undef GAN_MATRIX_TYPE
01213 #undef GAN_SQUMATRIX_TYPE
01214 #undef GAN_VECTOR_TYPE
01215 #undef GAN_MAT_ELEMENT_TYPE
01216 #undef GAN_REALTYPE
01217 #undef GAN_FWRITE_LENDIAN
01218 #undef GAN_FREAD_LENDIAN
01219 #undef GAN_VECTYPE1
01220 #undef GAN_VECTYPE2
01221 #undef GAN_MATTYPEL
01222 #undef GAN_MATTYPER
01223 #undef GAN_SQUMATTYPEL
01224 #undef GAN_SQUMATTYPER
01225 #undef GAN_FIXED_MATRIX_TYPE
01226 #undef GAN_MAT_FPRINT
01227 #undef GAN_MAT_PRINT
01228 #undef GAN_MAT_FSCANF
01229 #undef GAN_MAT_FWRITE
01230 #undef GAN_MAT_FREAD
01231 #undef GAN_MAT_ZERO_Q
01232 #undef GAN_MAT_ZERO_S
01233 #undef GAN_MAT_COPY_Q
01234 #undef GAN_MAT_COPY_S
01235 #undef GAN_MAT_SCALE_Q
01236 #undef GAN_MAT_SCALE_S
01237 #undef GAN_MAT_SCALE_I
01238 #undef GAN_MAT_DIVIDE_Q
01239 #undef GAN_MAT_DIVIDE_S
01240 #undef GAN_MAT_DIVIDE_I
01241 #undef GAN_MAT_NEGATE_Q
01242 #undef GAN_MAT_NEGATE_S
01243 #undef GAN_MAT_NEGATE_I
01244 #undef GAN_MAT_UNIT_Q
01245 #undef GAN_MAT_UNIT_S
01246 #undef GAN_MAT_UNIT_I
01247 #undef GAN_MAT_ADD_Q
01248 #undef GAN_MAT_ADD_I1
01249 #undef GAN_MAT_ADD_I2
01250 #undef GAN_MAT_INCREMENT
01251 #undef GAN_MAT_ADD_S
01252 #undef GAN_MAT_SUB_Q
01253 #undef GAN_MAT_SUB_I1
01254 #undef GAN_MAT_SUB_I2
01255 #undef GAN_MAT_DECREMENT
01256 #undef GAN_MAT_SUB_S
01257 #undef GAN_VEC_OUTER_Q
01258 #undef GAN_VEC_OUTER_S
01259 #undef GAN_MAT_MULTV_Q
01260 #undef GAN_MAT_MULTV_S
01261 #undef GAN_MAT_MULTV_I
01262 #undef GAN_MATT_MULTV_Q
01263 #undef GAN_MATT_MULTV_S
01264 #undef GAN_MATT_MULTV_I
01265 #undef GAN_MAT_LMULTM_Q
01266 #undef GAN_MAT_LMULTM_S
01267 #undef GAN_MAT_LMULTMT_Q
01268 #undef GAN_MAT_LMULTMT_S
01269 #undef GAN_MAT_RMULTM_Q
01270 #undef GAN_MAT_RMULTM_S
01271 #undef GAN_MAT_RMULTMT_Q
01272 #undef GAN_MAT_RMULTMT_S
01273 #undef GAN_MAT_LMULTMT_SYM_Q
01274 #undef GAN_MAT_LMULTMT_SYM_S
01275 #undef GAN_MAT_RMULTMT_SYM_Q
01276 #undef GAN_MAT_RMULTMT_SYM_S
01277 #undef GAN_MAT_LMULTS_Q
01278 #undef GAN_MAT_LMULTS_S
01279 #undef GAN_MAT_RMULTS_Q
01280 #undef GAN_MAT_RMULTS_S
01281 #undef GAN_SYMMATL_LRMULT_Q
01282 #undef GAN_SYMMATL_LRMULT_S
01283 #undef GAN_SYMMATR_LRMULT_Q
01284 #undef GAN_SYMMATR_LRMULT_S
01285 #undef GAN_MAT_LMULTL_Q
01286 #undef GAN_MAT_LMULTL_S
01287 #undef GAN_MAT_LMULTL_I
01288 #undef GAN_MAT_LMULTLI_Q
01289 #undef GAN_MAT_LMULTLI_S
01290 #undef GAN_MAT_LMULTLI_I
01291 #undef GAN_MAT_LMULTLT_Q
01292 #undef GAN_MAT_LMULTLT_S
01293 #undef GAN_MAT_LMULTLT_I
01294 #undef GAN_MAT_LMULTLIT_Q
01295 #undef GAN_MAT_LMULTLIT_S
01296 #undef GAN_MAT_LMULTLIT_I
01297 #undef GAN_MAT_RMULTL_Q
01298 #undef GAN_MAT_RMULTL_S
01299 #undef GAN_MAT_RMULTL_I
01300 #undef GAN_MAT_RMULTLI_Q
01301 #undef GAN_MAT_RMULTLI_S
01302 #undef GAN_MAT_RMULTLI_I
01303 #undef GAN_MAT_RMULTLT_Q
01304 #undef GAN_MAT_RMULTLT_S
01305 #undef GAN_MAT_RMULTLT_I
01306 #undef GAN_MAT_RMULTLIT_Q
01307 #undef GAN_MAT_RMULTLIT_S
01308 #undef GAN_MAT_RMULTLIT_I
01309 #undef GAN_MAT_SRMULTT_Q
01310 #undef GAN_MAT_SRMULTT_S
01311 #undef GAN_MAT_SRMULTT_I
01312 #undef GAN_MAT_SLMULTT_Q
01313 #undef GAN_MAT_SLMULTT_S
01314 #undef GAN_MAT_SLMULTT_I
01315 #undef GAN_MAT_RMULTLIT_S
01316 #undef GAN_MAT_SUMSQR_Q
01317 #undef GAN_MAT_SUMSQR_S
01318 #undef GAN_MAT_FNORM_Q
01319 #undef GAN_MAT_FNORM_S
01320 #undef GAN_MAT_FROM_MAT_Q
01321 #undef GAN_MAT_FROM_MAT_S
01322 #undef GAN_MAT_FROM_SQUMAT_Q
01323 #undef GAN_MAT_FROM_SQUMAT_S
01324 #undef GAN_SQUMAT_FROM_SQUMAT_Q
01325 #undef GAN_SQUMAT_FROM_SQUMAT_S
01326 
01339 #ifdef __cplusplus
01340 }
01341 #endif
01342 
01343 #endif /* #ifndef _GAN_2X4MATRIXF_H */

Generated on Fri Mar 17 12:44:46 2006 by  doxygen 1.3.9.1