https://github.com/to-ko/mesons
Raw File
Tip revision: 6dece129a649214f273f4526472c89958e169b7b authored by Tomasz Korzec on 23 September 2014, 12:17:49 UTC
mesons relase 1.2
Tip revision: 6dece12
linalg_salg_dble.c
/* linalg_salg_dble.c
 *
 *
 * Copyright (C) 2013, 2014 Tomasz Korzec
 *
 * Based on openQCD
 * Copyright (C) 2012 Martin Luescher and Stefan Schaefer
 *
 *
 * 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 <http://www.gnu.org/licenses/>.
 *
 *******************************************************************************
 *
 *
 * functions that should go into
 * modules/linalg/salg_dble.c
 *
 * The gamma conventions are
 *
 * g0 = [ 0     0    -1     0 ]
 *      [ 0     0     0    -1 ]
 *      [-1     0     0     0 ]
 *      [ 0    -1     0     0 ]
 *
 * g1 = [ 0     0     0    -i ]
 *      [ 0     0    -i     0 ]
 *      [ 0     i     0     0 ]
 *      [ i     0     0     0 ]
 *
 * g2 = [ 0     0     0    -1 ]
 *      [ 0     0     1     0 ]
 *      [ 0     1     0     0 ]
 *      [-1     0     0     0 ]
 * 
 * g3 = [ 0     0    -i     0 ]
 *      [ 0     0     0     i ]
 *      [ i     0     0     0 ]
 *      [ 0    -i     0     0 ]
 *
 *
 ******************************************************************************/

#define LINALG_SALG_DBLE_C

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "mpi.h"
#include "su3.h"
#include "utils.h"
#include "sflds.h"
#include "linalg.h"
#include "global.h"

void mulg0_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   { 
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c3.c1.im; (*s).c3.c1.im =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c3.c2.im; (*s).c3.c2.im =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c3.c3.re; (*s).c3.c3.re =-tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c3.c3.im; (*s).c3.c3.im =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re =-(*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im =-(*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re =-(*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im =-(*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re =-(*s).c4.c3.re; (*s).c4.c3.re =-tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im =-(*s).c4.c3.im; (*s).c4.c3.im =-tmp;
   }
}

void mulg1_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c4.c1.im; (*s).c4.c1.im = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c4.c2.im; (*s).c4.c2.im = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c4.c3.im; (*s).c4.c3.im = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c4.c3.re; (*s).c4.c3.re =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re = (*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im =-(*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re = (*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im =-(*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re = (*s).c3.c3.im; (*s).c3.c3.im = tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im =-(*s).c3.c3.re; (*s).c3.c3.re =-tmp;
   }
}

void mulg2_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c4.c3.re; (*s).c4.c3.re =-tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c4.c3.im; (*s).c4.c3.im =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re = (*s).c3.c1.re; (*s).c3.c1.re = tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im = (*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re = (*s).c3.c2.re; (*s).c3.c2.re = tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im = (*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re = (*s).c3.c3.re; (*s).c3.c3.re = tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im = (*s).c3.c3.im; (*s).c3.c3.im = tmp;
   }
}

void mulg3_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c3.c3.im; (*s).c3.c3.im = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c3.c3.re; (*s).c3.c3.re =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re =-(*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im = (*s).c4.c1.re; (*s).c4.c1.re = tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re =-(*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im = (*s).c4.c2.re; (*s).c4.c2.re = tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re =-(*s).c4.c3.im; (*s).c4.c3.im =-tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im = (*s).c4.c3.re; (*s).c4.c3.re = tmp;
   }
}

void mulg0g1_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c2.c1.im; (*s).c2.c1.im =-tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c2.c1.re; (*s).c2.c1.re = tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c2.c2.im; (*s).c2.c2.im =-tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c2.c2.re; (*s).c2.c2.re = tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c2.c3.im; (*s).c2.c3.im =-tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c2.c3.re; (*s).c2.c3.re = tmp;

      tmp = (*s).c3.c1.re; (*s).c3.c1.re =-(*s).c4.c1.im; (*s).c4.c1.im = tmp;
      tmp = (*s).c3.c1.im; (*s).c3.c1.im = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re =-(*s).c4.c2.im; (*s).c4.c2.im = tmp;
      tmp = (*s).c3.c2.im; (*s).c3.c2.im = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re =-(*s).c4.c3.im; (*s).c4.c3.im = tmp;
      tmp = (*s).c3.c3.im; (*s).c3.c3.im = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;
   }
}

void mulg0g2_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c2.c1.re; (*s).c2.c1.re = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c2.c1.im; (*s).c2.c1.im = tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c2.c2.re; (*s).c2.c2.re = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c2.c2.im; (*s).c2.c2.im = tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c2.c3.re; (*s).c2.c3.re = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c2.c3.im; (*s).c2.c3.im = tmp;

      tmp = (*s).c3.c1.re; (*s).c3.c1.re = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c3.c1.im; (*s).c3.c1.im = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c3.c2.im; (*s).c3.c2.im = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;
      tmp = (*s).c3.c3.im; (*s).c3.c3.im = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;
   }
}

void mulg0g3_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c1.c1.im; (*s).c1.c1.im =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c1.c2.im; (*s).c1.c2.im =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c1.c3.im; (*s).c1.c3.im =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re =-(*s).c2.c1.im; (*s).c2.c1.im = tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re =-(*s).c2.c2.im; (*s).c2.c2.im = tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re =-(*s).c2.c3.im; (*s).c2.c3.im = tmp;
      
      tmp = (*s).c3.c1.re; (*s).c3.c1.re =-(*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re =-(*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re =-(*s).c3.c3.im; (*s).c3.c3.im = tmp;

      tmp = (*s).c4.c1.re; (*s).c4.c1.re = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c4.c2.re; (*s).c4.c2.re = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c4.c3.re; (*s).c4.c3.re = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;
   }
}

void mulg0g5_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im = (*s).c3.c1.im; (*s).c3.c1.im =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im = (*s).c3.c2.im; (*s).c3.c2.im =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c3.c3.re; (*s).c3.c3.re =-tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im = (*s).c3.c3.im; (*s).c3.c3.im =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;
   }
}

void mulg1g2_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c1.c1.im; (*s).c1.c1.im = tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c1.c2.im; (*s).c1.c2.im = tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c1.c3.im; (*s).c1.c3.im = tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re = (*s).c2.c1.im; (*s).c2.c1.im =-tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re = (*s).c2.c2.im; (*s).c2.c2.im =-tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re = (*s).c2.c3.im; (*s).c2.c3.im =-tmp;

      tmp = (*s).c3.c1.re; (*s).c3.c1.re =-(*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re =-(*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re =-(*s).c3.c3.im; (*s).c3.c3.im = tmp;

      tmp = (*s).c4.c1.re; (*s).c4.c1.re = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c4.c2.re; (*s).c4.c2.re = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c4.c3.re; (*s).c4.c3.re = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;
   }
}

void mulg1g3_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c2.c1.re; (*s).c2.c1.re = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im =-(*s).c2.c1.im; (*s).c2.c1.im = tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c2.c2.re; (*s).c2.c2.re = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im =-(*s).c2.c2.im; (*s).c2.c2.im = tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c2.c3.re; (*s).c2.c3.re = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im =-(*s).c2.c3.im; (*s).c2.c3.im = tmp;

      tmp = (*s).c3.c1.re; (*s).c3.c1.re =-(*s).c4.c1.re; (*s).c4.c1.re = tmp;
      tmp = (*s).c3.c1.im; (*s).c3.c1.im =-(*s).c4.c1.im; (*s).c4.c1.im = tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re =-(*s).c4.c2.re; (*s).c4.c2.re = tmp;
      tmp = (*s).c3.c2.im; (*s).c3.c2.im =-(*s).c4.c2.im; (*s).c4.c2.im = tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re =-(*s).c4.c3.re; (*s).c4.c3.re = tmp;
      tmp = (*s).c3.c3.im; (*s).c3.c3.im =-(*s).c4.c3.im; (*s).c4.c3.im = tmp;
   }
}

void mulg1g5_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c4.c1.im; (*s).c4.c1.im = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c4.c2.im; (*s).c4.c2.im = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c4.c3.im; (*s).c4.c3.im = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re =-(*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im = (*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re =-(*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im = (*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re =-(*s).c3.c3.im; (*s).c3.c3.im = tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im = (*s).c3.c3.re; (*s).c3.c3.re =-tmp;
   }
}

void mulg2g3_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c2.c1.im; (*s).c2.c1.im = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im = (*s).c2.c1.re; (*s).c2.c1.re =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c2.c2.im; (*s).c2.c2.im = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im = (*s).c2.c2.re; (*s).c2.c2.re =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c2.c3.im; (*s).c2.c3.im = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im = (*s).c2.c3.re; (*s).c2.c3.re =-tmp;

      tmp = (*s).c3.c1.re; (*s).c3.c1.re =-(*s).c4.c1.im; (*s).c4.c1.im = tmp;
      tmp = (*s).c3.c1.im; (*s).c3.c1.im = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c3.c2.re; (*s).c3.c2.re =-(*s).c4.c2.im; (*s).c4.c2.im = tmp;
      tmp = (*s).c3.c2.im; (*s).c3.c2.im = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c3.c3.re; (*s).c3.c3.re =-(*s).c4.c3.im; (*s).c4.c3.im = tmp;
      tmp = (*s).c3.c3.im; (*s).c3.c3.im = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;
   }
}

void mulg2g5_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re = (*s).c4.c1.re; (*s).c4.c1.re =-tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re = (*s).c4.c2.re; (*s).c4.c2.re =-tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re = (*s).c4.c3.re; (*s).c4.c3.re =-tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re =-(*s).c3.c1.re; (*s).c3.c1.re = tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im =-(*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re =-(*s).c3.c2.re; (*s).c3.c2.re = tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im =-(*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re =-(*s).c3.c3.re; (*s).c3.c3.re = tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im =-(*s).c3.c3.im; (*s).c3.c3.im = tmp;
   }
}

void mulg3g5_dble(int vol,spinor_dble *s)
{
   spinor_dble *sm;
   double tmp;

   sm=s+vol;

   for (;s<sm;s++)
   {
      tmp = (*s).c1.c1.re; (*s).c1.c1.re =-(*s).c3.c1.im; (*s).c3.c1.im = tmp;
      tmp = (*s).c1.c1.im; (*s).c1.c1.im = (*s).c3.c1.re; (*s).c3.c1.re =-tmp;
      tmp = (*s).c1.c2.re; (*s).c1.c2.re =-(*s).c3.c2.im; (*s).c3.c2.im = tmp;
      tmp = (*s).c1.c2.im; (*s).c1.c2.im = (*s).c3.c2.re; (*s).c3.c2.re =-tmp;
      tmp = (*s).c1.c3.re; (*s).c1.c3.re =-(*s).c3.c3.im; (*s).c3.c3.im = tmp;
      tmp = (*s).c1.c3.im; (*s).c1.c3.im = (*s).c3.c3.re; (*s).c3.c3.re =-tmp;

      tmp = (*s).c2.c1.re; (*s).c2.c1.re = (*s).c4.c1.im; (*s).c4.c1.im =-tmp;
      tmp = (*s).c2.c1.im; (*s).c2.c1.im =-(*s).c4.c1.re; (*s).c4.c1.re = tmp;
      tmp = (*s).c2.c2.re; (*s).c2.c2.re = (*s).c4.c2.im; (*s).c4.c2.im =-tmp;
      tmp = (*s).c2.c2.im; (*s).c2.c2.im =-(*s).c4.c2.re; (*s).c4.c2.re = tmp;
      tmp = (*s).c2.c3.re; (*s).c2.c3.re = (*s).c4.c3.im; (*s).c4.c3.im =-tmp;
      tmp = (*s).c2.c3.im; (*s).c2.c3.im =-(*s).c4.c3.re; (*s).c4.c3.re = tmp;
   }
}
back to top