mqt-core 3.3.2__cp314-cp314t-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mqt/core/__init__.py +77 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +34 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/dd.cpython-314t-darwin.so +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
- mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
- mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cpython-314t-darwin.so +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.dylib +0 -0
- mqt/core/lib/libspdlog.a +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +109 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +118 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +546 -0
- mqt_core-3.3.2.dist-info/WHEEL +6 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// (C) Copyright Matt Borland 2021.
|
|
2
|
+
// Use, modification and distribution are subject to the
|
|
3
|
+
// Boost Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
//
|
|
6
|
+
// We deliberately use assert in here:
|
|
7
|
+
//
|
|
8
|
+
// boost-no-inspect
|
|
9
|
+
|
|
10
|
+
#ifndef BOOST_MP_DETAIL_ASSERT_HPP
|
|
11
|
+
#define BOOST_MP_DETAIL_ASSERT_HPP
|
|
12
|
+
|
|
13
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
14
|
+
|
|
15
|
+
#ifndef BOOST_MP_STANDALONE
|
|
16
|
+
|
|
17
|
+
#include <boost/assert.hpp>
|
|
18
|
+
#define BOOST_MP_ASSERT(expr) BOOST_ASSERT(expr)
|
|
19
|
+
#define BOOST_MP_ASSERT_MSG(expr, msg) BOOST_ASSERT_MSG(expr, msg)
|
|
20
|
+
|
|
21
|
+
#else // Standalone mode - use cassert
|
|
22
|
+
|
|
23
|
+
#include <cassert>
|
|
24
|
+
#define BOOST_MP_ASSERT(expr) assert(expr)
|
|
25
|
+
#define BOOST_MP_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
|
|
26
|
+
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#endif // BOOST_MP_DETAIL_ASSERT_HPP
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2017 John Maddock
|
|
3
|
+
// Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
6
|
+
|
|
7
|
+
#ifndef BOOST_MP_DETAIL_ATOMIC_HPP
|
|
8
|
+
#define BOOST_MP_DETAIL_ATOMIC_HPP
|
|
9
|
+
|
|
10
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
11
|
+
|
|
12
|
+
#ifdef BOOST_HAS_THREADS
|
|
13
|
+
|
|
14
|
+
# include <atomic>
|
|
15
|
+
# define BOOST_MATH_ATOMIC_NS std
|
|
16
|
+
namespace boost {
|
|
17
|
+
namespace multiprecision {
|
|
18
|
+
namespace detail {
|
|
19
|
+
#if ATOMIC_INT_LOCK_FREE == 2
|
|
20
|
+
using atomic_counter_type = std::atomic<int>;
|
|
21
|
+
using atomic_unsigned_type = std::atomic<unsigned>;
|
|
22
|
+
using atomic_integer_type = int;
|
|
23
|
+
using atomic_unsigned_integer_type = unsigned;
|
|
24
|
+
#elif ATOMIC_SHORT_LOCK_FREE == 2
|
|
25
|
+
using atomic_counter_type = std::atomic<short>;
|
|
26
|
+
using atomic_unsigned_type = std::atomic<unsigned short>;
|
|
27
|
+
using atomic_integer_type = short;
|
|
28
|
+
using atomic_unsigned_integer_type = unsigned short;
|
|
29
|
+
#elif ATOMIC_LONG_LOCK_FREE == 2
|
|
30
|
+
using atomic_unsigned_integer_type = std::atomic<long>;
|
|
31
|
+
using atomic_unsigned_type = std::atomic<unsigned long>;
|
|
32
|
+
using atomic_unsigned_integer_type = unsigned long;
|
|
33
|
+
using atomic_integer_type = long;
|
|
34
|
+
#elif ATOMIC_LLONG_LOCK_FREE == 2
|
|
35
|
+
using atomic_unsigned_integer_type = std::atomic<long long>;
|
|
36
|
+
using atomic_unsigned_type = std::atomic<unsigned long long>;
|
|
37
|
+
using atomic_integer_type = long long;
|
|
38
|
+
using atomic_unsigned_integer_type = unsigned long long;
|
|
39
|
+
#else
|
|
40
|
+
|
|
41
|
+
#define BOOST_MT_NO_ATOMIC_INT
|
|
42
|
+
|
|
43
|
+
#endif
|
|
44
|
+
}
|
|
45
|
+
}}
|
|
46
|
+
#else // BOOST_HAS_THREADS
|
|
47
|
+
|
|
48
|
+
#define BOOST_MT_NO_ATOMIC_INT
|
|
49
|
+
|
|
50
|
+
#endif // BOOST_HAS_THREADS
|
|
51
|
+
|
|
52
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
53
|
+
|
|
54
|
+
#ifdef BOOST_MT_NO_ATOMIC_INT
|
|
55
|
+
using precision_type = unsigned;
|
|
56
|
+
#else
|
|
57
|
+
using precision_type = atomic_unsigned_type;
|
|
58
|
+
#endif
|
|
59
|
+
|
|
60
|
+
} } }
|
|
61
|
+
|
|
62
|
+
#endif // BOOST_MP_DETAIL_ATOMIC_HPP
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2013 John Maddock. Distributed under the Boost
|
|
3
|
+
// Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
|
|
5
|
+
//
|
|
6
|
+
// Comparison operators for cpp_int_backend:
|
|
7
|
+
//
|
|
8
|
+
#ifndef BOOST_MP_DETAIL_BITSCAN_HPP
|
|
9
|
+
#define BOOST_MP_DETAIL_BITSCAN_HPP
|
|
10
|
+
|
|
11
|
+
#include <cstdint>
|
|
12
|
+
#include <climits>
|
|
13
|
+
#include <type_traits>
|
|
14
|
+
#include <boost/multiprecision/detail/endian.hpp>
|
|
15
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
16
|
+
|
|
17
|
+
#if (defined(BOOST_MSVC) || (defined(__clang__) && defined(__c2__)) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && (defined(_M_IX86) || defined(_M_X64))
|
|
18
|
+
#include <intrin.h>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
22
|
+
|
|
23
|
+
template <class Unsigned>
|
|
24
|
+
inline BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb_default(Unsigned mask)
|
|
25
|
+
{
|
|
26
|
+
std::size_t result = 0;
|
|
27
|
+
while (!(mask & 1u))
|
|
28
|
+
{
|
|
29
|
+
mask >>= 1;
|
|
30
|
+
++result;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
template <class Unsigned>
|
|
36
|
+
inline BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb_default(Unsigned mask)
|
|
37
|
+
{
|
|
38
|
+
std::size_t index = 0;
|
|
39
|
+
while (mask)
|
|
40
|
+
{
|
|
41
|
+
++index;
|
|
42
|
+
mask >>= 1;
|
|
43
|
+
}
|
|
44
|
+
return --index;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
template <class Unsigned>
|
|
48
|
+
inline BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb(Unsigned mask, const std::integral_constant<int, 0>&)
|
|
49
|
+
{
|
|
50
|
+
return find_lsb_default(mask);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
template <class Unsigned>
|
|
54
|
+
inline BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb(Unsigned mask, const std::integral_constant<int, 0>&)
|
|
55
|
+
{
|
|
56
|
+
return find_msb_default(mask);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#if (defined(BOOST_MSVC) || (defined(__clang__) && defined(__c2__)) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && (defined(_M_IX86) || defined(_M_X64))
|
|
60
|
+
|
|
61
|
+
#pragma intrinsic(_BitScanForward, _BitScanReverse)
|
|
62
|
+
|
|
63
|
+
BOOST_FORCEINLINE std::size_t find_lsb(unsigned long mask, const std::integral_constant<int, 1>&)
|
|
64
|
+
{
|
|
65
|
+
unsigned long result;
|
|
66
|
+
_BitScanForward(&result, mask);
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
BOOST_FORCEINLINE std::size_t find_msb(unsigned long mask, const std::integral_constant<int, 1>&)
|
|
71
|
+
{
|
|
72
|
+
unsigned long result;
|
|
73
|
+
_BitScanReverse(&result, mask);
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
#ifdef _M_X64
|
|
77
|
+
|
|
78
|
+
#pragma intrinsic(_BitScanForward64, _BitScanReverse64)
|
|
79
|
+
|
|
80
|
+
BOOST_FORCEINLINE std::size_t find_lsb(unsigned __int64 mask, const std::integral_constant<int, 2>&)
|
|
81
|
+
{
|
|
82
|
+
unsigned long result;
|
|
83
|
+
_BitScanForward64(&result, mask);
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
template <class Unsigned>
|
|
87
|
+
BOOST_FORCEINLINE std::size_t find_msb(Unsigned mask, const std::integral_constant<int, 2>&)
|
|
88
|
+
{
|
|
89
|
+
unsigned long result;
|
|
90
|
+
_BitScanReverse64(&result, mask);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
#endif
|
|
94
|
+
|
|
95
|
+
template <class Unsigned>
|
|
96
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb(Unsigned mask)
|
|
97
|
+
{
|
|
98
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
99
|
+
using tag_type = typename std::conditional<
|
|
100
|
+
sizeof(Unsigned) <= sizeof(unsigned long),
|
|
101
|
+
std::integral_constant<int, 1>,
|
|
102
|
+
#ifdef _M_X64
|
|
103
|
+
typename std::conditional<
|
|
104
|
+
sizeof(Unsigned) <= sizeof(__int64),
|
|
105
|
+
std::integral_constant<int, 2>,
|
|
106
|
+
std::integral_constant<int, 0> >::type
|
|
107
|
+
#else
|
|
108
|
+
std::integral_constant<int, 0>
|
|
109
|
+
#endif
|
|
110
|
+
>::type;
|
|
111
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
112
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
113
|
+
{
|
|
114
|
+
return find_lsb_default(mask);
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
#endif
|
|
118
|
+
return find_lsb(static_cast<ui_type>(mask), tag_type());
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
template <class Unsigned>
|
|
122
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb(Unsigned mask)
|
|
123
|
+
{
|
|
124
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
125
|
+
using tag_type = typename std::conditional<
|
|
126
|
+
sizeof(Unsigned) <= sizeof(unsigned long),
|
|
127
|
+
std::integral_constant<int, 1>,
|
|
128
|
+
#ifdef _M_X64
|
|
129
|
+
typename std::conditional<
|
|
130
|
+
sizeof(Unsigned) <= sizeof(__int64),
|
|
131
|
+
std::integral_constant<int, 2>,
|
|
132
|
+
std::integral_constant<int, 0> >::type
|
|
133
|
+
#else
|
|
134
|
+
std::integral_constant<int, 0>
|
|
135
|
+
#endif
|
|
136
|
+
>::type;
|
|
137
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
138
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
139
|
+
{
|
|
140
|
+
return find_msb_default(mask);
|
|
141
|
+
}
|
|
142
|
+
else
|
|
143
|
+
#endif
|
|
144
|
+
return find_msb(static_cast<ui_type>(mask), tag_type());
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
#elif defined(BOOST_GCC) || defined(__clang__) || (defined(BOOST_INTEL) && defined(__GNUC__))
|
|
148
|
+
|
|
149
|
+
BOOST_FORCEINLINE std::size_t find_lsb(std::size_t mask, std::integral_constant<int, 1> const&)
|
|
150
|
+
{
|
|
151
|
+
return static_cast<std::size_t>(__builtin_ctz(static_cast<unsigned int>(mask)));
|
|
152
|
+
}
|
|
153
|
+
BOOST_FORCEINLINE std::size_t find_lsb(unsigned long mask, std::integral_constant<int, 2> const&)
|
|
154
|
+
{
|
|
155
|
+
return static_cast<std::size_t>(__builtin_ctzl(static_cast<unsigned long>(mask)));
|
|
156
|
+
}
|
|
157
|
+
BOOST_FORCEINLINE std::size_t find_lsb(unsigned long long mask, std::integral_constant<int, 3> const&)
|
|
158
|
+
{
|
|
159
|
+
return static_cast<std::size_t>(__builtin_ctzll(static_cast<unsigned long long>(mask)));
|
|
160
|
+
}
|
|
161
|
+
BOOST_FORCEINLINE std::size_t find_msb(std::size_t mask, std::integral_constant<int, 1> const&)
|
|
162
|
+
{
|
|
163
|
+
return static_cast<std::size_t>(static_cast<std::size_t>(sizeof(unsigned) * static_cast<std::size_t>(CHAR_BIT) - 1u) - static_cast<std::size_t>(__builtin_clz(static_cast<unsigned int>(mask))));
|
|
164
|
+
}
|
|
165
|
+
BOOST_FORCEINLINE std::size_t find_msb(unsigned long mask, std::integral_constant<int, 2> const&)
|
|
166
|
+
{
|
|
167
|
+
return static_cast<std::size_t>(static_cast<std::size_t>(sizeof(unsigned long) * static_cast<std::size_t>(CHAR_BIT) - 1u) - static_cast<std::size_t>(__builtin_clzl(static_cast<unsigned long>(mask))));
|
|
168
|
+
}
|
|
169
|
+
BOOST_FORCEINLINE std::size_t find_msb(unsigned long long mask, std::integral_constant<int, 3> const&)
|
|
170
|
+
{
|
|
171
|
+
return static_cast<std::size_t>(static_cast<std::size_t>(sizeof(unsigned long long) * static_cast<std::size_t>(CHAR_BIT) - 1u) - static_cast<std::size_t>(__builtin_clzll(static_cast<unsigned long long>(mask))));
|
|
172
|
+
}
|
|
173
|
+
#ifdef BOOST_HAS_INT128
|
|
174
|
+
|
|
175
|
+
BOOST_FORCEINLINE std::size_t find_msb(uint128_type mask, std::integral_constant<int, 0> const&)
|
|
176
|
+
{
|
|
177
|
+
union
|
|
178
|
+
{
|
|
179
|
+
uint128_type v;
|
|
180
|
+
std::uint64_t sv[2];
|
|
181
|
+
} val;
|
|
182
|
+
val.v = mask;
|
|
183
|
+
#if BOOST_MP_ENDIAN_LITTLE_BYTE
|
|
184
|
+
if (val.sv[1])
|
|
185
|
+
return find_msb(val.sv[1], std::integral_constant<int, 3>()) + 64;
|
|
186
|
+
return find_msb(val.sv[0], std::integral_constant<int, 3>());
|
|
187
|
+
#else
|
|
188
|
+
if (val.sv[0])
|
|
189
|
+
return find_msb(val.sv[0], std::integral_constant<int, 3>()) + 64;
|
|
190
|
+
return find_msb(val.sv[1], std::integral_constant<int, 3>());
|
|
191
|
+
#endif
|
|
192
|
+
}
|
|
193
|
+
BOOST_FORCEINLINE std::size_t find_lsb(uint128_type mask, std::integral_constant<int, 0> const&)
|
|
194
|
+
{
|
|
195
|
+
union
|
|
196
|
+
{
|
|
197
|
+
uint128_type v;
|
|
198
|
+
std::uint64_t sv[2];
|
|
199
|
+
} val;
|
|
200
|
+
val.v = mask;
|
|
201
|
+
#if BOOST_MP_ENDIAN_LITTLE_BYTE
|
|
202
|
+
if (val.sv[0] == 0)
|
|
203
|
+
return find_lsb(val.sv[1], std::integral_constant<int, 3>()) + 64;
|
|
204
|
+
return find_lsb(val.sv[0], std::integral_constant<int, 3>());
|
|
205
|
+
#else
|
|
206
|
+
if (val.sv[1] == 0)
|
|
207
|
+
return find_lsb(val.sv[0], std::integral_constant<int, 3>()) + 64;
|
|
208
|
+
return find_lsb(val.sv[1], std::integral_constant<int, 3>());
|
|
209
|
+
#endif
|
|
210
|
+
}
|
|
211
|
+
#endif
|
|
212
|
+
|
|
213
|
+
template <class Unsigned>
|
|
214
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb(Unsigned mask)
|
|
215
|
+
{
|
|
216
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
217
|
+
using tag_type = typename std::conditional<
|
|
218
|
+
sizeof(Unsigned) <= sizeof(unsigned),
|
|
219
|
+
std::integral_constant<int, 1>,
|
|
220
|
+
typename std::conditional<
|
|
221
|
+
sizeof(Unsigned) <= sizeof(unsigned long),
|
|
222
|
+
std::integral_constant<int, 2>,
|
|
223
|
+
typename std::conditional<
|
|
224
|
+
sizeof(Unsigned) <= sizeof(unsigned long long),
|
|
225
|
+
std::integral_constant<int, 3>,
|
|
226
|
+
std::integral_constant<int, 0> >::type>::type>::type;
|
|
227
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
228
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
229
|
+
{
|
|
230
|
+
return find_lsb_default(mask);
|
|
231
|
+
}
|
|
232
|
+
else
|
|
233
|
+
#endif
|
|
234
|
+
return find_lsb(static_cast<ui_type>(mask), tag_type());
|
|
235
|
+
}
|
|
236
|
+
template <class Unsigned>
|
|
237
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb(Unsigned mask)
|
|
238
|
+
{
|
|
239
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
240
|
+
using tag_type = typename std::conditional<
|
|
241
|
+
sizeof(Unsigned) <= sizeof(unsigned),
|
|
242
|
+
std::integral_constant<int, 1>,
|
|
243
|
+
typename std::conditional<
|
|
244
|
+
sizeof(Unsigned) <= sizeof(unsigned long),
|
|
245
|
+
std::integral_constant<int, 2>,
|
|
246
|
+
typename std::conditional<
|
|
247
|
+
sizeof(Unsigned) <= sizeof(unsigned long long),
|
|
248
|
+
std::integral_constant<int, 3>,
|
|
249
|
+
std::integral_constant<int, 0> >::type>::type>::type;
|
|
250
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
251
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
252
|
+
{
|
|
253
|
+
return find_msb_default(mask);
|
|
254
|
+
}
|
|
255
|
+
else
|
|
256
|
+
#endif
|
|
257
|
+
return find_msb(static_cast<ui_type>(mask), tag_type());
|
|
258
|
+
}
|
|
259
|
+
#elif defined(BOOST_INTEL)
|
|
260
|
+
BOOST_FORCEINLINE std::size_t find_lsb(std::size_t mask, std::integral_constant<int, 1> const&)
|
|
261
|
+
{
|
|
262
|
+
return _bit_scan_forward(mask);
|
|
263
|
+
}
|
|
264
|
+
BOOST_FORCEINLINE std::size_t find_msb(std::size_t mask, std::integral_constant<int, 1> const&)
|
|
265
|
+
{
|
|
266
|
+
return _bit_scan_reverse(mask);
|
|
267
|
+
}
|
|
268
|
+
template <class Unsigned>
|
|
269
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb(Unsigned mask)
|
|
270
|
+
{
|
|
271
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
272
|
+
using tag_type = typename std::conditional<
|
|
273
|
+
sizeof(Unsigned) <= sizeof(unsigned),
|
|
274
|
+
std::integral_constant<int, 1>,
|
|
275
|
+
std::integral_constant<int, 0> >::type;
|
|
276
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
277
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
278
|
+
{
|
|
279
|
+
return find_lsb_default(mask);
|
|
280
|
+
}
|
|
281
|
+
else
|
|
282
|
+
#endif
|
|
283
|
+
return find_lsb(static_cast<ui_type>(mask), tag_type());
|
|
284
|
+
}
|
|
285
|
+
template <class Unsigned>
|
|
286
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb(Unsigned mask)
|
|
287
|
+
{
|
|
288
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<Unsigned>::type;
|
|
289
|
+
using tag_type = typename std::conditional<
|
|
290
|
+
sizeof(Unsigned) <= sizeof(unsigned),
|
|
291
|
+
std::integral_constant<int, 1>,
|
|
292
|
+
std::integral_constant<int, 0> >::type;
|
|
293
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
294
|
+
if (BOOST_MP_IS_CONST_EVALUATED(mask))
|
|
295
|
+
{
|
|
296
|
+
return find_msb_default(mask);
|
|
297
|
+
}
|
|
298
|
+
else
|
|
299
|
+
#endif
|
|
300
|
+
return find_msb(static_cast<ui_type>(mask), tag_type());
|
|
301
|
+
}
|
|
302
|
+
#else
|
|
303
|
+
template <class Unsigned>
|
|
304
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_lsb(Unsigned mask)
|
|
305
|
+
{
|
|
306
|
+
return find_lsb(mask, std::integral_constant<int, 0>());
|
|
307
|
+
}
|
|
308
|
+
template <class Unsigned>
|
|
309
|
+
BOOST_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR std::size_t find_msb(Unsigned mask)
|
|
310
|
+
{
|
|
311
|
+
return find_msb(mask, std::integral_constant<int, 0>());
|
|
312
|
+
}
|
|
313
|
+
#endif
|
|
314
|
+
|
|
315
|
+
}}} // namespace boost::multiprecision::detail
|
|
316
|
+
|
|
317
|
+
#endif
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2011 John Maddock. Distributed under the Boost
|
|
3
|
+
// Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
#ifndef BOOST_MP_CHECK_CPP11_CONFIG_HPP
|
|
7
|
+
#define BOOST_MP_CHECK_CPP11_CONFIG_HPP
|
|
8
|
+
|
|
9
|
+
//
|
|
10
|
+
// We now require C++11, if something we use is not supported, then error and say why:
|
|
11
|
+
//
|
|
12
|
+
#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
|
|
13
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_RVALUE_REFERENCES being set"
|
|
14
|
+
#endif
|
|
15
|
+
#ifdef BOOST_NO_CXX11_TEMPLATE_ALIASES
|
|
16
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_TEMPLATE_ALIASES being set"
|
|
17
|
+
#endif
|
|
18
|
+
#ifdef BOOST_NO_CXX11_HDR_ARRAY
|
|
19
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_ARRAY being set"
|
|
20
|
+
#endif
|
|
21
|
+
#ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
|
22
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_TYPE_TRAITS being set"
|
|
23
|
+
#endif
|
|
24
|
+
#ifdef BOOST_NO_CXX11_ALLOCATOR
|
|
25
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_ALLOCATOR being set"
|
|
26
|
+
#endif
|
|
27
|
+
#ifdef BOOST_NO_CXX11_CONSTEXPR
|
|
28
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_CONSTEXPR being set"
|
|
29
|
+
#endif
|
|
30
|
+
#ifdef BOOST_MP_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
|
|
31
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_MP_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS being set"
|
|
32
|
+
#endif
|
|
33
|
+
#ifdef BOOST_NO_CXX11_REF_QUALIFIERS
|
|
34
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_REF_QUALIFIERS being set"
|
|
35
|
+
#endif
|
|
36
|
+
#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
37
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_FUNCTIONAL being set"
|
|
38
|
+
#endif
|
|
39
|
+
#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
|
40
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_VARIADIC_TEMPLATES being set"
|
|
41
|
+
#endif
|
|
42
|
+
#ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
|
43
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_USER_DEFINED_LITERALS being set"
|
|
44
|
+
#endif
|
|
45
|
+
#ifdef BOOST_NO_CXX11_DECLTYPE
|
|
46
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_DECLTYPE being set"
|
|
47
|
+
#endif
|
|
48
|
+
#ifdef BOOST_NO_CXX11_STATIC_ASSERT
|
|
49
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_STATIC_ASSERT being set"
|
|
50
|
+
#endif
|
|
51
|
+
#ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
|
|
52
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_DEFAULTED_FUNCTIONS being set"
|
|
53
|
+
#endif
|
|
54
|
+
#ifdef BOOST_NO_CXX11_NOEXCEPT
|
|
55
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_NOEXCEPT being set"
|
|
56
|
+
#endif
|
|
57
|
+
#ifdef BOOST_NO_CXX11_REF_QUALIFIERS
|
|
58
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_REF_QUALIFIERS being set"
|
|
59
|
+
#endif
|
|
60
|
+
#ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
|
61
|
+
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_USER_DEFINED_LITERALS being set"
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#endif // BOOST_MP_CHECK_CPP11_CONFIG_HPP
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2019 John Maddock. Distributed under the Boost
|
|
3
|
+
// Software License, Version 1.0. (See accompanying file
|
|
4
|
+
// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
|
|
5
|
+
|
|
6
|
+
#ifndef BOOST_MP_DETAIL_CONSTEXPR_HPP
|
|
7
|
+
#define BOOST_MP_DETAIL_CONSTEXPR_HPP
|
|
8
|
+
|
|
9
|
+
#include <cstring>
|
|
10
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
11
|
+
|
|
12
|
+
namespace boost {
|
|
13
|
+
|
|
14
|
+
namespace multiprecision {
|
|
15
|
+
|
|
16
|
+
namespace std_constexpr {
|
|
17
|
+
|
|
18
|
+
template <class T>
|
|
19
|
+
inline BOOST_CXX14_CONSTEXPR void swap(T& a, T& b)
|
|
20
|
+
{
|
|
21
|
+
T t(a);
|
|
22
|
+
a = b;
|
|
23
|
+
b = t;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
template <class InputIterator, class OutputIterator>
|
|
27
|
+
inline BOOST_CXX14_CONSTEXPR OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
|
|
28
|
+
{
|
|
29
|
+
//
|
|
30
|
+
// There are 3 branches here, only one of which is selected at compile time:
|
|
31
|
+
//
|
|
32
|
+
#ifndef BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
33
|
+
if (BOOST_MP_IS_CONST_EVALUATED(*first))
|
|
34
|
+
{
|
|
35
|
+
// constexpr safe code, never generates runtime code:
|
|
36
|
+
while (first != last)
|
|
37
|
+
{
|
|
38
|
+
*result = *first;
|
|
39
|
+
++first;
|
|
40
|
+
++result;
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
else
|
|
45
|
+
#endif
|
|
46
|
+
{
|
|
47
|
+
#ifndef BOOST_NO_CXX17_IF_CONSTEXPR
|
|
48
|
+
if constexpr (std::is_pointer<InputIterator>::value && std::is_pointer<OutputIterator>::value && std::is_trivially_copyable<typename std::remove_reference<decltype(*first)>::type>::value)
|
|
49
|
+
{
|
|
50
|
+
// The normal runtime branch:
|
|
51
|
+
std::memcpy(result, first, static_cast<std::size_t>(static_cast<std::size_t>(last - first) * sizeof(*first)));
|
|
52
|
+
return result + (last - first);
|
|
53
|
+
}
|
|
54
|
+
else
|
|
55
|
+
#endif
|
|
56
|
+
{
|
|
57
|
+
// Alternate runtime branch:
|
|
58
|
+
while (first != last)
|
|
59
|
+
{
|
|
60
|
+
*result = *first;
|
|
61
|
+
++first;
|
|
62
|
+
++result;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
template <class I>
|
|
70
|
+
inline BOOST_CXX14_CONSTEXPR bool equal(const I* first, const I* last, const I* other)
|
|
71
|
+
{
|
|
72
|
+
while (first != last)
|
|
73
|
+
{
|
|
74
|
+
if (*first != *other)
|
|
75
|
+
return false;
|
|
76
|
+
++first;
|
|
77
|
+
++other;
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
} // namespace boost::multiprecision::std_constexpr
|
|
87
|
+
|
|
88
|
+
#endif
|