mqt-core 3.3.2__cp314-cp314t-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mqt/core/__init__.py +77 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +34 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/dd.cpython-314t-darwin.so +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
- mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
- mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cpython-314t-darwin.so +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.dylib +0 -0
- mqt/core/lib/libspdlog.a +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +109 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +118 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +546 -0
- mqt_core-3.3.2.dist-info/WHEEL +6 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
|
@@ -0,0 +1,760 @@
|
|
|
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_DEBUG_ADAPTOR_HPP
|
|
7
|
+
#define BOOST_MP_DEBUG_ADAPTOR_HPP
|
|
8
|
+
|
|
9
|
+
#include <boost/multiprecision/detail/standalone_config.hpp>
|
|
10
|
+
#include <boost/multiprecision/traits/extract_exponent_type.hpp>
|
|
11
|
+
#include <boost/multiprecision/detail/integer_ops.hpp>
|
|
12
|
+
|
|
13
|
+
namespace boost {
|
|
14
|
+
namespace multiprecision {
|
|
15
|
+
namespace backends {
|
|
16
|
+
|
|
17
|
+
template <class Backend>
|
|
18
|
+
struct debug_adaptor
|
|
19
|
+
{
|
|
20
|
+
using signed_types = typename Backend::signed_types ;
|
|
21
|
+
using unsigned_types = typename Backend::unsigned_types;
|
|
22
|
+
using float_types = typename Backend::float_types ;
|
|
23
|
+
using exponent_type = typename extract_exponent_type<Backend, number_category<Backend>::value>::type;
|
|
24
|
+
|
|
25
|
+
private:
|
|
26
|
+
std::string debug_value;
|
|
27
|
+
Backend m_value;
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
void update_view()
|
|
31
|
+
{
|
|
32
|
+
#ifndef BOOST_NO_EXCEPTIONS
|
|
33
|
+
try
|
|
34
|
+
{
|
|
35
|
+
#endif
|
|
36
|
+
debug_value = m_value.str(0, static_cast<std::ios_base::fmtflags>(0));
|
|
37
|
+
#ifndef BOOST_NO_EXCEPTIONS
|
|
38
|
+
}
|
|
39
|
+
catch (const std::exception& e)
|
|
40
|
+
{
|
|
41
|
+
debug_value = "String conversion failed with message: \"";
|
|
42
|
+
debug_value += e.what();
|
|
43
|
+
debug_value += "\"";
|
|
44
|
+
}
|
|
45
|
+
#endif
|
|
46
|
+
}
|
|
47
|
+
debug_adaptor()
|
|
48
|
+
{
|
|
49
|
+
update_view();
|
|
50
|
+
}
|
|
51
|
+
debug_adaptor(const debug_adaptor& o) : debug_value(o.debug_value), m_value(o.m_value)
|
|
52
|
+
{
|
|
53
|
+
}
|
|
54
|
+
debug_adaptor& operator=(const debug_adaptor& o)
|
|
55
|
+
{
|
|
56
|
+
debug_value = o.debug_value;
|
|
57
|
+
m_value = o.m_value;
|
|
58
|
+
return *this;
|
|
59
|
+
}
|
|
60
|
+
template <class T>
|
|
61
|
+
debug_adaptor(const T& i, const typename std::enable_if<std::is_convertible<T, Backend>::value>::type* = nullptr)
|
|
62
|
+
: m_value(i)
|
|
63
|
+
{
|
|
64
|
+
update_view();
|
|
65
|
+
}
|
|
66
|
+
template <class T>
|
|
67
|
+
debug_adaptor(const debug_adaptor<T>& i, const typename std::enable_if<std::is_convertible<T, Backend>::value>::type* = nullptr)
|
|
68
|
+
: m_value(i.value())
|
|
69
|
+
{
|
|
70
|
+
update_view();
|
|
71
|
+
}
|
|
72
|
+
template <class T, class U>
|
|
73
|
+
debug_adaptor(const T& i, const U& j, typename std::enable_if<std::is_constructible<Backend, const T&, const U&>::value>::type* = nullptr)
|
|
74
|
+
: m_value(i, j)
|
|
75
|
+
{
|
|
76
|
+
update_view();
|
|
77
|
+
}
|
|
78
|
+
template <class B2>
|
|
79
|
+
debug_adaptor(const B2& i, unsigned digits10, typename std::enable_if<std::is_same<B2, Backend>::value && std::is_constructible<Backend, const Backend&, unsigned>::value>::type* = nullptr)
|
|
80
|
+
: m_value(i, digits10)
|
|
81
|
+
{
|
|
82
|
+
update_view();
|
|
83
|
+
}
|
|
84
|
+
template <class T>
|
|
85
|
+
typename std::enable_if<boost::multiprecision::detail::is_arithmetic<T>::value || std::is_assignable<Backend, T>::value, debug_adaptor&>::type operator=(const T& i)
|
|
86
|
+
{
|
|
87
|
+
m_value = i;
|
|
88
|
+
update_view();
|
|
89
|
+
return *this;
|
|
90
|
+
}
|
|
91
|
+
debug_adaptor& operator=(const char* s)
|
|
92
|
+
{
|
|
93
|
+
m_value = s;
|
|
94
|
+
update_view();
|
|
95
|
+
return *this;
|
|
96
|
+
}
|
|
97
|
+
void swap(debug_adaptor& o)
|
|
98
|
+
{
|
|
99
|
+
std::swap(m_value, o.value());
|
|
100
|
+
std::swap(debug_value, o.debug_value);
|
|
101
|
+
}
|
|
102
|
+
std::string str(std::streamsize digits, std::ios_base::fmtflags f) const
|
|
103
|
+
{
|
|
104
|
+
return m_value.str(digits, f);
|
|
105
|
+
}
|
|
106
|
+
void negate()
|
|
107
|
+
{
|
|
108
|
+
m_value.negate();
|
|
109
|
+
update_view();
|
|
110
|
+
}
|
|
111
|
+
int compare(const debug_adaptor& o) const
|
|
112
|
+
{
|
|
113
|
+
return m_value.compare(o.value());
|
|
114
|
+
}
|
|
115
|
+
template <class T>
|
|
116
|
+
int compare(const T& i) const
|
|
117
|
+
{
|
|
118
|
+
return m_value.compare(i);
|
|
119
|
+
}
|
|
120
|
+
Backend& value()
|
|
121
|
+
{
|
|
122
|
+
return m_value;
|
|
123
|
+
}
|
|
124
|
+
const Backend& value() const
|
|
125
|
+
{
|
|
126
|
+
return m_value;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
#ifndef BOOST_MP_STANDALONE
|
|
130
|
+
template <class Archive>
|
|
131
|
+
void serialize(Archive& ar, const unsigned int /*version*/)
|
|
132
|
+
{
|
|
133
|
+
ar & boost::make_nvp("value", m_value);
|
|
134
|
+
using tag = typename Archive::is_loading;
|
|
135
|
+
if (tag::value)
|
|
136
|
+
update_view();
|
|
137
|
+
}
|
|
138
|
+
#endif
|
|
139
|
+
|
|
140
|
+
static unsigned default_precision() noexcept
|
|
141
|
+
{
|
|
142
|
+
return Backend::default_precision();
|
|
143
|
+
}
|
|
144
|
+
static void default_precision(unsigned v) noexcept
|
|
145
|
+
{
|
|
146
|
+
Backend::default_precision(v);
|
|
147
|
+
}
|
|
148
|
+
static unsigned thread_default_precision() noexcept
|
|
149
|
+
{
|
|
150
|
+
return Backend::thread_default_precision();
|
|
151
|
+
}
|
|
152
|
+
static void thread_default_precision(unsigned v) noexcept
|
|
153
|
+
{
|
|
154
|
+
Backend::thread_default_precision(v);
|
|
155
|
+
}
|
|
156
|
+
unsigned precision() const noexcept
|
|
157
|
+
{
|
|
158
|
+
return value().precision();
|
|
159
|
+
}
|
|
160
|
+
void precision(unsigned digits10) noexcept
|
|
161
|
+
{
|
|
162
|
+
value().precision(digits10);
|
|
163
|
+
}
|
|
164
|
+
//
|
|
165
|
+
// Variable precision options:
|
|
166
|
+
//
|
|
167
|
+
static constexpr variable_precision_options default_variable_precision_options()noexcept
|
|
168
|
+
{
|
|
169
|
+
return Backend::default_variable_precision_options();
|
|
170
|
+
}
|
|
171
|
+
static constexpr variable_precision_options thread_default_variable_precision_options()noexcept
|
|
172
|
+
{
|
|
173
|
+
return Backend::thread_default_variable_precision_options();
|
|
174
|
+
}
|
|
175
|
+
static BOOST_MP_CXX14_CONSTEXPR void default_variable_precision_options(variable_precision_options opts)
|
|
176
|
+
{
|
|
177
|
+
Backend::default_variable_precision_options(opts);
|
|
178
|
+
}
|
|
179
|
+
static BOOST_MP_CXX14_CONSTEXPR void thread_default_variable_precision_options(variable_precision_options opts)
|
|
180
|
+
{
|
|
181
|
+
Backend::thread_default_variable_precision_options(opts);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
template <class Backend>
|
|
186
|
+
inline Backend const& unwrap_debug_type(debug_adaptor<Backend> const& val)
|
|
187
|
+
{
|
|
188
|
+
return val.value();
|
|
189
|
+
}
|
|
190
|
+
template <class T>
|
|
191
|
+
inline const T& unwrap_debug_type(const T& val)
|
|
192
|
+
{
|
|
193
|
+
return val;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
template <class Backend, class V, class U>
|
|
197
|
+
inline BOOST_MP_CXX14_CONSTEXPR void assign_components(debug_adaptor<Backend>& result, const V& v1, const U& v2)
|
|
198
|
+
{
|
|
199
|
+
using default_ops::assign_components;
|
|
200
|
+
assign_components(result.value(), unwrap_debug_type(v1), unwrap_debug_type(v2));
|
|
201
|
+
result.update_view();
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
#define NON_MEMBER_OP1(name, str) \
|
|
205
|
+
template <class Backend> \
|
|
206
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result) \
|
|
207
|
+
{ \
|
|
208
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
209
|
+
BOOST_JOIN(eval_, name) \
|
|
210
|
+
(result.value()); \
|
|
211
|
+
result.update_view(); \
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
#define NON_MEMBER_OP2(name, str) \
|
|
215
|
+
template <class Backend, class T> \
|
|
216
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a) \
|
|
217
|
+
{ \
|
|
218
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
219
|
+
BOOST_JOIN(eval_, name) \
|
|
220
|
+
(result.value(), unwrap_debug_type(a)); \
|
|
221
|
+
result.update_view(); \
|
|
222
|
+
} \
|
|
223
|
+
template <class Backend> \
|
|
224
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) \
|
|
225
|
+
{ \
|
|
226
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
227
|
+
BOOST_JOIN(eval_, name) \
|
|
228
|
+
(result.value(), unwrap_debug_type(a)); \
|
|
229
|
+
result.update_view(); \
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
#define NON_MEMBER_OP3(name, str) \
|
|
233
|
+
template <class Backend, class T, class U> \
|
|
234
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const U& b) \
|
|
235
|
+
{ \
|
|
236
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
237
|
+
BOOST_JOIN(eval_, name) \
|
|
238
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); \
|
|
239
|
+
result.update_view(); \
|
|
240
|
+
} \
|
|
241
|
+
template <class Backend, class T> \
|
|
242
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) \
|
|
243
|
+
{ \
|
|
244
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
245
|
+
BOOST_JOIN(eval_, name) \
|
|
246
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); \
|
|
247
|
+
result.update_view(); \
|
|
248
|
+
} \
|
|
249
|
+
template <class Backend, class T> \
|
|
250
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) \
|
|
251
|
+
{ \
|
|
252
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
253
|
+
BOOST_JOIN(eval_, name) \
|
|
254
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); \
|
|
255
|
+
result.update_view(); \
|
|
256
|
+
} \
|
|
257
|
+
template <class Backend> \
|
|
258
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) \
|
|
259
|
+
{ \
|
|
260
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
261
|
+
BOOST_JOIN(eval_, name) \
|
|
262
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); \
|
|
263
|
+
result.update_view(); \
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
#define NON_MEMBER_OP4(name, str) \
|
|
267
|
+
template <class Backend, class T, class U, class V> \
|
|
268
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) \
|
|
269
|
+
{ \
|
|
270
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
271
|
+
BOOST_JOIN(eval_, name) \
|
|
272
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
273
|
+
result.update_view(); \
|
|
274
|
+
} \
|
|
275
|
+
template <class Backend, class T> \
|
|
276
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) \
|
|
277
|
+
{ \
|
|
278
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
279
|
+
BOOST_JOIN(eval_, name) \
|
|
280
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
281
|
+
result.update_view(); \
|
|
282
|
+
} \
|
|
283
|
+
template <class Backend, class T> \
|
|
284
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) \
|
|
285
|
+
{ \
|
|
286
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
287
|
+
BOOST_JOIN(eval_, name) \
|
|
288
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
289
|
+
result.update_view(); \
|
|
290
|
+
} \
|
|
291
|
+
template <class Backend, class T> \
|
|
292
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) \
|
|
293
|
+
{ \
|
|
294
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
295
|
+
BOOST_JOIN(eval_, name) \
|
|
296
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
297
|
+
result.update_view(); \
|
|
298
|
+
} \
|
|
299
|
+
template <class Backend> \
|
|
300
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) \
|
|
301
|
+
{ \
|
|
302
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
303
|
+
BOOST_JOIN(eval_, name) \
|
|
304
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
305
|
+
result.update_view(); \
|
|
306
|
+
} \
|
|
307
|
+
template <class Backend, class T, class U> \
|
|
308
|
+
inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) \
|
|
309
|
+
{ \
|
|
310
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
311
|
+
BOOST_JOIN(eval_, name) \
|
|
312
|
+
(result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); \
|
|
313
|
+
result.update_view(); \
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
NON_MEMBER_OP2(add, "+=")
|
|
317
|
+
NON_MEMBER_OP2(subtract, "-=")
|
|
318
|
+
NON_MEMBER_OP2(multiply, "*=")
|
|
319
|
+
NON_MEMBER_OP2(divide, "/=")
|
|
320
|
+
|
|
321
|
+
template <class Backend, class R>
|
|
322
|
+
inline void eval_convert_to(R* result, const debug_adaptor<Backend>& val)
|
|
323
|
+
{
|
|
324
|
+
using default_ops::eval_convert_to;
|
|
325
|
+
eval_convert_to(result, val.value());
|
|
326
|
+
}
|
|
327
|
+
template <class Backend, class R>
|
|
328
|
+
inline void eval_convert_to(debug_adaptor<R>* result, const debug_adaptor<Backend>& val)
|
|
329
|
+
{
|
|
330
|
+
using default_ops::eval_convert_to;
|
|
331
|
+
eval_convert_to(&result->value(), val.value());
|
|
332
|
+
}
|
|
333
|
+
template <class Backend, class R>
|
|
334
|
+
inline void eval_convert_to(debug_adaptor<R>* result, const Backend& val)
|
|
335
|
+
{
|
|
336
|
+
using default_ops::eval_convert_to;
|
|
337
|
+
eval_convert_to(&result->value(), val);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
template <class Backend>
|
|
341
|
+
inline void eval_convert_to(std::complex<float>* result, const debug_adaptor<Backend>& val)
|
|
342
|
+
{
|
|
343
|
+
using default_ops::eval_convert_to;
|
|
344
|
+
eval_convert_to(result, val.value());
|
|
345
|
+
}
|
|
346
|
+
template <class Backend>
|
|
347
|
+
inline void eval_convert_to(std::complex<double>* result, const debug_adaptor<Backend>& val)
|
|
348
|
+
{
|
|
349
|
+
using default_ops::eval_convert_to;
|
|
350
|
+
eval_convert_to(result, val.value());
|
|
351
|
+
}
|
|
352
|
+
template <class Backend>
|
|
353
|
+
inline void eval_convert_to(std::complex<long double>* result, const debug_adaptor<Backend>& val)
|
|
354
|
+
{
|
|
355
|
+
using default_ops::eval_convert_to;
|
|
356
|
+
eval_convert_to(result, val.value());
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
template <class Backend, class Exp>
|
|
362
|
+
inline void eval_frexp(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp* exp)
|
|
363
|
+
{
|
|
364
|
+
eval_frexp(result.value(), arg.value(), exp);
|
|
365
|
+
result.update_view();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
template <class Backend, class Exp>
|
|
369
|
+
inline void eval_ldexp(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp exp)
|
|
370
|
+
{
|
|
371
|
+
eval_ldexp(result.value(), arg.value(), exp);
|
|
372
|
+
result.update_view();
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
template <class Backend, class Exp>
|
|
376
|
+
inline void eval_scalbn(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp exp)
|
|
377
|
+
{
|
|
378
|
+
using default_ops::eval_scalbn;
|
|
379
|
+
eval_scalbn(result.value(), arg.value(), exp);
|
|
380
|
+
result.update_view();
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
template <class Backend>
|
|
384
|
+
inline typename Backend::exponent_type eval_ilogb(const debug_adaptor<Backend>& arg)
|
|
385
|
+
{
|
|
386
|
+
using default_ops::eval_ilogb;
|
|
387
|
+
return eval_ilogb(arg.value());
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
NON_MEMBER_OP2(floor, "floor")
|
|
391
|
+
NON_MEMBER_OP2(ceil, "ceil")
|
|
392
|
+
NON_MEMBER_OP2(sqrt, "sqrt")
|
|
393
|
+
NON_MEMBER_OP2(logb, "logb")
|
|
394
|
+
|
|
395
|
+
template <class Backend>
|
|
396
|
+
inline int eval_fpclassify(const debug_adaptor<Backend>& arg)
|
|
397
|
+
{
|
|
398
|
+
using default_ops::eval_fpclassify;
|
|
399
|
+
return eval_fpclassify(arg.value());
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/*********************************************************************
|
|
403
|
+
*
|
|
404
|
+
* Optional arithmetic operations come next:
|
|
405
|
+
*
|
|
406
|
+
*********************************************************************/
|
|
407
|
+
|
|
408
|
+
NON_MEMBER_OP3(add, "+")
|
|
409
|
+
NON_MEMBER_OP3(subtract, "-")
|
|
410
|
+
NON_MEMBER_OP3(multiply, "*")
|
|
411
|
+
NON_MEMBER_OP3(divide, "/")
|
|
412
|
+
NON_MEMBER_OP3(multiply_add, "fused-multiply-add")
|
|
413
|
+
NON_MEMBER_OP3(multiply_subtract, "fused-multiply-subtract")
|
|
414
|
+
NON_MEMBER_OP4(multiply_add, "fused-multiply-add")
|
|
415
|
+
NON_MEMBER_OP4(multiply_subtract, "fused-multiply-subtract")
|
|
416
|
+
|
|
417
|
+
NON_MEMBER_OP1(increment, "increment")
|
|
418
|
+
NON_MEMBER_OP1(decrement, "decrement")
|
|
419
|
+
|
|
420
|
+
/*********************************************************************
|
|
421
|
+
*
|
|
422
|
+
* Optional integer operations come next:
|
|
423
|
+
*
|
|
424
|
+
*********************************************************************/
|
|
425
|
+
|
|
426
|
+
NON_MEMBER_OP2(modulus, "%=")
|
|
427
|
+
NON_MEMBER_OP3(modulus, "%")
|
|
428
|
+
NON_MEMBER_OP2(bitwise_or, "|=")
|
|
429
|
+
NON_MEMBER_OP3(bitwise_or, "|")
|
|
430
|
+
NON_MEMBER_OP2(bitwise_and, "&=")
|
|
431
|
+
NON_MEMBER_OP3(bitwise_and, "&")
|
|
432
|
+
NON_MEMBER_OP2(bitwise_xor, "^=")
|
|
433
|
+
NON_MEMBER_OP3(bitwise_xor, "^")
|
|
434
|
+
NON_MEMBER_OP4(qr, "quotient-and-remainder")
|
|
435
|
+
NON_MEMBER_OP2(complement, "~")
|
|
436
|
+
|
|
437
|
+
template <class Backend>
|
|
438
|
+
inline void eval_left_shift(debug_adaptor<Backend>& arg, std::size_t a)
|
|
439
|
+
{
|
|
440
|
+
using default_ops::eval_left_shift;
|
|
441
|
+
eval_left_shift(arg.value(), a);
|
|
442
|
+
arg.update_view();
|
|
443
|
+
}
|
|
444
|
+
template <class Backend>
|
|
445
|
+
inline void eval_left_shift(debug_adaptor<Backend>& arg, const debug_adaptor<Backend>& a, std::size_t b)
|
|
446
|
+
{
|
|
447
|
+
using default_ops::eval_left_shift;
|
|
448
|
+
eval_left_shift(arg.value(), a.value(), b);
|
|
449
|
+
arg.update_view();
|
|
450
|
+
}
|
|
451
|
+
template <class Backend>
|
|
452
|
+
inline void eval_right_shift(debug_adaptor<Backend>& arg, std::size_t a)
|
|
453
|
+
{
|
|
454
|
+
using default_ops::eval_right_shift;
|
|
455
|
+
eval_right_shift(arg.value(), a);
|
|
456
|
+
arg.update_view();
|
|
457
|
+
}
|
|
458
|
+
template <class Backend>
|
|
459
|
+
inline void eval_right_shift(debug_adaptor<Backend>& arg, const debug_adaptor<Backend>& a, std::size_t b)
|
|
460
|
+
{
|
|
461
|
+
using default_ops::eval_right_shift;
|
|
462
|
+
eval_right_shift(arg.value(), a.value(), b);
|
|
463
|
+
arg.update_view();
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
template <class Backend, class T>
|
|
467
|
+
inline T eval_integer_modulus(const debug_adaptor<Backend>& arg, const T& a)
|
|
468
|
+
{
|
|
469
|
+
using default_ops::eval_integer_modulus;
|
|
470
|
+
return eval_integer_modulus(arg.value(), a);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
template <class Backend>
|
|
474
|
+
inline std::size_t eval_lsb(const debug_adaptor<Backend>& arg)
|
|
475
|
+
{
|
|
476
|
+
using default_ops::eval_lsb;
|
|
477
|
+
return eval_lsb(arg.value());
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
template <class Backend>
|
|
481
|
+
inline std::size_t eval_msb(const debug_adaptor<Backend>& arg)
|
|
482
|
+
{
|
|
483
|
+
using default_ops::eval_msb;
|
|
484
|
+
return eval_msb(arg.value());
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
template <class Backend>
|
|
488
|
+
inline bool eval_bit_test(const debug_adaptor<Backend>& arg, std::size_t a)
|
|
489
|
+
{
|
|
490
|
+
using default_ops::eval_bit_test;
|
|
491
|
+
return eval_bit_test(arg.value(), a);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
template <class Backend>
|
|
495
|
+
inline void eval_bit_set(const debug_adaptor<Backend>& arg, std::size_t a)
|
|
496
|
+
{
|
|
497
|
+
using default_ops::eval_bit_set;
|
|
498
|
+
eval_bit_set(arg.value(), a);
|
|
499
|
+
arg.update_view();
|
|
500
|
+
}
|
|
501
|
+
template <class Backend>
|
|
502
|
+
inline void eval_bit_unset(const debug_adaptor<Backend>& arg, std::size_t a)
|
|
503
|
+
{
|
|
504
|
+
using default_ops::eval_bit_unset;
|
|
505
|
+
eval_bit_unset(arg.value(), a);
|
|
506
|
+
arg.update_view();
|
|
507
|
+
}
|
|
508
|
+
template <class Backend>
|
|
509
|
+
inline void eval_bit_flip(const debug_adaptor<Backend>& arg, std::size_t a)
|
|
510
|
+
{
|
|
511
|
+
using default_ops::eval_bit_flip;
|
|
512
|
+
eval_bit_flip(arg.value(), a);
|
|
513
|
+
arg.update_view();
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
NON_MEMBER_OP3(gcd, "gcd")
|
|
517
|
+
NON_MEMBER_OP3(lcm, "lcm")
|
|
518
|
+
NON_MEMBER_OP4(powm, "powm")
|
|
519
|
+
|
|
520
|
+
/*********************************************************************
|
|
521
|
+
*
|
|
522
|
+
* abs/fabs:
|
|
523
|
+
*
|
|
524
|
+
*********************************************************************/
|
|
525
|
+
|
|
526
|
+
NON_MEMBER_OP2(abs, "abs")
|
|
527
|
+
NON_MEMBER_OP2(fabs, "fabs")
|
|
528
|
+
|
|
529
|
+
/*********************************************************************
|
|
530
|
+
*
|
|
531
|
+
* Floating point functions:
|
|
532
|
+
*
|
|
533
|
+
*********************************************************************/
|
|
534
|
+
|
|
535
|
+
NON_MEMBER_OP2(trunc, "trunc")
|
|
536
|
+
NON_MEMBER_OP2(round, "round")
|
|
537
|
+
NON_MEMBER_OP2(exp, "exp")
|
|
538
|
+
NON_MEMBER_OP2(log, "log")
|
|
539
|
+
NON_MEMBER_OP2(log10, "log10")
|
|
540
|
+
NON_MEMBER_OP2(sin, "sin")
|
|
541
|
+
NON_MEMBER_OP2(cos, "cos")
|
|
542
|
+
NON_MEMBER_OP2(tan, "tan")
|
|
543
|
+
NON_MEMBER_OP2(asin, "asin")
|
|
544
|
+
NON_MEMBER_OP2(acos, "acos")
|
|
545
|
+
NON_MEMBER_OP2(atan, "atan")
|
|
546
|
+
NON_MEMBER_OP2(sinh, "sinh")
|
|
547
|
+
NON_MEMBER_OP2(cosh, "cosh")
|
|
548
|
+
NON_MEMBER_OP2(tanh, "tanh")
|
|
549
|
+
NON_MEMBER_OP2(asinh, "asinh")
|
|
550
|
+
NON_MEMBER_OP2(acosh, "acosh")
|
|
551
|
+
NON_MEMBER_OP2(atanh, "atanh")
|
|
552
|
+
NON_MEMBER_OP3(fmod, "fmod")
|
|
553
|
+
NON_MEMBER_OP3(pow, "pow")
|
|
554
|
+
NON_MEMBER_OP3(atan2, "atan2")
|
|
555
|
+
NON_MEMBER_OP2(conj, "conj")
|
|
556
|
+
|
|
557
|
+
template <class Backend>
|
|
558
|
+
int eval_signbit(const debug_adaptor<Backend>& val)
|
|
559
|
+
{
|
|
560
|
+
using default_ops::eval_signbit;
|
|
561
|
+
return eval_signbit(val.value());
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
template <class Backend>
|
|
565
|
+
std::size_t hash_value(const debug_adaptor<Backend>& val)
|
|
566
|
+
{
|
|
567
|
+
return hash_value(val.value());
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
571
|
+
inline typename std::enable_if<number_category<Backend>::value == number_kind_rational, typename number<debug_adaptor<Backend>, ExpressionTemplates>::value_type>::type
|
|
572
|
+
numerator(const number<debug_adaptor<Backend>, ExpressionTemplates>& arg)
|
|
573
|
+
{
|
|
574
|
+
number<Backend, ExpressionTemplates> t(arg.backend().value());
|
|
575
|
+
return numerator(t).backend();
|
|
576
|
+
}
|
|
577
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
578
|
+
inline typename std::enable_if<number_category<Backend>::value == number_kind_rational, typename number<debug_adaptor<Backend>, ExpressionTemplates>::value_type>::type
|
|
579
|
+
denominator(const number<debug_adaptor<Backend>, ExpressionTemplates>& arg)
|
|
580
|
+
{
|
|
581
|
+
number<Backend, ExpressionTemplates> t(arg.backend().value());
|
|
582
|
+
return denominator(t).backend();
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
template <class To, class From>
|
|
586
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_real(To& to, const debug_adaptor<From>& from)
|
|
587
|
+
{
|
|
588
|
+
using default_ops::eval_real;
|
|
589
|
+
eval_real(to, from.value());
|
|
590
|
+
}
|
|
591
|
+
template <class To, class From>
|
|
592
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_real(debug_adaptor<To>& to, const debug_adaptor<From>& from)
|
|
593
|
+
{
|
|
594
|
+
using default_ops::eval_real;
|
|
595
|
+
eval_real(to.value(), from.value());
|
|
596
|
+
to.update_view();
|
|
597
|
+
}
|
|
598
|
+
template <class To, class From>
|
|
599
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_real(debug_adaptor<To>& to, const From& from)
|
|
600
|
+
{
|
|
601
|
+
using default_ops::eval_real;
|
|
602
|
+
eval_real(to.value(), from);
|
|
603
|
+
to.update_view();
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
template <class To, class From>
|
|
607
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_imag(To& to, const debug_adaptor<From>& from)
|
|
608
|
+
{
|
|
609
|
+
using default_ops::eval_imag;
|
|
610
|
+
eval_imag(to, from.value());
|
|
611
|
+
}
|
|
612
|
+
template <class To, class From>
|
|
613
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_imag(debug_adaptor<To>& to, const debug_adaptor<From>& from)
|
|
614
|
+
{
|
|
615
|
+
using default_ops::eval_imag;
|
|
616
|
+
eval_imag(to.value(), from.value());
|
|
617
|
+
to.update_view();
|
|
618
|
+
}
|
|
619
|
+
template <class To, class From>
|
|
620
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_imag(debug_adaptor<To>& to, const From& from)
|
|
621
|
+
{
|
|
622
|
+
using default_ops::eval_imag;
|
|
623
|
+
eval_imag(to.value(), from);
|
|
624
|
+
to.update_view();
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
template <class To, class From>
|
|
628
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(To& to, const debug_adaptor<From>& from)
|
|
629
|
+
{
|
|
630
|
+
using default_ops::eval_set_real;
|
|
631
|
+
eval_set_real(to, from.value());
|
|
632
|
+
}
|
|
633
|
+
template <class To, class From>
|
|
634
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(debug_adaptor<To>& to, const debug_adaptor<From>& from)
|
|
635
|
+
{
|
|
636
|
+
using default_ops::eval_set_real;
|
|
637
|
+
eval_set_real(to.value(), from.value());
|
|
638
|
+
to.update_view();
|
|
639
|
+
}
|
|
640
|
+
template <class To, class From>
|
|
641
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(debug_adaptor<To>& to, const From& from)
|
|
642
|
+
{
|
|
643
|
+
using default_ops::eval_set_real;
|
|
644
|
+
eval_set_real(to.value(), from);
|
|
645
|
+
to.update_view();
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
template <class To, class From>
|
|
649
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(To& to, const debug_adaptor<From>& from)
|
|
650
|
+
{
|
|
651
|
+
using default_ops::eval_set_imag;
|
|
652
|
+
eval_set_imag(to, from.value());
|
|
653
|
+
}
|
|
654
|
+
template <class To, class From>
|
|
655
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(debug_adaptor<To>& to, const debug_adaptor<From>& from)
|
|
656
|
+
{
|
|
657
|
+
using default_ops::eval_set_imag;
|
|
658
|
+
eval_set_imag(to.value(), from.value());
|
|
659
|
+
to.update_view();
|
|
660
|
+
}
|
|
661
|
+
template <class To, class From>
|
|
662
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(debug_adaptor<To>& to, const From& from)
|
|
663
|
+
{
|
|
664
|
+
using default_ops::eval_set_imag;
|
|
665
|
+
eval_set_imag(to.value(), from);
|
|
666
|
+
to.update_view();
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
} // namespace backends
|
|
671
|
+
|
|
672
|
+
namespace detail {
|
|
673
|
+
template <class Backend>
|
|
674
|
+
struct is_variable_precision<debug_adaptor<Backend> > : public is_variable_precision<Backend>
|
|
675
|
+
{};
|
|
676
|
+
#ifdef BOOST_HAS_INT128
|
|
677
|
+
template <class Backend>
|
|
678
|
+
struct is_convertible_arithmetic<int128_type, debug_adaptor<Backend> > : public is_convertible_arithmetic<int128_type, Backend>
|
|
679
|
+
{};
|
|
680
|
+
template <class Backend>
|
|
681
|
+
struct is_convertible_arithmetic<uint128_type, debug_adaptor<Backend> > : public is_convertible_arithmetic<uint128_type, Backend>
|
|
682
|
+
{};
|
|
683
|
+
#endif
|
|
684
|
+
#ifdef BOOST_HAS_FLOAT128
|
|
685
|
+
template <class Backend>
|
|
686
|
+
struct is_convertible_arithmetic<float128_type, debug_adaptor<Backend> > : public is_convertible_arithmetic<float128_type, Backend>
|
|
687
|
+
{};
|
|
688
|
+
#endif
|
|
689
|
+
} // namespace detail
|
|
690
|
+
|
|
691
|
+
template <class Backend>
|
|
692
|
+
struct number_category<backends::debug_adaptor<Backend> > : public number_category<Backend>
|
|
693
|
+
{};
|
|
694
|
+
|
|
695
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
696
|
+
struct component_type<number<debug_adaptor<Backend>, ExpressionTemplates>>
|
|
697
|
+
{
|
|
698
|
+
//
|
|
699
|
+
// We'll make the component_type also a debug_adaptor:
|
|
700
|
+
//
|
|
701
|
+
using base_component_type = typename component_type<number<Backend, ExpressionTemplates>>::type;
|
|
702
|
+
using base_component_backend = typename base_component_type::backend_type;
|
|
703
|
+
using type = number<debug_adaptor<base_component_backend>, ExpressionTemplates>;
|
|
704
|
+
};
|
|
705
|
+
|
|
706
|
+
template <class Backend>
|
|
707
|
+
struct is_interval_number<backends::debug_adaptor<Backend> > : public is_interval_number<Backend> {};
|
|
708
|
+
|
|
709
|
+
}} // namespace boost::multiprecision
|
|
710
|
+
|
|
711
|
+
namespace std {
|
|
712
|
+
|
|
713
|
+
template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
|
|
714
|
+
class numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::debug_adaptor<Backend>, ExpressionTemplates> >
|
|
715
|
+
: public std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> >
|
|
716
|
+
{
|
|
717
|
+
using base_type = std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> > ;
|
|
718
|
+
using number_type = boost::multiprecision::number<boost::multiprecision::backends::debug_adaptor<Backend>, ExpressionTemplates>;
|
|
719
|
+
|
|
720
|
+
public:
|
|
721
|
+
static number_type(min)() noexcept { return (base_type::min)(); }
|
|
722
|
+
static number_type(max)() noexcept { return (base_type::max)(); }
|
|
723
|
+
static number_type lowest() noexcept { return -(max)(); }
|
|
724
|
+
static number_type epsilon() noexcept { return base_type::epsilon(); }
|
|
725
|
+
static number_type round_error() noexcept { return epsilon() / 2; }
|
|
726
|
+
static number_type infinity() noexcept { return base_type::infinity(); }
|
|
727
|
+
static number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); }
|
|
728
|
+
static number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); }
|
|
729
|
+
static number_type denorm_min() noexcept { return base_type::denorm_min(); }
|
|
730
|
+
};
|
|
731
|
+
|
|
732
|
+
} // namespace std
|
|
733
|
+
|
|
734
|
+
#ifdef BOOST_MP_MATH_AVAILABLE
|
|
735
|
+
namespace boost {
|
|
736
|
+
namespace math {
|
|
737
|
+
|
|
738
|
+
namespace policies {
|
|
739
|
+
|
|
740
|
+
template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates, class Policy>
|
|
741
|
+
struct precision<boost::multiprecision::number<boost::multiprecision::debug_adaptor<Backend>, ExpressionTemplates>, Policy>
|
|
742
|
+
: public precision<boost::multiprecision::number<Backend, ExpressionTemplates>, Policy>
|
|
743
|
+
{};
|
|
744
|
+
|
|
745
|
+
#undef NON_MEMBER_OP1
|
|
746
|
+
#undef NON_MEMBER_OP2
|
|
747
|
+
#undef NON_MEMBER_OP3
|
|
748
|
+
#undef NON_MEMBER_OP4
|
|
749
|
+
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
}} // namespace boost::math::policies
|
|
753
|
+
#else
|
|
754
|
+
#undef NON_MEMBER_OP1
|
|
755
|
+
#undef NON_MEMBER_OP2
|
|
756
|
+
#undef NON_MEMBER_OP3
|
|
757
|
+
#undef NON_MEMBER_OP4
|
|
758
|
+
#endif // BOOST_MP_MATH_AVAILABLE
|
|
759
|
+
|
|
760
|
+
#endif
|