mqt-core 3.3.2__cp312-cp312-win_amd64.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 +89 -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/bin/mqt-core-algorithms.dll +0 -0
- mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
- mqt/core/bin/mqt-core-dd.dll +0 -0
- mqt/core/bin/mqt-core-ds.dll +0 -0
- mqt/core/bin/mqt-core-fomac.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na-fomac.dll +0 -0
- mqt/core/bin/mqt-core-na.dll +0 -0
- mqt/core/bin/mqt-core-qasm.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp312-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp312-win_amd64.pyd +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.cp312-win_amd64.pyd +0 -0
- mqt/core/lib/mqt-core-algorithms.lib +0 -0
- mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
- mqt/core/lib/mqt-core-dd.lib +0 -0
- mqt/core/lib/mqt-core-ds.lib +0 -0
- mqt/core/lib/mqt-core-fomac.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na-fomac.lib +0 -0
- mqt/core/lib/mqt-core-na.lib +0 -0
- mqt/core/lib/mqt-core-qasm.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/lib/spdlog.lib +0 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cp312-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -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 +445 -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 +110 -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 +121 -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/DELVEWHEEL +2 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +537 -0
- mqt_core-3.3.2.dist-info/WHEEL +5 -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
- mqt_core.libs/msvcp140.dll +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright Vicente J. Botet Escriba 2009-2011
|
|
3
|
+
// Copyright 2012 John Maddock. 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_EXPLICIT_CONVERSION_HPP
|
|
8
|
+
#define BOOST_MP_EXPLICIT_CONVERSION_HPP
|
|
9
|
+
|
|
10
|
+
#include <type_traits>
|
|
11
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
12
|
+
#include <boost/multiprecision/detail/number_base.hpp> // number_category
|
|
13
|
+
|
|
14
|
+
namespace boost {
|
|
15
|
+
namespace multiprecision {
|
|
16
|
+
namespace detail {
|
|
17
|
+
|
|
18
|
+
template <unsigned int N>
|
|
19
|
+
struct dummy_size
|
|
20
|
+
{};
|
|
21
|
+
|
|
22
|
+
template <typename S, typename T>
|
|
23
|
+
struct has_generic_interconversion
|
|
24
|
+
{
|
|
25
|
+
using type = typename std::conditional<
|
|
26
|
+
is_number<S>::value && is_number<T>::value,
|
|
27
|
+
typename std::conditional<
|
|
28
|
+
number_category<S>::value == number_kind_integer,
|
|
29
|
+
typename std::conditional<
|
|
30
|
+
number_category<T>::value == number_kind_integer || number_category<T>::value == number_kind_floating_point || number_category<T>::value == number_kind_rational || number_category<T>::value == number_kind_fixed_point,
|
|
31
|
+
std::true_type,
|
|
32
|
+
std::false_type >::type,
|
|
33
|
+
typename std::conditional<
|
|
34
|
+
number_category<S>::value == number_kind_rational,
|
|
35
|
+
typename std::conditional<
|
|
36
|
+
number_category<T>::value == number_kind_rational || number_category<T>::value == number_kind_rational,
|
|
37
|
+
std::true_type,
|
|
38
|
+
std::false_type >::type,
|
|
39
|
+
typename std::conditional<
|
|
40
|
+
number_category<T>::value == number_kind_floating_point,
|
|
41
|
+
std::true_type,
|
|
42
|
+
std::false_type >::type>::type>::type,
|
|
43
|
+
std::false_type >::type;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
template <typename S, typename T>
|
|
47
|
+
struct is_explicitly_convertible_imp
|
|
48
|
+
{
|
|
49
|
+
template <typename S1, typename T1>
|
|
50
|
+
static int selector(dummy_size<static_cast<unsigned int>(sizeof(new T1(std::declval<S1>())))>*);
|
|
51
|
+
|
|
52
|
+
template <typename S1, typename T1>
|
|
53
|
+
static char selector(...);
|
|
54
|
+
|
|
55
|
+
static constexpr bool value = sizeof(selector<S, T>(nullptr)) == sizeof(int);
|
|
56
|
+
|
|
57
|
+
using type = std::integral_constant<bool, value>;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
template <typename From, typename To>
|
|
61
|
+
struct is_explicitly_convertible : public is_explicitly_convertible_imp<From, To>::type
|
|
62
|
+
{
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
}}} // namespace boost::multiprecision::detail
|
|
66
|
+
|
|
67
|
+
#endif
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2012 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_EXTRACT_EXPONENT_TYPE_HPP
|
|
7
|
+
#define BOOST_MP_EXTRACT_EXPONENT_TYPE_HPP
|
|
8
|
+
|
|
9
|
+
#include <boost/multiprecision/number.hpp>
|
|
10
|
+
|
|
11
|
+
namespace boost {
|
|
12
|
+
namespace multiprecision {
|
|
13
|
+
namespace backends {
|
|
14
|
+
|
|
15
|
+
template <class Backend, int cat>
|
|
16
|
+
struct extract_exponent_type
|
|
17
|
+
{
|
|
18
|
+
using type = int;
|
|
19
|
+
};
|
|
20
|
+
template <class Backend>
|
|
21
|
+
struct extract_exponent_type<Backend, number_kind_floating_point>
|
|
22
|
+
{
|
|
23
|
+
using type = typename Backend::exponent_type;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
}}} // namespace boost::multiprecision::backends
|
|
27
|
+
|
|
28
|
+
#endif
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2015 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_IS_BACKEND_HPP
|
|
7
|
+
#define BOOST_MP_IS_BACKEND_HPP
|
|
8
|
+
|
|
9
|
+
#include <type_traits>
|
|
10
|
+
#include <boost/multiprecision/detail/number_base.hpp>
|
|
11
|
+
|
|
12
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
13
|
+
|
|
14
|
+
template <class T>
|
|
15
|
+
struct has_signed_types
|
|
16
|
+
{
|
|
17
|
+
template <class U>
|
|
18
|
+
static double check(U*, typename U::signed_types* = nullptr);
|
|
19
|
+
static char check(...);
|
|
20
|
+
static T* get();
|
|
21
|
+
static constexpr bool value = sizeof(check(get())) == sizeof(double);
|
|
22
|
+
};
|
|
23
|
+
template <class T>
|
|
24
|
+
struct has_unsigned_types
|
|
25
|
+
{
|
|
26
|
+
template <class U>
|
|
27
|
+
static double check(U*, typename U::unsigned_types* = nullptr);
|
|
28
|
+
static char check(...);
|
|
29
|
+
static T* get();
|
|
30
|
+
static constexpr bool value = sizeof(check(get())) == sizeof(double);
|
|
31
|
+
};
|
|
32
|
+
template <class T>
|
|
33
|
+
struct has_float_types
|
|
34
|
+
{
|
|
35
|
+
template <class U>
|
|
36
|
+
static double check(U*, typename U::float_types* = nullptr);
|
|
37
|
+
static char check(...);
|
|
38
|
+
static T* get();
|
|
39
|
+
static constexpr bool value = sizeof(check(get())) == sizeof(double);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
template <class T>
|
|
43
|
+
struct is_backend : public std::integral_constant<bool, has_signed_types<T>::value && has_unsigned_types<T>::value && has_float_types<T>::value> {};
|
|
44
|
+
|
|
45
|
+
template <class Backend>
|
|
46
|
+
struct other_backend
|
|
47
|
+
{
|
|
48
|
+
using type = typename std::conditional<
|
|
49
|
+
std::is_same<number<Backend>, number<Backend, et_on> >::value,
|
|
50
|
+
number<Backend, et_off>, number<Backend, et_on> >::type;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
template <class B, class V>
|
|
54
|
+
struct number_from_backend
|
|
55
|
+
{
|
|
56
|
+
using type = typename std::conditional<
|
|
57
|
+
std::is_convertible<V, number<B> >::value,
|
|
58
|
+
number<B>,
|
|
59
|
+
typename other_backend<B>::type>::type;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template <bool b, class T, class U>
|
|
63
|
+
struct is_first_backend_imp : public std::false_type {};
|
|
64
|
+
|
|
65
|
+
template <class T, class U>
|
|
66
|
+
struct is_first_backend_imp<true, T, U> : public std::integral_constant < bool, std::is_convertible<U, number<T, et_on> >::value || std::is_convertible<U, number<T, et_off> >::value> {};
|
|
67
|
+
|
|
68
|
+
template <class T, class U>
|
|
69
|
+
struct is_first_backend : is_first_backend_imp<is_backend<T>::value, T, U>
|
|
70
|
+
{};
|
|
71
|
+
|
|
72
|
+
template <bool b, class T, class U>
|
|
73
|
+
struct is_second_backend_imp
|
|
74
|
+
{
|
|
75
|
+
static constexpr bool value = false;
|
|
76
|
+
};
|
|
77
|
+
template <class T, class U>
|
|
78
|
+
struct is_second_backend_imp<true, T, U>
|
|
79
|
+
{
|
|
80
|
+
static constexpr bool value = (std::is_convertible<T, number<U, et_on> >::value || std::is_convertible<T, number<U, et_off> >::value) && !is_first_backend<T, U>::value;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
template <class T, class U>
|
|
84
|
+
struct is_second_backend : is_second_backend_imp<is_backend<U>::value, T, U>
|
|
85
|
+
{};
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
} // namespace boost::multiprecision::detail
|
|
90
|
+
|
|
91
|
+
#endif // BOOST_MP_IS_BACKEND_HPP
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2015 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_IS_BYTE_CONTAINER_HPP
|
|
7
|
+
#define BOOST_IS_BYTE_CONTAINER_HPP
|
|
8
|
+
|
|
9
|
+
#include <iterator>
|
|
10
|
+
#include <type_traits>
|
|
11
|
+
|
|
12
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
13
|
+
|
|
14
|
+
template <class T>
|
|
15
|
+
struct has_member_const_iterator
|
|
16
|
+
{
|
|
17
|
+
template <class U>
|
|
18
|
+
static double check(U*, typename U::const_iterator* = nullptr);
|
|
19
|
+
static char check(...);
|
|
20
|
+
static T* get();
|
|
21
|
+
static constexpr bool value = sizeof(check(get())) == sizeof(double);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
template <class C, class Iterator>
|
|
26
|
+
struct is_byte_container_imp_2
|
|
27
|
+
{
|
|
28
|
+
using container_value_type = typename std::remove_cv<typename std::iterator_traits<typename C::const_iterator>::value_type>::type;
|
|
29
|
+
static constexpr bool value = boost::multiprecision::detail::is_integral<container_value_type>::value && (sizeof(container_value_type) == 1);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
template <class C>
|
|
33
|
+
struct is_byte_container_imp_2<C, void> : public std::false_type
|
|
34
|
+
{};
|
|
35
|
+
|
|
36
|
+
template <class C, bool b>
|
|
37
|
+
struct is_byte_container_imp : public is_byte_container_imp_2<C, typename C::const_iterator>
|
|
38
|
+
{
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
template <class C>
|
|
42
|
+
struct is_byte_container_imp<C, false> : public std::false_type
|
|
43
|
+
{};
|
|
44
|
+
|
|
45
|
+
template <class C>
|
|
46
|
+
struct is_byte_container : public is_byte_container_imp<C, has_member_const_iterator<C>::value>
|
|
47
|
+
{};
|
|
48
|
+
|
|
49
|
+
}}} // namespace boost::multiprecision::detail
|
|
50
|
+
|
|
51
|
+
#endif // BOOST_IS_BYTE_CONTAINER_HPP
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2018 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_IS_COMPLEX_HPP
|
|
7
|
+
#define BOOST_MP_IS_COMPLEX_HPP
|
|
8
|
+
|
|
9
|
+
#include <type_traits>
|
|
10
|
+
#include <complex>
|
|
11
|
+
|
|
12
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
13
|
+
|
|
14
|
+
template <class T> struct is_complex : public std::integral_constant<bool, false> {};
|
|
15
|
+
|
|
16
|
+
template <class T> struct is_complex<std::complex<T> > : public std::integral_constant<bool, true> {};
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
} // namespace boost::multiprecision::detail
|
|
21
|
+
|
|
22
|
+
#endif // BOOST_MP_IS_BACKEND_HPP
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2021 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_IS_CONVERTIBLE_ARITHMETIC_HPP
|
|
7
|
+
#define BOOST_IS_CONVERTIBLE_ARITHMETIC_HPP
|
|
8
|
+
|
|
9
|
+
#include <type_traits>
|
|
10
|
+
#include <boost/multiprecision/detail/number_base.hpp>
|
|
11
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
12
|
+
|
|
13
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
14
|
+
|
|
15
|
+
template <class V, class Backend>
|
|
16
|
+
struct is_convertible_arithmetic
|
|
17
|
+
{
|
|
18
|
+
static constexpr bool value = boost::multiprecision::detail::is_arithmetic<V>::value;
|
|
19
|
+
};
|
|
20
|
+
//
|
|
21
|
+
// For extension types, we don't *require* interoperability,
|
|
22
|
+
// so only enable it if we can convert the type to the backend
|
|
23
|
+
// losslessly, ie not via conversion to a narrower type.
|
|
24
|
+
// Note that backends with templated constructors/=operators
|
|
25
|
+
// will not be selected here, so these need to either specialize
|
|
26
|
+
// this trait, or provide a proper non-template constructor/=operator
|
|
27
|
+
// for the extension types it supports.
|
|
28
|
+
//
|
|
29
|
+
#ifdef BOOST_HAS_FLOAT128
|
|
30
|
+
template <class Backend>
|
|
31
|
+
struct is_convertible_arithmetic<float128_type, Backend>
|
|
32
|
+
{
|
|
33
|
+
static constexpr bool value = std::is_assignable<Backend, convertible_to<float128_type>>::value;
|
|
34
|
+
};
|
|
35
|
+
#endif
|
|
36
|
+
#ifdef BOOST_HAS_INT128
|
|
37
|
+
template <class Backend>
|
|
38
|
+
struct is_convertible_arithmetic<int128_type, Backend>
|
|
39
|
+
{
|
|
40
|
+
static constexpr bool value = std::is_assignable<Backend, convertible_to<int128_type>>::value;
|
|
41
|
+
};
|
|
42
|
+
template <class Backend>
|
|
43
|
+
struct is_convertible_arithmetic<uint128_type, Backend>
|
|
44
|
+
{
|
|
45
|
+
static constexpr bool value = std::is_assignable<Backend, convertible_to<uint128_type>>::value;
|
|
46
|
+
};
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
}}} // namespace boost::multiprecision::detail
|
|
50
|
+
|
|
51
|
+
#endif // BOOST_IS_BYTE_CONTAINER_HPP
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright Vicente J. Botet Escriba 2009-2011
|
|
3
|
+
// Copyright 2012 John Maddock. 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_IS_RESTRICTED_CONVERSION_HPP
|
|
8
|
+
#define BOOST_MP_IS_RESTRICTED_CONVERSION_HPP
|
|
9
|
+
|
|
10
|
+
#include <boost/multiprecision/traits/explicit_conversion.hpp>
|
|
11
|
+
#include <boost/multiprecision/detail/number_base.hpp>
|
|
12
|
+
|
|
13
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
14
|
+
|
|
15
|
+
template <class From, class To>
|
|
16
|
+
struct is_lossy_conversion
|
|
17
|
+
{
|
|
18
|
+
static constexpr bool category_conditional_is_true =
|
|
19
|
+
( (static_cast<boost::multiprecision::number_category_type>(number_category<From>::value) == number_kind_floating_point)
|
|
20
|
+
&& (static_cast<boost::multiprecision::number_category_type>(number_category<To >::value) == number_kind_integer))
|
|
21
|
+
|| ( (static_cast<boost::multiprecision::number_category_type>(number_category<From>::value) == number_kind_rational)
|
|
22
|
+
&& (static_cast<boost::multiprecision::number_category_type>(number_category<To >::value) == number_kind_integer))
|
|
23
|
+
|| ( (static_cast<boost::multiprecision::number_category_type>(number_category<From>::value) == number_kind_fixed_point)
|
|
24
|
+
&& (static_cast<boost::multiprecision::number_category_type>(number_category<To >::value) == number_kind_integer))
|
|
25
|
+
|| (static_cast<boost::multiprecision::number_category_type>(number_category<From>::value) == number_kind_unknown)
|
|
26
|
+
|| (static_cast<boost::multiprecision::number_category_type>(number_category<To >::value) == number_kind_unknown);
|
|
27
|
+
|
|
28
|
+
using type = typename std::conditional<category_conditional_is_true,
|
|
29
|
+
std::integral_constant<bool, true>,
|
|
30
|
+
std::integral_constant<bool, false>>::type;
|
|
31
|
+
|
|
32
|
+
static constexpr bool value = type::value;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
template <typename From, typename To>
|
|
36
|
+
struct is_restricted_conversion
|
|
37
|
+
{
|
|
38
|
+
using type = typename std::conditional<
|
|
39
|
+
((is_explicitly_convertible<From, To>::value && !std::is_convertible<From, To>::value) || is_lossy_conversion<From, To>::value),
|
|
40
|
+
std::integral_constant<bool, true>,
|
|
41
|
+
std::integral_constant<bool, false>>::type;
|
|
42
|
+
static constexpr const bool value = type::value;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
}}} // namespace boost::multiprecision::detail
|
|
46
|
+
|
|
47
|
+
#endif // BOOST_MP_IS_RESTRICTED_CONVERSION_HPP
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2018 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_IS_VARIABLE_PRECISION_HPP
|
|
7
|
+
#define BOOST_MP_IS_VARIABLE_PRECISION_HPP
|
|
8
|
+
|
|
9
|
+
#include <boost/multiprecision/detail/number_base.hpp>
|
|
10
|
+
|
|
11
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
12
|
+
|
|
13
|
+
template <class Backend>
|
|
14
|
+
struct is_variable_precision : public std::integral_constant<bool, false>
|
|
15
|
+
{};
|
|
16
|
+
|
|
17
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
18
|
+
struct is_variable_precision<number<Backend, ExpressionTemplates> > : public is_variable_precision<Backend>
|
|
19
|
+
{};
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
} // namespace boost::multiprecision::detail
|
|
24
|
+
|
|
25
|
+
#endif // BOOST_MP_IS_BACKEND_HPP
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2012 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_MAX_DIGITS10_HPP
|
|
7
|
+
#define BOOST_MP_MAX_DIGITS10_HPP
|
|
8
|
+
|
|
9
|
+
namespace boost {
|
|
10
|
+
namespace multiprecision {
|
|
11
|
+
namespace detail {
|
|
12
|
+
|
|
13
|
+
template <unsigned digits>
|
|
14
|
+
struct calc_max_digits10
|
|
15
|
+
{
|
|
16
|
+
static constexpr unsigned max_digits_10(unsigned d)
|
|
17
|
+
{
|
|
18
|
+
//
|
|
19
|
+
// We need ceil(log10(2) * d) + 1 decimal places to
|
|
20
|
+
// guarantee round tripping, see: https://www.exploringbinary.com/number-of-digits-required-for-round-trip-conversions/
|
|
21
|
+
// and references therein. Since log10(2) is irrational, then d*log10(2) will
|
|
22
|
+
// never be exactly an integer so we can replace by trunc(log10(2) * d) + 2
|
|
23
|
+
// and avoid the call to ceil:
|
|
24
|
+
//
|
|
25
|
+
return static_cast<unsigned>(0.301029995663981195213738894724493026768189881462108541310 * d) + 2;
|
|
26
|
+
}
|
|
27
|
+
static constexpr unsigned value = max_digits_10(digits);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
template <std::size_t digits>
|
|
31
|
+
struct calc_max_digits10_s
|
|
32
|
+
{
|
|
33
|
+
static constexpr std::size_t max_digits_10(std::size_t d)
|
|
34
|
+
{
|
|
35
|
+
//
|
|
36
|
+
// We need ceil(log10(2) * d) + 1 decimal places to
|
|
37
|
+
// guarantee round tripping, see: https://www.exploringbinary.com/number-of-digits-required-for-round-trip-conversions/
|
|
38
|
+
// and references therein. Since log10(2) is irrational, then d*log10(2) will
|
|
39
|
+
// never be exactly an integer so we can replace by trunc(log10(2) * d) + 2
|
|
40
|
+
// and avoid the call to ceil:
|
|
41
|
+
//
|
|
42
|
+
return static_cast<std::size_t>(static_cast<std::size_t>(0.301029995663981195213738894724493026768189881462108541310 * static_cast<double>(d)) + 2u);
|
|
43
|
+
}
|
|
44
|
+
static constexpr std::size_t value = max_digits_10(digits);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
template <unsigned digits>
|
|
48
|
+
struct calc_digits10
|
|
49
|
+
{
|
|
50
|
+
static constexpr unsigned digits_10(unsigned d)
|
|
51
|
+
{
|
|
52
|
+
//
|
|
53
|
+
// We need floor(log10(2) * (d-1)), see:
|
|
54
|
+
// https://www.exploringbinary.com/number-of-digits-required-for-round-trip-conversions/
|
|
55
|
+
// and references therein.
|
|
56
|
+
//
|
|
57
|
+
return static_cast<unsigned>(0.301029995663981195213738894724493026768189881462108541310 * static_cast<double>(d - 1u));
|
|
58
|
+
}
|
|
59
|
+
static constexpr unsigned value = digits_10(digits);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template <std::size_t digits>
|
|
63
|
+
struct calc_digits10_s
|
|
64
|
+
{
|
|
65
|
+
static constexpr std::size_t digits_10(std::size_t d)
|
|
66
|
+
{
|
|
67
|
+
//
|
|
68
|
+
// We need floor(log10(2) * (d-1)), see:
|
|
69
|
+
// https://www.exploringbinary.com/number-of-digits-required-for-round-trip-conversions/
|
|
70
|
+
// and references therein.
|
|
71
|
+
//
|
|
72
|
+
return static_cast<std::size_t>(0.301029995663981195213738894724493026768189881462108541310 * static_cast<double>(d - 1u));
|
|
73
|
+
}
|
|
74
|
+
static constexpr std::size_t value = digits_10(digits);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
}}} // namespace boost::multiprecision::detail
|
|
78
|
+
|
|
79
|
+
#endif
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2012-2022 John Maddock.
|
|
3
|
+
// Copyright 2022 Matt Borland. Distributed under the Boost
|
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
|
5
|
+
// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
|
|
6
|
+
|
|
7
|
+
#ifndef BOOST_MP_STD_INTEGER_TRAITS_HPP
|
|
8
|
+
#define BOOST_MP_STD_INTEGER_TRAITS_HPP
|
|
9
|
+
|
|
10
|
+
#include <type_traits>
|
|
11
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
12
|
+
|
|
13
|
+
namespace boost {
|
|
14
|
+
namespace multiprecision {
|
|
15
|
+
namespace detail {
|
|
16
|
+
|
|
17
|
+
template <class T>
|
|
18
|
+
struct is_signed : public std::is_signed<T> {};
|
|
19
|
+
template <class T>
|
|
20
|
+
struct is_unsigned : public std::is_unsigned<T> {};
|
|
21
|
+
template <class T>
|
|
22
|
+
struct is_integral : public std::is_integral<T> {};
|
|
23
|
+
template <class T>
|
|
24
|
+
struct is_arithmetic : public std::is_arithmetic<T> {};
|
|
25
|
+
template <class T>
|
|
26
|
+
struct make_unsigned : public std::make_unsigned<T> {};
|
|
27
|
+
template <class T>
|
|
28
|
+
struct make_signed : public std::make_signed<T> {};
|
|
29
|
+
|
|
30
|
+
#ifdef BOOST_HAS_INT128
|
|
31
|
+
|
|
32
|
+
template <>
|
|
33
|
+
struct is_signed<int128_type> : public std::true_type {};
|
|
34
|
+
template <>
|
|
35
|
+
struct is_signed<uint128_type> : public std::false_type {};
|
|
36
|
+
template <>
|
|
37
|
+
struct is_unsigned<int128_type> : public std::false_type {};
|
|
38
|
+
template <>
|
|
39
|
+
struct is_unsigned<uint128_type> : public std::true_type {};
|
|
40
|
+
template <>
|
|
41
|
+
struct is_integral<int128_type> : public std::true_type {};
|
|
42
|
+
template <>
|
|
43
|
+
struct is_integral<uint128_type> : public std::true_type {};
|
|
44
|
+
template <>
|
|
45
|
+
struct is_arithmetic<int128_type> : public std::true_type {};
|
|
46
|
+
template <>
|
|
47
|
+
struct is_arithmetic<uint128_type> : public std::true_type {};
|
|
48
|
+
template <>
|
|
49
|
+
struct make_unsigned<int128_type>
|
|
50
|
+
{
|
|
51
|
+
using type = uint128_type;
|
|
52
|
+
};
|
|
53
|
+
template <>
|
|
54
|
+
struct make_unsigned<uint128_type>
|
|
55
|
+
{
|
|
56
|
+
using type = uint128_type;
|
|
57
|
+
};
|
|
58
|
+
template <>
|
|
59
|
+
struct make_signed<int128_type>
|
|
60
|
+
{
|
|
61
|
+
using type = int128_type;
|
|
62
|
+
};
|
|
63
|
+
template <>
|
|
64
|
+
struct make_signed<uint128_type>
|
|
65
|
+
{
|
|
66
|
+
using type = int128_type;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
// C++17-esque helpers
|
|
72
|
+
#if defined(__cpp_variable_templates) && __cpp_variable_templates >= 201304L
|
|
73
|
+
template <typename T>
|
|
74
|
+
BOOST_INLINE_CONSTEXPR bool is_signed_v = is_signed<T>::value;
|
|
75
|
+
template <typename T>
|
|
76
|
+
BOOST_INLINE_CONSTEXPR bool is_unsigned_v = is_unsigned<T>::value;
|
|
77
|
+
template <typename T>
|
|
78
|
+
BOOST_INLINE_CONSTEXPR bool is_integral_v = is_integral<T>::value;
|
|
79
|
+
template <typename T>
|
|
80
|
+
BOOST_INLINE_CONSTEXPR bool is_arithmetic_v = is_arithmetic<T>::value;
|
|
81
|
+
#endif
|
|
82
|
+
|
|
83
|
+
template <typename T>
|
|
84
|
+
using make_unsigned_t = typename make_unsigned<T>::type;
|
|
85
|
+
template <typename T>
|
|
86
|
+
using make_signed_t = typename make_signed<T>::type;
|
|
87
|
+
|
|
88
|
+
}}} // namespace boost::multiprecision::detail
|
|
89
|
+
|
|
90
|
+
#endif
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2020 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_TRANSCENDENTAL_REDUCTION_TYPE_HPP
|
|
7
|
+
#define BOOST_MP_TRANSCENDENTAL_REDUCTION_TYPE_HPP
|
|
8
|
+
|
|
9
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
10
|
+
|
|
11
|
+
template <class T>
|
|
12
|
+
struct transcendental_reduction_type
|
|
13
|
+
{
|
|
14
|
+
using type = T;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
} // namespace boost::multiprecision::detail
|
|
20
|
+
|
|
21
|
+
#endif // BOOST_MP_TRANSCENDENTAL_REDUCTION_TYPE_HPP
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Boost version.hpp configuration header file ------------------------------//
|
|
2
|
+
|
|
3
|
+
// (C) Copyright John maddock 1999. 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
|
+
// See http://www.boost.org/libs/config for documentation
|
|
8
|
+
|
|
9
|
+
#ifndef BOOST_VERSION_HPP
|
|
10
|
+
#define BOOST_VERSION_HPP
|
|
11
|
+
|
|
12
|
+
//
|
|
13
|
+
// Caution: this is the only Boost header that is guaranteed
|
|
14
|
+
// to change with every Boost release. Including this header
|
|
15
|
+
// will cause a recompile every time a new Boost version is
|
|
16
|
+
// used.
|
|
17
|
+
//
|
|
18
|
+
// BOOST_VERSION % 100 is the patch level
|
|
19
|
+
// BOOST_VERSION / 100 % 1000 is the minor version
|
|
20
|
+
// BOOST_VERSION / 100000 is the major version
|
|
21
|
+
|
|
22
|
+
#define BOOST_VERSION 108600
|
|
23
|
+
|
|
24
|
+
//
|
|
25
|
+
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
|
|
26
|
+
// but as a *string* in the form "x_y[_z]" where x is the major version
|
|
27
|
+
// number, y is the minor version number, and z is the patch level if not 0.
|
|
28
|
+
// This is used by <config/auto_link.hpp> to select which library version to link to.
|
|
29
|
+
|
|
30
|
+
#define BOOST_LIB_VERSION "1_86"
|
|
31
|
+
|
|
32
|
+
#endif
|