Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaoyaolanyun committed Jul 16, 2018
2 parents 7af3c58 + 97958bd commit 878b442
Show file tree
Hide file tree
Showing 28 changed files with 883 additions and 427 deletions.
5 changes: 4 additions & 1 deletion Makefile
Expand Up @@ -9,6 +9,8 @@ QOBJS_DIR = Release/obj/QPandaSDK/
COBJS_DIR = Release/obj/Console/
OBJS_DIR = Release/obj/
BIN_DIR = Release/bin
CONFIF_FILE = Config.xml
MEATADATA_FILE = MetadataConfig.xml
CUR_SOURCE = ${wildcard *.cpp}
CUR_OBJS = ${patsubst %.cpp, %.o, $(CUR_SOURCE)}
INCLUDE = -I $(ROOT_DIR)/Console \
Expand All @@ -18,8 +20,9 @@ INCLUDE = -I $(ROOT_DIR)/Console \
-I $(ROOT_DIR)/QPanda-2.0.Windows \
-I $(ROOT_DIR)/QPanda-2.0.Windows/QuantumInstructionHandle \
-I $(ROOT_DIR)/QPanda-2.0.Windows/QuantumMachin \
-I $(ROOT_DIR)/QPanda-2.0.Windows/TraversalAlgorithm \
-I $(ROOT_DIR)/TinyXML
export CC BIN ABIN QBIN OBJS_DIR AOBJS_DIR QOBJS_DIR COBJS_DIR BIN_DIR ROOT_DIR
export CC BIN ABIN QBIN OBJS_DIR AOBJS_DIR QOBJS_DIR COBJS_DIR BIN_DIR ROOT_DIR CONFIF_FILE MEATADATA_FILE
all : MKDIE $(SUBDIRS) RELEASE

MKDIE :
Expand Down
1 change: 0 additions & 1 deletion QPanda-2.0.Algorithm/Algorithm/Hamiltonian/asa047.cpp
@@ -1,4 +1,3 @@
#pragma once
# include <cstdlib>
# include <iostream>
# include <iomanip>
Expand Down
4 changes: 4 additions & 0 deletions QPanda-2.0.Windows.sln
Expand Up @@ -4,6 +4,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 15.0.27703.2018
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QPanda-2.0.Windows", "QPanda-2.0.Windows\QPanda-2.0.Windows.vcxproj", "{82013C14-57E0-49B1-8B40-6A9F366F9D03}"
ProjectSection(ProjectDependencies) = postProject
{8C36863D-0E20-493E-9D9E-873EE8B86A17} = {8C36863D-0E20-493E-9D9E-873EE8B86A17}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QPanda-2.0.Algorithm", "QPanda-2.0.Algorithm\QPanda-2.0.Algorithm.vcxproj", "{AF428F4C-099D-4635-92CC-E8C11AD52372}"
ProjectSection(ProjectDependencies) = postProject
Expand All @@ -13,6 +16,7 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Console", "Console\Console.vcxproj", "{26FBE2D6-A662-44A8-8FA9-996E4AE90F8B}"
ProjectSection(ProjectDependencies) = postProject
{82013C14-57E0-49B1-8B40-6A9F366F9D03} = {82013C14-57E0-49B1-8B40-6A9F366F9D03}
{8C36863D-0E20-493E-9D9E-873EE8B86A17} = {8C36863D-0E20-493E-9D9E-873EE8B86A17}
{AF428F4C-099D-4635-92CC-E8C11AD52372} = {AF428F4C-099D-4635-92CC-E8C11AD52372}
EndProjectSection
EndProject
Expand Down
14 changes: 8 additions & 6 deletions QPanda-2.0.Windows/QPanda-2.0.Windows.vcxproj
Expand Up @@ -32,7 +32,7 @@
<ClInclude Include="QuantumCircuit\QProgram.h" />
<ClInclude Include="QuantumCircuit\QuantumMeasure.h" />
<ClInclude Include="QuantumCircuit\ReadWriteLock.h" />
<ClInclude Include="QuantumInstructionHandle\QCircuitParse.h" />
<ClInclude Include="TraversalAlgorithm\QCircuitParse.h" />
<ClInclude Include="QuantumInstructionHandle\QError.h" />
<ClInclude Include="QuantumInstructionHandle\QuantumGateParameter.h" />
<ClInclude Include="QuantumInstructionHandle\QuantumGates.h" />
Expand All @@ -43,8 +43,9 @@
<ClInclude Include="QuantumMachine\OriginQuantumMachine.h" />
<ClInclude Include="QuantumMachine\QuantumMachineInterface.h" />
<ClInclude Include="QPanda\QuantumMetadata.h" />
<ClInclude Include="QuantumCircuit\StatisticsQGateCountAlgorithm.h" />
<ClInclude Include="QuantumCircuit\TraversalDecompositionAlgorithm.h" />
<ClInclude Include="TraversalAlgorithm\QGateCompare.h" />
<ClInclude Include="TraversalAlgorithm\StatisticsQGateCountAlgorithm.h" />
<ClInclude Include="TraversalAlgorithm\TraversalDecompositionAlgorithm.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="QPanda\MetadataValidity.cpp" />
Expand All @@ -57,7 +58,7 @@
<ClCompile Include="QuantumCircuit\QNode.cpp" />
<ClCompile Include="QuantumCircuit\QProgram.cpp" />
<ClCompile Include="QuantumCircuit\QuantumMeasure.cpp" />
<ClCompile Include="QuantumInstructionHandle\QCircuitParse.cpp" />
<ClCompile Include="TraversalAlgorithm\QCircuitParse.cpp" />
<ClCompile Include="QuantumInstructionHandle\QuantumGates.cpp" />
<ClCompile Include="QuantumInstructionHandle\X86QuantumGates.cpp" />
<ClCompile Include="QuantumMachine\ClassicalConditionInterface.cpp" />
Expand All @@ -73,8 +74,9 @@
<ClCompile Include="QuantumMachine\OriginQVM.cpp" />
<ClCompile Include="QuantumMachine\QuantumMachineInterface.cpp" />
<ClCompile Include="QPanda\QuantumMetadata.cpp" />
<ClCompile Include="QuantumCircuit\StatisticsQGateCountAlgorithm.cpp" />
<ClCompile Include="QuantumCircuit\TraversalDecompositionAlgorithm.cpp" />
<ClCompile Include="TraversalAlgorithm\QGateCompare.cpp" />
<ClCompile Include="TraversalAlgorithm\StatisticsQGateCountAlgorithm.cpp" />
<ClCompile Include="TraversalAlgorithm\TraversalDecompositionAlgorithm.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
Expand Down
22 changes: 12 additions & 10 deletions QPanda-2.0.Windows/QPanda-2.0.Windows.vcxproj.filters
Expand Up @@ -13,9 +13,6 @@
<ClInclude Include="QuantumCircuit\QProgram.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="QuantumInstructionHandle\QCircuitParse.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="QuantumInstructionHandle\QError.h">
<Filter>头文件</Filter>
</ClInclude>
Expand Down Expand Up @@ -49,13 +46,17 @@
<ClInclude Include="QuantumCircuit\QuantumMeasure.h" />
<ClInclude Include="QuantumCircuit\ControlFlow.h" />
<ClInclude Include="QPanda\QPandaException.h" />
<ClInclude Include="QuantumCircuit\StatisticsQGateCountAlgorithm.h" />
<ClInclude Include="QPanda\QuantumMetadata.h" />
<ClInclude Include="QPanda\XMLConfigParam.h" />
<ClInclude Include="QPanda\ConfigMap.h" />
<ClInclude Include="QuantumMachine\OriginQMachine.h" />
<ClInclude Include="QPanda\MetadataValidity.h" />
<ClInclude Include="QuantumCircuit\TraversalDecompositionAlgorithm.h" />
<ClInclude Include="TraversalAlgorithm\TraversalDecompositionAlgorithm.h" />
<ClInclude Include="TraversalAlgorithm\StatisticsQGateCountAlgorithm.h" />
<ClInclude Include="TraversalAlgorithm\QCircuitParse.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="TraversalAlgorithm\QGateCompare.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="QPanda\QPanda.cpp">
Expand All @@ -67,9 +68,6 @@
<ClCompile Include="QuantumCircuit\QProgram.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="QuantumInstructionHandle\QCircuitParse.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="QuantumInstructionHandle\QuantumGates.cpp">
<Filter>源文件</Filter>
</ClCompile>
Expand Down Expand Up @@ -115,13 +113,17 @@
<ClCompile Include="QuantumCircuit\QNode.cpp" />
<ClCompile Include="QuantumCircuit\QuantumMeasure.cpp" />
<ClCompile Include="QuantumCircuit\ControlFlow.cpp" />
<ClCompile Include="QuantumCircuit\StatisticsQGateCountAlgorithm.cpp" />
<ClCompile Include="QPanda\QuantumMetadata.cpp" />
<ClCompile Include="QPanda\XMLConfigParam.cpp" />
<ClCompile Include="QPanda\ConfigMap.cpp" />
<ClCompile Include="QuantumMachine\OriginQMachine.cpp" />
<ClCompile Include="QPanda\MetadataValidity.cpp" />
<ClCompile Include="QuantumCircuit\TraversalDecompositionAlgorithm.cpp" />
<ClCompile Include="TraversalAlgorithm\TraversalDecompositionAlgorithm.cpp" />
<ClCompile Include="TraversalAlgorithm\StatisticsQGateCountAlgorithm.cpp" />
<ClCompile Include="TraversalAlgorithm\QCircuitParse.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="TraversalAlgorithm\QGateCompare.cpp" />
</ItemGroup>
<ItemGroup>
<Filter Include="源文件">
Expand Down
4 changes: 3 additions & 1 deletion QPanda-2.0.Windows/QPanda.h
Expand Up @@ -19,7 +19,7 @@ limitations under the License.
#include "QuantumCircuit/QGate.h"
#include "QuantumCircuit/QProgram.h"
#include "QuantumMachine/OriginQuantumMachine.h"
#include "QuantumCircuit/StatisticsQGateCountAlgorithm.h"
#include "TraversalAlgorithm/StatisticsQGateCountAlgorithm.h"

extern size_t countQGateUnderQCircuit(AbstractQuantumCircuit *);

Expand Down Expand Up @@ -85,8 +85,10 @@ extern QGate CZ(Qubit* targetQBit, Qubit* controlQBit);
// Create an arbitrary single unitary gate
extern QGate QSingle(double alpha, double beta, double gamma, double delta, Qubit *);

extern QGate QSingle(QStat& matrix, Qubit*);
// Create a control-U gate
extern QGate CU(double alpha, double beta, double gamma, double delta, Qubit *, Qubit *);
extern QGate CU(QStat& matrix, Qubit*, Qubit*);

extern QGate iSWAP(Qubit * targitBit, Qubit * controlBit);
extern QGate iSWAP(Qubit * targitBit, Qubit * controlBit, double theta);
Expand Down
5 changes: 5 additions & 0 deletions QPanda-2.0.Windows/QPanda/ConfigMap.cpp
Expand Up @@ -3,7 +3,12 @@
#include "XMLConfigParam.h"
ConfigMap::ConfigMap()
{
#if defined(__linux__)
m_sConfigFilePath.assign("./ConfigFile/Config.xml");
#elif defined(_WIN32)
m_sConfigFilePath.assign("../Config.xml");
#endif

XmlConfigParam xml(m_sConfigFilePath);
xml.getClassNameConfig(m_configMap);
string metadataPath;
Expand Down
7 changes: 6 additions & 1 deletion QPanda-2.0.Windows/QPanda/XMLConfigParam.cpp
Expand Up @@ -17,7 +17,12 @@ bool XmlConfigParam::getMetadataPath(string &path)
return false;
}

TiXmlElement *metadataPathEle = m_rootElement->FirstChildElement("MetadataPath");
#if defined(__linux__)
TiXmlElement *metadataPathEle = m_rootElement->FirstChildElement("MetadataPathLinux");
#elif defined(_WIN32)
TiXmlElement *metadataPathEle = m_rootElement->FirstChildElement("MetadataPathWindows");
#endif

if (!metadataPathEle)
{
return false;
Expand Down
48 changes: 40 additions & 8 deletions QPanda-2.0.Windows/QuantumCircuit/QGate.cpp
Expand Up @@ -17,7 +17,7 @@ limitations under the License.
#include "QGate.h"
#include "QGlobalVariable.h"
#include "QPanda/QPandaException.h"

using namespace QGATE_SPACE;
QuantumGate::QuantumGate()
{
qOpNum = 0;
Expand Down Expand Up @@ -62,7 +62,22 @@ U4::U4(double _alpha, double _beta, double _gamma, double _delta)
sin(alpha + beta / 2 - delta / 2)*sin(gamma / 2)));
gatematrix.push_back(COMPLEX(cos(alpha + beta / 2 + delta / 2)*cos(gamma / 2),
sin(alpha + beta / 2 + delta / 2)*cos(gamma / 2)));
};
}
U4::U4(QStat & matrix)
{
qOpNum = 1;
//QStat matrix;
gatematrix.resize(4);
gatematrix[0] = matrix[0];
gatematrix[1] = matrix[1];
gatematrix[2] = matrix[2];
gatematrix[3] = matrix[3];
gamma = 2 * acos(abs(matrix[0]));
beta = argc(matrix[2] - matrix[0]);
delta = argc(matrix[2] - matrix[0]) + PI;
alpha = argc(matrix[2]) + delta / 2 - beta / 2;
}
;
void U4::getMatrix(QStat & matrix) const
{
if (gatematrix.size() != 4)
Expand Down Expand Up @@ -271,7 +286,22 @@ CU::CU(double _alpha, double _beta,
sin(alpha + beta / 2 - delta / 2)*sin(gamma / 2));
gatematrix[15] = COMPLEX(cos(alpha + beta / 2 + delta / 2)*cos(gamma / 2),
sin(alpha + beta / 2 + delta / 2)*cos(gamma / 2));
};
}
CU::CU(QStat & matrix)
{
qOpNum = 2;
//QStat matrix;
gatematrix.resize(4);
gatematrix[10] = matrix[0];
gatematrix[11] = matrix[1];
gatematrix[14] = matrix[2];
gatematrix[15] = matrix[3];
gamma = 2 * acos(abs(matrix[0]));
beta = argc(matrix[2] - matrix[0]);
delta = argc(matrix[2] - matrix[0]) + PI;
alpha = argc(matrix[2]) + delta / 2 - beta / 2;
}
;
CNOT::CNOT()
{
alpha = PI / 2;
Expand Down Expand Up @@ -344,9 +374,9 @@ void QGateFactory::registClass(string name, CreateSingleAndCUGate method)
m_singleAndCUGateMap.insert(pair<string, CreateSingleAndCUGate>(name, method));
}

void QGateFactory::registClass(string name, CreateDoubleGate method)
void QGateFactory::registClass(string name, CreateGateByMatrix method)
{
m_DoubleGateMap.insert(pair<string, CreateDoubleGate>(name, method));
m_DoubleGateMap.insert(pair<string, CreateGateByMatrix>(name, method));
}


Expand Down Expand Up @@ -421,12 +451,12 @@ REGISTER(SQISWAP);
RegisterAction g_singleCreatorRegister##className( \
#className,(CreateSingleAndCUGate)objectCreator##className)

#define REGISTER_DOUBLE(className) \
#define REGISTER_MATRIX(className) \
QuantumGate* objectCreator##className(QStat & matrix){ \
return new className(matrix); \
} \
RegisterAction g_doubleCreatorRegister##className( \
#className,(CreateDoubleGate)objectCreator##className)
#className,(CreateGateByMatrix)objectCreator##className)


REGISTER_ANGLE(RX);
Expand All @@ -437,7 +467,9 @@ REGISTER_ANGLE(ISWAPTheta);
REGISTER_SINGLE_CU(U4);
REGISTER_SINGLE_CU(CU);

REGISTER_DOUBLE(QDoubleGate);
REGISTER_MATRIX(QDoubleGate);
REGISTER_MATRIX(U4);
REGISTER_MATRIX(CU);



Expand Down

0 comments on commit 878b442

Please sign in to comment.