content: package edu.stanford.rsl.conrad.volume3d.operations;
  
  public class MultiplySlabScalar extends ParallelVolumeOperation {
  
  	@Override
  	public void performOperation() {
  		for (int indexX=beginIndexX; indexX<endIndexX; indexX++) {
  			switch (vol.getInternalDimension()) {
  			case 1:
  				for (int indexY=0; indexY<vol.size[1]; indexY++) {
  					for (int indexZ=0; indexZ<vol.size[2]; indexZ++) {
  						vol.data[indexX][indexY][indexZ] *= scalar1;
  					}
  				}
  				break;
  
  			case 2:
  				for (int indexY=0; indexY<vol.size[1]; indexY++) {
  					for (int indexZ=0; indexZ<vol.size[2]; indexZ++) {
  						float tmp_re = vol.data[indexX][indexY][indexZ*2];
  						vol.data[indexX][indexY][indexZ*2]   = scalar1 * vol.data[indexX][indexY][indexZ*2] - scalar2 * vol.data[indexX][indexY][indexZ*2+1];
  						vol.data[indexX][indexY][indexZ*2+1] = scalar2 * tmp_re + scalar1 * vol.data[indexX][indexY][indexZ*2+1];
  					}
  				}
  				break;
  			default:
  				System.out.println("vol_mult_sc: Invalid dimension\n");
  			}
  		}
  	}
  
  	@Override
  	public ParallelVolumeOperation clone() {
  		return new MultiplySlabScalar();
  	}
  
  }
  /*
   * Copyright (C) 2010-2014  Andreas Maier
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */