void bufferManager::rmInfo(CString table_name) { int i = readBlockFromDisk(0); address add; buffer[i].getNextLink(1,add); address oldAdd, nextAdd; CString name; int size; oldAdd.block_position = 0; oldAdd.index_position = 1; int j; while(add.block_position != -1 && add.index_position != -1) { j = readBlockFromDisk(add.block_position); size = buffer[j].getDataSize(add.index_position); char* TableInfo = new char[size]; buffer[j].getData(add.index_position,TableInfo); buffer[j].getNextLink(add.index_position,nextAdd); name = TableInfo; if(name == table_name) { int front = readBlockFromDisk(oldAdd.block_position); buffer[front].setNextLink(oldAdd.index_position, nextAdd); rmData(add); delete [] TableInfo; break; } delete [] TableInfo; oldAdd.block_position = add.block_position; oldAdd.index_position = add.index_position; add.block_position = nextAdd.block_position; add.index_position = nextAdd.index_position; } }
TEST_F(FourierTransformerGPUTest, FwdBwdFilterTest) { RealMatrix rmData(5,5), rmFilter(4,4); // MAGIC NUMBERS WHICH END UP AT 8x8 rmData << 17, 24, 1, 8, 15, 23, 5, 7, 14, 16, 4, 6, 13, 20, 22, 10, 12, 19, 21, 3, 11, 18, 25, 2, 9; rmFilter << 16, 2, 3, 13, 5, 11, 10, 8, 9, 7, 6, 12, 4, 14, 15, 1; RealMatrix rmDataPadded, rmFilterPadded; FourierPadder padder(5, 4); padder.padData(rmData,rmDataPadded); padder.padFilter(rmFilter,rmFilterPadded); ComplexMatrix cmData(ftfftw->rows_,ftfftw->cols_/2+1); ComplexMatrix cmFilter(ftfftw->rows_,ftfftw->cols_/2+1); cmData.setZero(); cmFilter.setZero(); ftfftw->forward(rmDataPadded,cmData); ftfftw->forward(rmFilterPadded,cmFilter); ComplexMatrix cmResult = cmData.cwiseProduct(cmFilter); ftfftw->backward(cmResult,rmDataPadded); rmDataPadded = rmDataPadded/(ftfftw->rows_*ftfftw->cols_); padder.extractDenseOutput(rmDataPadded,rmData); RealMatrix expectedResult(5,5); expectedResult << 831, 1224, 1338, 810, 784, 1360, 1779, 1366, 1473, 1159, 1422, 1400, 1847, 1615, 877, 944, 1423, 1462, 1315, 726, 811, 973, 1064, 751, 144; std::cout << rmData << std::endl; ASSERT_EQ(true,rmData.isApprox(expectedResult,0.000001)); }