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,834 @@
|
|
|
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_LOGGED_ADAPTER_HPP
|
|
7
|
+
#define BOOST_MP_LOGGED_ADAPTER_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
|
+
|
|
16
|
+
template <class Backend>
|
|
17
|
+
inline void log_postfix_event(const Backend&, const char* /*event_description*/)
|
|
18
|
+
{
|
|
19
|
+
}
|
|
20
|
+
template <class Backend, class T>
|
|
21
|
+
inline void log_postfix_event(const Backend&, const T&, const char* /*event_description*/)
|
|
22
|
+
{
|
|
23
|
+
}
|
|
24
|
+
template <class Backend>
|
|
25
|
+
inline void log_prefix_event(const Backend&, const char* /*event_description*/)
|
|
26
|
+
{
|
|
27
|
+
}
|
|
28
|
+
template <class Backend, class T>
|
|
29
|
+
inline void log_prefix_event(const Backend&, const T&, const char* /*event_description*/)
|
|
30
|
+
{
|
|
31
|
+
}
|
|
32
|
+
template <class Backend, class T, class U>
|
|
33
|
+
inline void log_prefix_event(const Backend&, const T&, const U&, const char* /*event_description*/)
|
|
34
|
+
{
|
|
35
|
+
}
|
|
36
|
+
template <class Backend, class T, class U, class V>
|
|
37
|
+
inline void log_prefix_event(const Backend&, const T&, const U&, const V&, const char* /*event_description*/)
|
|
38
|
+
{
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
namespace backends {
|
|
42
|
+
|
|
43
|
+
template <class Backend>
|
|
44
|
+
struct logged_adaptor
|
|
45
|
+
{
|
|
46
|
+
using signed_types = typename Backend::signed_types ;
|
|
47
|
+
using unsigned_types = typename Backend::unsigned_types;
|
|
48
|
+
using float_types = typename Backend::float_types ;
|
|
49
|
+
using exponent_type = typename extract_exponent_type<Backend, number_category<Backend>::value>::type;
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
Backend m_value;
|
|
53
|
+
|
|
54
|
+
public:
|
|
55
|
+
logged_adaptor()
|
|
56
|
+
{
|
|
57
|
+
log_postfix_event(m_value, "Default construct");
|
|
58
|
+
}
|
|
59
|
+
logged_adaptor(const logged_adaptor& o)
|
|
60
|
+
{
|
|
61
|
+
log_prefix_event(m_value, o.value(), "Copy construct");
|
|
62
|
+
m_value = o.m_value;
|
|
63
|
+
log_postfix_event(m_value, "Copy construct");
|
|
64
|
+
}
|
|
65
|
+
// rvalue copy
|
|
66
|
+
logged_adaptor(logged_adaptor&& o)
|
|
67
|
+
{
|
|
68
|
+
log_prefix_event(m_value, o.value(), "Move construct");
|
|
69
|
+
m_value = static_cast<Backend&&>(o.m_value);
|
|
70
|
+
log_postfix_event(m_value, "Move construct");
|
|
71
|
+
}
|
|
72
|
+
logged_adaptor& operator=(logged_adaptor&& o)
|
|
73
|
+
{
|
|
74
|
+
log_prefix_event(m_value, o.value(), "Move Assignment");
|
|
75
|
+
m_value = static_cast<Backend&&>(o.m_value);
|
|
76
|
+
log_postfix_event(m_value, "Move construct");
|
|
77
|
+
return *this;
|
|
78
|
+
}
|
|
79
|
+
logged_adaptor& operator=(const logged_adaptor& o)
|
|
80
|
+
{
|
|
81
|
+
log_prefix_event(m_value, o.value(), "Assignment");
|
|
82
|
+
m_value = o.m_value;
|
|
83
|
+
log_postfix_event(m_value, "Copy construct");
|
|
84
|
+
return *this;
|
|
85
|
+
}
|
|
86
|
+
template <class T>
|
|
87
|
+
logged_adaptor(const T& i, const typename std::enable_if<std::is_convertible<T, Backend>::value>::type* = nullptr)
|
|
88
|
+
: m_value(i)
|
|
89
|
+
{
|
|
90
|
+
log_postfix_event(m_value, "construct from arithmetic type");
|
|
91
|
+
}
|
|
92
|
+
template <class T>
|
|
93
|
+
logged_adaptor(const logged_adaptor<T>& i, const typename std::enable_if<std::is_convertible<T, Backend>::value>::type* = nullptr)
|
|
94
|
+
: m_value(i.value())
|
|
95
|
+
{
|
|
96
|
+
log_postfix_event(m_value, "construct from arithmetic type");
|
|
97
|
+
}
|
|
98
|
+
template <class T, class U>
|
|
99
|
+
logged_adaptor(const T& i, const U& j, typename std::enable_if<std::is_constructible<Backend, const T&, const U&>::value>::type* = nullptr)
|
|
100
|
+
: m_value(i, j)
|
|
101
|
+
{
|
|
102
|
+
log_postfix_event(m_value, "construct from a pair of arithmetic types");
|
|
103
|
+
}
|
|
104
|
+
template <class D = Backend>
|
|
105
|
+
logged_adaptor(const Backend& i, unsigned digits10, typename std::enable_if<std::is_constructible<D, Backend const&, unsigned>::value>::type const* = nullptr)
|
|
106
|
+
: m_value(i, digits10)
|
|
107
|
+
{
|
|
108
|
+
log_postfix_event(m_value, "construct from arithmetic type and precision");
|
|
109
|
+
}
|
|
110
|
+
template <class D = Backend>
|
|
111
|
+
logged_adaptor(const logged_adaptor<Backend>& i, unsigned digits10, typename std::enable_if<std::is_constructible<D, Backend const&, unsigned>::value>::type const* = nullptr)
|
|
112
|
+
: m_value(i.value(), digits10)
|
|
113
|
+
{
|
|
114
|
+
log_postfix_event(m_value, "construct from arithmetic type and precision");
|
|
115
|
+
}
|
|
116
|
+
template <class T>
|
|
117
|
+
typename std::enable_if<boost::multiprecision::detail::is_arithmetic<T>::value || std::is_assignable<Backend, T>::value, logged_adaptor&>::type operator=(const T& i)
|
|
118
|
+
{
|
|
119
|
+
log_prefix_event(m_value, i, "Assignment from arithmetic type");
|
|
120
|
+
m_value = i;
|
|
121
|
+
log_postfix_event(m_value, "Assignment from arithmetic type");
|
|
122
|
+
return *this;
|
|
123
|
+
}
|
|
124
|
+
logged_adaptor& operator=(const char* s)
|
|
125
|
+
{
|
|
126
|
+
log_prefix_event(m_value, s, "Assignment from string type");
|
|
127
|
+
m_value = s;
|
|
128
|
+
log_postfix_event(m_value, "Assignment from string type");
|
|
129
|
+
return *this;
|
|
130
|
+
}
|
|
131
|
+
void swap(logged_adaptor& o)
|
|
132
|
+
{
|
|
133
|
+
log_prefix_event(m_value, o.value(), "swap");
|
|
134
|
+
std::swap(m_value, o.value());
|
|
135
|
+
log_postfix_event(m_value, "swap");
|
|
136
|
+
}
|
|
137
|
+
std::string str(std::streamsize digits, std::ios_base::fmtflags f) const
|
|
138
|
+
{
|
|
139
|
+
log_prefix_event(m_value, "Conversion to string");
|
|
140
|
+
std::string s = m_value.str(digits, f);
|
|
141
|
+
log_postfix_event(m_value, s, "Conversion to string");
|
|
142
|
+
return s;
|
|
143
|
+
}
|
|
144
|
+
void negate()
|
|
145
|
+
{
|
|
146
|
+
log_prefix_event(m_value, "negate");
|
|
147
|
+
m_value.negate();
|
|
148
|
+
log_postfix_event(m_value, "negate");
|
|
149
|
+
}
|
|
150
|
+
int compare(const logged_adaptor& o) const
|
|
151
|
+
{
|
|
152
|
+
log_prefix_event(m_value, o.value(), "compare");
|
|
153
|
+
int r = m_value.compare(o.value());
|
|
154
|
+
log_postfix_event(m_value, r, "compare");
|
|
155
|
+
return r;
|
|
156
|
+
}
|
|
157
|
+
template <class T>
|
|
158
|
+
int compare(const T& i) const
|
|
159
|
+
{
|
|
160
|
+
log_prefix_event(m_value, i, "compare");
|
|
161
|
+
int r = m_value.compare(i);
|
|
162
|
+
log_postfix_event(m_value, r, "compare");
|
|
163
|
+
return r;
|
|
164
|
+
}
|
|
165
|
+
Backend& value()
|
|
166
|
+
{
|
|
167
|
+
return m_value;
|
|
168
|
+
}
|
|
169
|
+
const Backend& value() const
|
|
170
|
+
{
|
|
171
|
+
return m_value;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
#ifndef BOOST_MP_STANDALONE
|
|
175
|
+
template <class Archive>
|
|
176
|
+
void serialize(Archive& ar, const unsigned int /*version*/)
|
|
177
|
+
{
|
|
178
|
+
log_prefix_event(m_value, "serialize");
|
|
179
|
+
ar& boost::make_nvp("value", m_value);
|
|
180
|
+
log_postfix_event(m_value, "serialize");
|
|
181
|
+
}
|
|
182
|
+
#endif
|
|
183
|
+
|
|
184
|
+
static unsigned default_precision() noexcept
|
|
185
|
+
{
|
|
186
|
+
return Backend::default_precision();
|
|
187
|
+
}
|
|
188
|
+
static void default_precision(unsigned v) noexcept
|
|
189
|
+
{
|
|
190
|
+
Backend::default_precision(v);
|
|
191
|
+
}
|
|
192
|
+
static unsigned thread_default_precision() noexcept
|
|
193
|
+
{
|
|
194
|
+
return Backend::thread_default_precision();
|
|
195
|
+
}
|
|
196
|
+
static void thread_default_precision(unsigned v) noexcept
|
|
197
|
+
{
|
|
198
|
+
Backend::thread_default_precision(v);
|
|
199
|
+
}
|
|
200
|
+
unsigned precision() const noexcept
|
|
201
|
+
{
|
|
202
|
+
return value().precision();
|
|
203
|
+
}
|
|
204
|
+
void precision(unsigned digits10) noexcept
|
|
205
|
+
{
|
|
206
|
+
value().precision(digits10);
|
|
207
|
+
}
|
|
208
|
+
//
|
|
209
|
+
// Variable precision options:
|
|
210
|
+
//
|
|
211
|
+
static constexpr variable_precision_options default_variable_precision_options()noexcept
|
|
212
|
+
{
|
|
213
|
+
return Backend::default_variable_precision_options();
|
|
214
|
+
}
|
|
215
|
+
static constexpr variable_precision_options thread_default_variable_precision_options()noexcept
|
|
216
|
+
{
|
|
217
|
+
return Backend::thread_default_variable_precision_options();
|
|
218
|
+
}
|
|
219
|
+
static BOOST_MP_CXX14_CONSTEXPR void default_variable_precision_options(variable_precision_options opts)
|
|
220
|
+
{
|
|
221
|
+
Backend::default_variable_precision_options(opts);
|
|
222
|
+
}
|
|
223
|
+
static BOOST_MP_CXX14_CONSTEXPR void thread_default_variable_precision_options(variable_precision_options opts)
|
|
224
|
+
{
|
|
225
|
+
Backend::thread_default_variable_precision_options(opts);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
template <class T>
|
|
230
|
+
inline const T& unwrap_logged_type(const T& a) { return a; }
|
|
231
|
+
template <class Backend>
|
|
232
|
+
inline const Backend& unwrap_logged_type(const logged_adaptor<Backend>& a) { return a.value(); }
|
|
233
|
+
|
|
234
|
+
#define NON_MEMBER_OP1(name, str) \
|
|
235
|
+
template <class Backend> \
|
|
236
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result) \
|
|
237
|
+
{ \
|
|
238
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
239
|
+
log_prefix_event(result.value(), str); \
|
|
240
|
+
BOOST_JOIN(eval_, name) \
|
|
241
|
+
(result.value()); \
|
|
242
|
+
log_postfix_event(result.value(), str); \
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
#define NON_MEMBER_OP2(name, str) \
|
|
246
|
+
template <class Backend, class T> \
|
|
247
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const T& a) \
|
|
248
|
+
{ \
|
|
249
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
250
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), str); \
|
|
251
|
+
BOOST_JOIN(eval_, name) \
|
|
252
|
+
(result.value(), unwrap_logged_type(a)); \
|
|
253
|
+
log_postfix_event(result.value(), str); \
|
|
254
|
+
} \
|
|
255
|
+
template <class Backend> \
|
|
256
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a) \
|
|
257
|
+
{ \
|
|
258
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
259
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), str); \
|
|
260
|
+
BOOST_JOIN(eval_, name) \
|
|
261
|
+
(result.value(), unwrap_logged_type(a)); \
|
|
262
|
+
log_postfix_event(result.value(), str); \
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
#define NON_MEMBER_OP3(name, str) \
|
|
266
|
+
template <class Backend, class T, class U> \
|
|
267
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const T& a, const U& b) \
|
|
268
|
+
{ \
|
|
269
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
270
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str); \
|
|
271
|
+
BOOST_JOIN(eval_, name) \
|
|
272
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b)); \
|
|
273
|
+
log_postfix_event(result.value(), str); \
|
|
274
|
+
} \
|
|
275
|
+
template <class Backend, class T> \
|
|
276
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const T& b) \
|
|
277
|
+
{ \
|
|
278
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
279
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str); \
|
|
280
|
+
BOOST_JOIN(eval_, name) \
|
|
281
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b)); \
|
|
282
|
+
log_postfix_event(result.value(), str); \
|
|
283
|
+
} \
|
|
284
|
+
template <class Backend, class T> \
|
|
285
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const T& a, const logged_adaptor<Backend>& b) \
|
|
286
|
+
{ \
|
|
287
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
288
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str); \
|
|
289
|
+
BOOST_JOIN(eval_, name) \
|
|
290
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b)); \
|
|
291
|
+
log_postfix_event(result.value(), str); \
|
|
292
|
+
} \
|
|
293
|
+
template <class Backend> \
|
|
294
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const logged_adaptor<Backend>& b) \
|
|
295
|
+
{ \
|
|
296
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
297
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str); \
|
|
298
|
+
BOOST_JOIN(eval_, name) \
|
|
299
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b)); \
|
|
300
|
+
log_postfix_event(result.value(), str); \
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
#define NON_MEMBER_OP4(name, str) \
|
|
304
|
+
template <class Backend, class T, class U, class V> \
|
|
305
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const T& a, const U& b, const V& c) \
|
|
306
|
+
{ \
|
|
307
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
308
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
309
|
+
BOOST_JOIN(eval_, name) \
|
|
310
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
311
|
+
log_postfix_event(result.value(), str); \
|
|
312
|
+
} \
|
|
313
|
+
template <class Backend, class T> \
|
|
314
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const logged_adaptor<Backend>& b, const T& c) \
|
|
315
|
+
{ \
|
|
316
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
317
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
318
|
+
BOOST_JOIN(eval_, name) \
|
|
319
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
320
|
+
log_postfix_event(result.value(), str); \
|
|
321
|
+
} \
|
|
322
|
+
template <class Backend, class T> \
|
|
323
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const T& b, const logged_adaptor<Backend>& c) \
|
|
324
|
+
{ \
|
|
325
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
326
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
327
|
+
BOOST_JOIN(eval_, name) \
|
|
328
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
329
|
+
log_postfix_event(result.value(), str); \
|
|
330
|
+
} \
|
|
331
|
+
template <class Backend, class T> \
|
|
332
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const T& a, const logged_adaptor<Backend>& b, const logged_adaptor<Backend>& c) \
|
|
333
|
+
{ \
|
|
334
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
335
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
336
|
+
BOOST_JOIN(eval_, name) \
|
|
337
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
338
|
+
log_postfix_event(result.value(), str); \
|
|
339
|
+
} \
|
|
340
|
+
template <class Backend> \
|
|
341
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const logged_adaptor<Backend>& b, const logged_adaptor<Backend>& c) \
|
|
342
|
+
{ \
|
|
343
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
344
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
345
|
+
BOOST_JOIN(eval_, name) \
|
|
346
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
347
|
+
log_postfix_event(result.value(), str); \
|
|
348
|
+
} \
|
|
349
|
+
template <class Backend, class T, class U> \
|
|
350
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<Backend> & result, const logged_adaptor<Backend>& a, const T& b, const U& c) \
|
|
351
|
+
{ \
|
|
352
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
353
|
+
log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str); \
|
|
354
|
+
BOOST_JOIN(eval_, name) \
|
|
355
|
+
(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c)); \
|
|
356
|
+
log_postfix_event(result.value(), str); \
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
NON_MEMBER_OP2(add, "+=")
|
|
360
|
+
NON_MEMBER_OP2(subtract, "-=")
|
|
361
|
+
NON_MEMBER_OP2(multiply, "*=")
|
|
362
|
+
NON_MEMBER_OP2(divide, "/=")
|
|
363
|
+
|
|
364
|
+
template <class Backend, class R>
|
|
365
|
+
inline void eval_convert_to(R* result, const logged_adaptor<Backend>& val)
|
|
366
|
+
{
|
|
367
|
+
using default_ops::eval_convert_to;
|
|
368
|
+
log_prefix_event(val.value(), "convert_to");
|
|
369
|
+
eval_convert_to(result, val.value());
|
|
370
|
+
log_postfix_event(val.value(), *result, "convert_to");
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
template <class Backend, class R>
|
|
374
|
+
inline void eval_convert_to(logged_adaptor<R>* result, const logged_adaptor<Backend>& val)
|
|
375
|
+
{
|
|
376
|
+
using default_ops::eval_convert_to;
|
|
377
|
+
log_prefix_event(val.value(), "convert_to");
|
|
378
|
+
eval_convert_to(&result->value(), val.value());
|
|
379
|
+
log_postfix_event(val.value(), &result->value(), "convert_to");
|
|
380
|
+
}
|
|
381
|
+
template <class Backend, class R>
|
|
382
|
+
inline void eval_convert_to(logged_adaptor<R>* result, const Backend& val)
|
|
383
|
+
{
|
|
384
|
+
using default_ops::eval_convert_to;
|
|
385
|
+
log_prefix_event(val, "convert_to");
|
|
386
|
+
eval_convert_to(&result->value(), val);
|
|
387
|
+
log_postfix_event(val, &result->value(), "convert_to");
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
template <class Backend>
|
|
391
|
+
inline void eval_convert_to(std::complex<float>* result, const logged_adaptor<Backend>& val)
|
|
392
|
+
{
|
|
393
|
+
using default_ops::eval_convert_to;
|
|
394
|
+
log_prefix_event(val.value(), "convert_to");
|
|
395
|
+
eval_convert_to(result, val.value());
|
|
396
|
+
log_postfix_event(val.value(), *result, "convert_to");
|
|
397
|
+
}
|
|
398
|
+
template <class Backend>
|
|
399
|
+
inline void eval_convert_to(std::complex<double>* result, const logged_adaptor<Backend>& val)
|
|
400
|
+
{
|
|
401
|
+
using default_ops::eval_convert_to;
|
|
402
|
+
log_prefix_event(val.value(), "convert_to");
|
|
403
|
+
eval_convert_to(result, val.value());
|
|
404
|
+
log_postfix_event(val.value(), *result, "convert_to");
|
|
405
|
+
}
|
|
406
|
+
template <class Backend>
|
|
407
|
+
inline void eval_convert_to(std::complex<long double>* result, const logged_adaptor<Backend>& val)
|
|
408
|
+
{
|
|
409
|
+
using default_ops::eval_convert_to;
|
|
410
|
+
log_prefix_event(val.value(), "convert_to");
|
|
411
|
+
eval_convert_to(result, val.value());
|
|
412
|
+
log_postfix_event(val.value(), *result, "convert_to");
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
template <class Backend, class Exp>
|
|
417
|
+
inline void eval_frexp(logged_adaptor<Backend>& result, const logged_adaptor<Backend>& arg, Exp* exp)
|
|
418
|
+
{
|
|
419
|
+
log_prefix_event(arg.value(), "frexp");
|
|
420
|
+
eval_frexp(result.value(), arg.value(), exp);
|
|
421
|
+
log_postfix_event(result.value(), *exp, "frexp");
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
template <class Backend, class Exp>
|
|
425
|
+
inline void eval_ldexp(logged_adaptor<Backend>& result, const logged_adaptor<Backend>& arg, Exp exp)
|
|
426
|
+
{
|
|
427
|
+
log_prefix_event(arg.value(), "ldexp");
|
|
428
|
+
eval_ldexp(result.value(), arg.value(), exp);
|
|
429
|
+
log_postfix_event(result.value(), exp, "ldexp");
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
template <class Backend, class Exp>
|
|
433
|
+
inline void eval_scalbn(logged_adaptor<Backend>& result, const logged_adaptor<Backend>& arg, Exp exp)
|
|
434
|
+
{
|
|
435
|
+
using default_ops::eval_scalbn;
|
|
436
|
+
log_prefix_event(arg.value(), "scalbn");
|
|
437
|
+
eval_scalbn(result.value(), arg.value(), exp);
|
|
438
|
+
log_postfix_event(result.value(), exp, "scalbn");
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
template <class Backend>
|
|
442
|
+
inline typename Backend::exponent_type eval_ilogb(const logged_adaptor<Backend>& arg)
|
|
443
|
+
{
|
|
444
|
+
using default_ops::eval_ilogb;
|
|
445
|
+
log_prefix_event(arg.value(), "ilogb");
|
|
446
|
+
typename Backend::exponent_type r = eval_ilogb(arg.value());
|
|
447
|
+
log_postfix_event(arg.value(), "ilogb");
|
|
448
|
+
return r;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
NON_MEMBER_OP2(floor, "floor")
|
|
452
|
+
NON_MEMBER_OP2(ceil, "ceil")
|
|
453
|
+
NON_MEMBER_OP2(sqrt, "sqrt")
|
|
454
|
+
|
|
455
|
+
template <class Backend>
|
|
456
|
+
inline int eval_fpclassify(const logged_adaptor<Backend>& arg)
|
|
457
|
+
{
|
|
458
|
+
using default_ops::eval_fpclassify;
|
|
459
|
+
log_prefix_event(arg.value(), "fpclassify");
|
|
460
|
+
int r = eval_fpclassify(arg.value());
|
|
461
|
+
log_postfix_event(arg.value(), r, "fpclassify");
|
|
462
|
+
return r;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/*********************************************************************
|
|
466
|
+
*
|
|
467
|
+
* Optional arithmetic operations come next:
|
|
468
|
+
*
|
|
469
|
+
*********************************************************************/
|
|
470
|
+
|
|
471
|
+
NON_MEMBER_OP3(add, "+")
|
|
472
|
+
NON_MEMBER_OP3(subtract, "-")
|
|
473
|
+
NON_MEMBER_OP3(multiply, "*")
|
|
474
|
+
NON_MEMBER_OP3(divide, "/")
|
|
475
|
+
NON_MEMBER_OP3(multiply_add, "fused-multiply-add")
|
|
476
|
+
NON_MEMBER_OP3(multiply_subtract, "fused-multiply-subtract")
|
|
477
|
+
NON_MEMBER_OP4(multiply_add, "fused-multiply-add")
|
|
478
|
+
NON_MEMBER_OP4(multiply_subtract, "fused-multiply-subtract")
|
|
479
|
+
|
|
480
|
+
NON_MEMBER_OP1(increment, "increment")
|
|
481
|
+
NON_MEMBER_OP1(decrement, "decrement")
|
|
482
|
+
|
|
483
|
+
/*********************************************************************
|
|
484
|
+
*
|
|
485
|
+
* Optional integer operations come next:
|
|
486
|
+
*
|
|
487
|
+
*********************************************************************/
|
|
488
|
+
|
|
489
|
+
NON_MEMBER_OP2(modulus, "%=")
|
|
490
|
+
NON_MEMBER_OP3(modulus, "%")
|
|
491
|
+
NON_MEMBER_OP2(bitwise_or, "|=")
|
|
492
|
+
NON_MEMBER_OP3(bitwise_or, "|")
|
|
493
|
+
NON_MEMBER_OP2(bitwise_and, "&=")
|
|
494
|
+
NON_MEMBER_OP3(bitwise_and, "&")
|
|
495
|
+
NON_MEMBER_OP2(bitwise_xor, "^=")
|
|
496
|
+
NON_MEMBER_OP3(bitwise_xor, "^")
|
|
497
|
+
NON_MEMBER_OP4(qr, "quotient-and-remainder")
|
|
498
|
+
NON_MEMBER_OP2(complement, "~")
|
|
499
|
+
|
|
500
|
+
template <class Backend>
|
|
501
|
+
inline void eval_left_shift(logged_adaptor<Backend>& arg, std::size_t a)
|
|
502
|
+
{
|
|
503
|
+
using default_ops::eval_left_shift;
|
|
504
|
+
log_prefix_event(arg.value(), a, "<<=");
|
|
505
|
+
eval_left_shift(arg.value(), a);
|
|
506
|
+
log_postfix_event(arg.value(), "<<=");
|
|
507
|
+
}
|
|
508
|
+
template <class Backend>
|
|
509
|
+
inline void eval_left_shift(logged_adaptor<Backend>& arg, const logged_adaptor<Backend>& a, std::size_t b)
|
|
510
|
+
{
|
|
511
|
+
using default_ops::eval_left_shift;
|
|
512
|
+
log_prefix_event(arg.value(), a, b, "<<");
|
|
513
|
+
eval_left_shift(arg.value(), a.value(), b);
|
|
514
|
+
log_postfix_event(arg.value(), "<<");
|
|
515
|
+
}
|
|
516
|
+
template <class Backend>
|
|
517
|
+
inline void eval_right_shift(logged_adaptor<Backend>& arg, std::size_t a)
|
|
518
|
+
{
|
|
519
|
+
using default_ops::eval_right_shift;
|
|
520
|
+
log_prefix_event(arg.value(), a, ">>=");
|
|
521
|
+
eval_right_shift(arg.value(), a);
|
|
522
|
+
log_postfix_event(arg.value(), ">>=");
|
|
523
|
+
}
|
|
524
|
+
template <class Backend>
|
|
525
|
+
inline void eval_right_shift(logged_adaptor<Backend>& arg, const logged_adaptor<Backend>& a, std::size_t b)
|
|
526
|
+
{
|
|
527
|
+
using default_ops::eval_right_shift;
|
|
528
|
+
log_prefix_event(arg.value(), a, b, ">>");
|
|
529
|
+
eval_right_shift(arg.value(), a.value(), b);
|
|
530
|
+
log_postfix_event(arg.value(), ">>");
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
template <class Backend, class T>
|
|
534
|
+
inline T eval_integer_modulus(const logged_adaptor<Backend>& arg, const T& a)
|
|
535
|
+
{
|
|
536
|
+
using default_ops::eval_integer_modulus;
|
|
537
|
+
log_prefix_event(arg.value(), a, "integer-modulus");
|
|
538
|
+
T r = eval_integer_modulus(arg.value(), a);
|
|
539
|
+
log_postfix_event(arg.value(), r, "integer-modulus");
|
|
540
|
+
return r;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
template <class Backend>
|
|
544
|
+
inline std::size_t eval_lsb(const logged_adaptor<Backend>& arg)
|
|
545
|
+
{
|
|
546
|
+
using default_ops::eval_lsb;
|
|
547
|
+
log_prefix_event(arg.value(), "least-significant-bit");
|
|
548
|
+
std::size_t r = eval_lsb(arg.value());
|
|
549
|
+
log_postfix_event(arg.value(), r, "least-significant-bit");
|
|
550
|
+
return r;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
template <class Backend>
|
|
554
|
+
inline std::size_t eval_msb(const logged_adaptor<Backend>& arg)
|
|
555
|
+
{
|
|
556
|
+
using default_ops::eval_msb;
|
|
557
|
+
log_prefix_event(arg.value(), "most-significant-bit");
|
|
558
|
+
std::size_t r = eval_msb(arg.value());
|
|
559
|
+
log_postfix_event(arg.value(), r, "most-significant-bit");
|
|
560
|
+
return r;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
template <class Backend>
|
|
564
|
+
inline bool eval_bit_test(const logged_adaptor<Backend>& arg, std::size_t a)
|
|
565
|
+
{
|
|
566
|
+
using default_ops::eval_bit_test;
|
|
567
|
+
log_prefix_event(arg.value(), a, "bit-test");
|
|
568
|
+
bool r = eval_bit_test(arg.value(), a);
|
|
569
|
+
log_postfix_event(arg.value(), r, "bit-test");
|
|
570
|
+
return r;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
template <class Backend>
|
|
574
|
+
inline void eval_bit_set(const logged_adaptor<Backend>& arg, std::size_t a)
|
|
575
|
+
{
|
|
576
|
+
using default_ops::eval_bit_set;
|
|
577
|
+
log_prefix_event(arg.value(), a, "bit-set");
|
|
578
|
+
eval_bit_set(arg.value(), a);
|
|
579
|
+
log_postfix_event(arg.value(), arg, "bit-set");
|
|
580
|
+
}
|
|
581
|
+
template <class Backend>
|
|
582
|
+
inline void eval_bit_unset(const logged_adaptor<Backend>& arg, std::size_t a)
|
|
583
|
+
{
|
|
584
|
+
using default_ops::eval_bit_unset;
|
|
585
|
+
log_prefix_event(arg.value(), a, "bit-unset");
|
|
586
|
+
eval_bit_unset(arg.value(), a);
|
|
587
|
+
log_postfix_event(arg.value(), arg, "bit-unset");
|
|
588
|
+
}
|
|
589
|
+
template <class Backend>
|
|
590
|
+
inline void eval_bit_flip(const logged_adaptor<Backend>& arg, std::size_t a)
|
|
591
|
+
{
|
|
592
|
+
using default_ops::eval_bit_flip;
|
|
593
|
+
log_prefix_event(arg.value(), a, "bit-flip");
|
|
594
|
+
eval_bit_flip(arg.value(), a);
|
|
595
|
+
log_postfix_event(arg.value(), arg, "bit-flip");
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
NON_MEMBER_OP3(gcd, "gcd")
|
|
599
|
+
NON_MEMBER_OP3(lcm, "lcm")
|
|
600
|
+
NON_MEMBER_OP4(powm, "powm")
|
|
601
|
+
|
|
602
|
+
/*********************************************************************
|
|
603
|
+
*
|
|
604
|
+
* abs/fabs:
|
|
605
|
+
*
|
|
606
|
+
*********************************************************************/
|
|
607
|
+
|
|
608
|
+
NON_MEMBER_OP2(abs, "abs")
|
|
609
|
+
NON_MEMBER_OP2(fabs, "fabs")
|
|
610
|
+
|
|
611
|
+
/*********************************************************************
|
|
612
|
+
*
|
|
613
|
+
* Floating point functions:
|
|
614
|
+
*
|
|
615
|
+
*********************************************************************/
|
|
616
|
+
|
|
617
|
+
NON_MEMBER_OP2(trunc, "trunc")
|
|
618
|
+
NON_MEMBER_OP2(round, "round")
|
|
619
|
+
NON_MEMBER_OP2(exp, "exp")
|
|
620
|
+
NON_MEMBER_OP2(log, "log")
|
|
621
|
+
NON_MEMBER_OP2(log10, "log10")
|
|
622
|
+
NON_MEMBER_OP2(sin, "sin")
|
|
623
|
+
NON_MEMBER_OP2(cos, "cos")
|
|
624
|
+
NON_MEMBER_OP2(tan, "tan")
|
|
625
|
+
NON_MEMBER_OP2(asin, "asin")
|
|
626
|
+
NON_MEMBER_OP2(acos, "acos")
|
|
627
|
+
NON_MEMBER_OP2(atan, "atan")
|
|
628
|
+
NON_MEMBER_OP2(sinh, "sinh")
|
|
629
|
+
NON_MEMBER_OP2(cosh, "cosh")
|
|
630
|
+
NON_MEMBER_OP2(tanh, "tanh")
|
|
631
|
+
NON_MEMBER_OP2(logb, "logb")
|
|
632
|
+
NON_MEMBER_OP3(fmod, "fmod")
|
|
633
|
+
NON_MEMBER_OP3(pow, "pow")
|
|
634
|
+
NON_MEMBER_OP3(atan2, "atan2")
|
|
635
|
+
NON_MEMBER_OP2(asinh, "asinh")
|
|
636
|
+
NON_MEMBER_OP2(acosh, "acosh")
|
|
637
|
+
NON_MEMBER_OP2(atanh, "atanh")
|
|
638
|
+
NON_MEMBER_OP2(conj, "conj")
|
|
639
|
+
|
|
640
|
+
template <class Backend>
|
|
641
|
+
int eval_signbit(const logged_adaptor<Backend>& val)
|
|
642
|
+
{
|
|
643
|
+
using default_ops::eval_signbit;
|
|
644
|
+
return eval_signbit(val.value());
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
template <class Backend>
|
|
648
|
+
std::size_t hash_value(const logged_adaptor<Backend>& val)
|
|
649
|
+
{
|
|
650
|
+
return hash_value(val.value());
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
654
|
+
inline typename std::enable_if<number_category<Backend>::value == number_kind_rational, typename number<logged_adaptor<Backend>, ExpressionTemplates>::value_type>::type
|
|
655
|
+
numerator(const number<logged_adaptor<Backend>, ExpressionTemplates>& arg)
|
|
656
|
+
{
|
|
657
|
+
number<Backend, ExpressionTemplates> t(arg.backend().value());
|
|
658
|
+
return numerator(t).backend();
|
|
659
|
+
}
|
|
660
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
661
|
+
inline typename std::enable_if<number_category<Backend>::value == number_kind_rational, typename number<logged_adaptor<Backend>, ExpressionTemplates>::value_type>::type
|
|
662
|
+
denominator(const number<logged_adaptor<Backend>, ExpressionTemplates>& arg)
|
|
663
|
+
{
|
|
664
|
+
number<Backend, ExpressionTemplates> t(arg.backend().value());
|
|
665
|
+
return denominator(t).backend();
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
template <class To, class From>
|
|
669
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(To& to, const logged_adaptor<From>& from)
|
|
670
|
+
{
|
|
671
|
+
using default_ops::eval_set_real;
|
|
672
|
+
log_prefix_event(to, from.value(), "Set real part");
|
|
673
|
+
eval_set_real(to, from.value());
|
|
674
|
+
log_postfix_event(to, from.value(), "Set real part");
|
|
675
|
+
}
|
|
676
|
+
template <class To, class From>
|
|
677
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(logged_adaptor<To>& to, const logged_adaptor<From>& from)
|
|
678
|
+
{
|
|
679
|
+
using default_ops::eval_set_real;
|
|
680
|
+
log_prefix_event(to.value(), from.value(), "Set real part");
|
|
681
|
+
eval_set_real(to.value(), from.value());
|
|
682
|
+
log_postfix_event(to.value(), from.value(), "Set real part");
|
|
683
|
+
}
|
|
684
|
+
template <class To, class From>
|
|
685
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_real(logged_adaptor<To>& to, const From& from)
|
|
686
|
+
{
|
|
687
|
+
using default_ops::eval_set_real;
|
|
688
|
+
log_prefix_event(to.value(), from, "Set real part");
|
|
689
|
+
eval_set_real(to.value(), from);
|
|
690
|
+
log_postfix_event(to.value(), from, "Set real part");
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
template <class To, class From>
|
|
694
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(To& to, const logged_adaptor<From>& from)
|
|
695
|
+
{
|
|
696
|
+
using default_ops::eval_set_imag;
|
|
697
|
+
log_prefix_event(to, from.value(), "Set imag part");
|
|
698
|
+
eval_set_imag(to, from.value());
|
|
699
|
+
log_postfix_event(to, from.value(), "Set imag part");
|
|
700
|
+
}
|
|
701
|
+
template <class To, class From>
|
|
702
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(logged_adaptor<To>& to, const logged_adaptor<From>& from)
|
|
703
|
+
{
|
|
704
|
+
using default_ops::eval_set_imag;
|
|
705
|
+
log_prefix_event(to.value(), from.value(), "Set imag part");
|
|
706
|
+
eval_set_imag(to.value(), from.value());
|
|
707
|
+
log_postfix_event(to.value(), from.value(), "Set imag part");
|
|
708
|
+
}
|
|
709
|
+
template <class To, class From>
|
|
710
|
+
inline BOOST_MP_CXX14_CONSTEXPR void eval_set_imag(logged_adaptor<To>& to, const From& from)
|
|
711
|
+
{
|
|
712
|
+
using default_ops::eval_set_imag;
|
|
713
|
+
log_prefix_event(to.value(), from, "Set imag part");
|
|
714
|
+
eval_set_imag(to.value(), from);
|
|
715
|
+
log_postfix_event(to.value(), from, "Set imag part");
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
#define NON_MEMBER_COMPLEX_TO_REAL(name, str) \
|
|
720
|
+
template <class B1, class B2> \
|
|
721
|
+
inline void BOOST_JOIN(eval_, name)(logged_adaptor<B1> & result, const logged_adaptor<B2>& a) \
|
|
722
|
+
{ \
|
|
723
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
724
|
+
log_prefix_event(a.value(), a.value(), str); \
|
|
725
|
+
BOOST_JOIN(eval_, name) \
|
|
726
|
+
(result.value(), a.value()); \
|
|
727
|
+
log_postfix_event(result.value(), str); \
|
|
728
|
+
} \
|
|
729
|
+
template <class B1, class B2> \
|
|
730
|
+
inline void BOOST_JOIN(eval_, name)(B1 & result, const logged_adaptor<B2>& a) \
|
|
731
|
+
{ \
|
|
732
|
+
using default_ops::BOOST_JOIN(eval_, name); \
|
|
733
|
+
log_prefix_event(a.value(), a.value(), str); \
|
|
734
|
+
BOOST_JOIN(eval_, name) \
|
|
735
|
+
(result, a.value()); \
|
|
736
|
+
log_postfix_event(result, str); \
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
NON_MEMBER_COMPLEX_TO_REAL(real, "real")
|
|
740
|
+
NON_MEMBER_COMPLEX_TO_REAL(imag, "imag")
|
|
741
|
+
|
|
742
|
+
template <class T, class V, class U>
|
|
743
|
+
inline void assign_components(logged_adaptor<T>& result, const V& v1, const U& v2)
|
|
744
|
+
{
|
|
745
|
+
using default_ops::assign_components;
|
|
746
|
+
assign_components(result.value(), unwrap_logged_type(v1), unwrap_logged_type(v2));
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
} // namespace backends
|
|
750
|
+
|
|
751
|
+
namespace detail {
|
|
752
|
+
template <class Backend>
|
|
753
|
+
struct is_variable_precision<logged_adaptor<Backend> > : public is_variable_precision<Backend>
|
|
754
|
+
{};
|
|
755
|
+
#ifdef BOOST_HAS_INT128
|
|
756
|
+
template <class Backend>
|
|
757
|
+
struct is_convertible_arithmetic<int128_type, logged_adaptor<Backend> > : public is_convertible_arithmetic<int128_type, Backend>
|
|
758
|
+
{};
|
|
759
|
+
template <class Backend>
|
|
760
|
+
struct is_convertible_arithmetic<uint128_type, logged_adaptor<Backend> > : public is_convertible_arithmetic<uint128_type, Backend>
|
|
761
|
+
{};
|
|
762
|
+
#endif
|
|
763
|
+
#ifdef BOOST_HAS_FLOAT128
|
|
764
|
+
template <class Backend>
|
|
765
|
+
struct is_convertible_arithmetic<float128_type, logged_adaptor<Backend> > : public is_convertible_arithmetic<float128_type, Backend>
|
|
766
|
+
{};
|
|
767
|
+
#endif
|
|
768
|
+
} // namespace detail
|
|
769
|
+
|
|
770
|
+
template <class Backend>
|
|
771
|
+
struct number_category<backends::logged_adaptor<Backend> > : public number_category<Backend>
|
|
772
|
+
{};
|
|
773
|
+
|
|
774
|
+
template <class Backend, expression_template_option ExpressionTemplates>
|
|
775
|
+
struct component_type<number<logged_adaptor<Backend>, ExpressionTemplates>>
|
|
776
|
+
{
|
|
777
|
+
//
|
|
778
|
+
// We'll make the component_type also a logged_adaptor:
|
|
779
|
+
//
|
|
780
|
+
using base_component_type = typename component_type<number<Backend, ExpressionTemplates>>::type;
|
|
781
|
+
using base_component_backend = typename base_component_type::backend_type;
|
|
782
|
+
using type = number<logged_adaptor<base_component_backend>, ExpressionTemplates>;
|
|
783
|
+
};
|
|
784
|
+
|
|
785
|
+
template <class Backend>
|
|
786
|
+
struct is_interval_number<backends::logged_adaptor<Backend> > : public is_interval_number<Backend> {};
|
|
787
|
+
|
|
788
|
+
}} // namespace boost::multiprecision
|
|
789
|
+
|
|
790
|
+
namespace std {
|
|
791
|
+
|
|
792
|
+
template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
|
|
793
|
+
class numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::logged_adaptor<Backend>, ExpressionTemplates> >
|
|
794
|
+
: public std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> >
|
|
795
|
+
{
|
|
796
|
+
using base_type = std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> > ;
|
|
797
|
+
using number_type = boost::multiprecision::number<boost::multiprecision::backends::logged_adaptor<Backend>, ExpressionTemplates>;
|
|
798
|
+
|
|
799
|
+
public:
|
|
800
|
+
static number_type(min)() noexcept { return (base_type::min)(); }
|
|
801
|
+
static number_type(max)() noexcept { return (base_type::max)(); }
|
|
802
|
+
static number_type lowest() noexcept { return -(max)(); }
|
|
803
|
+
static number_type epsilon() noexcept { return base_type::epsilon(); }
|
|
804
|
+
static number_type round_error() noexcept { return epsilon() / 2; }
|
|
805
|
+
static number_type infinity() noexcept { return base_type::infinity(); }
|
|
806
|
+
static number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); }
|
|
807
|
+
static number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); }
|
|
808
|
+
static number_type denorm_min() noexcept { return base_type::denorm_min(); }
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
} // namespace std
|
|
812
|
+
|
|
813
|
+
#ifdef BOOST_MP_MATH_AVAILABLE
|
|
814
|
+
namespace boost {
|
|
815
|
+
namespace math {
|
|
816
|
+
|
|
817
|
+
namespace policies {
|
|
818
|
+
|
|
819
|
+
template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates, class Policy>
|
|
820
|
+
struct precision<boost::multiprecision::number<boost::multiprecision::logged_adaptor<Backend>, ExpressionTemplates>, Policy>
|
|
821
|
+
: public precision<boost::multiprecision::number<Backend, ExpressionTemplates>, Policy>
|
|
822
|
+
{};
|
|
823
|
+
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
}} // namespace boost::math::policies
|
|
827
|
+
#endif // BOOST_MP_MATH_AVAILABLE
|
|
828
|
+
|
|
829
|
+
#undef NON_MEMBER_OP1
|
|
830
|
+
#undef NON_MEMBER_OP2
|
|
831
|
+
#undef NON_MEMBER_OP3
|
|
832
|
+
#undef NON_MEMBER_OP4
|
|
833
|
+
|
|
834
|
+
#endif
|