Sorting Network Search
Backtracking for Small Sorting Networks
ComparatorNetwork.cpp
Go to the documentation of this file.
1
3
4// MIT License
5//
6// Copyright (c) 2023 Ian Parberry
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to
10// deal in the Software without restriction, including without limitation the
11// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12// sell copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25
26#include <iostream>
27#include <fstream>
28
29#include "ComparatorNetwork.h"
30
33
35 //for(size_t i=0; i<m_nDepth; i++) //for each level
36 // for(size_t j=0; j<m_nWidth; j++) //for each channel
37 // m_nComparator[i][j] = j; //connected to self means no comparator
38} //constructor
39
41
43} //destructor
44
47
48void CComparatorNetwork::Save(const std::string& fname){
49 std::ofstream output(fname); //output file stream
50
51 if(output.is_open()){ //file opened correctly
52 for(size_t i=0; i<m_nDepth; i++){ //for each level
53 for(size_t j=0; j<m_nWidth; j++){ //for each channel
54 const size_t k = m_nComparator[i][j]; //between channels j, k at level i
55 if(k > j) //not already printed
56 output << j << " " << k << " "; //print comparator
57 } //for
58
59 output << std::endl; //end of line
60 } //for
61
62 output.close(); //end of file
63 } //if
64} //Save
Interface for the comparator network CComparatorNetwork.
virtual ~CComparatorNetwork()
Destructor.
size_t m_nComparator[MAXDEPTH][MAXINPUTS]
Comparator array.
CComparatorNetwork()
Constructor.
void Save(const std::string &)
Save to file.
static size_t m_nWidth
Comparator network width.
Definition: Settings.h:39
static size_t m_nDepth
Comparator network depth.
Definition: Settings.h:40