mqt-core 3.3.2__cp314-cp314t-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mqt/core/__init__.py +89 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +34 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/bin/mqt-core-algorithms.dll +0 -0
- mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
- mqt/core/bin/mqt-core-dd.dll +0 -0
- mqt/core/bin/mqt-core-ds.dll +0 -0
- mqt/core/bin/mqt-core-fomac.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na-fomac.dll +0 -0
- mqt/core/bin/mqt-core-na.dll +0 -0
- mqt/core/bin/mqt-core-qasm.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp314t-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp314t-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
- mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
- mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cp314t-win_amd64.pyd +0 -0
- mqt/core/lib/mqt-core-algorithms.lib +0 -0
- mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
- mqt/core/lib/mqt-core-dd.lib +0 -0
- mqt/core/lib/mqt-core-ds.lib +0 -0
- mqt/core/lib/mqt-core-fomac.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na-fomac.lib +0 -0
- mqt/core/lib/mqt-core-na.lib +0 -0
- mqt/core/lib/mqt-core-qasm.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/lib/spdlog.lib +0 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cp314t-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +537 -0
- mqt_core-3.3.2.dist-info/WHEEL +5 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
- mqt_core.libs/msvcp140.dll +0 -0
|
@@ -0,0 +1,661 @@
|
|
|
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 http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
|
|
6
|
+
#ifndef BOOST_MP_NO_ET_OPS_HPP
|
|
7
|
+
#define BOOST_MP_NO_ET_OPS_HPP
|
|
8
|
+
|
|
9
|
+
#ifdef BOOST_MSVC
|
|
10
|
+
#pragma warning(push)
|
|
11
|
+
#pragma warning(disable : 4714)
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
namespace boost {
|
|
15
|
+
namespace multiprecision {
|
|
16
|
+
|
|
17
|
+
//
|
|
18
|
+
// Operators for non-expression template enabled number.
|
|
19
|
+
// NOTE: this is not a complete header - really just a suffix to default_ops.hpp.
|
|
20
|
+
// NOTE: these operators have to be defined after the methods in default_ops.hpp.
|
|
21
|
+
//
|
|
22
|
+
template <class B>
|
|
23
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator-(const number<B, et_off>& v)
|
|
24
|
+
{
|
|
25
|
+
static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
|
|
26
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(v);
|
|
27
|
+
number<B, et_off> result(v);
|
|
28
|
+
result.backend().negate();
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
template <class B>
|
|
32
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator~(const number<B, et_off>& v)
|
|
33
|
+
{
|
|
34
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(v);
|
|
35
|
+
number<B, et_off> result;
|
|
36
|
+
eval_complement(result.backend(), v.backend());
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
//
|
|
40
|
+
// Addition:
|
|
41
|
+
//
|
|
42
|
+
template <class B>
|
|
43
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator+(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
44
|
+
{
|
|
45
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
46
|
+
number<B, et_off> result;
|
|
47
|
+
using default_ops::eval_add;
|
|
48
|
+
eval_add(result.backend(), a.backend(), b.backend());
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
template <class B, class V>
|
|
52
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
53
|
+
operator+(const number<B, et_off>& a, const V& b)
|
|
54
|
+
{
|
|
55
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
56
|
+
number<B, et_off> result;
|
|
57
|
+
using default_ops::eval_add;
|
|
58
|
+
eval_add(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
template <class V, class B>
|
|
62
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
63
|
+
operator+(const V& a, const number<B, et_off>& b)
|
|
64
|
+
{
|
|
65
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b, a);
|
|
66
|
+
number<B, et_off> result;
|
|
67
|
+
using default_ops::eval_add;
|
|
68
|
+
eval_add(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
//
|
|
72
|
+
// Subtraction:
|
|
73
|
+
//
|
|
74
|
+
template <class B>
|
|
75
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator-(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
76
|
+
{
|
|
77
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
78
|
+
number<B, et_off> result;
|
|
79
|
+
using default_ops::eval_subtract;
|
|
80
|
+
eval_subtract(result.backend(), a.backend(), b.backend());
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
template <class B, class V>
|
|
84
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
85
|
+
operator-(const number<B, et_off>& a, const V& b)
|
|
86
|
+
{
|
|
87
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
88
|
+
number<B, et_off> result;
|
|
89
|
+
using default_ops::eval_subtract;
|
|
90
|
+
eval_subtract(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
template <class V, class B>
|
|
94
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
95
|
+
operator-(const V& a, const number<B, et_off>& b)
|
|
96
|
+
{
|
|
97
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b, a);
|
|
98
|
+
number<B, et_off> result;
|
|
99
|
+
using default_ops::eval_subtract;
|
|
100
|
+
eval_subtract(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
//
|
|
104
|
+
// Multiply:
|
|
105
|
+
//
|
|
106
|
+
template <class B>
|
|
107
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator*(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
108
|
+
{
|
|
109
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
110
|
+
number<B, et_off> result;
|
|
111
|
+
using default_ops::eval_multiply;
|
|
112
|
+
eval_multiply(result.backend(), a.backend(), b.backend());
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
template <class B, class V>
|
|
116
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
117
|
+
operator*(const number<B, et_off>& a, const V& b)
|
|
118
|
+
{
|
|
119
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
120
|
+
number<B, et_off> result;
|
|
121
|
+
using default_ops::eval_multiply;
|
|
122
|
+
eval_multiply(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
template <class V, class B>
|
|
126
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
127
|
+
operator*(const V& a, const number<B, et_off>& b)
|
|
128
|
+
{
|
|
129
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b, a);
|
|
130
|
+
number<B, et_off> result;
|
|
131
|
+
using default_ops::eval_multiply;
|
|
132
|
+
eval_multiply(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
//
|
|
136
|
+
// divide:
|
|
137
|
+
//
|
|
138
|
+
template <class B>
|
|
139
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator/(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
140
|
+
{
|
|
141
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
142
|
+
number<B, et_off> result;
|
|
143
|
+
using default_ops::eval_divide;
|
|
144
|
+
eval_divide(result.backend(), a.backend(), b.backend());
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
template <class B, class V>
|
|
148
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
149
|
+
operator/(const number<B, et_off>& a, const V& b)
|
|
150
|
+
{
|
|
151
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
152
|
+
number<B, et_off> result;
|
|
153
|
+
using default_ops::eval_divide;
|
|
154
|
+
eval_divide(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
template <class V, class B>
|
|
158
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
159
|
+
operator/(const V& a, const number<B, et_off>& b)
|
|
160
|
+
{
|
|
161
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b, a);
|
|
162
|
+
number<B, et_off> result;
|
|
163
|
+
using default_ops::eval_divide;
|
|
164
|
+
eval_divide(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
//
|
|
168
|
+
// modulus:
|
|
169
|
+
//
|
|
170
|
+
template <class B>
|
|
171
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator%(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
172
|
+
{
|
|
173
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
174
|
+
number<B, et_off> result;
|
|
175
|
+
using default_ops::eval_modulus;
|
|
176
|
+
eval_modulus(result.backend(), a.backend(), b.backend());
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
template <class B, class V>
|
|
180
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
181
|
+
operator%(const number<B, et_off>& a, const V& b)
|
|
182
|
+
{
|
|
183
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
|
|
184
|
+
number<B, et_off> result;
|
|
185
|
+
using default_ops::eval_modulus;
|
|
186
|
+
eval_modulus(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
template <class V, class B>
|
|
190
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
191
|
+
operator%(const V& a, const number<B, et_off>& b)
|
|
192
|
+
{
|
|
193
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
|
|
194
|
+
number<B, et_off> result;
|
|
195
|
+
using default_ops::eval_modulus;
|
|
196
|
+
eval_modulus(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
//
|
|
200
|
+
// Bitwise or:
|
|
201
|
+
//
|
|
202
|
+
template <class B>
|
|
203
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
204
|
+
{
|
|
205
|
+
number<B, et_off> result;
|
|
206
|
+
using default_ops::eval_bitwise_or;
|
|
207
|
+
eval_bitwise_or(result.backend(), a.backend(), b.backend());
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
template <class B, class V>
|
|
211
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
212
|
+
operator|(const number<B, et_off>& a, const V& b)
|
|
213
|
+
{
|
|
214
|
+
number<B, et_off> result;
|
|
215
|
+
using default_ops::eval_bitwise_or;
|
|
216
|
+
eval_bitwise_or(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
template <class V, class B>
|
|
220
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
221
|
+
operator|(const V& a, const number<B, et_off>& b)
|
|
222
|
+
{
|
|
223
|
+
number<B, et_off> result;
|
|
224
|
+
using default_ops::eval_bitwise_or;
|
|
225
|
+
eval_bitwise_or(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
//
|
|
229
|
+
// Bitwise xor:
|
|
230
|
+
//
|
|
231
|
+
template <class B>
|
|
232
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
233
|
+
{
|
|
234
|
+
number<B, et_off> result;
|
|
235
|
+
using default_ops::eval_bitwise_xor;
|
|
236
|
+
eval_bitwise_xor(result.backend(), a.backend(), b.backend());
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
template <class B, class V>
|
|
240
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
241
|
+
operator^(const number<B, et_off>& a, const V& b)
|
|
242
|
+
{
|
|
243
|
+
number<B, et_off> result;
|
|
244
|
+
using default_ops::eval_bitwise_xor;
|
|
245
|
+
eval_bitwise_xor(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
246
|
+
return result;
|
|
247
|
+
}
|
|
248
|
+
template <class V, class B>
|
|
249
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
250
|
+
operator^(const V& a, const number<B, et_off>& b)
|
|
251
|
+
{
|
|
252
|
+
number<B, et_off> result;
|
|
253
|
+
using default_ops::eval_bitwise_xor;
|
|
254
|
+
eval_bitwise_xor(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
//
|
|
258
|
+
// Bitwise and:
|
|
259
|
+
//
|
|
260
|
+
template <class B>
|
|
261
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(const number<B, et_off>& a, const number<B, et_off>& b)
|
|
262
|
+
{
|
|
263
|
+
number<B, et_off> result;
|
|
264
|
+
using default_ops::eval_bitwise_and;
|
|
265
|
+
eval_bitwise_and(result.backend(), a.backend(), b.backend());
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
template <class B, class V>
|
|
269
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
270
|
+
operator&(const number<B, et_off>& a, const V& b)
|
|
271
|
+
{
|
|
272
|
+
number<B, et_off> result;
|
|
273
|
+
using default_ops::eval_bitwise_and;
|
|
274
|
+
eval_bitwise_and(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
template <class V, class B>
|
|
278
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
279
|
+
operator&(const V& a, const number<B, et_off>& b)
|
|
280
|
+
{
|
|
281
|
+
number<B, et_off> result;
|
|
282
|
+
using default_ops::eval_bitwise_and;
|
|
283
|
+
eval_bitwise_and(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
//
|
|
287
|
+
// shifts:
|
|
288
|
+
//
|
|
289
|
+
template <class B, class I>
|
|
290
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<boost::multiprecision::detail::is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
291
|
+
operator<<(const number<B, et_off>& a, const I& b)
|
|
292
|
+
{
|
|
293
|
+
number<B, et_off> result(a);
|
|
294
|
+
using default_ops::eval_left_shift;
|
|
295
|
+
detail::check_shift_range(b, std::integral_constant<bool, (sizeof(I) > sizeof(std::size_t))>(), std::integral_constant<bool, boost::multiprecision::detail::is_signed<I>::value>());
|
|
296
|
+
eval_left_shift(result.backend(), b);
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
template <class B, class I>
|
|
300
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<boost::multiprecision::detail::is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
301
|
+
operator>>(const number<B, et_off>& a, const I& b)
|
|
302
|
+
{
|
|
303
|
+
number<B, et_off> result(a);
|
|
304
|
+
using default_ops::eval_right_shift;
|
|
305
|
+
detail::check_shift_range(b, std::integral_constant<bool, (sizeof(I) > sizeof(std::size_t))>(), std::integral_constant<bool, boost::multiprecision::detail::is_signed<I>::value>());
|
|
306
|
+
eval_right_shift(result.backend(), b);
|
|
307
|
+
return result;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
//
|
|
311
|
+
// If we have rvalue references go all over again with rvalue ref overloads and move semantics.
|
|
312
|
+
// Note that while it would be tempting to implement these so they return an rvalue reference
|
|
313
|
+
// (and indeed this would be optimally efficient), this is unsafe due to users propensity to
|
|
314
|
+
// write:
|
|
315
|
+
//
|
|
316
|
+
// const T& t = a * b;
|
|
317
|
+
//
|
|
318
|
+
// which would lead to a dangling reference if we didn't return by value. Of course move
|
|
319
|
+
// semantics help a great deal in return by value, so performance is still pretty good...
|
|
320
|
+
//
|
|
321
|
+
template <class B>
|
|
322
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator-(number<B, et_off>&& v)
|
|
323
|
+
{
|
|
324
|
+
static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
|
|
325
|
+
v.backend().negate();
|
|
326
|
+
return std::move(v);
|
|
327
|
+
}
|
|
328
|
+
template <class B>
|
|
329
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator~(number<B, et_off>&& v)
|
|
330
|
+
{
|
|
331
|
+
eval_complement(v.backend(), v.backend());
|
|
332
|
+
return std::move(v);
|
|
333
|
+
}
|
|
334
|
+
//
|
|
335
|
+
// Addition:
|
|
336
|
+
//
|
|
337
|
+
template <class B>
|
|
338
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator+(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
339
|
+
{
|
|
340
|
+
using default_ops::eval_add;
|
|
341
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
342
|
+
eval_add(a.backend(), b.backend());
|
|
343
|
+
return std::move(a);
|
|
344
|
+
}
|
|
345
|
+
template <class B>
|
|
346
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator+(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
347
|
+
{
|
|
348
|
+
using default_ops::eval_add;
|
|
349
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
350
|
+
eval_add(b.backend(), a.backend());
|
|
351
|
+
return std::move(b);
|
|
352
|
+
}
|
|
353
|
+
template <class B>
|
|
354
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator+(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
355
|
+
{
|
|
356
|
+
using default_ops::eval_add;
|
|
357
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
358
|
+
eval_add(a.backend(), b.backend());
|
|
359
|
+
return std::move(a);
|
|
360
|
+
}
|
|
361
|
+
template <class B, class V>
|
|
362
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
363
|
+
operator+(number<B, et_off>&& a, const V& b)
|
|
364
|
+
{
|
|
365
|
+
using default_ops::eval_add;
|
|
366
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
367
|
+
eval_add(a.backend(), number<B, et_off>::canonical_value(b));
|
|
368
|
+
return std::move(a);
|
|
369
|
+
}
|
|
370
|
+
template <class V, class B>
|
|
371
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
372
|
+
operator+(const V& a, number<B, et_off>&& b)
|
|
373
|
+
{
|
|
374
|
+
using default_ops::eval_add;
|
|
375
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
376
|
+
eval_add(b.backend(), number<B, et_off>::canonical_value(a));
|
|
377
|
+
return std::move(b);
|
|
378
|
+
}
|
|
379
|
+
//
|
|
380
|
+
// Subtraction:
|
|
381
|
+
//
|
|
382
|
+
template <class B>
|
|
383
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator-(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
384
|
+
{
|
|
385
|
+
using default_ops::eval_subtract;
|
|
386
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
387
|
+
eval_subtract(a.backend(), b.backend());
|
|
388
|
+
return std::move(a);
|
|
389
|
+
}
|
|
390
|
+
template <class B>
|
|
391
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_signed_number<B>::value, number<B, et_off> >::type operator-(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
392
|
+
{
|
|
393
|
+
using default_ops::eval_subtract;
|
|
394
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
395
|
+
eval_subtract(b.backend(), a.backend());
|
|
396
|
+
b.backend().negate();
|
|
397
|
+
return std::move(b);
|
|
398
|
+
}
|
|
399
|
+
template <class B>
|
|
400
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator-(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
401
|
+
{
|
|
402
|
+
using default_ops::eval_subtract;
|
|
403
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
404
|
+
eval_subtract(a.backend(), b.backend());
|
|
405
|
+
return std::move(a);
|
|
406
|
+
}
|
|
407
|
+
template <class B, class V>
|
|
408
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
409
|
+
operator-(number<B, et_off>&& a, const V& b)
|
|
410
|
+
{
|
|
411
|
+
using default_ops::eval_subtract;
|
|
412
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
413
|
+
eval_subtract(a.backend(), number<B, et_off>::canonical_value(b));
|
|
414
|
+
return std::move(a);
|
|
415
|
+
}
|
|
416
|
+
template <class V, class B>
|
|
417
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<(is_compatible_arithmetic_type<V, number<B, et_off> >::value && is_signed_number<B>::value) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
418
|
+
operator-(const V& a, number<B, et_off>&& b)
|
|
419
|
+
{
|
|
420
|
+
using default_ops::eval_subtract;
|
|
421
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
422
|
+
eval_subtract(b.backend(), number<B, et_off>::canonical_value(a));
|
|
423
|
+
b.backend().negate();
|
|
424
|
+
return std::move(b);
|
|
425
|
+
}
|
|
426
|
+
//
|
|
427
|
+
// Multiply:
|
|
428
|
+
//
|
|
429
|
+
template <class B>
|
|
430
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator*(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
431
|
+
{
|
|
432
|
+
using default_ops::eval_multiply;
|
|
433
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
434
|
+
eval_multiply(a.backend(), b.backend());
|
|
435
|
+
return std::move(a);
|
|
436
|
+
}
|
|
437
|
+
template <class B>
|
|
438
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator*(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
439
|
+
{
|
|
440
|
+
using default_ops::eval_multiply;
|
|
441
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
442
|
+
eval_multiply(b.backend(), a.backend());
|
|
443
|
+
return std::move(b);
|
|
444
|
+
}
|
|
445
|
+
template <class B>
|
|
446
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator*(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
447
|
+
{
|
|
448
|
+
using default_ops::eval_multiply;
|
|
449
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
450
|
+
eval_multiply(a.backend(), b.backend());
|
|
451
|
+
return std::move(a);
|
|
452
|
+
}
|
|
453
|
+
template <class B, class V>
|
|
454
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
455
|
+
operator*(number<B, et_off>&& a, const V& b)
|
|
456
|
+
{
|
|
457
|
+
using default_ops::eval_multiply;
|
|
458
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
459
|
+
eval_multiply(a.backend(), number<B, et_off>::canonical_value(b));
|
|
460
|
+
return std::move(a);
|
|
461
|
+
}
|
|
462
|
+
template <class V, class B>
|
|
463
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
464
|
+
operator*(const V& a, number<B, et_off>&& b)
|
|
465
|
+
{
|
|
466
|
+
using default_ops::eval_multiply;
|
|
467
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
468
|
+
eval_multiply(b.backend(), number<B, et_off>::canonical_value(a));
|
|
469
|
+
return std::move(b);
|
|
470
|
+
}
|
|
471
|
+
//
|
|
472
|
+
// divide:
|
|
473
|
+
//
|
|
474
|
+
template <class B>
|
|
475
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR number<B, et_off> operator/(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
476
|
+
{
|
|
477
|
+
using default_ops::eval_divide;
|
|
478
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
479
|
+
eval_divide(a.backend(), b.backend());
|
|
480
|
+
return std::move(a);
|
|
481
|
+
}
|
|
482
|
+
template <class B, class V>
|
|
483
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value, number<B, et_off> >::type
|
|
484
|
+
operator/(number<B, et_off>&& a, const V& b)
|
|
485
|
+
{
|
|
486
|
+
using default_ops::eval_divide;
|
|
487
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
488
|
+
eval_divide(a.backend(), number<B, et_off>::canonical_value(b));
|
|
489
|
+
return std::move(a);
|
|
490
|
+
}
|
|
491
|
+
//
|
|
492
|
+
// modulus:
|
|
493
|
+
//
|
|
494
|
+
template <class B>
|
|
495
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator%(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
496
|
+
{
|
|
497
|
+
using default_ops::eval_modulus;
|
|
498
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
499
|
+
eval_modulus(a.backend(), b.backend());
|
|
500
|
+
return std::move(a);
|
|
501
|
+
}
|
|
502
|
+
template <class B, class V>
|
|
503
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
504
|
+
operator%(number<B, et_off>&& a, const V& b)
|
|
505
|
+
{
|
|
506
|
+
using default_ops::eval_modulus;
|
|
507
|
+
detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
|
|
508
|
+
eval_modulus(a.backend(), number<B, et_off>::canonical_value(b));
|
|
509
|
+
return std::move(a);
|
|
510
|
+
}
|
|
511
|
+
//
|
|
512
|
+
// Bitwise or:
|
|
513
|
+
//
|
|
514
|
+
template <class B>
|
|
515
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
516
|
+
{
|
|
517
|
+
using default_ops::eval_bitwise_or;
|
|
518
|
+
eval_bitwise_or(a.backend(), b.backend());
|
|
519
|
+
return std::move(a);
|
|
520
|
+
}
|
|
521
|
+
template <class B>
|
|
522
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
523
|
+
{
|
|
524
|
+
using default_ops::eval_bitwise_or;
|
|
525
|
+
eval_bitwise_or(b.backend(), a.backend());
|
|
526
|
+
return std::move(b);
|
|
527
|
+
}
|
|
528
|
+
template <class B>
|
|
529
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
530
|
+
{
|
|
531
|
+
using default_ops::eval_bitwise_or;
|
|
532
|
+
eval_bitwise_or(a.backend(), b.backend());
|
|
533
|
+
return std::move(a);
|
|
534
|
+
}
|
|
535
|
+
template <class B, class V>
|
|
536
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
537
|
+
operator|(number<B, et_off>&& a, const V& b)
|
|
538
|
+
{
|
|
539
|
+
using default_ops::eval_bitwise_or;
|
|
540
|
+
eval_bitwise_or(a.backend(), number<B, et_off>::canonical_value(b));
|
|
541
|
+
return std::move(a);
|
|
542
|
+
}
|
|
543
|
+
template <class V, class B>
|
|
544
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
545
|
+
operator|(const V& a, number<B, et_off>&& b)
|
|
546
|
+
{
|
|
547
|
+
using default_ops::eval_bitwise_or;
|
|
548
|
+
eval_bitwise_or(b.backend(), number<B, et_off>::canonical_value(a));
|
|
549
|
+
return std::move(b);
|
|
550
|
+
}
|
|
551
|
+
//
|
|
552
|
+
// Bitwise xor:
|
|
553
|
+
//
|
|
554
|
+
template <class B>
|
|
555
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
556
|
+
{
|
|
557
|
+
using default_ops::eval_bitwise_xor;
|
|
558
|
+
eval_bitwise_xor(a.backend(), b.backend());
|
|
559
|
+
return std::move(a);
|
|
560
|
+
}
|
|
561
|
+
template <class B>
|
|
562
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
563
|
+
{
|
|
564
|
+
using default_ops::eval_bitwise_xor;
|
|
565
|
+
eval_bitwise_xor(b.backend(), a.backend());
|
|
566
|
+
return std::move(b);
|
|
567
|
+
}
|
|
568
|
+
template <class B>
|
|
569
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
570
|
+
{
|
|
571
|
+
using default_ops::eval_bitwise_xor;
|
|
572
|
+
eval_bitwise_xor(a.backend(), b.backend());
|
|
573
|
+
return std::move(a);
|
|
574
|
+
}
|
|
575
|
+
template <class B, class V>
|
|
576
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
577
|
+
operator^(number<B, et_off>&& a, const V& b)
|
|
578
|
+
{
|
|
579
|
+
using default_ops::eval_bitwise_xor;
|
|
580
|
+
eval_bitwise_xor(a.backend(), number<B, et_off>::canonical_value(b));
|
|
581
|
+
return std::move(a);
|
|
582
|
+
}
|
|
583
|
+
template <class V, class B>
|
|
584
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
585
|
+
operator^(const V& a, number<B, et_off>&& b)
|
|
586
|
+
{
|
|
587
|
+
using default_ops::eval_bitwise_xor;
|
|
588
|
+
eval_bitwise_xor(b.backend(), number<B, et_off>::canonical_value(a));
|
|
589
|
+
return std::move(b);
|
|
590
|
+
}
|
|
591
|
+
//
|
|
592
|
+
// Bitwise and:
|
|
593
|
+
//
|
|
594
|
+
template <class B>
|
|
595
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(number<B, et_off>&& a, const number<B, et_off>& b)
|
|
596
|
+
{
|
|
597
|
+
using default_ops::eval_bitwise_and;
|
|
598
|
+
eval_bitwise_and(a.backend(), b.backend());
|
|
599
|
+
return std::move(a);
|
|
600
|
+
}
|
|
601
|
+
template <class B>
|
|
602
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(const number<B, et_off>& a, number<B, et_off>&& b)
|
|
603
|
+
{
|
|
604
|
+
using default_ops::eval_bitwise_and;
|
|
605
|
+
eval_bitwise_and(b.backend(), a.backend());
|
|
606
|
+
return std::move(b);
|
|
607
|
+
}
|
|
608
|
+
template <class B>
|
|
609
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(number<B, et_off>&& a, number<B, et_off>&& b)
|
|
610
|
+
{
|
|
611
|
+
using default_ops::eval_bitwise_and;
|
|
612
|
+
eval_bitwise_and(a.backend(), b.backend());
|
|
613
|
+
return std::move(a);
|
|
614
|
+
}
|
|
615
|
+
template <class B, class V>
|
|
616
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
617
|
+
operator&(number<B, et_off>&& a, const V& b)
|
|
618
|
+
{
|
|
619
|
+
using default_ops::eval_bitwise_and;
|
|
620
|
+
eval_bitwise_and(a.backend(), number<B, et_off>::canonical_value(b));
|
|
621
|
+
return std::move(a);
|
|
622
|
+
}
|
|
623
|
+
template <class V, class B>
|
|
624
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer) && !is_equivalent_number_type<V, B>::value, number<B, et_off> >::type
|
|
625
|
+
operator&(const V& a, number<B, et_off>&& b)
|
|
626
|
+
{
|
|
627
|
+
using default_ops::eval_bitwise_and;
|
|
628
|
+
eval_bitwise_and(b.backend(), number<B, et_off>::canonical_value(a));
|
|
629
|
+
return std::move(b);
|
|
630
|
+
}
|
|
631
|
+
//
|
|
632
|
+
// shifts:
|
|
633
|
+
//
|
|
634
|
+
template <class B, class I>
|
|
635
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<boost::multiprecision::detail::is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
636
|
+
operator<<(number<B, et_off>&& a, const I& b)
|
|
637
|
+
{
|
|
638
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<I>::type;
|
|
639
|
+
|
|
640
|
+
using default_ops::eval_left_shift;
|
|
641
|
+
eval_left_shift(a.backend(), static_cast<ui_type>(b));
|
|
642
|
+
return std::move(a);
|
|
643
|
+
}
|
|
644
|
+
template <class B, class I>
|
|
645
|
+
BOOST_MP_FORCEINLINE BOOST_MP_CXX14_CONSTEXPR typename std::enable_if<boost::multiprecision::detail::is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
|
|
646
|
+
operator>>(number<B, et_off>&& a, const I& b)
|
|
647
|
+
{
|
|
648
|
+
using ui_type = typename boost::multiprecision::detail::make_unsigned<I>::type;
|
|
649
|
+
|
|
650
|
+
using default_ops::eval_right_shift;
|
|
651
|
+
eval_right_shift(a.backend(), static_cast<ui_type>(b));
|
|
652
|
+
return std::move(a);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
} // namespace boost::multiprecision
|
|
656
|
+
|
|
657
|
+
#ifdef BOOST_MSVC
|
|
658
|
+
#pragma warning(pop)
|
|
659
|
+
#endif
|
|
660
|
+
|
|
661
|
+
#endif // BOOST_MP_NO_ET_OPS_HPP
|