### Question:
DInSAR { public DInSAR(SLCImage masterMeta, Orbit masterOrbit, SLCImage slaveDefoMeta, Orbit slaveDefoOrbit, SLCImage topoSlaveMeta, Orbit slaveTopoOrbit) { this.masterMeta = masterMeta; this.masterOrbit = masterOrbit; this.slaveDefoMeta = slaveDefoMeta; this.slaveDefoOrbit = slaveDefoOrbit; this.topoSlaveMeta = topoSlaveMeta; this.slaveTopoOrbit = slaveTopoOrbit; dataWindow = masterMeta.getCurrentWindow(); } DInSAR(SLCImage masterMeta, Orbit masterOrbit,
                  SLCImage slaveDefoMeta, Orbit slaveDefoOrbit,
                  SLCImage topoSlaveMeta, Orbit slaveTopoOrbit); void setDataWindow(Window dataWindow); void setTileWindow(Window tileWindow); void setTopoData(DoubleMatrix topoData); void setDefoData(ComplexDoubleMatrix defoData); ComplexDoubleMatrix getDefoData(); @Deprecated void dinsar(); void computeBperpRatios(); void applyDInSAR(final Window tileWindow, final ComplexDoubleMatrix defoData, final DoubleMatrix topoData); static double[] linspace(final int lower, final int upper, final int size); static double[] linspace(final int lower, final int upper);  }### Answer:
@Test public void testDinsar() throws Exception { ComplexDoubleMatrix defoData = cplxIfg.dup(); StopWatch watch = new StopWatch(); watch.start(); DInSAR dinsar = new DInSAR(masterMeta, masterOrbit, defoSlaveMeta, defoSlaveOrbit, topoSlaveMeta, topoSlaveOrbit); dinsar.setDataWindow(totalDataWindow); dinsar.computeBperpRatios(); dinsar.applyDInSAR(tileWindow, defoData, topoPhase); watch.stop(); logger.info("Total processing time: {} milli-seconds", watch.getElapsedTime()); ComplexDoubleMatrix expected = SarUtils.computeIfg(defoCplxIfg, defoData); int numOfElements = expected.length; double[] defoDelta = new double[numOfElements]; for (int i = 0; i < numOfElements; i++) { defoDelta[i] = Math.atan2(expected.getImag(i), expected.getReal(i)) * PHASE2DEFO; } Assert.assertArrayEquals(DoubleMatrix.zeros(defoCplxIfg.length).toArray(), defoDelta, DELTA_02); }
@Test public void testDinsar() throws Exception { ComplexDoubleMatrix defoData = cplxIfg.dup(); StopWatch watch = new StopWatch(); watch.start(); DInSAR dinsar = new DInSAR(masterMeta, masterOrbit, defoSlaveMeta, defoSlaveOrbit, topoSlaveMeta, topoSlaveOrbit); dinsar.setDataWindow(totalDataWindow); dinsar.computeBperpRatios(); dinsar.applyDInSAR(tileWindow, defoData, topoPhase); watch.stop(); logger.info("Total processing time: {} milli-seconds", watch.getTime()); ComplexDoubleMatrix expected = SarUtils.computeIfg(defoCplxIfg, defoData); int numOfElements = expected.length; double[] defoDelta = new double[numOfElements]; for (int i = 0; i < numOfElements; i++) { defoDelta[i] = Math.atan2(expected.getImag(i), expected.getReal(i)) * PHASE2DEFO; } Assert.assertArrayEquals(DoubleMatrix.zeros(defoCplxIfg.length).toArray(), defoDelta, DELTA_02); }