mqt-core 3.3.2__cp314-cp314t-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.cp314t-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp314t-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.cp314t-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.cp314t-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,313 @@
|
|
|
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_DETAIL_PRECISION_HPP
|
|
7
|
+
#define BOOST_MP_DETAIL_PRECISION_HPP
|
|
8
|
+
|
|
9
|
+
#include <boost/multiprecision/traits/is_variable_precision.hpp>
|
|
10
|
+
#include <boost/multiprecision/detail/number_base.hpp>
|
|
11
|
+
#include <boost/multiprecision/detail/digits.hpp>
|
|
12
|
+
#include <boost/multiprecision/detail/assert.hpp>
|
|
13
|
+
|
|
14
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
15
|
+
|
|
16
|
+
template <class B, boost::multiprecision::expression_template_option ET>
|
|
17
|
+
inline constexpr unsigned current_precision_of_last_chance_imp(const boost::multiprecision::number<B, ET>&, const std::integral_constant<int, 0>&)
|
|
18
|
+
{
|
|
19
|
+
return std::numeric_limits<boost::multiprecision::number<B, ET> >::digits10;
|
|
20
|
+
}
|
|
21
|
+
template <class B, boost::multiprecision::expression_template_option ET>
|
|
22
|
+
inline BOOST_MP_CXX14_CONSTEXPR unsigned current_precision_of_last_chance_imp(const boost::multiprecision::number<B, ET>& val, const std::integral_constant<int, 1>&)
|
|
23
|
+
{
|
|
24
|
+
//
|
|
25
|
+
// We have an arbitrary precision integer, take it's "precision" as the
|
|
26
|
+
// location of the most-significant-bit less the location of the
|
|
27
|
+
// least-significant-bit, ie the number of bits required to represent the
|
|
28
|
+
// the value assuming we will have an exponent to shift things by:
|
|
29
|
+
//
|
|
30
|
+
return static_cast<unsigned>(val.is_zero() ? 1 : 1 + digits2_2_10(msb(abs(val)) - lsb(abs(val)) + 1));
|
|
31
|
+
}
|
|
32
|
+
template <class B, boost::multiprecision::expression_template_option ET>
|
|
33
|
+
inline BOOST_MP_CXX14_CONSTEXPR unsigned current_precision_of_last_chance_imp(const boost::multiprecision::number<B, ET>& val, const std::integral_constant<int, 2>&)
|
|
34
|
+
{
|
|
35
|
+
//
|
|
36
|
+
// We have an arbitrary precision rational, take it's "precision" as the
|
|
37
|
+
// the larger of the "precision" of numerator and denominator:
|
|
38
|
+
//
|
|
39
|
+
return (std::max)(current_precision_of_last_chance_imp(numerator(val), std::integral_constant<int, 1>()), current_precision_of_last_chance_imp(denominator(val), std::integral_constant<int, 1>()));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
template <class B, boost::multiprecision::expression_template_option ET>
|
|
43
|
+
inline BOOST_MP_CXX14_CONSTEXPR unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& n, const std::integral_constant<bool, true>&)
|
|
44
|
+
{
|
|
45
|
+
return n.precision();
|
|
46
|
+
}
|
|
47
|
+
template <class B, boost::multiprecision::expression_template_option ET>
|
|
48
|
+
inline constexpr unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& val, const std::integral_constant<bool, false>&)
|
|
49
|
+
{
|
|
50
|
+
using tag = std::integral_constant<int,
|
|
51
|
+
std::numeric_limits<boost::multiprecision::number<B, ET> >::is_specialized &&
|
|
52
|
+
std::numeric_limits<boost::multiprecision::number<B, ET> >::is_integer &&
|
|
53
|
+
std::numeric_limits<boost::multiprecision::number<B, ET> >::is_exact &&
|
|
54
|
+
!std::numeric_limits<boost::multiprecision::number<B, ET> >::is_modulo
|
|
55
|
+
? 1
|
|
56
|
+
: boost::multiprecision::number_category<boost::multiprecision::number<B, ET> >::value == boost::multiprecision::number_kind_rational ? 2
|
|
57
|
+
: 0>;
|
|
58
|
+
return current_precision_of_last_chance_imp(val, tag());
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template <class R, class Terminal>
|
|
62
|
+
inline constexpr unsigned current_precision_of_terminal(const Terminal&)
|
|
63
|
+
{
|
|
64
|
+
return (R::thread_default_variable_precision_options() >= variable_precision_options::preserve_all_precision)
|
|
65
|
+
? (std::numeric_limits<Terminal>::min_exponent ? std::numeric_limits<Terminal>::digits10 : 1 + std::numeric_limits<Terminal>::digits10) : 0;
|
|
66
|
+
}
|
|
67
|
+
template <class R, class Terminal>
|
|
68
|
+
inline constexpr unsigned current_precision_of(const Terminal& r)
|
|
69
|
+
{
|
|
70
|
+
return current_precision_of_terminal<R>(R::canonical_value(r));
|
|
71
|
+
}
|
|
72
|
+
template <class R>
|
|
73
|
+
inline constexpr unsigned current_precision_of(const float&)
|
|
74
|
+
{
|
|
75
|
+
using list = typename R::backend_type::float_types;
|
|
76
|
+
using first_float = typename std::tuple_element<0, list>::type;
|
|
77
|
+
|
|
78
|
+
return (R::thread_default_variable_precision_options() >= variable_precision_options::preserve_all_precision) ? std::numeric_limits<first_float>::digits10 : 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template <class R, class Terminal, std::size_t N>
|
|
82
|
+
inline constexpr unsigned current_precision_of(const Terminal (&)[N])
|
|
83
|
+
{ // For string literals:
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
template <class R, class B, boost::multiprecision::expression_template_option ET>
|
|
88
|
+
inline constexpr unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& n, const std::true_type&)
|
|
89
|
+
{
|
|
90
|
+
return std::is_same<R, boost::multiprecision::number<B, ET> >::value
|
|
91
|
+
|| (std::is_same<typename R::value_type, boost::multiprecision::number<B, ET> >::value && (R::thread_default_variable_precision_options() >= variable_precision_options::preserve_component_precision))
|
|
92
|
+
|| (R::thread_default_variable_precision_options() >= variable_precision_options::preserve_all_precision)
|
|
93
|
+
? current_precision_of_imp(n, boost::multiprecision::detail::is_variable_precision<boost::multiprecision::number<B, ET> >()) : 0;
|
|
94
|
+
}
|
|
95
|
+
template <class R, class B, boost::multiprecision::expression_template_option ET>
|
|
96
|
+
inline constexpr unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& n, const std::false_type&)
|
|
97
|
+
{
|
|
98
|
+
return std::is_same<R, boost::multiprecision::number<B, ET> >::value
|
|
99
|
+
|| std::is_same<typename R::value_type, boost::multiprecision::number<B, ET> >::value
|
|
100
|
+
? current_precision_of_imp(n, boost::multiprecision::detail::is_variable_precision<boost::multiprecision::number<B, ET> >()) : 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
template <class R, class B, boost::multiprecision::expression_template_option ET>
|
|
104
|
+
inline constexpr unsigned current_precision_of(const boost::multiprecision::number<B, ET>& n)
|
|
105
|
+
{
|
|
106
|
+
return current_precision_of_imp<R>(n, boost::multiprecision::detail::is_variable_precision<R>());
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
template <class R, class tag, class Arg1>
|
|
110
|
+
inline constexpr unsigned current_precision_of(const expression<tag, Arg1, void, void, void>& expr)
|
|
111
|
+
{
|
|
112
|
+
return current_precision_of<R>(expr.left_ref());
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
template <class R, class Arg1>
|
|
116
|
+
inline constexpr unsigned current_precision_of(const expression<terminal, Arg1, void, void, void>& expr)
|
|
117
|
+
{
|
|
118
|
+
return current_precision_of<R>(expr.value());
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
template <class R, class tag, class Arg1, class Arg2>
|
|
122
|
+
inline constexpr unsigned current_precision_of(const expression<tag, Arg1, Arg2, void, void>& expr)
|
|
123
|
+
{
|
|
124
|
+
return (std::max)(current_precision_of<R>(expr.left_ref()), current_precision_of<R>(expr.right_ref()));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
template <class R, class tag, class Arg1, class Arg2, class Arg3>
|
|
128
|
+
inline constexpr unsigned current_precision_of(const expression<tag, Arg1, Arg2, Arg3, void>& expr)
|
|
129
|
+
{
|
|
130
|
+
return (std::max)((std::max)(current_precision_of<R>(expr.left_ref()), current_precision_of<R>(expr.right_ref())), current_precision_of<R>(expr.middle_ref()));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
#ifdef BOOST_MSVC
|
|
134
|
+
#pragma warning(push)
|
|
135
|
+
#pragma warning(disable : 4130)
|
|
136
|
+
#endif
|
|
137
|
+
|
|
138
|
+
template <class R, bool = boost::multiprecision::detail::is_variable_precision<R>::value>
|
|
139
|
+
struct scoped_default_precision
|
|
140
|
+
{
|
|
141
|
+
template <class T>
|
|
142
|
+
constexpr scoped_default_precision(const T&) {}
|
|
143
|
+
template <class T, class U>
|
|
144
|
+
constexpr scoped_default_precision(const T&, const U&) {}
|
|
145
|
+
template <class T, class U, class V>
|
|
146
|
+
constexpr scoped_default_precision(const T&, const U&, const V&) {}
|
|
147
|
+
|
|
148
|
+
//
|
|
149
|
+
// This function is never called: in C++17 it won't be compiled either:
|
|
150
|
+
//
|
|
151
|
+
unsigned precision() const
|
|
152
|
+
{
|
|
153
|
+
BOOST_MP_ASSERT("This function should never be called!!" == nullptr);
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
#ifdef BOOST_MSVC
|
|
159
|
+
#pragma warning(pop)
|
|
160
|
+
#endif
|
|
161
|
+
|
|
162
|
+
template <class R>
|
|
163
|
+
struct scoped_default_precision<R, true>
|
|
164
|
+
{
|
|
165
|
+
template <class T>
|
|
166
|
+
BOOST_MP_CXX14_CONSTEXPR scoped_default_precision(const T& a)
|
|
167
|
+
{
|
|
168
|
+
init(has_uniform_precision() ? R::thread_default_precision() : (std::max)(R::thread_default_precision(), current_precision_of<R>(a)));
|
|
169
|
+
}
|
|
170
|
+
template <class T, class U>
|
|
171
|
+
BOOST_MP_CXX14_CONSTEXPR scoped_default_precision(const T& a, const U& b)
|
|
172
|
+
{
|
|
173
|
+
init(has_uniform_precision() ? R::thread_default_precision() : (std::max)(R::thread_default_precision(), (std::max)(current_precision_of<R>(a), current_precision_of<R>(b))));
|
|
174
|
+
}
|
|
175
|
+
template <class T, class U, class V>
|
|
176
|
+
BOOST_MP_CXX14_CONSTEXPR scoped_default_precision(const T& a, const U& b, const V& c)
|
|
177
|
+
{
|
|
178
|
+
init(has_uniform_precision() ? R::thread_default_precision() : (std::max)((std::max)(current_precision_of<R>(a), current_precision_of<R>(b)), (std::max)(R::thread_default_precision(), current_precision_of<R>(c))));
|
|
179
|
+
}
|
|
180
|
+
~scoped_default_precision()
|
|
181
|
+
{
|
|
182
|
+
if(m_new_prec != m_old_prec)
|
|
183
|
+
R::thread_default_precision(m_old_prec);
|
|
184
|
+
}
|
|
185
|
+
BOOST_MP_CXX14_CONSTEXPR unsigned precision() const
|
|
186
|
+
{
|
|
187
|
+
return m_new_prec;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static constexpr bool has_uniform_precision()
|
|
191
|
+
{
|
|
192
|
+
return R::thread_default_variable_precision_options() <= boost::multiprecision::variable_precision_options::assume_uniform_precision;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private:
|
|
196
|
+
BOOST_MP_CXX14_CONSTEXPR void init(unsigned p)
|
|
197
|
+
{
|
|
198
|
+
m_old_prec = R::thread_default_precision();
|
|
199
|
+
if (p && (p != m_old_prec))
|
|
200
|
+
{
|
|
201
|
+
R::thread_default_precision(p);
|
|
202
|
+
m_new_prec = p;
|
|
203
|
+
}
|
|
204
|
+
else
|
|
205
|
+
m_new_prec = m_old_prec;
|
|
206
|
+
}
|
|
207
|
+
unsigned m_old_prec, m_new_prec;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
template <class T>
|
|
211
|
+
inline BOOST_MP_CXX14_CONSTEXPR void maybe_promote_precision(T*, const std::integral_constant<bool, false>&) {}
|
|
212
|
+
|
|
213
|
+
template <class T>
|
|
214
|
+
inline BOOST_MP_CXX14_CONSTEXPR void maybe_promote_precision(T* obj, const std::integral_constant<bool, true>&)
|
|
215
|
+
{
|
|
216
|
+
if (obj->precision() != T::thread_default_precision())
|
|
217
|
+
{
|
|
218
|
+
obj->precision(T::thread_default_precision());
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
template <class T>
|
|
223
|
+
inline BOOST_MP_CXX14_CONSTEXPR void maybe_promote_precision(T* obj)
|
|
224
|
+
{
|
|
225
|
+
maybe_promote_precision(obj, std::integral_constant<bool, boost::multiprecision::detail::is_variable_precision<T>::value>());
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
#ifndef BOOST_NO_CXX17_IF_CONSTEXPR
|
|
229
|
+
#define BOOST_MP_CONSTEXPR_IF_VARIABLE_PRECISION(T) \
|
|
230
|
+
if \
|
|
231
|
+
constexpr(boost::multiprecision::detail::is_variable_precision<T>::value)
|
|
232
|
+
#else
|
|
233
|
+
#define BOOST_MP_CONSTEXPR_IF_VARIABLE_PRECISION(T) if (boost::multiprecision::detail::is_variable_precision<T>::value)
|
|
234
|
+
#endif
|
|
235
|
+
|
|
236
|
+
template <class T, bool = boost::multiprecision::detail::is_variable_precision<T>::value>
|
|
237
|
+
struct scoped_target_precision
|
|
238
|
+
{
|
|
239
|
+
variable_precision_options opts;
|
|
240
|
+
scoped_target_precision() : opts(T::thread_default_variable_precision_options())
|
|
241
|
+
{
|
|
242
|
+
T::thread_default_variable_precision_options(variable_precision_options::preserve_target_precision);
|
|
243
|
+
}
|
|
244
|
+
~scoped_target_precision()
|
|
245
|
+
{
|
|
246
|
+
T::thread_default_variable_precision_options(opts);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
template <class T>
|
|
250
|
+
struct scoped_target_precision<T, false> {};
|
|
251
|
+
|
|
252
|
+
template <class T, bool = boost::multiprecision::detail::is_variable_precision<T>::value>
|
|
253
|
+
struct scoped_source_precision
|
|
254
|
+
{
|
|
255
|
+
variable_precision_options opts;
|
|
256
|
+
scoped_source_precision() : opts(T::thread_default_variable_precision_options())
|
|
257
|
+
{
|
|
258
|
+
T::thread_default_variable_precision_options(variable_precision_options::preserve_source_precision);
|
|
259
|
+
}
|
|
260
|
+
~scoped_source_precision()
|
|
261
|
+
{
|
|
262
|
+
T::thread_default_variable_precision_options(opts);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
template <class T>
|
|
266
|
+
struct scoped_source_precision<T, false> {};
|
|
267
|
+
|
|
268
|
+
template <class T, bool = boost::multiprecision::detail::is_variable_precision<T>::value>
|
|
269
|
+
struct scoped_precision_options
|
|
270
|
+
{
|
|
271
|
+
unsigned saved_digits;
|
|
272
|
+
boost::multiprecision::variable_precision_options saved_options;
|
|
273
|
+
|
|
274
|
+
scoped_precision_options(unsigned digits)
|
|
275
|
+
: saved_digits(T::thread_default_precision()), saved_options(T::thread_default_variable_precision_options())
|
|
276
|
+
{
|
|
277
|
+
T::thread_default_precision(digits);
|
|
278
|
+
}
|
|
279
|
+
scoped_precision_options(unsigned digits, variable_precision_options opts)
|
|
280
|
+
: saved_digits(T::thread_default_precision()), saved_options(T::thread_default_variable_precision_options())
|
|
281
|
+
{
|
|
282
|
+
T::thread_default_precision(digits);
|
|
283
|
+
T::thread_default_variable_precision_options(opts);
|
|
284
|
+
}
|
|
285
|
+
template <class U>
|
|
286
|
+
scoped_precision_options(const U& u)
|
|
287
|
+
: saved_digits(T::thread_default_precision()), saved_options(T::thread_default_variable_precision_options())
|
|
288
|
+
{
|
|
289
|
+
T::thread_default_precision(u.precision());
|
|
290
|
+
T::thread_default_variable_precision_options(U::thread_default_variable_precision_options());
|
|
291
|
+
}
|
|
292
|
+
~scoped_precision_options()
|
|
293
|
+
{
|
|
294
|
+
T::thread_default_variable_precision_options(saved_options);
|
|
295
|
+
T::thread_default_precision(saved_digits);
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
template <class T>
|
|
300
|
+
struct scoped_precision_options<T, false>
|
|
301
|
+
{
|
|
302
|
+
scoped_precision_options(unsigned) {}
|
|
303
|
+
scoped_precision_options(unsigned, variable_precision_options) {}
|
|
304
|
+
template <class U>
|
|
305
|
+
scoped_precision_options(const U&) {}
|
|
306
|
+
~scoped_precision_options() {}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
} // namespace boost::multiprecision::detail
|
|
312
|
+
|
|
313
|
+
#endif // BOOST_MP_DETAIL_PRECISION_HPP
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2012 John Maddock.
|
|
3
|
+
// Copyright Christopher Kormanyos 2013. 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
|
+
|
|
8
|
+
#ifndef BOOST_MP_DETAIL_REBIND_HPP
|
|
9
|
+
#define BOOST_MP_DETAIL_REBIND_HPP
|
|
10
|
+
|
|
11
|
+
namespace boost { namespace multiprecision { namespace backends { namespace detail {
|
|
12
|
+
template <class value_type, class my_allocator>
|
|
13
|
+
struct rebind
|
|
14
|
+
{
|
|
15
|
+
using type = typename std::allocator_traits<my_allocator>::template rebind_alloc<value_type>;
|
|
16
|
+
};
|
|
17
|
+
}}}} // namespace boost::multiprecision::backends::detail
|
|
18
|
+
|
|
19
|
+
#endif // BOOST_MP_DETAIL_REBIND_HPP
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2010 - 2021 Douglas Gregor
|
|
3
|
+
// Copyright 2021 Matt Borland.
|
|
4
|
+
// Distributed under the Boost Software License, Version 1.0.
|
|
5
|
+
// See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
|
|
6
|
+
//
|
|
7
|
+
// Used to support configuration options depending on standalone context
|
|
8
|
+
// by providing either required support or disabling functionality
|
|
9
|
+
|
|
10
|
+
#ifndef BOOST_MP_STANDALONE_CONFIG_HPP
|
|
11
|
+
#define BOOST_MP_STANDALONE_CONFIG_HPP
|
|
12
|
+
|
|
13
|
+
#include <climits>
|
|
14
|
+
|
|
15
|
+
// Boost.Config is dependency free so it is considered a requirement to use Boost.Multiprecision in standalone mode
|
|
16
|
+
#ifdef __has_include
|
|
17
|
+
# if __has_include(<boost/config.hpp>)
|
|
18
|
+
# include <boost/config.hpp>
|
|
19
|
+
# include <boost/config/workaround.hpp>
|
|
20
|
+
# else
|
|
21
|
+
# error "Boost.Config is considered a requirement to use Boost.Multiprecision in standalone mode. A package is provided at https://github.com/boostorg/multiprecision/releases"
|
|
22
|
+
# endif
|
|
23
|
+
#else
|
|
24
|
+
// Provides the less helpful fatal error: 'boost/config.hpp' file not found if not available
|
|
25
|
+
# include <boost/config.hpp>
|
|
26
|
+
# include <boost/config/workaround.hpp>
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
// Minimum language standard transition
|
|
30
|
+
#ifdef _MSVC_LANG
|
|
31
|
+
# if _MSVC_LANG < 201402L
|
|
32
|
+
# pragma warning("The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)");
|
|
33
|
+
# endif
|
|
34
|
+
#else
|
|
35
|
+
# if __cplusplus < 201402L
|
|
36
|
+
# warning "The minimum language standard to use Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)"
|
|
37
|
+
# endif
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
// If any of the most frequently used boost headers are missing assume that standalone mode is supposed to be used
|
|
41
|
+
#ifdef __has_include
|
|
42
|
+
#if !__has_include(<boost/assert.hpp>) || !__has_include(<boost/lexical_cast.hpp>) || \
|
|
43
|
+
!__has_include(<boost/throw_exception.hpp>) || !__has_include(<boost/predef/other/endian.h>)
|
|
44
|
+
# ifndef BOOST_MP_STANDALONE
|
|
45
|
+
# define BOOST_MP_STANDALONE
|
|
46
|
+
# endif
|
|
47
|
+
#endif
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
#ifndef BOOST_MP_STANDALONE
|
|
51
|
+
|
|
52
|
+
#include <boost/integer.hpp>
|
|
53
|
+
#include <boost/integer_traits.hpp>
|
|
54
|
+
|
|
55
|
+
// Required typedefs for interoperability with standalone mode
|
|
56
|
+
#if defined(BOOST_HAS_INT128) && defined(__cplusplus)
|
|
57
|
+
namespace boost { namespace multiprecision {
|
|
58
|
+
using int128_type = boost::int128_type;
|
|
59
|
+
using uint128_type = boost::uint128_type;
|
|
60
|
+
}}
|
|
61
|
+
#endif
|
|
62
|
+
#if defined(BOOST_HAS_FLOAT128) && defined(__cplusplus)
|
|
63
|
+
namespace boost { namespace multiprecision {
|
|
64
|
+
using float128_type = boost::float128_type;
|
|
65
|
+
}}
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
// Boost.Math available by default
|
|
69
|
+
#define BOOST_MP_MATH_AVAILABLE
|
|
70
|
+
|
|
71
|
+
#else // Standalone mode
|
|
72
|
+
|
|
73
|
+
#ifdef BOOST_MATH_STANDALONE
|
|
74
|
+
# define BOOST_MP_MATH_AVAILABLE
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
#ifndef BOOST_MP_MATH_AVAILABLE
|
|
78
|
+
# define BOOST_MATH_INSTRUMENT_CODE(x)
|
|
79
|
+
#endif
|
|
80
|
+
|
|
81
|
+
// Prevent Macro sub
|
|
82
|
+
#ifndef BOOST_PREVENT_MACRO_SUBSTITUTION
|
|
83
|
+
# define BOOST_PREVENT_MACRO_SUBSTITUTION
|
|
84
|
+
#endif
|
|
85
|
+
|
|
86
|
+
#if defined(BOOST_HAS_INT128) && defined(__cplusplus)
|
|
87
|
+
namespace boost { namespace multiprecision {
|
|
88
|
+
# ifdef __GNUC__
|
|
89
|
+
__extension__ typedef __int128 int128_type;
|
|
90
|
+
__extension__ typedef unsigned __int128 uint128_type;
|
|
91
|
+
# else
|
|
92
|
+
typedef __int128 int128_type;
|
|
93
|
+
typedef unsigned __int128 uint128_type;
|
|
94
|
+
# endif
|
|
95
|
+
}}
|
|
96
|
+
|
|
97
|
+
#endif
|
|
98
|
+
// same again for __float128:
|
|
99
|
+
#if defined(BOOST_HAS_FLOAT128) && defined(__cplusplus)
|
|
100
|
+
namespace boost { namespace multiprecision {
|
|
101
|
+
# ifdef __GNUC__
|
|
102
|
+
__extension__ typedef __float128 float128_type;
|
|
103
|
+
# else
|
|
104
|
+
typedef __float128 float128_type;
|
|
105
|
+
# endif
|
|
106
|
+
}}
|
|
107
|
+
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
#endif // BOOST_MP_STANDALONE
|
|
111
|
+
|
|
112
|
+
// Workarounds for numeric limits on old compilers
|
|
113
|
+
#ifdef BOOST_HAS_INT128
|
|
114
|
+
# ifndef INT128_MAX
|
|
115
|
+
# define INT128_MAX static_cast<boost::multiprecision::int128_type>((static_cast<boost::multiprecision::uint128_type>(1) << ((__SIZEOF_INT128__ * __CHAR_BIT__) - 1)) - 1)
|
|
116
|
+
# endif
|
|
117
|
+
# ifndef INT128_MIN
|
|
118
|
+
# define INT128_MIN (-INT128_MAX - 1)
|
|
119
|
+
# endif
|
|
120
|
+
# ifndef UINT128_MAX
|
|
121
|
+
# define UINT128_MAX ((2 * static_cast<boost::multiprecision::uint128_type>(INT128_MAX)) + 1)
|
|
122
|
+
# endif
|
|
123
|
+
#endif
|
|
124
|
+
|
|
125
|
+
#define BOOST_MP_CXX14_CONSTEXPR BOOST_CXX14_CONSTEXPR
|
|
126
|
+
//
|
|
127
|
+
// Early compiler versions trip over the constexpr code:
|
|
128
|
+
//
|
|
129
|
+
#if defined(__clang__) && (__clang_major__ < 5)
|
|
130
|
+
#undef BOOST_MP_CXX14_CONSTEXPR
|
|
131
|
+
#define BOOST_MP_CXX14_CONSTEXPR
|
|
132
|
+
#endif
|
|
133
|
+
#if defined(__apple_build_version__) && (__clang_major__ < 9)
|
|
134
|
+
#undef BOOST_MP_CXX14_CONSTEXPR
|
|
135
|
+
#define BOOST_MP_CXX14_CONSTEXPR
|
|
136
|
+
#endif
|
|
137
|
+
#if defined(BOOST_GCC) && (__GNUC__ < 6)
|
|
138
|
+
#undef BOOST_MP_CXX14_CONSTEXPR
|
|
139
|
+
#define BOOST_MP_CXX14_CONSTEXPR
|
|
140
|
+
#endif
|
|
141
|
+
#if defined(BOOST_INTEL)
|
|
142
|
+
#undef BOOST_MP_CXX14_CONSTEXPR
|
|
143
|
+
#define BOOST_MP_CXX14_CONSTEXPR
|
|
144
|
+
#define BOOST_MP_NO_CONSTEXPR_DETECTION
|
|
145
|
+
#endif
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
#endif // BOOST_MP_STANDALONE_CONFIG_HPP
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2021 John Maddock.
|
|
3
|
+
// Copyright Christopher Kormanyos 2021. 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
|
+
|
|
8
|
+
#ifndef BOOST_MP_DETAIL_STATIC_ARRAY_HPP
|
|
9
|
+
#define BOOST_MP_DETAIL_STATIC_ARRAY_HPP
|
|
10
|
+
|
|
11
|
+
#include <array>
|
|
12
|
+
#include <cstddef>
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
#include <initializer_list>
|
|
15
|
+
|
|
16
|
+
namespace boost { namespace multiprecision { namespace backends { namespace detail {
|
|
17
|
+
template <class ValueType, const std::uint32_t ElemNumber>
|
|
18
|
+
struct static_array : public std::array<ValueType, std::size_t(ElemNumber)>
|
|
19
|
+
{
|
|
20
|
+
private:
|
|
21
|
+
using base_class_type = std::array<ValueType, std::size_t(ElemNumber)>;
|
|
22
|
+
|
|
23
|
+
public:
|
|
24
|
+
static_array() noexcept
|
|
25
|
+
{
|
|
26
|
+
base_class_type::fill(typename base_class_type::value_type(0u));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static_array(std::initializer_list<std::uint32_t> lst) noexcept
|
|
30
|
+
{
|
|
31
|
+
std::copy(lst.begin(),
|
|
32
|
+
lst.begin() + (std::min)(std::size_t(lst.size()), std::size_t(ElemNumber)),
|
|
33
|
+
base_class_type::begin());
|
|
34
|
+
|
|
35
|
+
std::fill(base_class_type::begin() + (std::min)(std::size_t(lst.size()), std::size_t(ElemNumber)),
|
|
36
|
+
base_class_type::end(),
|
|
37
|
+
typename base_class_type::value_type(0u));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}}}} // namespace boost::multiprecision::backends::detail
|
|
41
|
+
|
|
42
|
+
#endif // BOOST_MP_DETAIL_STATIC_ARRAY_HPP
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2023 John Maddock.
|
|
3
|
+
// Copyright Christopher Kormanyos 2013. 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
|
+
|
|
8
|
+
#ifndef BOOST_MP_DETAIL_STRING_HELPERS_HPP
|
|
9
|
+
#define BOOST_MP_DETAIL_STRING_HELPERS_HPP
|
|
10
|
+
|
|
11
|
+
#include <algorithm>
|
|
12
|
+
#include <cstring>
|
|
13
|
+
|
|
14
|
+
namespace boost { namespace multiprecision { namespace detail {
|
|
15
|
+
|
|
16
|
+
struct is_in_string
|
|
17
|
+
{
|
|
18
|
+
const char* begin;
|
|
19
|
+
const char* end;
|
|
20
|
+
is_in_string(const char* p) : begin(p), end(p + std::strlen(p)) {}
|
|
21
|
+
|
|
22
|
+
bool operator()(char s) { return std::find(begin, end, s) != end; }
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
struct is_not_in_string
|
|
26
|
+
{
|
|
27
|
+
const char* begin;
|
|
28
|
+
const char* end;
|
|
29
|
+
is_not_in_string(const char* p) : begin(p), end(p + std::strlen(p)) {}
|
|
30
|
+
|
|
31
|
+
bool operator()(char s) { return std::find(begin, end, s) == end; }
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
template <class Iterator>
|
|
35
|
+
std::size_t find_first_of(Iterator begin, Iterator end, const char* what)
|
|
36
|
+
{
|
|
37
|
+
return static_cast<std::size_t>(std::find_if(begin, end, is_in_string(what)) - begin);
|
|
38
|
+
}
|
|
39
|
+
template <class Iterator>
|
|
40
|
+
std::size_t find_first_not_of(Iterator begin, Iterator end, const char* what)
|
|
41
|
+
{
|
|
42
|
+
return static_cast<std::size_t>(std::find_if(begin, end, is_not_in_string(what)) - begin);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
}}} // namespace boost::multiprecision::detail
|
|
47
|
+
|
|
48
|
+
#endif // BOOST_MP_DETAIL_STRING_HELPERS_HPP
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright 2021 John Maddock.
|
|
3
|
+
// Copyright Christopher Kormanyos 2021. 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
|
+
|
|
8
|
+
#ifndef BOOST_MP_DETAIL_TABLES_HPP
|
|
9
|
+
#define BOOST_MP_DETAIL_TABLES_HPP
|
|
10
|
+
|
|
11
|
+
#include <algorithm>
|
|
12
|
+
#include <array>
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
|
|
15
|
+
namespace boost { namespace multiprecision { namespace backends { namespace detail {
|
|
16
|
+
struct a029750
|
|
17
|
+
{
|
|
18
|
+
static constexpr std::uint32_t a029750_as_constexpr(const std::uint32_t value)
|
|
19
|
+
{
|
|
20
|
+
// Sloane's A029750 List of numbers of the form 2^k times 1, 3, 5 or 7.
|
|
21
|
+
// CoefficientList[Series[-(x + 1)^2 (x^2 + 1)^2/(2 x^4 - 1), {x, 0, 78}], x]
|
|
22
|
+
return ((value <= UINT32_C( 32)) ? UINT32_C( 32) : ((value <= UINT32_C( 40)) ? UINT32_C( 40) : ((value <= UINT32_C( 48)) ? UINT32_C( 48) : ((value <= UINT32_C( 56)) ? UINT32_C( 56) :
|
|
23
|
+
((value <= UINT32_C( 64)) ? UINT32_C( 64) : ((value <= UINT32_C( 80)) ? UINT32_C( 80) : ((value <= UINT32_C( 96)) ? UINT32_C( 96) : ((value <= UINT32_C( 112)) ? UINT32_C( 112) :
|
|
24
|
+
((value <= UINT32_C( 128)) ? UINT32_C( 128) : ((value <= UINT32_C( 160)) ? UINT32_C( 160) : ((value <= UINT32_C( 192)) ? UINT32_C( 192) : ((value <= UINT32_C( 224)) ? UINT32_C( 224) :
|
|
25
|
+
((value <= UINT32_C( 256)) ? UINT32_C( 256) : ((value <= UINT32_C( 320)) ? UINT32_C( 320) : ((value <= UINT32_C( 384)) ? UINT32_C( 384) : ((value <= UINT32_C( 448)) ? UINT32_C( 448) :
|
|
26
|
+
((value <= UINT32_C( 512)) ? UINT32_C( 512) : ((value <= UINT32_C( 640)) ? UINT32_C( 640) : ((value <= UINT32_C( 768)) ? UINT32_C( 768) : ((value <= UINT32_C( 896)) ? UINT32_C( 896) :
|
|
27
|
+
((value <= UINT32_C( 1024)) ? UINT32_C( 1024) : ((value <= UINT32_C( 1280)) ? UINT32_C( 1280) : ((value <= UINT32_C( 1536)) ? UINT32_C( 1536) : ((value <= UINT32_C( 1792)) ? UINT32_C( 1792) :
|
|
28
|
+
((value <= UINT32_C( 2048)) ? UINT32_C( 2048) : ((value <= UINT32_C( 2560)) ? UINT32_C( 2560) : ((value <= UINT32_C( 3072)) ? UINT32_C( 3072) : ((value <= UINT32_C( 3584)) ? UINT32_C( 3584) :
|
|
29
|
+
((value <= UINT32_C( 4096)) ? UINT32_C( 4096) : ((value <= UINT32_C( 5120)) ? UINT32_C( 5120) : ((value <= UINT32_C( 6144)) ? UINT32_C( 6144) : ((value <= UINT32_C( 7168)) ? UINT32_C( 7168) :
|
|
30
|
+
((value <= UINT32_C( 8192)) ? UINT32_C( 8192) : ((value <= UINT32_C( 10240)) ? UINT32_C( 10240) : ((value <= UINT32_C( 12288)) ? UINT32_C( 12288) : ((value <= UINT32_C( 14336)) ? UINT32_C( 14336) :
|
|
31
|
+
((value <= UINT32_C( 16384)) ? UINT32_C( 16384) : ((value <= UINT32_C( 20480)) ? UINT32_C( 20480) : ((value <= UINT32_C( 24576)) ? UINT32_C( 24576) : ((value <= UINT32_C( 28672)) ? UINT32_C( 28672) :
|
|
32
|
+
((value <= UINT32_C( 32768)) ? UINT32_C( 32768) : ((value <= UINT32_C( 40960)) ? UINT32_C( 40960) : ((value <= UINT32_C( 49152)) ? UINT32_C( 49152) : ((value <= UINT32_C( 57344)) ? UINT32_C( 57344) :
|
|
33
|
+
((value <= UINT32_C( 65536)) ? UINT32_C( 65536) : ((value <= UINT32_C( 81920)) ? UINT32_C( 81920) : ((value <= UINT32_C( 98304)) ? UINT32_C( 98304) : ((value <= UINT32_C( 114688)) ? UINT32_C( 114688) :
|
|
34
|
+
((value <= UINT32_C( 131072)) ? UINT32_C( 131072) : ((value <= UINT32_C( 163840)) ? UINT32_C( 163840) : ((value <= UINT32_C( 196608)) ? UINT32_C( 196608) : ((value <= UINT32_C( 229376)) ? UINT32_C( 229376) :
|
|
35
|
+
((value <= UINT32_C( 262144)) ? UINT32_C( 262144) : ((value <= UINT32_C( 327680)) ? UINT32_C( 327680) : ((value <= UINT32_C( 393216)) ? UINT32_C( 393216) : ((value <= UINT32_C( 458752)) ? UINT32_C( 458752) :
|
|
36
|
+
((value <= UINT32_C( 524288)) ? UINT32_C( 524288) : ((value <= UINT32_C( 655360)) ? UINT32_C( 655360) : ((value <= UINT32_C( 786432)) ? UINT32_C( 786432) : ((value <= UINT32_C( 917504)) ? UINT32_C( 917504) :
|
|
37
|
+
((value <= UINT32_C(1048576)) ? UINT32_C(1048576) : ((value <= UINT32_C(1310720)) ? UINT32_C(1310720) : ((value <= UINT32_C(1572864)) ? UINT32_C(1572864) : ((value <= UINT32_C(1835008)) ? UINT32_C(1835008) : UINT32_C(0x7FFFFFFF)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static std::uint32_t a029750_as_runtime_value(const std::uint32_t value)
|
|
41
|
+
{
|
|
42
|
+
// Sloane's A029750 List of numbers of the form 2^k times 1, 3, 5 or 7.
|
|
43
|
+
// CoefficientList[Series[-(x + 1)^2 (x^2 + 1)^2/(2 x^4 - 1), {x, 0, 78}], x]
|
|
44
|
+
constexpr std::array<std::uint32_t, 65U> a029750_data =
|
|
45
|
+
{{
|
|
46
|
+
UINT32_C( 32), UINT32_C( 40), UINT32_C( 48), UINT32_C( 56),
|
|
47
|
+
UINT32_C( 64), UINT32_C( 80), UINT32_C( 96), UINT32_C( 112),
|
|
48
|
+
UINT32_C( 128), UINT32_C( 160), UINT32_C( 192), UINT32_C( 224),
|
|
49
|
+
UINT32_C( 256), UINT32_C( 320), UINT32_C( 384), UINT32_C( 448),
|
|
50
|
+
UINT32_C( 512), UINT32_C( 640), UINT32_C( 768), UINT32_C( 896),
|
|
51
|
+
UINT32_C( 1024), UINT32_C( 1280), UINT32_C( 1536), UINT32_C( 1792),
|
|
52
|
+
UINT32_C( 2048), UINT32_C( 2560), UINT32_C( 3072), UINT32_C( 3584),
|
|
53
|
+
UINT32_C( 4096), UINT32_C( 5120), UINT32_C( 6144), UINT32_C( 7168),
|
|
54
|
+
UINT32_C( 8192), UINT32_C( 10240), UINT32_C( 12288), UINT32_C( 14336),
|
|
55
|
+
UINT32_C( 16384), UINT32_C( 20480), UINT32_C( 24576), UINT32_C( 28672),
|
|
56
|
+
UINT32_C( 32768), UINT32_C( 40960), UINT32_C( 49152), UINT32_C( 57344),
|
|
57
|
+
UINT32_C( 65536), UINT32_C( 81920), UINT32_C( 98304), UINT32_C( 114688),
|
|
58
|
+
UINT32_C( 131072), UINT32_C( 163840), UINT32_C( 196608), UINT32_C( 229376),
|
|
59
|
+
UINT32_C( 262144), UINT32_C( 327680), UINT32_C( 393216), UINT32_C( 458752),
|
|
60
|
+
UINT32_C( 524288), UINT32_C( 655360), UINT32_C( 786432), UINT32_C( 917504),
|
|
61
|
+
UINT32_C( 1048576), UINT32_C(1310720), UINT32_C(1572864), UINT32_C(1835008),
|
|
62
|
+
UINT32_C(0x7FFFFFFF)
|
|
63
|
+
}};
|
|
64
|
+
|
|
65
|
+
const std::array<std::uint32_t, 65U>::const_iterator it =
|
|
66
|
+
std::lower_bound(a029750_data.cbegin(), a029750_data.cend(), value);
|
|
67
|
+
|
|
68
|
+
return ((it != a029750_data.cend()) ? *it : UINT32_C(0xFFFFFFFF));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
constexpr std::uint32_t pow10_maker(std::uint32_t n)
|
|
73
|
+
{
|
|
74
|
+
// Make the constant power of 10^n.
|
|
75
|
+
return ((n == UINT32_C(0)) ? UINT32_C(1) : pow10_maker(n - UINT32_C(1)) * UINT32_C(10));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
}}}} // namespace boost::multiprecision::backends::detail
|
|
79
|
+
|
|
80
|
+
#endif // BOOST_MP_DETAIL_TABLES_HPP
|