@lakutata/math 0.0.0-stage → 3.1.3
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.
- package/LICENSE +23 -0
- package/README.md +954 -2
- package/README.zh-CN.md +578 -0
- package/THIRD_PARTY_NOTICES.md +553 -0
- package/binding.gyp +89 -0
- package/dist/cjs/exceptions/MathArgumentException.d.ts +11 -0
- package/dist/cjs/exceptions/MathArgumentException.js +18 -0
- package/dist/cjs/exceptions/MathCancelledException.d.ts +10 -0
- package/dist/cjs/exceptions/MathCancelledException.js +17 -0
- package/dist/cjs/exceptions/MathDefinitionException.d.ts +11 -0
- package/dist/cjs/exceptions/MathDefinitionException.js +18 -0
- package/dist/cjs/exceptions/MathDivisionByZeroException.d.ts +10 -0
- package/dist/cjs/exceptions/MathDivisionByZeroException.js +17 -0
- package/dist/cjs/exceptions/MathDomainException.d.ts +11 -0
- package/dist/cjs/exceptions/MathDomainException.js +18 -0
- package/dist/cjs/exceptions/MathException.d.ts +19 -0
- package/dist/cjs/exceptions/MathException.js +22 -0
- package/dist/cjs/exceptions/MathNotSupportedException.d.ts +11 -0
- package/dist/cjs/exceptions/MathNotSupportedException.js +18 -0
- package/dist/cjs/exceptions/MathSyntaxException.d.ts +11 -0
- package/dist/cjs/exceptions/MathSyntaxException.js +18 -0
- package/dist/cjs/exceptions/MathTimeoutException.d.ts +10 -0
- package/dist/cjs/exceptions/MathTimeoutException.js +17 -0
- package/dist/cjs/exceptions/MathUnitException.d.ts +11 -0
- package/dist/cjs/exceptions/MathUnitException.js +18 -0
- package/dist/cjs/exceptions/MathUnknownFunctionException.d.ts +12 -0
- package/dist/cjs/exceptions/MathUnknownFunctionException.js +19 -0
- package/dist/cjs/exports/Math.d.ts +28 -0
- package/dist/cjs/exports/Math.js +84 -0
- package/dist/cjs/lib/Addon.d.ts +5 -0
- package/dist/cjs/lib/Addon.js +9 -0
- package/dist/cjs/lib/Context.d.ts +90 -0
- package/dist/cjs/lib/Context.js +134 -0
- package/dist/cjs/lib/Decimal.d.ts +276 -0
- package/dist/cjs/lib/Decimal.js +402 -0
- package/dist/cjs/lib/Defaults.d.ts +273 -0
- package/dist/cjs/lib/Defaults.js +308 -0
- package/dist/cjs/lib/Distribution.d.ts +177 -0
- package/dist/cjs/lib/Distribution.js +195 -0
- package/dist/cjs/lib/Expression.d.ts +791 -0
- package/dist/cjs/lib/Expression.js +991 -0
- package/dist/cjs/lib/ExpressionMatrix.d.ts +284 -0
- package/dist/cjs/lib/ExpressionMatrix.js +412 -0
- package/dist/cjs/lib/LinearAlgebra.d.ts +613 -0
- package/dist/cjs/lib/LinearAlgebra.js +712 -0
- package/dist/cjs/lib/MathScope.d.ts +268 -0
- package/dist/cjs/lib/MathScope.js +316 -0
- package/dist/cjs/lib/MathSet.d.ts +139 -0
- package/dist/cjs/lib/MathSet.js +376 -0
- package/dist/cjs/lib/Matrix.d.ts +212 -0
- package/dist/cjs/lib/Matrix.js +393 -0
- package/dist/cjs/lib/Native.d.ts +80 -0
- package/dist/cjs/lib/Native.js +61 -0
- package/dist/cjs/lib/NumberTheory.d.ts +356 -0
- package/dist/cjs/lib/NumberTheory.js +524 -0
- package/dist/cjs/lib/Numeric.d.ts +363 -0
- package/dist/cjs/lib/Numeric.js +243 -0
- package/dist/cjs/lib/Polynomials.d.ts +140 -0
- package/dist/cjs/lib/Polynomials.js +167 -0
- package/dist/cjs/lib/SparseMatrix.d.ts +125 -0
- package/dist/cjs/lib/SparseMatrix.js +341 -0
- package/dist/cjs/lib/Statistics.d.ts +366 -0
- package/dist/cjs/lib/Statistics.js +380 -0
- package/dist/cjs/lib/Unit.d.ts +342 -0
- package/dist/cjs/lib/Unit.js +1027 -0
- package/dist/cjs/lib/UnitTable.d.ts +39 -0
- package/dist/cjs/lib/UnitTable.js +634 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/exceptions/MathArgumentException.js +14 -0
- package/dist/esm/exceptions/MathCancelledException.js +13 -0
- package/dist/esm/exceptions/MathDefinitionException.js +14 -0
- package/dist/esm/exceptions/MathDivisionByZeroException.js +13 -0
- package/dist/esm/exceptions/MathDomainException.js +14 -0
- package/dist/esm/exceptions/MathException.js +18 -0
- package/dist/esm/exceptions/MathNotSupportedException.js +14 -0
- package/dist/esm/exceptions/MathSyntaxException.js +14 -0
- package/dist/esm/exceptions/MathTimeoutException.js +13 -0
- package/dist/esm/exceptions/MathUnitException.js +14 -0
- package/dist/esm/exceptions/MathUnknownFunctionException.js +15 -0
- package/dist/esm/exports/Math.js +26 -0
- package/dist/esm/lib/Addon.js +10 -0
- package/dist/esm/lib/Context.js +128 -0
- package/dist/esm/lib/Decimal.js +397 -0
- package/dist/esm/lib/Defaults.js +290 -0
- package/dist/esm/lib/Distribution.js +190 -0
- package/dist/esm/lib/Expression.js +979 -0
- package/dist/esm/lib/ExpressionMatrix.js +407 -0
- package/dist/esm/lib/LinearAlgebra.js +708 -0
- package/dist/esm/lib/MathScope.js +311 -0
- package/dist/esm/lib/MathSet.js +370 -0
- package/dist/esm/lib/Matrix.js +382 -0
- package/dist/esm/lib/Native.js +56 -0
- package/dist/esm/lib/NumberTheory.js +520 -0
- package/dist/esm/lib/Numeric.js +239 -0
- package/dist/esm/lib/Polynomials.js +163 -0
- package/dist/esm/lib/SparseMatrix.js +332 -0
- package/dist/esm/lib/Statistics.js +376 -0
- package/dist/esm/lib/Unit.js +1018 -0
- package/dist/esm/lib/UnitTable.js +631 -0
- package/dist/types/exceptions/MathArgumentException.d.ts +11 -0
- package/dist/types/exceptions/MathCancelledException.d.ts +10 -0
- package/dist/types/exceptions/MathDefinitionException.d.ts +11 -0
- package/dist/types/exceptions/MathDivisionByZeroException.d.ts +10 -0
- package/dist/types/exceptions/MathDomainException.d.ts +11 -0
- package/dist/types/exceptions/MathException.d.ts +19 -0
- package/dist/types/exceptions/MathNotSupportedException.d.ts +11 -0
- package/dist/types/exceptions/MathSyntaxException.d.ts +11 -0
- package/dist/types/exceptions/MathTimeoutException.d.ts +10 -0
- package/dist/types/exceptions/MathUnitException.d.ts +11 -0
- package/dist/types/exceptions/MathUnknownFunctionException.d.ts +12 -0
- package/dist/types/exports/Math.d.ts +28 -0
- package/dist/types/lib/Addon.d.ts +5 -0
- package/dist/types/lib/Context.d.ts +90 -0
- package/dist/types/lib/Decimal.d.ts +276 -0
- package/dist/types/lib/Defaults.d.ts +273 -0
- package/dist/types/lib/Distribution.d.ts +177 -0
- package/dist/types/lib/Expression.d.ts +791 -0
- package/dist/types/lib/ExpressionMatrix.d.ts +284 -0
- package/dist/types/lib/LinearAlgebra.d.ts +613 -0
- package/dist/types/lib/MathScope.d.ts +268 -0
- package/dist/types/lib/MathSet.d.ts +139 -0
- package/dist/types/lib/Matrix.d.ts +212 -0
- package/dist/types/lib/Native.d.ts +80 -0
- package/dist/types/lib/NumberTheory.d.ts +356 -0
- package/dist/types/lib/Numeric.d.ts +363 -0
- package/dist/types/lib/Polynomials.d.ts +140 -0
- package/dist/types/lib/SparseMatrix.d.ts +125 -0
- package/dist/types/lib/Statistics.d.ts +366 -0
- package/dist/types/lib/Unit.d.ts +342 -0
- package/dist/types/lib/UnitTable.d.ts +39 -0
- package/native/addon.cpp +1374 -0
- package/native/async/Pool.cpp +133 -0
- package/native/async/Pool.h +59 -0
- package/native/config/boost_math_policy.h +26 -0
- package/native/config/mpdecimal/mpdecimal.h +809 -0
- package/native/config/symengine/symengine_config.h +44 -0
- package/native/config/symengine/symengine_export.h +19 -0
- package/native/core/Errors.cpp +77 -0
- package/native/core/Errors.h +72 -0
- package/native/core/Handle.cpp +109 -0
- package/native/core/Handle.h +72 -0
- package/native/core/Scope.cpp +122 -0
- package/native/core/Scope.h +36 -0
- package/native/functions/Functions.cpp +468 -0
- package/native/functions/Functions.h +115 -0
- package/native/functions/Gosper.cpp +429 -0
- package/native/functions/Gosper.h +20 -0
- package/native/functions/SpecialIntegrals.cpp +329 -0
- package/native/functions/SpecialIntegrals.h +53 -0
- package/native/functions/Summation.cpp +645 -0
- package/native/functions/Summation.h +42 -0
- package/native/integrals/Integrals.cpp +1428 -0
- package/native/integrals/Integrals.h +32 -0
- package/native/limits/Gruntz.cpp +1332 -0
- package/native/limits/Gruntz.h +24 -0
- package/native/linalg/Decompositions.cpp +159 -0
- package/native/linalg/Functions.cpp +199 -0
- package/native/linalg/Linalg.cpp +123 -0
- package/native/linalg/Linalg.h +67 -0
- package/native/linalg/LinalgSupport.h +69 -0
- package/native/linalg/Sparse.cpp +172 -0
- package/native/matrix/Matrices.cpp +766 -0
- package/native/matrix/Matrices.h +74 -0
- package/native/ntheory/NumberTheory.cpp +754 -0
- package/native/ntheory/NumberTheory.h +56 -0
- package/native/numeric/Compiled.cpp +93 -0
- package/native/numeric/Compiled.h +49 -0
- package/native/numeric/Integrate.cpp +718 -0
- package/native/numeric/Numeric.h +95 -0
- package/native/numeric/ODE.cpp +542 -0
- package/native/numeric/Roots.cpp +402 -0
- package/native/ops/Decimal.cpp +776 -0
- package/native/ops/Decimal.h +182 -0
- package/native/ops/DecimalComplex.cpp +738 -0
- package/native/ops/DecimalEvaluator.h +79 -0
- package/native/ops/DecimalFunctions.cpp +439 -0
- package/native/ops/DecimalOperations.cpp +236 -0
- package/native/ops/DecimalSpecial.cpp +1028 -0
- package/native/ops/DecimalSupport.h +109 -0
- package/native/ops/Operations.cpp +969 -0
- package/native/ops/Operations.h +120 -0
- package/native/ops/Piecewise.cpp +195 -0
- package/native/ops/Piecewise.h +40 -0
- package/native/parser/Parser.cpp +853 -0
- package/native/parser/Parser.h +56 -0
- package/native/poly/Convert.cpp +210 -0
- package/native/poly/Convert.h +40 -0
- package/native/poly/Dense.cpp +1008 -0
- package/native/poly/Dense.h +136 -0
- package/native/poly/Euclid.cpp +446 -0
- package/native/poly/Euclid.h +44 -0
- package/native/poly/Factor.cpp +919 -0
- package/native/poly/Factor.h +36 -0
- package/native/poly/Galois.cpp +439 -0
- package/native/poly/Galois.h +86 -0
- package/native/poly/Inequalities.cpp +227 -0
- package/native/poly/Inequalities.h +21 -0
- package/native/poly/Poly.cpp +338 -0
- package/native/poly/Poly.h +46 -0
- package/native/poly/Rational.cpp +403 -0
- package/native/poly/Rational.h +33 -0
- package/native/poly/RealRoots.cpp +136 -0
- package/native/poly/RealRoots.h +35 -0
- package/native/printer/Printer.cpp +973 -0
- package/native/printer/Printer.h +23 -0
- package/native/simplify/Simplify.cpp +921 -0
- package/native/simplify/Simplify.h +21 -0
- package/native/stats/Distributions.cpp +392 -0
- package/native/stats/Distributions.h +33 -0
- package/native/stats/Statistics.cpp +255 -0
- package/native/stats/Statistics.h +25 -0
- package/package.json +85 -4
- package/scripts/sources.mjs +35 -0
- package/vendor/PATCHES.md +169 -0
- package/vendor/boost/config/README.md +43 -0
- package/vendor/boost/config/include/boost/config/abi/borland_prefix.hpp +27 -0
- package/vendor/boost/config/include/boost/config/abi/borland_suffix.hpp +12 -0
- package/vendor/boost/config/include/boost/config/abi/msvc_prefix.hpp +22 -0
- package/vendor/boost/config/include/boost/config/abi/msvc_suffix.hpp +8 -0
- package/vendor/boost/config/include/boost/config/abi_prefix.hpp +25 -0
- package/vendor/boost/config/include/boost/config/abi_suffix.hpp +25 -0
- package/vendor/boost/config/include/boost/config/assert_cxx03.hpp +211 -0
- package/vendor/boost/config/include/boost/config/assert_cxx11.hpp +212 -0
- package/vendor/boost/config/include/boost/config/assert_cxx14.hpp +47 -0
- package/vendor/boost/config/include/boost/config/assert_cxx17.hpp +65 -0
- package/vendor/boost/config/include/boost/config/assert_cxx20.hpp +59 -0
- package/vendor/boost/config/include/boost/config/assert_cxx23.hpp +41 -0
- package/vendor/boost/config/include/boost/config/assert_cxx98.hpp +23 -0
- package/vendor/boost/config/include/boost/config/auto_link.hpp +530 -0
- package/vendor/boost/config/include/boost/config/compiler/borland.hpp +342 -0
- package/vendor/boost/config/include/boost/config/compiler/clang.hpp +370 -0
- package/vendor/boost/config/include/boost/config/compiler/clang_version.hpp +98 -0
- package/vendor/boost/config/include/boost/config/compiler/codegear.hpp +389 -0
- package/vendor/boost/config/include/boost/config/compiler/comeau.hpp +59 -0
- package/vendor/boost/config/include/boost/config/compiler/common_edg.hpp +185 -0
- package/vendor/boost/config/include/boost/config/compiler/compaq_cxx.hpp +19 -0
- package/vendor/boost/config/include/boost/config/compiler/cray.hpp +446 -0
- package/vendor/boost/config/include/boost/config/compiler/diab.hpp +26 -0
- package/vendor/boost/config/include/boost/config/compiler/digitalmars.hpp +146 -0
- package/vendor/boost/config/include/boost/config/compiler/gcc.hpp +386 -0
- package/vendor/boost/config/include/boost/config/compiler/gcc_xml.hpp +115 -0
- package/vendor/boost/config/include/boost/config/compiler/greenhills.hpp +28 -0
- package/vendor/boost/config/include/boost/config/compiler/hp_acc.hpp +153 -0
- package/vendor/boost/config/include/boost/config/compiler/intel.hpp +577 -0
- package/vendor/boost/config/include/boost/config/compiler/kai.hpp +33 -0
- package/vendor/boost/config/include/boost/config/compiler/metrowerks.hpp +201 -0
- package/vendor/boost/config/include/boost/config/compiler/mpw.hpp +143 -0
- package/vendor/boost/config/include/boost/config/compiler/nvcc.hpp +64 -0
- package/vendor/boost/config/include/boost/config/compiler/pathscale.hpp +141 -0
- package/vendor/boost/config/include/boost/config/compiler/pgi.hpp +23 -0
- package/vendor/boost/config/include/boost/config/compiler/sgi_mipspro.hpp +29 -0
- package/vendor/boost/config/include/boost/config/compiler/sunpro_cc.hpp +225 -0
- package/vendor/boost/config/include/boost/config/compiler/vacpp.hpp +189 -0
- package/vendor/boost/config/include/boost/config/compiler/visualc.hpp +400 -0
- package/vendor/boost/config/include/boost/config/compiler/xlcpp.hpp +303 -0
- package/vendor/boost/config/include/boost/config/compiler/xlcpp_zos.hpp +174 -0
- package/vendor/boost/config/include/boost/config/detail/cxx_composite.hpp +218 -0
- package/vendor/boost/config/include/boost/config/detail/posix_features.hpp +95 -0
- package/vendor/boost/config/include/boost/config/detail/select_compiler_config.hpp +157 -0
- package/vendor/boost/config/include/boost/config/detail/select_platform_config.hpp +147 -0
- package/vendor/boost/config/include/boost/config/detail/select_stdlib_config.hpp +121 -0
- package/vendor/boost/config/include/boost/config/detail/suffix.hpp +1334 -0
- package/vendor/boost/config/include/boost/config/header_deprecated.hpp +26 -0
- package/vendor/boost/config/include/boost/config/helper_macros.hpp +37 -0
- package/vendor/boost/config/include/boost/config/no_tr1/cmath.hpp +28 -0
- package/vendor/boost/config/include/boost/config/no_tr1/complex.hpp +28 -0
- package/vendor/boost/config/include/boost/config/no_tr1/functional.hpp +28 -0
- package/vendor/boost/config/include/boost/config/no_tr1/memory.hpp +28 -0
- package/vendor/boost/config/include/boost/config/no_tr1/utility.hpp +28 -0
- package/vendor/boost/config/include/boost/config/platform/aix.hpp +33 -0
- package/vendor/boost/config/include/boost/config/platform/amigaos.hpp +15 -0
- package/vendor/boost/config/include/boost/config/platform/beos.hpp +26 -0
- package/vendor/boost/config/include/boost/config/platform/bsd.hpp +83 -0
- package/vendor/boost/config/include/boost/config/platform/cloudabi.hpp +18 -0
- package/vendor/boost/config/include/boost/config/platform/cray.hpp +18 -0
- package/vendor/boost/config/include/boost/config/platform/cygwin.hpp +71 -0
- package/vendor/boost/config/include/boost/config/platform/haiku.hpp +31 -0
- package/vendor/boost/config/include/boost/config/platform/hpux.hpp +87 -0
- package/vendor/boost/config/include/boost/config/platform/irix.hpp +31 -0
- package/vendor/boost/config/include/boost/config/platform/linux.hpp +106 -0
- package/vendor/boost/config/include/boost/config/platform/macos.hpp +87 -0
- package/vendor/boost/config/include/boost/config/platform/qnxnto.hpp +31 -0
- package/vendor/boost/config/include/boost/config/platform/solaris.hpp +31 -0
- package/vendor/boost/config/include/boost/config/platform/symbian.hpp +97 -0
- package/vendor/boost/config/include/boost/config/platform/vms.hpp +25 -0
- package/vendor/boost/config/include/boost/config/platform/vxworks.hpp +422 -0
- package/vendor/boost/config/include/boost/config/platform/wasm.hpp +23 -0
- package/vendor/boost/config/include/boost/config/platform/win32.hpp +90 -0
- package/vendor/boost/config/include/boost/config/platform/zos.hpp +32 -0
- package/vendor/boost/config/include/boost/config/pragma_message.hpp +31 -0
- package/vendor/boost/config/include/boost/config/requires_threads.hpp +92 -0
- package/vendor/boost/config/include/boost/config/stdlib/dinkumware.hpp +324 -0
- package/vendor/boost/config/include/boost/config/stdlib/libcomo.hpp +93 -0
- package/vendor/boost/config/include/boost/config/stdlib/libcpp.hpp +185 -0
- package/vendor/boost/config/include/boost/config/stdlib/libstdcpp3.hpp +482 -0
- package/vendor/boost/config/include/boost/config/stdlib/modena.hpp +79 -0
- package/vendor/boost/config/include/boost/config/stdlib/msl.hpp +98 -0
- package/vendor/boost/config/include/boost/config/stdlib/roguewave.hpp +208 -0
- package/vendor/boost/config/include/boost/config/stdlib/sgi.hpp +168 -0
- package/vendor/boost/config/include/boost/config/stdlib/stlport.hpp +258 -0
- package/vendor/boost/config/include/boost/config/stdlib/vacpp.hpp +74 -0
- package/vendor/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- package/vendor/boost/config/include/boost/config/user.hpp +133 -0
- package/vendor/boost/config/include/boost/config/warning_disable.hpp +47 -0
- package/vendor/boost/config/include/boost/config/workaround.hpp +310 -0
- package/vendor/boost/config/include/boost/config.hpp +67 -0
- package/vendor/boost/config/include/boost/cstdint.hpp +556 -0
- package/vendor/boost/config/include/boost/cxx11_char_types.hpp +70 -0
- package/vendor/boost/config/include/boost/detail/workaround.hpp +10 -0
- package/vendor/boost/config/include/boost/limits.hpp +146 -0
- package/vendor/boost/config/include/boost/static_assert.hpp +179 -0
- package/vendor/boost/config/include/boost/version.hpp +32 -0
- package/vendor/boost/math/LICENSE +23 -0
- package/vendor/boost/math/README.md +184 -0
- package/vendor/boost/math/include/boost/cstdfloat.hpp +58 -0
- package/vendor/boost/math/include/boost/math/bindings/detail/big_digamma.hpp +297 -0
- package/vendor/boost/math/include/boost/math/bindings/detail/big_lanczos.hpp +777 -0
- package/vendor/boost/math/include/boost/math/bindings/mpfr.hpp +974 -0
- package/vendor/boost/math/include/boost/math/bindings/mpreal.hpp +921 -0
- package/vendor/boost/math/include/boost/math/bindings/rr.hpp +876 -0
- package/vendor/boost/math/include/boost/math/ccmath/abs.hpp +89 -0
- package/vendor/boost/math/include/boost/math/ccmath/ccmath.hpp +45 -0
- package/vendor/boost/math/include/boost/math/ccmath/ceil.hpp +78 -0
- package/vendor/boost/math/include/boost/math/ccmath/copysign.hpp +81 -0
- package/vendor/boost/math/include/boost/math/ccmath/detail/config.hpp +52 -0
- package/vendor/boost/math/include/boost/math/ccmath/detail/swap.hpp +21 -0
- package/vendor/boost/math/include/boost/math/ccmath/div.hpp +86 -0
- package/vendor/boost/math/include/boost/math/ccmath/fabs.hpp +41 -0
- package/vendor/boost/math/include/boost/math/ccmath/fdim.hpp +93 -0
- package/vendor/boost/math/include/boost/math/ccmath/floor.hpp +131 -0
- package/vendor/boost/math/include/boost/math/ccmath/fma.hpp +130 -0
- package/vendor/boost/math/include/boost/math/ccmath/fmax.hpp +89 -0
- package/vendor/boost/math/include/boost/math/ccmath/fmin.hpp +89 -0
- package/vendor/boost/math/include/boost/math/ccmath/fmod.hpp +114 -0
- package/vendor/boost/math/include/boost/math/ccmath/fpclassify.hpp +48 -0
- package/vendor/boost/math/include/boost/math/ccmath/frexp.hpp +101 -0
- package/vendor/boost/math/include/boost/math/ccmath/hypot.hpp +116 -0
- package/vendor/boost/math/include/boost/math/ccmath/ilogb.hpp +60 -0
- package/vendor/boost/math/include/boost/math/ccmath/isfinite.hpp +53 -0
- package/vendor/boost/math/include/boost/math/ccmath/isgreater.hpp +42 -0
- package/vendor/boost/math/include/boost/math/ccmath/isgreaterequal.hpp +42 -0
- package/vendor/boost/math/include/boost/math/ccmath/isinf.hpp +61 -0
- package/vendor/boost/math/include/boost/math/ccmath/isless.hpp +42 -0
- package/vendor/boost/math/include/boost/math/ccmath/islessequal.hpp +42 -0
- package/vendor/boost/math/include/boost/math/ccmath/isnan.hpp +42 -0
- package/vendor/boost/math/include/boost/math/ccmath/isnormal.hpp +47 -0
- package/vendor/boost/math/include/boost/math/ccmath/isunordered.hpp +35 -0
- package/vendor/boost/math/include/boost/math/ccmath/ldexp.hpp +81 -0
- package/vendor/boost/math/include/boost/math/ccmath/logb.hpp +86 -0
- package/vendor/boost/math/include/boost/math/ccmath/modf.hpp +79 -0
- package/vendor/boost/math/include/boost/math/ccmath/next.hpp +458 -0
- package/vendor/boost/math/include/boost/math/ccmath/remainder.hpp +106 -0
- package/vendor/boost/math/include/boost/math/ccmath/round.hpp +179 -0
- package/vendor/boost/math/include/boost/math/ccmath/scalbln.hpp +60 -0
- package/vendor/boost/math/include/boost/math/ccmath/scalbn.hpp +81 -0
- package/vendor/boost/math/include/boost/math/ccmath/signbit.hpp +218 -0
- package/vendor/boost/math/include/boost/math/ccmath/sqrt.hpp +80 -0
- package/vendor/boost/math/include/boost/math/ccmath/trunc.hpp +70 -0
- package/vendor/boost/math/include/boost/math/common_factor.hpp +23 -0
- package/vendor/boost/math/include/boost/math/common_factor_ct.hpp +34 -0
- package/vendor/boost/math/include/boost/math/common_factor_rt.hpp +30 -0
- package/vendor/boost/math/include/boost/math/complex/acos.hpp +245 -0
- package/vendor/boost/math/include/boost/math/complex/acosh.hpp +34 -0
- package/vendor/boost/math/include/boost/math/complex/asin.hpp +252 -0
- package/vendor/boost/math/include/boost/math/complex/asinh.hpp +32 -0
- package/vendor/boost/math/include/boost/math/complex/atan.hpp +36 -0
- package/vendor/boost/math/include/boost/math/complex/atanh.hpp +214 -0
- package/vendor/boost/math/include/boost/math/complex/details.hpp +68 -0
- package/vendor/boost/math/include/boost/math/complex/fabs.hpp +23 -0
- package/vendor/boost/math/include/boost/math/complex.hpp +32 -0
- package/vendor/boost/math/include/boost/math/concepts/distributions.hpp +497 -0
- package/vendor/boost/math/include/boost/math/concepts/real_concept.hpp +400 -0
- package/vendor/boost/math/include/boost/math/concepts/real_type_concept.hpp +119 -0
- package/vendor/boost/math/include/boost/math/concepts/std_real_concept.hpp +427 -0
- package/vendor/boost/math/include/boost/math/constants/calculate_constants.hpp +1117 -0
- package/vendor/boost/math/include/boost/math/constants/constants.hpp +360 -0
- package/vendor/boost/math/include/boost/math/constants/info.hpp +169 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_cmath.hpp +1012 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_complex.hpp +38 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_complex_std.hpp +813 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_iostream.hpp +822 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_limits.hpp +87 -0
- package/vendor/boost/math/include/boost/math/cstdfloat/cstdfloat_types.hpp +441 -0
- package/vendor/boost/math/include/boost/math/differentiation/autodiff.hpp +2061 -0
- package/vendor/boost/math/include/boost/math/differentiation/autodiff_cpp11.hpp +387 -0
- package/vendor/boost/math/include/boost/math/differentiation/autodiff_reverse.hpp +811 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_operator_expressions.hpp +276 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_et.hpp +160 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_basic_ops_no_et.hpp +154 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_comparison_operator_overloads.hpp +167 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_erf_overloads.hpp +234 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_expression_template_base.hpp +258 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_helper_functions.hpp +18 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_memory_management.hpp +462 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_et.hpp +275 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_expressions.hpp +852 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_stl_no_et.hpp +266 -0
- package/vendor/boost/math/include/boost/math/differentiation/detail/reverse_mode_autodiff_utilities.hpp +51 -0
- package/vendor/boost/math/include/boost/math/differentiation/finite_difference.hpp +266 -0
- package/vendor/boost/math/include/boost/math/differentiation/lanczos_smoothing.hpp +591 -0
- package/vendor/boost/math/include/boost/math/distributions/arcsine.hpp +593 -0
- package/vendor/boost/math/include/boost/math/distributions/bernoulli.hpp +349 -0
- package/vendor/boost/math/include/boost/math/distributions/beta.hpp +584 -0
- package/vendor/boost/math/include/boost/math/distributions/binomial.hpp +729 -0
- package/vendor/boost/math/include/boost/math/distributions/cauchy.hpp +379 -0
- package/vendor/boost/math/include/boost/math/distributions/chi_squared.hpp +345 -0
- package/vendor/boost/math/include/boost/math/distributions/complement.hpp +198 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/common_error_handling.hpp +228 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/derived_accessors.hpp +190 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/generic_mode.hpp +145 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/generic_quantile.hpp +100 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/hypergeometric_cdf.hpp +101 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/hypergeometric_pdf.hpp +490 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/hypergeometric_quantile.hpp +245 -0
- package/vendor/boost/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp +583 -0
- package/vendor/boost/math/include/boost/math/distributions/empirical_cumulative_distribution_function.hpp +73 -0
- package/vendor/boost/math/include/boost/math/distributions/exponential.hpp +352 -0
- package/vendor/boost/math/include/boost/math/distributions/extreme_value.hpp +388 -0
- package/vendor/boost/math/include/boost/math/distributions/find_location.hpp +141 -0
- package/vendor/boost/math/include/boost/math/distributions/find_scale.hpp +200 -0
- package/vendor/boost/math/include/boost/math/distributions/fisher_f.hpp +393 -0
- package/vendor/boost/math/include/boost/math/distributions/fwd.hpp +171 -0
- package/vendor/boost/math/include/boost/math/distributions/gamma.hpp +396 -0
- package/vendor/boost/math/include/boost/math/distributions/geometric.hpp +571 -0
- package/vendor/boost/math/include/boost/math/distributions/holtsmark.hpp +2518 -0
- package/vendor/boost/math/include/boost/math/distributions/hyperexponential.hpp +641 -0
- package/vendor/boost/math/include/boost/math/distributions/hypergeometric.hpp +313 -0
- package/vendor/boost/math/include/boost/math/distributions/inverse_chi_squared.hpp +398 -0
- package/vendor/boost/math/include/boost/math/distributions/inverse_gamma.hpp +504 -0
- package/vendor/boost/math/include/boost/math/distributions/inverse_gaussian.hpp +566 -0
- package/vendor/boost/math/include/boost/math/distributions/kolmogorov_smirnov.hpp +511 -0
- package/vendor/boost/math/include/boost/math/distributions/landau.hpp +4642 -0
- package/vendor/boost/math/include/boost/math/distributions/laplace.hpp +494 -0
- package/vendor/boost/math/include/boost/math/distributions/logistic.hpp +377 -0
- package/vendor/boost/math/include/boost/math/distributions/lognormal.hpp +361 -0
- package/vendor/boost/math/include/boost/math/distributions/mapairy.hpp +4220 -0
- package/vendor/boost/math/include/boost/math/distributions/negative_binomial.hpp +609 -0
- package/vendor/boost/math/include/boost/math/distributions/non_central_beta.hpp +981 -0
- package/vendor/boost/math/include/boost/math/distributions/non_central_chi_squared.hpp +998 -0
- package/vendor/boost/math/include/boost/math/distributions/non_central_f.hpp +712 -0
- package/vendor/boost/math/include/boost/math/distributions/non_central_t.hpp +1324 -0
- package/vendor/boost/math/include/boost/math/distributions/normal.hpp +368 -0
- package/vendor/boost/math/include/boost/math/distributions/pareto.hpp +508 -0
- package/vendor/boost/math/include/boost/math/distributions/poisson.hpp +563 -0
- package/vendor/boost/math/include/boost/math/distributions/rayleigh.hpp +381 -0
- package/vendor/boost/math/include/boost/math/distributions/saspoint5.hpp +2796 -0
- package/vendor/boost/math/include/boost/math/distributions/skew_normal.hpp +760 -0
- package/vendor/boost/math/include/boost/math/distributions/students_t.hpp +721 -0
- package/vendor/boost/math/include/boost/math/distributions/triangular.hpp +548 -0
- package/vendor/boost/math/include/boost/math/distributions/uniform.hpp +398 -0
- package/vendor/boost/math/include/boost/math/distributions/weibull.hpp +487 -0
- package/vendor/boost/math/include/boost/math/distributions.hpp +58 -0
- package/vendor/boost/math/include/boost/math/filters/daubechies.hpp +99 -0
- package/vendor/boost/math/include/boost/math/interpolators/barycentric_rational.hpp +99 -0
- package/vendor/boost/math/include/boost/math/interpolators/bezier_polynomial.hpp +60 -0
- package/vendor/boost/math/include/boost/math/interpolators/bilinear_uniform.hpp +54 -0
- package/vendor/boost/math/include/boost/math/interpolators/cardinal_cubic_b_spline.hpp +87 -0
- package/vendor/boost/math/include/boost/math/interpolators/cardinal_quadratic_b_spline.hpp +57 -0
- package/vendor/boost/math/include/boost/math/interpolators/cardinal_quintic_b_spline.hpp +62 -0
- package/vendor/boost/math/include/boost/math/interpolators/cardinal_trigonometric.hpp +58 -0
- package/vendor/boost/math/include/boost/math/interpolators/catmull_rom.hpp +310 -0
- package/vendor/boost/math/include/boost/math/interpolators/cubic_b_spline.hpp +90 -0
- package/vendor/boost/math/include/boost/math/interpolators/cubic_hermite.hpp +142 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/barycentric_rational_detail.hpp +215 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/bezier_polynomial_detail.hpp +167 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/bilinear_uniform_detail.hpp +137 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cardinal_cubic_b_spline_detail.hpp +331 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cardinal_quadratic_b_spline_detail.hpp +208 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cardinal_quintic_b_spline_detail.hpp +241 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cardinal_trigonometric_detail.hpp +684 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cubic_b_spline_detail.hpp +330 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/cubic_hermite_detail.hpp +439 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/quintic_hermite_detail.hpp +586 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/septic_hermite_detail.hpp +653 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/vector_barycentric_rational_detail.hpp +196 -0
- package/vendor/boost/math/include/boost/math/interpolators/detail/whittaker_shannon_detail.hpp +128 -0
- package/vendor/boost/math/include/boost/math/interpolators/makima.hpp +178 -0
- package/vendor/boost/math/include/boost/math/interpolators/pchip.hpp +136 -0
- package/vendor/boost/math/include/boost/math/interpolators/quintic_hermite.hpp +143 -0
- package/vendor/boost/math/include/boost/math/interpolators/septic_hermite.hpp +147 -0
- package/vendor/boost/math/include/boost/math/interpolators/vector_barycentric_rational.hpp +82 -0
- package/vendor/boost/math/include/boost/math/interpolators/whittaker_shannon.hpp +47 -0
- package/vendor/boost/math/include/boost/math/octonion.hpp +4254 -0
- package/vendor/boost/math/include/boost/math/optimization/cma_es.hpp +392 -0
- package/vendor/boost/math/include/boost/math/optimization/detail/common.hpp +200 -0
- package/vendor/boost/math/include/boost/math/optimization/detail/differentiable_opt_utilties.hpp +157 -0
- package/vendor/boost/math/include/boost/math/optimization/detail/gradient_opt_base.hpp +92 -0
- package/vendor/boost/math/include/boost/math/optimization/detail/line_search_policies.hpp +206 -0
- package/vendor/boost/math/include/boost/math/optimization/detail/rdiff_optimization_policies.hpp +134 -0
- package/vendor/boost/math/include/boost/math/optimization/differential_evolution.hpp +236 -0
- package/vendor/boost/math/include/boost/math/optimization/gradient_descent.hpp +202 -0
- package/vendor/boost/math/include/boost/math/optimization/gradient_optimizers.hpp +18 -0
- package/vendor/boost/math/include/boost/math/optimization/jso.hpp +465 -0
- package/vendor/boost/math/include/boost/math/optimization/lbfgs.hpp +382 -0
- package/vendor/boost/math/include/boost/math/optimization/minimizer.hpp +336 -0
- package/vendor/boost/math/include/boost/math/optimization/nesterov.hpp +208 -0
- package/vendor/boost/math/include/boost/math/optimization/random_search.hpp +145 -0
- package/vendor/boost/math/include/boost/math/policies/error_handling.hpp +1062 -0
- package/vendor/boost/math/include/boost/math/policies/policy.hpp +1034 -0
- package/vendor/boost/math/include/boost/math/quadrature/detail/exp_sinh_detail.hpp +2002 -0
- package/vendor/boost/math/include/boost/math/quadrature/detail/ooura_fourier_integrals_detail.hpp +692 -0
- package/vendor/boost/math/include/boost/math/quadrature/detail/sinh_sinh_detail.hpp +1353 -0
- package/vendor/boost/math/include/boost/math/quadrature/detail/tanh_sinh_detail.hpp +879 -0
- package/vendor/boost/math/include/boost/math/quadrature/exp_sinh.hpp +180 -0
- package/vendor/boost/math/include/boost/math/quadrature/gauss.hpp +904 -0
- package/vendor/boost/math/include/boost/math/quadrature/gauss_kronrod.hpp +1317 -0
- package/vendor/boost/math/include/boost/math/quadrature/naive_monte_carlo.hpp +469 -0
- package/vendor/boost/math/include/boost/math/quadrature/ooura_fourier_integrals.hpp +68 -0
- package/vendor/boost/math/include/boost/math/quadrature/sinh_sinh.hpp +72 -0
- package/vendor/boost/math/include/boost/math/quadrature/tanh_sinh.hpp +289 -0
- package/vendor/boost/math/include/boost/math/quadrature/trapezoidal.hpp +125 -0
- package/vendor/boost/math/include/boost/math/quadrature/wavelet_transforms.hpp +47 -0
- package/vendor/boost/math/include/boost/math/quaternion.hpp +1190 -0
- package/vendor/boost/math/include/boost/math/special_functions/acosh.hpp +102 -0
- package/vendor/boost/math/include/boost/math/special_functions/airy.hpp +475 -0
- package/vendor/boost/math/include/boost/math/special_functions/asinh.hpp +110 -0
- package/vendor/boost/math/include/boost/math/special_functions/atanh.hpp +116 -0
- package/vendor/boost/math/include/boost/math/special_functions/bernoulli.hpp +149 -0
- package/vendor/boost/math/include/boost/math/special_functions/bessel.hpp +795 -0
- package/vendor/boost/math/include/boost/math/special_functions/bessel_iterators.hpp +187 -0
- package/vendor/boost/math/include/boost/math/special_functions/bessel_prime.hpp +343 -0
- package/vendor/boost/math/include/boost/math/special_functions/beta.hpp +1870 -0
- package/vendor/boost/math/include/boost/math/special_functions/binomial.hpp +87 -0
- package/vendor/boost/math/include/boost/math/special_functions/cardinal_b_spline.hpp +218 -0
- package/vendor/boost/math/include/boost/math/special_functions/cbrt.hpp +215 -0
- package/vendor/boost/math/include/boost/math/special_functions/chebyshev.hpp +314 -0
- package/vendor/boost/math/include/boost/math/special_functions/chebyshev_transform.hpp +237 -0
- package/vendor/boost/math/include/boost/math/special_functions/cos_pi.hpp +128 -0
- package/vendor/boost/math/include/boost/math/special_functions/daubechies_scaling.hpp +491 -0
- package/vendor/boost/math/include/boost/math/special_functions/daubechies_wavelet.hpp +266 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/airy_ai_bi_zero.hpp +222 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bernoulli_details.hpp +629 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_derivatives_linear.hpp +107 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_i0.hpp +550 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_i1.hpp +556 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_ik.hpp +447 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_j0.hpp +192 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_j1.hpp +179 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jn.hpp +127 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy.hpp +603 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy_asym.hpp +230 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp +141 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp +219 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy_series.hpp +267 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_jy_zero.hpp +643 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_k0.hpp +485 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_k1.hpp +526 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_kn.hpp +91 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_y0.hpp +205 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_y1.hpp +183 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/bessel_yn.hpp +113 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/daubechies_scaling_integer_grid.hpp +244 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/erf_inv.hpp +559 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/fp_traits.hpp +562 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/gamma_inva.hpp +241 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_0F1_bessel.hpp +46 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_addition_theorems_on_z.hpp +293 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_bessel.hpp +768 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_by_ratios.hpp +678 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_cf.hpp +50 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_large_a.hpp +35 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_large_abz.hpp +492 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_negative_b_regions.hpp +521 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_recurrence.hpp +522 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_scaled_series.hpp +60 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_1F1_small_a_negative_b_by_ratio.hpp +70 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_asym.hpp +179 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_cf.hpp +228 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_pFq_checked_series.hpp +687 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_pade.hpp +131 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_rational.hpp +167 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_separated_series.hpp +50 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/hypergeometric_series.hpp +434 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/ibeta_inv_ab.hpp +331 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/ibeta_inverse.hpp +1122 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/iconv.hpp +43 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/igamma_inverse.hpp +587 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/igamma_large.hpp +823 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/lambert_w_lookup_table.ipp +162 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/lanczos_sse2.hpp +238 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/lgamma_small.hpp +569 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/polygamma.hpp +538 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/round_fwd.hpp +87 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/t_distribution_inv.hpp +567 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/unchecked_bernoulli.hpp +1305 -0
- package/vendor/boost/math/include/boost/math/special_functions/detail/unchecked_factorial.hpp +1727 -0
- package/vendor/boost/math/include/boost/math/special_functions/digamma.hpp +631 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_1.hpp +815 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_2.hpp +756 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_3.hpp +374 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_d.hpp +183 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_rc.hpp +112 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_rd.hpp +207 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_rf.hpp +169 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_rg.hpp +130 -0
- package/vendor/boost/math/include/boost/math/special_functions/ellint_rj.hpp +299 -0
- package/vendor/boost/math/include/boost/math/special_functions/erf.hpp +1334 -0
- package/vendor/boost/math/include/boost/math/special_functions/expint.hpp +1614 -0
- package/vendor/boost/math/include/boost/math/special_functions/expm1.hpp +416 -0
- package/vendor/boost/math/include/boost/math/special_functions/factorials.hpp +276 -0
- package/vendor/boost/math/include/boost/math/special_functions/fibonacci.hpp +92 -0
- package/vendor/boost/math/include/boost/math/special_functions/fourier_transform_daubechies.hpp +248 -0
- package/vendor/boost/math/include/boost/math/special_functions/fpclassify.hpp +797 -0
- package/vendor/boost/math/include/boost/math/special_functions/gamma.hpp +2628 -0
- package/vendor/boost/math/include/boost/math/special_functions/gegenbauer.hpp +84 -0
- package/vendor/boost/math/include/boost/math/special_functions/hankel.hpp +186 -0
- package/vendor/boost/math/include/boost/math/special_functions/hermite.hpp +79 -0
- package/vendor/boost/math/include/boost/math/special_functions/heuman_lambda.hpp +97 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypergeometric_0F1.hpp +116 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypergeometric_1F0.hpp +69 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypergeometric_1F1.hpp +822 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypergeometric_2F0.hpp +163 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypergeometric_pFq.hpp +205 -0
- package/vendor/boost/math/include/boost/math/special_functions/hypot.hpp +148 -0
- package/vendor/boost/math/include/boost/math/special_functions/jacobi.hpp +69 -0
- package/vendor/boost/math/include/boost/math/special_functions/jacobi_elliptic.hpp +319 -0
- package/vendor/boost/math/include/boost/math/special_functions/jacobi_theta.hpp +802 -0
- package/vendor/boost/math/include/boost/math/special_functions/jacobi_zeta.hpp +83 -0
- package/vendor/boost/math/include/boost/math/special_functions/laguerre.hpp +139 -0
- package/vendor/boost/math/include/boost/math/special_functions/lambert_w.hpp +2171 -0
- package/vendor/boost/math/include/boost/math/special_functions/lanczos.hpp +2760 -0
- package/vendor/boost/math/include/boost/math/special_functions/legendre.hpp +380 -0
- package/vendor/boost/math/include/boost/math/special_functions/legendre_stieltjes.hpp +234 -0
- package/vendor/boost/math/include/boost/math/special_functions/log1p.hpp +417 -0
- package/vendor/boost/math/include/boost/math/special_functions/logaddexp.hpp +41 -0
- package/vendor/boost/math/include/boost/math/special_functions/logistic_sigmoid.hpp +46 -0
- package/vendor/boost/math/include/boost/math/special_functions/logit.hpp +56 -0
- package/vendor/boost/math/include/boost/math/special_functions/logsumexp.hpp +60 -0
- package/vendor/boost/math/include/boost/math/special_functions/math_fwd.hpp +1927 -0
- package/vendor/boost/math/include/boost/math/special_functions/modf.hpp +74 -0
- package/vendor/boost/math/include/boost/math/special_functions/next.hpp +886 -0
- package/vendor/boost/math/include/boost/math/special_functions/nonfinite_num_facets.hpp +588 -0
- package/vendor/boost/math/include/boost/math/special_functions/owens_t.hpp +1067 -0
- package/vendor/boost/math/include/boost/math/special_functions/polygamma.hpp +83 -0
- package/vendor/boost/math/include/boost/math/special_functions/pow.hpp +144 -0
- package/vendor/boost/math/include/boost/math/special_functions/powm1.hpp +101 -0
- package/vendor/boost/math/include/boost/math/special_functions/prime.hpp +2433 -0
- package/vendor/boost/math/include/boost/math/special_functions/relative_difference.hpp +134 -0
- package/vendor/boost/math/include/boost/math/special_functions/round.hpp +353 -0
- package/vendor/boost/math/include/boost/math/special_functions/rsqrt.hpp +52 -0
- package/vendor/boost/math/include/boost/math/special_functions/sign.hpp +241 -0
- package/vendor/boost/math/include/boost/math/special_functions/sin_pi.hpp +135 -0
- package/vendor/boost/math/include/boost/math/special_functions/sinc.hpp +123 -0
- package/vendor/boost/math/include/boost/math/special_functions/sinhc.hpp +142 -0
- package/vendor/boost/math/include/boost/math/special_functions/spherical_harmonic.hpp +205 -0
- package/vendor/boost/math/include/boost/math/special_functions/sqrt1pm1.hpp +49 -0
- package/vendor/boost/math/include/boost/math/special_functions/trigamma.hpp +448 -0
- package/vendor/boost/math/include/boost/math/special_functions/trunc.hpp +385 -0
- package/vendor/boost/math/include/boost/math/special_functions/ulp.hpp +102 -0
- package/vendor/boost/math/include/boost/math/special_functions/zeta.hpp +1081 -0
- package/vendor/boost/math/include/boost/math/special_functions.hpp +86 -0
- package/vendor/boost/math/include/boost/math/statistics/anderson_darling.hpp +112 -0
- package/vendor/boost/math/include/boost/math/statistics/bivariate_statistics.hpp +470 -0
- package/vendor/boost/math/include/boost/math/statistics/chatterjee_correlation.hpp +159 -0
- package/vendor/boost/math/include/boost/math/statistics/detail/rank.hpp +140 -0
- package/vendor/boost/math/include/boost/math/statistics/detail/single_pass.hpp +401 -0
- package/vendor/boost/math/include/boost/math/statistics/linear_regression.hpp +133 -0
- package/vendor/boost/math/include/boost/math/statistics/ljung_box.hpp +70 -0
- package/vendor/boost/math/include/boost/math/statistics/runs_test.hpp +121 -0
- package/vendor/boost/math/include/boost/math/statistics/signal_statistics.hpp +350 -0
- package/vendor/boost/math/include/boost/math/statistics/t_test.hpp +275 -0
- package/vendor/boost/math/include/boost/math/statistics/univariate_statistics.hpp +1184 -0
- package/vendor/boost/math/include/boost/math/statistics/z_test.hpp +161 -0
- package/vendor/boost/math/include/boost/math/tools/agm.hpp +47 -0
- package/vendor/boost/math/include/boost/math/tools/array.hpp +41 -0
- package/vendor/boost/math/include/boost/math/tools/assert.hpp +49 -0
- package/vendor/boost/math/include/boost/math/tools/atomic.hpp +50 -0
- package/vendor/boost/math/include/boost/math/tools/big_constant.hpp +110 -0
- package/vendor/boost/math/include/boost/math/tools/bivariate_statistics.hpp +96 -0
- package/vendor/boost/math/include/boost/math/tools/centered_continued_fraction.hpp +173 -0
- package/vendor/boost/math/include/boost/math/tools/cohen_acceleration.hpp +51 -0
- package/vendor/boost/math/include/boost/math/tools/color_maps.hpp +1943 -0
- package/vendor/boost/math/include/boost/math/tools/complex.hpp +115 -0
- package/vendor/boost/math/include/boost/math/tools/concepts.hpp +24 -0
- package/vendor/boost/math/include/boost/math/tools/condition_numbers.hpp +144 -0
- package/vendor/boost/math/include/boost/math/tools/config.hpp +856 -0
- package/vendor/boost/math/include/boost/math/tools/convert_from_string.hpp +85 -0
- package/vendor/boost/math/include/boost/math/tools/cstdint.hpp +107 -0
- package/vendor/boost/math/include/boost/math/tools/cubic_roots.hpp +198 -0
- package/vendor/boost/math/include/boost/math/tools/cxx03_warn.hpp +95 -0
- package/vendor/boost/math/include/boost/math/tools/detail/is_const_iterable.hpp +38 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_10.hpp +84 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_11.hpp +90 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_12.hpp +96 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_13.hpp +102 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_14.hpp +108 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_15.hpp +114 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_16.hpp +120 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_17.hpp +126 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_18.hpp +132 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_19.hpp +138 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_2.hpp +36 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_20.hpp +144 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_3.hpp +42 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_4.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_5.hpp +54 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_6.hpp +60 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_7.hpp +66 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_8.hpp +72 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner1_9.hpp +78 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_10.hpp +90 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_11.hpp +97 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_12.hpp +104 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_13.hpp +111 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_14.hpp +118 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_15.hpp +125 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_16.hpp +132 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_17.hpp +139 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_18.hpp +146 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_19.hpp +153 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_2.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_20.hpp +160 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_3.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_4.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_5.hpp +55 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_6.hpp +62 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_7.hpp +69 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_8.hpp +76 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner2_9.hpp +83 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_10.hpp +156 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_11.hpp +181 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_12.hpp +208 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_13.hpp +237 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_14.hpp +268 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_15.hpp +301 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_16.hpp +336 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_17.hpp +373 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_18.hpp +412 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_19.hpp +453 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_2.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_20.hpp +496 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_3.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_4.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_5.hpp +61 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_6.hpp +76 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_7.hpp +93 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_8.hpp +112 -0
- package/vendor/boost/math/include/boost/math/tools/detail/polynomial_horner3_9.hpp +133 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_10.hpp +138 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_11.hpp +150 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_12.hpp +162 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_13.hpp +174 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_14.hpp +186 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_15.hpp +198 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_16.hpp +210 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_17.hpp +222 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_18.hpp +234 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_19.hpp +246 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_2.hpp +42 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_20.hpp +258 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_3.hpp +54 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_4.hpp +66 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_5.hpp +78 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_6.hpp +90 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_7.hpp +102 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_8.hpp +114 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner1_9.hpp +126 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_10.hpp +144 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_11.hpp +160 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_12.hpp +176 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_13.hpp +192 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_14.hpp +208 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_15.hpp +224 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_16.hpp +240 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_17.hpp +256 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_18.hpp +272 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_19.hpp +288 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_2.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_20.hpp +304 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_3.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_4.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_5.hpp +64 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_6.hpp +80 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_7.hpp +96 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_8.hpp +112 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner2_9.hpp +128 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_10.hpp +396 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_11.hpp +482 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_12.hpp +576 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_13.hpp +678 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_14.hpp +788 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_15.hpp +906 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_16.hpp +1032 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_17.hpp +1166 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_18.hpp +1308 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_19.hpp +1458 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_2.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_20.hpp +1616 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_3.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_4.hpp +48 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_5.hpp +86 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_6.hpp +132 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_7.hpp +186 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_8.hpp +248 -0
- package/vendor/boost/math/include/boost/math/tools/detail/rational_horner3_9.hpp +318 -0
- package/vendor/boost/math/include/boost/math/tools/engel_expansion.hpp +124 -0
- package/vendor/boost/math/include/boost/math/tools/estrin.hpp +72 -0
- package/vendor/boost/math/include/boost/math/tools/fraction.hpp +354 -0
- package/vendor/boost/math/include/boost/math/tools/header_deprecated.hpp +27 -0
- package/vendor/boost/math/include/boost/math/tools/is_constant_evaluated.hpp +51 -0
- package/vendor/boost/math/include/boost/math/tools/is_detected.hpp +56 -0
- package/vendor/boost/math/include/boost/math/tools/is_standalone.hpp +18 -0
- package/vendor/boost/math/include/boost/math/tools/luroth_expansion.hpp +147 -0
- package/vendor/boost/math/include/boost/math/tools/minima.hpp +164 -0
- package/vendor/boost/math/include/boost/math/tools/mp.hpp +423 -0
- package/vendor/boost/math/include/boost/math/tools/norms.hpp +638 -0
- package/vendor/boost/math/include/boost/math/tools/nothrow.hpp +27 -0
- package/vendor/boost/math/include/boost/math/tools/numeric_limits.hpp +888 -0
- package/vendor/boost/math/include/boost/math/tools/numerical_differentiation.hpp +12 -0
- package/vendor/boost/math/include/boost/math/tools/polynomial.hpp +862 -0
- package/vendor/boost/math/include/boost/math/tools/polynomial_gcd.hpp +268 -0
- package/vendor/boost/math/include/boost/math/tools/precision.hpp +418 -0
- package/vendor/boost/math/include/boost/math/tools/promotion.hpp +135 -0
- package/vendor/boost/math/include/boost/math/tools/quartic_roots.hpp +157 -0
- package/vendor/boost/math/include/boost/math/tools/random_vector.hpp +101 -0
- package/vendor/boost/math/include/boost/math/tools/rational.hpp +346 -0
- package/vendor/boost/math/include/boost/math/tools/real_cast.hpp +31 -0
- package/vendor/boost/math/include/boost/math/tools/recurrence.hpp +330 -0
- package/vendor/boost/math/include/boost/math/tools/roots.hpp +1072 -0
- package/vendor/boost/math/include/boost/math/tools/series.hpp +221 -0
- package/vendor/boost/math/include/boost/math/tools/signal_statistics.hpp +353 -0
- package/vendor/boost/math/include/boost/math/tools/simple_continued_fraction.hpp +177 -0
- package/vendor/boost/math/include/boost/math/tools/stats.hpp +87 -0
- package/vendor/boost/math/include/boost/math/tools/test_value.hpp +143 -0
- package/vendor/boost/math/include/boost/math/tools/throw_exception.hpp +43 -0
- package/vendor/boost/math/include/boost/math/tools/toms748_solve.hpp +636 -0
- package/vendor/boost/math/include/boost/math/tools/traits.hpp +140 -0
- package/vendor/boost/math/include/boost/math/tools/tuple.hpp +88 -0
- package/vendor/boost/math/include/boost/math/tools/type_traits.hpp +489 -0
- package/vendor/boost/math/include/boost/math/tools/ulps_plot.hpp +598 -0
- package/vendor/boost/math/include/boost/math/tools/univariate_statistics.hpp +437 -0
- package/vendor/boost/math/include/boost/math/tools/user.hpp +105 -0
- package/vendor/boost/math/include/boost/math/tools/utility.hpp +69 -0
- package/vendor/boost/math/include/boost/math/tools/workaround.hpp +42 -0
- package/vendor/boost/math/include/boost/math/tr1.hpp +1121 -0
- package/vendor/boost/math/include/boost/math/tr1_c_macros.ipp +810 -0
- package/vendor/boost/math/include/boost/math_fwd.hpp +42 -0
- package/vendor/boost/multiprecision/LICENSE +23 -0
- package/vendor/boost/multiprecision/README.md +168 -0
- package/vendor/boost/multiprecision/include/boost/config/abi/borland_prefix.hpp +27 -0
- package/vendor/boost/multiprecision/include/boost/config/abi/borland_suffix.hpp +12 -0
- package/vendor/boost/multiprecision/include/boost/config/abi/msvc_prefix.hpp +22 -0
- package/vendor/boost/multiprecision/include/boost/config/abi/msvc_suffix.hpp +8 -0
- package/vendor/boost/multiprecision/include/boost/config/abi_prefix.hpp +25 -0
- package/vendor/boost/multiprecision/include/boost/config/abi_suffix.hpp +25 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx03.hpp +211 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx11.hpp +212 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx14.hpp +47 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx17.hpp +65 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx20.hpp +59 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx23.hpp +41 -0
- package/vendor/boost/multiprecision/include/boost/config/assert_cxx98.hpp +23 -0
- package/vendor/boost/multiprecision/include/boost/config/auto_link.hpp +530 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/borland.hpp +342 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/clang.hpp +370 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/clang_version.hpp +98 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/codegear.hpp +389 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/comeau.hpp +59 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/common_edg.hpp +185 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/compaq_cxx.hpp +19 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/cray.hpp +446 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/diab.hpp +26 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/digitalmars.hpp +146 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/gcc.hpp +386 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/gcc_xml.hpp +115 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/greenhills.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/hp_acc.hpp +153 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/intel.hpp +577 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/kai.hpp +33 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/metrowerks.hpp +201 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/mpw.hpp +143 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/nvcc.hpp +64 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/pathscale.hpp +141 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/pgi.hpp +23 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/sgi_mipspro.hpp +29 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/sunpro_cc.hpp +225 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/vacpp.hpp +189 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/visualc.hpp +400 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/xlcpp.hpp +303 -0
- package/vendor/boost/multiprecision/include/boost/config/compiler/xlcpp_zos.hpp +174 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/cxx_composite.hpp +218 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/posix_features.hpp +95 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/select_compiler_config.hpp +157 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/select_platform_config.hpp +147 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/select_stdlib_config.hpp +121 -0
- package/vendor/boost/multiprecision/include/boost/config/detail/suffix.hpp +1334 -0
- package/vendor/boost/multiprecision/include/boost/config/header_deprecated.hpp +26 -0
- package/vendor/boost/multiprecision/include/boost/config/helper_macros.hpp +37 -0
- package/vendor/boost/multiprecision/include/boost/config/no_tr1/cmath.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/no_tr1/complex.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/no_tr1/functional.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/no_tr1/memory.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/no_tr1/utility.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/aix.hpp +33 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/amigaos.hpp +15 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/beos.hpp +26 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/bsd.hpp +83 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/cloudabi.hpp +18 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/cray.hpp +18 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/cygwin.hpp +71 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/haiku.hpp +31 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/hpux.hpp +87 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/irix.hpp +31 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/linux.hpp +106 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/macos.hpp +87 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/qnxnto.hpp +31 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/solaris.hpp +31 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/symbian.hpp +97 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/vms.hpp +25 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/vxworks.hpp +422 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/wasm.hpp +23 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/win32.hpp +90 -0
- package/vendor/boost/multiprecision/include/boost/config/platform/zos.hpp +32 -0
- package/vendor/boost/multiprecision/include/boost/config/pragma_message.hpp +31 -0
- package/vendor/boost/multiprecision/include/boost/config/requires_threads.hpp +92 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/dinkumware.hpp +324 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/libcomo.hpp +93 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/libcpp.hpp +185 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/libstdcpp3.hpp +482 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/modena.hpp +79 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/msl.hpp +98 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/roguewave.hpp +208 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/sgi.hpp +168 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/stlport.hpp +258 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/vacpp.hpp +74 -0
- package/vendor/boost/multiprecision/include/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- package/vendor/boost/multiprecision/include/boost/config/user.hpp +133 -0
- package/vendor/boost/multiprecision/include/boost/config/warning_disable.hpp +47 -0
- package/vendor/boost/multiprecision/include/boost/config/workaround.hpp +310 -0
- package/vendor/boost/multiprecision/include/boost/config.hpp +67 -0
- package/vendor/boost/multiprecision/include/boost/cstdint.hpp +556 -0
- package/vendor/boost/multiprecision/include/boost/cxx11_char_types.hpp +70 -0
- package/vendor/boost/multiprecision/include/boost/detail/workaround.hpp +10 -0
- package/vendor/boost/multiprecision/include/boost/limits.hpp +146 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/complex128.hpp +24 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/complex_adaptor.hpp +1049 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_bin_float/io.hpp +700 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_bin_float.hpp +2374 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_complex.hpp +12 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_dec_float.hpp +3807 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail.hpp +177 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath.hpp +25 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_fabs.hpp +27 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_floor.hpp +116 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_fma.hpp +65 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_fpclassify.hpp +52 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_frexp.hpp +93 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_isinf.hpp +24 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_isnan.hpp +21 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_ldexp.hpp +71 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_limits.hpp +218 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_log.hpp +172 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_ccmath_sqrt.hpp +57 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_df_qf/cpp_df_qf_detail_constants.hpp +80 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_double_fp.hpp +2690 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/add.hpp +368 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/bitwise.hpp +896 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/checked.hpp +178 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/divide.hpp +703 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/limits.hpp +292 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/literals.hpp +296 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/misc.hpp +1462 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/serialize.hpp +209 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/cpp_int.hpp +2360 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/debug_adaptor.hpp +760 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/assert.hpp +29 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/atomic.hpp +62 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/bitscan.hpp +317 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/constexpr.hpp +88 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/default_ops.hpp +4077 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/digits.hpp +49 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/empty_value.hpp +87 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/endian.hpp +35 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/et_ops.hpp +1831 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/float128_functions.hpp +95 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/fpclassify.hpp +101 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/functions/constants.hpp +289 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/functions/pow.hpp +941 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/functions/trig.hpp +1064 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/hash.hpp +56 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/integer_ops.hpp +474 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/itos.hpp +39 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/min_max.hpp +106 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/number_base.hpp +1656 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/number_compare.hpp +848 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/precision.hpp +313 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/rebind.hpp +19 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/standalone_config.hpp +165 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/static_array.hpp +42 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/string_helpers.hpp +48 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/tables.hpp +80 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/detail/utype_helper.hpp +374 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/eigen.hpp +248 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/float128.hpp +960 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/fwd.hpp +268 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/gmp.hpp +4100 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/integer.hpp +363 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/logged_adaptor.hpp +834 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/miller_rabin.hpp +221 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/mpc.hpp +1721 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/mpfi.hpp +2579 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/mpfr.hpp +3668 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/number.hpp +2491 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/random.hpp +23 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/rational_adaptor.hpp +1289 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/tommath.hpp +1044 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_backend.hpp +91 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_complex.hpp +22 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/max_digits10.hpp +79 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/std_integer_traits.hpp +95 -0
- package/vendor/boost/multiprecision/include/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- package/vendor/boost/multiprecision/include/boost/static_assert.hpp +179 -0
- package/vendor/boost/multiprecision/include/boost/version.hpp +32 -0
- package/vendor/eigen/COPYING.APACHE +203 -0
- package/vendor/eigen/COPYING.BSD +26 -0
- package/vendor/eigen/COPYING.MPL2 +373 -0
- package/vendor/eigen/COPYING.README +6 -0
- package/vendor/eigen/Eigen/AccelerateSupport +52 -0
- package/vendor/eigen/Eigen/Cholesky +43 -0
- package/vendor/eigen/Eigen/CholmodSupport +48 -0
- package/vendor/eigen/Eigen/Core +451 -0
- package/vendor/eigen/Eigen/Dense +7 -0
- package/vendor/eigen/Eigen/Eigen +2 -0
- package/vendor/eigen/Eigen/Eigenvalues +63 -0
- package/vendor/eigen/Eigen/Geometry +59 -0
- package/vendor/eigen/Eigen/Householder +31 -0
- package/vendor/eigen/Eigen/IterativeLinearSolvers +52 -0
- package/vendor/eigen/Eigen/Jacobi +33 -0
- package/vendor/eigen/Eigen/KLUSupport +43 -0
- package/vendor/eigen/Eigen/LU +46 -0
- package/vendor/eigen/Eigen/MetisSupport +35 -0
- package/vendor/eigen/Eigen/OrderingMethods +73 -0
- package/vendor/eigen/Eigen/PaStiXSupport +51 -0
- package/vendor/eigen/Eigen/PardisoSupport +38 -0
- package/vendor/eigen/Eigen/QR +48 -0
- package/vendor/eigen/Eigen/QtAlignedMalloc +32 -0
- package/vendor/eigen/Eigen/SPQRSupport +41 -0
- package/vendor/eigen/Eigen/SVD +56 -0
- package/vendor/eigen/Eigen/Sparse +33 -0
- package/vendor/eigen/Eigen/SparseCholesky +40 -0
- package/vendor/eigen/Eigen/SparseCore +70 -0
- package/vendor/eigen/Eigen/SparseLU +50 -0
- package/vendor/eigen/Eigen/SparseQR +38 -0
- package/vendor/eigen/Eigen/StdDeque +30 -0
- package/vendor/eigen/Eigen/StdList +29 -0
- package/vendor/eigen/Eigen/StdVector +30 -0
- package/vendor/eigen/Eigen/SuperLUSupport +70 -0
- package/vendor/eigen/Eigen/ThreadPool +80 -0
- package/vendor/eigen/Eigen/UmfPackSupport +42 -0
- package/vendor/eigen/Eigen/Version +14 -0
- package/vendor/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/vendor/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Cholesky/LDLT.h +649 -0
- package/vendor/eigen/Eigen/src/Cholesky/LLT.h +514 -0
- package/vendor/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +124 -0
- package/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +738 -0
- package/vendor/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/vendor/eigen/Eigen/src/Core/Array.h +376 -0
- package/vendor/eigen/Eigen/src/Core/ArrayBase.h +213 -0
- package/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +165 -0
- package/vendor/eigen/Eigen/src/Core/Assign.h +80 -0
- package/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +1057 -0
- package/vendor/eigen/Eigen/src/Core/Assign_MKL.h +183 -0
- package/vendor/eigen/Eigen/src/Core/BandMatrix.h +338 -0
- package/vendor/eigen/Eigen/src/Core/Block.h +429 -0
- package/vendor/eigen/Eigen/src/Core/CommaInitializer.h +149 -0
- package/vendor/eigen/Eigen/src/Core/ConditionEstimator.h +173 -0
- package/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +2018 -0
- package/vendor/eigen/Eigen/src/Core/CoreIterators.h +141 -0
- package/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +166 -0
- package/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +975 -0
- package/vendor/eigen/Eigen/src/Core/CwiseTernaryOp.h +171 -0
- package/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +91 -0
- package/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +167 -0
- package/vendor/eigen/Eigen/src/Core/DenseBase.h +673 -0
- package/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +568 -0
- package/vendor/eigen/Eigen/src/Core/DenseStorage.h +573 -0
- package/vendor/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/vendor/eigen/Eigen/src/Core/Diagonal.h +219 -0
- package/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +420 -0
- package/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +30 -0
- package/vendor/eigen/Eigen/src/Core/Dot.h +268 -0
- package/vendor/eigen/Eigen/src/Core/EigenBase.h +149 -0
- package/vendor/eigen/Eigen/src/Core/Fill.h +138 -0
- package/vendor/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +127 -0
- package/vendor/eigen/Eigen/src/Core/Fuzzy.h +132 -0
- package/vendor/eigen/Eigen/src/Core/GeneralProduct.h +519 -0
- package/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +1702 -0
- package/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +230 -0
- package/vendor/eigen/Eigen/src/Core/IO.h +233 -0
- package/vendor/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/vendor/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/vendor/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Core/Inverse.h +108 -0
- package/vendor/eigen/Eigen/src/Core/Map.h +153 -0
- package/vendor/eigen/Eigen/src/Core/MapBase.h +283 -0
- package/vendor/eigen/Eigen/src/Core/MathFunctions.h +2103 -0
- package/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +263 -0
- package/vendor/eigen/Eigen/src/Core/Matrix.h +534 -0
- package/vendor/eigen/Eigen/src/Core/MatrixBase.h +545 -0
- package/vendor/eigen/Eigen/src/Core/NestByValue.h +91 -0
- package/vendor/eigen/Eigen/src/Core/NoAlias.h +102 -0
- package/vendor/eigen/Eigen/src/Core/NumTraits.h +335 -0
- package/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +555 -0
- package/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +1014 -0
- package/vendor/eigen/Eigen/src/Core/Product.h +307 -0
- package/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +1287 -0
- package/vendor/eigen/Eigen/src/Core/Random.h +207 -0
- package/vendor/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/vendor/eigen/Eigen/src/Core/RealView.h +250 -0
- package/vendor/eigen/Eigen/src/Core/Redux.h +535 -0
- package/vendor/eigen/Eigen/src/Core/Ref.h +383 -0
- package/vendor/eigen/Eigen/src/Core/Replicate.h +130 -0
- package/vendor/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/vendor/eigen/Eigen/src/Core/ReturnByValue.h +111 -0
- package/vendor/eigen/Eigen/src/Core/Reverse.h +202 -0
- package/vendor/eigen/Eigen/src/Core/Select.h +92 -0
- package/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +329 -0
- package/vendor/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +50 -0
- package/vendor/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/vendor/eigen/Eigen/src/Core/Solve.h +174 -0
- package/vendor/eigen/Eigen/src/Core/SolveTriangular.h +237 -0
- package/vendor/eigen/Eigen/src/Core/SolverBase.h +167 -0
- package/vendor/eigen/Eigen/src/Core/StableNorm.h +217 -0
- package/vendor/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/vendor/eigen/Eigen/src/Core/Stride.h +114 -0
- package/vendor/eigen/Eigen/src/Core/Swap.h +99 -0
- package/vendor/eigen/Eigen/src/Core/Transpose.h +427 -0
- package/vendor/eigen/Eigen/src/Core/Transpositions.h +323 -0
- package/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +900 -0
- package/vendor/eigen/Eigen/src/Core/VectorBlock.h +83 -0
- package/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +733 -0
- package/vendor/eigen/Eigen/src/Core/Visitor.h +537 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +565 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +130 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +3081 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +308 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +141 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +3146 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +653 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +81 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3729 -0
- package/vendor/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +128 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +47 -0
- package/vendor/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/vendor/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/vendor/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/vendor/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/vendor/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/vendor/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/vendor/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/vendor/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/vendor/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +732 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +68 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +6096 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/vendor/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +503 -0
- package/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +88 -0
- package/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2384 -0
- package/vendor/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +230 -0
- package/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +570 -0
- package/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +244 -0
- package/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1413 -0
- package/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +174 -0
- package/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +747 -0
- package/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +274 -0
- package/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +149 -0
- package/vendor/eigen/Eigen/src/Core/functors/TernaryFunctors.h +52 -0
- package/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1420 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +3153 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +459 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +330 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +148 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +205 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +473 -0
- package/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +139 -0
- package/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +282 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +483 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +277 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +253 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +115 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- package/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +95 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +397 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +325 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +347 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +275 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +388 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +166 -0
- package/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +122 -0
- package/vendor/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +622 -0
- package/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/vendor/eigen/Eigen/src/Core/util/Constants.h +598 -0
- package/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +146 -0
- package/vendor/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +524 -0
- package/vendor/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/vendor/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/vendor/eigen/Eigen/src/Core/util/MKL_support.h +139 -0
- package/vendor/eigen/Eigen/src/Core/util/Macros.h +1346 -0
- package/vendor/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/vendor/eigen/Eigen/src/Core/util/Memory.h +1385 -0
- package/vendor/eigen/Eigen/src/Core/util/Meta.h +760 -0
- package/vendor/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +44 -0
- package/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/vendor/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +105 -0
- package/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/vendor/eigen/Eigen/src/Core/util/XprHelper.h +1093 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +315 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +442 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +95 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +579 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +402 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +212 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +356 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +142 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +587 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +519 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +83 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +850 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +90 -0
- package/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +529 -0
- package/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +485 -0
- package/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +245 -0
- package/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +203 -0
- package/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +453 -0
- package/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +273 -0
- package/vendor/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +257 -0
- package/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- package/vendor/eigen/Eigen/src/Geometry/Quaternion.h +930 -0
- package/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +201 -0
- package/vendor/eigen/Eigen/src/Geometry/RotationBase.h +209 -0
- package/vendor/eigen/Eigen/src/Geometry/Scaling.h +195 -0
- package/vendor/eigen/Eigen/src/Geometry/Transform.h +1485 -0
- package/vendor/eigen/Eigen/src/Geometry/Translation.h +204 -0
- package/vendor/eigen/Eigen/src/Geometry/Umeyama.h +161 -0
- package/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +115 -0
- package/vendor/eigen/Eigen/src/Householder/Householder.h +154 -0
- package/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +504 -0
- package/vendor/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +213 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +220 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +217 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +402 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +449 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +395 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +193 -0
- package/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +111 -0
- package/vendor/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +427 -0
- package/vendor/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/vendor/eigen/Eigen/src/LU/Determinant.h +98 -0
- package/vendor/eigen/Eigen/src/LU/FullPivLU.h +826 -0
- package/vendor/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/LU/InverseImpl.h +353 -0
- package/vendor/eigen/Eigen/src/LU/PartialPivLU.h +586 -0
- package/vendor/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +97 -0
- package/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/vendor/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/MetisSupport/MetisSupport.h +125 -0
- package/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +413 -0
- package/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +1690 -0
- package/vendor/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +146 -0
- package/vendor/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +632 -0
- package/vendor/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +500 -0
- package/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- package/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +161 -0
- package/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +648 -0
- package/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +733 -0
- package/vendor/eigen/Eigen/src/QR/HouseholderQR.h +543 -0
- package/vendor/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +77 -0
- package/vendor/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +315 -0
- package/vendor/eigen/Eigen/src/SVD/BDCSVD.h +1470 -0
- package/vendor/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/vendor/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +846 -0
- package/vendor/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +127 -0
- package/vendor/eigen/Eigen/src/SVD/SVDBase.h +436 -0
- package/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +379 -0
- package/vendor/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +868 -0
- package/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +388 -0
- package/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +329 -0
- package/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +206 -0
- package/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +308 -0
- package/vendor/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +279 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +534 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseColEtree.h +194 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +592 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +938 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +142 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +314 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseDot.h +100 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseFuzzy.h +31 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseMap.h +295 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +1876 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +451 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparsePermutation.h +249 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +178 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseRedux.h +47 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +370 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +613 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseSolverBase.h +115 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +184 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseTranspose.h +83 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseTriangularView.h +177 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +209 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +532 -0
- package/vendor/eigen/Eigen/src/SparseCore/SparseView.h +225 -0
- package/vendor/eigen/Eigen/src/SparseCore/TriangularSolver.h +274 -0
- package/vendor/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +969 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLUImpl.h +79 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +210 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +113 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +319 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +75 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +177 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +168 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +106 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +114 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +133 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +215 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +235 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +136 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +130 -0
- package/vendor/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +81 -0
- package/vendor/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +706 -0
- package/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +51 -0
- package/vendor/eigen/Eigen/src/StlSupport/StdList.h +50 -0
- package/vendor/eigen/Eigen/src/StlSupport/StdVector.h +51 -0
- package/vendor/eigen/Eigen/src/StlSupport/details.h +82 -0
- package/vendor/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +929 -0
- package/vendor/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/vendor/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/vendor/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/vendor/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/vendor/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/vendor/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/vendor/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/vendor/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +606 -0
- package/vendor/eigen/Eigen/src/misc/Image.h +80 -0
- package/vendor/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/vendor/eigen/Eigen/src/misc/Kernel.h +77 -0
- package/vendor/eigen/Eigen/src/misc/RealSvd2x2.h +53 -0
- package/vendor/eigen/Eigen/src/misc/blas.h +97 -0
- package/vendor/eigen/Eigen/src/misc/lapacke.h +10085 -0
- package/vendor/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/vendor/eigen/Eigen/src/misc/lapacke_mangling.h +16 -0
- package/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/vendor/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/vendor/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/vendor/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/vendor/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/vendor/eigen/README.md +5 -0
- package/vendor/mpdecimal/COPYRIGHT.txt +23 -0
- package/vendor/mpdecimal/README.txt +53 -0
- package/vendor/mpdecimal/libmpdec/.objs/README.txt +8 -0
- package/vendor/mpdecimal/libmpdec/.objs/symbols32.exp +343 -0
- package/vendor/mpdecimal/libmpdec/.objs/symbols64.exp +347 -0
- package/vendor/mpdecimal/libmpdec/.pc/libmpdec.pc.in +11 -0
- package/vendor/mpdecimal/libmpdec/.profile/train.sh +35 -0
- package/vendor/mpdecimal/libmpdec/README.txt +84 -0
- package/vendor/mpdecimal/libmpdec/basearith.c +649 -0
- package/vendor/mpdecimal/libmpdec/basearith.h +217 -0
- package/vendor/mpdecimal/libmpdec/bits.h +188 -0
- package/vendor/mpdecimal/libmpdec/constants.c +129 -0
- package/vendor/mpdecimal/libmpdec/constants.h +88 -0
- package/vendor/mpdecimal/libmpdec/context.c +285 -0
- package/vendor/mpdecimal/libmpdec/convolute.c +172 -0
- package/vendor/mpdecimal/libmpdec/convolute.h +48 -0
- package/vendor/mpdecimal/libmpdec/crt.c +178 -0
- package/vendor/mpdecimal/libmpdec/crt.h +45 -0
- package/vendor/mpdecimal/libmpdec/difradix2.c +171 -0
- package/vendor/mpdecimal/libmpdec/difradix2.h +46 -0
- package/vendor/mpdecimal/libmpdec/fnt.c +77 -0
- package/vendor/mpdecimal/libmpdec/fnt.h +46 -0
- package/vendor/mpdecimal/libmpdec/fourstep.c +242 -0
- package/vendor/mpdecimal/libmpdec/fourstep.h +46 -0
- package/vendor/mpdecimal/libmpdec/io.c +1610 -0
- package/vendor/mpdecimal/libmpdec/io.h +61 -0
- package/vendor/mpdecimal/libmpdec/mpalloc.c +347 -0
- package/vendor/mpdecimal/libmpdec/mpalloc.h +53 -0
- package/vendor/mpdecimal/libmpdec/mpdecimal.c +9155 -0
- package/vendor/mpdecimal/libmpdec/mpdecimal.h.in +804 -0
- package/vendor/mpdecimal/libmpdec/mpsignal.c +966 -0
- package/vendor/mpdecimal/libmpdec/numbertheory.c +129 -0
- package/vendor/mpdecimal/libmpdec/numbertheory.h +75 -0
- package/vendor/mpdecimal/libmpdec/sixstep.c +212 -0
- package/vendor/mpdecimal/libmpdec/sixstep.h +46 -0
- package/vendor/mpdecimal/libmpdec/transpose.c +275 -0
- package/vendor/mpdecimal/libmpdec/transpose.h +60 -0
- package/vendor/mpdecimal/libmpdec/typearith.h +661 -0
- package/vendor/mpdecimal/libmpdec/umodarith.h +645 -0
- package/vendor/symengine/AUTHORS +101 -0
- package/vendor/symengine/LICENSE +254 -0
- package/vendor/symengine/README.md +199 -0
- package/vendor/symengine/symengine/add.cpp +508 -0
- package/vendor/symengine/symengine/add.h +187 -0
- package/vendor/symengine/symengine/as_real_imag.cpp +289 -0
- package/vendor/symengine/symengine/assumptions.cpp +202 -0
- package/vendor/symengine/symengine/assumptions.h +47 -0
- package/vendor/symengine/symengine/basic-inl.h +152 -0
- package/vendor/symengine/symengine/basic-methods.inc +9 -0
- package/vendor/symengine/symengine/basic.cpp +110 -0
- package/vendor/symengine/symengine/basic.h +356 -0
- package/vendor/symengine/symengine/complex.cpp +198 -0
- package/vendor/symengine/symengine/complex.h +396 -0
- package/vendor/symengine/symengine/complex_double.cpp +72 -0
- package/vendor/symengine/symengine/complex_double.h +570 -0
- package/vendor/symengine/symengine/complex_mpc.h +406 -0
- package/vendor/symengine/symengine/constants.cpp +130 -0
- package/vendor/symengine/symengine/constants.h +81 -0
- package/vendor/symengine/symengine/cse.cpp +556 -0
- package/vendor/symengine/symengine/cwrapper.h +949 -0
- package/vendor/symengine/symengine/dense_matrix.cpp +2100 -0
- package/vendor/symengine/symengine/derivative.cpp +841 -0
- package/vendor/symengine/symengine/derivative.h +137 -0
- package/vendor/symengine/symengine/dict.cpp +125 -0
- package/vendor/symengine/symengine/dict.h +333 -0
- package/vendor/symengine/symengine/diophantine.cpp +139 -0
- package/vendor/symengine/symengine/diophantine.h +20 -0
- package/vendor/symengine/symengine/eval.cpp +109 -0
- package/vendor/symengine/symengine/eval.h +40 -0
- package/vendor/symengine/symengine/eval_arb.h +31 -0
- package/vendor/symengine/symengine/eval_double.cpp +959 -0
- package/vendor/symengine/symengine/eval_double.h +28 -0
- package/vendor/symengine/symengine/eval_mpc.h +29 -0
- package/vendor/symengine/symengine/eval_mpfr.h +26 -0
- package/vendor/symengine/symengine/expand.cpp +379 -0
- package/vendor/symengine/symengine/expression.cpp +24 -0
- package/vendor/symengine/symengine/expression.h +375 -0
- package/vendor/symengine/symengine/fields.cpp +861 -0
- package/vendor/symengine/symengine/fields.h +647 -0
- package/vendor/symengine/symengine/finitediff.cpp +70 -0
- package/vendor/symengine/symengine/finitediff.h +21 -0
- package/vendor/symengine/symengine/flint_wrapper.h +1010 -0
- package/vendor/symengine/symengine/functions.cpp +3913 -0
- package/vendor/symengine/symengine/functions.h +1321 -0
- package/vendor/symengine/symengine/infinity.cpp +537 -0
- package/vendor/symengine/symengine/infinity.h +118 -0
- package/vendor/symengine/symengine/integer.cpp +153 -0
- package/vendor/symengine/symengine/integer.h +227 -0
- package/vendor/symengine/symengine/interruption.cpp +9 -0
- package/vendor/symengine/symengine/interruption.h +19 -0
- package/vendor/symengine/symengine/lambda_double.h +918 -0
- package/vendor/symengine/symengine/limits.h +35 -0
- package/vendor/symengine/symengine/llvm_double.h +201 -0
- package/vendor/symengine/symengine/logic.cpp +812 -0
- package/vendor/symengine/symengine/logic.h +281 -0
- package/vendor/symengine/symengine/matrices/conjugate_matrix.cpp +139 -0
- package/vendor/symengine/symengine/matrices/conjugate_matrix.h +39 -0
- package/vendor/symengine/symengine/matrices/diagonal_matrix.cpp +79 -0
- package/vendor/symengine/symengine/matrices/diagonal_matrix.h +52 -0
- package/vendor/symengine/symengine/matrices/hadamard_product.cpp +151 -0
- package/vendor/symengine/symengine/matrices/hadamard_product.h +42 -0
- package/vendor/symengine/symengine/matrices/identity_matrix.cpp +63 -0
- package/vendor/symengine/symengine/matrices/identity_matrix.h +40 -0
- package/vendor/symengine/symengine/matrices/immutable_dense_matrix.cpp +143 -0
- package/vendor/symengine/symengine/matrices/immutable_dense_matrix.h +65 -0
- package/vendor/symengine/symengine/matrices/is_diagonal.cpp +115 -0
- package/vendor/symengine/symengine/matrices/is_lower.cpp +110 -0
- package/vendor/symengine/symengine/matrices/is_real.cpp +78 -0
- package/vendor/symengine/symengine/matrices/is_square.cpp +85 -0
- package/vendor/symengine/symengine/matrices/is_symmetric.cpp +112 -0
- package/vendor/symengine/symengine/matrices/is_toeplitz.cpp +104 -0
- package/vendor/symengine/symengine/matrices/is_upper.cpp +108 -0
- package/vendor/symengine/symengine/matrices/is_zero.cpp +81 -0
- package/vendor/symengine/symengine/matrices/matrix_add.cpp +176 -0
- package/vendor/symengine/symengine/matrices/matrix_add.h +42 -0
- package/vendor/symengine/symengine/matrices/matrix_expr.h +19 -0
- package/vendor/symengine/symengine/matrices/matrix_mul.cpp +258 -0
- package/vendor/symengine/symengine/matrices/matrix_mul.h +55 -0
- package/vendor/symengine/symengine/matrices/matrix_symbol.cpp +34 -0
- package/vendor/symengine/symengine/matrices/matrix_symbol.h +41 -0
- package/vendor/symengine/symengine/matrices/size.cpp +121 -0
- package/vendor/symengine/symengine/matrices/size.h +15 -0
- package/vendor/symengine/symengine/matrices/trace.cpp +112 -0
- package/vendor/symengine/symengine/matrices/trace.h +31 -0
- package/vendor/symengine/symengine/matrices/transpose.cpp +126 -0
- package/vendor/symengine/symengine/matrices/transpose.h +39 -0
- package/vendor/symengine/symengine/matrices/zero_matrix.cpp +94 -0
- package/vendor/symengine/symengine/matrices/zero_matrix.h +47 -0
- package/vendor/symengine/symengine/matrix.cpp +33 -0
- package/vendor/symengine/symengine/matrix.h +675 -0
- package/vendor/symengine/symengine/matrix_expressions.h +51 -0
- package/vendor/symengine/symengine/monomials.cpp +33 -0
- package/vendor/symengine/symengine/monomials.h +20 -0
- package/vendor/symengine/symengine/mp_boost.cpp +635 -0
- package/vendor/symengine/symengine/mp_class.h +1286 -0
- package/vendor/symengine/symengine/mp_wrapper.h +510 -0
- package/vendor/symengine/symengine/mul.cpp +629 -0
- package/vendor/symengine/symengine/mul.h +146 -0
- package/vendor/symengine/symengine/nan.cpp +234 -0
- package/vendor/symengine/symengine/nan.h +82 -0
- package/vendor/symengine/symengine/ntheory.cpp +1700 -0
- package/vendor/symengine/symengine/ntheory.h +213 -0
- package/vendor/symengine/symengine/ntheory_funcs.cpp +189 -0
- package/vendor/symengine/symengine/ntheory_funcs.h +78 -0
- package/vendor/symengine/symengine/number.cpp +36 -0
- package/vendor/symengine/symengine/number.h +256 -0
- package/vendor/symengine/symengine/numer_denom.cpp +149 -0
- package/vendor/symengine/symengine/parser/parser.cpp +367 -0
- package/vendor/symengine/symengine/parser/parser.h +56 -0
- package/vendor/symengine/symengine/parser/parser.tab.cc +1495 -0
- package/vendor/symengine/symengine/parser/parser.tab.hh +1410 -0
- package/vendor/symengine/symengine/parser/parser_old.cpp +688 -0
- package/vendor/symengine/symengine/parser/tokenizer.cpp +435 -0
- package/vendor/symengine/symengine/parser/tokenizer.h +35 -0
- package/vendor/symengine/symengine/parser.h +25 -0
- package/vendor/symengine/symengine/polys/basic_conversions.cpp +178 -0
- package/vendor/symengine/symengine/polys/basic_conversions.h +575 -0
- package/vendor/symengine/symengine/polys/cancel.h +39 -0
- package/vendor/symengine/symengine/polys/msymenginepoly.cpp +130 -0
- package/vendor/symengine/symengine/polys/msymenginepoly.h +536 -0
- package/vendor/symengine/symengine/polys/uexprpoly.cpp +90 -0
- package/vendor/symengine/symengine/polys/uexprpoly.h +205 -0
- package/vendor/symengine/symengine/polys/uintpoly.cpp +62 -0
- package/vendor/symengine/symengine/polys/uintpoly.h +134 -0
- package/vendor/symengine/symengine/polys/uintpoly_flint.h +228 -0
- package/vendor/symengine/symengine/polys/uintpoly_piranha.h +373 -0
- package/vendor/symengine/symengine/polys/upolybase.h +769 -0
- package/vendor/symengine/symengine/polys/uratpoly.cpp +59 -0
- package/vendor/symengine/symengine/polys/uratpoly.h +58 -0
- package/vendor/symengine/symengine/polys/usymenginepoly.h +139 -0
- package/vendor/symengine/symengine/pow.cpp +303 -0
- package/vendor/symengine/symengine/pow.h +76 -0
- package/vendor/symengine/symengine/prime_sieve.cpp +143 -0
- package/vendor/symengine/symengine/prime_sieve.h +64 -0
- package/vendor/symengine/symengine/printers/codegen.cpp +716 -0
- package/vendor/symengine/symengine/printers/codegen.h +168 -0
- package/vendor/symengine/symengine/printers/latex.cpp +630 -0
- package/vendor/symengine/symengine/printers/latex.h +76 -0
- package/vendor/symengine/symengine/printers/mathml.cpp +358 -0
- package/vendor/symengine/symengine/printers/mathml.h +62 -0
- package/vendor/symengine/symengine/printers/stringbox.cpp +276 -0
- package/vendor/symengine/symengine/printers/stringbox.h +60 -0
- package/vendor/symengine/symengine/printers/strprinter.cpp +1212 -0
- package/vendor/symengine/symengine/printers/strprinter.h +217 -0
- package/vendor/symengine/symengine/printers/unicode.cpp +730 -0
- package/vendor/symengine/symengine/printers/unicode.h +84 -0
- package/vendor/symengine/symengine/printers.h +46 -0
- package/vendor/symengine/symengine/rational.cpp +365 -0
- package/vendor/symengine/symengine/rational.h +341 -0
- package/vendor/symengine/symengine/real_double.cpp +388 -0
- package/vendor/symengine/symengine/real_double.h +492 -0
- package/vendor/symengine/symengine/real_mpfr.h +379 -0
- package/vendor/symengine/symengine/refine.cpp +213 -0
- package/vendor/symengine/symengine/refine.h +43 -0
- package/vendor/symengine/symengine/rewrite.cpp +235 -0
- package/vendor/symengine/symengine/rings.cpp +107 -0
- package/vendor/symengine/symengine/rings.h +24 -0
- package/vendor/symengine/symengine/serialize-cereal.h +964 -0
- package/vendor/symengine/symengine/series.cpp +85 -0
- package/vendor/symengine/symengine/series.h +727 -0
- package/vendor/symengine/symengine/series_flint.h +214 -0
- package/vendor/symengine/symengine/series_generic.cpp +247 -0
- package/vendor/symengine/symengine/series_generic.h +86 -0
- package/vendor/symengine/symengine/series_piranha.h +95 -0
- package/vendor/symengine/symengine/series_visitor.h +357 -0
- package/vendor/symengine/symengine/set_funcs.cpp +296 -0
- package/vendor/symengine/symengine/sets.cpp +1854 -0
- package/vendor/symengine/symengine/sets.h +696 -0
- package/vendor/symengine/symengine/simplify.cpp +62 -0
- package/vendor/symengine/symengine/simplify.h +34 -0
- package/vendor/symengine/symengine/solve.cpp +665 -0
- package/vendor/symengine/symengine/solve.h +117 -0
- package/vendor/symengine/symengine/sparse_matrix.cpp +776 -0
- package/vendor/symengine/symengine/special_boost.cpp +85 -0
- package/vendor/symengine/symengine/special_double.h +570 -0
- package/vendor/symengine/symengine/subs.h +579 -0
- package/vendor/symengine/symengine/symbol.cpp +88 -0
- package/vendor/symengine/symengine/symbol.h +116 -0
- package/vendor/symengine/symengine/symengine_assert.h +50 -0
- package/vendor/symengine/symengine/symengine_casts.h +139 -0
- package/vendor/symengine/symengine/symengine_exception.h +101 -0
- package/vendor/symengine/symengine/symengine_rcp.cpp +21 -0
- package/vendor/symengine/symengine/symengine_rcp.h +384 -0
- package/vendor/symengine/symengine/test_visitors.cpp +1083 -0
- package/vendor/symengine/symengine/test_visitors.h +466 -0
- package/vendor/symengine/symengine/tribool.h +85 -0
- package/vendor/symengine/symengine/tuple.cpp +47 -0
- package/vendor/symengine/symengine/tuple.h +32 -0
- package/vendor/symengine/symengine/type_codes.inc +139 -0
- package/vendor/symengine/symengine/utilities/cereal/LICENSE +24 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/access.hpp +351 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/archives/adapters.hpp +163 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/archives/binary.hpp +169 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/archives/json.hpp +1024 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/archives/portable_binary.hpp +334 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/archives/xml.hpp +956 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/cereal.hpp +1120 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/helpers.hpp +422 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/polymorphic_impl.hpp +825 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/polymorphic_impl_fwd.hpp +65 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/static_object.hpp +128 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/traits.hpp +1411 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/details/util.hpp +84 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/macros.hpp +156 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/specialize.hpp +139 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/array.hpp +79 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/atomic.hpp +55 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/base_class.hpp +203 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/bitset.hpp +176 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/boost_variant.hpp +164 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/chrono.hpp +72 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/common.hpp +129 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/complex.hpp +56 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/concepts/pair_associative_container.hpp +73 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/deque.hpp +62 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/forward_list.hpp +68 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/functional.hpp +43 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/list.hpp +62 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/map.hpp +36 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/memory.hpp +425 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/optional.hpp +65 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/polymorphic.hpp +483 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/queue.hpp +132 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/set.hpp +103 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/stack.hpp +76 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/string.hpp +61 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/tuple.hpp +123 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/unordered_map.hpp +36 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/unordered_set.hpp +99 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/utility.hpp +47 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/valarray.hpp +89 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/variant.hpp +108 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/types/vector.hpp +112 -0
- package/vendor/symengine/symengine/utilities/cereal/include/cereal/version.hpp +52 -0
- package/vendor/symengine/symengine/utilities/fast_float/include/fast_float/fast_float.h +3720 -0
- package/vendor/symengine/symengine/utilities/stream_fmt.h +25 -0
- package/vendor/symengine/symengine/visitor.cpp +348 -0
- package/vendor/symengine/symengine/visitor.h +425 -0
|
@@ -0,0 +1,2018 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2011 Benoit Jacob <jacob.benoit.1@gmail.com>
|
|
5
|
+
// Copyright (C) 2011-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
6
|
+
// Copyright (C) 2011-2012 Jitse Niesen <jitse@maths.leeds.ac.uk>
|
|
7
|
+
//
|
|
8
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
9
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
10
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
11
|
+
|
|
12
|
+
#ifndef EIGEN_COREEVALUATORS_H
|
|
13
|
+
#define EIGEN_COREEVALUATORS_H
|
|
14
|
+
|
|
15
|
+
// IWYU pragma: private
|
|
16
|
+
#include "./InternalHeaderCheck.h"
|
|
17
|
+
|
|
18
|
+
namespace Eigen {
|
|
19
|
+
|
|
20
|
+
namespace internal {
|
|
21
|
+
|
|
22
|
+
// This class returns the evaluator kind from the expression storage kind.
|
|
23
|
+
// Default assumes index based accessors
|
|
24
|
+
template <typename StorageKind>
|
|
25
|
+
struct storage_kind_to_evaluator_kind {
|
|
26
|
+
typedef IndexBased Kind;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// This class returns the evaluator shape from the expression storage kind.
|
|
30
|
+
// It can be Dense, Sparse, Triangular, Diagonal, SelfAdjoint, Band, etc.
|
|
31
|
+
template <typename StorageKind>
|
|
32
|
+
struct storage_kind_to_shape;
|
|
33
|
+
|
|
34
|
+
template <>
|
|
35
|
+
struct storage_kind_to_shape<Dense> {
|
|
36
|
+
typedef DenseShape Shape;
|
|
37
|
+
};
|
|
38
|
+
template <>
|
|
39
|
+
struct storage_kind_to_shape<SolverStorage> {
|
|
40
|
+
typedef SolverShape Shape;
|
|
41
|
+
};
|
|
42
|
+
template <>
|
|
43
|
+
struct storage_kind_to_shape<PermutationStorage> {
|
|
44
|
+
typedef PermutationShape Shape;
|
|
45
|
+
};
|
|
46
|
+
template <>
|
|
47
|
+
struct storage_kind_to_shape<TranspositionsStorage> {
|
|
48
|
+
typedef TranspositionsShape Shape;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Evaluators have to be specialized with respect to various criteria such as:
|
|
52
|
+
// - storage/structure/shape
|
|
53
|
+
// - scalar type
|
|
54
|
+
// - etc.
|
|
55
|
+
// Therefore, we need specialization of evaluator providing additional template arguments for each kind of evaluators.
|
|
56
|
+
// We currently distinguish the following kind of evaluators:
|
|
57
|
+
// - unary_evaluator for expressions taking only one arguments (CwiseUnaryOp, CwiseUnaryView, Transpose,
|
|
58
|
+
// MatrixWrapper, ArrayWrapper, Reverse, Replicate)
|
|
59
|
+
// - binary_evaluator for expression taking two arguments (CwiseBinaryOp)
|
|
60
|
+
// - ternary_evaluator for expression taking three arguments (CwiseTernaryOp)
|
|
61
|
+
// - product_evaluator for linear algebra products (Product); special case of binary_evaluator because it requires
|
|
62
|
+
// additional tags for dispatching.
|
|
63
|
+
// - mapbase_evaluator for Map, Block, Ref
|
|
64
|
+
// - block_evaluator for Block (special dispatching to a mapbase_evaluator or unary_evaluator)
|
|
65
|
+
|
|
66
|
+
template <typename T, typename Arg1Kind = typename evaluator_traits<typename T::Arg1>::Kind,
|
|
67
|
+
typename Arg2Kind = typename evaluator_traits<typename T::Arg2>::Kind,
|
|
68
|
+
typename Arg3Kind = typename evaluator_traits<typename T::Arg3>::Kind,
|
|
69
|
+
typename Arg1Scalar = typename traits<typename T::Arg1>::Scalar,
|
|
70
|
+
typename Arg2Scalar = typename traits<typename T::Arg2>::Scalar,
|
|
71
|
+
typename Arg3Scalar = typename traits<typename T::Arg3>::Scalar>
|
|
72
|
+
struct ternary_evaluator;
|
|
73
|
+
|
|
74
|
+
template <typename T, typename LhsKind = typename evaluator_traits<typename T::Lhs>::Kind,
|
|
75
|
+
typename RhsKind = typename evaluator_traits<typename T::Rhs>::Kind,
|
|
76
|
+
typename LhsScalar = typename traits<typename T::Lhs>::Scalar,
|
|
77
|
+
typename RhsScalar = typename traits<typename T::Rhs>::Scalar>
|
|
78
|
+
struct binary_evaluator;
|
|
79
|
+
|
|
80
|
+
template <typename T, typename Kind = typename evaluator_traits<typename T::NestedExpression>::Kind,
|
|
81
|
+
typename Scalar = typename T::Scalar>
|
|
82
|
+
struct unary_evaluator;
|
|
83
|
+
|
|
84
|
+
// evaluator_traits<T> contains traits for evaluator<T>
|
|
85
|
+
|
|
86
|
+
template <typename T>
|
|
87
|
+
struct evaluator_traits_base {
|
|
88
|
+
// by default, get evaluator kind and shape from storage
|
|
89
|
+
typedef typename storage_kind_to_evaluator_kind<typename traits<T>::StorageKind>::Kind Kind;
|
|
90
|
+
typedef typename storage_kind_to_shape<typename traits<T>::StorageKind>::Shape Shape;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// Default evaluator traits
|
|
94
|
+
template <typename T>
|
|
95
|
+
struct evaluator_traits : public evaluator_traits_base<T> {};
|
|
96
|
+
|
|
97
|
+
template <typename T, typename Shape = typename evaluator_traits<T>::Shape>
|
|
98
|
+
struct evaluator_assume_aliasing {
|
|
99
|
+
static const bool value = false;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// By default, we assume a unary expression:
|
|
103
|
+
template <typename T>
|
|
104
|
+
struct evaluator : public unary_evaluator<T> {
|
|
105
|
+
typedef unary_evaluator<T> Base;
|
|
106
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const T& xpr) : Base(xpr) {}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// TODO: Think about const-correctness
|
|
110
|
+
template <typename T>
|
|
111
|
+
struct evaluator<const T> : evaluator<T> {
|
|
112
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const T& xpr) : evaluator<T>(xpr) {}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// ---------- base class for all evaluators ----------
|
|
116
|
+
|
|
117
|
+
template <typename ExpressionType>
|
|
118
|
+
struct evaluator_base {
|
|
119
|
+
// TODO that's not very nice to have to propagate all these traits. They are currently only needed to handle
|
|
120
|
+
// outer,inner indices.
|
|
121
|
+
typedef traits<ExpressionType> ExpressionTraits;
|
|
122
|
+
|
|
123
|
+
enum { Alignment = 0 };
|
|
124
|
+
// noncopyable:
|
|
125
|
+
// Don't make this class inherit noncopyable as this kills EBO (Empty Base Optimization)
|
|
126
|
+
// and make complex evaluator much larger than then should do.
|
|
127
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr evaluator_base() = default;
|
|
128
|
+
|
|
129
|
+
private:
|
|
130
|
+
EIGEN_DEVICE_FUNC evaluator_base(const evaluator_base&);
|
|
131
|
+
EIGEN_DEVICE_FUNC const evaluator_base& operator=(const evaluator_base&);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// -------------------- Matrix and Array --------------------
|
|
135
|
+
//
|
|
136
|
+
// evaluator<PlainObjectBase> is a common base class for the
|
|
137
|
+
// Matrix and Array evaluators.
|
|
138
|
+
// Here we directly specialize evaluator. This is not really a unary expression, and it is, by definition, dense,
|
|
139
|
+
// so no need for more sophisticated dispatching.
|
|
140
|
+
|
|
141
|
+
// this helper permits to completely eliminate m_outerStride if it is known at compiletime.
|
|
142
|
+
template <typename Scalar, int OuterStride>
|
|
143
|
+
class plainobjectbase_evaluator_data {
|
|
144
|
+
public:
|
|
145
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plainobjectbase_evaluator_data(const Scalar* ptr, Index outerStride)
|
|
146
|
+
: data(ptr) {
|
|
147
|
+
#ifndef EIGEN_INTERNAL_DEBUGGING
|
|
148
|
+
EIGEN_UNUSED_VARIABLE(outerStride);
|
|
149
|
+
#endif
|
|
150
|
+
eigen_internal_assert(outerStride == OuterStride);
|
|
151
|
+
}
|
|
152
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index outerStride() const noexcept { return OuterStride; }
|
|
153
|
+
const Scalar* data;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
template <typename Scalar>
|
|
157
|
+
class plainobjectbase_evaluator_data<Scalar, Dynamic> {
|
|
158
|
+
public:
|
|
159
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plainobjectbase_evaluator_data(const Scalar* ptr, Index outerStride)
|
|
160
|
+
: data(ptr), m_outerStride(outerStride) {}
|
|
161
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index outerStride() const { return m_outerStride; }
|
|
162
|
+
const Scalar* data;
|
|
163
|
+
|
|
164
|
+
protected:
|
|
165
|
+
Index m_outerStride;
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
template <typename Derived>
|
|
169
|
+
struct evaluator<PlainObjectBase<Derived>> : evaluator_base<Derived> {
|
|
170
|
+
typedef PlainObjectBase<Derived> PlainObjectType;
|
|
171
|
+
typedef typename PlainObjectType::Scalar Scalar;
|
|
172
|
+
typedef typename PlainObjectType::CoeffReturnType CoeffReturnType;
|
|
173
|
+
|
|
174
|
+
enum {
|
|
175
|
+
IsRowMajor = PlainObjectType::IsRowMajor,
|
|
176
|
+
IsVectorAtCompileTime = PlainObjectType::IsVectorAtCompileTime,
|
|
177
|
+
RowsAtCompileTime = PlainObjectType::RowsAtCompileTime,
|
|
178
|
+
ColsAtCompileTime = PlainObjectType::ColsAtCompileTime,
|
|
179
|
+
|
|
180
|
+
CoeffReadCost = NumTraits<Scalar>::ReadCost,
|
|
181
|
+
Flags = traits<Derived>::EvaluatorFlags,
|
|
182
|
+
Alignment = traits<Derived>::Alignment
|
|
183
|
+
};
|
|
184
|
+
enum {
|
|
185
|
+
// We do not need to know the outer stride for vectors
|
|
186
|
+
OuterStrideAtCompileTime = IsVectorAtCompileTime ? 0
|
|
187
|
+
: int(IsRowMajor) ? ColsAtCompileTime
|
|
188
|
+
: RowsAtCompileTime
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr evaluator() : m_d(0, OuterStrideAtCompileTime) {
|
|
192
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr explicit evaluator(const PlainObjectType& m)
|
|
196
|
+
: m_d(m.data(), IsVectorAtCompileTime ? 0 : m.outerStride()) {
|
|
197
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr CoeffReturnType coeff(Index row, Index col) const {
|
|
201
|
+
return coeff(getIndex(row, col));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr CoeffReturnType coeff(Index index) const { return m_d.data[index]; }
|
|
205
|
+
|
|
206
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Scalar& coeffRef(Index row, Index col) {
|
|
207
|
+
return coeffRef(getIndex(row, col));
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Scalar& coeffRef(Index index) {
|
|
211
|
+
return const_cast<Scalar*>(m_d.data)[index];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
template <int LoadMode, typename PacketType>
|
|
215
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
216
|
+
return packet<LoadMode, PacketType>(getIndex(row, col));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
template <int LoadMode, typename PacketType>
|
|
220
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
221
|
+
return ploadt<PacketType, LoadMode>(m_d.data + index);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
template <int StoreMode, typename PacketType>
|
|
225
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
226
|
+
writePacket<StoreMode, PacketType>(getIndex(row, col), x);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
template <int StoreMode, typename PacketType>
|
|
230
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
231
|
+
pstoret<Scalar, PacketType, StoreMode>(const_cast<Scalar*>(m_d.data) + index, x);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
template <int LoadMode, typename PacketType>
|
|
235
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
236
|
+
return packetSegment<LoadMode, PacketType>(getIndex(row, col), begin, count);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
template <int LoadMode, typename PacketType>
|
|
240
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
241
|
+
return ploadtSegment<PacketType, LoadMode>(m_d.data + index, begin, count);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
template <int StoreMode, typename PacketType>
|
|
245
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
246
|
+
Index count) {
|
|
247
|
+
writePacketSegment<StoreMode, PacketType>(getIndex(row, col), x, begin, count);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
template <int StoreMode, typename PacketType>
|
|
251
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
252
|
+
Index count) {
|
|
253
|
+
pstoretSegment<Scalar, PacketType, StoreMode>(const_cast<Scalar*>(m_d.data) + index, x, begin, count);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
protected:
|
|
257
|
+
plainobjectbase_evaluator_data<Scalar, OuterStrideAtCompileTime> m_d;
|
|
258
|
+
|
|
259
|
+
private:
|
|
260
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index constexpr getIndex(Index row, Index col) const {
|
|
261
|
+
return IsRowMajor ? row * m_d.outerStride() + col : row + col * m_d.outerStride();
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
template <typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
266
|
+
struct evaluator<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>
|
|
267
|
+
: evaluator<PlainObjectBase<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>> {
|
|
268
|
+
typedef Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols> XprType;
|
|
269
|
+
|
|
270
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr evaluator() = default;
|
|
271
|
+
|
|
272
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr explicit evaluator(const XprType& m)
|
|
273
|
+
: evaluator<PlainObjectBase<XprType>>(m) {}
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
template <typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
277
|
+
struct evaluator<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>
|
|
278
|
+
: evaluator<PlainObjectBase<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>> {
|
|
279
|
+
typedef Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> XprType;
|
|
280
|
+
|
|
281
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr evaluator() = default;
|
|
282
|
+
|
|
283
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr explicit evaluator(const XprType& m)
|
|
284
|
+
: evaluator<PlainObjectBase<XprType>>(m) {}
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
// -------------------- Transpose --------------------
|
|
288
|
+
|
|
289
|
+
template <typename ArgType>
|
|
290
|
+
struct unary_evaluator<Transpose<ArgType>, IndexBased> : evaluator_base<Transpose<ArgType>> {
|
|
291
|
+
typedef Transpose<ArgType> XprType;
|
|
292
|
+
|
|
293
|
+
enum {
|
|
294
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
295
|
+
Flags = evaluator<ArgType>::Flags ^ RowMajorBit,
|
|
296
|
+
Alignment = evaluator<ArgType>::Alignment
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& t) : m_argImpl(t.nestedExpression()) {}
|
|
300
|
+
|
|
301
|
+
typedef typename XprType::Scalar Scalar;
|
|
302
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
303
|
+
|
|
304
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
305
|
+
return m_argImpl.coeff(col, row);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const { return m_argImpl.coeff(index); }
|
|
309
|
+
|
|
310
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) { return m_argImpl.coeffRef(col, row); }
|
|
311
|
+
|
|
312
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename XprType::Scalar& coeffRef(Index index) {
|
|
313
|
+
return m_argImpl.coeffRef(index);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
template <int LoadMode, typename PacketType>
|
|
317
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
318
|
+
return m_argImpl.template packet<LoadMode, PacketType>(col, row);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
template <int LoadMode, typename PacketType>
|
|
322
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
323
|
+
return m_argImpl.template packet<LoadMode, PacketType>(index);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
template <int StoreMode, typename PacketType>
|
|
327
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
328
|
+
m_argImpl.template writePacket<StoreMode, PacketType>(col, row, x);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
template <int StoreMode, typename PacketType>
|
|
332
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
333
|
+
m_argImpl.template writePacket<StoreMode, PacketType>(index, x);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
template <int LoadMode, typename PacketType>
|
|
337
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
338
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(col, row, begin, count);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
template <int LoadMode, typename PacketType>
|
|
342
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
343
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(index, begin, count);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
template <int StoreMode, typename PacketType>
|
|
347
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
348
|
+
Index count) {
|
|
349
|
+
m_argImpl.template writePacketSegment<StoreMode, PacketType>(col, row, x, begin, count);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
template <int StoreMode, typename PacketType>
|
|
353
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
354
|
+
Index count) {
|
|
355
|
+
m_argImpl.template writePacketSegment<StoreMode, PacketType>(index, x, begin, count);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
protected:
|
|
359
|
+
evaluator<ArgType> m_argImpl;
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
// -------------------- CwiseNullaryOp --------------------
|
|
363
|
+
// Like Matrix and Array, this is not really a unary expression, so we directly specialize evaluator.
|
|
364
|
+
// Likewise, there is not need to more sophisticated dispatching here.
|
|
365
|
+
|
|
366
|
+
template <typename Scalar, typename NullaryOp, bool has_nullary = has_nullary_operator<NullaryOp>::value,
|
|
367
|
+
bool has_unary = has_unary_operator<NullaryOp>::value,
|
|
368
|
+
bool has_binary = has_binary_operator<NullaryOp>::value>
|
|
369
|
+
struct nullary_wrapper {
|
|
370
|
+
template <typename IndexType>
|
|
371
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
372
|
+
return op(i, j);
|
|
373
|
+
}
|
|
374
|
+
template <typename IndexType>
|
|
375
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const {
|
|
376
|
+
return op(i);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
template <typename T, typename IndexType>
|
|
380
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
381
|
+
return op.template packetOp<T>(i, j);
|
|
382
|
+
}
|
|
383
|
+
template <typename T, typename IndexType>
|
|
384
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
|
|
385
|
+
return op.template packetOp<T>(i);
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
template <typename Scalar, typename NullaryOp>
|
|
390
|
+
struct nullary_wrapper<Scalar, NullaryOp, true, false, false> {
|
|
391
|
+
template <typename IndexType>
|
|
392
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType = 0, IndexType = 0) const {
|
|
393
|
+
return op();
|
|
394
|
+
}
|
|
395
|
+
template <typename T, typename IndexType>
|
|
396
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType = 0, IndexType = 0) const {
|
|
397
|
+
return op.template packetOp<T>();
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
template <typename Scalar, typename NullaryOp>
|
|
402
|
+
struct nullary_wrapper<Scalar, NullaryOp, false, false, true> {
|
|
403
|
+
template <typename IndexType>
|
|
404
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j = 0) const {
|
|
405
|
+
return op(i, j);
|
|
406
|
+
}
|
|
407
|
+
template <typename T, typename IndexType>
|
|
408
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j = 0) const {
|
|
409
|
+
return op.template packetOp<T>(i, j);
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
// We need the following specialization for vector-only functors assigned to a runtime vector,
|
|
414
|
+
// for instance, using linspace and assigning a RowVectorXd to a MatrixXd or even a row of a MatrixXd.
|
|
415
|
+
// In this case, i==0 and j is used for the actual iteration.
|
|
416
|
+
template <typename Scalar, typename NullaryOp>
|
|
417
|
+
struct nullary_wrapper<Scalar, NullaryOp, false, true, false> {
|
|
418
|
+
template <typename IndexType>
|
|
419
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
420
|
+
eigen_assert(i == 0 || j == 0);
|
|
421
|
+
return op(i + j);
|
|
422
|
+
}
|
|
423
|
+
template <typename T, typename IndexType>
|
|
424
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
425
|
+
eigen_assert(i == 0 || j == 0);
|
|
426
|
+
return op.template packetOp<T>(i + j);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
template <typename IndexType>
|
|
430
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const {
|
|
431
|
+
return op(i);
|
|
432
|
+
}
|
|
433
|
+
template <typename T, typename IndexType>
|
|
434
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
|
|
435
|
+
return op.template packetOp<T>(i);
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
template <typename Scalar, typename NullaryOp>
|
|
440
|
+
struct nullary_wrapper<Scalar, NullaryOp, false, false, false> {};
|
|
441
|
+
|
|
442
|
+
#if 0 && EIGEN_COMP_MSVC > 0
|
|
443
|
+
// Disable this ugly workaround. This is now handled in traits<Ref>::match,
|
|
444
|
+
// but this piece of code might still become handly if some other weird compilation
|
|
445
|
+
// errors pop up again.
|
|
446
|
+
|
|
447
|
+
// MSVC exhibits a weird compilation error when
|
|
448
|
+
// compiling:
|
|
449
|
+
// Eigen::MatrixXf A = MatrixXf::Random(3,3);
|
|
450
|
+
// Ref<const MatrixXf> R = 2.f*A;
|
|
451
|
+
// and that has_*ary_operator<scalar_constant_op<float>> have not been instantiated yet.
|
|
452
|
+
// The "problem" is that evaluator<2.f*A> is instantiated by traits<Ref>::match<2.f*A>
|
|
453
|
+
// and at that time has_*ary_operator<T> returns true regardless of T.
|
|
454
|
+
// Then nullary_wrapper is badly instantiated as nullary_wrapper<.,.,true,true,true>.
|
|
455
|
+
// The trick is thus to defer the proper instantiation of nullary_wrapper when coeff(),
|
|
456
|
+
// and packet() are really instantiated as implemented below:
|
|
457
|
+
|
|
458
|
+
// This is a simple wrapper around Index to enforce the re-instantiation of
|
|
459
|
+
// has_*ary_operator when needed.
|
|
460
|
+
template<typename T> struct nullary_wrapper_workaround_msvc {
|
|
461
|
+
nullary_wrapper_workaround_msvc(const T&);
|
|
462
|
+
operator T()const;
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
template<typename Scalar,typename NullaryOp>
|
|
466
|
+
struct nullary_wrapper<Scalar,NullaryOp,true,true,true>
|
|
467
|
+
{
|
|
468
|
+
template <typename IndexType>
|
|
469
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
470
|
+
return nullary_wrapper<Scalar,NullaryOp,
|
|
471
|
+
has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
472
|
+
has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
473
|
+
has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().operator()(op,i,j);
|
|
474
|
+
}
|
|
475
|
+
template <typename IndexType>
|
|
476
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const {
|
|
477
|
+
return nullary_wrapper<Scalar,NullaryOp,
|
|
478
|
+
has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
479
|
+
has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
480
|
+
has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().operator()(op,i);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
template <typename T, typename IndexType>
|
|
484
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const {
|
|
485
|
+
return nullary_wrapper<Scalar,NullaryOp,
|
|
486
|
+
has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
487
|
+
has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
488
|
+
has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().template packetOp<T>(op,i,j);
|
|
489
|
+
}
|
|
490
|
+
template <typename T, typename IndexType>
|
|
491
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
|
|
492
|
+
return nullary_wrapper<Scalar,NullaryOp,
|
|
493
|
+
has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
494
|
+
has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
|
|
495
|
+
has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().template packetOp<T>(op,i);
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
#endif // MSVC workaround
|
|
499
|
+
|
|
500
|
+
template <typename NullaryOp, typename PlainObjectType>
|
|
501
|
+
struct evaluator<CwiseNullaryOp<NullaryOp, PlainObjectType>>
|
|
502
|
+
: evaluator_base<CwiseNullaryOp<NullaryOp, PlainObjectType>> {
|
|
503
|
+
typedef CwiseNullaryOp<NullaryOp, PlainObjectType> XprType;
|
|
504
|
+
typedef remove_all_t<PlainObjectType> PlainObjectTypeCleaned;
|
|
505
|
+
|
|
506
|
+
enum {
|
|
507
|
+
CoeffReadCost = functor_traits<NullaryOp>::Cost,
|
|
508
|
+
|
|
509
|
+
Flags = (evaluator<PlainObjectTypeCleaned>::Flags &
|
|
510
|
+
(HereditaryBits | (functor_has_linear_access<NullaryOp>::ret ? LinearAccessBit : 0) |
|
|
511
|
+
(functor_traits<NullaryOp>::PacketAccess ? PacketAccessBit : 0))) |
|
|
512
|
+
(functor_traits<NullaryOp>::IsRepeatable ? 0 : EvalBeforeNestingBit),
|
|
513
|
+
Alignment = AlignedMax
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& n) : m_functor(n.functor()), m_wrapper() {
|
|
517
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
521
|
+
|
|
522
|
+
template <typename IndexType>
|
|
523
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(IndexType row, IndexType col) const {
|
|
524
|
+
return m_wrapper(m_functor, row, col);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
template <typename IndexType>
|
|
528
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(IndexType index) const {
|
|
529
|
+
return m_wrapper(m_functor, index);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
template <int LoadMode, typename PacketType, typename IndexType>
|
|
533
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(IndexType row, IndexType col) const {
|
|
534
|
+
return m_wrapper.template packetOp<PacketType>(m_functor, row, col);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
template <int LoadMode, typename PacketType, typename IndexType>
|
|
538
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(IndexType index) const {
|
|
539
|
+
return m_wrapper.template packetOp<PacketType>(m_functor, index);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
template <int LoadMode, typename PacketType, typename IndexType>
|
|
543
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(IndexType row, IndexType col, Index /*begin*/,
|
|
544
|
+
Index /*count*/) const {
|
|
545
|
+
return packet<LoadMode, PacketType, IndexType>(row, col);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
template <int LoadMode, typename PacketType, typename IndexType>
|
|
549
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(IndexType index, Index /*begin*/,
|
|
550
|
+
Index /*count*/) const {
|
|
551
|
+
return packet<LoadMode, PacketType, IndexType>(index);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
protected:
|
|
555
|
+
const NullaryOp m_functor;
|
|
556
|
+
const nullary_wrapper<CoeffReturnType, NullaryOp> m_wrapper;
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
// -------------------- CwiseUnaryOp --------------------
|
|
560
|
+
|
|
561
|
+
template <typename UnaryOp, typename ArgType>
|
|
562
|
+
struct unary_evaluator<CwiseUnaryOp<UnaryOp, ArgType>, IndexBased> : evaluator_base<CwiseUnaryOp<UnaryOp, ArgType>> {
|
|
563
|
+
typedef CwiseUnaryOp<UnaryOp, ArgType> XprType;
|
|
564
|
+
|
|
565
|
+
enum {
|
|
566
|
+
CoeffReadCost = int(evaluator<ArgType>::CoeffReadCost) + int(functor_traits<UnaryOp>::Cost),
|
|
567
|
+
|
|
568
|
+
Flags = evaluator<ArgType>::Flags &
|
|
569
|
+
(HereditaryBits | LinearAccessBit | (functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0)),
|
|
570
|
+
Alignment = evaluator<ArgType>::Alignment
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& op) : m_d(op) {
|
|
574
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<UnaryOp>::Cost);
|
|
575
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
579
|
+
|
|
580
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
581
|
+
return m_d.func()(m_d.argImpl.coeff(row, col));
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
585
|
+
return m_d.func()(m_d.argImpl.coeff(index));
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
template <int LoadMode, typename PacketType>
|
|
589
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
590
|
+
return m_d.func().packetOp(m_d.argImpl.template packet<LoadMode, PacketType>(row, col));
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
template <int LoadMode, typename PacketType>
|
|
594
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
595
|
+
return m_d.func().packetOp(m_d.argImpl.template packet<LoadMode, PacketType>(index));
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
template <int LoadMode, typename PacketType>
|
|
599
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
600
|
+
return m_d.func().packetOp(m_d.argImpl.template packetSegment<LoadMode, PacketType>(row, col, begin, count));
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
template <int LoadMode, typename PacketType>
|
|
604
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
605
|
+
return m_d.func().packetOp(m_d.argImpl.template packetSegment<LoadMode, PacketType>(index, begin, count));
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
protected:
|
|
609
|
+
// this helper permits to completely eliminate the functor if it is empty
|
|
610
|
+
struct Data {
|
|
611
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Data(const XprType& xpr)
|
|
612
|
+
: op(xpr.functor()), argImpl(xpr.nestedExpression()) {}
|
|
613
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const UnaryOp& func() const { return op; }
|
|
614
|
+
UnaryOp op;
|
|
615
|
+
evaluator<ArgType> argImpl;
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
Data m_d;
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
// ----------------------- Casting ---------------------
|
|
622
|
+
|
|
623
|
+
template <typename SrcType, typename DstType, typename ArgType>
|
|
624
|
+
struct unary_evaluator<CwiseUnaryOp<core_cast_op<SrcType, DstType>, ArgType>, IndexBased> {
|
|
625
|
+
using CastOp = core_cast_op<SrcType, DstType>;
|
|
626
|
+
using XprType = CwiseUnaryOp<CastOp, ArgType>;
|
|
627
|
+
|
|
628
|
+
// Use the largest packet type by default
|
|
629
|
+
using SrcPacketType = typename packet_traits<SrcType>::type;
|
|
630
|
+
static constexpr int SrcPacketSize = unpacket_traits<SrcPacketType>::size;
|
|
631
|
+
static constexpr int SrcPacketBytes = SrcPacketSize * sizeof(SrcType);
|
|
632
|
+
|
|
633
|
+
enum {
|
|
634
|
+
CoeffReadCost = int(evaluator<ArgType>::CoeffReadCost) + int(functor_traits<CastOp>::Cost),
|
|
635
|
+
PacketAccess = functor_traits<CastOp>::PacketAccess,
|
|
636
|
+
ActualPacketAccessBit = PacketAccess ? PacketAccessBit : 0,
|
|
637
|
+
Flags = evaluator<ArgType>::Flags & (HereditaryBits | LinearAccessBit | ActualPacketAccessBit),
|
|
638
|
+
IsRowMajor = (evaluator<ArgType>::Flags & RowMajorBit),
|
|
639
|
+
Alignment = evaluator<ArgType>::Alignment
|
|
640
|
+
};
|
|
641
|
+
|
|
642
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& xpr)
|
|
643
|
+
: m_argImpl(xpr.nestedExpression()), m_rows(xpr.rows()), m_cols(xpr.cols()) {
|
|
644
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<CastOp>::Cost);
|
|
645
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
template <typename DstPacketType>
|
|
649
|
+
using AltSrcScalarOp = std::enable_if_t<(unpacket_traits<DstPacketType>::size < SrcPacketSize &&
|
|
650
|
+
!find_packet_by_size<SrcType, unpacket_traits<DstPacketType>::size>::value),
|
|
651
|
+
bool>;
|
|
652
|
+
template <typename DstPacketType>
|
|
653
|
+
using SrcPacketArgs1 =
|
|
654
|
+
std::enable_if_t<(find_packet_by_size<SrcType, unpacket_traits<DstPacketType>::size>::value), bool>;
|
|
655
|
+
template <typename DstPacketType>
|
|
656
|
+
using SrcPacketArgs2 = std::enable_if_t<(unpacket_traits<DstPacketType>::size) == (2 * SrcPacketSize), bool>;
|
|
657
|
+
template <typename DstPacketType>
|
|
658
|
+
using SrcPacketArgs4 = std::enable_if_t<(unpacket_traits<DstPacketType>::size) == (4 * SrcPacketSize), bool>;
|
|
659
|
+
template <typename DstPacketType>
|
|
660
|
+
using SrcPacketArgs8 = std::enable_if_t<(unpacket_traits<DstPacketType>::size) == (8 * SrcPacketSize), bool>;
|
|
661
|
+
|
|
662
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool check_array_bounds(Index row, Index col, Index begin, Index count) const {
|
|
663
|
+
return IsRowMajor ? (col + count + begin <= cols()) : (row + count + begin <= rows());
|
|
664
|
+
}
|
|
665
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool check_array_bounds(Index index, Index begin, Index count) const {
|
|
666
|
+
return index + count + begin <= size();
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE SrcType srcCoeff(Index row, Index col, Index offset) const {
|
|
670
|
+
Index actualRow = IsRowMajor ? row : row + offset;
|
|
671
|
+
Index actualCol = IsRowMajor ? col + offset : col;
|
|
672
|
+
return m_argImpl.coeff(actualRow, actualCol);
|
|
673
|
+
}
|
|
674
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE SrcType srcCoeff(Index index, Index offset) const {
|
|
675
|
+
Index actualIndex = index + offset;
|
|
676
|
+
return m_argImpl.coeff(actualIndex);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstType coeff(Index row, Index col) const {
|
|
680
|
+
return cast<SrcType, DstType>(srcCoeff(row, col, 0));
|
|
681
|
+
}
|
|
682
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstType coeff(Index index) const {
|
|
683
|
+
return cast<SrcType, DstType>(srcCoeff(index, 0));
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
template <int LoadMode, typename PacketType = SrcPacketType>
|
|
687
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType srcPacket(Index row, Index col, Index offset) const {
|
|
688
|
+
constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
689
|
+
Index packetOffset = offset * PacketSize;
|
|
690
|
+
Index actualRow = IsRowMajor ? row : row + packetOffset;
|
|
691
|
+
Index actualCol = IsRowMajor ? col + packetOffset : col;
|
|
692
|
+
eigen_assert(check_array_bounds(actualRow, actualCol, 0, PacketSize) && "Array index out of bounds");
|
|
693
|
+
return m_argImpl.template packet<LoadMode, PacketType>(actualRow, actualCol);
|
|
694
|
+
}
|
|
695
|
+
template <int LoadMode, typename PacketType = SrcPacketType>
|
|
696
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType srcPacket(Index index, Index offset) const {
|
|
697
|
+
constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
698
|
+
Index packetOffset = offset * PacketSize;
|
|
699
|
+
Index actualIndex = index + packetOffset;
|
|
700
|
+
eigen_assert(check_array_bounds(actualIndex, 0, PacketSize) && "Array index out of bounds");
|
|
701
|
+
return m_argImpl.template packet<LoadMode, PacketType>(actualIndex);
|
|
702
|
+
}
|
|
703
|
+
template <int LoadMode, typename PacketType = SrcPacketType>
|
|
704
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType srcPacketSegment(Index row, Index col, Index begin, Index count,
|
|
705
|
+
Index offset) const {
|
|
706
|
+
constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
707
|
+
Index packetOffset = offset * PacketSize;
|
|
708
|
+
Index actualRow = IsRowMajor ? row : row + packetOffset;
|
|
709
|
+
Index actualCol = IsRowMajor ? col + packetOffset : col;
|
|
710
|
+
eigen_assert(check_array_bounds(actualRow, actualCol, begin, count) && "Array index out of bounds");
|
|
711
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(actualRow, actualCol, begin, count);
|
|
712
|
+
}
|
|
713
|
+
template <int LoadMode, typename PacketType = SrcPacketType>
|
|
714
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType srcPacketSegment(Index index, Index begin, Index count,
|
|
715
|
+
Index offset) const {
|
|
716
|
+
constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
717
|
+
Index packetOffset = offset * PacketSize;
|
|
718
|
+
Index actualIndex = index + packetOffset;
|
|
719
|
+
eigen_assert(check_array_bounds(actualIndex, begin, count) && "Array index out of bounds");
|
|
720
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(actualIndex, begin, count);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
template <int NumPackets, int LoadMode, typename PacketType = SrcPacketType>
|
|
724
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketBlock<PacketType, NumPackets> srcPacketSegmentHelper(Index row, Index col,
|
|
725
|
+
Index begin,
|
|
726
|
+
Index count) const {
|
|
727
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
728
|
+
PacketBlock<PacketType, NumPackets> packets;
|
|
729
|
+
for (Index i = 0; i < NumPackets; i++) packets.packet[i] = pzero(PacketType());
|
|
730
|
+
Index offset = begin / SrcPacketSize;
|
|
731
|
+
Index actualBegin = begin % SrcPacketSize;
|
|
732
|
+
for (; offset < NumPackets; offset++) {
|
|
733
|
+
Index actualCount = numext::mini(SrcPacketSize - actualBegin, count);
|
|
734
|
+
packets.packet[offset] = srcPacketSegment<SrcLoadMode>(row, col, actualBegin, actualCount, offset);
|
|
735
|
+
if (count == actualCount) break;
|
|
736
|
+
actualBegin = 0;
|
|
737
|
+
count -= actualCount;
|
|
738
|
+
}
|
|
739
|
+
return packets;
|
|
740
|
+
}
|
|
741
|
+
template <int NumPackets, int LoadMode, typename PacketType = SrcPacketType>
|
|
742
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketBlock<PacketType, NumPackets> srcPacketSegmentHelper(Index index,
|
|
743
|
+
Index begin,
|
|
744
|
+
Index count) const {
|
|
745
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
746
|
+
PacketBlock<PacketType, NumPackets> packets;
|
|
747
|
+
for (Index i = 0; i < NumPackets; i++) packets.packet[i] = pzero(PacketType());
|
|
748
|
+
Index offset = begin / SrcPacketSize;
|
|
749
|
+
Index actualBegin = begin % SrcPacketSize;
|
|
750
|
+
for (; offset < NumPackets; offset++) {
|
|
751
|
+
Index actualCount = numext::mini(SrcPacketSize - actualBegin, count);
|
|
752
|
+
packets.packet[offset] = srcPacketSegment<SrcLoadMode>(index, actualBegin, actualCount, offset);
|
|
753
|
+
if (count == actualCount) break;
|
|
754
|
+
actualBegin = 0;
|
|
755
|
+
count -= actualCount;
|
|
756
|
+
}
|
|
757
|
+
return packets;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// There is no source packet type with equal or fewer elements than DstPacketType.
|
|
761
|
+
// This is problematic as the evaluation loop may attempt to access data outside the bounds of the array.
|
|
762
|
+
// For example, consider the cast utilizing pcast<Packet4f,Packet2d> with an array of size 4: {0.0f,1.0f,2.0f,3.0f}.
|
|
763
|
+
// The first iteration of the evaluation loop will load 16 bytes: {0.0f,1.0f,2.0f,3.0f} and cast to {0.0,1.0}, which
|
|
764
|
+
// is acceptable. The second iteration will load 16 bytes: {2.0f,3.0f,?,?}, which is outside the bounds of the array.
|
|
765
|
+
template <int LoadMode, typename DstPacketType, AltSrcScalarOp<DstPacketType> = true>
|
|
766
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index row, Index col) const {
|
|
767
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
768
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
769
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
770
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacketSegment<SrcLoadMode>(row, col, 0, DstPacketSize, 0));
|
|
771
|
+
}
|
|
772
|
+
// Use the source packet type with the same size as DstPacketType, if it exists
|
|
773
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs1<DstPacketType> = true>
|
|
774
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index row, Index col) const {
|
|
775
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
776
|
+
using SizedSrcPacketType = typename find_packet_by_size<SrcType, DstPacketSize>::type;
|
|
777
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
778
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
779
|
+
return pcast<SizedSrcPacketType, DstPacketType>(srcPacket<SrcLoadMode, SizedSrcPacketType>(row, col, 0));
|
|
780
|
+
}
|
|
781
|
+
// unpacket_traits<DstPacketType>::size == 2 * SrcPacketSize
|
|
782
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs2<DstPacketType> = true>
|
|
783
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index row, Index col) const {
|
|
784
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
785
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacket<SrcLoadMode>(row, col, 0),
|
|
786
|
+
srcPacket<SrcLoadMode>(row, col, 1));
|
|
787
|
+
}
|
|
788
|
+
// unpacket_traits<DstPacketType>::size == 4 * SrcPacketSize
|
|
789
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs4<DstPacketType> = true>
|
|
790
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index row, Index col) const {
|
|
791
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
792
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacket<SrcLoadMode>(row, col, 0), srcPacket<SrcLoadMode>(row, col, 1),
|
|
793
|
+
srcPacket<SrcLoadMode>(row, col, 2),
|
|
794
|
+
srcPacket<SrcLoadMode>(row, col, 3));
|
|
795
|
+
}
|
|
796
|
+
// unpacket_traits<DstPacketType>::size == 8 * SrcPacketSize
|
|
797
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs8<DstPacketType> = true>
|
|
798
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index row, Index col) const {
|
|
799
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
800
|
+
return pcast<SrcPacketType, DstPacketType>(
|
|
801
|
+
srcPacket<SrcLoadMode>(row, col, 0), srcPacket<SrcLoadMode>(row, col, 1), srcPacket<SrcLoadMode>(row, col, 2),
|
|
802
|
+
srcPacket<SrcLoadMode>(row, col, 3), srcPacket<SrcLoadMode>(row, col, 4), srcPacket<SrcLoadMode>(row, col, 5),
|
|
803
|
+
srcPacket<SrcLoadMode>(row, col, 6), srcPacket<SrcLoadMode>(row, col, 7));
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
// packetSegment variants
|
|
807
|
+
template <int LoadMode, typename DstPacketType, AltSrcScalarOp<DstPacketType> = true>
|
|
808
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index row, Index col, Index begin,
|
|
809
|
+
Index count) const {
|
|
810
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
811
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
812
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
813
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacketSegment<SrcLoadMode>(row, col, begin, count, 0));
|
|
814
|
+
}
|
|
815
|
+
// Use the source packet type with the same size as DstPacketType, if it exists
|
|
816
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs1<DstPacketType> = true>
|
|
817
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index row, Index col, Index begin,
|
|
818
|
+
Index count) const {
|
|
819
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
820
|
+
using SizedSrcPacketType = typename find_packet_by_size<SrcType, DstPacketSize>::type;
|
|
821
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
822
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
823
|
+
return pcast<SizedSrcPacketType, DstPacketType>(
|
|
824
|
+
srcPacketSegment<SrcLoadMode, SizedSrcPacketType>(row, col, begin, count, 0));
|
|
825
|
+
}
|
|
826
|
+
// unpacket_traits<DstPacketType>::size == 2 * SrcPacketSize
|
|
827
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs2<DstPacketType> = true>
|
|
828
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index row, Index col, Index begin,
|
|
829
|
+
Index count) const {
|
|
830
|
+
constexpr int NumPackets = 2;
|
|
831
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
832
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
833
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(row, col, begin, count);
|
|
834
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1]);
|
|
835
|
+
}
|
|
836
|
+
// unpacket_traits<DstPacketType>::size == 4 * SrcPacketSize
|
|
837
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs4<DstPacketType> = true>
|
|
838
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index row, Index col, Index begin,
|
|
839
|
+
Index count) const {
|
|
840
|
+
constexpr int NumPackets = 4;
|
|
841
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
842
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
843
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(row, col, begin, count);
|
|
844
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1], packets.packet[2],
|
|
845
|
+
packets.packet[3]);
|
|
846
|
+
}
|
|
847
|
+
// unpacket_traits<DstPacketType>::size == 8 * SrcPacketSize
|
|
848
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs8<DstPacketType> = true>
|
|
849
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index row, Index col, Index begin,
|
|
850
|
+
Index count) const {
|
|
851
|
+
constexpr int NumPackets = 8;
|
|
852
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
853
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
854
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(row, col, begin, count);
|
|
855
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1], packets.packet[2],
|
|
856
|
+
packets.packet[3], packets.packet[4], packets.packet[5],
|
|
857
|
+
packets.packet[6], packets.packet[7]);
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
// Analogous routines for linear access.
|
|
861
|
+
template <int LoadMode, typename DstPacketType, AltSrcScalarOp<DstPacketType> = true>
|
|
862
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index index) const {
|
|
863
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
864
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
865
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
866
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacketSegment<SrcLoadMode>(index, 0, DstPacketSize, 0));
|
|
867
|
+
}
|
|
868
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs1<DstPacketType> = true>
|
|
869
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index index) const {
|
|
870
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
871
|
+
using SizedSrcPacketType = typename find_packet_by_size<SrcType, DstPacketSize>::type;
|
|
872
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
873
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
874
|
+
return pcast<SizedSrcPacketType, DstPacketType>(srcPacket<SrcLoadMode, SizedSrcPacketType>(index, 0));
|
|
875
|
+
}
|
|
876
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs2<DstPacketType> = true>
|
|
877
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index index) const {
|
|
878
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
879
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacket<SrcLoadMode>(index, 0), srcPacket<SrcLoadMode>(index, 1));
|
|
880
|
+
}
|
|
881
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs4<DstPacketType> = true>
|
|
882
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index index) const {
|
|
883
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
884
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacket<SrcLoadMode>(index, 0), srcPacket<SrcLoadMode>(index, 1),
|
|
885
|
+
srcPacket<SrcLoadMode>(index, 2), srcPacket<SrcLoadMode>(index, 3));
|
|
886
|
+
}
|
|
887
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs8<DstPacketType> = true>
|
|
888
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packet(Index index) const {
|
|
889
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
890
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacket<SrcLoadMode>(index, 0), srcPacket<SrcLoadMode>(index, 1),
|
|
891
|
+
srcPacket<SrcLoadMode>(index, 2), srcPacket<SrcLoadMode>(index, 3),
|
|
892
|
+
srcPacket<SrcLoadMode>(index, 4), srcPacket<SrcLoadMode>(index, 5),
|
|
893
|
+
srcPacket<SrcLoadMode>(index, 6), srcPacket<SrcLoadMode>(index, 7));
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
// packetSegment variants
|
|
897
|
+
template <int LoadMode, typename DstPacketType, AltSrcScalarOp<DstPacketType> = true>
|
|
898
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index index, Index begin, Index count) const {
|
|
899
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
900
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
901
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
902
|
+
return pcast<SrcPacketType, DstPacketType>(srcPacketSegment<SrcLoadMode>(index, begin, count, 0));
|
|
903
|
+
}
|
|
904
|
+
// Use the source packet type with the same size as DstPacketType, if it exists
|
|
905
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs1<DstPacketType> = true>
|
|
906
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index index, Index begin, Index count) const {
|
|
907
|
+
constexpr int DstPacketSize = unpacket_traits<DstPacketType>::size;
|
|
908
|
+
using SizedSrcPacketType = typename find_packet_by_size<SrcType, DstPacketSize>::type;
|
|
909
|
+
constexpr int SrcBytesIncrement = DstPacketSize * sizeof(SrcType);
|
|
910
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcBytesIncrement, LoadMode);
|
|
911
|
+
return pcast<SizedSrcPacketType, DstPacketType>(
|
|
912
|
+
srcPacketSegment<SrcLoadMode, SizedSrcPacketType>(index, begin, count, 0));
|
|
913
|
+
}
|
|
914
|
+
// unpacket_traits<DstPacketType>::size == 2 * SrcPacketSize
|
|
915
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs2<DstPacketType> = true>
|
|
916
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index index, Index begin, Index count) const {
|
|
917
|
+
constexpr int NumPackets = 2;
|
|
918
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
919
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
920
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(index, begin, count);
|
|
921
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1]);
|
|
922
|
+
}
|
|
923
|
+
// unpacket_traits<DstPacketType>::size == 4 * SrcPacketSize
|
|
924
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs4<DstPacketType> = true>
|
|
925
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index index, Index begin, Index count) const {
|
|
926
|
+
constexpr int NumPackets = 4;
|
|
927
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
928
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
929
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(index, begin, count);
|
|
930
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1], packets.packet[2],
|
|
931
|
+
packets.packet[3]);
|
|
932
|
+
}
|
|
933
|
+
// unpacket_traits<DstPacketType>::size == 8 * SrcPacketSize
|
|
934
|
+
template <int LoadMode, typename DstPacketType, SrcPacketArgs8<DstPacketType> = true>
|
|
935
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DstPacketType packetSegment(Index index, Index begin, Index count) const {
|
|
936
|
+
constexpr int NumPackets = 8;
|
|
937
|
+
constexpr int SrcLoadMode = plain_enum_min(SrcPacketBytes, LoadMode);
|
|
938
|
+
PacketBlock<SrcPacketType, NumPackets> packets =
|
|
939
|
+
srcPacketSegmentHelper<NumPackets, SrcLoadMode>(index, begin, count);
|
|
940
|
+
return pcast<SrcPacketType, DstPacketType>(packets.packet[0], packets.packet[1], packets.packet[2],
|
|
941
|
+
packets.packet[3], packets.packet[4], packets.packet[5],
|
|
942
|
+
packets.packet[6], packets.packet[7]);
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
constexpr EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const { return m_rows; }
|
|
946
|
+
constexpr EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index cols() const { return m_cols; }
|
|
947
|
+
constexpr EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const { return m_rows * m_cols; }
|
|
948
|
+
|
|
949
|
+
protected:
|
|
950
|
+
const evaluator<ArgType> m_argImpl;
|
|
951
|
+
const variable_if_dynamic<Index, XprType::RowsAtCompileTime> m_rows;
|
|
952
|
+
const variable_if_dynamic<Index, XprType::ColsAtCompileTime> m_cols;
|
|
953
|
+
};
|
|
954
|
+
|
|
955
|
+
// -------------------- CwiseTernaryOp --------------------
|
|
956
|
+
|
|
957
|
+
// this is a ternary expression
|
|
958
|
+
template <typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>
|
|
959
|
+
struct evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>>
|
|
960
|
+
: public ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>> {
|
|
961
|
+
typedef CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> XprType;
|
|
962
|
+
typedef ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>> Base;
|
|
963
|
+
|
|
964
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
template <typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>
|
|
968
|
+
struct ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>, IndexBased, IndexBased>
|
|
969
|
+
: evaluator_base<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>> {
|
|
970
|
+
typedef CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> XprType;
|
|
971
|
+
|
|
972
|
+
enum {
|
|
973
|
+
CoeffReadCost = int(evaluator<Arg1>::CoeffReadCost) + int(evaluator<Arg2>::CoeffReadCost) +
|
|
974
|
+
int(evaluator<Arg3>::CoeffReadCost) + int(functor_traits<TernaryOp>::Cost),
|
|
975
|
+
|
|
976
|
+
Arg1Flags = evaluator<Arg1>::Flags,
|
|
977
|
+
Arg2Flags = evaluator<Arg2>::Flags,
|
|
978
|
+
Arg3Flags = evaluator<Arg3>::Flags,
|
|
979
|
+
SameType = is_same<typename Arg1::Scalar, typename Arg2::Scalar>::value &&
|
|
980
|
+
is_same<typename Arg1::Scalar, typename Arg3::Scalar>::value,
|
|
981
|
+
StorageOrdersAgree = (int(Arg1Flags) & RowMajorBit) == (int(Arg2Flags) & RowMajorBit) &&
|
|
982
|
+
(int(Arg1Flags) & RowMajorBit) == (int(Arg3Flags) & RowMajorBit),
|
|
983
|
+
Flags0 = (int(Arg1Flags) | int(Arg2Flags) | int(Arg3Flags)) &
|
|
984
|
+
(HereditaryBits |
|
|
985
|
+
(int(Arg1Flags) & int(Arg2Flags) & int(Arg3Flags) &
|
|
986
|
+
((StorageOrdersAgree ? LinearAccessBit : 0) |
|
|
987
|
+
(functor_traits<TernaryOp>::PacketAccess && StorageOrdersAgree && SameType ? PacketAccessBit : 0)))),
|
|
988
|
+
Flags = (Flags0 & ~RowMajorBit) | (Arg1Flags & RowMajorBit),
|
|
989
|
+
Alignment = plain_enum_min(plain_enum_min(evaluator<Arg1>::Alignment, evaluator<Arg2>::Alignment),
|
|
990
|
+
evaluator<Arg3>::Alignment)
|
|
991
|
+
};
|
|
992
|
+
|
|
993
|
+
EIGEN_DEVICE_FUNC explicit ternary_evaluator(const XprType& xpr) : m_d(xpr) {
|
|
994
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<TernaryOp>::Cost);
|
|
995
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
999
|
+
|
|
1000
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1001
|
+
return m_d.func()(m_d.arg1Impl.coeff(row, col), m_d.arg2Impl.coeff(row, col), m_d.arg3Impl.coeff(row, col));
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1005
|
+
return m_d.func()(m_d.arg1Impl.coeff(index), m_d.arg2Impl.coeff(index), m_d.arg3Impl.coeff(index));
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
template <int LoadMode, typename PacketType>
|
|
1009
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1010
|
+
return m_d.func().packetOp(m_d.arg1Impl.template packet<LoadMode, PacketType>(row, col),
|
|
1011
|
+
m_d.arg2Impl.template packet<LoadMode, PacketType>(row, col),
|
|
1012
|
+
m_d.arg3Impl.template packet<LoadMode, PacketType>(row, col));
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
template <int LoadMode, typename PacketType>
|
|
1016
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1017
|
+
return m_d.func().packetOp(m_d.arg1Impl.template packet<LoadMode, PacketType>(index),
|
|
1018
|
+
m_d.arg2Impl.template packet<LoadMode, PacketType>(index),
|
|
1019
|
+
m_d.arg3Impl.template packet<LoadMode, PacketType>(index));
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
template <int LoadMode, typename PacketType>
|
|
1023
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1024
|
+
return m_d.func().packetOp(m_d.arg1Impl.template packetSegment<LoadMode, PacketType>(row, col, begin, count),
|
|
1025
|
+
m_d.arg2Impl.template packetSegment<LoadMode, PacketType>(row, col, begin, count),
|
|
1026
|
+
m_d.arg3Impl.template packetSegment<LoadMode, PacketType>(row, col, begin, count));
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
template <int LoadMode, typename PacketType>
|
|
1030
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1031
|
+
return m_d.func().packetOp(m_d.arg1Impl.template packetSegment<LoadMode, PacketType>(index, begin, count),
|
|
1032
|
+
m_d.arg2Impl.template packetSegment<LoadMode, PacketType>(index, begin, count),
|
|
1033
|
+
m_d.arg3Impl.template packetSegment<LoadMode, PacketType>(index, begin, count));
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
protected:
|
|
1037
|
+
// this helper permits to completely eliminate the functor if it is empty
|
|
1038
|
+
struct Data {
|
|
1039
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Data(const XprType& xpr)
|
|
1040
|
+
: op(xpr.functor()), arg1Impl(xpr.arg1()), arg2Impl(xpr.arg2()), arg3Impl(xpr.arg3()) {}
|
|
1041
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TernaryOp& func() const { return op; }
|
|
1042
|
+
TernaryOp op;
|
|
1043
|
+
evaluator<Arg1> arg1Impl;
|
|
1044
|
+
evaluator<Arg2> arg2Impl;
|
|
1045
|
+
evaluator<Arg3> arg3Impl;
|
|
1046
|
+
};
|
|
1047
|
+
|
|
1048
|
+
Data m_d;
|
|
1049
|
+
};
|
|
1050
|
+
|
|
1051
|
+
template <typename Arg1, typename Arg2, typename Scalar, typename CmpLhsType, typename CmpRhsType, ComparisonName cmp>
|
|
1052
|
+
struct scalar_boolean_select_spec {
|
|
1053
|
+
using DummyTernaryOp = scalar_boolean_select_op<Scalar, Scalar, bool>;
|
|
1054
|
+
using DummyArg3 = CwiseBinaryOp<scalar_cmp_op<Scalar, Scalar, cmp, false>, CmpLhsType, CmpRhsType>;
|
|
1055
|
+
using DummyXprType = CwiseTernaryOp<DummyTernaryOp, Arg1, Arg2, DummyArg3>;
|
|
1056
|
+
|
|
1057
|
+
// only use the typed comparison if it is vectorized
|
|
1058
|
+
static constexpr bool UseTyped = functor_traits<scalar_cmp_op<Scalar, Scalar, cmp, true>>::PacketAccess;
|
|
1059
|
+
using CondScalar = std::conditional_t<UseTyped, Scalar, bool>;
|
|
1060
|
+
|
|
1061
|
+
using TernaryOp = scalar_boolean_select_op<Scalar, Scalar, CondScalar>;
|
|
1062
|
+
using Arg3 = CwiseBinaryOp<scalar_cmp_op<Scalar, Scalar, cmp, UseTyped>, CmpLhsType, CmpRhsType>;
|
|
1063
|
+
using XprType = CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>;
|
|
1064
|
+
|
|
1065
|
+
using Base = ternary_evaluator<XprType>;
|
|
1066
|
+
};
|
|
1067
|
+
|
|
1068
|
+
// specialization for expressions like (a < b).select(c, d) to enable full vectorization
|
|
1069
|
+
template <typename Arg1, typename Arg2, typename Scalar, typename CmpLhsType, typename CmpRhsType, ComparisonName cmp>
|
|
1070
|
+
struct evaluator<CwiseTernaryOp<scalar_boolean_select_op<Scalar, Scalar, bool>, Arg1, Arg2,
|
|
1071
|
+
CwiseBinaryOp<scalar_cmp_op<Scalar, Scalar, cmp, false>, CmpLhsType, CmpRhsType>>>
|
|
1072
|
+
: public scalar_boolean_select_spec<Arg1, Arg2, Scalar, CmpLhsType, CmpRhsType, cmp>::Base {
|
|
1073
|
+
using Helper = scalar_boolean_select_spec<Arg1, Arg2, Scalar, CmpLhsType, CmpRhsType, cmp>;
|
|
1074
|
+
using Base = typename Helper::Base;
|
|
1075
|
+
using DummyXprType = typename Helper::DummyXprType;
|
|
1076
|
+
using Arg3 = typename Helper::Arg3;
|
|
1077
|
+
using XprType = typename Helper::XprType;
|
|
1078
|
+
|
|
1079
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const DummyXprType& xpr)
|
|
1080
|
+
: Base(XprType(xpr.arg1(), xpr.arg2(), Arg3(xpr.arg3().lhs(), xpr.arg3().rhs()))) {}
|
|
1081
|
+
};
|
|
1082
|
+
|
|
1083
|
+
// -------------------- CwiseBinaryOp --------------------
|
|
1084
|
+
|
|
1085
|
+
// this is a binary expression
|
|
1086
|
+
template <typename BinaryOp, typename Lhs, typename Rhs>
|
|
1087
|
+
struct evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs>> : public binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs>> {
|
|
1088
|
+
typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType;
|
|
1089
|
+
typedef binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs>> Base;
|
|
1090
|
+
|
|
1091
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& xpr) : Base(xpr) {}
|
|
1092
|
+
};
|
|
1093
|
+
|
|
1094
|
+
template <typename BinaryOp, typename Lhs, typename Rhs>
|
|
1095
|
+
struct binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs>, IndexBased, IndexBased>
|
|
1096
|
+
: evaluator_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs>> {
|
|
1097
|
+
typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType;
|
|
1098
|
+
|
|
1099
|
+
enum {
|
|
1100
|
+
CoeffReadCost =
|
|
1101
|
+
int(evaluator<Lhs>::CoeffReadCost) + int(evaluator<Rhs>::CoeffReadCost) + int(functor_traits<BinaryOp>::Cost),
|
|
1102
|
+
|
|
1103
|
+
LhsFlags = evaluator<Lhs>::Flags,
|
|
1104
|
+
RhsFlags = evaluator<Rhs>::Flags,
|
|
1105
|
+
SameType = is_same<typename Lhs::Scalar, typename Rhs::Scalar>::value,
|
|
1106
|
+
StorageOrdersAgree = (int(LhsFlags) & RowMajorBit) == (int(RhsFlags) & RowMajorBit),
|
|
1107
|
+
Flags0 = (int(LhsFlags) | int(RhsFlags)) &
|
|
1108
|
+
(HereditaryBits |
|
|
1109
|
+
(int(LhsFlags) & int(RhsFlags) &
|
|
1110
|
+
((StorageOrdersAgree ? LinearAccessBit : 0) |
|
|
1111
|
+
(functor_traits<BinaryOp>::PacketAccess && StorageOrdersAgree && SameType ? PacketAccessBit : 0)))),
|
|
1112
|
+
Flags = (Flags0 & ~RowMajorBit) | (LhsFlags & RowMajorBit),
|
|
1113
|
+
Alignment = plain_enum_min(evaluator<Lhs>::Alignment, evaluator<Rhs>::Alignment)
|
|
1114
|
+
};
|
|
1115
|
+
|
|
1116
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit binary_evaluator(const XprType& xpr) : m_d(xpr) {
|
|
1117
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<BinaryOp>::Cost);
|
|
1118
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1122
|
+
|
|
1123
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1124
|
+
return m_d.func()(m_d.lhsImpl.coeff(row, col), m_d.rhsImpl.coeff(row, col));
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1128
|
+
return m_d.func()(m_d.lhsImpl.coeff(index), m_d.rhsImpl.coeff(index));
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
template <int LoadMode, typename PacketType>
|
|
1132
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1133
|
+
return m_d.func().packetOp(m_d.lhsImpl.template packet<LoadMode, PacketType>(row, col),
|
|
1134
|
+
m_d.rhsImpl.template packet<LoadMode, PacketType>(row, col));
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
template <int LoadMode, typename PacketType>
|
|
1138
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1139
|
+
return m_d.func().packetOp(m_d.lhsImpl.template packet<LoadMode, PacketType>(index),
|
|
1140
|
+
m_d.rhsImpl.template packet<LoadMode, PacketType>(index));
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
template <int LoadMode, typename PacketType>
|
|
1144
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1145
|
+
return m_d.func().packetOp(m_d.lhsImpl.template packetSegment<LoadMode, PacketType>(row, col, begin, count),
|
|
1146
|
+
m_d.rhsImpl.template packetSegment<LoadMode, PacketType>(row, col, begin, count));
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
template <int LoadMode, typename PacketType>
|
|
1150
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1151
|
+
return m_d.func().packetOp(m_d.lhsImpl.template packetSegment<LoadMode, PacketType>(index, begin, count),
|
|
1152
|
+
m_d.rhsImpl.template packetSegment<LoadMode, PacketType>(index, begin, count));
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
protected:
|
|
1156
|
+
// this helper permits to completely eliminate the functor if it is empty
|
|
1157
|
+
struct Data {
|
|
1158
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Data(const XprType& xpr)
|
|
1159
|
+
: op(xpr.functor()), lhsImpl(xpr.lhs()), rhsImpl(xpr.rhs()) {}
|
|
1160
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const BinaryOp& func() const { return op; }
|
|
1161
|
+
BinaryOp op;
|
|
1162
|
+
evaluator<Lhs> lhsImpl;
|
|
1163
|
+
evaluator<Rhs> rhsImpl;
|
|
1164
|
+
};
|
|
1165
|
+
|
|
1166
|
+
Data m_d;
|
|
1167
|
+
};
|
|
1168
|
+
|
|
1169
|
+
// -------------------- CwiseUnaryView --------------------
|
|
1170
|
+
|
|
1171
|
+
template <typename UnaryOp, typename ArgType, typename StrideType>
|
|
1172
|
+
struct unary_evaluator<CwiseUnaryView<UnaryOp, ArgType, StrideType>, IndexBased>
|
|
1173
|
+
: evaluator_base<CwiseUnaryView<UnaryOp, ArgType, StrideType>> {
|
|
1174
|
+
typedef CwiseUnaryView<UnaryOp, ArgType, StrideType> XprType;
|
|
1175
|
+
|
|
1176
|
+
enum {
|
|
1177
|
+
CoeffReadCost = int(evaluator<ArgType>::CoeffReadCost) + int(functor_traits<UnaryOp>::Cost),
|
|
1178
|
+
|
|
1179
|
+
Flags = (evaluator<ArgType>::Flags & (HereditaryBits | LinearAccessBit | DirectAccessBit)),
|
|
1180
|
+
|
|
1181
|
+
Alignment = 0 // FIXME it is not very clear why alignment is necessarily lost...
|
|
1182
|
+
};
|
|
1183
|
+
|
|
1184
|
+
EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op) : m_d(op) {
|
|
1185
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<UnaryOp>::Cost);
|
|
1186
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
typedef typename XprType::Scalar Scalar;
|
|
1190
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1191
|
+
|
|
1192
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1193
|
+
return m_d.func()(m_d.argImpl.coeff(row, col));
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1197
|
+
return m_d.func()(m_d.argImpl.coeff(index));
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) {
|
|
1201
|
+
return m_d.func()(m_d.argImpl.coeffRef(row, col));
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
|
|
1205
|
+
return m_d.func()(m_d.argImpl.coeffRef(index));
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
protected:
|
|
1209
|
+
// this helper permits to completely eliminate the functor if it is empty
|
|
1210
|
+
struct Data {
|
|
1211
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Data(const XprType& xpr)
|
|
1212
|
+
: op(xpr.functor()), argImpl(xpr.nestedExpression()) {}
|
|
1213
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const UnaryOp& func() const { return op; }
|
|
1214
|
+
UnaryOp op;
|
|
1215
|
+
evaluator<ArgType> argImpl;
|
|
1216
|
+
};
|
|
1217
|
+
|
|
1218
|
+
Data m_d;
|
|
1219
|
+
};
|
|
1220
|
+
|
|
1221
|
+
// -------------------- Map --------------------
|
|
1222
|
+
|
|
1223
|
+
// FIXME perhaps the PlainObjectType could be provided by Derived::PlainObject ?
|
|
1224
|
+
// but that might complicate template specialization
|
|
1225
|
+
template <typename Derived, typename PlainObjectType>
|
|
1226
|
+
struct mapbase_evaluator;
|
|
1227
|
+
|
|
1228
|
+
template <typename Derived, typename PlainObjectType>
|
|
1229
|
+
struct mapbase_evaluator : evaluator_base<Derived> {
|
|
1230
|
+
typedef Derived XprType;
|
|
1231
|
+
typedef typename XprType::PointerType PointerType;
|
|
1232
|
+
typedef typename XprType::Scalar Scalar;
|
|
1233
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1234
|
+
|
|
1235
|
+
enum {
|
|
1236
|
+
IsRowMajor = XprType::RowsAtCompileTime,
|
|
1237
|
+
ColsAtCompileTime = XprType::ColsAtCompileTime,
|
|
1238
|
+
CoeffReadCost = NumTraits<Scalar>::ReadCost
|
|
1239
|
+
};
|
|
1240
|
+
|
|
1241
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit mapbase_evaluator(const XprType& map)
|
|
1242
|
+
: m_data(const_cast<PointerType>(map.data())),
|
|
1243
|
+
m_innerStride(map.innerStride()),
|
|
1244
|
+
m_outerStride(map.outerStride()) {
|
|
1245
|
+
EIGEN_STATIC_ASSERT(check_implication((evaluator<Derived>::Flags & PacketAccessBit) != 0,
|
|
1246
|
+
inner_stride_at_compile_time<Derived>::ret == 1),
|
|
1247
|
+
PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1);
|
|
1248
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1252
|
+
return m_data[col * colStride() + row * rowStride()];
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1256
|
+
return m_data[index * m_innerStride.value()];
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) {
|
|
1260
|
+
return m_data[col * colStride() + row * rowStride()];
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) { return m_data[index * m_innerStride.value()]; }
|
|
1264
|
+
|
|
1265
|
+
template <int LoadMode, typename PacketType>
|
|
1266
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1267
|
+
PointerType ptr = m_data + row * rowStride() + col * colStride();
|
|
1268
|
+
return ploadt<PacketType, LoadMode>(ptr);
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
template <int LoadMode, typename PacketType>
|
|
1272
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1273
|
+
return ploadt<PacketType, LoadMode>(m_data + index * m_innerStride.value());
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
template <int StoreMode, typename PacketType>
|
|
1277
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
1278
|
+
PointerType ptr = m_data + row * rowStride() + col * colStride();
|
|
1279
|
+
pstoret<Scalar, PacketType, StoreMode>(ptr, x);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
template <int StoreMode, typename PacketType>
|
|
1283
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
1284
|
+
pstoret<Scalar, PacketType, StoreMode>(m_data + index * m_innerStride.value(), x);
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
template <int LoadMode, typename PacketType>
|
|
1288
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1289
|
+
PointerType ptr = m_data + row * rowStride() + col * colStride();
|
|
1290
|
+
return ploadtSegment<PacketType, LoadMode>(ptr, begin, count);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
template <int LoadMode, typename PacketType>
|
|
1294
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1295
|
+
return ploadtSegment<PacketType, LoadMode>(m_data + index * m_innerStride.value(), begin, count);
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
template <int StoreMode, typename PacketType>
|
|
1299
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
1300
|
+
Index count) {
|
|
1301
|
+
PointerType ptr = m_data + row * rowStride() + col * colStride();
|
|
1302
|
+
pstoretSegment<Scalar, PacketType, StoreMode>(ptr, x, begin, count);
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
template <int StoreMode, typename PacketType>
|
|
1306
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
1307
|
+
Index count) {
|
|
1308
|
+
pstoretSegment<Scalar, PacketType, StoreMode>(m_data + index * m_innerStride.value(), x, begin, count);
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
protected:
|
|
1312
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rowStride() const noexcept {
|
|
1313
|
+
return XprType::IsRowMajor ? m_outerStride.value() : m_innerStride.value();
|
|
1314
|
+
}
|
|
1315
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index colStride() const noexcept {
|
|
1316
|
+
return XprType::IsRowMajor ? m_innerStride.value() : m_outerStride.value();
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
PointerType m_data;
|
|
1320
|
+
const variable_if_dynamic<Index, XprType::InnerStrideAtCompileTime> m_innerStride;
|
|
1321
|
+
const variable_if_dynamic<Index, XprType::OuterStrideAtCompileTime> m_outerStride;
|
|
1322
|
+
};
|
|
1323
|
+
|
|
1324
|
+
template <typename PlainObjectType, int MapOptions, typename StrideType>
|
|
1325
|
+
struct evaluator<Map<PlainObjectType, MapOptions, StrideType>>
|
|
1326
|
+
: public mapbase_evaluator<Map<PlainObjectType, MapOptions, StrideType>, PlainObjectType> {
|
|
1327
|
+
typedef Map<PlainObjectType, MapOptions, StrideType> XprType;
|
|
1328
|
+
typedef typename XprType::Scalar Scalar;
|
|
1329
|
+
// TODO: should check for smaller packet types once we can handle multi-sized packet types
|
|
1330
|
+
typedef typename packet_traits<Scalar>::type PacketScalar;
|
|
1331
|
+
|
|
1332
|
+
enum {
|
|
1333
|
+
InnerStrideAtCompileTime = StrideType::InnerStrideAtCompileTime == 0
|
|
1334
|
+
? int(PlainObjectType::InnerStrideAtCompileTime)
|
|
1335
|
+
: int(StrideType::InnerStrideAtCompileTime),
|
|
1336
|
+
OuterStrideAtCompileTime = StrideType::OuterStrideAtCompileTime == 0
|
|
1337
|
+
? int(PlainObjectType::OuterStrideAtCompileTime)
|
|
1338
|
+
: int(StrideType::OuterStrideAtCompileTime),
|
|
1339
|
+
HasNoInnerStride = InnerStrideAtCompileTime == 1,
|
|
1340
|
+
HasNoOuterStride = StrideType::OuterStrideAtCompileTime == 0,
|
|
1341
|
+
HasNoStride = HasNoInnerStride && HasNoOuterStride,
|
|
1342
|
+
IsDynamicSize = PlainObjectType::SizeAtCompileTime == Dynamic,
|
|
1343
|
+
|
|
1344
|
+
PacketAccessMask = bool(HasNoInnerStride) ? ~int(0) : ~int(PacketAccessBit),
|
|
1345
|
+
LinearAccessMask =
|
|
1346
|
+
bool(HasNoStride) || bool(PlainObjectType::IsVectorAtCompileTime) ? ~int(0) : ~int(LinearAccessBit),
|
|
1347
|
+
Flags = int(evaluator<PlainObjectType>::Flags) & (LinearAccessMask & PacketAccessMask),
|
|
1348
|
+
|
|
1349
|
+
Alignment = int(MapOptions) & int(AlignedMask)
|
|
1350
|
+
};
|
|
1351
|
+
|
|
1352
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& map) : mapbase_evaluator<XprType, PlainObjectType>(map) {}
|
|
1353
|
+
};
|
|
1354
|
+
|
|
1355
|
+
// -------------------- Ref --------------------
|
|
1356
|
+
|
|
1357
|
+
template <typename PlainObjectType, int RefOptions, typename StrideType>
|
|
1358
|
+
struct evaluator<Ref<PlainObjectType, RefOptions, StrideType>>
|
|
1359
|
+
: public mapbase_evaluator<Ref<PlainObjectType, RefOptions, StrideType>, PlainObjectType> {
|
|
1360
|
+
typedef Ref<PlainObjectType, RefOptions, StrideType> XprType;
|
|
1361
|
+
|
|
1362
|
+
enum {
|
|
1363
|
+
Flags = evaluator<Map<PlainObjectType, RefOptions, StrideType>>::Flags,
|
|
1364
|
+
Alignment = evaluator<Map<PlainObjectType, RefOptions, StrideType>>::Alignment
|
|
1365
|
+
};
|
|
1366
|
+
|
|
1367
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& ref)
|
|
1368
|
+
: mapbase_evaluator<XprType, PlainObjectType>(ref) {}
|
|
1369
|
+
};
|
|
1370
|
+
|
|
1371
|
+
// -------------------- Block --------------------
|
|
1372
|
+
|
|
1373
|
+
template <typename ArgType, int BlockRows, int BlockCols, bool InnerPanel,
|
|
1374
|
+
bool HasDirectAccess = has_direct_access<ArgType>::ret>
|
|
1375
|
+
struct block_evaluator;
|
|
1376
|
+
|
|
1377
|
+
template <typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
1378
|
+
struct evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>>
|
|
1379
|
+
: block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel> {
|
|
1380
|
+
typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
|
|
1381
|
+
typedef typename XprType::Scalar Scalar;
|
|
1382
|
+
// TODO: should check for smaller packet types once we can handle multi-sized packet types
|
|
1383
|
+
typedef typename packet_traits<Scalar>::type PacketScalar;
|
|
1384
|
+
|
|
1385
|
+
enum {
|
|
1386
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
1387
|
+
|
|
1388
|
+
RowsAtCompileTime = traits<XprType>::RowsAtCompileTime,
|
|
1389
|
+
ColsAtCompileTime = traits<XprType>::ColsAtCompileTime,
|
|
1390
|
+
MaxRowsAtCompileTime = traits<XprType>::MaxRowsAtCompileTime,
|
|
1391
|
+
MaxColsAtCompileTime = traits<XprType>::MaxColsAtCompileTime,
|
|
1392
|
+
|
|
1393
|
+
ArgTypeIsRowMajor = (int(evaluator<ArgType>::Flags) & RowMajorBit) != 0,
|
|
1394
|
+
IsRowMajor = (MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1) ? 1
|
|
1395
|
+
: (MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1) ? 0
|
|
1396
|
+
: ArgTypeIsRowMajor,
|
|
1397
|
+
HasSameStorageOrderAsArgType = (IsRowMajor == ArgTypeIsRowMajor),
|
|
1398
|
+
InnerSize = IsRowMajor ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
|
|
1399
|
+
InnerStrideAtCompileTime = HasSameStorageOrderAsArgType ? int(inner_stride_at_compile_time<ArgType>::ret)
|
|
1400
|
+
: int(outer_stride_at_compile_time<ArgType>::ret),
|
|
1401
|
+
OuterStrideAtCompileTime = HasSameStorageOrderAsArgType ? int(outer_stride_at_compile_time<ArgType>::ret)
|
|
1402
|
+
: int(inner_stride_at_compile_time<ArgType>::ret),
|
|
1403
|
+
MaskPacketAccessBit = (InnerStrideAtCompileTime == 1 || HasSameStorageOrderAsArgType) ? PacketAccessBit : 0,
|
|
1404
|
+
|
|
1405
|
+
FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1 ||
|
|
1406
|
+
(InnerPanel && (evaluator<ArgType>::Flags & LinearAccessBit)))
|
|
1407
|
+
? LinearAccessBit
|
|
1408
|
+
: 0,
|
|
1409
|
+
FlagsRowMajorBit = XprType::Flags & RowMajorBit,
|
|
1410
|
+
Flags0 = evaluator<ArgType>::Flags & ((HereditaryBits & ~RowMajorBit) | DirectAccessBit | MaskPacketAccessBit),
|
|
1411
|
+
Flags = Flags0 | FlagsLinearAccessBit | FlagsRowMajorBit,
|
|
1412
|
+
|
|
1413
|
+
PacketAlignment = unpacket_traits<PacketScalar>::alignment,
|
|
1414
|
+
Alignment0 = (InnerPanel && (OuterStrideAtCompileTime != Dynamic) && (OuterStrideAtCompileTime != 0) &&
|
|
1415
|
+
(((OuterStrideAtCompileTime * int(sizeof(Scalar))) % int(PacketAlignment)) == 0))
|
|
1416
|
+
? int(PacketAlignment)
|
|
1417
|
+
: 0,
|
|
1418
|
+
Alignment = plain_enum_min(evaluator<ArgType>::Alignment, Alignment0)
|
|
1419
|
+
};
|
|
1420
|
+
typedef block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel> block_evaluator_type;
|
|
1421
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& block) : block_evaluator_type(block) {
|
|
1422
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
1423
|
+
}
|
|
1424
|
+
};
|
|
1425
|
+
|
|
1426
|
+
// no direct-access => dispatch to a unary evaluator
|
|
1427
|
+
template <typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
1428
|
+
struct block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel, /*HasDirectAccess*/ false>
|
|
1429
|
+
: unary_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>> {
|
|
1430
|
+
typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
|
|
1431
|
+
|
|
1432
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit block_evaluator(const XprType& block)
|
|
1433
|
+
: unary_evaluator<XprType>(block) {}
|
|
1434
|
+
};
|
|
1435
|
+
|
|
1436
|
+
template <typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
1437
|
+
struct unary_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>, IndexBased>
|
|
1438
|
+
: evaluator_base<Block<ArgType, BlockRows, BlockCols, InnerPanel>> {
|
|
1439
|
+
typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
|
|
1440
|
+
|
|
1441
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& block)
|
|
1442
|
+
: m_argImpl(block.nestedExpression()),
|
|
1443
|
+
m_startRow(block.startRow()),
|
|
1444
|
+
m_startCol(block.startCol()),
|
|
1445
|
+
m_linear_offset(ForwardLinearAccess
|
|
1446
|
+
? (ArgType::IsRowMajor
|
|
1447
|
+
? block.startRow() * block.nestedExpression().cols() + block.startCol()
|
|
1448
|
+
: block.startCol() * block.nestedExpression().rows() + block.startRow())
|
|
1449
|
+
: 0) {}
|
|
1450
|
+
|
|
1451
|
+
typedef typename XprType::Scalar Scalar;
|
|
1452
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1453
|
+
|
|
1454
|
+
enum {
|
|
1455
|
+
RowsAtCompileTime = XprType::RowsAtCompileTime,
|
|
1456
|
+
ForwardLinearAccess = (InnerPanel || int(XprType::IsRowMajor) == int(ArgType::IsRowMajor)) &&
|
|
1457
|
+
bool(evaluator<ArgType>::Flags & LinearAccessBit)
|
|
1458
|
+
};
|
|
1459
|
+
|
|
1460
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1461
|
+
return m_argImpl.coeff(m_startRow.value() + row, m_startCol.value() + col);
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1465
|
+
return linear_coeff_impl(index, bool_constant<ForwardLinearAccess>());
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) {
|
|
1469
|
+
return m_argImpl.coeffRef(m_startRow.value() + row, m_startCol.value() + col);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
|
|
1473
|
+
return linear_coeffRef_impl(index, bool_constant<ForwardLinearAccess>());
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
template <int LoadMode, typename PacketType>
|
|
1477
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1478
|
+
return m_argImpl.template packet<LoadMode, PacketType>(m_startRow.value() + row, m_startCol.value() + col);
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
template <int LoadMode, typename PacketType>
|
|
1482
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1483
|
+
if (ForwardLinearAccess)
|
|
1484
|
+
return m_argImpl.template packet<LoadMode, PacketType>(m_linear_offset.value() + index);
|
|
1485
|
+
else
|
|
1486
|
+
return packet<LoadMode, PacketType>(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
template <int StoreMode, typename PacketType>
|
|
1490
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
1491
|
+
return m_argImpl.template writePacket<StoreMode, PacketType>(m_startRow.value() + row, m_startCol.value() + col, x);
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
template <int StoreMode, typename PacketType>
|
|
1495
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
1496
|
+
if (ForwardLinearAccess)
|
|
1497
|
+
return m_argImpl.template writePacket<StoreMode, PacketType>(m_linear_offset.value() + index, x);
|
|
1498
|
+
else
|
|
1499
|
+
return writePacket<StoreMode, PacketType>(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0,
|
|
1500
|
+
x);
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
template <int LoadMode, typename PacketType>
|
|
1504
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1505
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(m_startRow.value() + row, m_startCol.value() + col,
|
|
1506
|
+
begin, count);
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
template <int LoadMode, typename PacketType>
|
|
1510
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1511
|
+
if (ForwardLinearAccess)
|
|
1512
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(m_linear_offset.value() + index, begin, count);
|
|
1513
|
+
else
|
|
1514
|
+
return packetSegment<LoadMode, PacketType>(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0,
|
|
1515
|
+
begin, count);
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
template <int StoreMode, typename PacketType>
|
|
1519
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
1520
|
+
Index count) {
|
|
1521
|
+
return m_argImpl.template writePacketSegment<StoreMode, PacketType>(m_startRow.value() + row,
|
|
1522
|
+
m_startCol.value() + col, x, begin, count);
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
template <int StoreMode, typename PacketType>
|
|
1526
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
1527
|
+
Index count) {
|
|
1528
|
+
if (ForwardLinearAccess)
|
|
1529
|
+
return m_argImpl.template writePacketSegment<StoreMode, PacketType>(m_linear_offset.value() + index, x, begin,
|
|
1530
|
+
count);
|
|
1531
|
+
else
|
|
1532
|
+
return writePacketSegment<StoreMode, PacketType>(RowsAtCompileTime == 1 ? 0 : index,
|
|
1533
|
+
RowsAtCompileTime == 1 ? index : 0, x, begin, count);
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
protected:
|
|
1537
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType
|
|
1538
|
+
linear_coeff_impl(Index index, internal::true_type /* ForwardLinearAccess */) const {
|
|
1539
|
+
return m_argImpl.coeff(m_linear_offset.value() + index);
|
|
1540
|
+
}
|
|
1541
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType
|
|
1542
|
+
linear_coeff_impl(Index index, internal::false_type /* not ForwardLinearAccess */) const {
|
|
1543
|
+
return coeff(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0);
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& linear_coeffRef_impl(Index index,
|
|
1547
|
+
internal::true_type /* ForwardLinearAccess */) {
|
|
1548
|
+
return m_argImpl.coeffRef(m_linear_offset.value() + index);
|
|
1549
|
+
}
|
|
1550
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& linear_coeffRef_impl(
|
|
1551
|
+
Index index, internal::false_type /* not ForwardLinearAccess */) {
|
|
1552
|
+
return coeffRef(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0);
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
evaluator<ArgType> m_argImpl;
|
|
1556
|
+
const variable_if_dynamic<Index, (ArgType::RowsAtCompileTime == 1 && BlockRows == 1) ? 0 : Dynamic> m_startRow;
|
|
1557
|
+
const variable_if_dynamic<Index, (ArgType::ColsAtCompileTime == 1 && BlockCols == 1) ? 0 : Dynamic> m_startCol;
|
|
1558
|
+
const variable_if_dynamic<Index, ForwardLinearAccess ? Dynamic : 0> m_linear_offset;
|
|
1559
|
+
};
|
|
1560
|
+
|
|
1561
|
+
// TODO: This evaluator does not actually use the child evaluator;
|
|
1562
|
+
// all action is via the data() as returned by the Block expression.
|
|
1563
|
+
|
|
1564
|
+
template <typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
1565
|
+
struct block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel, /* HasDirectAccess */ true>
|
|
1566
|
+
: mapbase_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>,
|
|
1567
|
+
typename Block<ArgType, BlockRows, BlockCols, InnerPanel>::PlainObject> {
|
|
1568
|
+
typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
|
|
1569
|
+
typedef typename XprType::Scalar Scalar;
|
|
1570
|
+
|
|
1571
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit block_evaluator(const XprType& block)
|
|
1572
|
+
: mapbase_evaluator<XprType, typename XprType::PlainObject>(block) {
|
|
1573
|
+
eigen_internal_assert((internal::is_constant_evaluated() ||
|
|
1574
|
+
(std::uintptr_t(block.data()) % plain_enum_max(1, evaluator<XprType>::Alignment)) == 0) &&
|
|
1575
|
+
"data is not aligned");
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1579
|
+
// -------------------- Replicate --------------------
|
|
1580
|
+
|
|
1581
|
+
template <typename ArgType, int RowFactor, int ColFactor>
|
|
1582
|
+
struct unary_evaluator<Replicate<ArgType, RowFactor, ColFactor>>
|
|
1583
|
+
: evaluator_base<Replicate<ArgType, RowFactor, ColFactor>> {
|
|
1584
|
+
typedef Replicate<ArgType, RowFactor, ColFactor> XprType;
|
|
1585
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1586
|
+
enum { Factor = (RowFactor == Dynamic || ColFactor == Dynamic) ? Dynamic : RowFactor * ColFactor };
|
|
1587
|
+
typedef typename nested_eval<ArgType, Factor>::type ArgTypeNested;
|
|
1588
|
+
typedef remove_all_t<ArgTypeNested> ArgTypeNestedCleaned;
|
|
1589
|
+
|
|
1590
|
+
enum {
|
|
1591
|
+
CoeffReadCost = evaluator<ArgTypeNestedCleaned>::CoeffReadCost,
|
|
1592
|
+
LinearAccessMask = XprType::IsVectorAtCompileTime ? LinearAccessBit : 0,
|
|
1593
|
+
Flags = (evaluator<ArgTypeNestedCleaned>::Flags & (HereditaryBits | LinearAccessMask) & ~RowMajorBit) |
|
|
1594
|
+
(traits<XprType>::Flags & RowMajorBit),
|
|
1595
|
+
|
|
1596
|
+
Alignment = evaluator<ArgTypeNestedCleaned>::Alignment
|
|
1597
|
+
};
|
|
1598
|
+
|
|
1599
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& replicate)
|
|
1600
|
+
: m_arg(replicate.nestedExpression()),
|
|
1601
|
+
m_argImpl(m_arg),
|
|
1602
|
+
m_rows(replicate.nestedExpression().rows()),
|
|
1603
|
+
m_cols(replicate.nestedExpression().cols()) {}
|
|
1604
|
+
|
|
1605
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1606
|
+
// try to avoid using modulo; this is a pure optimization strategy
|
|
1607
|
+
const Index actual_row = traits<XprType>::RowsAtCompileTime == 1 ? 0 : RowFactor == 1 ? row : row % m_rows.value();
|
|
1608
|
+
const Index actual_col = traits<XprType>::ColsAtCompileTime == 1 ? 0 : ColFactor == 1 ? col : col % m_cols.value();
|
|
1609
|
+
|
|
1610
|
+
return m_argImpl.coeff(actual_row, actual_col);
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1614
|
+
// try to avoid using modulo; this is a pure optimization strategy
|
|
1615
|
+
const Index actual_index = traits<XprType>::RowsAtCompileTime == 1
|
|
1616
|
+
? (ColFactor == 1 ? index : index % m_cols.value())
|
|
1617
|
+
: (RowFactor == 1 ? index : index % m_rows.value());
|
|
1618
|
+
|
|
1619
|
+
return m_argImpl.coeff(actual_index);
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
template <int LoadMode, typename PacketType>
|
|
1623
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1624
|
+
const Index actual_row = traits<XprType>::RowsAtCompileTime == 1 ? 0 : RowFactor == 1 ? row : row % m_rows.value();
|
|
1625
|
+
const Index actual_col = traits<XprType>::ColsAtCompileTime == 1 ? 0 : ColFactor == 1 ? col : col % m_cols.value();
|
|
1626
|
+
|
|
1627
|
+
return m_argImpl.template packet<LoadMode, PacketType>(actual_row, actual_col);
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
template <int LoadMode, typename PacketType>
|
|
1631
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1632
|
+
const Index actual_index = traits<XprType>::RowsAtCompileTime == 1
|
|
1633
|
+
? (ColFactor == 1 ? index : index % m_cols.value())
|
|
1634
|
+
: (RowFactor == 1 ? index : index % m_rows.value());
|
|
1635
|
+
|
|
1636
|
+
return m_argImpl.template packet<LoadMode, PacketType>(actual_index);
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
template <int LoadMode, typename PacketType>
|
|
1640
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1641
|
+
const Index actual_row = traits<XprType>::RowsAtCompileTime == 1 ? 0 : RowFactor == 1 ? row : row % m_rows.value();
|
|
1642
|
+
const Index actual_col = traits<XprType>::ColsAtCompileTime == 1 ? 0 : ColFactor == 1 ? col : col % m_cols.value();
|
|
1643
|
+
|
|
1644
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(actual_row, actual_col, begin, count);
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
template <int LoadMode, typename PacketType>
|
|
1648
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1649
|
+
const Index actual_index = traits<XprType>::RowsAtCompileTime == 1
|
|
1650
|
+
? (ColFactor == 1 ? index : index % m_cols.value())
|
|
1651
|
+
: (RowFactor == 1 ? index : index % m_rows.value());
|
|
1652
|
+
|
|
1653
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(actual_index, begin, count);
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
protected:
|
|
1657
|
+
const ArgTypeNested m_arg;
|
|
1658
|
+
evaluator<ArgTypeNestedCleaned> m_argImpl;
|
|
1659
|
+
const variable_if_dynamic<Index, ArgType::RowsAtCompileTime> m_rows;
|
|
1660
|
+
const variable_if_dynamic<Index, ArgType::ColsAtCompileTime> m_cols;
|
|
1661
|
+
};
|
|
1662
|
+
|
|
1663
|
+
// -------------------- MatrixWrapper and ArrayWrapper --------------------
|
|
1664
|
+
//
|
|
1665
|
+
// evaluator_wrapper_base<T> is a common base class for the
|
|
1666
|
+
// MatrixWrapper and ArrayWrapper evaluators.
|
|
1667
|
+
|
|
1668
|
+
template <typename XprType>
|
|
1669
|
+
struct evaluator_wrapper_base : evaluator_base<XprType> {
|
|
1670
|
+
typedef remove_all_t<typename XprType::NestedExpressionType> ArgType;
|
|
1671
|
+
enum {
|
|
1672
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
1673
|
+
Flags = evaluator<ArgType>::Flags,
|
|
1674
|
+
Alignment = evaluator<ArgType>::Alignment
|
|
1675
|
+
};
|
|
1676
|
+
|
|
1677
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator_wrapper_base(const ArgType& arg) : m_argImpl(arg) {}
|
|
1678
|
+
|
|
1679
|
+
typedef typename ArgType::Scalar Scalar;
|
|
1680
|
+
typedef typename ArgType::CoeffReturnType CoeffReturnType;
|
|
1681
|
+
|
|
1682
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1683
|
+
return m_argImpl.coeff(row, col);
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const { return m_argImpl.coeff(index); }
|
|
1687
|
+
|
|
1688
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) { return m_argImpl.coeffRef(row, col); }
|
|
1689
|
+
|
|
1690
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) { return m_argImpl.coeffRef(index); }
|
|
1691
|
+
|
|
1692
|
+
template <int LoadMode, typename PacketType>
|
|
1693
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1694
|
+
return m_argImpl.template packet<LoadMode, PacketType>(row, col);
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
template <int LoadMode, typename PacketType>
|
|
1698
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1699
|
+
return m_argImpl.template packet<LoadMode, PacketType>(index);
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1702
|
+
template <int StoreMode, typename PacketType>
|
|
1703
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
1704
|
+
m_argImpl.template writePacket<StoreMode>(row, col, x);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
template <int StoreMode, typename PacketType>
|
|
1708
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
1709
|
+
m_argImpl.template writePacket<StoreMode>(index, x);
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
template <int LoadMode, typename PacketType>
|
|
1713
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1714
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(row, col, begin, count);
|
|
1715
|
+
}
|
|
1716
|
+
|
|
1717
|
+
template <int LoadMode, typename PacketType>
|
|
1718
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1719
|
+
return m_argImpl.template packetSegment<LoadMode, PacketType>(index, begin, count);
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1722
|
+
template <int StoreMode, typename PacketType>
|
|
1723
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
1724
|
+
Index count) {
|
|
1725
|
+
m_argImpl.template writePacketSegment<StoreMode>(row, col, x, begin, count);
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
template <int StoreMode, typename PacketType>
|
|
1729
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
1730
|
+
Index count) {
|
|
1731
|
+
m_argImpl.template writePacketSegment<StoreMode>(index, x, begin, count);
|
|
1732
|
+
}
|
|
1733
|
+
|
|
1734
|
+
protected:
|
|
1735
|
+
evaluator<ArgType> m_argImpl;
|
|
1736
|
+
};
|
|
1737
|
+
|
|
1738
|
+
template <typename TArgType>
|
|
1739
|
+
struct unary_evaluator<MatrixWrapper<TArgType>> : evaluator_wrapper_base<MatrixWrapper<TArgType>> {
|
|
1740
|
+
typedef MatrixWrapper<TArgType> XprType;
|
|
1741
|
+
|
|
1742
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& wrapper)
|
|
1743
|
+
: evaluator_wrapper_base<MatrixWrapper<TArgType>>(wrapper.nestedExpression()) {}
|
|
1744
|
+
};
|
|
1745
|
+
|
|
1746
|
+
template <typename TArgType>
|
|
1747
|
+
struct unary_evaluator<ArrayWrapper<TArgType>> : evaluator_wrapper_base<ArrayWrapper<TArgType>> {
|
|
1748
|
+
typedef ArrayWrapper<TArgType> XprType;
|
|
1749
|
+
|
|
1750
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& wrapper)
|
|
1751
|
+
: evaluator_wrapper_base<ArrayWrapper<TArgType>>(wrapper.nestedExpression()) {}
|
|
1752
|
+
};
|
|
1753
|
+
|
|
1754
|
+
// -------------------- Reverse --------------------
|
|
1755
|
+
|
|
1756
|
+
// defined in Reverse.h:
|
|
1757
|
+
template <typename PacketType, bool ReversePacket>
|
|
1758
|
+
struct reverse_packet_cond;
|
|
1759
|
+
|
|
1760
|
+
template <typename ArgType, int Direction>
|
|
1761
|
+
struct unary_evaluator<Reverse<ArgType, Direction>> : evaluator_base<Reverse<ArgType, Direction>> {
|
|
1762
|
+
typedef Reverse<ArgType, Direction> XprType;
|
|
1763
|
+
typedef typename XprType::Scalar Scalar;
|
|
1764
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1765
|
+
|
|
1766
|
+
enum {
|
|
1767
|
+
IsRowMajor = XprType::IsRowMajor,
|
|
1768
|
+
IsColMajor = !IsRowMajor,
|
|
1769
|
+
ReverseRow = (Direction == Vertical) || (Direction == BothDirections),
|
|
1770
|
+
ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
|
|
1771
|
+
ReversePacket = (Direction == BothDirections) || ((Direction == Vertical) && IsColMajor) ||
|
|
1772
|
+
((Direction == Horizontal) && IsRowMajor),
|
|
1773
|
+
|
|
1774
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
1775
|
+
|
|
1776
|
+
// let's enable LinearAccess only with vectorization because of the product overhead
|
|
1777
|
+
// FIXME enable DirectAccess with negative strides?
|
|
1778
|
+
Flags0 = evaluator<ArgType>::Flags,
|
|
1779
|
+
LinearAccess =
|
|
1780
|
+
((Direction == BothDirections) && (int(Flags0) & PacketAccessBit)) ||
|
|
1781
|
+
((ReverseRow && XprType::ColsAtCompileTime == 1) || (ReverseCol && XprType::RowsAtCompileTime == 1))
|
|
1782
|
+
? LinearAccessBit
|
|
1783
|
+
: 0,
|
|
1784
|
+
|
|
1785
|
+
Flags = int(Flags0) & (HereditaryBits | PacketAccessBit | LinearAccess),
|
|
1786
|
+
|
|
1787
|
+
Alignment = 0 // FIXME in some rare cases, Alignment could be preserved, like a Vector4f.
|
|
1788
|
+
};
|
|
1789
|
+
|
|
1790
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit unary_evaluator(const XprType& reverse)
|
|
1791
|
+
: m_argImpl(reverse.nestedExpression()),
|
|
1792
|
+
m_rows(ReverseRow ? reverse.nestedExpression().rows() : 1),
|
|
1793
|
+
m_cols(ReverseCol ? reverse.nestedExpression().cols() : 1) {}
|
|
1794
|
+
|
|
1795
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
1796
|
+
return m_argImpl.coeff(ReverseRow ? m_rows.value() - row - 1 : row, ReverseCol ? m_cols.value() - col - 1 : col);
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1799
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1800
|
+
return m_argImpl.coeff(m_rows.value() * m_cols.value() - index - 1);
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) {
|
|
1804
|
+
return m_argImpl.coeffRef(ReverseRow ? m_rows.value() - row - 1 : row, ReverseCol ? m_cols.value() - col - 1 : col);
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
|
|
1808
|
+
return m_argImpl.coeffRef(m_rows.value() * m_cols.value() - index - 1);
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
template <int LoadMode, typename PacketType>
|
|
1812
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const {
|
|
1813
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1814
|
+
static constexpr int OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1;
|
|
1815
|
+
static constexpr int OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1;
|
|
1816
|
+
using reverse_packet = reverse_packet_cond<PacketType, ReversePacket>;
|
|
1817
|
+
|
|
1818
|
+
Index actualRow = ReverseRow ? m_rows.value() - row - OffsetRow : row;
|
|
1819
|
+
Index actualCol = ReverseCol ? m_cols.value() - col - OffsetCol : col;
|
|
1820
|
+
|
|
1821
|
+
return reverse_packet::run(m_argImpl.template packet<LoadMode, PacketType>(actualRow, actualCol));
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1824
|
+
template <int LoadMode, typename PacketType>
|
|
1825
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index index) const {
|
|
1826
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1827
|
+
|
|
1828
|
+
Index actualIndex = m_rows.value() * m_cols.value() - index - PacketSize;
|
|
1829
|
+
|
|
1830
|
+
return preverse(m_argImpl.template packet<LoadMode, PacketType>(actualIndex));
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
template <int LoadMode, typename PacketType>
|
|
1834
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index row, Index col, const PacketType& x) {
|
|
1835
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1836
|
+
static constexpr int OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1;
|
|
1837
|
+
static constexpr int OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1;
|
|
1838
|
+
using reverse_packet = reverse_packet_cond<PacketType, ReversePacket>;
|
|
1839
|
+
|
|
1840
|
+
Index actualRow = ReverseRow ? m_rows.value() - row - OffsetRow : row;
|
|
1841
|
+
Index actualCol = ReverseCol ? m_cols.value() - col - OffsetCol : col;
|
|
1842
|
+
|
|
1843
|
+
m_argImpl.template writePacket<LoadMode>(actualRow, actualCol, reverse_packet::run(x));
|
|
1844
|
+
}
|
|
1845
|
+
|
|
1846
|
+
template <int LoadMode, typename PacketType>
|
|
1847
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketType& x) {
|
|
1848
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1849
|
+
|
|
1850
|
+
Index actualIndex = m_rows.value() * m_cols.value() - index - PacketSize;
|
|
1851
|
+
|
|
1852
|
+
m_argImpl.template writePacket<LoadMode>(actualIndex, preverse(x));
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
template <int LoadMode, typename PacketType>
|
|
1856
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index row, Index col, Index begin, Index count) const {
|
|
1857
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1858
|
+
static constexpr int OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1;
|
|
1859
|
+
static constexpr int OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1;
|
|
1860
|
+
using reverse_packet = reverse_packet_cond<PacketType, ReversePacket>;
|
|
1861
|
+
|
|
1862
|
+
Index actualRow = ReverseRow ? m_rows.value() - row - OffsetRow : row;
|
|
1863
|
+
Index actualCol = ReverseCol ? m_cols.value() - col - OffsetCol : col;
|
|
1864
|
+
Index actualBegin = ReversePacket ? (PacketSize - count - begin) : begin;
|
|
1865
|
+
|
|
1866
|
+
return reverse_packet::run(
|
|
1867
|
+
m_argImpl.template packetSegment<LoadMode, PacketType>(actualRow, actualCol, actualBegin, count));
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
template <int LoadMode, typename PacketType>
|
|
1871
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packetSegment(Index index, Index begin, Index count) const {
|
|
1872
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1873
|
+
|
|
1874
|
+
Index actualIndex = m_rows.value() * m_cols.value() - index - PacketSize;
|
|
1875
|
+
Index actualBegin = PacketSize - count - begin;
|
|
1876
|
+
|
|
1877
|
+
return preverse(m_argImpl.template packetSegment<LoadMode, PacketType>(actualIndex, actualBegin, count));
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
template <int LoadMode, typename PacketType>
|
|
1881
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index row, Index col, const PacketType& x, Index begin,
|
|
1882
|
+
Index count) {
|
|
1883
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1884
|
+
static constexpr int OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1;
|
|
1885
|
+
static constexpr int OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1;
|
|
1886
|
+
using reverse_packet = reverse_packet_cond<PacketType, ReversePacket>;
|
|
1887
|
+
|
|
1888
|
+
Index actualRow = ReverseRow ? m_rows.value() - row - OffsetRow : row;
|
|
1889
|
+
Index actualCol = ReverseCol ? m_cols.value() - col - OffsetCol : col;
|
|
1890
|
+
Index actualBegin = ReversePacket ? (PacketSize - count - begin) : begin;
|
|
1891
|
+
|
|
1892
|
+
m_argImpl.template writePacketSegment<LoadMode>(actualRow, actualCol, reverse_packet::run(x), actualBegin, count);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1895
|
+
template <int LoadMode, typename PacketType>
|
|
1896
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacketSegment(Index index, const PacketType& x, Index begin,
|
|
1897
|
+
Index count) {
|
|
1898
|
+
static constexpr int PacketSize = unpacket_traits<PacketType>::size;
|
|
1899
|
+
|
|
1900
|
+
Index actualIndex = m_rows.value() * m_cols.value() - index - PacketSize;
|
|
1901
|
+
Index actualBegin = PacketSize - count - begin;
|
|
1902
|
+
|
|
1903
|
+
m_argImpl.template writePacketSegment<LoadMode>(actualIndex, preverse(x), actualBegin, count);
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
protected:
|
|
1907
|
+
evaluator<ArgType> m_argImpl;
|
|
1908
|
+
|
|
1909
|
+
// If we do not reverse rows, then we do not need to know the number of rows; same for columns
|
|
1910
|
+
// Nonetheless, in this case it is important to set to 1 such that the coeff(index) method works fine for vectors.
|
|
1911
|
+
const variable_if_dynamic<Index, ReverseRow ? ArgType::RowsAtCompileTime : 1> m_rows;
|
|
1912
|
+
const variable_if_dynamic<Index, ReverseCol ? ArgType::ColsAtCompileTime : 1> m_cols;
|
|
1913
|
+
};
|
|
1914
|
+
|
|
1915
|
+
// -------------------- Diagonal --------------------
|
|
1916
|
+
|
|
1917
|
+
template <typename ArgType, int DiagIndex>
|
|
1918
|
+
struct evaluator<Diagonal<ArgType, DiagIndex>> : evaluator_base<Diagonal<ArgType, DiagIndex>> {
|
|
1919
|
+
typedef Diagonal<ArgType, DiagIndex> XprType;
|
|
1920
|
+
|
|
1921
|
+
enum {
|
|
1922
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
1923
|
+
|
|
1924
|
+
Flags =
|
|
1925
|
+
(unsigned int)(evaluator<ArgType>::Flags & (HereditaryBits | DirectAccessBit) & ~RowMajorBit) | LinearAccessBit,
|
|
1926
|
+
|
|
1927
|
+
Alignment = 0
|
|
1928
|
+
};
|
|
1929
|
+
|
|
1930
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& diagonal)
|
|
1931
|
+
: m_argImpl(diagonal.nestedExpression()), m_index(diagonal.index()) {}
|
|
1932
|
+
|
|
1933
|
+
typedef typename XprType::Scalar Scalar;
|
|
1934
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
1935
|
+
|
|
1936
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index) const {
|
|
1937
|
+
return m_argImpl.coeff(row + rowOffset(), row + colOffset());
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
|
|
1941
|
+
return m_argImpl.coeff(index + rowOffset(), index + colOffset());
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index) {
|
|
1945
|
+
return m_argImpl.coeffRef(row + rowOffset(), row + colOffset());
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
|
|
1949
|
+
return m_argImpl.coeffRef(index + rowOffset(), index + colOffset());
|
|
1950
|
+
}
|
|
1951
|
+
|
|
1952
|
+
protected:
|
|
1953
|
+
evaluator<ArgType> m_argImpl;
|
|
1954
|
+
const variable_if_dynamicindex<Index, XprType::DiagIndex> m_index;
|
|
1955
|
+
|
|
1956
|
+
private:
|
|
1957
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rowOffset() const {
|
|
1958
|
+
return m_index.value() > 0 ? 0 : -m_index.value();
|
|
1959
|
+
}
|
|
1960
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index colOffset() const {
|
|
1961
|
+
return m_index.value() > 0 ? m_index.value() : 0;
|
|
1962
|
+
}
|
|
1963
|
+
};
|
|
1964
|
+
|
|
1965
|
+
//----------------------------------------------------------------------
|
|
1966
|
+
// deprecated code
|
|
1967
|
+
//----------------------------------------------------------------------
|
|
1968
|
+
|
|
1969
|
+
// -------------------- EvalToTemp --------------------
|
|
1970
|
+
|
|
1971
|
+
// expression class for evaluating nested expression to a temporary
|
|
1972
|
+
|
|
1973
|
+
template <typename ArgType>
|
|
1974
|
+
class EvalToTemp;
|
|
1975
|
+
|
|
1976
|
+
template <typename ArgType>
|
|
1977
|
+
struct traits<EvalToTemp<ArgType>> : public traits<ArgType> {};
|
|
1978
|
+
|
|
1979
|
+
template <typename ArgType>
|
|
1980
|
+
class EvalToTemp : public dense_xpr_base<EvalToTemp<ArgType>>::type {
|
|
1981
|
+
public:
|
|
1982
|
+
typedef typename dense_xpr_base<EvalToTemp>::type Base;
|
|
1983
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(EvalToTemp)
|
|
1984
|
+
|
|
1985
|
+
explicit EvalToTemp(const ArgType& arg) : m_arg(arg) {}
|
|
1986
|
+
|
|
1987
|
+
const ArgType& arg() const { return m_arg; }
|
|
1988
|
+
|
|
1989
|
+
constexpr Index rows() const noexcept { return m_arg.rows(); }
|
|
1990
|
+
|
|
1991
|
+
constexpr Index cols() const noexcept { return m_arg.cols(); }
|
|
1992
|
+
|
|
1993
|
+
private:
|
|
1994
|
+
const ArgType& m_arg;
|
|
1995
|
+
};
|
|
1996
|
+
|
|
1997
|
+
template <typename ArgType>
|
|
1998
|
+
struct evaluator<EvalToTemp<ArgType>> : public evaluator<typename ArgType::PlainObject> {
|
|
1999
|
+
typedef EvalToTemp<ArgType> XprType;
|
|
2000
|
+
typedef typename ArgType::PlainObject PlainObject;
|
|
2001
|
+
typedef evaluator<PlainObject> Base;
|
|
2002
|
+
|
|
2003
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : m_result(xpr.arg()) {
|
|
2004
|
+
internal::construct_at<Base>(this, m_result);
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
// This constructor is used when nesting an EvalTo evaluator in another evaluator
|
|
2008
|
+
EIGEN_DEVICE_FUNC evaluator(const ArgType& arg) : m_result(arg) { internal::construct_at<Base>(this, m_result); }
|
|
2009
|
+
|
|
2010
|
+
protected:
|
|
2011
|
+
PlainObject m_result;
|
|
2012
|
+
};
|
|
2013
|
+
|
|
2014
|
+
} // namespace internal
|
|
2015
|
+
|
|
2016
|
+
} // end namespace Eigen
|
|
2017
|
+
|
|
2018
|
+
#endif // EIGEN_COREEVALUATORS_H
|