LCOV - code coverage report
Current view: top level - synthesis/TransformMachines - FortranizedLoopsToGrid.inc (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 0 23 0.0 %
Date: 2024-12-11 20:54:31 Functions: 0 0 -

          Line data    Source code
       1             : // -*- C++ -*-
       2             : //# FortranizedLoopsToGrid.cc: Code to call the gridding inner-loops
       3             : //# written in FORTRAN
       4             : //# Copyright (C) 1997,1998,1999,2000,2001,2002,2003
       5             : //# Associated Universities, Inc. Washington DC, USA.
       6             : //#
       7             : //# This library is free software; you can redistribute it and/or modify it
       8             : //# under the terms of the GNU Library General Public License as published by
       9             : //# the Free Software Foundation; either version 2 of the License, or (at your
      10             : //# option) any later version.
      11             : //#
      12             : //# This library is distributed in the hope that it will be useful, but WITHOUT
      13             : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      14             : //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
      15             : //# License for more details.
      16             : //#
      17             : //# You should have received a copy of the GNU Library General Public License
      18             : //# along with this library; if not, write to the Free Software Foundation,
      19             : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
      20             : //#
      21             : //# Correspondence concerning AIPS++ should be addressed as follows:
      22             : //#        Internet email: casa-feedback@nrao.edu.
      23             : //#        Postal address: AIPS++ Project Office
      24             : //#                        National Radio Astronomy Observatory
      25             : //#                        520 Edgemont Road
      26             : //#                        Charlottesville, VA 22903-2475 USA
      27             : //#
      28             : //# $Id$
      29             : 
      30             : {
      31           0 :   timer_p.mark();
      32             :   //  T *gridPtr;
      33             :   Complex *cfPtr, *phaseGradPtr;
      34             :   Int *supportPtr, *cfShapePtr,
      35             :     *locPtr, *igrdposPtr, *ilocPtr, *tilocPtr,
      36             :     *convOriginPtr;
      37             :   Float  *samplingPtr;
      38             :   Double *offPtr;
      39             :   Bool dummy;
      40             :   //  gridPtr       = grid.getStorage(dummy);
      41           0 :   cfPtr         = convFuncV;
      42           0 :   phaseGradPtr  = cached_phaseGrad_p.getStorage(dummy);
      43           0 :   supportPtr    = support.getStorage(dummy);
      44           0 :   samplingPtr   = sampling.getStorage(dummy);
      45           0 :   cfShapePtr    = cfShape.getStorage(dummy);
      46           0 :   locPtr        = loc.getStorage(dummy);
      47           0 :   igrdposPtr    = igrdpos.getStorage(dummy);
      48           0 :   ilocPtr       = iloc.getStorage(dummy);
      49           0 :   tilocPtr      = tiloc.getStorage(dummy);
      50           0 :   offPtr        = off.getStorage(dummy);
      51           0 :   convOriginPtr = convOrigin.getStorage(dummy);
      52             :   (void)cfPtr;
      53             :   (void)ilocPtr;
      54             :   (void)tilocPtr;
      55             : 
      56           0 :   Int finitePointingOffsets_int = (finitePointingOffsets?1:0),
      57           0 :     psfOnly_int = (psfOnly?1:0);
      58           0 :   Int cf0=cfShape(0), cf1=cfShape(1), cf2=cfShape(2), cf3=cfShape(3);
      59           0 :   Int gnx = nx, gny = ny, gnp = nGridPol, gnc=nGridChan;
      60           0 :   Int phx=cached_phaseGrad_p.shape()[0], phy=cached_phaseGrad_p.shape()[1];
      61             : 
      62           0 :   runTimeG2_p += timer_p.real();   
      63             : 
      64             :   //
      65             :   // Call the FORTRAN function with the gridding inner-loops (in synthesis/fortran/faccumulateToGrid.f)
      66             :   //
      67           0 :   if (isGridSinglePrecision)
      68             :     {
      69             :       // Following type cast is so that this code compiles when
      70             :       // embedded (via #include) in the templated method
      71             :       // AWVisResampler::DataToGridImpl_p().  Without this type cast,
      72             :       // a compile-time error occurs (because this code gets embedded
      73             :       // in a templated function where the type of gridStore variable
      74             :       // is templated).
      75           0 :       Complex *Complex_gridStore=(Complex *)gridStore;
      76           0 :       faccumulatetogrid_(Complex_gridStore, 
      77             :                          convFuncV, 
      78             :                          &nvalue, 
      79             :                          &dataWVal,
      80             :                          supportPtr,samplingPtr,offPtr, convOriginPtr,
      81             :                          cfShapePtr,locPtr,igrdposPtr, 
      82             :                          &sinDPA, &cosDPA,
      83             :                          &finitePointingOffsets_int, 
      84             :                          &psfOnly_int,
      85             :                          &norm, phaseGradPtr,
      86             :                          &gnx, &gny, &gnp, &gnc,
      87             :                          &cf0, &cf1, &cf2, &cf3,
      88             :                          &phx, &phy);
      89             :       // if (fpclassify(abs(norm)) == FP_NAN)
      90             :       //        {
      91             :       //          cerr << "N NAN: " << nvalue << " " << support << " " << sampling << " " << off << " " << convOrigin << " " << loc << " " << igrdpos << " " << cfShape << endl;
      92             :       //          throw(AipsError("NAN DETECTED IN NORM"));
      93             :       //        }
      94             :       // if (fpclassify(vbs.imagingWeight_p(ichan, irow)) == FP_NAN)
      95             :       //        {
      96             :       //          cerr << "WT NAN: " << nvalue << " " << support << " " << sampling << " " << off << " " << convOrigin << " " << loc << " " << igrdpos << " " << cfShape << endl;
      97             :       //          throw(AipsError("NAN DETECTED IN WT"));
      98             :       //        }
      99             :     }
     100             :   else
     101             :     {
     102           0 :       DComplex *DComplex_gridStore=(DComplex *)gridStore;
     103           0 :       dfaccumulatetogrid_(DComplex_gridStore, 
     104             :                           convFuncV, 
     105             :                           &nvalue, 
     106             :                           &dataWVal,
     107             :                           supportPtr,samplingPtr,offPtr, convOriginPtr,
     108             :                           cfShapePtr,locPtr,igrdposPtr, 
     109             :                           &sinDPA, &cosDPA,
     110             :                           &finitePointingOffsets_int, 
     111             :                           &psfOnly_int,
     112             :                           &norm, phaseGradPtr,
     113             :                           &gnx, &gny, &gnp, &gnc,
     114             :                           &cf0, &cf1, &cf2, &cf3,
     115             :                           &phx, &phy);
     116             :     //   if (fpclassify(abs(norm)) == FP_NAN)
     117             :     //          {
     118             :     //            cerr << "dN NAN: " << getpid() << " " << nvalue << " " << supportPtr[0] << " " << sampling << " " << off << " " << convOrigin << " " << loc << " " << igrdpos << " " << cfShapePtr[0] << endl;
     119             :     //            throw(AipsError("NAN DETECTED IN NORM"));
     120             :     //          }
     121             :     //   if (fpclassify(vbs.imagingWeight_p(ichan, irow)) == FP_NAN)
     122             :     //          {
     123             :     //            cerr << "dWT NAN: " << nvalue << " " << support << " " << sampling << " " << off << " " << convOrigin << " " << loc << " " << igrdpos << " " << cfShape << endl;
     124             :     //            throw(AipsError("NAN DETECTED IN WT"));
     125             :     //          }
     126             :     }
     127             : }

Generated by: LCOV version 1.16