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

2x3matrixf.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_2X3MATRIXF_H
00030 #define _GAN_2X3MATRIXF_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_REPEAT23_H
00065 #define _GAN_REPEAT23_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_REPEAT3_H
00096 #define _GAN_REPEAT3_H
00097 
00098 #ifdef __cplusplus
00099 extern "C" {
00100 #endif
00101 
00102 /* macros for constructing three-fold repetitions */
00103 #define GAN_REP3_AS(a,b,p1,p2,p3) (a p1 b, a p2 b, a p3 b)
00104 #define GAN_REP3_AS_C(a,b) GAN_REP3_AS(a,b,x,y,z)
00105 #define GAN_REP3_A(a,p1,p2,p3) (a p1, a p2, a p3)
00106 #define GAN_REP3_A_C(a) GAN_REP3_A(a,x,y,z)
00107 
00108 #define GAN_FREP3_A(a,b,p1,p2,p3,q1,q2,q3) (a p1 b q1, a p2 b q2, a p3 b q3)
00109 #define GAN_FREP3_A_C(a,b,p1,p2,p3) GAN_FREP3_A(a,b,x,y,z,p1,p2,p3)
00110 
00111 
00112 #define GAN_REP3_ABS(a,b,c,p1,p2,p3,q1,q2,q3)\
00113            (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c)
00114 #define GAN_REP3_AAS(a,b,c,p1,p2,p3) GAN_REP3_ABS(a,b,c,p1,p2,p3,p1,p2,p3)
00115 #define GAN_REP3_AAS_C(a,b,c) GAN_REP3_AAS(a,b,c,x,y,z)
00116 
00117 #define GAN_REP3_AB(a,b,p1,p2,p3,q1,q2,q3)\
00118            (a p1 b q1, a p2 b q2, a p3 b q3)
00119 #define GAN_REP3_AA(a,b,p1,p2,p3) GAN_REP3_AB(a,b,p1,p2,p3,p1,p2,p3)
00120 #define GAN_REP3_AA_C(a,b) GAN_REP3_AA(a,b,x,y,z)
00121 
00122 #define GAN_REP3_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,r1,r2,r3)\
00123            (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d)
00124 #define GAN_REP3_ABC(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3)\
00125            (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3)
00126 #define GAN_REP3_AAA(a,b,c,p1,p2,p3)\
00127         GAN_REP3_ABC(a,b,c,p1,p2,p3,p1,p2,p3,p1,p2,p3)
00128 #define GAN_REP3_AAA_C(a,b,c) GAN_REP3_AAA(a,b,c,x,y,z)
00129 
00130 #define GAN_REP3_OP_AB(a,b,p1,p2,p3,q1,q2,q3,op)\
00131            (a p1 b q1 op a p2 b q2 op a p3 b q3)
00132 #define GAN_REP3_OP_AA(a,b,p1,p2,p3,op)\
00133            GAN_REP3_OP_AB(a,b,p1,p2,p3,p1,p2,p3,op)
00134 #define GAN_REP3_OP_AA_C(a,b,op) GAN_REP3_OP_AA(a,b,x,y,z,op)
00135 
00136 #ifdef __cplusplus
00137 }
00138 #endif
00139 
00140 #endif /* #ifndef _GAN_REPEAT3_H */
00141 
00142 #ifdef __cplusplus
00143 extern "C" {
00144 #endif
00145 
00146 /* macros for constructing dual two-fold repetitions */
00147 
00148 #define GAN_FREP23_A(a,b,p1,p2,q1,q2,q3,r11,r12,r13,r21,r22,r23)\
00149             (GAN_FREP3_A(a,b,p1##q1,p1##q2,p1##q3,r11,r12,r13),\
00150              GAN_FREP3_A(a,b,p2##q1,p2##q2,p2##q3,r21,r22,r23))
00151 #define GAN_FREP23_A_C(a,b,r11,r12,r13,r21,r22,r23) \
00152            GAN_FREP23_A(a,b,x,y,x,y,z,r11,r12,r13,r21,r22,r23)
00153 
00154 /* most general macros */
00155 #define GAN_REP23_ABCS(a,b,c,d,p1,p2,q1,q2,q3,r1,r2,s1,s2,s3,t1,t2,u1,u2,u3)\
00156  (GAN_REP3_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3,t1##u1,t1##u2,t1##u3),\
00157   GAN_REP3_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3,t2##u1,t2##u2,t2##u3))
00158 #define GAN_REP23_ABC(a,b,c,p1,p2,q1,q2,q3,r1,r2,s1,s2,s3,t1,t2,u1,u2,u3)\
00159  (GAN_REP3_ABC(a,b,c,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3,t1##u1,t1##u2,t1##u3),\
00160   GAN_REP3_ABC(a,b,c,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3,t2##u1,t2##u2,t2##u3))
00161 
00162 #define GAN_REP23_AAAS(a,b,c,d,p1,p2,q1,q2,q3)\
00163    GAN_REP23_ABCS(a,b,c,d,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3)
00164 #define GAN_REP23_AAA(a,b,c,p1,p2,q1,q2,q3)\
00165    GAN_REP23_ABC(a,b,c,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3)
00166 #define GAN_REP23_ABS(a,b,c,p1,p2,q1,q2,q3,r1,r2,s1,s2,s3)\
00167  (GAN_REP3_ABS(a,b,c,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3),\
00168   GAN_REP3_ABS(a,b,c,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3))
00169 #define GAN_REP23_AB(a,b,p1,p2,q1,q2,q3,r1,r2,s1,s2,s3)\
00170  (GAN_REP3_AB(a,b,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3),\
00171   GAN_REP3_AB(a,b,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3))
00172 #define GAN_REP23_AAS(a,b,c,p1,p2,q1,q2,q3)\
00173             GAN_REP23_ABS(a,b,c,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3)
00174 #define GAN_REP23_AA(a,b,p1,p2,q1,q2,q3)\
00175             GAN_REP23_AB(a,b,p1,p2,q1,q2,q3,p1,p2,q1,q2,q3)
00176 #define GAN_REP23_AS(a,b,p1,p2,q1,q2,q3)\
00177  (GAN_REP3_AS(a,b,p1##q1,p1##q2,p1##q3),\
00178   GAN_REP3_AS(a,b,p2##q1,p2##q2,p2##q3))
00179 #define GAN_REP23_A(a,p1,p2,q1,q2,q3)\
00180  (GAN_REP3_A(a,p1##q1,p1##q2,p1##q3),\
00181   GAN_REP3_A(a,p2##q1,p2##q2,p2##q3))
00182 
00183 /* macros specific to xx, xy etc coordinates */
00184 #define GAN_REP23_AS_C(a,b) GAN_REP23_AS(a,b,x,y,x,y,z)
00185 #define GAN_REP23_AAS_C(a,b,c) GAN_REP23_AAS(a,b,c,x,y,x,y,z)
00186 #define GAN_REP23_AAAS_C(a,b,c,d) GAN_REP23_AAAS(a,b,c,d,x,y,x,y,z)
00187 #define GAN_REP23_A_C(a) GAN_REP23_A(a,x,y,x,y,z)
00188 #define GAN_REP23_AA_C(a,b) GAN_REP23_AA(a,b,x,y,x,y,z)
00189 #define GAN_REP23_AAA_C(a,b,c) GAN_REP23_AAA(a,b,c,x,y,x,y,z)
00190 
00191 #ifdef __cplusplus
00192 }
00193 #endif
00194 
00195 #endif /* #ifndef _GAN_REPEAT23_H */
00196 #include <gandalf/linalg/2vectorf.h>
00197 #include <gandalf/linalg/3vectorf.h>
00198 #include <gandalf/linalg/2x2matrixf.h>
00199 #include <gandalf/linalg/3x3matrixf.h>
00213 /* This library is free software; you can redistribute it and/or
00214    modify it under the terms of the GNU Lesser General Public
00215    License as published by the Free Software Foundation; either
00216    version 2.1 of the License, or (at your option) any later version.
00217 
00218    This library is distributed in the hope that it will be useful,
00219    but WITHOUT ANY WARRANTY; without even the implied warranty of
00220    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00221    Lesser General Public License for more details.
00222 
00223    You should have received a copy of the GNU Lesser General Public
00224    License along with this library; if not, write to the Free Software
00225    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00226 */
00227 
00228 #endif /* #ifndef _GAN_MATVECF_MACROS_H */
00229 #include <gandalf/linalg/matf_gen.h>
00230 
00231 #ifdef __cplusplus
00232 extern "C" {
00233 #endif
00234 
00250 
00251 typedef struct Gan_Matrix23_f
00252 {
00253    float xx, xy, xz,
00254          yx, yy, yz;
00255 } Gan_Matrix23_f;
00256 
00257 /* generic matrix multiply operations */
00258 #define GAN_MAT23F_MULT1D(a,b,c,p1,p2,q1,q2,q3)\
00259  (a p1 = GAN_REP3_OP_AB(b,* c,xx,xy,xz,q1,q2,q3,+),\
00260   a p2 = GAN_REP3_OP_AB(b,* c,yx,yy,yz,q1,q2,q3,+))
00261 #define GAN_MAT23TF_MULT1D(a,b,c,p1,p2,p3,q1,q2)\
00262  (a p1 = GAN_REP2_OP_AB(b,* c,xx,yx,q1,q2,+),\
00263   a p2 = GAN_REP2_OP_AB(b,* c,xy,yy,q1,q2,+),\
00264   a p3 = GAN_REP2_OP_AB(b,* c,xz,yz,q1,q2,+))
00265 
00266 /* declare functions specific to 2x3 matrices */
00280 /* This library is free software; you can redistribute it and/or
00281    modify it under the terms of the GNU Lesser General Public
00282    License as published by the Free Software Foundation; either
00283    version 2.1 of the License, or (at your option) any later version.
00284 
00285    This library is distributed in the hope that it will be useful,
00286    but WITHOUT ANY WARRANTY; without even the implied warranty of
00287    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00288    Lesser General Public License for more details.
00289 
00290    You should have received a copy of the GNU Lesser General Public
00291    License along with this library; if not, write to the Free Software
00292    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00293 */
00294 
00295 #ifndef _GAN_2X3MATF_H
00296 
00313  Gan_Matrix23_f *gan_mat23f_fill_q ( Gan_Matrix23_f *A,
00314                                     float XX, float XY, float XZ,
00315                                     float YX, float YY, float YZ );
00316 
00337  Gan_Matrix22_f *gan_mat23f_rmultm23T_q ( const Gan_Matrix23_f *A, const Gan_Matrix23_f *B,
00338                                          Gan_Matrix22_f *C );
00339 
00361  Gan_Vector2_f *gan_mat23f_multv2h_q ( const Gan_Matrix23_f *A,
00362                                       const Gan_Vector2_f *p, float h,
00363                                       Gan_Vector2_f *q );
00364 
00385  void gan_mat23f_get_rows_q ( const Gan_Matrix23_f *A,
00386                              Gan_Vector3_f *p, Gan_Vector3_f *q );
00387 
00399  void gan_mat23f_get_cols_q ( const Gan_Matrix23_f *A,
00400                              Gan_Vector2_f *p, Gan_Vector2_f *q,
00401                              Gan_Vector2_f *r );
00402 
00410  Gan_Matrix22_f *gan_mat23f_get_m22l_q ( const Gan_Matrix23_f *A, Gan_Matrix22_f *B );
00411 
00419  Gan_Vector2_f *gan_mat23f_get_v2r_q ( const Gan_Matrix23_f *A, Gan_Vector2_f *p );
00420 
00442  Gan_Matrix23_f *gan_mat23f_set_parts_q ( Gan_Matrix23_f *A,
00443                                          const Gan_Matrix22_f *B, const Gan_Vector2_f *p );
00444 
00450 #endif /* #ifndef _GAN_2X3MATF_H */
00451 
00452 #define GAN_MATTYPE Gan_Matrix23_f
00453 #define GAN_MATRIX_TYPE Gan_Matrix_f
00454 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
00455 #define GAN_VECTOR_TYPE Gan_Vector_f
00456 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
00457 #define GAN_REALTYPE float
00458 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
00459 #define GAN_FREAD_LENDIAN  gan_fread_lendian_f32
00460 #define GAN_VECTYPE1 Gan_Vector2_f
00461 #define GAN_VECTYPE2 Gan_Vector3_f
00462 #define GAN_MATTYPEL Gan_Matrix22_f
00463 #define GAN_MATTYPER Gan_Matrix33_f
00464 #define GAN_SQUMATTYPEL Gan_SquMatrix22_f
00465 #define GAN_SQUMATTYPER Gan_SquMatrix33_f
00466 #define GAN_MAT_FPRINT                     gan_mat23f_fprint
00467 #define GAN_MAT_PRINT                      gan_mat23f_print
00468 #define GAN_MAT_FSCANF                     gan_mat23f_fscanf
00469 #define GAN_MAT_FWRITE                     gan_mat23f_fwrite
00470 #define GAN_MAT_FREAD                      gan_mat23f_fread
00471 #define GAN_MAT_ZERO_Q                     gan_mat23f_zero_q
00472 #define GAN_MAT_ZERO_S                     gan_mat23f_zero_s
00473 #define GAN_MAT_COPY_Q                     gan_mat23f_copy_q
00474 #define GAN_MAT_COPY_S                     gan_mat23f_copy_s
00475 #define GAN_MAT_SCALE_Q                    gan_mat23f_scale_q
00476 #define GAN_MAT_SCALE_I                    gan_mat23f_scale_i
00477 #define GAN_MAT_SCALE_S                    gan_mat23f_scale_s
00478 #define GAN_MAT_DIVIDE_Q                   gan_mat23f_divide_q
00479 #define GAN_MAT_DIVIDE_I                   gan_mat23f_divide_i
00480 #define GAN_MAT_DIVIDE_S                   gan_mat23f_divide_s
00481 #define GAN_MAT_NEGATE_Q                   gan_mat23f_negate_q
00482 #define GAN_MAT_NEGATE_I                   gan_mat23f_negate_i
00483 #define GAN_MAT_NEGATE_S                   gan_mat23f_negate_s
00484 #define GAN_MAT_UNIT_Q                     gan_mat23f_unit_q
00485 #define GAN_MAT_UNIT_I                     gan_mat23f_unit_i
00486 #define GAN_MAT_UNIT_S                     gan_mat23f_unit_s
00487 #define GAN_MAT_ADD_Q                      gan_mat23f_add_q
00488 #define GAN_MAT_ADD_I1                     gan_mat23f_add_i1
00489 #define GAN_MAT_ADD_I2                     gan_mat23f_add_i2
00490 #define GAN_MAT_INCREMENT                  gan_mat23f_increment
00491 #define GAN_MAT_ADD_S                      gan_mat23f_add_s
00492 #define GAN_MAT_SUB_Q                      gan_mat23f_sub_q
00493 #define GAN_MAT_SUB_I1                     gan_mat23f_sub_i1
00494 #define GAN_MAT_SUB_I2                     gan_mat23f_sub_i2
00495 #define GAN_MAT_DECREMENT                  gan_mat23f_decrement
00496 #define GAN_MAT_SUB_S                      gan_mat23f_sub_s
00497 #define GAN_VEC_OUTER_Q                    gan_vec23f_outer_q
00498 #define GAN_VEC_OUTER_S                    gan_vec23f_outer_s
00499 #define GAN_MAT_MULTV_Q                    gan_mat23f_multv3_q
00500 #define GAN_MAT_MULTV_S                    gan_mat23f_multv3_s
00501 #define GAN_MATT_MULTV_Q                   gan_mat23Tf_multv2_q
00502 #define GAN_MATT_MULTV_S                   gan_mat23Tf_multv2_s
00503 #define GAN_MAT_LMULTM_Q                   gan_mat23f_lmultm22_q
00504 #define GAN_MAT_LMULTM_S                   gan_mat23f_lmultm22_s
00505 #define GAN_MAT_LMULTMT_Q                  gan_mat23f_lmultm22T_q
00506 #define GAN_MAT_LMULTMT_S                  gan_mat23f_lmultm22T_s
00507 #define GAN_MAT_RMULTM_Q                   gan_mat23f_rmultm33_q
00508 #define GAN_MAT_RMULTM_S                   gan_mat23f_rmultm33_s
00509 #define GAN_MAT_RMULTMT_Q                  gan_mat23f_rmultm33T_q
00510 #define GAN_MAT_RMULTMT_S                  gan_mat23f_rmultm33T_s
00511 #define GAN_MAT_LMULTMT_SYM_Q              gan_mat23f_lmultm23T_sym_q
00512 #define GAN_MAT_LMULTMT_SYM_S              gan_mat23f_lmultm23T_sym_s
00513 #define GAN_MAT_RMULTMT_SYM_Q              gan_mat23f_rmultm23T_sym_q
00514 #define GAN_MAT_RMULTMT_SYM_S              gan_mat23f_rmultm23T_sym_s
00515 #define GAN_MAT_SLMULTT_Q                  gan_mat23f_slmultT_q
00516 #define GAN_MAT_SLMULTT_S                  gan_mat23f_slmultT_s
00517 #define GAN_MAT_SRMULTT_Q                  gan_mat23f_srmultT_q
00518 #define GAN_MAT_SRMULTT_S                  gan_mat23f_srmultT_s
00519 #define GAN_MAT_LMULTS_Q                   gan_mat23f_lmults22_q
00520 #define GAN_MAT_LMULTS_S                   gan_mat23f_lmults22_s
00521 #define GAN_MAT_RMULTS_Q                   gan_mat23f_rmults33_q
00522 #define GAN_MAT_RMULTS_S                   gan_mat23f_rmults33_s
00523 #define GAN_SYMMATL_LRMULT_Q               gan_symmat22f_lrmultm23T_q
00524 #define GAN_SYMMATL_LRMULT_S               gan_symmat22f_lrmultm23T_s
00525 #define GAN_SYMMATR_LRMULT_Q               gan_symmat33f_lrmultm23_q
00526 #define GAN_SYMMATR_LRMULT_S               gan_symmat33f_lrmultm23_s
00527 #define GAN_MAT_LMULTL_Q                   gan_mat23f_lmultl22_q
00528 #define GAN_MAT_LMULTL_S                   gan_mat23f_lmultl22_s
00529 #define GAN_MAT_LMULTL_I                   gan_mat23f_lmultl22_i
00530 #define GAN_MAT_LMULTLI_Q                  gan_mat23f_lmultl22I_q
00531 #define GAN_MAT_LMULTLI_S                  gan_mat23f_lmultl22I_s
00532 #define GAN_MAT_LMULTLI_I                  gan_mat23f_lmultl22I_i
00533 #define GAN_MAT_LMULTLT_Q                  gan_mat23f_lmultl22T_q
00534 #define GAN_MAT_LMULTLT_S                  gan_mat23f_lmultl22T_s
00535 #define GAN_MAT_LMULTLT_I                  gan_mat23f_lmultl22T_i
00536 #define GAN_MAT_LMULTLIT_Q                 gan_mat23f_lmultl22IT_q
00537 #define GAN_MAT_LMULTLIT_S                 gan_mat23f_lmultl22IT_s
00538 #define GAN_MAT_LMULTLIT_I                 gan_mat23f_lmultl22IT_i
00539 #define GAN_MAT_RMULTL_Q                   gan_mat23f_rmultl33_q
00540 #define GAN_MAT_RMULTL_S                   gan_mat23f_rmultl33_s
00541 #define GAN_MAT_RMULTL_I                   gan_mat23f_rmultl33_i
00542 #define GAN_MAT_RMULTLI_Q                  gan_mat23f_rmultl33I_q
00543 #define GAN_MAT_RMULTLI_S                  gan_mat23f_rmultl33I_s
00544 #define GAN_MAT_RMULTLI_I                  gan_mat23f_rmultl33I_i
00545 #define GAN_MAT_RMULTLT_Q                  gan_mat23f_rmultl33T_q
00546 #define GAN_MAT_RMULTLT_S                  gan_mat23f_rmultl33T_s
00547 #define GAN_MAT_RMULTLT_I                  gan_mat23f_rmultl33T_i
00548 #define GAN_MAT_RMULTLIT_Q                 gan_mat23f_rmultl33IT_q
00549 #define GAN_MAT_RMULTLIT_S                 gan_mat23f_rmultl33IT_s
00550 #define GAN_MAT_RMULTLIT_I                 gan_mat23f_rmultl33IT_i
00551 #define GAN_MAT_SUMSQR_Q                   gan_mat23f_sumsqr_q
00552 #define GAN_MAT_SUMSQR_S                   gan_mat23f_sumsqr_s
00553 #define GAN_MAT_FNORM_Q                    gan_mat23f_Fnorm_q
00554 #define GAN_MAT_FNORM_S                    gan_mat23f_Fnorm_s
00555 #define GAN_MAT_FROM_MAT_Q                 gan_mat23f_from_matf_q
00556 #define GAN_MAT_FROM_MAT_S                 gan_mat23f_from_matf_s
00557 
00558 #ifndef _GAN_2X3MATF_H
00559 #define _GAN_2X3MATF_H
00560 
00561 
00562 #endif /* #ifndef _GAN_2X3MATF_H */
00563 
00576 /* This library is free software; you can redistribute it and/or
00577    modify it under the terms of the GNU Lesser General Public
00578    License as published by the Free Software Foundation; either
00579    version 2.1 of the License, or (at your option) any later version.
00580 
00581    This library is distributed in the hope that it will be useful,
00582    but WITHOUT ANY WARRANTY; without even the implied warranty of
00583    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00584    Lesser General Public License for more details.
00585 
00586    You should have received a copy of the GNU Lesser General Public
00587    License along with this library; if not, write to the Free Software
00588    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00589 */
00590 
00591 /* function declarations for functions common to all small vector types */
00592 
00593 
00594 
00595 /* documentation for macros defined in individual header files */
00596 
00607  Gan_Matrix23_f *gan_mat23f_zero_q ( const Gan_Matrix23_f *A );
00608 
00625  Gan_Matrix23_f *gan_mat23f_copy_q ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00626 
00644  Gan_Matrix23_f *gan_mat23f_scale_q ( Gan_Matrix23_f *A, float a,
00645                                Gan_Matrix23_f *B );
00646 
00654  Gan_Matrix23_f *gan_mat23f_scale_i ( Gan_Matrix23_f *A, float a );
00655 
00664  Gan_Matrix23_f *gan_mat23f_divide_q ( Gan_Matrix23_f *A, float a,
00665                                 Gan_Matrix23_f *B );
00666 
00674  Gan_Matrix23_f *gan_mat23f_divide_i ( Gan_Matrix23_f *A, float a );
00675 
00683  Gan_Matrix23_f *gan_mat23f_negate_q ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00684 
00692  Gan_Matrix23_f *gan_mat23f_negate_i ( Gan_Matrix23_f *A );
00693 
00701  Gan_Matrix23_f *gan_mat23f_unit_i ( Gan_Matrix23_f *A );
00702 
00720  Gan_Matrix23_f *gan_mat23f_add_q ( Gan_Matrix23_f *A, Gan_Matrix23_f *B, Gan_Matrix23_f *C );
00721 
00730  Gan_Matrix23_f *gan_mat23f_add_i1 ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00731 
00740  Gan_Matrix23_f *gan_mat23f_add_i2 ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00741 
00750  Gan_Matrix23_f *gan_mat23f_increment ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00751 
00769  Gan_Matrix23_f *gan_mat23f_sub_q ( Gan_Matrix23_f *A, Gan_Matrix23_f *B, Gan_Matrix23_f *C );
00770 
00779  Gan_Matrix23_f *gan_mat23f_sub_i1 ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00780 
00789  Gan_Matrix23_f *gan_mat23f_sub_i2 ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00790 
00799  Gan_Matrix23_f *gan_mat23f_decrement ( Gan_Matrix23_f *A, Gan_Matrix23_f *B );
00800 
00818  Gan_Matrix23_f *gan_vec23f_outer_q ( const Gan_Vector2_f *p, const Gan_Vector3_f *q,
00819                                Gan_Matrix23_f *A );
00820 
00829  Gan_Vector2_f *gan_mat23f_multv3_q ( const Gan_Matrix23_f *A, Gan_Vector3_f *p,
00830                                 Gan_Vector2_f *q );
00831 
00832 
00841  Gan_Vector3_f *gan_mat23Tf_multv2_q ( const Gan_Matrix23_f *A, Gan_Vector2_f *p,
00842                                  Gan_Vector3_f *q );
00843 
00844 
00863  Gan_Matrix23_f *gan_mat23f_lmultm22_q ( Gan_Matrix23_f *A, const Gan_Matrix22_f *B,
00864                                 Gan_Matrix23_f *C );
00865 
00875  Gan_Matrix23_f *gan_mat23f_lmultm22T_q ( Gan_Matrix23_f *A, const Gan_Matrix22_f *B,
00876                                  Gan_Matrix23_f *C );
00877 
00887  Gan_Matrix23_f *gan_mat23f_rmultm33_q ( Gan_Matrix23_f *A, const Gan_Matrix33_f *B,
00888                                 Gan_Matrix23_f *C );
00889 
00899  Gan_Matrix23_f *gan_mat23f_rmultm33T_q ( Gan_Matrix23_f *A, const Gan_Matrix33_f *B,
00900                                  Gan_Matrix23_f *C );
00901 
00913  Gan_SquMatrix33_f *gan_mat23f_lmultm23T_sym_q ( const Gan_Matrix23_f *A, const Gan_Matrix23_f *B,
00914                                          Gan_SquMatrix33_f *C );
00915 
00927  Gan_SquMatrix22_f *gan_mat23f_rmultm23T_sym_q ( const Gan_Matrix23_f *A, const Gan_Matrix23_f *B,
00928                                          Gan_SquMatrix22_f *C );
00929 
00938  Gan_Matrix23_f *gan_mat23f_lmults22_q ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B,
00939                                 Gan_Matrix23_f *C );
00940 
00949  Gan_Matrix23_f *gan_mat23f_rmults33_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B,
00950                                 Gan_Matrix23_f *C );
00951 
00971  Gan_SquMatrix33_f *gan_symmat22f_lrmultm23T_q ( const Gan_SquMatrix22_f *A, const Gan_Matrix23_f *B,
00972                                         const Gan_Matrix23_f *C, Gan_SquMatrix33_f *D );
00973 
00984  Gan_SquMatrix22_f *gan_symmat33f_lrmultm23_q ( const Gan_SquMatrix33_f *A, const Gan_Matrix23_f *B,
00985                                         const Gan_Matrix23_f *C, Gan_SquMatrix22_f *D );
00986 
01005  Gan_Matrix23_f *gan_mat23f_lmultl22_q ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B,
01006                                 Gan_Matrix23_f *C );
01007 
01017  Gan_Matrix23_f *gan_mat23f_lmultl22I_q ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B,
01018                                  Gan_Matrix23_f *C );
01019 
01029  Gan_Matrix23_f *gan_mat23f_lmultl22T_q ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B,
01030                                  Gan_Matrix23_f *C );
01031 
01041  Gan_Matrix23_f *gan_mat23f_lmultl22IT_q ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B,
01042                                   Gan_Matrix23_f *C );
01043 
01053  Gan_Matrix23_f *gan_mat23f_rmultl33_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B,
01054                                 Gan_Matrix23_f *C );
01055 
01065  Gan_Matrix23_f *gan_mat23f_rmultl33I_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B,
01066                                  Gan_Matrix23_f *C );
01067 
01077  Gan_Matrix23_f *gan_mat23f_rmultl33T_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B,
01078                                  Gan_Matrix23_f *C );
01079 
01089  Gan_Matrix23_f *gan_mat23f_rmultl33IT_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B,
01090                                   Gan_Matrix23_f *C );
01091 
01101  Gan_Matrix23_f *gan_mat23f_lmultl22_i ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B );
01102 
01112  Gan_Matrix23_f *gan_mat23f_lmultl22I_i ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B );
01113 
01123  Gan_Matrix23_f *gan_mat23f_lmultl22T_i ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B );
01124 
01134  Gan_Matrix23_f *gan_mat23f_lmultl22IT_i ( Gan_Matrix23_f *A, const Gan_SquMatrix22_f *B );
01135 
01145  Gan_Matrix23_f *gan_mat23f_rmultl33_i ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B );
01146 
01156  Gan_Matrix23_f *gan_mat23f_rmultl33I_i ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B );
01157 
01167  Gan_Matrix23_f *gan_mat23f_rmultl33T_i ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B );
01168 
01178  Gan_Matrix23_f *gan_mat23f_rmultl33IT_i ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B );
01179 
01188  Gan_SquMatrix33_f *gan_mat23f_slmultT_q ( Gan_Matrix23_f *A, const Gan_SquMatrix33_f *B );
01189 
01190 
01199  Gan_SquMatrix22_f *gan_mat23f_srmultT_q ( const Gan_Matrix23_f *A, Gan_SquMatrix22_f *B );
01200 
01201 
01216  float gan_mat23f_sumsqr_q ( const Gan_Matrix23_f *A );
01217 
01224  float gan_mat23f_Fnorm_q ( const Gan_Matrix23_f *A );
01225 
01235  Gan_Matrix23_f *gan_mat23f_from_matf_q ( const Gan_Matrix_f *A, Gan_Matrix23_f *B );
01236 
01237 
01238 
01257 /* This library is free software; you can redistribute it and/or
01258    modify it under the terms of the GNU Lesser General Public
01259    License as published by the Free Software Foundation; either
01260    version 2.1 of the License, or (at your option) any later version.
01261 
01262    This library is distributed in the hope that it will be useful,
01263    but WITHOUT ANY WARRANTY; without even the implied warranty of
01264    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
01265    Lesser General Public License for more details.
01266 
01267    You should have received a copy of the GNU Lesser General Public
01268    License along with this library; if not, write to the Free Software
01269    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
01270 */
01271 
01272 #undef GAN_MATTYPE
01273 #undef GAN_MATRIX_TYPE
01274 #undef GAN_SQUMATRIX_TYPE
01275 #undef GAN_VECTOR_TYPE
01276 #undef GAN_MAT_ELEMENT_TYPE
01277 #undef GAN_REALTYPE
01278 #undef GAN_FWRITE_LENDIAN
01279 #undef GAN_FREAD_LENDIAN
01280 #undef GAN_VECTYPE1
01281 #undef GAN_VECTYPE2
01282 #undef GAN_MATTYPEL
01283 #undef GAN_MATTYPER
01284 #undef GAN_SQUMATTYPEL
01285 #undef GAN_SQUMATTYPER
01286 #undef GAN_FIXED_MATRIX_TYPE
01287 #undef GAN_MAT_FPRINT
01288 #undef GAN_MAT_PRINT
01289 #undef GAN_MAT_FSCANF
01290 #undef GAN_MAT_FWRITE
01291 #undef GAN_MAT_FREAD
01292 #undef GAN_MAT_ZERO_Q
01293 #undef GAN_MAT_ZERO_S
01294 #undef GAN_MAT_COPY_Q
01295 #undef GAN_MAT_COPY_S
01296 #undef GAN_MAT_SCALE_Q
01297 #undef GAN_MAT_SCALE_S
01298 #undef GAN_MAT_SCALE_I
01299 #undef GAN_MAT_DIVIDE_Q
01300 #undef GAN_MAT_DIVIDE_S
01301 #undef GAN_MAT_DIVIDE_I
01302 #undef GAN_MAT_NEGATE_Q
01303 #undef GAN_MAT_NEGATE_S
01304 #undef GAN_MAT_NEGATE_I
01305 #undef GAN_MAT_UNIT_Q
01306 #undef GAN_MAT_UNIT_S
01307 #undef GAN_MAT_UNIT_I
01308 #undef GAN_MAT_ADD_Q
01309 #undef GAN_MAT_ADD_I1
01310 #undef GAN_MAT_ADD_I2
01311 #undef GAN_MAT_INCREMENT
01312 #undef GAN_MAT_ADD_S
01313 #undef GAN_MAT_SUB_Q
01314 #undef GAN_MAT_SUB_I1
01315 #undef GAN_MAT_SUB_I2
01316 #undef GAN_MAT_DECREMENT
01317 #undef GAN_MAT_SUB_S
01318 #undef GAN_VEC_OUTER_Q
01319 #undef GAN_VEC_OUTER_S
01320 #undef GAN_MAT_MULTV_Q
01321 #undef GAN_MAT_MULTV_S
01322 #undef GAN_MAT_MULTV_I
01323 #undef GAN_MATT_MULTV_Q
01324 #undef GAN_MATT_MULTV_S
01325 #undef GAN_MATT_MULTV_I
01326 #undef GAN_MAT_LMULTM_Q
01327 #undef GAN_MAT_LMULTM_S
01328 #undef GAN_MAT_LMULTMT_Q
01329 #undef GAN_MAT_LMULTMT_S
01330 #undef GAN_MAT_RMULTM_Q
01331 #undef GAN_MAT_RMULTM_S
01332 #undef GAN_MAT_RMULTMT_Q
01333 #undef GAN_MAT_RMULTMT_S
01334 #undef GAN_MAT_LMULTMT_SYM_Q
01335 #undef GAN_MAT_LMULTMT_SYM_S
01336 #undef GAN_MAT_RMULTMT_SYM_Q
01337 #undef GAN_MAT_RMULTMT_SYM_S
01338 #undef GAN_MAT_LMULTS_Q
01339 #undef GAN_MAT_LMULTS_S
01340 #undef GAN_MAT_RMULTS_Q
01341 #undef GAN_MAT_RMULTS_S
01342 #undef GAN_SYMMATL_LRMULT_Q
01343 #undef GAN_SYMMATL_LRMULT_S
01344 #undef GAN_SYMMATR_LRMULT_Q
01345 #undef GAN_SYMMATR_LRMULT_S
01346 #undef GAN_MAT_LMULTL_Q
01347 #undef GAN_MAT_LMULTL_S
01348 #undef GAN_MAT_LMULTL_I
01349 #undef GAN_MAT_LMULTLI_Q
01350 #undef GAN_MAT_LMULTLI_S
01351 #undef GAN_MAT_LMULTLI_I
01352 #undef GAN_MAT_LMULTLT_Q
01353 #undef GAN_MAT_LMULTLT_S
01354 #undef GAN_MAT_LMULTLT_I
01355 #undef GAN_MAT_LMULTLIT_Q
01356 #undef GAN_MAT_LMULTLIT_S
01357 #undef GAN_MAT_LMULTLIT_I
01358 #undef GAN_MAT_RMULTL_Q
01359 #undef GAN_MAT_RMULTL_S
01360 #undef GAN_MAT_RMULTL_I
01361 #undef GAN_MAT_RMULTLI_Q
01362 #undef GAN_MAT_RMULTLI_S
01363 #undef GAN_MAT_RMULTLI_I
01364 #undef GAN_MAT_RMULTLT_Q
01365 #undef GAN_MAT_RMULTLT_S
01366 #undef GAN_MAT_RMULTLT_I
01367 #undef GAN_MAT_RMULTLIT_Q
01368 #undef GAN_MAT_RMULTLIT_S
01369 #undef GAN_MAT_RMULTLIT_I
01370 #undef GAN_MAT_SRMULTT_Q
01371 #undef GAN_MAT_SRMULTT_S
01372 #undef GAN_MAT_SRMULTT_I
01373 #undef GAN_MAT_SLMULTT_Q
01374 #undef GAN_MAT_SLMULTT_S
01375 #undef GAN_MAT_SLMULTT_I
01376 #undef GAN_MAT_RMULTLIT_S
01377 #undef GAN_MAT_SUMSQR_Q
01378 #undef GAN_MAT_SUMSQR_S
01379 #undef GAN_MAT_FNORM_Q
01380 #undef GAN_MAT_FNORM_S
01381 #undef GAN_MAT_FROM_MAT_Q
01382 #undef GAN_MAT_FROM_MAT_S
01383 #undef GAN_MAT_FROM_SQUMAT_Q
01384 #undef GAN_MAT_FROM_SQUMAT_S
01385 #undef GAN_SQUMAT_FROM_SQUMAT_Q
01386 #undef GAN_SQUMAT_FROM_SQUMAT_S
01387 
01400 #ifdef __cplusplus
01401 }
01402 #endif
01403 
01404 #endif /* #ifndef _GAN_2X3MATRIXF_H */

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