From 9a45f8e48064bb991942add23721be044b95245f Mon Sep 17 00:00:00 2001 From: oscarbenjamin Date: Sun, 5 Jan 2025 13:15:31 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sympy/sy?= =?UTF-8?q?mpy@d7938cbc2f703801413075c147f54db350d29bff=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../matrices-10.pdf | Bin 287795 -> 287795 bytes .../beam-2.pdf | Bin 10740 -> 10740 bytes .../beam-23.pdf | Bin 13814 -> 13814 bytes .../plotting-2.pdf | Bin 10422 -> 10422 bytes .../plotting-32_01.pdf | Bin 9493 -> 9493 bytes .../control_plots-4.pdf | Bin 16072 -> 16072 bytes .../beam_problems-13_00.pdf | Bin 11393 -> 11393 bytes .../beam-1.pdf | Bin 407297 -> 407300 bytes .../beam-5.pdf | Bin 14153 -> 14153 bytes .../beam-21.pdf | Bin 13019 -> 13019 bytes .../plotting-4.pdf | Bin 8951 -> 8951 bytes .../plotting-17.pdf | Bin 539957 -> 539957 bytes .../plotting-6.pdf | Bin 9493 -> 9493 bytes .../control_plots-5.pdf | Bin 16231 -> 16231 bytes .../matrices-24.pdf | Bin 271975 -> 271975 bytes .../matrices-25.pdf | Bin 287795 -> 287795 bytes .../generate_plots_q3_3.pdf | Bin 15854 -> 15854 bytes .../plotting-16.pdf | Bin 529290 -> 529290 bytes .../plotting-26.hires.png | Bin 30776 -> 30763 bytes .../beam_problems-14.pdf | Bin 17001 -> 17001 bytes .../beam-8.pdf | Bin 10150 -> 10150 bytes .../generate_plots_q3_5_2.pdf | Bin 16619 -> 16619 bytes .../matrices-22.pdf | Bin 245622 -> 245622 bytes .../matrices-4.pdf | Bin 271975 -> 271975 bytes .../plotting-32_00.pdf | Bin 9297 -> 9297 bytes .../beam_problems-18.pdf | Bin 10503 -> 10503 bytes .../plotting-26.pdf | Bin 129327 -> 129072 bytes .../plotting-1.pdf | Bin 10390 -> 10390 bytes .../plotting-29.hires.png | Bin 19487 -> 19470 bytes .../control_plots-2.pdf | Bin 19514 -> 19514 bytes .../control_plots-1.pdf | Bin 15534 -> 15534 bytes .../matrices-8.pdf | Bin 288227 -> 288227 bytes .../plotting-19.pdf | Bin 9517 -> 9517 bytes .../matrices-17.pdf | Bin 245622 -> 245622 bytes .../matrices-18.pdf | Bin 288227 -> 288227 bytes .../plotting-33.pdf | Bin 11051 -> 11051 bytes .../beam-20.pdf | Bin 16342 -> 16342 bytes .../generate_plots_q3_4.pdf | Bin 16192 -> 16192 bytes .../plotting-25.hires.png | Bin 32734 -> 32759 bytes .../biomechanics-11.pdf | Bin 11958 -> 11958 bytes .../biomechanical-model-example-35.pdf | Bin 21670 -> 21670 bytes .../beam_problems-13_01.pdf | Bin 11922 -> 11922 bytes .../plotting-7.pdf | Bin 10513 -> 10512 bytes .../plotting-20.pdf | Bin 9754 -> 9754 bytes .../plotting-7.hires.png | Bin 56915 -> 56637 bytes .../plotting-28.pdf | Bin 12888 -> 12888 bytes .../plotting-15.pdf | Bin 269843 -> 269843 bytes .../matrices-13.pdf | Bin 288227 -> 288227 bytes .../plotting-27.pdf | Bin 14718 -> 14718 bytes .../plotting-30.png | Bin 8763 -> 8718 bytes .../biomechanics-12.pdf | Bin 13179 -> 13179 bytes .../matrices-2.pdf | Bin 245622 -> 245622 bytes .../plotting-25.png | Bin 10122 -> 10115 bytes .../control_plots-6.png | Bin 22649 -> 22753 bytes .../plotting-11.pdf | Bin 8676 -> 8676 bytes .../matrices-6.pdf | Bin 287795 -> 287795 bytes .../matrices-19.pdf | Bin 271975 -> 271975 bytes .../control_plots-7.pdf | Bin 15766 -> 15766 bytes .../plotting-26.png | Bin 9371 -> 9343 bytes .../matrices-21.pdf | Bin 287795 -> 287795 bytes .../plotting-12.pdf | Bin 7940 -> 7940 bytes .../matrices-12.pdf | Bin 245622 -> 245622 bytes .../beam-19.pdf | Bin 12953 -> 12953 bytes .../beam_problems-11_00.pdf | Bin 9615 -> 9615 bytes .../matrices-15.pdf | Bin 287795 -> 287795 bytes .../plotting-29.pdf | Bin 18550 -> 18488 bytes .../plotting-13.pdf | Bin 7944 -> 7944 bytes .../beam_problems-16.pdf | Bin 9418 -> 9418 bytes .../biomechanics-14.pdf | Bin 10592 -> 10592 bytes .../plotting-24.png | Bin 8380 -> 8373 bytes .../solve-ode-1.pdf | Bin 12676 -> 12676 bytes .../beam-4.pdf | Bin 9980 -> 9980 bytes .../plotting-10.pdf | Bin 10929 -> 10929 bytes .../biomechanics-34.pdf | Bin 21707 -> 21707 bytes .../plotting-35.pdf | Bin 268829 -> 268829 bytes .../control_plots-6.pdf | Bin 16381 -> 16518 bytes .../matrices-16.pdf | Bin 287795 -> 287795 bytes .../generate_plots_q3_5_1.pdf | Bin 16619 -> 16619 bytes .../plotting-30.pdf | Bin 26025 -> 25543 bytes .../beam-3.pdf | Bin 12558 -> 12558 bytes .../matrices-20.pdf | Bin 287795 -> 287795 bytes .../matrices-11.pdf | Bin 287795 -> 287795 bytes .../plotting-32_02.pdf | Bin 8844 -> 8844 bytes .../plotting-34.pdf | Bin 266943 -> 266943 bytes .../beam-18.pdf | Bin 12679 -> 12679 bytes .../plotting-9.pdf | Bin 8488 -> 8488 bytes .../beam_problems-11_01.pdf | Bin 9825 -> 9825 bytes .../biomechanical-model-example-38.pdf | Bin 25377 -> 25377 bytes .../control_plots-3.pdf | Bin 14484 -> 14484 bytes .../matrices-9.pdf | Bin 271975 -> 271975 bytes .../generate_plots_q5.pdf | Bin 16471 -> 16471 bytes .../plotting-22.pdf | Bin 217185 -> 217185 bytes .../plotting-29.png | Bin 6906 -> 6906 bytes .../plotting-7.png | Bin 17867 -> 17965 bytes .../beam-22.pdf | Bin 15306 -> 15306 bytes .../plotting-30.hires.png | Bin 25669 -> 25733 bytes .../matrices-14.pdf | Bin 271975 -> 271975 bytes .../beam-7.pdf | Bin 18087 -> 18087 bytes .../matrices-7.pdf | Bin 245622 -> 245622 bytes .../beam-6.pdf | Bin 9454 -> 9454 bytes .../plotting-32_03.pdf | Bin 269843 -> 269843 bytes .../matrices-1.pdf | Bin 287795 -> 287795 bytes .../plotting-24.hires.png | Bin 26955 -> 26941 bytes .../plotting-5.pdf | Bin 9297 -> 9297 bytes .../matrices-3.pdf | Bin 288227 -> 288227 bytes .../plotting-25.pdf | Bin 39830 -> 39757 bytes .../matrices-5.pdf | Bin 287795 -> 287795 bytes .../beam-9.pdf | Bin 11823 -> 11823 bytes .../matrices-23.pdf | Bin 288227 -> 288227 bytes .../fourier-1.pdf | Bin 15170 -> 15170 bytes .../fourier-2.pdf | Bin 23875 -> 23875 bytes .../plotting-37.pdf | Bin 11266 -> 11266 bytes .../beam-10.pdf | Bin 11837 -> 11837 bytes .../plotting-24.pdf | Bin 31847 -> 31887 bytes .../biomechanics-13.pdf | Bin 12385 -> 12385 bytes .../truss-1.pdf | Bin 3368 -> 3368 bytes .../control_plots-6.hires.png | Bin 70626 -> 70520 bytes .../plotting-36.pdf | Bin 11266 -> 11266 bytes .../plotting-31_01.pdf | Bin 20255 -> 20499 bytes .../plotting-31_00.pdf | Bin 20525 -> 20542 bytes dev/_images/control_plots-6.png | Bin 22649 -> 22753 bytes dev/_images/plotting-24.png | Bin 8380 -> 8373 bytes dev/_images/plotting-25.png | Bin 10122 -> 10115 bytes dev/_images/plotting-26.png | Bin 9371 -> 9343 bytes dev/_images/plotting-29.png | Bin 6906 -> 6906 bytes dev/_images/plotting-30.png | Bin 8763 -> 8718 bytes dev/_images/plotting-7.png | Bin 17867 -> 17965 bytes dev/explanation/gotchas.html | 2 +- dev/modules/algebras.html | 66 +- dev/modules/assumptions/ask.html | 8 +- dev/modules/assumptions/assume.html | 18 +- dev/modules/assumptions/index.html | 12 +- dev/modules/assumptions/predicates.html | 84 +- dev/modules/assumptions/refine.html | 18 +- dev/modules/calculus/index.html | 40 +- dev/modules/categories.html | 36 +- dev/modules/codegen.html | 234 ++-- dev/modules/combinatorics/galois.html | 42 +- dev/modules/combinatorics/graycode.html | 20 +- .../combinatorics/group_constructs.html | 2 +- dev/modules/combinatorics/group_numbers.html | 8 +- dev/modules/combinatorics/named_groups.html | 10 +- dev/modules/combinatorics/partitions.html | 26 +- dev/modules/combinatorics/perm_groups.html | 134 +- dev/modules/combinatorics/permutations.html | 98 +- dev/modules/combinatorics/polyhedron.html | 6 +- dev/modules/combinatorics/prufer.html | 16 +- dev/modules/combinatorics/subsets.html | 30 +- dev/modules/combinatorics/tensor_can.html | 8 +- dev/modules/combinatorics/testutil.html | 10 +- dev/modules/combinatorics/util.html | 16 +- dev/modules/concrete.html | 38 +- dev/modules/core.html | 500 +++---- dev/modules/crypto.html | 102 +- dev/modules/diffgeom.html | 78 +- dev/modules/discrete.html | 30 +- dev/modules/functions/combinatorial.html | 66 +- dev/modules/functions/elementary.html | 186 +-- dev/modules/functions/index.html | 6 +- dev/modules/functions/special.html | 200 +-- dev/modules/geometry/curves.html | 12 +- dev/modules/geometry/ellipses.html | 48 +- dev/modules/geometry/entities.html | 18 +- dev/modules/geometry/lines.html | 90 +- dev/modules/geometry/plane.html | 36 +- dev/modules/geometry/points.html | 54 +- dev/modules/geometry/polygons.html | 52 +- dev/modules/geometry/utils.html | 10 +- dev/modules/holonomic/convert.html | 6 +- dev/modules/holonomic/internal.html | 4 +- dev/modules/holonomic/operations.html | 18 +- dev/modules/holonomic/represent.html | 10 +- dev/modules/integrals/g-functions.html | 78 +- dev/modules/integrals/integrals.html | 122 +- dev/modules/interactive.html | 14 +- dev/modules/liealgebras/index.html | 164 +-- dev/modules/logic.html | 90 +- dev/modules/matrices/dense.html | 22 +- dev/modules/matrices/expressions.html | 64 +- dev/modules/matrices/immutablematrices.html | 4 +- dev/modules/matrices/kind.html | 2 +- dev/modules/matrices/matrices.html | 368 +++--- dev/modules/matrices/normalforms.html | 4 +- dev/modules/matrices/sparse.html | 6 +- dev/modules/matrices/sparsetools.html | 6 +- dev/modules/ntheory.html | 208 +-- dev/modules/parsing.html | 58 +- .../physics/biomechanics/api/activation.html | 18 +- .../physics/biomechanics/api/curve.html | 86 +- .../biomechanics/api/musculotendon.html | 12 +- .../physics/continuum_mechanics/beam.html | 110 +- .../physics/continuum_mechanics/cable.html | 18 +- .../physics/continuum_mechanics/truss.html | 26 +- .../physics/control/control_plots.html | 30 +- dev/modules/physics/control/lti.html | 96 +- dev/modules/physics/hep/index.html | 8 +- dev/modules/physics/hydrogen.html | 8 +- dev/modules/physics/matrices.html | 8 +- .../physics/mechanics/api/actuator.html | 22 +- .../mechanics/api/deprecated_classes.html | 30 +- .../physics/mechanics/api/expr_manip.html | 4 +- dev/modules/physics/mechanics/api/joint.html | 14 +- .../physics/mechanics/api/kane_lagrange.html | 24 +- .../physics/mechanics/api/linearize.html | 6 +- .../physics/mechanics/api/part_bod.html | 46 +- .../physics/mechanics/api/pathway.html | 16 +- dev/modules/physics/mechanics/api/system.html | 44 +- .../mechanics/api/wrapping_geometry.html | 24 +- dev/modules/physics/optics/gaussopt.html | 32 +- dev/modules/physics/optics/medium.html | 2 +- dev/modules/physics/optics/polarization.html | 22 +- dev/modules/physics/optics/utils.html | 20 +- dev/modules/physics/optics/waves.html | 2 +- dev/modules/physics/paulialgebra.html | 2 +- dev/modules/physics/qho_1d.html | 6 +- .../physics/quantum/anticommutator.html | 4 +- dev/modules/physics/quantum/cartesian.html | 22 +- dev/modules/physics/quantum/cg.html | 10 +- dev/modules/physics/quantum/circuitplot.html | 26 +- dev/modules/physics/quantum/commutator.html | 4 +- dev/modules/physics/quantum/constants.html | 2 +- dev/modules/physics/quantum/dagger.html | 2 +- dev/modules/physics/quantum/gate.html | 68 +- dev/modules/physics/quantum/grover.html | 10 +- dev/modules/physics/quantum/hilbert.html | 18 +- dev/modules/physics/quantum/innerproduct.html | 2 +- dev/modules/physics/quantum/operator.html | 12 +- dev/modules/physics/quantum/operatorset.html | 4 +- dev/modules/physics/quantum/piab.html | 6 +- dev/modules/physics/quantum/qapply.html | 2 +- dev/modules/physics/quantum/qft.html | 12 +- dev/modules/physics/quantum/qubit.html | 22 +- dev/modules/physics/quantum/represent.html | 12 +- dev/modules/physics/quantum/shor.html | 6 +- dev/modules/physics/quantum/spin.html | 40 +- dev/modules/physics/quantum/state.html | 32 +- .../physics/quantum/tensorproduct.html | 4 +- dev/modules/physics/secondquant.html | 106 +- dev/modules/physics/sho.html | 4 +- dev/modules/physics/units/dimensions.html | 14 +- dev/modules/physics/units/prefixes.html | 2 +- dev/modules/physics/units/quantities.html | 8 +- dev/modules/physics/units/unitsystem.html | 6 +- dev/modules/physics/vector/api/classes.html | 92 +- .../physics/vector/api/fieldfunctions.html | 14 +- dev/modules/physics/vector/api/functions.html | 12 +- .../physics/vector/api/kinematics.html | 32 +- dev/modules/physics/vector/api/printing.html | 8 +- dev/modules/physics/wigner.html | 20 +- dev/modules/plotting.html | 74 +- dev/modules/polys/agca.html | 180 +-- dev/modules/polys/domainmatrix.html | 500 +++---- dev/modules/polys/domainsref.html | 1156 ++++++++--------- dev/modules/polys/internals.html | 600 ++++----- dev/modules/polys/numberfields.html | 194 +-- dev/modules/polys/reference.html | 530 ++++---- dev/modules/polys/ringseries.html | 70 +- dev/modules/polys/solvers.html | 10 +- dev/modules/printing.html | 212 +-- dev/modules/rewriting.html | 2 +- dev/modules/series/formal.html | 44 +- dev/modules/series/fourier.html | 16 +- dev/modules/series/limitseq.html | 6 +- dev/modules/series/sequences.html | 32 +- dev/modules/series/series.html | 50 +- dev/modules/sets.html | 110 +- dev/modules/simplify/fu.html | 50 +- dev/modules/simplify/simplify.html | 64 +- dev/modules/solvers/diophantine.html | 102 +- dev/modules/solvers/inequalities.html | 16 +- dev/modules/solvers/ode.html | 158 +-- dev/modules/solvers/pde.html | 18 +- dev/modules/solvers/solvers.html | 44 +- dev/modules/solvers/solveset.html | 30 +- dev/modules/stats.html | 292 ++--- dev/modules/tensor/array.html | 18 +- dev/modules/tensor/array_expressions.html | 8 +- dev/modules/tensor/index_methods.html | 4 +- dev/modules/tensor/indexed.html | 6 +- dev/modules/tensor/tensor.html | 72 +- dev/modules/tensor/toperators.html | 2 +- dev/modules/testing/pytest.html | 12 +- dev/modules/testing/runtests.html | 36 +- dev/modules/utilities/autowrap.html | 20 +- dev/modules/utilities/codegen.html | 60 +- dev/modules/utilities/decorator.html | 18 +- dev/modules/utilities/enumerative.html | 18 +- dev/modules/utilities/exceptions.html | 6 +- dev/modules/utilities/iterables.html | 110 +- dev/modules/utilities/lambdify.html | 6 +- dev/modules/utilities/memoization.html | 4 +- dev/modules/utilities/misc.html | 24 +- dev/modules/utilities/source.html | 4 +- dev/modules/utilities/timeutils.html | 2 +- dev/modules/vector/api/classes.html | 74 +- dev/modules/vector/api/orienterclasses.html | 22 +- dev/modules/vector/api/vectorfunctions.html | 20 +- 297 files changed, 5099 insertions(+), 5099 deletions(-) diff --git a/dev/_downloads/0130acc9674ca6615e762dac32f6f525/matrices-10.pdf b/dev/_downloads/0130acc9674ca6615e762dac32f6f525/matrices-10.pdf index 83b1b9bc248c85de38eccb33e46c4f83b9598322..9608f124264bc4081393c0fc907f708a0c4d9355 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%;tus+a(iOq?iGYx(G}F delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%m$_=+a(iOq?iGYln6)w diff --git a/dev/_downloads/0249fb66c2fcb06b78bd6a84135be88a/beam-2.pdf b/dev/_downloads/0249fb66c2fcb06b78bd6a84135be88a/beam-2.pdf index c183485e09879a2041e3060a618798d43db29207..08d47aa2f0bd7360e4cc4ed58d6f868857c9b626 100644 GIT binary patch delta 16 Xcmewo{3Uopry8?`iNWR`wG3teK(+>5 delta 16 Xcmewo{3Uopry8@7k@4mpwG3teK#B%f diff --git a/dev/_downloads/02f5470280a542a7c80635a082cb7e09/beam-23.pdf b/dev/_downloads/02f5470280a542a7c80635a082cb7e09/beam-23.pdf index 9500e8be3a20a6899af79eb773c9fa6d49ff954f..33f659c9d2569ed2ffcc99e0383f37482a50f2ed 100644 GIT binary patch delta 16 XcmeyC{VjXLKSO2uvROaM4f1)Kl? delta 18 ZcmbR0HPvf_f)cBdsfmHXW>uvROaM4%1)Tr@ diff --git a/dev/_downloads/0680199b4e61bc189fceb4418aa72812/control_plots-4.pdf b/dev/_downloads/0680199b4e61bc189fceb4418aa72812/control_plots-4.pdf index 6ee66795f4ec4d609e5813e31e4ee52483fa8c17..6eb1b4368f282bd98c10383843f301ba8038b77b 100644 GIT binary patch delta 16 XcmX?6d!lxOffci*f$?TztEnsiJWK`s delta 16 XcmX?6d!lxOffciniP>gjtEnsiJVFKi diff --git a/dev/_downloads/077b659bec1d5c2fd531dbd0f7e15f0f/beam_problems-13_00.pdf b/dev/_downloads/077b659bec1d5c2fd531dbd0f7e15f0f/beam_problems-13_00.pdf index 6f2e18acaede6ea3c121f737521ebbcaaa77ead6..f3f8132d2faf4c33fdd73266d760c91763a47b17 100644 GIT binary patch delta 16 XcmZpSY>eEXsmW|%YQ9-VGn5$sE_MXI delta 16 XcmZpSY>eEXsmW|)Y`IxSGn5$sE<^;l diff --git a/dev/_downloads/0a5b397c3adc07987864b0441654dc1c/beam-1.pdf b/dev/_downloads/0a5b397c3adc07987864b0441654dc1c/beam-1.pdf index 22716d5321eafea7d16c60e1438c32ab297e802d..dca992272af512a1dcb22e8d1a267e63c906009f 100644 GIT binary patch delta 10293 zcmZX3c|26zAAh9=CFYK@Z*z^UlC0Tf92ufakt`v5vXrfmrm}P=O9q)NDbuDYWRFB4 z5t5KKo*trz79nfDGku@u_xk>RUw@c8XU@6zp7S}M&wDu+rbS|=Mb5{pjae7N6|+8O zLn-bx7uPleTV@9rPJL|>bHjSv{sUF^<18-q6(NVl?5fyw)o}l#AKSRrbr!*f>U*%E z-iJHxhmgbA)t#GBHuqI*ard@{hxe6`kC~;x2vzw8UGbhE)xZ;^y`FoRi*04H*5mZn z-enH0$BEEB`xQK@p4dR{)=RbaNw%J~C)vbH5q|htjyD>l`3{U-iaVkU+Nz{nDmWu85qoM3emoeXureGxE*NIUDmMRXJ6_`v= zG6yE>G8Y`iW)6mu1VqT7dl}dm;E`r$K(ez_ zYQggEVxX&#xNFP?Wv9NKGY4*27~7r1${a=*P6lU`cVm?G&9OobdxLUAuQF&(K9}k& zNx}}^qRp}Cwy;r>va|Gc@yr^Npj^+Z3@4wLk1s2xY|1am<|A@`QR7@EjFMZn$yUDM z&$%^L6|c(G9QzIq{lKFf*tpA^eqpo@agb+K3DbSd@ziP4Lzp5Hp;|HNdFfTaW?o%@ zM}hUz9B7UasEIVDUyTGQC9}c=%X6tVZmo>QCNe7hh^&mgKy#}MOEezydL&f#4BqYo zJ#U!XtyLAv%Q<%~1!$OJiscCPp$v;sZl%0LSGaNXtt2htW<1AZ-kHq*m@pYJgVL(kwx)!&CNe|9i(8EF<7G%&=A^}-~==d!YN#E zZ@uPma75Bdj&*E5a3>*~-vf=GRs6gtdmZRf8Oz0X%A#$qSmkn%BGT=4frfP{Aor(Q z4x{Wz*Xa4BiwR0gmx)|*5rRlV+Erk4LIh3GKvSC66=4)IJx?qZW6Q!=mV7&}icz}g zd4~@J(#28oCS{|-($I7mu3S%&aQ_8P3ycrBCAFLrCK%u2Fuu1+t3|mc-Au7P%g~|r5@@r zeCR7lVAJA`zLEoJ&3Btbfz5%P$gFsA!e2x30Ti-@R!0q0pDoMNFH+$Q{rLKFT2mP!E`M<0`E3r{9a-f_mtErr8piJr#f#Li# z-R)j`ANy67Fxp#PEZHkpEZIIq6S<-cNWHF)Bzs>KO7^OM)h-Bj6@DD%`lKw()xBiI z8ci8Le6++fo#Cjh+mdDGnsqPC)#y%`<=$uf##7G@>rXwqyL;-{wA#yD{WVK>O1Z>S zOSv4+OK=BmQZD(zQ}igZ;gn3p8?}}u<Yd`1ob(UKjfFR*X_H&BR2ywK zDaNCCGsH^Iu_mZdFLWE;rA6UC#BRVCsCbuinig5fZQP zZ~n@Lb-^#2*S;AJ(wHgErJR971kuPD9%aFfv#%N@9qB$~o_xt|`jJ0XIWUE6k_;pl<$h{1;0-?!4PV_c zq(*Bo26fUA1G#{-JXIW;UKsqN=W!T}m@X$`uVKWLA1t>jmnII9CwIvH)67*F`_5jg zzqPBp0Ct$#6Y!_KPoP_tcI;d7fK@?&1uo^9FTUOA}Na^zY$*Y;=W_F7WU zG_4+NQz1BH->qn+6{lJU9Nw-|f8wP~?&$41p6RJEg!*q(d->eaXK#yN#mA&Xc~0&q zDN8x^^ge;G|7y?@y zVSzFSAw7Cy@~mso*rKCX<4+Rnq>m;7p;(x1$Kq&=;+X#o|PfM0g!SLpoM& z^Q)q4WB7WLQTI&flumm$dE~es%3g}Yx}vcHeqe=BEopwaV!QBF_7#8Lva91oq5ONROUZ%fk^wG;>>Mn_6KTd z|Ba|BQaAq>VokB3ojFMve%V{Iy7RmhMLJamlAV0GQ#L7=`hijnEbrZ?9YhOInTQ2h zp|1u(n%__+OOU#kKvg!OD@Hk~?l|-82uL%*6uU7+PXc20qx>p17KHkS3p8X0(*&Ed zqr-lM5)Po5JAsBj9#IgO|!=Fh&BoRe26p)Nf$f@amHJBE6<1vRfajGvMqd8pK zgR+X!u)VrSq7EH9G*QmI-Fb#J$+Hg?lLs1c&%0z;zDH3p7PvitVS+2^wnO0deb6;w zw1Z#{CbEcU@zlgG;I=HCatV+0NSk?OU>+){FBPRVJZvPgCZ5~71)yxHY>brMCYSS2 zIP1wTMsk7-u_JUVl}KcG2j$vwz}5C2aBbNEQB|!amAI}sHcWmOqXeUy{Nl`y+`J9iJT#u8{f=9}Z+r`tCs+>-2B>kCRr zSl-8iY<@YGQygA19qu|$$X*H5I6=g2(9AOfoA8on9sb~EX@y#BO~=c!GK=xld!CM|%cD0ez`3&1M31E^ ze`m_3>Y^qdG{`E>n#gi^iZG@iVT#ATRBhgoi23bDec$Ue^2xCr^d7~?ArSg8KR#4# zGg`HH6B0QeKUr3hJkp(Ki2&KF+?M0!kZ-X*WMOdvTFgK^&W<+H)N7~ND1%n&8Zt;I z0tt){Brvk2%b=_3RlFR5b6p({;M!Ncf@>drm&jREc=hk{ho*CJKTI4Y>%nBX4wwHQ zg6qtu3gh@+4IIWBJ@;*rlnJS+7@{l+8oJI*GEEVj4jvM&#;xezUwJtD<*tr6GYP>7 zuT5m$MQ{ciyQlVnW!1c?Q?|@01b3J=CYEXUbW1uP;jJXeCTcD3X99t({_VVuImMlk z9G7C9L24Klb+ip%`Y1x`>aT|kpS*3IHsR%HLkqrclhYjQlkw3z=!13v*Slc1;iR*31yk4BN9#`Mr*4|!ai{Un z{o5eY4yXQ;T>*c5`Q36SnA~BMy6IF%`ut6kBj}Ch*gs^VLA~;%1gB%KR`-3YICxoi zijQz)qPi=Bedat5@=*$;Z9kIOY6^aNKAk!a(p2er-Q}X4Fm;dJGmuB_1fUj@Ank7u zBfU(6JVv8Oh9$JttW`%CX}iCx9`jiwv5xncs7+Oge-|SUM3j9^TOyBcBj{myRgI>O znBrSZ(F;#)Kv|F5KkNm^QZWbB>#COs)Y;x0L~~HH8(EM7qua5j@XtA9V3>&M%OjO4 zDEm|l_ccMr6?0IKg*kC&wX2}zGZJAuNLh`(n*$E%ZadRQ210wmSSr>kg!F~pVh#%8 zq$CDT#}GPB%Cdw;yctFGJb5m@-2K2LCGl2di5OF83vLgs*g0s{*v$f{Wn&ThHZ-PL zku-B7d(FHS!c&AC&dCcWjbu1saN~)(JIno@;iR1e3xnjU<<8Q27@n{MtCzq7mkoa+nsg-{@mn8JFlaSeiS4W{TsS8T<2RP1Qw z`B@nGDi-l_>z41=fz75G(?~qS8_#Gbp*P6j%(!||s~S?Nj7}uFiUf-wwt+2#VtSJ) zy{WvU(ob&ElgCwu(&Uw#`~oFzBIY_s%&f^GdBE+zS&n!}fmlrxhxGH0iar{Q5B5lT zL&-JZ=1t@wh}BSh9w*~z&V&AumISuF0Pn1qVS>_ra+Tm%zu%^#(F)ysC_5kt`=)zp z;25|q1-cyhiZCVQ^I!R0J*JoZ(1TQzJ;cPmr3Xt~^+ef@SFnh2*~SDC%6p7=H%frG zd{r4~wnigr&c443s|K4>HDIks|5K{dQ@KeHP__OD+yB&d`18odWAHzxtmm_#;^kD5 z49`pNPb;_;#QyopNg`GGLMA4JliyGtI5rl`ED^%#u6@g#7Q#ua)naZE#t~`Vbrpit zd_Q{LZogn%9J0W7jR8i9U^D>O9I{7$Jn%oOh*XLpvsyulZjpive^X4V`csp~Nblgo zy={-^O*=it%)uBLJbfbRo+N{Iz96uHha0e2kwOy7=sw@}i+u(fUIeNE05-z=L47oL zFUmRwC5#Bt{Urh8Y7C8L76{`WDQrI)$AKReXY)W>^EHSy9(B_?^DGm3-n%+rQz3?Y z;Hq{PILwR{fdx3&lr%Z}3oBNZCT$TS*|aP3zQ7YUYD&qZ#++3l{KzMbwwUt_hm{*t zxFi{qpAK(#k4Q;=@}}IFY;`6{N!7E{o*IY z3sNKS40{4%7~>x)f@DC?W9;z`)B?DRlYd^$PO6TeePLLDvPBv6>u5gd8;s-2-fXLv1ITd_HdGV0S9_V?5RN0v56!xxW*w>uL3m zhcKFo<(<|J(@n!j*XOcNsFpSRKeMfCp) z{rFm_s~>QDkEByuRUxE!>4>`hH~Rml@0p~se=+AUM|77|i^^upN&LAAkNFp;UaQIG z;X4R0N!1`zn}-(3kMkiYTj46ErUik~`T1D={F1*Thgc4EW~pjoc>&oiLMWR*1{=!+ z8o>zSv7tX_KiF^`i+FIV@uxB9TsKC6Ns@>``fJ6DUhI8dbQNB|S+ z+5hD22fLA&_ub42F&ujAaLHH=7)=MG@=!G687IE2u?IHpf=HhhS_~<6!MhUZA#K%# zTXQbqb5@V9p-+~Jf~Yyrf}A4C3WOO;Mj{=(aHokP-6rrO0Gd>q$$}lFly}A?)c_9)lr-4!A=oC|oQjRdbJx_B2BuFjS((|UpQNpnPGj62YF9Gu) zAnlk%p4ZS?WJXHH*=n4-HDDlcrj+onWRy%tI?^ED=5WU*@)t^UoIDV zcGhyf1Ld6EtT~J3-Zv*7iY@0Oux%0Et;U4Qa-{V|x68*#xtJ*#u^?*-pt+A?bfCxg z&bP;06H_G7c?kPE)LQm}nv0me@SoH>D`wIF_a&LYc(R$m$Pz@-?)=@fLy-EOStNnm z?!@%X)ZY_}`98M-?r`Q)mf+0?U%f=EF&k*OAssxBJt=pVn*(=0RLmXUVXc5RMN2wj zd55dO?d@2e*DB<=yY3;>L?*DgilU)%D3)GkkTUh4DxApFmc)hAdPPp4m2dvcda+tO+B`$6UYdoVs@h5!hTIBAz(J`0iJzm_+x2 R2hW+69D||g&QL|55 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%0AN4kX)o4nZmNqujcTrgUrvE_O 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 diff --git a/dev/_downloads/0c7c1262b6b611b1944eed12f33413fe/beam-5.pdf b/dev/_downloads/0c7c1262b6b611b1944eed12f33413fe/beam-5.pdf index 25bb8be126677d4e8d35b889cd5f78a282c10f1b..2cbcfe63ec291a0d35b8f39e6ca83ac496762a50 100644 GIT binary patch delta 16 XcmX?^cQS7SqcO9EiP2^jV^s^ki88LXHM| delta 16 XcmcbedOLN)ZarorW0TGM^ki88LShDX diff --git a/dev/_downloads/0efc8f797e345bcc903c8f4dab4a5322/plotting-4.pdf b/dev/_downloads/0efc8f797e345bcc903c8f4dab4a5322/plotting-4.pdf index 882fb018ba99ffbe7cfa7b34ec61c8db1525d12d..a285bd44808e31906ffb33b3628fc42c22e36145 100644 GIT binary patch delta 16 XcmezF`rUPdgaWgrq1k3>g*!|DIhh5} delta 16 XcmezF`rUPdgaWgXspV#Ag*!|DIgbU< diff --git a/dev/_downloads/0ffd2a0f4570e502b64ad8529258801f/plotting-17.pdf b/dev/_downloads/0ffd2a0f4570e502b64ad8529258801f/plotting-17.pdf index 87031b57b851e8338814c5a48a5268154cbc9666..ea6d77a3f40347a754fd4b70773b3993987bfbcd 100644 GIT binary patch delta 35 qcmdn`OJVCTg@zW!7N!>F7M2#)7Pc1lEgTY7%$BC6+oi2Iq?iHk_zJuL delta 35 qcmdn`OJVCTg@zW!7N!>F7M2#)7Pc1lEgTY7%*Mu++oi2Iq?iHk&I-5y diff --git a/dev/_downloads/1362531cda049d5b7f4db4abe11d4178/plotting-6.pdf b/dev/_downloads/1362531cda049d5b7f4db4abe11d4178/plotting-6.pdf index 5941abf6f7a2ed53f8a4f4d0b8002e73ef370441..51f092c6c2bab6eafeb1cefdb02b8faf2a7106f1 100644 GIT binary patch delta 16 XcmbR0HPvf_k`l9}q4{Q2r4LL1FNXy~ delta 16 XcmbR0HPvf_k`lAAfx%`~r4LL1FD3;w diff --git a/dev/_downloads/14bd882358332276f28c2e3ace8343d5/control_plots-5.pdf b/dev/_downloads/14bd882358332276f28c2e3ace8343d5/control_plots-5.pdf index 0e0b9bedb88f97ece6d05dc8239add7c4a454a8b..9b7c28c480237e18526f8f67722cd1e83df3b195 100644 GIT binary patch delta 16 YcmaD}_q=Yyaw}#_1LMuBtoE`107p{?Qvd(} delta 16 YcmaD}_q=Yyaw}#d6SK{$toE`107pp&Qvd(} diff --git a/dev/_downloads/16c046e4f150f3aca5fb6bd438b952ce/matrices-24.pdf b/dev/_downloads/16c046e4f150f3aca5fb6bd438b952ce/matrices-24.pdf index 4a4cc384a48808a21b81fef3a99798b5809f38f2..9726a3ce6e1de6c12c757c7039139f6e31ec6c5e 100644 GIT binary patch delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%oau#+f|iWoR|TZO9+Di delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%tnTW+f|iWoR|TY+z535 diff --git a/dev/_downloads/16f8dba9abaa041f16c4636d6e41a0ac/matrices-25.pdf b/dev/_downloads/16f8dba9abaa041f16c4636d6e41a0ac/matrices-25.pdf index ec6d703a88c1d25fe6c8356f69793ec251e46d6f..22c765c080d945a25ac31a0a7807a263b48ea32a 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%ofJR+a(iOq?iGY#RyFR delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%tnT$+a(iOq?iGYjR;2o diff --git a/dev/_downloads/1a31ae7f3ddd6165062befbddb76e6ca/generate_plots_q3_3.pdf b/dev/_downloads/1a31ae7f3ddd6165062befbddb76e6ca/generate_plots_q3_3.pdf index 2ffb033dcd0c2ea554fabdef0eb0fde8b5541fc9..ab8a72ad284a0b271abede587210936e28228c89 100644 GIT binary patch delta 18 ZcmaD?{jPe0ge9x7fuW(rW?9RNEC5RC2DAVG delta 18 ZcmaD?{jPe0ge9wysi}d8J~06R*ES13 delta 35 rcmeBLuF$nyp`nGbg{g(Pg{6hHg{_5s3&&IeW@97c?K1>8J~06R*3Jtu diff --git a/dev/_downloads/2019cb6b524d1d6351bac9c894de42dd/plotting-26.hires.png b/dev/_downloads/2019cb6b524d1d6351bac9c894de42dd/plotting-26.hires.png index de23358e86ac9652d96bba2f4fad51e3266ced6e..8edbfcc7142665e9b8e009e86db82e4fb169bbc2 100644 GIT binary patch literal 30763 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 V`&&n*ts<9!Zov3C{U?Vr{{`5A$hQCh literal 30776 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 diff --git a/dev/_downloads/2082eb4d6b0c42668444836c10a5a149/beam_problems-14.pdf b/dev/_downloads/2082eb4d6b0c42668444836c10a5a149/beam_problems-14.pdf index 596ba470d80945837d4cecfc3c9ecebc600517ef..0acced84728743463d97b072726f982f7048d683 100644 GIT binary patch delta 18 acmaFa!uYa0AqRN? delta 18 acmaFa!uYa0{R$~K0L(9#dtbeiq0A550lK=n! delta 20 ccmaFe$oRUEal>0{RwGkW1Jli)tbeiq0A6SamH+?% diff --git a/dev/_downloads/2608cc95ac952e335ca0ce8cea458c1b/matrices-22.pdf b/dev/_downloads/2608cc95ac952e335ca0ce8cea458c1b/matrices-22.pdf index e35c8d8f19c4f24a8a2326ed485e85ef8affb13c..116b84fa06af5a2d527180c074b3940346ee6f12 100644 GIT binary patch delta 25 hcmezNkMG+*zJ?aY7N#xChI^PT49&Nj>|u6d1^}7H3B~{b delta 25 hcmezNkMG+*zJ?aY7N#xChI^O|O)a;Z>|u6d1^}703B>>a diff --git a/dev/_downloads/2667a5fcc739d282a7512f6b7b39071a/matrices-4.pdf b/dev/_downloads/2667a5fcc739d282a7512f6b7b39071a/matrices-4.pdf index f2e42b16192b63189af26ec81efe17f7df81689d..f98dc5e324217431137cf8a704908f4c572c6c64 100644 GIT binary patch delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%w{Gg+f|iWoR|TZEeL-A delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%mzkA+f|iWoR|TY*$8z2 diff --git a/dev/_downloads/26aeb23613c82467dc9ad9bdc328ab32/plotting-32_00.pdf b/dev/_downloads/26aeb23613c82467dc9ad9bdc328ab32/plotting-32_00.pdf index 9040b06175b4096fd3238e9a292b5b9ee58af009..9dc7015e8c7e727b5521ad52b2ac022b39911dee 100644 GIT binary patch delta 18 ZcmccUanWN#fg-E1fq|jf=2FEwOaMh72ATi> delta 18 ZcmccUanWN#fg-DssfmHX=2FEwOaMhV2Aco? diff --git a/dev/_downloads/295bb235d3caa42841a5fbfa905580df/beam_problems-18.pdf b/dev/_downloads/295bb235d3caa42841a5fbfa905580df/beam_problems-18.pdf index 5d4614026faea1cfa1c351b81936ccce8cfc9b03..4c20027f4aa11f2ccc2f464befce8d3249b2e10a 100644 GIT binary patch delta 16 XcmZnXNIApYlHN0c&Mr<5e!6SD+8- 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 z%0D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 literal 129327 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
  • yhh8Z52!csbC%!_ITQb?&Ly$MYq{*m$v!F#B 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 Ag#Z8m diff --git a/dev/_downloads/2f44ee19ebd4c314ad1c408629357c53/plotting-1.pdf b/dev/_downloads/2f44ee19ebd4c314ad1c408629357c53/plotting-1.pdf index a5545174c79e7a459e3770c6175fe304122d36cd..0c4d9fa41227cac509d0265edc89cecdb2b14d85 100644 GIT binary patch delta 16 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 diff --git a/dev/_downloads/3319e145d33fb7c15b85dd93189e26e2/control_plots-2.pdf b/dev/_downloads/3319e145d33fb7c15b85dd93189e26e2/control_plots-2.pdf index 308a7e0e4e7698fe0b628b7c4a831d98147d6d91..5effe1a73529a9d980c6ab6a66f7ec17b0406641 100644 GIT binary patch delta 18 acmdlrgK^gk#tpaJm@N&AHs5uNWd#6B&Ie5Z delta 18 acmdlrgK^gk#tpaJn2k(KH{W%OWd#6B#0O0P diff --git a/dev/_downloads/33391c644ccb248b4c17deb758dc2301/control_plots-1.pdf b/dev/_downloads/33391c644ccb248b4c17deb758dc2301/control_plots-1.pdf index abe9116e2c3442d57f96f01d5a6d4b3fd036b739..1c453c0c484ca28d8df73d5e4fbf1e02bf57db3a 100644 GIT binary patch delta 16 YcmZ2ixvp}t<8 delta 16 YcmZ2ixvp}t<8 diff --git a/dev/_downloads/39dc203c3bf6e7485368c7a401448a6f/matrices-8.pdf b/dev/_downloads/39dc203c3bf6e7485368c7a401448a6f/matrices-8.pdf index 968c80eb28767c5e63f18b734115cfa9c1c4f879..60e84defe40d8805f722b1e204e5bd9cfd13d62b 100644 GIT binary patch delta 26 icmaESTJZ5{!G;#b7N!>FEiA{9n9L2fpGabnW(EM8ItkqX delta 26 icmaESTJZ5{!G;#b7N!>FEiA{9m<&v|pGabnW(EM89tqk2 diff --git a/dev/_downloads/3af3ee18448b7a687ef6594665f932f9/plotting-19.pdf b/dev/_downloads/3af3ee18448b7a687ef6594665f932f9/plotting-19.pdf index 189ee7feb691becbf7587a6060817016a1e7ef42..f544f63466313c015d754835fd6e51158ff2047a 100644 GIT binary patch delta 16 XcmZ4MwbpCHJSApJQ_IZ@m3o)}IQs?- delta 16 XcmZ4MwbpCHJSAph6XVSbm3o)}IG_dq diff --git a/dev/_downloads/3cd14c510b41514f1496a3155ea8cf2d/matrices-17.pdf b/dev/_downloads/3cd14c510b41514f1496a3155ea8cf2d/matrices-17.pdf index fe326a21584e3d1dd72a6390fb9f71eb3cde86d2..30e9c1510563f99b937a44000027d4e417e2f440 100644 GIT binary patch delta 24 gcmezNkMG+*zJ?aY7N#xChI^RIO}88GVRmK)0FbQ-kpKVy delta 24 gcmezNkMG+*zJ?aY7N#xChI^O{jkg=`VRmK)0FZA9i2wiq diff --git a/dev/_downloads/464f047ba3ef7f04429a4eb163a6a2de/matrices-18.pdf b/dev/_downloads/464f047ba3ef7f04429a4eb163a6a2de/matrices-18.pdf index e86135a87611f4c83a742ea25be299eb8a07fc1f..da935705bd48010459f4671a4515da4bf06442e0 100644 GIT binary patch delta 27 jcmaESTJZ5{!G;#b7N!>FEiA{9n9WVix1UU6kzxh_q{<2! delta 27 jcmaESTJZ5{!G;#b7N!>FEiA{9m<^3Bwx3L5kzxh_q>Bm@ diff --git a/dev/_downloads/4c9cbd846f69df68795ea4e2cdf667e9/plotting-33.pdf b/dev/_downloads/4c9cbd846f69df68795ea4e2cdf667e9/plotting-33.pdf index e8fcd4b48806120405258a84d150d0bc74126d65..f85aed09dd3df4981783b198d8a41bd3e02ac6ac 100644 GIT binary patch delta 18 ZcmZ1-wmNKsq6Vw6fq{|fW;G2~W&k@<1q1*9 delta 18 ZcmZ1-wmNKsq6VvxsfnS%W;G2~W&k^I1qJ{B diff --git a/dev/_downloads/4d0c9c96647fc2441757598f44d4936b/beam-20.pdf b/dev/_downloads/4d0c9c96647fc2441757598f44d4936b/beam-20.pdf index 0b808b1a23e0ec4852a6db0f5bc139bbc0b88dc3..1342d503af18a20c3f18ac9531ff76f5edba9374 100644 GIT binary patch delta 16 Xcmcasf31E)kTtV~so~~O>qZs;KpF;7 delta 16 Xcmcasf31E)kTtWBvGL|m>qZs;Kj;Qa diff --git a/dev/_downloads/4f691d69f2e82384c2ceae9f2ca04cdc/generate_plots_q3_4.pdf b/dev/_downloads/4f691d69f2e82384c2ceae9f2ca04cdc/generate_plots_q3_4.pdf index 125f461e8d140a88b7b846618a632d298f24d3b9..1cfe308c70b580ec5498a3312d2a3e915028e844 100644 GIT binary patch delta 18 acmX?5cc5;=GAmYN14Bd0&8w}ZvH$>1IR`-i delta 18 acmX?5cc5;=GAmXiQ&R(z&8w}ZvH$>1R|i7? diff --git a/dev/_downloads/4f8a4d280007c46440ecb7e279e1d3cb/plotting-25.hires.png b/dev/_downloads/4f8a4d280007c46440ecb7e279e1d3cb/plotting-25.hires.png index 64353c3ff51d8b7e91662b17a3ae01c29dab03af..89328de85b9bda6c9176d5a0fb62ff98519dbe7a 100644 GIT binary patch literal 32759 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 H>cam4bX{rp literal 32734 zcmeFZcU08b+BNtC1Kq~%Yep0UL4ssOB-*y2Bq}N*Ns%l;vPdf1Zf!w9tH@bV5CsuX zkc@hPE`lJSfJC7H$vLNQANt;R?#z6%X4d!Dyt9V2y0P1;UpVIp``OQa&Rs2y6Khv- zuc9bwE$!s5XDDg~{|jc%Uv|1?ZRccdX}rtD z)WOlx&Q@AXQbJ5ZbeDyb(>2G#;^H>{^$9UM2XpZNhYJq4%8%Dh>N--?&iCXW4%&0+3OK~O|AjwI;Ib{y6^Mx`P1j|%EUi&Ib9^rtJQ3EUz;)+ROdb|Ghr)Z zb(XIv>etw<*+<^_X2(nJEH={Ai z4>pJ{&UGno-@}cSe}vCjaBep87|xmLdC^_@=%~_E>#fvwimLoQgmVp5xxDOfZz7HH z;|76%h~*SL?l`ur@~>Qc*sU|voUu`agM+$sV;}aL`%#6`tY~un!i|r3-NZLvE{4ij zo?)jV=*LJvi)N88_{ymgR;B{v%+;o5b+(>3$YH3yM3IFJ^E_v4hg>wHLQYI%4JNJw+ z7j{wGIVwYhkWNgJY+X$My3UEuZqilIg-{ z@EsYB2J19++nnK|GO1Egx5*|~>0%zon)=C|hn>C$RR6w-PEnt)tdgKqHoWSN3m2d% z&5u<#x^+eJ$8%6ILc~*KI2^I*0qxk<_BsL_#YG%#to-Y z*>J5|T~=Mr&@9ySlo}_cq8&>%_%zm1>hk;Fc|FTAyQ0G72j1?brB?p3+7y?y{?h`U z_B&Z~{)^Y%tr%qqMw|HVPydViYU0CVn|1kY8q&)Jqdgd1(cVhli?c1#*IEnsSZk!q z9(c{qnC6auc~QM4j#@^Y4JV89>uRyLtukxJzt<#azswmaA%^Q5bp+O+Ws_904)zk! z4eFVe?Kq(X(=rHeKqK<7 zY0)-wHAJ=QH&<)>az;OHlenZ(|1*-+dn>D}SFe_?77)IQCB<>JBINkfK7-gIZ_c|DuJ1GW0n zqZP{Dd2=JB3L}5*m7DELleVsVHP+uCyFpN+>`kqqo`W$7tt9N6dX1nI?>g9AZ|u9j zD%G@fuu<8n=2>FiOpjatn_33n{OqJ=MU-N%%&n!EZnhpl`X5bRv;FlqdXw@q=2RK$ zb{uB+rBy^Z%y)*{**;qeyh|BH&%OUmJWoDuz%M|e{!-#_i1uEX4ru4SDD(qGDgU~Z zP{#*byi11vp(=WMDdz84%3~=kreN3WYK?FQPsB`QEJ>&DmAtv$Q$ydX=M}MXhY7yA zUq@m;N&mFe>CW(Yy$oCYZC=>WYD#7FthOG0TyUej7v75tx^}taQkGRuNIZ61nC_CE zY;@F|B>671vv}P$DZa?V&S3-j%P4wL=_2Q!h%yv|Gq zZ+zP9zwKW+F?uW)&oa04EMR)gpkwG}da%i}t*433so#;SB$V^rY-T18rv6LA@qVWr~W6CSI}}AS7pQWNb0> z4zI>Kc~Jm`tkMw}9`E3*qf#H%IFEW3`>7xIQya)}oLTIxz!Pw{!l(q>;N#>d<=@_f@rd z_i`C+hwqP^gZty3Cvy(P-{^nCp6QM6PuXG^lKAF)Dx0A^7c%}u^~OYExHVAkL%d?E zdxW_!LHKU8as(zCwQtt#lYFWym@P^8Q*llJx8ke|Fu zq3zEs#XxQx zW{be!%M?b}uiux+W|(vY_R4OjRE|n6Urs#>5YJaTes5~R2GBOb)iA}iSynydL0{HY zhoN^Zi@9bYj|Ns6Yxy19JiXAswO+&P`<0;sUrxdWEXVKblo-wD-x&L3;wP7v=UKEZ ze|B*d9*xu~7FAJRGYuj+N>edg6H{h-TEwoM*X4&p-ma+Kc-C#jC4=ejvFwce`3ak& zcQ%XsfHI*WLp=S0)L_oqz%|sR9z+fm=5UoNi_X!K*Iy>h^xKi2UEJW-wJH9(l=G^B z=+3-Z#&%mgct#^*u1Dt>$Gm!W-$?&2Se)H%+W@3bwHFH(@0{&#h;oao3%85*%*(T> zQ1lf_zAaZ-`NbgPtw;66tNb7Ccq@jOjD0um==K#CNYeA3fBQ7(luL8ww^S@}IHJ2s z?6vnlva~flJw0K#ALW@M$#WAsuR4C5Zu)#~PT@TDC0bK?|M^v3K;!(AjiXJpsyjQw z5;M&{m@cEj)&r?)`D`&fncg_k+k5mj-|T>1gz&VwujojBpmvSoic2534?M@S2!wAm zy`1e*IDTx4x@~sSw=@pwGkfDDDyG?E!R>UPr|Dp>@1q@#WvA6HMcNm!GrRKg^5f#( zssuWJ*V51H{;ZR)l-KTu%8K#Qz_)iWN4w85b77`%90_(IIe7&YB5)oib^Y;ld=%F3DZ|hSfi!MvEs=I|2EE=q=6>i zQk^VkRi)`ChrFh~8NdDO)_O0`#f4cxRnbqcwsFvlit!kio;SOTcQ?)U_EsoICuSI; zd^BoFAIO>*y!t$mO1ypf10&dIVP+=1VYB-RuLH;2yPx{zF6W?kk}tRF38+oYOpTN> z(<;P#a=(4>W#vkjX*JfqG^on+6#Dt*;IOaJ#^7XyS?iIG;KJeYTEX}T##pb;nl3l? z!(`ugLHpIeuB1OtgQfo^7`<_sJn<^ue_ZYi_3gcyG~R!6*;)Th^zz~m$-;^;o!jfw zZ;YSvQ;@R!EUfFm8cF4##!n!{m)9&?&lh`QOL2vQcH&rrMQqzlLcD;l*u{%7+##H= zrnCA|*#p_khkKb_QK}0wwaJ6MU-s)-JR%oxUb?_vZ|zwtwrng8HoTZPp?mp{wi)X* z{yV&eh6hVxDU+dA-^ayrLd&@#Pmk`T(Z|ZW4+SJfgEYK?~hF8$Mf?B-?salfnyVVp>=w@U4+Nf z<&n;CmemXXJ3J%fo{Bf>#-fvjsOjBF`sE>bbK@~V5 z39GE|n6Z?scdU#txwC^&Z!SJD*;^fdp`$iVJ*91ZoLmAx_4a=HN65w@SaPdg}x+t=sXwy+QdvIj0&$%O4&vCH{# zS0oc5ai@obu5Bi2W1nxogxg+pk)l+vVe0=haNYF6=Js0Eg@sAuy$gKxw%OnhO3IH{ z$5BtjKqs&eM8tC*G`icR)*2S}bMZVVQ*_O&r(!Y@uvPYEEH1GA{F#+jAuw9T?8~-G zDgM$K9vpe^xfXSX7fEQR8(%__dV15r?$0mk9$)HBV(!lnmES?hh{I|vemC?yP;VCA zHuW@^AzdM=F&uft&tze`wEXz^J}N=;&6`55tu(~#!kz-RPTFQY(adkR9nv^d94{Z= zLdkFr=0~fA1w^>pN@luF)cfYXHuOk&>wSBh+Lz^FabaO5(;dF;@&o(4GMZfU9RAu} zSn%NT2OsS}x}x(h?5=xhkYLXd!vG$kGsylOkfynOO}JhyKiSAS+{;(Yqm2dJCPE37 z{_}2O!aG{ZscWO3{r1_mT)y-8r{$E_VFXc`2WcNqHM=L*ZCtF@^gZWI z8!1)};$FRxE+Z_ScR@{Yac-3TES6#5y8rx1yDZC;Ey9$u)8_8(Rygpie2|VJ)yB8T{jmO@6_A)8&aoe%CC}Jf22ZO(l>C?Z#cAg7M29M zHq#8R@3w5p+P7eRZM}qZ(nbF5cKSTx`5q(n=7lw_+8VTl*%tO)!4fqtN?p|#OrXlS zoP`@BU$3(4y!F(Eo7@MD-<#Ulq}H6F)xIoIrbj>4j&F1Qo>DBZj7xymTVLOmjh>mp&63)oX~YxoM&y;+o&zlkfBKuh~h#_isLE?_0N9t0=%AQ*R0pQ z(QW+O%<~sPk*g?f-gt1ynqzEcVV)PS*M$fMh&0xtI|8E>MlMqH&TnB?eUcZaPDmb` za?MwTN4~Wg%w>j}35##1WCXA~AsXfp4|Ar?M*7lNbtx=F++h7PeUr6W&h_0?SoHq% zld!365;0S`9#h{~jureiU-{(w9w61#|Hu)eufegB-aQoFvN613FwZ^p({UD$%5pshQ!EA&vxRMuc#M<*v;3ZT99gj&Rfh|cV44OW@7;D_7%wFbe7 z*|y-%Oyh55J))jG2g(Bi%xw2F`J(H~p}t<}LIk(IwzkV*%Hj~Y=b+^EYf`rQ4)f!z zV_W!NBr@QA^$AqSPREMKv2JZ1<+*FA4Yq}MWS6bnXhf`;wU#<(4wIVm*RxaiQ%J3o zf36yAoXWN@4vbvYgTO7bCHAe(KYlok^M`O0$hV^5KD29!e}GaVd{98KYT&}oJLdta6jAFUylpEEVo z_3{J0-49Oi8mLX#e15)uItDhWxoA-oBcWHanFy{ zqb}Wjk4IPSx4t?_Fv&i$4j{GXhW!hdpX}gO8U2!KI_x1)%)>gmo_}^QT46{fMe15+ zhmX+vgPNQ%38`GWsKCj8ZeSTLoKc%>awu)vIu)i!eY>-kJ0Qa0ltbx$R-leR{(RDB zIwhlsEsRP1s35&fS|D>UuWhU)?W3^9u3p!3I8objR{Qn1wx_uK=bh z+~q6I=+Dqx7>zcrJdt6`;#|Gau9-fV%K1}VdAaNsqY9<$I&GK9CSOHPj+hiQ5wy0= z&+wnv8LAc)kuzm%?|J_~-yjz#)8D(nEVGbzYYlWf3TjeKN5-m6<2mWPWtF)Nfr5Uo9eIe(%H z^nbhKySCmgd%xV=5MZOP>}9yieuYvFEzOG=Vo_IvjFjAF`;80Tk_`(N((H22!JwxO z9z~FJIPR}u`}WZxrEkBR6mDW(@uPW-zc_P+qf+gSbtsJ6VQ!dpPKRGp@m#=7EQ|G< zbMViComfmsO=Sb?yoJep!LBI1#`NJLTCiA0=WlUkJLy`k3-g2Qa#^Ne)X9NN!Rh%y z-*Y!9EdgSiQb=d)#5BfwWzm%$Xi%66a?W#g>2A)4PkiXd5b%3%si4Eg^ zDxP=J(2bu!pzGfNYkcPyX2w-Jqx1WmC<$jQO{u8%MlXXbzS%xznVflwcx!`QaO66A zC&&<$SZR;z4uzXg8u6i&nVZZ%w(afWf~nv#I;jJEx>AuFR<0Mj{d=SR3Anz67y`eH zu)k6mkDG}@&1u#Rq`Ij$rNL_8zkjs8wa0$P^sM3Fi23xk&4(@S zO%u=%&9hBYufI#h3?$_^NV2@12KwyYt*IQzovO{DGT&V%322RU%0$FO>In6mF!mYZUA%w|evV#=ijaW%DMN2XUDqa)zB+dF zqUfpobQ`8ie~AVcHJ*I#1v@xj4Y_&i#*xJZBm3?a5G5_XUB6P#R!_jO-`(H(P~XEo z6_p}zb?os?FQ~3?&1o)`QRxbWLdRDA;El7(P{)E18>!JQxq2u_cgZq`jM0jzIdnr2n5dp(P?0P0>IbEGfN-C^omVR*2w*qH^6 z0{>9cAodd`BhQn0bD1yaE4vn~P~}-&EJ7}~oK*ewb~a1U*Ym#DXt>GC%o4CH>L1SQ zZ91Cjr*v3utP*k0cYPIlNf*c$rux#@MvJGiT-2Mrvfs`vOqM89A%?1=5A_|@Pjec2 zdk!}qb}*5Y+e*d#f!#SQd;OXN`yuP2{Fd+#f1XgMfr!_s13Z)$Bh*|2c?gX%M!lKp zVHdT5Jo#<%>3t@Y%!+0o4lQ%y4Wkvliay9ZesThG><46DoyWeP-ssK68)2PFv%h#P zSgg?Uy-3noY$~@1l8JHyusBOl5cI&=F^CX^@c8_3Wv( zC&zqEP|bawq=xcgsB@y?c_BP57aWRrz^ykeQ$Fmp4_kA#g?B;A!@zr<{o87wp_4n^ zMW;)RO3GKLw4>3}DwzH4c3XMT30{5_K%#kXJr}5$N6x)L5uProBPC>emaXKwwGufx zAaV`8=so%rhfj<2rBOz; zjK0&Cm1r!ZJfa)yG_j1C<6n&Z4XH3$ELJr;t-|O1V7otaep1tGx-@kI2c_IO^Z_Ku zDeOk(+(>FQViP{8Jw8&(5(wu5lcMjUn>sgw*hIw@KDx7cc5J7oQ)=%^(|C>;(e$fa ztz4edrVj1*S-bCS6rozK#~zxmeYKvl;0`i4C^y+?^7)+akMGtiXnDMn{ji3nu8x># zu@5!zP%c_+7ld9-Hq$DiSRsmYk^KHvDjF6whUwfvIL-3?6Xk0;aX z<1X~O4i~b#W&tv&XR3>H<__BKPi5G8K;&F7M#Inmmdiil9U`8`rteN+l>iP z7=jk>!c;LE*w`#ePVRdQ`)zxP#&Q+UROSXMbMzzouf4w2zs*c)p1+t-$NK~I?4@(9 zdX^LIW!CdU%VNA2+c;Im;Xal32%JRX0CJQrKf7k(d%gBF7gb(}#3`~kh&pek+a$`( zCwYTl5bP!E3ANm!2sF=huMyL8g0|D^?e$OVQHS8W9@NyQ6X45O&tGhw#gp$?r9wCB zNpE00I_kTdS1|Id3pg0-{TE?vh!OOm2{mxncP2s zHv#sX?GHxxnZ?1y2Y6aCGBE@ScNXm7Fko0t*mMlkQNMD8#;x{WXZFBW+ z{)eCU{YuU0qbn)1!L=!H?%R6Si(~;!g@>ZKuP^gb1(Ut?(#SZ*zYHPAFV5Sg7)em- zOz=A81w!$lCBn-N=t!BVRpn;G6{hSX5A&bkdD!S`G*YykmhHmQv%_}LqkrM}LCYST za?ZrXsuwy{`QF2AJE%(+U)vg}t?=rKWHU7x#XD7x`-|ZLt5xyg%d#yIa|5od(F(z< z$p&Oa60GW_>YZyr_4!^lu29r**+a$M;ruD)F~DuTV};3Ge#UBXQ9lmK%jZiHGk@XD z)?F?YiiN+o0#uT#p2AfnK_KPN+cZ`SCFC3|MZo4ZO zw1cD79L!@|+3%`iLN9rpv=Z#8sg+2PGDik;m_QW{6^g92vV8f|1Tj!Po|OB9n#Q3= zb$frJ7rn#s3Ya0!KMnTz$F=vrn-py;h0$w;m`52aw+%EgRmJyD>@zgJiyU)l#V(Z% zq;7<%>e+@O$W*c>BNd_a;YsjL=2~vJ3O*(Owr_gy}s}E4Ie` zyj5aXJ?MjxLBvLcUY9*FyVv6X-Qrpw<=_dKkG3Dz`kfIV- zAOJ}R2|xgQ!D0p_8Y{IF|E)8!80ZX%y*}*z*KTAytPJ;84f+0n7s+`y!g!5p#am!P zVIL#q1!>qh1~%Yx_as+HSha@g%Piq~i&%DqBl5ZyDctsb0{i*2#XOq-&W^Y_(B1I> zDqr-afm#2~;Y39f!&jjgY@KqK1>bXV!JfkB>)$gz{ z;v?+vtgj-)aZ2ij(+H@HR(}xU7t@zk-widBTyG*$Ig_a=CcjqY4Kkb7Z_10Ab?tGg z!6w6nf!-8FOA#M2_T5yx|6<6RHA`7%ZQmbTd`e411Ob5&is?m9%_~T`_Vp|KWj4cK zNf-uLjbv@1f~ej1Mn~$}rIbZpifTE~n@Et9o?T>w)0vSfRqU6=*FI!Zx>(+!=|XWB z29g^$gDeVOgO08+9J0Ez72(KF> zwfS(5m~Ie*HECbJn!NwrSUlWUT;s;17_qc!`vx0Q?XdbWYXrr>&EaGB>93F3-8--I7V4dEQ*CzwX zlf>d&;TK_AYG)X$H#s<*D<%Pfwk9Rzif?&>j^6&v`3dYgb++`E)%?63S`jvq9@j^v zyU1db4zjcLizJ5pz{#Ksdmy4)x*%He$VQU-HXqh9y%*Ae0Pdr07_)A^otO3MGV2Hz z|A`&v$WHfgACdslAe(I-B?OCUhpzD1QSYgvfamrz;uJN0wZ)Uku`H2uc?eWhDmy|X zcB6-nlHT}xaf!&%YRpX3?FG@s?hGgW0&@p67UX%0fv)@qq5t zB=*A-Se(l1sJXo2j@)8oc4>GG`ywkXRd~y(N)Kd=syA0twzT?)5DTz}1Y#+AF^95uHW||XCTW| zki)_Qi>3UjKSK}{n&@jShlS~-=W0H$pE7mnAPp!Ik@ZYFDq}>f=_!HRS>X(om%R%CG=|IX)Gtj00qaqFDvFJ+xV*P{BSF4XVp*vvNE>B^)vN%{^se}{(w*4|;dgJmAQ>BA8!Y&-BwTwBq0 zxDzc%PprE}$g(4L17vwu((8S`*+hFsq2~&Jav(eOPh=QW#-eCuT4>=;)Rd6dd@uX< zb|1w^yBtZV36P#-MDZ^EZ@=9(t_W#z5t089st=$eBys)*Yv#SJSZ(@kSXqb<0^>wO za^FTQ2+!z8lDO)Hs1h)IQyc)Q`p)O@pVYIffC~y^TKF@!A2!bY-Zo~=&@UsiErP)Y zB;-*&zw~}#egDKN<`o>w(^Ffq(qbK~rRB<-&x~3lP1Mw1)Ay6jbAA*j5PHS$iTk9n zZ!qvEBI5@*>l_`au--C0Rhy!;Y5^N`uiVFPV5LI)B!B1rvZez=`NMe z*ocK<02yT4#2klu8lF-dPyBa*iT~_@U9>K)*%=|4ZEfEOP@SNi2?6voc2YHiEFa}4N2(r=*vL-NNCqIJ8gvQKg1!pNr+2&w^*P{K+%^@r(u zd&2P`tPFr_4+v2=&1^>4ZRl(NoolI>HT?~Oxi>ZyGX(|Tym?y0@yv0RN{nuU*DSiN zzSZ6cBzaa=KJ!$z6KxI9LkQUl*U5*LcNLNX79{*hE zs{lKT3%Ao)xmH+yg-R2oq~%}ay7&M?2r9+mTZke&Z961^ejXx6%?><$Vp6s(VQ+9v z3sIN4-QA6uu(PGxsg71e=Zv4PdVX%{yVihu8cK463Bh;Q+IikIvz!_-HVWtwgU&2mk37l)fz>sMd>dsb2f0>KyC(Zpp1>TIN$884C;U+8Po)z z2~@7UdAE|Z0E&5y;K$LLcxhF^hzG$NHD2ZFV*1Ck|l5bDc?J_aI68kA(|W8BOQ$#cps% z!pT6eOG^pSuqy~bW8c6?&Py}!Sc(XcZ~@c(Z_Wbm5Sj$G^UP=Se#QoklYa6q@u<}= z&!IukQ`%rBxLzs5Y0!}D@AEb^OFSplNeTR8!E4ee!4FaMpZ$oKgT@j;G2~j$(Yk$^ z{Sxm~OGU~at%c1Zmz)L{J$e?KYGRT(5(U6Eu%!~U;tN*?AvCsM*9pesS+idfFj z2Q=(K6(bF9gpD#sOGH?Uv)-&wa{A#oQDyg`}Ze7S4}oH(9uav}TRGaM74dlJ+6_F5i25~W-zj>B|)JjUORrRSN?jwe{(tp@L=7UUO5gtv(AA z<)+`^o@a?!JmHwgNPQ>}%*9mwCd|ppvAF=8G-? zE61nW{ktCB*?Ef5m(}|ca+!1aqanA}D;-jWY=FU@8?C7L=iLq4W%lA3$b5vw#*2XS zwMO2GXdb$K!QB+_#-=B%e#&TcC=F{NuCBA!P{|@Yp2DZ76?nf zFI^xCE0~zkd;?-q^~Htx>Lk4ka&NcA`N>kh^T{jMY<<9o7K<*5nG9Z!#*0^z4s={^ zEx0)zwHmb#a2s|1eHD^M_F$eoE^{@@sha@-alB@<5*V+m8dy%X5Q#^9e~!0x1RH5E zu=@N-7vIdhE8d?s)z&gCO;Hm2y{68YZIFaQxFmTEm3PogP3rP5Qcf22H2O^H`&A++ zp$AIN=@EJK*crbqeF<0(eMPIcKLQxKjDE z&UV{*D4`P5g2JCFP1Vx}t?tb(@^3n{Vk`A59W#A7kXi!~zaVOAGjxK>C5w5OME(sf z7_)2J@-#Ag8Do*PRx#E|I!6jYOz;mf3!Y?4=)6vLw>1Xh1Dh&U+PQLHe*kFsYH@HQJ z0yMj#+y_{qX=PP0i+L&Wy58-z+k-Y}DoDzLrSwx?n7VON z&y~!xCBj!wCEP*7U57oHzvy}1!1=SCVkb=JW2tz41fLw@X?2!!uhe5ss`6K$M%=~f zs6r_k)x2L^Zxg7#6zY;RMNT%>+dXp>QQ9*np z60O6CA)^|Xt3e4(F9~%9&%lS72saiju6&h9;)CtBZ+Bys?Mji~j__CnaCv|7wVCl= z*^U;Z+Un=5Ep!Yj%zRw=jUK&rO36zs%pWf<9&C8S5>n*u)L6ANb+E$~ij(>ul^5s6 zdTYg@|1Kx9ZDIylCNGlGOEA6>j7XDdxG;d3yh(TeM{=VP94!?UD?N0yr!t=<*!2C# zk@xNWYNnnoZ6G@tN&Pb!zi=98l%q+R{Pn=8rzU~@EBG#xlTwRw&`{l7(WnxthRWf8 zpRxZ7W-~_{9a*;7K;I}i?59lK8{=$srTq7e6WzK6$CXcKB-+3E-e}!oih_h&l zYwfv0%z#5_-Icr1+#*$ZK~1^D(bT?FAfju~*y86bfD!pEoH!CsP2zotQAb^GyPJcB znQpzc9@QFeJd!G|@W*JW(SnqFU&@Kide$kavA^7cHYLNc!6u_4A5Ak@e&(9(2StgY zVJ;O#gVS=ypI)R+}kcIrl~l7cBl8;u)@Mr`;tdv-a(MI`NE}}Ld9DA z2v-^;;|SGaQ@Ta7zCR|zGHE2Fm~Gejq;`)-ZbUDCF&a;JZ>Qp68rX|PFxz87vbzFI zDr1g70VXeXseqm{R;5ZFzX~Q;hM8AzM4!`oUuK)#Kk#LrynsvyutKMw{J>u@#fKO; zGR5p9`MeZ?0Cp{qFl3s5kufr_HE=DDaQvw2(kS$=aih~l0vI>_lBB0OZjY4ukp$Dd zfNvaUj%1Rw76H;K^sB!YJQGa?S##L8U5rWf0JP{3x!ztcF8|}Xw27}*yRc}3lg;te z6CYcwQ{UTmzisj^eUr^C7<3}0XOQJ&*=kZbWMyULHKep+mvW(jD}Q!>5CQ3o=$Dv| zAs!ev^R_wHy$flj0(M$SCB*1sNXG7qk@tLp(o2{xJoPI2k;yAh9&ipcYL>?MX-9DW zoauQ(w+>MR?WO79(K6{SWTR3t(5dg%5l8}{BUs8f&)JFktI4?~erv|9Fh7LoRF3er zG!2a9wB2mr^y#%_wSaj3oC5|ue-nznkqi*w1_?P(c0=lwqqnBaB$Y7X3bts#ZR*<{ zY1_uP|Ij`%e|@GqJ`F=OWbPSEVCZN)Is~+r7!Pd({z7M>Qxob4Hu`40MF1S zkga(f%Ot@hIWm%07XWLT<7!K3W1_#ooc-6s>ep{po&5uk{bCjF_jZ1wA&uxeXcH~o zi~5*J#{G&e4;OB!KtC#s4AB8$?~})zI4$qZDy#Ru|Hv@TW9J z=Zo&EempEPymz(4Jeg}3DwapMnN*59=DWGODchC7j`de6S+-uG5~)%6GRTt7@KTLW z5?>76`-O_{kLNB6`1ayuLduw0c^<{1?B!vLVQ0R=)lDxAvV$Ui;J#C#yr@9q?hqRG z6_4U^x5l&&;n0l>=o~Z#TG`;1ooC+_Ct<=JExC0(7X~vyi9EW)xVdbp!AYB+?eRQX zb*M#NWt$=5l>(fS236zzBWa?PphiRpY+e?nf+uDb-{dUJ^wJmxF7<^gYaf_k&D>yR zOf=3?eq~wa^+ILmHJMG=R|BJYzrm`fszB`DLa()WyqozP&2i}~lumuGj@AqHK=eEx z&m&tjxvo-6321{{82H;U^~=Sproc)x#;tXSpEX`uj33da=Z};tD&%P<8|I=>XD)kb zk44T$Jf={7VtVt9UIz3y!2)U_4={qqPb1UyvHp>s6ZO)iqG_1sQZ9e++|GDKfm67G zn}fz|k<^L79Tv7TW8I^-8WQ+eKZE#%lpv2|!~83=OwOTj%)>9G^m%9i0k}&1mOVxC zDJGNn{6fuJ$uS5WD>-8{JV#i9OLOn?pNlI{TGANy?M0vU1gNk$#|lMRjQd?@n7}j_ zKiTld$Pqw33b*O1(biPQPrW@uCUz4&f2vS?1i?j+Mxy)W54Sr$$`6*2VSWN8?Q({X z`(Y%Mq5Vtd@q1ez?$2nHVuD%1_g`Y(6LV8#rp25w>pUIz_G~i?x%}Ke+P-KTbK|VQ zvI3o%$-!tOh&?nZOigw%pbwDySth4tVIl(}b9YADn<`R3;2+6Focoa4I;dw{A~mPQ_^|O+yj+`ZTGB{+@UIc(}KwI)9y4*6oFQ`g6{}`cuxN#l{tvLW5wT5gsEf8sh~T!z5_4?#6smN2M2Tn`Ie=zu|)%g@^HB zoqQtuELC&IZkL!iVUk+lBOt+ie*JEtQ*wB6U6$Q=LeHk?~oU` zQpC4f^g&&4o}19D+_LAF{-ey%44ql6ZseG6 z-0;;$$9$i7&OUj#<}9bhnJ*Wv+~+Io&NZ@G9P)(0D|cK6rca*Kr_OysUHUX5h*bSI z#(M&R>x5`2MpGbX^c;jO8oBjqYh;?cYtzUIl?=mwwT=H_amX8m>S%5L!U0<9Kvr)j zs)kc9&fhmaEkTXy+n)7}`hLYwNP&PHmxsTv7cyUAuw6ajc>V^3yK9u?htB^m6y(BMBOZzWp8nJWFGI zKCic*up*?CWI&gy_3!G3#t?b=w#{9KBMK2td!kX{Uj@&~@*h;DNfIQ-rffTO?GmGH zy7k5GFwCfTR|{^yP}!$qa%qB88GNhvzpf0ZH86cX<`AuCn~BCADv+-hv5DCOS-MsU zPcdpX>j4BwQkVll+K38}$1$0F#XDT}2@YpyADz!a>FtQ>Sb&BuvJo3p)n6!N$78+C zz%q;$`I}uHYJG>IyCB1M*6LKxTl@AZ&^vZb8Q*SiHv@lU`Ruw@JgIod@cK4ouepqa zPcc?^$Faq8vV&BX45$9D2MB$qEBWZ%n*WoyWG=Fcjx$dZZZeLz!BDdsJtv!J4Af_W zc#W$BCGdL8ktzzA^59v8eT9H54+txU=RZbFM-)w8OU(Eyq4TK#As58Vi%L&rqA|ly z$hW7ar9u4h8vg~ralA^rJ~E`XXQP^Qc>q{FIbtu{cWnyj1+?wRm~aZ)j0HHq8E9eV z$1&+QcF|>$CsJ4=gzLQ>_Y&MzJy2Hs^zeENCO}+j^u=h`GjlT4`iI?ZM8_=o?@pF%5QVib>g0 zazKj1DSBKx#-lKGG*K7Z$EV_%39McP=5!6uAqnV$KK}XhUMWDuGMQ?%P}pJ`Fs(T( z>?1;L(=)>p=Wc-RRY**~h`nDbJ(tH=avyfGIP5wQ@ox}%)?p7l&hq{NMsw~ax=Oot z_wHS!kgRM(JM+}rfh@?d(PgBl^3Ok?;Iqp){ja7#SdQaIxZ0@&^XnpDa6@2R>y!>n ze@;e|WXJ&JDof8akiD4x5*?4K>jtZ2&O`HxpZ`4E<=MSrUQOGq1j4Y(2!dOQus<&4 z<$(&=3*+U_euwR#M2DIhodh&q$lMQRkwCPYG{D7O$Z3*VnP@fBB?I|RA~FSFD>>sZ4Zheolh(*b`MMr9LpQR@C z^NaR{CfOJ^;2^y>6;HR}LX>(> z($h&>>TDsK#rjc@3^b#CVMzw6RHR41*TsCp<3+w%{ZINYrav5HbLAgfWEVTaxs_QQe)Cm99tIM^ll@c1Vpwi5IP2lbe(2x`O)*Z{(CGw&#K#hfj~IzON9Wq%q_r@f z?9ERjXHi+BNLU;7bBrYV07T`eeozQ~%Q5mm=_SG}k5O;}=iVXD)!%OmNatk2z!xUnv$S6=gzTvD6>s2=V&2$nTk5eB}AQWfoh1D5%9* zDrs##B7{Z{b!ccq34^>T1Hhr@_KxBXU9YUx86mw*NdbQkA(oo52viI0P>*2-6Jmn) z)4(~Pl;`y_#`_y|rn!dJCg(@><$L4xymlg*h@#p^oor?)FPtWi+zvod0cvS6sbMLz zR#7q#7=awkm)^KMCbOqO7NixXsz@V}H0aH)B)!3b8xnxQ)^9$a-zHwJl!FB>Q_*ewo;WV$jM{OK3r+h^jaBH${N_ICP;b?Ya9;j8b&C7&8j}H>c z4CQbjAKpMmEO)Gm*Q1YjVd&0li%)w91_$R~t@Sepcc8lL{*`nD6-2s~;3tc8a%RDBA!&H3TuJK) z0DoxVMms@;6aD+Fp|Jbq=fW-Gt@W>?hBabj-I+3JS#5TT20T4b&v)4%s(8J_f*V#Y4w%)bg-gbP6CInP|=? zu`u8p6mS?7U8f)c>Y7|>NgV`8+?V5+(o(84OB%xT+hgBjS>5r1(jP;hcaWOxgT(Qf zI}t8HP!i#02ARoHD}HzGj8zKnm`z4t%9|aIY6$(90>pKn8Iey^KUGEgD;x&jc=S$C zI2T2qk-l~b>4t>n41y#@_dFQ8h5?<@(%Ca+I@Gx>CkS!<|T zbf3&1Ky{XW5XVY@<%P7Afr*%Z$<93daXx?mr;(>~YVppc-4IiY2*G%uRD(5ZZd8z* z7`KOh`_qy@j3^YKk+IABTZdLvE-Oet0cXrNsDvdpRVe92?7?$ZAHXc(+%ODgAJI6T z04hfr!ZKRCNOHB8AG9K92czB4U6%s2#agJZhV};O3ZO~E{;b0sXd-H*0!?x>3s?4j zJt7V+JA4(&LGB<39fi}I4`(hew4H6mPy~%hq(udqL55_ScugDll0E3s_RPzAYq`(n6U0A54lJ`_(2Q^hFl z$WUIm9T6H+$|lLVps9Rq^g)WlbeBFEIgl$0&|aqo4Q)|^_aggyEXIJ4B2{oY1XXSM z=not-LR7w}4DdqKTyj_#ndz#vCVVW{^pqrDU-*mNEA$j-0U0Fc|rw2Sqky zvlzy5?@3_)zQLy*sPnLk=z(=Au^1wl+IC}H*wDhzeo1W{O$wTwg~`6~*pmMP2uPO!klftF^X5 zfeEQQx+b*MgJv9Yp+=z)Wc{%Tg$2px>5Wp`q~plCs)G&)BoPKW`qL-)_v-~k{t(km zo-h_ONdx)$ht8S4`Rr5voP!EcI>8%>iFLGp9A^7r=@vJzF5?zKx(u95ROGLzG$(-* zk&KV+LR+wNev+wUNONhFME}^hj+?3`lJ^QLE5<<^MwB8MZJU|czofTMVF|EG#kUl; z5S+X+#uD2h^B~+-SmQ^pp?7VZRDnP8GT2x)#uSNUcdbe_G*T8Sm{(r2{k+=Byzh_6 z3d(5kdW8Uw4}Z19PVEE=Utan8bIq48UxIdU#>in74x@Zx6RD8VucgYz%pJJDWlA_F` zfNJ^VdY&!mDVJ%1;-@pfl%*t>V}=@Mo#o6qkU&-9_~{rq#>9I@8*O4d&9lw8=3TSM z17tp3G6{9IVvGK(zU$Q5HsBzrYQ9_) zsrQ`3nw(ua!SBJ`YzwQ|T@Xz%o@*+pEncuh?h*k61{}tkZ(2<4D=*rI7}SF7)}WU%gvNXo$NA)J3RVFs)1HV6`j+MO^y@ z6gsBpp3`uRlTP2Y)+|SHfYaS@3@Q>)g-SIN$<@hup>?HWt4lA5D8N zipwobVHyd!h2)u`Q3L05P-qmcDj>q`wJM`fiCg@RCOEo$?37{#XhtH>{Fy4K!08Ny zUf!5NMf@Qy^gr4=_i(DywU7T6m7Rq(dgqVzTiJYyR$zi?U$L!hrefN7^@85f0*Y;0WW$|0jdY=2apZorP zKaVakwHW-SaU%2WKEsL#fFy_qO>3}wo4DPVWs;hsd%4m;`|)q2#ioJ_1hMe>VGf~| zA$VY~o_B9`wECrkp` z`Y~v97&ZTx8_QB2=e6z=*3*VLf*k391tPB}L%SjaL;FkE>e>;wNzaegK#k9Omj=u7 zHXn!v@j8sH^PHD+((xqB0j;SDG~bZHgBJ`r3H0w|NY?eVXrY`$_PMX&CIno!`p2=p zn6o{H`m;v5?~*tWo0a-_Uu$5Vn59qkPW;3BI0S+N&9D-HM1*77pGG6f$peEctdVq1 zA@hwUphs{EGI=M-;G#txsza;N)gl^A%#&A2N?NOw(-y&5M&n-;(3guvd|;~apUaAr zUhj1a*6jHH!9t~;CUw+#0KJ5Vzl`_rFZiKe8~oJE)K?}qzgC}j)S@Tzfcc=OHu<0r zT0PD|Gib?OCE6wL*yG*Rcjo(sSS|BnuG>MuNwFveooi9?uz>)FBz$RGRcKDpIIx*4 z2U`lDe^8J!a3?%MBcu<l(gTV)<2p3l4la(4;_D;d}^@<45WN_x6ST zN(YE%5DYu`lEGraqMCn!sbjopkwNfOr@egJy%-XHogT^>8~HRTpjH5mR+NyUL2hdS zOtMB>cIi{{gFrde9y|!&BVcWaec{*EuPduVn~lg*TfBGEG`iyPu=4~26HnO7;4r{U zMFS7&68r}h3x9c-4i7jI96X?3f&q@;1(U=zzI5AUuGFn|FoCCf~jR ziV7;S?2s!kdBV&eL^cDpnp6v@VM!VT$ABo^rsxT@s&vS^0ja|Lkrj}PhKmf5e{#ps z>ykLhs6pS7Q!k5B0@78iKX%wOv1f}@)s{AAO+9ZhN?;RYDdcX#$mqpD+xnYP*lJQP zvY_9FVO15J*PoDDl60Rw`|##y>I{F%BJw0T99ekF*}(;nv@9iE#egR!P@a)_M}JkTUM&966XK+Y;4dnh7Fi_HM^ z0c#(EiFP)Rz+xz)#f!j1y6sEGe|xhsp{KnlL$U$O2;PP_HUoY9^HhB)3qS*GPRO`O z90zQ4tOqAo98$&?>ULcHHJFFkZbFC3XPsf@`wN`T7&&4C^m8GAfHE3eN+0Ji2-Yz3 z*g<7ow`1JUE&7Q{IS7HP@@}|tuu#>TuY$XjS*6Rq3izew_BQPuAAYn?EEQ4$Y-XDP zzVovrh`I0-5vQ+8g$%#IYW`h7ulEh)MbUYhh^_X0kva9or{dBux3(=nPCaRhqP30Z zZX7Dvc2{wZI)*K`=JLvJEZ2X)vC)?Rc=}T6G9uCGj`GmSvnTSh6rr6Rm++t4X z7FnphVs3!kY(eul=F-@M3{x zheY4*C=Rs4&xKHaTe)SL=9GY-WE6!@0e%OKW8Dx@@#gaIVU|ULibOyk#eu$U#YnxQ zG4f?+Nqq$V|Kf3Z!JWVc5>iMiXB|MQ$#y9_dBgB=e)*4fl#|mz-CJt|PLr_kxNx;} zWsb8M7Soz2QY21twsv_y3}1nlVNpln(gDXMj~3Qgy%Oj^=JokqvapOb2Y3-`Q={|v zH2?eQzcNIo%Oqeg>fZ!T%c5omSjXBk1|(#P|KAe*`--2%%^poc2*}zcLXZzPYzgTP zHu`EyLRh)oa6F{l6-2Hr&ROh3;~xxV^z*YQ{VfHy51VIh;x-xd~e2Zclyy@5dR(&LrE{+FsC- za9qm^5tTlA1CAf)q{IqB;VmNYe3QUeM6mr>KWwEdZC(Kb6-W3RDd#{V@+^yIjY) zcj&SsjCZiqk*M=qm5@^OZDFdn4Q9k(Uffn#Z&K;2YJ(zmay7;^Wn?mVjlp6E#cD9*K>xCW5DPvj9O!B;#nd z!6Ff37_G&1H1m68JEiAqG5UAk{j%FL|NVt_fTB6T^ZGWMBB)J5*0C|hHWs!9m5z@H zC)b1NI_Wh1T?9CKpj=pMW%2^Z`!l}&-0T(Bq~59lp8=?ZS7lI^&NwsslN<}aAz|I8 zVxu(b<4# zpm#=ZxUV{M^)=hTi_MR-QD6JgKR6KnD}EyDtH*x6&nakDR z5%O4iLm(eh)*TZBGE+!a5g+Xn?_o$@5tB845)z8739g{pigl~l>7S`T#tu1z`L#x3 z;W_}zP*TDkgF>E)40<&%inFx1M&%I-h&+c0=?qjqNv+kXvw#d$mf-|^%TaM2SqA!a zN<0`{FkcZe62Gtk7_3MuKyU1KsMf%l<}a|C76gPO_1BxZ(`0K5YfdD!+xaZk-P8Ia67Nwj7NfrSQ88|-lL=<{KZ@}`C z3e476#B?SAS(t-^vY^YK8PA(Hr3+H`QIcU+_SM|gSa=R@%;NEV3I30t&Nh3Yn4<`w zad<6|C=<<5KTF+4-_2+eqGg~;u#lB!kuU0Jsd(CFIGV9QD^xw>;Hg<}tVODY1C7_$ zi0u2g(#`;5q(EIGW{0Xp1PUFCwo0?c?}$>?BeTObJ-4F#C4eefTlRW~ynLjqPF z*kP(w+V^(zC()L!y$KBx$#9W7lujSRiJC322gFRgmMOz6i5nfTUYqFWf-(^BK@A(O zetNdKY};PI8Ep{0kId#U=rgSX^H-3R@t%&o0}?0-VBeZCUv=`aPVT+c<+z1NWd|d2dEf?8a~5G3CuW&7wLr_L!Xv2%Uw}00m&8i zee^TMJ`MFGbBxqB!kduH&%BHcgehH9;B86?OCGi1{l*|FTAwx@Kql-vUk<;DS+ktU zfZW0!oih{xRB9$BKf+|Fpe{;9bAY!|zWqjH18O}TK+R;F01`&Yqs`kQYJ+oZJfG1j zRM$*r!X@KCD1ek$)IWa^ZK_YP5UvnaGe zWk`w!vbnqg2JlFKQaO=}B}E|TJ!Ea|rqNa!j7}Xn6izgo`KV5M9--bwlSXrk4|_<0 zA!A`{6&(cc;MsmlkL_^1!mi5H%gzhU~WUY=yQ zMl;*eJ@Cac_6;F)0}$XzvkI()pzibE%U;Jdn~lPwwr zKCfWu-3a+3hw@xWT02A&{ByNY%Q~*^3Qhk9?A6vk?JwA?lC=J*8uS4e-FB9%xt#6`b8UQ`YlKe^f!$5rgFA7t*lTgHg`K$iX#_zrVQ2{oG0dC zyS*hcJ0{<^Uksmz?LNBMD@4_y4NYx3112Uc{6#;YoaWFL81_3ej$!Mg`tUnQg2hyS z74tKR2M#v};eer=OzFQM54=Ln#T*bh_7M0NuuOn$%-;O`f1!=TW@rCS zHf90Yw7n%80h0J*{s&PRxCv4_G0rHQ9?XoYiQYs_J&^L-g#D|164e3tOm>SZ=tfWe z$yByWz&k#^<*{WzaeJtJ!Kb91BLXB%CJpBuOWN+~6pK!pqnb(y|$dOtlPC|_?kPZd}(oxEj@HKcub%fwH4_u!> zr_&v8+h1yfQCn+}Bw@}qFccB4b7)^vo`#NwAqv1AMJix(+V6h49G)Br#sSv6+Gyk>|d?(a4@L+O#qI1#0Vw<0KKzj4^?gvU7-yd z%F~i}N7W#XOHk$?ACSF%nnTghok= zdIZOR7`T7>!x`>u>qvfNMfprnX;(b=Jn#I(=!i~Yt^>EV(bLO|pkKAxteRA2dXilW zCuBLFKWtyf$9#+93N`99@(F0%!Z(TMWpC|JyQQAq*Z8xz;jR~DRpr-!reEsr&MELd z)|JQ$Q1!I8=+>I*09JL2_%bTxCbgJao68Q1`aRXP0;W3aW21May%&}_*ShdhMELAx z3wU#l8)gi_!z9v*EJxqsxp0Pz*?n_02}=3gVkT9#9PqvlN4-8xdZvu{xAHqa{@gf) z$SLWIZwc8$J(5nfkb`>MyX2gws;`Htx61(BgadyFQAM}#%SRvR@phn8;8GE{eIuRc zH=JMPT|C#RRDWUN#Slv4se+}6f06owS>K9?L5Y!onU6Vbx3prq zje&F#)y4X`*>r%x5SeoeeGW~xlytrl2m+$th!}4#J`Y!aCnep=s7i3?tZZb&545qj zJ&+7;U%{_yTl0wO*FzHwt%wQN{W0(CC!LeMOM}LK=U6!|LsDHUfte0gR=`MHi$$jK?bz3G>Yqnw z)UGHDY+blxA{t_u(>a%fqI`=}`%K$s0j0+sVr6?$UHR;|c!uFubf3~(H!JtrI3E3; zW^j<|^GGht%0rI0h)msBv*))vjK*w->G8)S?oF&6UM?A*gD<`kcdR>Nzmq|@g9}B^ zmcDC@MO6go%le!!#eL`v#>Or>qe(F@uE5GH7_W)+(Q7MIcXsUyf^5NM3t#X^++e-$ zpi#;2^^T^tpgwa>K@g!oypF?|x0$ zDGx8kB?u0ITz}4n$f7Y<33XYoF4>r4tIsIOUM&WWTLe^duv>JG{}^}Ez^ zX|+#jdN}_XGi1G(=D%Uwfy`^(uP-$y1m)`(Kffhv;_Y5 z8zSqD^hv&aekn)t9*}z{>o#esth&YN2o5Cq{7U!ZNdi?&yY$9iRd_uRHXiwpsat=XT=6fGNDa z5%G9@lfC2p4+iX-Vj3HddJS`OsHZ;e`^zJ_g?pJ2YlMqx;JV{K@%`^`2%qlW6VX2{ zdBwNCTT@Ey{v%0H77Z>R)}hE(b?^dx^5-TJMewx{pE&+Vvcm)7Yo!qenxdE&mN3a* zO_Z@_@g*pWcTZ9J&;F%eEI$gHgJaDvyKm|E`{+(S6FCK&^7*Ew)*HC25wJr=11~Qx zO-;>*QlJ-UzN>C%Xs{Z?``J}PbV5X=tTVe~yL)3cZd56)^lu$W2)cDQC+Az-kY&Wm z&dvs;Y{~2}#?AZ%Hce(|c3xg`R+btgc)DqXtrVoP|Hf7b6LfDuK-4ui&8>p7fF%R# zYUS%&YFUs4hRUIDFGZrg$u%yt@8aqnHc(oJ63-CBFOb_>4B&7Wls6)>h8_hy_aOya z7N{G7Esi=#K9)rpxSmOcyfO=xGvdax$~tu*F*t-whwYIRKeg2UV|nJVis*la{PFi>0orp(wg*>x0ku}&K4uu-C}j-;gIE#>3i5t}5e zi(j5_YpbhIzvSjDSxo7l*T#KL%8T6_GB@I)sN)#@x7F2G6QP_b4h605{c<~sDYf>E zU;)2Xrh}m(Zs^(N$0g<`ytU$??m=`-W6^9(u5W93`}RzAeN$7D7c|miU*@oiJm%j; zCT^38#|2_jwTW}lGE;ASOQKxic)v2(bIq1w-Z_97-2H6s*ty8>&CJXqxp-SI<9B$? z`zsBHe@_qkR!CG)yPXTbjT0GVzthm0k5Bvd<4PX-m$xyQ0aL>=99X(Wq7r9*Z7T&z zZn$B=0?O{Ir%1n4$&}0k84eu8#Ep6q z@=<|VqLNoT)A8~LF%gRS9ky?36|@e)v*n(+*zEqn#MY0Fn8eW&#oWMI4P5PYZwLVw zUn^hF&st(nJse3ASdng0Lcxs^|4`JcMJ6ZVZT~AS$e~E~QfX6(u zVj_I)4pnkl@?-e_{@)EwFdY70f`u`LX$>@)%`gR$`)ju|TI0#>ieaKkZ{Tb7!Zo)i zfwUpc=2R(hY^|tK;L7Xq!IroWFG8e0kKvlc&J)tpmbP#x5{IxegQ3?w?LWVZW|CN% z^qmg7Xa&fQUY}kYvdG)&t527{l7YPB3N|<8my%?QT+40F&wBok?Q0z7ldccAB9BGf z`O;siL*x?{W5e5k6boSCVS!n8#TDCVx?qIMK> z=liLyMB+0(T~-e_SaUOk?!^VZuC9GM=?n&g`+Fez>LT;o%y@)v(FXEE)bNvSxpRfV zA#{wZEHWayuf$-QCAbTI$dhQ$d@84ew z!hpESbKZtU)TW;>Hq{s9`R$;QoM^!zeM^)K9Au1#T!cY zV*A5JRGV7m(OR_QBUpm0t(H&L!Ma(syb7Yu>JL-G*o@;rAh;gHgTiy7dvF%p|Mbqb zk^fq85QbxhG3#eBm2c>i&qWv6Lo_Mau8wDu&va|Zd<~~z)~Vkr;Wt}q3`A^y02~ZEh3P90FMDnu^I3kr`cFfuUPsFbw zj=j(6@56n^sqbByRfhd;0)co0yOwpX8waohau4cS*l%xXdb<#B1cCQBySO~`!)469 o(SOT|vyjXDXR9PbVDf~=R~V3+#1nVAM*eQN+xYv(-`QRGZ(o5i8vpsZtD>)ziz=bqc#=db6y&+BtO@8|U-T0XFRahDCmCkS;yVzxI`{J40Y zA!ZU23Sp83Bd~IM+wffoht5+mo_rW{mnpO4SIhl~2ixmOULsG#zY%~a$Sf^(cKu*7 zr)M?HP8R9u5lWV`9qS0Vkd~FDlmW2_y@I6d^=~1aI^*ir8y|Pc{(A*;Ub9L$df&Zl z9o1~WX_Xb*ZIG-~X59XOLxc1 z7bB7uKDItX^3r?j-o{R-b`kGyItO?B!05iETZf@82z@ORPLG?Lc;uv4U*#Z4(6G@f zQ!ZMv!4qhkiN)y22IiM_uaL;nUFSWc8fNfr*XBCk2hfj{wenkCl?i=yzOzg7_4mz$ zFR$yvf6Q-fSAunBX3VT?wVt%#w8Aem;L{hMSc#A|URr61<;!l`WO!`F-cd9=V6zgF z(;~XHI(s_B^b}51O9b3j+P`%uud(`Gch8!j_RhM}?U<0XYyNA2Ir>y3^N8IEteOdZj&yX~JW@mQ3nXiFvB!FgEgsU^H34DX$3^)2-_A%L zSJ*oJ`(|NS67&|`%fuPGVQ;gDsnivzv5gI;g7BB8E{;zDg7Ke z@Vp!~O4XNGdN5?)khZmb>U+8FR4!0DOZvuFJqhqn&bYTgqU=N8jdvBQ{>b|}T``p8 zy)&}IS3{~tYePEWu|p9}b>V$sq%;SU_L2Rcxuc&$Td{V?um*(in$(blk=0^mfxFuC zDsx`8OUH*U)57lTGYvMBgC(?F24C$;kV|(-Dkj>4)}4)4u2_;%@bvWk^P8=P30Jz{ zd&*Bp){jcM5tKW^LdP{E}y+Sjb@HAnN#JiF8l>1w>Iii=a&?{ z2gh&Lnn+H(U#ul(a2$5Nm*`AQ0tHQDwb*X~_`RMkMkNC{zlTYEPyBpVk;l?lNt?bqm+Dwk4H~NLu5!%kx)b^5KzWkbixu!pKhO=s(#-12c9pr2l zgYehX4SqCIjH{$QyDnSc_;|uUA*?i7#Dmw@iZGs+I<9(8m$H0TCGq8)G3aZ2Jkd4n z{xy-p#}262$rAC5o6+;m#YZ=Ug+mFU%Mt;^GsHR0s9dS*=w%^l)u!4Sk3!2qa*XoH z-d@oT`3cSg6BSleS<9jD5)IsYMssl77HzYeS8J`z4iYbx%>y(l+kM9K+t zWZyX}BUpd^p%fj-{&r__zD*(f35mv`*SUymN%ItF=N)r`E;~hg7#eXeoO88EZtNaj zQ<}os<@U(W%gHw9M=mU;y$fv=;#Y;^Zx;`pC_Ef*emy4>E1v7|Dl*kRo9!+PZX=K) zm~nx3K)`rdNHP*UFT_o1K0!5ncR+xl1!O$+7thhmYl2=H^vuf|6U~%Oy-^nY zFiNOUg=pD)j_viEY07~&hb0s;a4!e2Z>q@~r2~AbO93EEBiP@?yu)F!;*S1Yv_(o% zu8WxZgR&5PF}@^wG1BNzTv#Gm;S%lhLIsY}UZHCrcDEGte1U5>t7^Hd-4v#o{?-YF@9YM>vWfBjWR=X}3B4xNA+0 zld{qWwT9*_HS@W)-UfIw8wszc5_Ci>uw<2ppp})hxQU}*_c#DLsa)YLfd4BL}FaU)(n{xMi?%*keS&|tBH^Q%|xm_Ld(vC0uJ ze>k2(+)4|M5q)~e;F4UG(yQT%)67oly~pWQ6WQFTi8^;zo2)>;5anG+l|dj;Yis1d z&fbe^J^F<>!}zl;`B|pdQ0z@Q=0xP|Q{fNOjb7biVd?D$5bh65ya%m^rcY>@Zo6?k zZ&d*A=kzsQ>ZvxwVvkW7b2#DYgcNg`_M2GsN7|XwrubZuAnL1|NVGZw^Rb4Df8;G= z($8Ibh5)(-eGLK}4OD|3R$ zJsPF=H#$9{$LmjOo1_+{JCS@N9s-20aK&{deQT9T3J#5M-dZyl*)sj=Gcdz*E40r| zKA`l|Z=*j(*1^-h0*8|OxCMCOQc$ViuXu99Fi6a+b6nZt2Qe_sIi12h!D;y@G4`Zi4@f~5=wieYhp{0|O^f&RN7 z_|rcM&iXnO0?pDIg#!LP{O7DDjKu;9gJ78jU;s;L0FDOCe^m$|;Vk+AG@NCzCJg!a ZZ~kKtg94z*&5A~x2yQt!12aSJ{{iOqYF+>U delta 2517 zcmZvYc|6o>8^&MME7Xvo)e;KHGBakykR|&}nZhwbra_Fc4bd`wM<>g%WSNt7OvzSc zUm8kGgOt6Jbr7-_Cp%5Ob^d#s^Za#vuKRlK`}?_)2+4%bkK)NqMg^twG~Q8wO{Aj1YjdL^O1mBBRPdpWsk zIs%iYme3nvc1A$zj2^LKNX@*0%Up8obPQcp&8{I}fRh!|(SuaT+p<#v-&GHtbJ@tG{1res-Ku_F4! z+;$7hVd1iM`(1yx?>DwEJg!6Cy>MK=k@k1C>nJIceFdoFFE6SpecbZW z@Ri(t9biDqize9zyvLV!@cMJb^fxQzv0$#Aa{||m(ykP&=nMVY<$7+b4Wz&MK+D`V zsF>g^_l@X0?-B?VzCZflYPE-`TWuu!iVpGmPk-Ab@Z_%3Ooc>`%4nS-!tDE#WUD?& zphRoijw4r8c0LFHGLJWnPjUnh`8HBPYk;YtRl`Q(&fIoi&a$D_&d7VZ+L)8ykmJeT zNMwJ8K6Wd=vN3nobmKUvq#xQ{@1OiM#Pn~jOO`AwsWiWXsBORH6++RXoPR{@dL7#1 z@rjshrb>+^KfV9_rbB}S!>7fMK4zTO=jBZ)EkQn{O-sxV&-9@*ytbPg?EwioU`&5o z)9KVIMLk%Z*zNN~bD=upC7Lp39O{!+39HKXO%Q&UB2h49pmVj`qI2?=0^2hCa%YQF z0ng$6VQQTUwcpq|Qc-{QOmI>O!sf0*Mbf7>(T^M9b)kB?k=wKG~gDr z2d%Uh-h4Y5JmMMJKCWc<{uz&wk>h0UaeYTy+(rEbBnVzOttVe_CiC4RTOl`geOD1^ zBP5tsU7u?3uGe9cBp(^FS8F0qcnEqVb2X)1T#B2}A&h8`)vxeo}h0 z23}J4Aa3Hd=di!0OSip=Tkmu=zadfrJ2WNAsF@hIFN< zRTHTG9p7cHoWXZ(Z^K4Is98()~Uj0q&+jw1O@8^KIJbg_iU~iQ4!?})Bk^CXz`UjE6 zh$B4r6pMZ7n0PmJ$@FLw1?MJ{gHON)uiKI*f@@3{Y ztMlk7gX05PvnKcAsrquN&R*ytHGWm3NXoDQe0}%dXMhvq8Q86(26u-aQ^l^pl*0nf z$%h;5P3QZZGR%~zRCndDx(6!c*5kxVWb9joh7jX(t*Iq4d+Udon$|+q$+@gUDwvq# zX^S}Gj05BKmgS-C3^TT(Y=`aO;(Bx}mb>7hrZh}O-Ch;HCUkJb;8m2cx5(A%i4$hl zDvfyM0brimWbGK|+c0G#6%{t*ZRvd;nO=~8fxj;TIHGm6dT(7%L07$OEUVRIDqurG z#9q{W9N*G#+8eKZqugfg%WaH`m+vap6p;k7H*5A}Mhyk*p0M^+#T_Ncv8MU6Zjqb| zI|WHC$=4%tz>_)EdbijegOPXc&qsAr0i$sUFd|XdR4OK}B36xSBBu=Ap~pwV_(7i_ zI3Brn5j>LBkcvaM;5bvqXt5PB!}DQo^bUyp-7>tIs3beNrgeyL^S7|iIPTQ~NS=PP z*M6mY7jO^PV$NsZ#&4kqWhda1uMaoR$O&BuPmGzo7}}Oo)}>e8>VG=|?4k`LTSXr`Hd}!^ZSMA9O$}ti8NppP`*Y2ciUr?iW){-?FVR)x6(CB8pftCN|zT_2& z(n)C=kruktgD;+$J9AjMOJ`)_ibxbDB?5HLovs-7?!!st|0!(x8@q^qkd=s{ud zUvn@N8pVLBfw4dE{~rQeL diff --git a/dev/_downloads/579106f8d8fa1f12f463433a455d3fa6/plotting-7.hires.png b/dev/_downloads/579106f8d8fa1f12f463433a455d3fa6/plotting-7.hires.png index adb49245d4d8b92adabb855402acf4bf6a8fb9f9..e890399dc063819f169b6ee00b0065c83771f476 100644 GIT binary patch literal 56637 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 diff --git a/dev/_downloads/5815ed289d6d66d90e420fd31330fef7/plotting-28.pdf b/dev/_downloads/5815ed289d6d66d90e420fd31330fef7/plotting-28.pdf index c3a128ea79f3f20e1f6e57b1c41e3a4a55ae56cc..59ccec0ab7276fd782e8615e09cd05e86a23b19c 100644 GIT binary patch delta 18 ZcmcbSawBC!mp-epfq|j%=6?N?OaM#b2O0nX delta 18 ZcmcbSawBC!mp-eJsj;cW=6?N?OaM$*2Pyyn diff --git a/dev/_downloads/5860560b08ead850923e530e3240b5c6/plotting-15.pdf b/dev/_downloads/5860560b08ead850923e530e3240b5c6/plotting-15.pdf index 6d23ba0214ae3c24a5227ee3122c8ab2a13bbb26..4d88344ce5315256672d9b2827cec8fa624e735d 100644 GIT binary patch delta 27 jcmbQdM_}?Efrb{w7N!>FEi7`<%$7!`+ZCl*J~06Rgcb-; delta 27 jcmbQdM_}?Efrb{w7N!>FEi7`<%*F;5+ZCl*J~06RgXIWI diff --git a/dev/_downloads/5b83bd080155a6f59e2eeb633bda5ab4/matrices-13.pdf b/dev/_downloads/5b83bd080155a6f59e2eeb633bda5ab4/matrices-13.pdf index 6c883cc2cb0309996fd2526f490d38662cc3c20c..1937eab4581902b2c477f5422e4181aead495fde 100644 GIT binary patch delta 26 icmaESTJZ5{!G;#b7N!>FEiA{9n9Pm0pGabnW(EM8PYK`v delta 26 icmaESTJZ5{!G;#b7N!>FEiA{9m<$cKpGabnW(EM85ee7; diff --git a/dev/_downloads/6236456dc31640e622c3f943842d9925/plotting-27.pdf b/dev/_downloads/6236456dc31640e622c3f943842d9925/plotting-27.pdf index 77c98db5f369986db04b73d5daa51f29a98e7c87..f2876ab234f658a26bf96e90046bd76565d97aed 100644 GIT binary patch delta 18 acmexY^si{c1~XP;0|P_j&0Eb*G64Wpod?_i delta 18 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 literal 8763 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 QT~Y)X15^F{Q?60}2BIbucmMzZ diff --git a/dev/_downloads/68bf3baa5f6498f8399b26d3d85ce17a/biomechanics-12.pdf b/dev/_downloads/68bf3baa5f6498f8399b26d3d85ce17a/biomechanics-12.pdf index 1ed523576a52e533a91f637acd878da2959ddab3..c665ee576771f6b090d8ca835ac10d1f9b323c48 100644 GIT binary patch delta 17 YcmeyJ_B(BZn?8%Fsj0zcFMUH607ZNT8~^|S delta 17 YcmeyJ_B(BZn?8$)rIE#EFMUH607b3_Bme*a diff --git a/dev/_downloads/704bfe351153d402a4a0a831ece25675/matrices-2.pdf b/dev/_downloads/704bfe351153d402a4a0a831ece25675/matrices-2.pdf index 4a9a604c70fd0e1f8898139d5a3974a9b029d8ab..32b18a2a3af6e7d175960109535d4bfcd6fcaa26 100644 GIT binary patch delta 25 hcmezNkMG+*zJ?aY7N#xChI^RJjE%RO>|u6d1^}6;3BmvX delta 25 hcmezNkMG+*zJ?aY7N#xChI^O|42`y%>|u6d1^}5`3Aq3O diff --git a/dev/_downloads/76c597139b65debdf0e125c15cd040ca/plotting-25.png b/dev/_downloads/76c597139b65debdf0e125c15cd040ca/plotting-25.png index 39bb84855d3903810ae3258d3c197242018368e8..8178c024c87965095528042a080bb2ed6e8ad64a 100644 GIT binary patch literal 10115 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 HY##kDw0ZN? diff --git a/dev/_downloads/78092bdffcba955dd374da738fd5c1d2/control_plots-6.png b/dev/_downloads/78092bdffcba955dd374da738fd5c1d2/control_plots-6.png index 9ba9ba82f8a08dac29eabaf5b12c281a50f2c7b6..a0dbd0786a80e0cd2e5bbf42107f05762e4dbab2 100644 GIT binary patch literal 22753 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

    ~ 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 z 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 diff --git a/dev/_downloads/e51f495094ca971c2da007d95d7c6aff/matrices-5.pdf b/dev/_downloads/e51f495094ca971c2da007d95d7c6aff/matrices-5.pdf index 6dfaebac324b84b4073bf8c423ebe6af5019b264..7af6c5178628be2d1519ae76fcb55c15af63f605 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%w{H*+a(iOq?iGYFEi7V*%mzjl+a(iOq?iGYmt)FEiA{9m@SNqx1UU6kzxh_q@M~D delta 27 jcmaESTJZ5{!G;#b7N!>FEiA{9n2iifx1UU6kzxh_q-P2a diff --git a/dev/_downloads/ebf272f79479d63cc5b71ad0f0e41f7d/fourier-1.pdf b/dev/_downloads/ebf272f79479d63cc5b71ad0f0e41f7d/fourier-1.pdf index 99fa923b169e39f2a42f62f23ee4160420d7ed54..f33cb42ac7f173fde0349185551f711828ef73c5 100644 GIT binary patch delta 18 ZcmX?9cBpKFfCa0ufq|*{W>E`WW&lE<1)Tr@ delta 18 ZcmX?9cBpKFfCa0OsfmfvW>E`WW&lFI1)l%_ diff --git a/dev/_downloads/ee22a6375b132bbe50ac86a0282c8f8f/fourier-2.pdf b/dev/_downloads/ee22a6375b132bbe50ac86a0282c8f8f/fourier-2.pdf index b14337a3134e64fd70cc4dc3206dfd5ea1c64599..c3eae8ad0e464b9cc20bac0d56f71d4551ec882a 100644 GIT binary patch delta 20 ccmX@Si}CO-#tl~^S&a=0Of5Fwip*pN0AF4RG5`Po delta 20 ccmX@Si}CO-#tl~^S&d9hOiVW4ip*pN0AGR#H2?qr diff --git a/dev/_downloads/eeb0510df619706f09011b7e73e32d5e/plotting-37.pdf b/dev/_downloads/eeb0510df619706f09011b7e73e32d5e/plotting-37.pdf index a84e41d6492608ae66f2a010283d0f4a342cafe0..c71fc527e7b465f372c6d07ab530c1388d662d11 100644 GIT binary patch delta 18 ZcmZpQXo}eILxa`Wz`(>{^Ir{CW&lK224MgI delta 18 ZcmZpQXo}eILxa`G)Wpbi^Ir{CW&lL025bNT diff --git a/dev/_downloads/ef1b602db6b31a5b8d8b9d20a2410f41/beam-10.pdf b/dev/_downloads/ef1b602db6b31a5b8d8b9d20a2410f41/beam-10.pdf index 7f74c9d34f25b0fd24b6d0779e5451ea7a468872..59ec5c73ebd130a1133c4bb63a486a69917e61d7 100644 GIT binary patch delta 16 XcmdlRvo~hLUM*$|6VuHHv}&0FKF9`( delta 16 XcmdlRvo~hLUM*%LBlFD%v}&0FK9&ZB diff --git a/dev/_downloads/f0b1ed1309beacf065f53d41a069ebe1/plotting-24.pdf b/dev/_downloads/f0b1ed1309beacf065f53d41a069ebe1/plotting-24.pdf index e224a20e7ee5c57a591e7e1cc26550baa6b100cf..5b2ebe059114ce3e38315f04a15602952e8626b7 100644 GIT binary patch literal 31887 zcmaHT2UL^U6R#Z=5m^;bsUnLmRgoqoD~PP3prZ65O{5bdoe&ifkfx#{2+1l6QVb$B zQi8OIl&F*-AQ1vY2oNBKPy%`POM?49=e_gJ?m32=FW+r*XMXdWnJa(c)M@3TD#y3W z7Y@i2yx)FQMoq@w#cR8so{Z|{umE=%RU_vc&OZJgGO8DxJ=_s8$G`)ZWDE?pyZgC8 z4{HC<4^I30-H=h|KA>uC?&9U{dP7Ew_os2_4HJtS&Ntj;j`JEWIN!M89_S~d0sXmM z)#AFdo2Q?Lj3)ovKz~;Y_Zu>HpxaZY!BE^oZ^)>g@dZOLI(d zXxz}~1Kq*sc*9q{1^m93VKun{~gy$6E(Y}V+UlKi_w%@MUFImi$J3rZV7@Y{r+vU8oN{;d zcXNk^jkpo$?(DlgG&8Zr4%>M4p*stcT`3oLaAgV;zK*GiyuL2!l4(-;mM)=xI@1`N zqK_jOzGIu+h6W!$Y1Pb1G5Wf11iw7%z<&LIVF3R71+CtmZ*3R0S5g) zg;8u-B%(M(B8*LQ@<_z=AcQEWR9bGPEJ1I-S#@lW#rqS<*BY$rJ?HuvPPYhi>VpQd zLgzDA;;N*Mv2RlYd*1y_sH9v(rkl)I_S;0y%c%J6d zBryU>{S=b{=I6oi^d31{LS;$T>#4J$;zhC*nL$##$AyJ4axoXaPJ+kok9+8iSx!XW z)Z+d)cJ>nE%k6o&>CnqgL(bJKb!L+`?~kxhc4PLukuNMxkhm3|n2}1_{Ug8j&K~nJ zqzm-)m`HUlrBCCrG+aSAof5C-lPO}-8bQ6>+B&C>HjpK$=i|NktG1u%yw0WnMMkaY zEjwDxYvcxmUH1E9LX^eb$$v0q*Uh#d%3U*~*xePq#MS;s8kmVzY8y@>s3W?PCfi92 z%^%Y4{!~9O`?|KiA=Fpd_>Dks`Rkm4xgSe9DP3Q6`bAjB-6r;#54}(B@)Zfu%P*Qy zbEIgWzhn~9MhZip$E>qr>fGt;g0DvqvX_nt_sQRphJ#P{9Q6?P>ugWTTh1-jRx)@7&EIn$>PF6hfndA6J4_<$a-yj z@$S2(O!#9Z%F?1?W637Wy=dtofKPmEPc17ebOY$;x@wWXkDppt59(|!G>0i z+0TDDV|Pbzc^K*z@8yJ-r*~iMe177XK(;c5phL%O(NfOOeXAGAcFjA|7O`!FJJ!4= zQEJIH{_Fe+A`kn#k8%gDrx(>Ro9mFJWH=rE@s~P!7(qYt%a}jD^OS0LgNXzDet+ql z^*bq3dV{nil#?C(U z((Qt8gO+)_FaYr)?#XdgFZNL~R^zjr>R7H|4JI{*W3ppulQg8}TyB5ZrUui}IW;HUpvkE)DkzAq{oOa# z57)--!2c*F?5BDvLaUk`^N+}?(p-zZ1vo^x_juNQ9O6u zsYBz4J5^X9t`S(&AFL^i$Q4KzyC zPfiWuH96d!NedG%qI~W)%#xP93s!tcOfOk+etApGZ(TEEza) zk47i+{hU9VgMKb7|4{^MMcPL@A=7{seb~>!TD{L{NeQ@|s&2m6_;l{5%2kun$Yj)# zZkcW174mR;EurRvcf6-P-P%4>92TKy?$oYqE@>>AoYXxG4xO>ix4><%VVWK>T(<5C z(p&b|YmzSX#a=YC@+fTBPpV8mA=5jh*H6SrwWt?66Zo9j^h69k)`FqgdrO?^(C!ep zv|^@I^fup2KIU0TjUWPhrtHz2iMQ@q?+}X^cjiJu4{a8i6XS6*^6Sq@uZuRpBO)J>NX8Sgb$FBb=Hh|HHp z)ey*Kbf=5xEpU?2U8fmqL(elT6N}%(3t8zN)?861~B0L$6=&Skgi`BWm?( z9_-h!Fl+99!>ZJVNt=%kvm2zn?=2MU6BwJ<>h)2S0n^S~xqi{#oqvev`nhy}t(Vg9 zv3OKSkLeHQriII7gW2j#gjA!0@V=-I1hYRZ!Kt5n4Hu={)gy);G*I?W9Ey8PJp|^! zY%R!%U4IoQ^1#;UWe@vT(q+WpM%#sdgTYdSmIG*uEw$2@S!eB_RK139qWB`sHP`)~k=8$Z= zd1L#~95C5*xe&E*sR$z7|dh3;l#2?2m_2%=Rs_e!f+cRd7}p|$JWLS3?w(B zpG7?oD6tEYP{vlrh^=Ju7gN}9J;KpqdpxjY7RZH66Gief2R&h)9y>BZFFNC9cQfm_ z*CXRkWwA+r4u}5wW*Ng0EoHu~*$N-}VseyO@sGs!9uo}9fAjFyk`pzT#f*ka5lGv^ zDwexE&=mFNL$hygJ-LCcDKGReaXYYoILFXvN8mdcKAx+ev!UL2(kO$O#epXcySI9^$e|hL5sqhaROX zl8wK_S^Qp&!;IO?=G8_TYA>gc=>Z(@7v9$Kfpl1Jpe)#8a!`jSP6{^MS()YfCU?e) z9GK4{{$&}NUxbm>qnix$F39n0j&1vMT5Vjm9&6!#@yb@TYl257g{Kn*lAg_Q(MGXj z52cwMXC5||{eI~{-A)?KwJzfGre65{@zcvg{kyMT+n0Nff>{mCMp*q~AZVC7I5Mger%r7!os4+e@auTu*ZH&3d$mYPV z+TL(3(#&aP@1xM!|(la~M} zWWlR_!WY(yiq@2Wv`_fh(4)fBP>U`{_3P%J=E;sd5r{PxFPMlR-|{#Kj7pw|Uhbe> zx37qYRPee2OmL$V1$nc}e&wWYg9zP8y`)pOF~%e4#A`F@rg53Mx1Ev@(5vduQ6>Q_ zD5-U<*G=~o>&lHakjg*ZjC(~YH1Z3y#cVMJYWl+iCGRD3{iGSoAAaUYRpApB zvg5;kz=P8lS5Mz8Sh74jiC;;bB0^dN==2oV79-uR4?B5!Nd%T@1N0KKoN}QDP*%|= z{9HQp#{236-w)R5t`@(1f=B(dip(csva_CNhM?3-Yj3iVhB@vF+52OnJ6x{;1Q`d6v+tm3d%{LCYc z+#thI-`7R_actx^;a4>>No%vUHJbDaHVOno`hclk*G*?W8X!3mV}Pbg+3)@UF*Ve% zP0hAX_m!>f12j@x_SdoCJ32y;n&2!M?E>Nj*$}B;&fCXKBF7)#W4|pqBrSYzCHg}c z0*kWhG=STmzZ0e>%SBSEBxYmvV;;zA2$i+EyACsv z`h>4ntZqssOnf?iyW*+QjcjSFr0+HNV5D*E2ViGexv7e)%2Rvv)@&} zJCuk2o!Q|Z#}~3vAXCaiG~WMk5lsrl`s_|dS-}UMtCA)f{xlcQ10KM`kfP`*dj=>d zO!WwI{PUZjrEs81=LS;TU>%)z?{k4hns^5lyBqj2JXndwT3zsl@l1Ct)%k+n0yWL@JrKo$TwkKlmnrl}Su9*X~RoQ*e_BasBGJGQw%! zesVhex+;fR-Tk1GeJYke(28Q+S7G@bKg`Vf-gvBrXtwjlR)q21qFnYZ1vn!Os-gKc z9VxOdK6aNoNe2U_M%x%A54UKkf4x?ApL6Yn5Wr@np!wMpkB?#K&{!_&WG}VfKw|_o z_;U$I3YL4phIxIkaOWX(8Ir}xK*GGIOZY2p-EVWl?j{dTN||KZk9hA>bt~EbJCH?E$ts@T*_V3`%;d=3Cc`4i}dm4*S>M zr>*DNnL&cni?5HRuIkE7UBOSY2#TT=8i-E!ImT`;9ND#FG%jNQ?ciIC%1dufY8emo zw4HZKs6%FIcEDIAmAfAX(_%Qwa&jAWMZ1Ht3?dCbvUaDR6MpM0+u0FnHk28qeVzMa zbr$17Mw4&*z@9_?xY1=_A;VN6CLg1EGZAdkkka9p40GEn$vi zpYrIpnr2X6A05>M7y$uoI^HSzCRb1vclWRC%JLC>>wED$E@mkF(dQTCa@^JZ6E%3i z84j&(Ng7eaaNNBIGGH@;2FVAgU%>Dn+^foF6+BUbl*S|cNM=JG-y;#HGbhRYKfb2$ z9g46skD(D&bvVJEmpz@}I^IKK)e_^iLkE`+@}N21X}2rnhrVFzXL<T*~3&8$ZNi8IM*FI>EIFSokS8EC%w zYM42)u7B}*cJLo$)xf5K;?HIit1TuwihrWlPJLF*OYCTzuB>MTdJ$96ZVT!1RyK83 z$5rRkFEjg(NG=k5^?@D|29zBnsbZ_k$~B@qv~TK7Jdl$9+ZGbP)Rwpp)aLk|?kn(^ zr^?UAo!Hsef{gkKA53}Nk{own@p_TvQ@R-4ZlLrv`f!MT|4N6LC(lD>%)ljKnz_B# zcp5}(m0Gg>X_Zu8tF!@pQjc75^J8rs9v!%2u!yXdIkdD1xja~4J(PFCzG7#;aBdGa zTetC2eSq1}LfPfsNA{}6;=a`9oGP>5@+g5(x&H1M!;hn+OU`mErf+i~@@Pw4(VZbm zM%IGgdqtnKUg!0XCrWPf-TWw_!FGes&d2+$Ysb>OO%APJcrcRmpaMM+#S) z8g!HJiZOKQ=FH}4MAjb%>_fly?xHXg|2~WodqgH?VQ1`-4qKX~rztWBeRq$5=g!X4 z;Ts~g^y-q0gZAz}{s^XD=lC@2rtxVR=Z*2&or!oX#Xe7Xpr|B=jeJwLo!Cto$VL&L z3z$tMlB$A*R=u!R#!Z1pVHcm_MZH?-So_a;<&QGvQXF@Gs!7kZ>C-+}N{OpR16rd- z-+$KKv!@IG8r@dEu;3jgF;x2*Iq5xdNY-@+X^ZCVxFQqwf^KZ3e;c-PE)l;ny1aWp zPenBRFOvB&8LCuE5u%KKhw-o|#;n;(6vgsrX816CU6gWb&8->7+sXccibjx74Ii!^Sbil9 zf1^9BVSJplbWqiC?ep7mdW2U&{VidjzT z4Ml{gkZ9_gO;rB$kou57r=v0{U#Q-NX^8{N~|#EvUsG|~i4uyk*x4RnwR z#%B$L48p|C$3M=JtPri821lDRGFrIW;>eSPMUfCfQrqk)TEghb%&@tSh#Z>kHd&{X z%LA(WtbyB0(3xOSsz|2g6Cy>blj50SpR{-WqP4sF=pL%eU1GE1&a-Dd@Ta+^Cz9=a zVh)1Ca?L|vrL+h_5H)j;S>>2g4>Z+p{Hx7)Yj?%m40xeptexM2lOao&;+Gc>xRcgrTShV2+zSw5S~_dcwja zxzA)wZ{b__aZEsBkhIXW=XKSW)`!1{!uKd72{GwQQ87s~D;C2KzIr;VI4|hR8+#|p z2VN4sYVpGM_D$mOKU#HT7xHe68pT)=cW;K{_KrLJJ$1}Q?C;!jJ~Tr%v+!=#kG?uu za{JW{?0*JvL$s(69n*1q)mTQs(wCJ=x_Skz;yd-hc@@1xGV9y6fc}Q*VXmL?$U;es zAvc})Y`@14AUN-ISrECdZ+cWSqGf9JLn5FmW`52pAOMh0YHu#g3;0Qu*cxy}6`fX@ z*22Z?MAt``C@b<>Lu)Lb|7?hr{Q}?cl4%3bQx4P=QgGlP2J0Ht_&u}K3YZPcgx9ox zYbIy=EZz-Rs0B&nE0k=Fl0+mQ>nC-!ndp|)M-U%d50u`==&VTgqZfY>5-XqGpP#^S zvPO9p;8#c@r?%R0o{PPUOy=MZ1MzAWOKTk?k{|_5KY^0s^nPNEBc@FT+JTv^=R8x2 z;lfIG3x!UQVs8N?eD5m@&0w8> zV7LZ_(c6n5{GpPX(u!eB>a+(oe!max2$3zwof*sf(`aqK%x|+yP2t=3+~P9=fXi(; zQ^joKw7K%_Jb;R-4|_?k$^zgT!msA5%O6C!bA!Qj9tD$w|5!tCWZ^MuNQWLq znI0Xe2m|VfzwlMpp@qjXVu|SyIO%_{@&pXFNdI<``y#yKnJd$2Fkm{NJpmT}jCTT8 z6&2~fEM%_JJpvkO^nD>40snd<9cjN&iX>KcO?TMrbYK41Tu8VS!rUn08-;o6XEBFX z9;bU0+E_YOkiRH7C3^t>eg>?GJ&Ne2EhXc@pEpm!+qu+y*X??o=Vq8ih49f|8pX(w}OqSsXktOwEZm zo<@huz2+61|Qb*ibQw5lyExXZ1i0Z$(Xjhs8hkJKc*b)%H`Y90#nv6kNxow2<; zU|))ATY;m6$J3Ad_1|8z-g(n0K2+>e@2x(1C}0eu$eDjMe{H1I$Zd&|-w+#)(z+3I zzD4_KPoQn@qt{PlWSk_%wuC+&dB52*nF67dkZOZZm%O5_|Jk%U{h_ou=Z@sY^_uee zqksJ<)rM)+4PJOq#>Xd*l{6#DQfF9OmC4M8^1p84+>Q=T2#YxhU42z7rw>q$bSl<) zA-HRgv>HQvGP1|ZdHTXr%>t*8ee&b(Fc%_K_J4Lq-?3DX^YHn>F8?|-sx z%(UHQfckz@Wtn`Ow^wk$au2r5a;Q z5WoqHDz1*phF7NeZ>rSr8(xU#`fviHD0W;`SQmLSpbA6?sKzY3*d0!?IJ(Q*)T?GI zuzx9}ii*xoD@4D#*=8^7mJt2YG=!~6j~M)shs3qy+@dkdRqc72z1J}v##SjJyB}>e zFrRpFK{x9b#19{SWu0#&{8s&%S7KB7TSqG;q2YSXLR>81hXU&-`$4M^)IzkMa78+J=@iSIm1R38f2-n;^KQL3w^|dT~T=k`y%U5<{1$xf|8*&Lnj*9Lr`D{7Q z#?^i-_PSS@{y?)JosA2+4!KJ&CQ17`(#xda3V%XQJ(BQ+YbX~Zq&Vk0qt@IeeG5np zg=FC)qlmu{%Ng(Yc^09+VLateNeWDjs8G5B*rr{QB3g4_9N(ysQ=LUYoJ-*o5*2Ln zO(f(J+N{=PGggqZNQwvifFdXsv^=BTvX1HC`wWo1KH`1&G{f zu{P=Oxo6$yR?pqFhT>_5BlMd;eFEX9-CX;Kj^^#|B9REMQLJrWLng!lVXhs-U_!Ip zewMFUhTWk{>F1*dJ>6%COo}Ca0ap5u# z9-DUnu8I`2G_y@PhEB_PDs@#=ZtAiiOI`RD?sK6wWb`5oHgeatAyIM}9WmueQaJHx-?9Rkgy8wv2ug5^uX&2cWcLq%cLL2?o0bl8fnup+W4K!wAoy3~ zN4Ku{i(krHSsq;2i!S)~Z<2Rq4^i}-%JGa&zZIH4p%>RT%bGke2GE&0W^sA^KIlaL zaTL;}0iu$Oc|jqc0m}nA=?6IBlt?Sxx=vfG(7~5ax>J{JM&lA>#XZI~D&SA`mvWmT zqwrhb*T1mE<{~B!z-55QgowkD>UfTv%#9_YY|2I(K`{Ko*kivVv{3B%jEwj?ctO#+A3%NfLx z=8A2EU%i#{iUu z4Yws)ka({XqICRj>@8b=3{ruvt->L8G0LVZiHP!0eVQ+qBQv@e;}YIjqkYH1#dLK! zrtFqei`TM@Yt{OycI=!-_PjV>e!|{ zm%G6==_NIHYeqr%?Cuz;=8I9Yotv9MfPC3Na=l;JClB_J{%Tau9VmQz(X8AaU|4lO zugs>(=a}HPdLUHdllf)g$E+JGO+-wp9YS$UNXN#er7IPko=I2ADvzL2a+(0Q`M#D4 z!=hZy9VLc0et*gZwPy)jx@e&#uYw-k_il~9iEu5coVjiWAz7bNz6LwH?TF`ZW%I6) zXE@9;@aMD0ZHGu3Cv#rb0Bv(^r;O;6y}32vd3dU{%)C-9v&&BczpeQh{^-WKws&=}h``xqXpSR~&abKt7N!Kog^ioUK3 z6p&N_jNO+G^|Wuvm8lQP^JCb!@i-lllA7-o^SR{?`7!j}`FAPm-Hr@af#SR0Dp;lY zw+gmT(O-$;b@HLw{H)hi|DRLnuh`H-gZ8%rC;G! zU?hHH{b*d3EZ0ri_D5TcN0Vn!)EwF35SK_J8;tJAlmG3t`6mAiWOsBh5@kh(32pNbnmcsCs6S{f~ct}`s|*#sTszL+qaw>4!@A` z^N^JgQMw==5l~}b>jBSkj?5H^p?#ajV-@`(&Z)s<$asKneVj}a zNx|2G@TSeGc5q&(KFb?~Vj=8;ccM=@jyOZ1|2`%v1jPP{%=xO4;KvqF6ypVt!Wpyi z^>_1&oesWTA$@c;qhQL*0k()?CTmLxlt+CD|3E92G|?BMW%1sb4og{ipZ4$ERsbZO z=#|^YBc8bdo6w@H@Hlmrzr#T(1v#|yr2AEip8kPt z%hlf>+Mx}4?EQ^L-JnBkR%{RPuTsYXU5Ly(aEHW(h8T}B#Dn6_p{(N=cc02F7{G5( zjBfU$(Q^y5>;IR{%Oe#86Lww;9D@*$SX8jyNucVj2#S}9?BUScmA&}z{L!Tygx(HD zWf$HYYiZvNTQ=5CKDyJDi2YMcss{C-m^`%dt0j72u3_SU?KU{e`BTecoW>x`kst}nhWq46%GnYbcd14Bz z^4$FgyCVX%IZ;IK0RE0rDL)ecgh!9ooSE~t$v=?EI+M*k@&g7_LoMxH-V>W%eqX|@ z;EcBpd0RX86Y1<%HPGB zpTG*4g3uD*a!^WmkQEq_!=)f^#Y&E(HO|o~dam0?9v!{cQMQtC1{c*X)!}OYFXrf# zRM?ZfIUowA%G?T)HlHGr>Pv0fN2ubJQI4u1Y6}H6S0TIzKNiBSQQ3~*BN6J?Y+KT8 zgiynC%nDt(*xT=VJ@dgGniCIdK2UzRhCfOXr4yo}qQKm)b`y%VnrP4bwp;_2?|V2F zZ?K=iN;Zt+EAeslRsD8K#}UL!n#Hf#>YeI@Tv8^-;2CbrVr2v;r36d;ppbIU$nq2O zV6oD=BC((e+(jbO=gj)xEjQb4*+k6sX7z=kw}=6Ws#$6wcL1tm6W@ZMaMMvNBgvEd z_+L7CdByg96Q@cUz;u%JDH-qYE>9XG^e{Rq-UQDu8p{9nDf>{%%=rlglrC0GQap0* zx)~t-FwJ>kd2jZueRTv^>Jt!xd{8X)MXy{O)p!w|N!VgFJ=#6+2}AgH;*Eday>b#g~tfXg*^KYe#txS4!`(GE%~@W>0qRtd4xqAP#O7VPESXAB~CZ@AzhsgUom5+Zv9}Xt6efYb-g)Py9&Wt1-m$HFgc- zvCrBXvdLDQO!s|HZ6K3@Ta7@+jrv+hlt0fesIzTKC@rS0SuHI}x$em>mVvKKLuH>L?FB_&+rVz!TzL zTfjc^K}F~9R#d9ub*Lsr7cEX;#vssN0iQX` zm{-tA!HQwpoKH49b)A44WS-&L!kQVpk+7O|-itiD_5qg>kqQ&^%=VKs)ks5w)2gZX zjLlsAMG?M^4)JTjop$akyf&w;SuBcBU*xMV3Gc&R5n}w!qQA;C_MN=V*L0M^*VODb z0kamTcHTgCMO<0F`-5v5)Wf9gg05egI(z$fC#P_E4rh1{S$cJ32i&^HMC}9rr_|zi z&-xy3qVA9JEV2E#9QU;wdx%dTI2NhOMLMlwNf>MQpp4q9#=_lYLYe9@UByXErfSZ&Y_btN}d4x3G!OU{^wbgleQh- zh5diEE|EBn7j4;0C1CG>=`;4^<3~=!706ppy6B16TfQE&Q+5?!VTe|5}~@dzsts z2e2joJ>d0UYx#ez0c))shY%wrCBbvLfLN%VY>xa2nT1qN?OZd@LJV*mKe%@27br&E z*4mJ`yhXY6;aJ3#hifLaEE3ldLX_ug4@cXUi7n|Pd^r>E54J3^+<^b%yk~)B9O5h~ zR$RG588|Ox_fuRE7g%rQxl)zULQ#;UgrD^Nye5(Uv+O9`R-Ro>*FzfW?9?C~T9dM` zwsfzJyLn>&C($(<>vi|;u_dzu2#UeTglj%|7QYEqZnbRz(!Bv7%TI4ajplsK~* z{saQ}oba-!ENQieeDQ=4%w9=lQXc6Xf0boBB+2QmXaD_jgo_9TQT~+e?ooxNfm|${ z&Y_3YylS_r7~$(GmJ06T^+dUg~8Ks%ILlGgEbjY%m&ueEYiUdW0**_@L#(Smd` zay9S-;tz@R|5xUr^O5_X6khsI3T^(A!nglPVL4w4>pAw0t}5Wjb7iyszgD;ZT04HX zRtRmFA(hEAU`Al3Qz2f7z*>*Ch&@?9?ST36JMv(!AB>+FhJ2o zvFD;5i&hl#=J1oW2T8Eu(3N+!2f&fohid!|m(eo_(4!~#pG!Bg=*!zXxcs7jn71z+ zrwgehJA(y5#!$!nZ}(OWxGL4)k=6F0=c2ikmp;R2+qq`mN>mee8c1KdzHL>3z0weH_FLgu{-YBdam#*bOqd56g>8j zZ&->5Us4v8TX|<}2|IXpbmUG*qVTI%PGC0*hraq)LNY(4}#0B z?p~`0uT7sGX#WQQR8;c!*DobNvH*AQ@vkJZ_X{-h#g^ja^}bdh88^cti^GwMdt9Lj zFFxxxwz@f$2)S&th~^U3VwJ>0zTZYIHZ6x-X~>p~tqz7?kygIXKP~321TT3aIp+SF z*Zpd#X6^$ww#r%77vj4-Z5RUfO0B~Fr+hd_lH<&)^20!@$L5P}Hp~TnH|$P>WIxJIM#(POu{q%0%*!;WZd;TJvYw;68}w!l10q&KqZj zMNvIYRu_cDP$#HD<@A;(w_;B5XrjC)zum*#$~+>TGlAJHwNX9c2c0&MHZUJa41@*Rm(Y94iqHDpZDR+o+w8|NmEuwD-F?Q)dZMKq2svrgn0V`1 zCFs;gpxcKHAy-t8qfflHcF@v2O4bgVJ_P{gFm2THRX~oAtHm1Y0UHQ~d~8(PzW*%M zI_`2fOafwHU!F2$wv{`tX%n=618*BrIcPZlBglo=5^Zg*9c4g$_ixTHdSgkYXS$sV zG5NVH3axHAnkQQEQr0m^Yr4n!` z^;QriWtD-V|4rZt>=0c)<`0m%!i_1Y614TDJ(9aeiac7NK)l^f6aDjCFsSlpP!&qEIr>Afm21c57v3snqn^#4oGh=QofIeAm55P6P(cvfx;dda|ft!#X)hq_+kvCCmULONas+pX1^eHbdLWs)TvSE}*ShP72RI*H! z{^XN1MO5u*7=M}O_E~9BS8^YLOaX32Wksl1?-4|$-CffNxuKcRUtG^sm95O8&`th^yk@acRm$Yb^7b|IqzEtNipQ?dzwTm? zN=BdnA5-ZK`cLkXlInkO=Zt9=U!5QPCew2UjzNe;9H|#4&mueZC6cZ(hZ%)L4T*k)Ttp`sW^iz

    o1# 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 diff --git a/dev/_downloads/f0f9e180dc0f510887f7768447a685c0/biomechanics-13.pdf b/dev/_downloads/f0f9e180dc0f510887f7768447a685c0/biomechanics-13.pdf index 01c6a6e3b36bd2cd7e519c0c5aa29b05c063fe9e..f57c450277b77df67e0346470c150f9a94240436 100644 GIT binary patch delta 17 YcmaEu@GxORhz^UXsj1=S2pvuq073Kx%K!iX delta 17 YcmaEu@GxORhz^U1rIF?42pvuq0751O(*OVf diff --git a/dev/_downloads/f143e8af7f67232f463360136b513860/truss-1.pdf b/dev/_downloads/f143e8af7f67232f463360136b513860/truss-1.pdf index 3559c42603cbcfe696f414330cce9482a3a403d4..583d79e7b0a91231ef90f4f38f85ee9af94a416b 100644 GIT binary patch delta 16 XcmZ1>wL)scMs8+H1H;W*xJwuTGLr>$ delta 16 XcmZ1>wL)scMs8*!6XVTWxJwuTGJ^$l diff --git a/dev/_downloads/f80c921d3706d4105017533fa107b084/control_plots-6.hires.png b/dev/_downloads/f80c921d3706d4105017533fa107b084/control_plots-6.hires.png index 3c0c112705127e99ac4a6af7de757f22650a9343..9b9a7195dba7c0c914c0e82774b6f18c4b765cfa 100644 GIT binary patch literal 70520 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͵wRH4Bdqs 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 F{|~II4sieg literal 70626 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%0AtEX$^ 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%0Ag3?X@lvXgK-x@;nr1*~fyTLR^ zs;c2p3*0Xh(dMtVxfv8ocRv!buT4Ut{YCDkqJe12yE7r$8QvyaAA9EYLT{vPp3pN- zwDCloyI?LtY~?d_`$_%dLx_Cw=%D diff --git a/dev/_downloads/fd56e7819f0c6e7eb6ed1e026733b894/plotting-36.pdf b/dev/_downloads/fd56e7819f0c6e7eb6ed1e026733b894/plotting-36.pdf index b95ba0b30b19b1efd5d2dde38d81aa205ec925aa..1d6587e81e2f4d57da70dd7d642f8ab27da4860d 100644 GIT binary patch delta 18 ZcmZpQXo}eILxa`Wz`)pY^Ir{CW&lKn25A5Q delta 18 ZcmZpQXo}eILxa`G)WpbS^Ir{CW&lK_25SHS diff --git a/dev/_downloads/fd7d64e97562f1e8bfd34628ef58f000/plotting-31_01.pdf b/dev/_downloads/fd7d64e97562f1e8bfd34628ef58f000/plotting-31_01.pdf index b0abc5db7179c677a116740e67e5f8fb40ecc279..835bed91606ad81587dd0ee574d47ffdce5562a0 100644 GIT binary patch literal 20499 zcmeHv2UHW;|L-a)ZV*^j5fyQnfS`hkfGafuQj^d-D5A2fNNk9OqN^-6 z3?d{VT~t(>iV#SsB1VN!rGvbgxi{##`+ob*|NY;2=e+aq%$a0z=iYDqe9L%e<<8B< zsw6cH+{!zR_}dS0Bs>w%*zbwc)58_BS^eGw1<$b!-4(uf={(SLXn{7Wld)B*4TnfEwV6*8mrGQUd~9{pfg2^ec{F z=}vX=pu6EI@K-;Ev!!bQ-WFMQvoS)7Ye)c|U`j(s*a**?;Mo*!{|z~$zcYZ+jZ*LD zickm0C+v3hX9W5=BmAKBBkS*Qb@8BXWP~6q5|Muz6r!3oUR^^|je<;1*n}{K-0hFo z0puCc=?vr>2_5>aFwmbx(%bGzcMEXGli-TR9^MGQc!IGvB81JZ&I}hjP1@BJ0+U>+b{n*d@AlY zt9u)X-qLq>j@LA_+_HB$eerokoKjRD|KL<&%fyhMfj@+{eZ$&yO;>*4xB5G0M+fy2aC@y4GyE4t|K~{Lm4@FR|ONobc|^ z#~h)+&9zA?e#O~brKHy>yQ8;?`~QA&&lz!UBTpPo6=PC4F8X|Qp!0*RY3&1rrKYR= z4IjjgXY@jn#0Asyb_6cHmUf^K%xmY@WGEW-fO{>%M;E)p?m^*Doyn)C z!q%K~lHKe+$$7q$04%imlft(cK5O$UPL8L4+D(+=tk^7-Xr#boQl!87wkyo4+b zo#rLvpn{vc>gDhwv6#RUYi!7(VGlU@i8J7A5=yK{?=+raS;=V^@^DPKb@kI$1#*_Ll6&ICIYH;{#qgj4M{@=Zj(y~Z0O>TF zHFu@9?^nBb+N{4ds4LQIT0WsPuX#_JIZH9MX=lWro%FY>SV`G!s%TfuuAwq^iZ~a@ z4rDrp$YDkx!L?a$xK?-Jhc-+@gW4_Zf`B}z?(6&R7Z~M2O%_y{51$vNwgXkB#m_q_ z38oMqc6eBDKJ1)|cgh~S?4l|${~$tKLrJtVc`&BD`F25Z2=%Fh| z*@ff}`4zH)w}U*QXslh3l9IW5h! zfw&JM_ItmqXYF&=8eS!h&1k@?dd^mlfc%fYk_vwb=hv&^M7E~3JE0QvYimy!+I=Rs z0tmNv)TqRAp%U;8W}|RJ`nH>o-kUzzQqy@O*VSM5vrp@V?USvqhnv`*aOy^rwQQ?) zXE52s`l@)Jdvcn9DFeRyP2P!1Coo@)84n%4Jz@h)(e6S1P+(t{XkZmB$yj9Zy{56W z-J{daGr5&*+5uGKHkH}H$~VCX+Egv^+@Nbq<&!s5v4r+V!kpTIdE*>yU?HB7eDo*G z`%By$RX2%MfiI6HbA-0BbCMunIG;2(5&?#nx$F`jk$nX6ugnl&7UtL1x1M)%nj^LL z2r9u-G>os^HC%md4|U-BTir^2r?y#+q_((8{PQ=`YNLl;m=DXD zvog}|H_;#lB~^W?pi7J7&2Kn!k3$7SNC>z=4yA|*K;KAaG#YsJkpP~mu57re3nr8{ zVD7l@PXMY_vvV-%3BM;^3H-S8{0U*=ICPAq{L#7+AvB?}^}DwPIUEM4kSf@8U*B59 zJ6l+)r~w^~!)^A;8JML9P}SSxzQTIZu*i2!)5C_jDP|mLp+4~9#P&>k1vreuyPdp5 z2u-bz7uJxa?+#I&qc1mY-x1AA!g9o+{&m&(UfV`9OEaXTR-*9#!df^%f%9>B?37}_ zM1Sk6v%-fDfeQy5RB--GWnPOBD|7iI&MjCqp3MacEKyc)vs~0D1*C7_P}X3i>8Kw& z=eX%(X;rrqZ_EY5q`>+O9U;99l%?!Mkz0J`Ro7I<8--!!**p5@W#L|6;d&3!BMrNP zo1l4iTCHUh1i;#J@20JqHjX;24+dkNJsboEPx3flhOMB9ogQ z@9GMD3$W^@;&b+&A}FwB1T|k_0-r4VCC{GI3MD$Up0GNtVc;=T_p4)(aoyNY{jI0{ zvtnLAo9kv>qgSdW_WG~B);5uP*0V`nOHF|RtHs(EzcX5uN!{36 zoWi6l@y9Q$@lM(uQ5G03bX^)mEGxN+MvCg8%{g91B3v<#RWR(wOfGQh=6WxRo> zibN2!Bv?&OLkG%qfaN|&lH54b4PuAh136u_9!vl}B{>omg(bmNC3d8Xqa~pk=Gn0? zAXG&nUv{j8-ony%qKtSMfLO0n>zQgljs*_A2MO6FT3-RJc1BGMa4GGQMzS&VollP1CJQ;X>kC0mpCDT9|-}?j(E2#4hrhkSC?Bi9- z1z8nAt0hV4F6e=#r5RYkJ`#zETrGbnT8EOSSPo|M@6Mdp1SfOrX_iV8xhHMr{Y`H5 zrC5BemU6$}9tF{h9^Ne6=mGpe0u|tetWMxfYq&GyG@&u1?r51c{e?+!+NKWg;BrZI zNiyw0z_K;>&-^;-TIt4}a1@6dofij9@n(1o65no?&QU3g3GeKUD}^RDnIqkJ_61<0 zys*^F0Q%_gfJxpRD91I3n=Dm6zy!IXYYm5QFP`g ztV!H`wDRon6N;>X0QsTCcVhv>wRaum6+MAwsLUW%K8K8a45a)Tq&wpo)bF+t$zT{Y zl=ufsP6EGCOL8n@f7-nWCgO?hAA&SQfT=HeAy@=3{k(0_q2e(3@u_Z=c`z>;Olj-x z+5ags`h{=X7>|o{uZidfN{Hx+wT}ak-`{%PM-Lho67UneQ|~}6c*-yM&<}9eN9e_u z+bPPui`c4Z`&n+#?uTA=4gCRSan~a-62`Co)?GfG45(ZtcUQH1YJtLfkV$+LcrdEx zL%U(pdf0quwhByPVA30@#X8#O(2U(QmsfTNPTlPq`(rftEZ6K9P9rXR3GLY;Q<4RN zcbu&dqLnZXyhh)h9KiJf&APR#w2AXv$Bpn}}sLEN02XAlqd zhR)GOW#G(QtIAi3SxI<%WN&)`O`)+_bE%MS0F<2Xsm;?r z0VhMhXgWZ_boVTY50cCPEVGux4{7xMVpXqqGvvdqR`+drqoN%7gf_1%9!_S>;!n%gU-!}WSM-0g3SpiTLCv#H$!FV$~4_J##%v=Sd)u*L7$H%rl^JE%mr-A?SLng2k} z;)+nyoDMyE#jsU_5)NiDch|wmtOjL-scQl^{NdB6QLxQ`CulT~UU!x^+tEr%SW15? zCjCx@*?N2AT5{2|kk)9sj@-~F?xE}gVrp!P>EvOS*{LA+)V^Y|+!x9tD&ihW`RW+K zbcbfmWkRPvsy9_%k182BcG4TpB&??eA9kWg@ASy^weMI)<;+Vpxnw$cIQ`5C;YqTH z+2yqK%c4madIUQ-0cP_H)*AB`&oz+NKRY)2VB*Om+s;%20(*F;eN6j90f7hQPOU?} zg?za9hA`q8{pe%+esn>Z5qqU+mo2lML<{xwXY3 z{T7sBO7rYBLKSx?>xbupZp%SADi3?F77&4~Q*2I~>BULKuRHsEwi=R$Em`(7ch2qv z<6eV(Ir6^&3!*zXlto1y@TnaJVo`~pr>}&@)sq|K{>RTyZ#IKwd+)vj=G17MW6Oa` zG3+~__1q2WA;a%{L-)>hFe>76bKC9@1AyQ1CkCIEV+Kgir<68ajd)nCTzNgL#IjR2 z=%)yvU&Fl9Pt2PShz$7D{gVn(f0SXCQuE4Z(Pb#Q%9|yNB-?<=58!&QioM0w@b7cB z?I1|#c?^VfAqoyzT$XwN-6CndQ@8aFGie)2fTdMe4qN?PW1b!0>vD0sn$L5kIn_U+ zieFL^{*k!&cg(o_2b^WgmXQR4xE37AA8;wBro0d9^HVTd$fY8LFMN zeU+THKr%KH&SmQ%?{E@uMNhG*t(YgdClT|Dbc6MuJ%0p5aWWK%c}Fp({0Fj*yKkf} z2MSHs2y)k#0Wx8w6(84wy1gdMRAWL4AL6`L=_bAwTy@)B)EXG$DvMf^*@@zIZGMZ- zn$J4i4Yyu5=4bqTdG@hMJLufU9-WI5SA1rrSQ5_9N=~hYe(NZ!m6svY0hE@NCie9D zTtMJ(0e~l!$eBY~Rn1P=Bj_Qp5h_yXr!MpsyZ< zoqS=X`5B_3rZ$%vcebs=e?QN$}!y<>fab9aW;HNPw!rRH)mzY8xw7m`nd+{ z7p6`d!hsaT0pPUd{Eb=LVsJ@3YdIpOUSJ!2lsA+agyHG7{DGGC&#F zl^*L>%IvUkH83b#G1X5WNV>LqEa$j);aOWBQofQoNd}_;_f0o$_5P9znU; zYZ{7+##9r;v+vkdsQ#p)I+Nq9ae=%8KVmls-g^~YrEMV80C}X7BVP<+cgy56 z@2{B$*GM@b$eDb}>wh+)uNaP^d;C6wjxc~M%>y&S&qFXNWNrL|&10TWE_d;Z_Fvn( zr?za*%+tG<`^bxXmp=u3Ozf52VmPq_h_>2IT3~s%3?Qt~JEJ)LBL<|ozWZvojL&J= z&IHhXUV86)3rJUd25-kl;Eh_}4jKVJ!tt%5dcqGL$mJ3+1G z-@#p%T|X0QEwU@qVipwLy@dT*VIngT(gK1mwrK3y(;h*wB4;I(cXxi}}@wBqplJ-XZ5RwnJkTmCwW zu~H%PPk`h81NV+!u+B5d1M$p~m1(jZ#!t4w;yUf0Fw;_VU|Th0^OLFem>yDg>o~a_ zg9fD2j76_a{Jl(f)r+9^XVCeOWdk7(l$_+dU6fyVw@t1q1 z{o?SA%$nn|zzVw4ikATpncM8Cn0X@w!c>mTYbn`FFrFR1&O6z?7`PZq71#Ty69DnR zm|7xkzBEA3LeD=R?H0qxWw!P_y6Lkt68M{At>snm9T-o!q2Y-;bHa1RK-8_>byPMA z%EU&ec2?Od3~2=KC+)3d&kG*HQPxLgmce-ok|%An;~^+3-G1R2{d*gn+PC z0@BYg@#rlEFofh$gxB{P_Sb_9#3Ie@!j5gwq}h$spfw^lA37q)z|x88${Lj>Tx6)U z$@%B+W^$b?^GZdUQ%>DM)jk4wsb*b!Geds|2p);&eOPvoW3QvzV@pABMS_Rt!*1fT zCV&PV+A4Pjfl}u-*VJG6Xbfd+zr{g4U<(KaDTy-i*I;6kF)UU$2Eq-!*}8#yT#gD{ zQ{Wtn^MR&f>#0N+LZW(D87nS`_q07DU$kp|!=BYSF&BhTFV+Kn1Bg)0vPYY!8dZQM zk1|?B1VBgbo;m9Vl#{&hRvxpII=1$@oCT)U$1aHH$?G+I2GRRt$D!4iMSj6ZjD`+f{1J?*)^Bro52qSuQ%yv+oQ->N zU~k=rek?;ys(Z@3&XMT221-nsG9+@?Dve!A8HD^^YdwG$@mnaj_YJ_{ zTqJ~-H8dPz9S12@HO1$!>`6GzwrNSlqtzJl*yS^BpAt&VX6ga7GFHjl`8z}_U4C(I z#UY3Vk+Ru4GVw4buSqR#-VYNSF4?El3)<RxctggJw{+ zal-E`O9u8(}i5oUU1#^z%-GbPhV&h?(^zjo=T~_TJF-sA@r>`tx zGIM8dOzU{+nvkQKnbp#9`oQjj*4zbl{vi91$=nh8ySLa1L-b&Pvdu4Mln02i zGiO%s=M#`swi%!P@@fzmrLuUfo+vvLZlZ=mP6df?4{gzdtPWf8*pKQ{LEP`WM-xd+ zd1R|*=>;;hf%d?2*Gkp>p?4q8*u&f{z5*9}r66&RdidP*h0pe!Kf$C~L zVzXFd1UCw!lf%P(SG{piB7^q4g-=@n zMirXzA90^NX`FfW_3~a7uM^xksc3AgtmNn2QtfJk+HW+DIl2yNpMOKwVF^sTn{BN4 zhchS;$?k`XMQ($NQk7dO0o5NNJe3{1cPpIg&Dac!!_W)4r`LA90=e&K6_bXH8zR+4 zF{dQa>NfqFEI%FQwGQfg4DqnC4va~^83$+_wyIsI_<9@*RrzuEL+glKm>Aqk=JKMW zm}tmPxva#>`Jz%v{fre~ALTbj11bz#@0v1LdF~U}9T!c^O zGx@CL9LY(To3HE%A}oMROzPsX=7sA)q1~TqG=PKD3K_Sb zsdk<3>BnjeJE?HlAgoU@mv?1hw8if;UN3pGKznG?{&iiLp{3`A$7|i2hddM2$>yr3 zZmv6=x_Lqfn)O zTGESb|%>LIgzMuV|n)~iDG z;z;fXNR6y)_z~zzEy}wG#}2Y}N-RTNBK3uf%_-1#KUly5 zXyB|R?4UX#thdVY;-@JzYvBEu0X1QxYOA{}9-7(byRIjoaj-nuz3w28E05fA^Wv<4 zC4e65Fgvrb3An+>1r1MbiDrsf@aH8UK&0ovw-%qrfQh7R_R+g?B8j|Q$l3;#ip&(W zawQ~i(Eepzw@?UN$B%tP*jx-JwzwpG?1R}d61>=3Zy)+&5V}G__R*^VpOH@44OR9v z5j3?}(S&zgVfW@1J4h%G&D^SC;T(OS5G}{?<+MzbLQq-wuh)I$^JN60wHc4P0dzzB z`?3o<`5ULo+wY-`fZK%`O#w$?7ITZ?k&hEFMeVYe8TN5c zfun^+**rWto(D&z+3LYm{V;1ECrBU*g;$=(Q_XIH*#Dx5*Pkp>U9N3j@T_S?bT8xy zK&Io^K^HoNeI4~c?*V8rH8!Wwul98GgO1wAh25EI?-$NZSQu@SU>lMJQ?tV3jT>2) zV1!4$(1Rpz0%>;^uHrh03S4K}q;#+jC>ky^t==v4lo?+Wqg!uWh-6+Y<0AYUeD8pyzm>m z5AC8s??u*RmzI5O#nSBvzdU6!*1T072|c_g#0mCiLc_S6oXZ)bur}i4JXs;C%*NQg z8;(QWEgGL8=?CW>xaDh0m3#oT5-Fa)U<}xoLI15Kzl$PNqSd=P>rg+?F7t3p#l>H( z23z?N0E zqHhWHGu8r<$uEq(^{NNpMPF9NTef_}7SR1jsWQKwq4yY|V}6S2#*s^a_F0HKQ0IaM zkN?1=eapfF8v!!pf6gi$J_jXNKeS)V%>~4=i4cYGn76NhHxbsX4%u%G=S|EgsaJxz zj7Ke}iKeg@y7?G8^S5b`XPjuUgccNiAyJjV7JgZ6CKoI|75 zvCFZRDU$nsD4h?A=!0^cquW4-y1KHH*+FY-2e||?l^4ev#NN4upZNRdi+mhWoAEZ7 zlreh7*g?Y{fW*W;s-XgA8_ZVcjKr_=j^Fa-JH0vw45fUOmhGA%N>aio_|^d+``ppJ zTj;SF#R7nl1MiM(6t!}=tNMC112F~LJ)pBD_gbEhYihrW=H)tWH^fAp^IBT*gs8DG zY}G<(n5hCpY@w_f@^mW{vCvIP~bhP?c3#{ z199t2<@fCU3^Jt#-mzg_XsY9<$rWEK3^R^GPcTRa3~i;wn|nYQn8gqlOAd(?!OCDN z)VV?5U_7b22%6=y=w)pPq9?QnAnpxyGhWLP+4(2E~@ArqAOG7)#u zvXl(mV19{UM^N#Zg#g95&fAEeOo13Dy4G)+3<2>`@vOJj@^jE?6`Onox6_ zb%zdtx?QW;=BDk9mXF{eMb_|~>P%>-!+U%*wV}y-ajzFVx(^E)0Z;3LEA%mjetXii z*zTIz##-gUVl}+f-U;U1oO3F7D5Cb4@KUxB)f6_w_uUH?^;1$1tk=7#~_g19XYqhxPMw8IK zcj5a*xd2QP@{hh+0{!CldsT`R1fk{@O@{nZ6IfwTe3C`o-1!XRE)Xn{{-9^`dnus{ z9Mrz4Z4;b{hIm*zY~b`22JPVa%H)?hqff;wJLNyeK-#&d)$f>qy1X$$c&Jq>0?~fdn5HXt=t&kD~Q90_)BhG`8eCW8vMiENzA;E-kaTVhTs8nh?wQ=-D z*akUc=v}`ZI+|QW^9RsD>>Kr~^g6ofLmw7T^@ak9O+LcsI*w;|7)-!EJE{VqRCN`o z-BY+Yd;a=WFlBiWYB=6I47$&a`FH&|Bdx`-Hx$Ss)|FsYo{#O06%Xc(VYw#Kib}J+ za9sepOrQH=&~~Kf*vPAFB(@r*#zHrD505Dnht?MkJ5YWsPlQ#$EB&Wnz@w2@u(+=wHtTf3#SHtw%ut;`s&~}lX z9u(dTaDVau1hvHWL;B}L*34_0(+TBw?|2J6^W+hL-vjJY%U_@-dh%X~=ar%H^!R!i=|I)NbFmX;^<`OKa^~u|ASAAI`;#X06Yct3{Cj1eaynY+!4XELLbc;^aI}LzG zQxW;rT-o=LP;SZk@)r(*OhzW39nVjN{S~EaNT;6!xYf1b^VWJ0f~?ZZrskl2()sEb zO_dDdpps5$fP*LrcQCb;x9$P?(#q`1Yls+p9v(h@Jb7aUX56`>yj322Z`Cju`J8Fy z(bEr$B8q!KJ}$si()B(SL?J`@wY7Jb?1u(Dr@I`^73y%5aX*<1YlHj)DkU8y(4fu- z*WW!2tCuWX3$ITLbiY_K{WD=Z<78`~cZ1YX62=GJ!KRW=weWb{I|DNnxHPY)}?zC>lt zfk0={>p))T1Pk;C+S%-qi1|Pwf`L!Y>6>6Z*JC^8bAJFlV;dH%Wojjy7X$P+S6(b-qf|qkZtd zA|ysQ^mW;bo}ynWtZ5sE4~z%0RGO^w+e3iwGVe9i&Vl*&xPz1BuOf4jGJPrM*YR|ukT$)VgTPz2sYFGR|?AB{6%YjsFc zF?Ad?uDVTPXzayk5C76-B|-U~D>_{OE$p5idQXJGw$Ae~{EYZT0*Cf;DeQ+D$QQg^ z3gHRKH2;`XPm|iZApY|EV0&A4sXV>R?VfTGRyjwfX9~8meb5VQjlx^JNA;lkMxMIb z*Vdh%>Vvtkrvwc=g+Z$4yQ+E#Fbw7wuH|o(e+8iGc6LTGAGC91@`rZ`!@{88_$u@h z>N8<6X{}V^1hR6I-jpzo{4VHi%{GyIF?kE%Jk_*VoCQ>fZI3*AKZG;1CpAxOAxKvY z8R?nPQm|S-zeK7Kh*m9yjTC7OFLtY8{~yHgBi*e;9Uzlq=fbuhMJ2(wmu}CWv6F=m z_Jqm}IV<3joejBJ^0!3F6{H{FC_)#XK=Nu~KMo*A>W<#NHE&=6SU==4%!4(FUd9-^ zlI{%u!_OIV6?qvzszPgBe!(K>KZcHVR;y}6Pp!kV%13_$g)x6`Os)IyNZRO79;0Y% zY=DdGeJPBZN@NK;haJbcN`-8jsj<${8iL#?`^7^=N5Qht4C$$Hi`x~&W0R=|`9)vG zgw=v6x}#xJRZEqy%Tmd$g&iTh{kqM%+NS7YOVpQ6hT+8ImmG#;(U&GpA?2r~JyV?% zqeTbD366%(4-OBu6h=)-w|r?wHqnemi1B}>SD$F9U=45&j-6=v(v~_^Q#4s)IQ5ZW zm^{^=esH{;OZXz-vI-|Z@y8Vo@&`s$Glp#oq5@hvQ>-VGred_hCmciWmxTsb42MsC zIXiC6tQBapAGdr8Dk>F*#@e)oUH8@doy(-Z3o{QN^851snV9mxC6~sYXPqWf?;7el zx*5z0^6Q9wg4FW^c{hUd7IglUz?qmBRQmE|q4mCnbcI# z*DkHZtYD|?Oc*q-X-JvutDHKxzO5)#(@^SELCgCuiWPtK^m~6QiZ2?aeKFLoJs5GV zC)J>^c5s1CQOo1?mh5UqLdqw@If^$6J}Hc}TNt(8>lWM98ascotT<<4bxXA2mj$!q zbEvz2ayK7H8~J!f!Rum8SQMK(Ks#}E!h~ah$kE_=HNW#-#^HhSz_`@n)Cq2C#FSRg zsTJowiG7G0ZGSzy&eBw{d+2^>4 zif)dBJG5Y=rVOKhfEjykvH_xtpyr!!8&u3fc z$MtJ5(`pVIPTg<6@>G>Ulv$Nl6Z2bo*e7jo^ZjjT_ z{9j-#&Pb{lKX+D7{(i%kvt(qaYBcogryTQ)`4ZcMsAgKfNUcq>l6@jywL;0@OhM_s zvQvLtG})BY)VNS;+sOsD_byzRLY29mtywXW|BIKC*_uxtZi7X69bq%3QkSm#2Qtx3 zi6Rw%U69z;M#4s_zbp7;vdL!eX6v<^T|KGRftFOdzpBN4Zx7!eI zo`@rCr^3%`L3a7A`eqT42Ik%h>3!U1G|BN0ys0edhBHXbek z?#OIl59rrTq8Oup7w9*l!07#VzP+h#$RX3Et1au|ziz->2 zf^KQ`+3M=y<{p4*Xs_ravY!;$>FVKZM0fLcMMOog3~;4cqaSuqLom(|#x#lFZZ<{v z1nx^A67l~H2kyT*hdN0cuYu?o*|>_=R@cT;)G0U}gjg+YBA%?JiC5PlVuvO|C;B@& zUY$Y$XLT)f{C_%dqTkh#vFL%$Av!eG5!)l80?^h#4rC%7ZM>Ei@?D*b*F+Xa5D%}V zNyd|PG;zp*r)W~}nwrQY6m`6o1~OI~A%KW{M$hQ)>d1lYi5%f1km^1%TY?>GtTa1em4obF zaWm(}oy-jdZGNiH8)r-VtUkzlxhLs-O|ZvlQ>!(N*MAP3l5$&h>PF}*=j34t=W%7d zzXwG!8mvV8fS@Sa<4>3lV8#qT8lLbKm=QZw)j+(Qq@|;QgbHU@QC$at@qfu_ z+Q}M3OCm+n>RAU_i!$@RU-3F+e`UPHiW5#oF6s|n{~$Yni}(jxzYXA`jra&C{Ofx9 z7CKT$4#l6uMd1$x?qxThUH;+JmxCD}t|-isxf1d$>zeayDN?j)+0x$=vy~<^PHtEi zb4fXD;}haKABt&otdX^;je%{__GLM<9k!0tEzpzS;c_^o>^Fr6XP)CC4FYv<* z;ZIg8?C;NWzL)XPN1r-N^GTTO`$3}f?`KR>t+sW}m_2{w_2|KFdQVW~45ueV%%J|7 zOp?Dft!eg1|IVH!vs@BQ5qmBjmYDUjI!n*u_?6gzDX*33vyq0$^VJOtV@}6y+V0eK z!MSba9*Ycv70R54raC{}+^IFo!hQQZ^`z_DS`$7Ny6SO4bTZz|PCoUl=~tS@=EaqI z$F8M!$(oN5{LkJ?WiQCR@oTAmkl}ZAz9M^V=^wgJe)GG$*kfd} z=em}?V`B)h_8-*u4=FGiNpSvEeX6@m{ltvs=2fr#eB?lSi*w@I*mqOhxi7@$NS@db zubz6)YEWO;XT^Ho3qMwzt;?Ku z;Ewb}+?vJ@PufU}-8fv=H$QdRv-B?-J-=i3c;$S#?X^^8Hz~u5WVLL6eJ#AecyA*0 z6y17>`p@wiN4G9Jdh7D_s#!)q$K5qPN%31So9J4xkgVg1(N^`8b5 zseRj$|6BWb97`Y=oe*<$vixxye9wr=BdmbPqBR6Nuv1=Kg{mkL0&#E%0B<_>p1;NuvKZGJf)OwvT50|93Nf&HtS7 zYa>+{S_yuW?W3PXnZD@!-&e`9ti?pF%{7o78bsNRxF!C2BD}*#;ODy zfLf%s`)i@_ZJl6D#v{C7a~YHHNVxdx&~KAPk>$Q&0K*+tRY z0Y3ig2?W~oZ)yxbw>3Bd(i3wDbVlCR_3dpwE(h@Ysm@-=GNLJvq1XZ*4EkpD)n>@6 zkjO-`CXqzcB&j1EH_d%(zL8gmpX&h}QsEPENG%WlkXDE$QaB#KPhUejap)hO4zH1P zD8#>CQ`bU_;k$7f|8TD+Y9!x{(?nVof4hdXWBz&#`9}HvULsK)DSQ7qj-)~U8+}9~ znTQxK`uCL&4HD84`0kn}>2GV0G|;})cjGkBlK#7E6f#;#qkrG5K}NmlyK5R6f4inl zMqTr-UY<)D1Va+Ne8J!zaK{-BYn5;?xkq_ofe8F(gOK@oHpvc=-*d9w1^tt z%bujAjsWg=<8&yLZ)gedqk4F|`e85cv-AjaMQjaE*v(*|4uT0R8D5(EtDd literal 20255 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

    !3#K& z-BHfe>Own$z~^l3#SJKyK*HcRJyl5WS0WYOeRh0)=bs}0;i8qF*K8i}@=rk_-P)## z;v$V&2CF)Zo&iZi*SMC*rVh8*?uGg4yxt##Uo+!p+a|x%rl~F#-G0yLeh4BLWEodC zdGYDn-y^Sc^^`m{`X#K04fp@1LR2>W_#RPaPF&n8QZ@W()czs|!m97s$HlB0E7vN1 zoY(0dYvfGrvM*ocyK+W(JA-)$a)q9=*}u7J9&{bh8TbaW6tKQ6Al1o}~VV5FYllL7;&>WT*pM((nfEKmZc z1qy3QYvn885_ic2S|h$lE9j&fYkP|f zKo(wz!uYeX(`BZ=f@{w$1bO;BEg(e53W!6HWQWoMwXg>=%sSpf_asPBA_AW2F5X#< zIGSrb^W+rPEH2tN3H^d-s+5qY|BS3id7ApfX>G*%@)y&+ zc70ZL*zNyL0A}0ZWodFY68Jkiwwo$_eMqe!+E1&2%EkP&(NSakP;pzo|NX7PrL&EafkU&2?NT zTJn~ly-^~`=zVBlpx$Pv*<~l&%hWrOnsZH9T-4R8RIf1ZEAgwmg}hvCuls~uX<)%mDQpu5W6Ut_A9P9c=4;uGt4_1dacpBn}%ijOu5t61t#8|g>vSir(JNb4Q5L zrNI6INjSyT#Zh#tn-Zxd%e-UQb>Otqc3^Lav>Ii|~D( zl3QIf4b)~t@bR&ZCd-GV;25L$zS}=xAk%E6AH`H%%&oE|o!%dL!T}*A z6?4Hn)&-H!6tr%JBSRxOR(CIVju<4x>|KA~JES=c4yZrPDTPBIciHa@kuWACsNOK- z{%WoH(Z9OaG_JS62e{3M3~Nb8MXTR5xfbT`A(wtZGFiF9>3`ZKs}{#i??cC4Vh>p=;N ziYBi(e?q7oGSKHr(+ZNfUVbA9M`wLkHU6uN=tJ~@^-iHB21G{`X~3o{d}?P0^!2dV zjy146i4{3IwkC%J<7-@e8W7!M3oh=Y*Eh4sO#|f$8?F*oFE93}-DFqsJislNUu=y5 z5dkGYTie@};*r9%*p$#zZbr7$uRA$1zoMFD=8Bkj_n5yTG-z2GhQlRyYN9J8jM(11 zO;YzhB-kiKl{Chidge@kv8IbSkHr~r98KoygsN|S-j+vB5`0Wk*tgd($iB||#R9b- zd3aEU!%&is^(YbRc||gOvql?G*SQ$WO+?h{v&mNxTnsE6DSUl*v5>PONb{XQbGg2> zPQn&h8=vVGXl5HG6E`ip2Q#(OxBm9h-h3=2ZHsZY{P5ML)pwxZXfB376=Zgo1ncSv z&lj2nPPJwx^=bG&8d5m+Sk5L{9|vdRK(cI7sX{l~@EaNC{%Uy-TCsh61p}*g&<3TM z@1m1pV~uT$p#IhAY5G$<%@%A=MwLENGSOcSx?=B34h&fA^Qns;@M!54t>qBCSex%B zL4IrO3s^6&sS#me zblBoh>07tnKEuN)Xqg#S5s~p<#9jc`M5pMSQ~19C D)mb0T literal 22649 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 delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%m&8B+a(iOq?iGYeF#MW diff --git a/dev/_downloads/7eed1bf07a4dacbb97d209dac2614e9a/matrices-19.pdf b/dev/_downloads/7eed1bf07a4dacbb97d209dac2614e9a/matrices-19.pdf index a8cb9f32bf664d6e9a49ea5581dfc221fc5ea2b6..3978fa041ef69cc51cd3936a9a2ff2bdbe38a73b 100644 GIT binary patch delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%oYYl+f|iWoR|TZ5eRz# delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%!Ve$+f|iWoR|TY`3QLc diff --git a/dev/_downloads/80381e15163e7b0ece9149eadb09772b/control_plots-7.pdf b/dev/_downloads/80381e15163e7b0ece9149eadb09772b/control_plots-7.pdf index 809f5cae82e0106c5cb8952929e5721d469c4d7d..647cebcf000eb310ae3b5f0975e16d9f0a2a3a3e 100644 GIT binary patch delta 16 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 diff --git a/dev/_downloads/81a780d815116a5eb737d2d484c44444/matrices-21.pdf b/dev/_downloads/81a780d815116a5eb737d2d484c44444/matrices-21.pdf index 7915c1e4165e5fc721411990b708bae97d062d0e..c41e6110b8121144afda7910b85d7cf9ba59d938 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%oc`5+a(iOq?iGYt_Vs1 delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%!Z~W+a(iOq?iGYod`() diff --git a/dev/_downloads/81f16477713a2ebedd53f1c8ec85b754/plotting-12.pdf b/dev/_downloads/81f16477713a2ebedd53f1c8ec85b754/plotting-12.pdf index e8edffa02f4edb56de575b8e6e15d56669ea90c9..436f0f607d6a396bff015242d3ad6d5a1368778f 100644 GIT binary patch delta 16 XcmZp%Yq8s~QHI&l&|>oznE)mLGZF=S delta 16 XcmZp%Yq8s~QHI&rz;N>xnE)mLGO-12 diff --git a/dev/_downloads/83ec70596dcaacc88e256e7679fafcee/matrices-12.pdf b/dev/_downloads/83ec70596dcaacc88e256e7679fafcee/matrices-12.pdf index e381b92fe9a7ebe96592ac50e573832a42c442c1..31d6866a2ccb9c4d74429efdc9e8c357245eeb7b 100644 GIT binary patch delta 24 gcmezNkMG+*zJ?aY7N#xChI^RIjkX)_VRmK)0FamojsO4v delta 24 gcmezNkMG+*zJ?aY7N#xChI^O{4YnKaVRmK)0FYVj1$$=RFFbD+R delta 16 XcmeD8?)To{qr_}vY`)oF$$=RFFWdy# diff --git a/dev/_downloads/8c3e8789c867600d80b2cce11272d81e/matrices-15.pdf b/dev/_downloads/8c3e8789c867600d80b2cce11272d81e/matrices-15.pdf index b2d12080e8f13a310750b8c1e38ac7d2d1b4f4c4..5ed1b828cc67fbc4b091b4836cc7f23429d52d05 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%;qMB+a(iOq?iGYwg^iA delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%!Wor+a(iOq?iGYcL+oP diff --git a/dev/_downloads/8f6a7c938e347f134c67566d5aef740d/plotting-29.pdf b/dev/_downloads/8f6a7c938e347f134c67566d5aef740d/plotting-29.pdf index 52e7df642cf429859ef3ef001e21a4adebb5be08..38146f18701f99dfe57d98004eda86e6484f2983 100644 GIT binary patch delta 12909 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 delta 16 XcmeCM>#*CfRfgHvz-aRhnE)mLGiwEZ diff --git a/dev/_downloads/912e64195566ca0058bfdb868fabd27b/beam_problems-16.pdf b/dev/_downloads/912e64195566ca0058bfdb868fabd27b/beam_problems-16.pdf index 2622645374a6267b9edc0e4c968a2db1b1fbbb80..ebb385f4a8c3f187ddf69b6dfad8e0b2d18c82d4 100644 GIT binary patch delta 16 XcmX@*dCGIcY(-`ZQ_Ics6m^&ZJ46ND delta 16 XcmX@*dCGIcY(-`x6Qj-Z6m^&ZI^zY; diff --git a/dev/_downloads/945e2a45816629e69cae83f93476425f/biomechanics-14.pdf b/dev/_downloads/945e2a45816629e69cae83f93476425f/biomechanics-14.pdf index 521d3cea40968df484ae5cdb6382418e08402627..3119cce538cc34a8373e888102a3360ba46b92bf 100644 GIT binary patch delta 17 ZcmaD5^dM-%4pkOYQ&YpudsLS&0{}-u2LS*8 delta 17 ZcmaD5^dM-%4pkNtOC!t8dsLS&0{};L2MGWG diff --git a/dev/_downloads/950e4c42a3beff8bac74d47e0f8d8516/plotting-24.png b/dev/_downloads/950e4c42a3beff8bac74d47e0f8d8516/plotting-24.png index d1916ffe2a6bec93aa992983c2813a7efe4c88e9..94ca4bd075f17aa50d37134dcae795f600edaa0b 100644 GIT binary patch literal 8373 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 literal 8380 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 WNH}fSTh$p1f>4@z8pSsp9{nFqWQ5}Y diff --git a/dev/_downloads/95feb1999af91b22f624aa3ce3c6b1c4/solve-ode-1.pdf b/dev/_downloads/95feb1999af91b22f624aa3ce3c6b1c4/solve-ode-1.pdf index 64a030bb3a8b7ce2af6b5c8f54139419c040b27c..c1a9534951787a57f5c05a2f0df31846f900fecb 100644 GIT binary patch delta 17 YcmZokZb{y7T$jbv)YN$MY2BU706$j-umAu6 delta 17 YcmZokZb{y7T$jbf(%5M8Y2BU706$s=umAu6 diff --git a/dev/_downloads/9659cd876877dfc4002fae48de3c98ae/beam-4.pdf b/dev/_downloads/9659cd876877dfc4002fae48de3c98ae/beam-4.pdf index a636f86d200489f12a9f26f30bab0b9ee0362d92..8b0a366471ca8a5903e486a166adb7ea4eafd101 100644 GIT binary patch delta 16 Xcmez4`^R@ftunKPiQ(o3FEiA9ZSd9$~jLo;d7h}<51^}U634j0q delta 29 lcmbQcMPTk0frb{w7N!>FEiA9ZSdC0gjEuIw7h}<51^}Uc34#Cs diff --git a/dev/_downloads/9ffeab016a6116f06235179bb36783a3/control_plots-6.pdf b/dev/_downloads/9ffeab016a6116f06235179bb36783a3/control_plots-6.pdf index 6fd26c30add8c08f3558788e299fdb6d723b7a08..79d7ed658f6b55bbee986b311663d9c23365e54f 100644 GIT binary patch delta 4162 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 delta 4009 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 diff --git a/dev/_downloads/a11367bb58b03bf09a75c9657b4e223a/matrices-16.pdf b/dev/_downloads/a11367bb58b03bf09a75c9657b4e223a/matrices-16.pdf index 06495c55e6a5578f50880ae11318c17e865fb20b..6ff0468aee686c7df415bc0d9a67abb59af3bb3c 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%;qL$+a(iOq?iGY*$7Yo delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%!Wqh+a(iOq?iGYng~e% diff --git a/dev/_downloads/a1fd2d341cd81043a2e4702f43ad98bc/generate_plots_q3_5_1.pdf b/dev/_downloads/a1fd2d341cd81043a2e4702f43ad98bc/generate_plots_q3_5_1.pdf index 1b182b7bdd988ad7ed7a5cfe5be6e91f71b82440..e88c32e18284dbdda0342ea82a8a9fc1bfd13419 100644 GIT binary patch delta 20 ccmaFe$oRUEal>0{R$~K0L(9#dtbeiq0A550lK=n! delta 20 ccmaFe$oRUEal>0{RwGkW1C!04tbeiq0A6AUl>h($ diff --git a/dev/_downloads/a3a06dbcaf4cb9dbce7fe53c37ec22a8/plotting-30.pdf b/dev/_downloads/a3a06dbcaf4cb9dbce7fe53c37ec22a8/plotting-30.pdf index 56e4e6894f55bed1b226d7c6c6beab14675682c1..54df53bcf1219f18b8611036a85ba3af6262de40 100644 GIT binary patch delta 20026 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 WAQ7eXT;xuILU7N3fJn(P&%Xf;ekRcX delta 20516 zcmbTecQ{<_*ESp>kxHa!QGy`uC?QA~C5Z$fNJzBNOVrVO+d)F~=z<}M7SRo(_cBTl zCCXrw(FcRk2l@7p`}e-@_dd^eJjeInKJ0B@>sswP*SXdn6pAdnldLd=40znXD&Y{f zGp|vtsM&0+g|rs9c3Q24-{b=A^^k#k3_{N0uM_<0>$0Fe5#D8~wVXH3JW^Up#^D^F z`&f5I@s;`zhJanxKWjwkgQ|(6-$Ql#qpWrAN83c{Kl1uO-=D*EtE2tsBYbLI-;nJV z02~P7CT39DbBn*E4-byi0KKy8g^4+$%AZ+OMBShDq`CoM!z_%r5@BMv^=F|DGlz?i z#<4o;;ZpDJZ^iH9|19G6%&ercX738%h5%v{xcWXyAm{o1zAaGwXALVSm1&wZ?_FA+ zy^IqxUpos++l_oEQP6MM_-35VrPl(E+ycgwbT`YydW@m;D?IN% zK8H8Fu>&`@)s*ngUSU@NfQ&Q3=tU_wP-4vY&MZcj>L4Cl$l4*cyslq{04K zoH4vFU(NVF5up98+155GH|&*ae89`xMtGgX+Da(5NuqW-(pnRm(SwX*y1w^DBLMo*?Z zC0((;zK=n))xY@|f1#3r+gVE?rP~xbr>huN5iv1jp;vmC6W=MMVw&QpoV+91csS$m zR2u6YVJBTBS>NL}!NF0MS|`IIjU{Jcs30HLJ>7D33@B}D<6FpAD!h;R-S!K%U~}Ww zedQkr>yhbr+(1CJy`s6{Km2BM)p(j!voeZZ2E3=q_w#oD*H!xYwFfO&Gp~9M4yAWh zd|x#Es%RN3PK`;DxwKX>GFXz0@m=s}eeQga*J&f>qL>?~n}yo;(LRj_{_FSsuQmRs zZ;lhWDZQ<2({{7W=y`vwZG|wn-?1K>XKVK{J8dufvH#5#K)Nm8kF{+@_3XZrlTBoC zg*+*uaOD%~TPydZSq^m-5gOPi&m`Lnjb7qa9Aq^-lqzN0Sr>zDMHt_&wT(XXvA`Z{ zM~RxGo%ckoesZ5yA`641rSAXW3SeQdu=K_fb{SaL&h13cQ3i9CThaVu2BRKkz+0N6 zTM(4k78tmHYpJFbW3($UPuOgQ-BDtE9sutLLakhRs)+lfSv5ZLD;MT}as^sZiRG`H z(UhQ^0Lzrm;DV%2E2Tu^Vfu)_(fL*F_Z?bElq9=Nc??qcr`W5)O}jlhh7g)XG;^0% zgarDt*-YoFb7(N((Jr)Gp*xa7n>r0Hw1@x4RpY3AU-!4v^;$VMh%#Dh6V&rLThwz% z2uV3#eFjhNeFsuY5ewi3XqL?Q_>PsZ6^*0~At`~&>@pu3RKoiut*Qu;^Q^f)Vst>S zW_{~W5?}>9E4K4y(d0zq6Xul^js_=fR<$b#x3yQC9&z^i<(QEJ|YaD@y+rDh7}Kc zHzZ7JUPLsygD+G`;f+X{tbO)9SyKJW%VX7Tzb2DB4nEHx??`GWPnCRg9ED>&DgTgc z2HHa92JlzZtP3Yr8BsfPBJ*nhUQ z14ccuZwlxxcYHqf3JEP1$p-I`mtvl|kG>vn0(_sx$@^ZDohaj2F5tft?7x+(V&ku` za$mfzXg9?Ex|`*$ff?uy`DQ9&q~w83p&ZW&wly#F7DtNB`xEkI16c0n!_SbkaY<4` z2XgT^K0NZvU1$%069d7|{56o-zXsC!*M_uzZTO!@ELceyY|5u^@HkMP%;tVQ1HtNs z*-2XMJnngz9d4UQsqHp2vtogEavGcl7Zq90Zzm@$@PA(c|J5H!Dbs4>udxy({z@W? zU%xLkNwdn`#qxLKXoZOKUcQ= z((b5K@2-r%B(tXS_<}JxFjK*Giln>$&nw`6zuh;pCp$^nWMm{)j|llo-Ui)}P+_8i*E0e1xt z-P&tU*};Qt!Nzsx)JYNva4jP{xk_<$J$-yNgWM@=IyvH8Ypb|Vj<|}g@xMo0<>C0> zBaTnl?rx=`BjQWx^>!)ARk9V!SA0*Uk=oHe(^~vUW5>O2 zszH2XBUP~bqyYoo!{mF4wZ@HBIJc>lZAe!`-@LxoCKb|%WBJ?25nU*xt60UV*DTL_ zNW#(+82AYT&k*bWQ{dw>0I03|5m`LU#Ns+fUouyg8UFj8%}|!MnQpfs4w)^J&w~tR zTfL}s$qU=At!se~mg@5QKgUI>cf%>g=6+msZ}PYJej)&`k}$SbYCpc37450jXQ=X# zPxrGM$0}B+yfQCX!X3?<4eZAD{vkLmx z>{(S*GhVJrx;{yCVkupJ(HVbbb=vz!VU;*V9q+4^53Dx`lf6Qitu}c{Ez1OY&k#Mg zB#~RA8faHf^_Wth6zYlyvqegJ*OX74FROR({ofvZL>k6GR1(@Aoda61cx0E$*VS#v zOUxDscWxj6@YwX#?vSq@Lg8#!4~i+Kgbdd6l(n*St8U4K>7WVsjZZd^XZ(*nQ z+Q1nrh0B=!b7j$sFTl*;!)baar7PE9%>4(hYAmkpC@P1ur#uqQMFSjy3pC~1o$sG9dK5=HJoWXWT<*X50 zEdDvGIm+FED(+p!qul#e0{2W;Jb+qh|I+}k2aN!FFX!_p9rHZPMEfSka@zQyq8d*s zDx98^CN9!EUdS!6r@9Nj75VP*X?m$epC|n91Zo6V@0fhCl;Tt0wfH6t*7 zsk`@Zjo{v#HN0z49+g5B{%XTuCr_kN=X9!p@mOrzqcexELwB3pbgoG>5K91aeJ?#d z1ewiG{y=Z>vTx)XXJ4Hf&bvx=FLrW~vz$9J@IcnI zj4A6g1ZksBlfToOvN^gqYu=t2OVIPQ>Z3I4FeCS;5Zruxy5q*$v((9O8CgrYOra~6 zqF_mb6}eSPGfMsTb2WMo*tUCr0fME1FidB%nC$cSrnec#W-UeI{f$3K4EK0{ycb^| z^YO|KXJ5e=>0~$Bv)S#nO7qznquldCD=r1-(daA01w?p=rOfGQW_sE7`&H~po?;!I z-7QMky<7Q=m(n9PgyPD8LgUx?>_MZi+z!zFUR(|oXdpo6TxR<e9M2%Je{zJ=_=wKs{i{Yl?qTU}zMZWUQCKkAQfD*6$;7lnazkc1K zJ9@i&r_$Kuv-q$_o`(s z3C5Q5h=lG43#mR6E%<1k`yvtGUJ1~&HQ_o=YUGY}+!cq-N!|n}XSDQN z)L3%Yv|#?>l+*BQvTpeNl#j~`Fsmhq$bj%$W@{7G^7dxr{^arxK$W<$C%L#pXVW!~ z&hqZ3wXm`qIMvFd!8Xq*F;B6>EA(1UR5#TA*CcORdS1IBaJ_Mamj{cA8S+X|^oR5` zty`J@yvdS0{`C08PT-3ji}okI-&o&?-q=X_?Luhv{vP(rV|ap*NwRG`7x}SF!VW`9 zn7Jv|>MU4bp|?9jZ?q-l+J4(FL)j5aBK?MjM7N$XV*FE@oTsCs*h=1hlqjxy7T*=k zLE5Oj^&peOd~dhk^k##UL*@&+?#5U=A$M zv$;p##u(;?>7Cj)5f2xDSPh!$t9l198L)=+vy3>&&wOu4H9*u_cNC1D@g=0bu$|+v zV)anDyed&Y{P&hsnbj3+ob)6Lq|mQ&dYmuS+cl_d1BfC zc-9NEUR0q{%UCXXYJB1;-kE~k)tF8?Ih8h3Ud$e%w6e2UxSUWQqkI6D!6clnT!OpL zVZBrso`tiFXl^CYHcVlT^BiEEc;XuixB>U$>DoKlq;w{p@nyE!T?r|$i1fTH{&0rAo zXmn%PFzE5@&H9;3J>xtDR>%RVN>c$24ERB{)@itYAl_YI&_8PoaA)T?USE)olA4X! z|Lg~Purk@b)1jb#WIZ|!ZDFeUYB;c+Qb?;6i=Mit z{mq;q(%N~jQ4jTS+o1pP+TgTgm>on*{**&&RcuU=+kAw^?T4!puc|M(uPH$XeZPkN zGxQUz8wYv-b%XN%2zAqcKPayO&OI$ei$9o;S-A{Y+HF3%YVF2GZ^U}J;Lzb8wZ2z{ zHD}YRvuJDp+VAxb&c%=l!LsO#hcEA7#}zs>s|g4Z$$B_d8_|um4@(tAUWpPw3sO z?dSM*BUj#Mzd?Tx-n3@p0+Eb5=zr~vN*%q|T04guftQ+crD$j-M~3@}lk!P?_}3p& z`HaqxoF>%W&i##Erc8ziw*Xc*!Vak3y|E&=GWe=>I!Vz~e?W}n!UocL2zcBFRj0`( zI-2Jg34@Kg%)erciJID>Od3Cz@;)JrIwzOmU-k#ZZ}K%tF%GRp#n!%i4EQNpL|BZM zhAI2B%^!Qy)%GOY#MTkln({^GLZY$Xf-h* z)E%-*)R9-z&hvjcKHY%}QOlDQ#!3d+WlF#Ji6U=9)>JC*Rcqdj>S+{IIE7WkoO3*% zyLN&ETC-ajWX~U92u=%^?W#2h6A5}(&=Of%l!h_irZa7LfJfP6w46A98}C31z`qD7yKVotTj9?;BPH4i-ptUfnM_cQU8Zn)JDJL9e$ zF2YlrrJ5xsja35FR}CJ6&bx;BKWvwudiGCyz5 zJBoK^>b?yJUY(|Ypt6_#+Bg1Q19M>LK=^H|TlBY~Nd4Ux9vY*n~- zqH@XZDQrKdq##%(v309yg;$6|Ktxb8K*i!u(J#P+p1(`n?(VQNj%s>rKNv~WE~^XS z`3E$P)E|RQ{U&WszofH^L;sAu^Ea}4UsqVjnv$Fe2&s(5Mb}sx(f44&yp_X1ZO_!) z(vVeQKfKWQ`X)shMc|FdcOM3v<;7%Lh<8dlssISH&vCTmTV~jGnXz(Rgqh)Jf|y*X_mg z1~GtyT)qaz8lh8nJAE@oLazIs__vAY3q5kTKNZ|=1uNm#pEBgx=x+~C!uHc(IlAIB zrb_Elc^0FCjkgXwza(7XY#bo#dh`Nvf#JJO0w?GDo;qpk%n>j2KU&ZO;ncmtR!$Hr z-cS7`%=7NmH~4p5&-0==MkyOU>Ed`E@D6Yv@xERC-M8uQ_>kh+YnZ%V@g=X(D@60L zoWZ@gie4L5_SWdFNEIEW<{y?EC5Zm6<2R~*K4GA$~G6% zkpZ`%%of8xk6w;7bqb!T`2{#R0Ivez&O=2ldhg=*zj1&`JAOWB_QUB_2@nMBHac)y zBP65ZD-Rx!?nDI7#6Jm7@#0fR*Z)uI_NlU@-CPvhMM&xbY^1a6-Re-N8S8Tk#9!D8ZHYRTd7+@AS@ga?U` znz!oSt#BsDMZ5S6{%Jny68%tDNg;KWsQPe&5(B@&mRik4`DMj(pa^!E%yS4$ndS<@ zDcAE@cFe}3MxoX!7KR+|QN0-ZO>@B30i#^iyh4r_gU+!Afytt@nxDvm{oarZcpi#s z#^*L4+=v)C{31?~#`&Xq&6xe_!`rQ%j11Y|Ah)8%KfO7tjO+?P$Ki;^KcRG{MFp4K zyOTYs?c!$zLBW!3No)P!?mB8K*7!!r+APXyf{>7T;+E6&rLPz^7?}Z#xxX`xLw$N6 zF>Fq%>NO>`w&hxT)0*&GB{5+kH4eRwFKxe4e~jc0;!xZ_H}*U@d^^4+u4Gi_+iXIF zRnE*uqFbtU)a{67zW825j~Zqple)DL`7-S;3Y7krjgV+h<8tGn-d+9mE|r>4YGDXKQh zBT#6Ww_X?14Pxj|H8IB+Iwy5$%8xtIRfDY>WoP`!TW41t#A7!Awrtk7fJ{ zb?YS0etJ?^tSjS_t0q>C4p+DbkWRG$6l}J-oJ1#`)E^9h`@5>;vi~@jJRs?=t`qm0 zPJ;ipWidB&MgRS-8ON(-k>3{jAf$RH7-8CWlTn_iVAsPg@e0E``iK@CzIN$ z-=6v1JaxWWw1pIr8CSVJ2eK~nif4{=ul&ks%_K`kY-?I(lO***-S!m(q3w7z8WotQ z{3+Ny=XWoeW41A*8z9AoH4_*c`NzJJ!>#D{^PxwsS&nq&Y?IP9&FX$G2tHSe=@8ba z`d5hb#X=Pq{r0z%yv`mjr*zX*LVosfN;7eaKPp=Ez0hew_=3A9K+3qZh@Ty8ulyMz zHHe$)3b5Nxju4SrT7j=UkWM8H6@*7`O(oEu{#XMh=7TwArK@gWEf*ccpltaF5G@wN z$r}$5yzQuHf6j&u*|Y(o4o`+`dC}}5<%CDd=GIqbz(Oq3_IJa$_~>=|?kcd{@HLJO z_W_;VVppr%8YJxVvO-%R(w#Mz$K1cUF%XhVSISjy=kL>%YEwpU^PTd51=T5C~P7rugQ`wjG>tW$HQMw_*%e+HGkn`1$V+fLc zphy?NBm(k1?shMdhwD~yW`vY*T@3kaGv{YkEGZJobfs}mx5=a{2{ za7chHnyr|xyGP0wQan|fP48gv>GxDDIz?GOfIJy9!z9A+Cm`zL(uS7P8rm0&v7h&4 zrk%WRLHeWLaF!Tsi0&E4)uAIFx4MMC>*++Az;t&iSm;RbReCg%4D3tbcx2YCsewRx zklo@VznUy&fO{Ts*d}MOmLgjYUzQ^Kw{|ic)jV~Kx+U&;T8p{X6j2FhuMpI@wm`J5wxJ4aGa~x~!OG*<8GvfzkJ#>OEg-yq8>uxHk`9lr zX{iE8r79IiMC!Var0Jd7I*y=u3^^pUeqcD^&kQ6s-GrL3XKlY(pU-x0gs)i&y(0fj z_fPSxlW=)|Jr_rz%PsI^E8}U;kN8|%H+20WsmP&bnrnqfgF6KaMIaglQsOB>*Hw08 z*v33T2{-Da606gB1dzLt*pz4Af#j80KbKaBbIezBZf2E#@&}Gc7BjbB5&m^J~|uw zfyr>G!U5qq>6;L8Sbz0mlO4=%-WTp`U;!i9iN3hD;|E|W`q0CUn@v-JiI5t`9Mosx zm;@uI?0{3c-1f`p7yL6aJYtSOnHRn0ih)os8&Y&O8y`j6en=nct7YAGd2d)UsVrZ3 zM~bw_KNi#$QaHuS9q{=PiStqayx--X@U=+VjBxk1&3->-VQ?{1|1-zwT|`k(bhy&? zYlP=3A3)J={#%6)cRs$$_y|#i?KiTmh?2Z^$2G-#o|9pe?ZQ+e zTnBdvFD=1-iQG1VgT*ZXFTJ($nxu{e@w_QT)X3yQLrw85G93_?*a+~iD5elBEy_S~ z3>^8UJZ&V2T93OCxtuT$jjUL(vk5wC-WiY!&PxYluB#lRy-9_rt3qRL-GoKKIa&n> z)z`PkAbOC49aNDu>ivmimpRgGG-p6aSj?3mgcpGuZ_j(3TM>JogU#z?aXvTd9PK;o z=8s7DHg#W9_WGwG5vV*me9L?-oD{tRH-|w211vG&sVn%i#~#04e!BoHLs3DFT|rC) zvWS<`qtxB8C+tMec7*XsSUd{1@YYr`m3HzPJJHY|$ccskFiVcgQJ0gbmpR|`Wn4AR zJ1^or0*oFoFls&jR=#G$O~I2=^qvLK=M$v7x*cIZwhlR%ljbWqAlP}|9J_7KlyAR1|kBwTGGWl9r86pE!^?=r~4{x(sO zuU9_y^0K(XY#wy44LAZ*o(y9>@8akACMMDx*?$|Wd>qZ9P;EM9b#qiz^5tWW!KH&j z`naM8xe(?DAoRE{Aj2}|Z=t*0u4+3M3--queULKTCkze%=8jF1zqupd+Ddub*S8`6 zarx(!XC9q0!}&>@?C@x7qu{aUr0g=uub~AUR?5gYQBP~uU-jT^;`XPzuh}z%xE^_n z_qZ#9*wDJ_0@R`P;Km(a+jA0 z7j9Oz9+(-|4X3#%TWhFx*qdoWGpbqRIb*#mgrH|PZxEMh6}RJ@ckO4gk2JH7{+Uni zP>q(51uMf0>}5-uwC4P*;!&5degF7sI5Ad3s9uWE^);V|InL#F_^au)nnR066^$@* zMZ5lW{(HI1EEh+N;$AlcD>swg9(Lt7E0X!h{Xx^Z4ies&jjOp`yn-F925a83H?WVM zR~fP=9q&zXwWZS*!V58@XkJ~byX*(iHvY+5Cb4NI;iMuqIuzu~l~34$#}Z7%?%dg6 zsa_SX(CuEa5lfMvf5}3;tR(rfu>je@vM#eBzkOE1Bodg>HPL)roFOtEOpG(=G+=dx zef|~SoPg9pnK-s=q7AO!pbog4E6qk%uik&sZ!odKCHOVk-h|+;?C*{#ZQra*OFcB? ztD1?#)VzscJ#SD4+vc`;Zjgn(LSil+0}rR>%G0?DX^={*pCk5a)ONzWg;&KTR0ge} zv_SY{KYCZ`a8UNlo@1tiBzupO&b5P@c#8>KutJbv-L3FN`MtuU`%QQ3cSoEh8+E3Y z1sh=PRc(cSCih(`gAVw7bu0M7UP-E4?MwBd#3O#9d>odU-=!Y*aQx)7QE~GdjdG1N zJhN`sHi!i!vGx4y^wS_|@_DE?AZ!DvR@u{utF{llT3-&adtX7Z{fz6ltel?ul$Y>a zX>tdXHBS3&ke%bFz(*z94@P3_JhDMeJ0Vk79D^V&6lI)v_NEKdQ}2=tV#+gpv>q_` z4gTgJo1+eBd4h>xdKWQC*X&wPX7cC2Cddd)BcG+3zpwfFg{?1Z(2P4!Cf0n_SjwjN zN)0+9?E|PiH*N+aeqR=r2Fak%*H@@fH=eKYHFW(f^;Vv(ioRyZdYKimxoLq@dwAvp zs%NJLEQ76oDBD9f_=R$B`4onThMR3^mImpx815-B`P6R7B`A*ZaFz49(=n)Dp{5+8NPBvdTM<(9n}IX% zXe#&qSN7#JdlvcLq^-gRsg^qKel~b|H9E8_$zvPkH>2g`L zo`gr|7MZ@=q>!hVNA3pxU({qDeWnQ z%e0hQDsFG$?8j{(v2O*#;A8_5=VEC|gmGE#jG?=q^5Hm4N9$tfJ=vF?60^}Rw+d}O0s+kC=!C|q@JSM=d_jnv(DGx}E4x1fwyIu@jT;y1LIbHyH>KQbLQgYx}Q!B%ea z&8{rbgTCl35Hq^fL#V79>Ty2+2Y9T=lrS9H_LDMbC*|?B>+s4>wNTWI<5tT*bPUm?jfH^r%r!Sx?CU-y$;ket!s; z`}}r=IFxI}<|8+u7_+1M$7?WGfl2x*^H=TKAFqcrSP4Fylb1kx;CBzv!uaFwjZ1=| zQN%bg-jM$40gdl889M|=pYtx^3zk|bJh37v7&QtFyXV}5ey`QQX zT@jyXpNIvZe)N64?-LX!Z=aZS-A*TxLi(!r1uK8EI;4~XZ{+tIyXSRpoAC6Vb=0@) zunT@n=2R4B?r?~?VYKwUZpdpn#^t)uOEHP7_pV){V)k5g19Yt}WMhZB_wCMs27CHi zJXmS}+z;1N4dC(79el&+pXcIVQq-7p%iN#@fL}P5o#|8b{cuLt@cy?v1$n>D5$--o zUD|u7W-%pqdN==TGbo(!wPSxf7H;Ayu_3QN!HO1H?QM36dL6RgJrehp`2rg9Ij#M1 z+TpG-WSQbdlDi|nb2&XBV)rh$PU04(-{-^ZN24p3a4}{zSBDZ&tC|kkx@!qQ-837k zUSipPQDY?}1`g zb!P`A7qm)nR^GlkYO`G4rv{BU4rsi&2bDUFU`<8wT!1igN1cDmue7VKPmepg1zgbG zGn&t)kXca8ALPG8p=h?%;UV57<{(wkx)c<6#={SO#)qgnwEtVO%@|Yps3fG0Gf5Uz zL3ns{7vcR8O6%InU~46%5O#Nw>cVCyBw~9`!}}k&^IdZ2clCV5f2LX2cLph2si7=o zfN%w2>|lhBy_qk>#jtE8w~G@i85a7ck2&UUoc&s|3s|XXU8v#wKph@kP+OEQdI=(~~CCQ;y2N=(LXG&(;AytcEwXP6fMRg^Fq{HrCO} z&4y<72beBS@IN59P*(}o+19P*Cg8MWgSplUA(ZMUuF~~Wo_P+j69um0d9+}-P-ux6 z0{gM3bx)P_gfa=5^~tickgdf4zM5W2f+c%nNd>Y zeHA~qGXfn3P6e#w8)1GiIjcDn(_8*>coZ(JugL2>i=1uD4&MP+34>c-yK81D?dh@I z*j-nV4{LEKxP2=mCBgygQHeb*4gNWW26=sT2@+7f^+Ib?cTkCcU?Uww|lo zA;%Quo;W{PV4<+YRiqHV?)c!xvi*JMrK327Xn)Fw%cVC6ag^e5Cp5LIPQFenYXlV@ zCYT2}r}LFYuaIk@lE4{;rU3tTJ(XeY_>6{L>|PC-(NAcKa9*Hpo)Tu=E9T}wsZ3DM`bTh?_d)A8pUhZHvPF^K9dLyGOE8|i z@}lXO#iVPQwI$j5jsdhi*fYYm%*N*2vA;ik5B^PnNGJOB+jd$uiWyyx=&E*y(D{n7~1=4;-ivWlx) z?pHPz!a3)FN z%OAW4swG5IY`G1SZ5K{I~199LB4I^fn{c>Ou z-Ag08M0}2_{_3m#elq1*z|sO$`;Cs>y!EEXPyr7;$?T710TF@QAM>6ltx7zo^JISl zQpSKJ1>x7=$3~!}vgVVQXmKHYQSbt88*oHKw3j#(lkg2FnliWqe+>DFGZdJm zRqQK`*MVY=7YSSa0I-t5pfKS()^xx3s>MX@LXB5sfV?HIk5I^(v$* z)ZA`uIXbK-SLLl%N;jWAUJE2qrE!3EQDQpV4QBbd!$S2$hxzP&3K!2bvkH$*pDL+d zFyesW{W88cfAX1|_=dz7V$#f1`lD34=XmE#ja(E_d{Xas}f0;cP^UY)%~PNnnk0tRk2c-HSia?M;h*Mh>|1f~_0FyRh(% z=)AZ4M~RFZ8V5#--;jrN(ui%na8LkPRk&m6*0VTjuK0?~r$Jy^)C(t68c{QQ=Zp5{ z`?7X^4MSCT1@qMfc$WYLAHWhi6v8f$j|G{jj($kFcH_xPpq&-DpFzUSB_?#-LcSFb$ffoNMs? z0SAV5OlRV&N|I+*#Gjh>hO~%P$=`BnaC%ABA>7wbKy$oEyw$gsije_?k&?5&|NLBg zoC6NK2~_@gg4q~`YD*YV<*m`p-auy`U zs*2C>^;kr2@r`iI>qdnBKF%bRDu+NXB1M2WzFb=6(ztvSws+SDQF<-gCmbnjHyC(e zFIrA`m;zgKGQ~%@jXGLJ>umo`zkA~OqdgDZ^yYOTzVlln5;F(lMM?MZ=#*R~A5W%# zB|T}!tdcg=gg@I8(xh&$7v0J}=22-Ls9+pd+E4?WUE5LOe*Zu?|1w88Z10Y6ZW`ov z;r%1?T-+N4ZyL)8_~5$wPDD>r9a3B&iz48MHTzO?0P8x^z^=}w z#kg2tA>%`X5#sY^+luUqp(l0w3m5m~yhggM4AW~qt2h?nv-pnOVp2USpa^5z8zC-E zOHH?Cq%g&9$!PN2vgxSJqe9c7OP(R&Jv(ZD{>0Z@)7@HEl}-mKIABo3KNg+hNOZA| z5f4l`Q2P^t3D`awx*9V85E#J|B8}Iy<^bv)7e{+mv9}g$ZM(e!D?4&pT#5uUpgvdU zB^~Kh2I@W_Y#{p_-{+w)Pac7RX7VlFv$kjrX6 zW_e`wLoy@`>o}rN!9Vr!frRMe1qtdZk(<@ny*m%`xmoD;8O(sK_Wne^=Vh@sH)IbH zRCCC2G+zMRwD+RpD00iWgfv%}*4Jv+v!$h6K`9(0_&pVf4z%(QG=bQJ+ikCx zdsG3Mhp%eZ%GQ3(oLj{oQ`35`?pu+odB0PH_2L^bxiA;0p^?5zd;FxlIebGeWITFM z%c$HcGJyG^%i3cV@ROm-RoEW$rdS2Ls&GJv_Oi{&QyUSeeTY97sd*MYst!9FC9-i$ z=Hhqnhi}dbVY0JATmAK`x;%t&p4B)pHxe0Zj+ebTns;QAWLo*qS$GiSwe6%GyoUTw z_~_kued^Y^D7&K#uU4?-Ga(2Q$NV~L=u?Lvkn~R{LG5bmS>FR3cW3a2oh8tJFh47H zKpK3;9{*X?yE!I3qV+7P9p-xAvoZ^Qk*21|5C&}Kh;n7Yq=xDZNK=S@wi#tzwVm3o z2~#Og8675fyU+aFgUKVuRIkQ}x0vN_Ufy*;Ijoqg@YU$=yJ1S?n+}!MMXn`+O#aJO zU>ZIVNBL6}_sMad)Qa;@wJDRq>o9lb9z(8+ER(y7*A7EnaXiNB-2nQ1t0Q(;%MTnk zoYWWE(zwOUG@fC{^9Qh~vfu~bK z-|W@qd2h}ldyuXy;FnkyyUcZ2g*6?f)oLmXVU$3x%Z&LeJFixSiBs3+cmo%Wh!lhOQPpsQjW6X%_VbzD1+8@kf>!{8~C zHhka|D$e=4OV=FNuIV1B>G@&=DbZc!ovN2uows*qtM^tQ!;JFD@F)J@`AsUANyOQ| z{X&k3V(|j8o;X$C4r`9y8od9M_4Mn$L}Otc;V`?Z8$;Kj5f2f<5?a99w){0pBaI zQ$*?j6{>cCeNbL+2aApH`81uiQ-QJ2?vq|6{vZ&^;hAkE4K|BDb^_qUW~v9&HiwTX zlSvXKk--PWTrATRm;+0sAJtX>+~oWhv9pSOIfU`+` z+eAqV7-?ex(Yt1&iA)l4t`9~wDK#(gz6Y8oLZV?2MO|+rGmj73Gt_pPyeogVxgc#; z<72J1cUF$nFlW*9vPrr-=bi`A6Lv!pUh#ufiILm<$+V>Fk*Pw)Dtl`o0@U!WhU(MK z@y}NZw4$5APq)UxcaF?+|2Ux)cUQpfssSm6r6rA7gEOTm4JH_~&QCn%}38j??@TQPg_;$LmMz+r6C^yV$! zlx-+i(lue$e`ETS=g+;9Nn`*%fkZ0JAH8Bdk#xS@BW?wry46A*?nyi45Qx8IUGM~K z9=ilxi}S_YYDc=qzzJ7dv8hNFC>^p_TtmjZWy*EWSB@pX1V@-2h*& zAdMx7Rag@q?fhJ0(h10jd8ii0^ASFKu}>ZIKVd2Mo@yp|>N~D1D<*kaD^tE&J5NBC z%n=82S;gr`v(^s3a{INB*6`c%7Oc}6!ZX%A*-|QMlCz;{ndX=KtlOLKwRn=&=#U)6 zMS2Y%2z0~clG+i=B3qDj?Ff)XQcb|E<6zl6A5S`G%ynu%>W&iz0H%UJ7L*9IviD`G z zdd;kpHjBF)s>l!`SJOq?g&Yp}J1h?Qhe5h@q7Vk=N_jQv1B}z;8(u8jvcp^g*wuhN zR!-9Bn?BB#`l}+e(}Ij;M{@+HtcqZ?%|8 z*kLfz^>|8{91w*&diYh9f}QCBR;0PD^d0B$9s`D#^|Y?qliVP!L4q#gk7Qdn>hgJ?Ks&1yGf<@p$_3a5N}@P}gh|2h8TL>0ve z7%;7ugGnAJI^X8GvS>$@l3O-et3}7UQv?1A0O}BixNNgLs_yUEBia=_K|BEA4>fU* zQMxqMm{_X1D$&Aq^*ZtU2O=YhjdEVFK_PE9Ha*`>d|0z4F5f5(nU2zV)$0830 z$HjuIBRda`*x3%Xmk}Z}AfkLdUoD|M7)P5V^lNfbYcoq47xOvFD#cHGiTm(lsSc$x zW7sy^R-izjB=DK>0IB&=k69mSS+9EiXQ^0tVFbqVn}1GZ|LChEco(B?2VB-R&AEH) zHcUjWVGDB${6IogAKg<5K42snQON+A?KZ}>DZ)VzWwq$DA`o!E;iJ#LXQ-HDsn~Oi zz64s5jBA#iT0K}k?s8pehL7Gsr5V~0v^#M< zb`1T1CS&Ssxs7Cv^p0cucA@Rs$#FGd&4-J%YyF#~;QB<fB!X!^p~Gb%SOP@zHuKvVuC z4YV{Krm$Lx<&Tip>Hwr94CY{NVr?|c#mwLT_{#-D;}!>R5j7w5>7X=H9PZot44UQ+ zMPL6H3E8UUThot#DU;N4_hAmxbSa6LAS)-BQ!4v+y!qq(JO2@LTfi6!I$fk|8;V}g zyjarX>>`H6q@~e>m6UQjvmANlMS|1-P)(IsD<@Lr+=*=RPzT8g=7?N$Pmu?|GtKOl z^Fxv|?XH*St1xSKwTox+QKj^^o^OBKFxq_R{9J?jpP2%;B}nFOVWy>T8my|3LiCev@6-PdD3eI%GAZ(lRnHk}d=d<;EQRNKg!9tvI4O3tZ zoP9t{D$TSx6822zLrC89@17b$ZGR5sUez5*0`<Bl&a8Z^0TZOgs zO%d$pVrl$W=E`DleCaK@AvGEn>&Q9XJDM!jBOXo8o>k{p)xi%SUezhJt82dvhjW6^ zP_ZaBwDTw=6`em!cd7%Nh+Fby70c*(0?y}s3vHd)Hd14wCW|(ECLh2D z@5dL<#kQ0$i>YgV3-d^Ibfu2#o*`$b$9V&*TH4CJF3-$rYdImx3cmb2SQ{A>gH z7^aE0j^*m#F%Zf>;yq}$WdvW#7bXdN@Z?v9-mV-7#qaB{sMXA7*sdQ3*VveP#jtp< zxc52mcO3u_i%v@)m}v!vzhn5b2G%McQR+hj8Q&3Vk@p~93lGIB{0DGC50N#wf5Awx_pUr~ zmZ!h?w{Eg_H5MS1LiIxyy4E2ZW&eT~SD1>^up`L5kj}ZHAbH}txA&@tKHi;=RFw5o zS0_8}+05%!gt{*Aq^(a%mq>!&fP<7Y$>FX;8>4W$MsO9Pu!Dezzjli6!;# zIVOE1tdf-S-UA~BNElWFq3$lwe>?^)D6EPr9-`vnPoR_!r~&65ivJ+VXQRc ziNuyvd-ojxCG;-(?SSVocj8C6t3?+wcwPMOp8sq>k%)brw+FKzq-2Z80V@=w)**CHEFZF3 zam@0N((-L_m6f&@OL={7uPDi+@2{JiU(PxAyp!{lbMKEWCyhl5_MMk>ghid8Qiyb6 zyImKaTr_e2+)=Hkl#+%-cjk_X94is)=B4{0mf^9V9Vv-@VGy;xM$Iwn)o0dfb^CK| zW(Ki}GJdkzUQ9xgR|4*&YRp_usRCNxZKyiHlN6ZSlWjTaGYKly#Nz?#*#pmIIX+P* z9u$mAO)#Yx<)MqJ0a>q6hc%YcJ$-koLKW_$YR~&Ku>xQd&FhWR);90xJBh}dWjWTA z9z}Uw==8n7rMw9@meMklQvvaq!`yU+>R5VaxmM_2^}+m4UyWBK6kewsKjlv}XV>+s zXDX-mbMu*_^Ju3#r%bWh#Wlo<6$<*N6F^?D293Ev3_dd_5 z_g78&R7*1NAtgrP(C<_u!eG5PM>ScOa6&HxXKD{*>u-j=C+QsiZ92N?K70i`4`TmD za*>?p)>|CbzistU@i8i0bQZ7|nZGQF3oN0=yy}%hWz_^4ofp%+!6Fa5doU;wQ7&4LRWK;HDWyU{Mzu1qRUmK9xzio#R5krocX{KK>9~ppHc!PT{j=Zf z$qO!8Hf1cfJFH*DXAg(((+dVQT?&(-s1bugh#$5n``5Z}n+|H!ZwV#BDCJ0R^=Q$J zy42SsRL``w#fUwo#N z3W4id#^tBz-42>~4d2y44$8^#a&+n$>CPhmrIGkT+v}vWkHj4q=`d%BacyDJ5N)IU z3%!q};R;G@GXHXo{vCzw@-f+yyxthXwF*6w+OVRvU{~!OOkVb#vgd{8irhUSKWsi8>lbM=OpeEK?k$BoIv3b!>7Z=<0l;b=)HFRj}!zZ;zr z&du8)7#(qq6WT&D;QQdlB4l855E2*XH;2P!)+NR1gM1+t%;F+ZyJG;083_e5JYR5T zu;26oir~Ur?>&wej>X_GXX98*hBuB0!Lx7_BQ}fLLx|nMz7PZALP*G-5J0UW8MB}e z6N>O+Lvdlx#xdC3*=!&P;zoGkV5XOdjEG3;$lzr?z#MNTFq`S68yMnv2@}Eb5PX>) t1jAl9i1j~x!7qLQ#E$fm8sc&}vk9^w7(zrTG5#!=!}1FajoGr^?>{VPJ(&Oi diff --git a/dev/_downloads/a45cb86364a3602f7138b4466beb1097/beam-3.pdf b/dev/_downloads/a45cb86364a3602f7138b4466beb1097/beam-3.pdf index 4c83e9b2b68681d94baf1cd99f639b5d02483179..3d60674c433f762993608823fa5aaea916f0a9da 100644 GIT binary patch delta 16 XcmeB6>Py-Xq|0n!Vz4<>cPBFdG%5w4 delta 16 XcmeB6>Py-Xq|0n%WV|_4cPBFdGyVme diff --git a/dev/_downloads/a6ba697f4fd41244d4a03ae13c871d77/matrices-20.pdf b/dev/_downloads/a6ba697f4fd41244d4a03ae13c871d77/matrices-20.pdf index db4037539a8d3eb9975d4495e6294086bb30c722..6f1c3a74f936a34c535e1b0745d65f17701f76d0 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%oYab+a(iOq?iGY$p}sW delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%!VeG+a(iOq?iGYxCl)E diff --git a/dev/_downloads/a892d8f10080acfce9914123b164dd0e/matrices-11.pdf b/dev/_downloads/a892d8f10080acfce9914123b164dd0e/matrices-11.pdf index f33f4d3fe231e0160e8f3d48dc1d1e7af94cc428..5ebd20e6830d217535aec5e646531800f95efe71 100644 GIT binary patch delta 26 hcmdmdLU8j5!G;#b7N!>FEi7V*Oy)-0B@$VrnE{4<2p0eV delta 26 hcmdmdLU8j5!G;#b7N!>FEi7V*Ooj&AB@$VrnE{4B2oC@N diff --git a/dev/_downloads/aa497c934ec12bc50f842dac34beeab7/plotting-32_02.pdf b/dev/_downloads/aa497c934ec12bc50f842dac34beeab7/plotting-32_02.pdf index 41d3e2e123f44d4aa0cf19c826199a096622b757..6d47a91c3de9f3d7b89be4afa960751691c961ba 100644 GIT binary patch delta 18 ZcmeBi?Qz|(TAtO|z`)RK^9K1lOaMP)27CYj delta 18 ZcmeBi?Qz|(TAtO&)WpDW^9K1lOaMQD27Ukl diff --git a/dev/_downloads/ac472fec5b32a66f329e9328277c64b3/plotting-34.pdf b/dev/_downloads/ac472fec5b32a66f329e9328277c64b3/plotting-34.pdf index 12c4f54ee48257fd6a27c6955ea02425d17f1cd3..b29a343d4afeb75d577ecbff876a47a9cb85727f 100644 GIT binary patch delta 29 lcmdnLRAB#7frb{w7N!>FEi4Q8S&a=0j19IgFEi4Q8S&d9h3{AH$n0u delta 16 XcmZoqZcpCOugh#?Y_NHf?pJ02H%JCU diff --git a/dev/_downloads/b78b32e3870f0d0ffa753084ae625ec7/plotting-9.pdf b/dev/_downloads/b78b32e3870f0d0ffa753084ae625ec7/plotting-9.pdf index 8561fd6a8d07b91f9e18f4cd2d5f62b9a108526c..cd19b6e87189f05a5f3cd39b8dfa1ab9371d16a2 100644 GIT binary patch delta 16 XcmZ4Cw8Ck_RXJu$LyOHfg<6IT`hHIM~a diff --git a/dev/_downloads/c1adee8d5f4e9aedd715240ee2abc6e5/matrices-9.pdf b/dev/_downloads/c1adee8d5f4e9aedd715240ee2abc6e5/matrices-9.pdf index 8b4f565811e4a7858aaf2feeae8d5c640b101e74..b087b45eeb754748f393978968eeb23549093453 100644 GIT binary patch delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%;ts$+f|iWoR|TZ0tk5k delta 27 icmaEUM&S7wfrb{w7N!>FEi6jP%myZw+f|iWoR|TZ8VG&> diff --git a/dev/_downloads/c81702617d9f2a52fd8723b47976d6ff/generate_plots_q5.pdf b/dev/_downloads/c81702617d9f2a52fd8723b47976d6ff/generate_plots_q5.pdf index b4dec296ef0c85cbf64b25dca1bb953431f89316..1ccd5dea2a3988fd912eec88a352d9c3a762b022 100644 GIT binary patch delta 20 bcmccKz<9lZaYL>(tFeKhk>Tbd>!&OLQfvoK delta 20 bcmccKz<9lZaYL>(tC6Xxf%)bl>!&OLQpE>a diff --git a/dev/_downloads/ca52fc8f0db47908fb8d38cc335d5c1a/plotting-22.pdf b/dev/_downloads/ca52fc8f0db47908fb8d38cc335d5c1a/plotting-22.pdf index 2d3f5ab9c047a129544b29319f46e90954ba6b26..a40a09753a471976951599a1b02c1ec7734ef0d5 100644 GIT binary patch delta 27 jcmaF3fcN17-i8*&7N#xC=X_a>4Gav-wqN#T?qdP~nv)6Q delta 27 jcmaF3fcN17-i8*&7N#xC=X_a>OpQ$qw_o;U?qdP~n%W8J diff --git a/dev/_downloads/cb44a32b25833934efb3a9d4adfe400c/plotting-29.png b/dev/_downloads/cb44a32b25833934efb3a9d4adfe400c/plotting-29.png index 4b0932b4d01c59ca50e3c1d0fd451d8f17e061ae..68149d9a146cbfed502bb338e9d1ffcd792d5109 100644 GIT binary patch literal 6906 zcmdT}c{tSF+dnheLyCmR*!M(4hMJUzNu;rcXnB;emt}-usH9CATgfDQ);3E_X67M@ zM2&ryU122q`X0|y?|Z%1dtLAQ`|o$Xf0*z0I^T2dbD#VE+@JeCw_6tG#(X?tJOBVb ztjRGP07&?XAaQZPM;EG-4j+1cMs|Ld-WUA{=dQQ_vvYnv9^QT)`17a$mn*(_Z?FA( zHTLb@r;2j*^Yii5Q&;!=&l!8YuUt}(yJB|*O5ye~IqeGouleR5B8+fX1^}^(*kebm z0+T0uf_1eaCfTXZivA~5Gf`1u?maS^ic-78H(_`HdqHSPzEhsccHl{4;Z zv=q@xyiy(8f-6*3YP}08Y*hE$uVDw^#CSg%>StoGX#|c_@Mm8XGy>^}5PaoLgFj~l z;52Ye5&noALjb@){nu2*9s)R4!>41CXS-q^KChH88_g1MO+WoQBW0tTz;ldU5XjcI z(d6Uf7U5_7oCNT+!VS!8piU_QlZQE$nQ78}N+efh9CNtyYp&t~a@V;LzzzsyBLli(| zIFUUE>XGs8OFAxbFU_+5jxL*kmSmW!|I`GUUG?lQXJ)*+I*L7MFpOpw@PLo`ov59< zY^1oQ{w?FHKZ)6l(aT&Ylio1rZyikp9=pGOANkRQ2YxLG`sl1Zy?0UulWPHDH1YVU zc?O^<9!^=gh$@Dj%;A@KgGTwJ-Q_Ly208D@N009mKK`6O1vgWLk9j^+yduC1X_?%{ z+J8UDNkXLq)Nr|f?52~Wa(l>o61Cp@@)ud-bGj5rR+}G}=VJGSwi9kE>dE7uWN^y) z&m^;Z&P`W&r2yPLBslg*MaC6udI%>%04W3lA3Rq1^zbX%DDJJ=_-X70F_LbpPMD)_ zthOZ$IqFhG_jl94A|sRZ)$BsLmVYiw=+uv>4C-81`Ua64WKwR*jA#mxNJP$$FVGXS zPCzT$Xdr;}x$umND+-9I1T^=w24%fklH>yS^8I4O^ekO6M=W0M^7N7fA*q1zxVIt` z8yf=8k|<{#+(2r2q*Xh)g{1xq(2TrWf|KQv z@2Cs3wUjZKiGl!i)1QfQ_(}5q9Toz#RTm}oMgkA2Y-Xn0o-=}kBw^l6>EXX@2GNjx z(T4(m6xVM!o#hpk=97djh!L;4N!8|OV`m598lFj3XC^ntT3WpBZ8>t}7nqR4bt;+M zf)JHE+$-5iOTtm90A=z1?t?$>LAaabpGxoUc&DiHYwYh>6EN`|*~gAqjE^rX=4IOs_xG!n!)>g?C?3rU3oA_sNBxfC z@VP3<cEGiAk?pxJ2(QWtFy^hTSPZ6_2FFiPo0aedt%^2ULR zi8%!XTxE=p8wA6ZMJF4dcugXY{PFuxtVfqJm^i3ciISSXyD*m?)RkrGOx6pSr664& zM@#f1u}4HBNfxfI{goIl+WK0LJ$ogzs>PdW!yMCHaAnhXW_5uziubowT|IhLcM5N+ z>3A;HAsu690R+Ux$8oA7Xm+0~FCYFIQhrWTc5#6q330MXaCnS)2&XA8E#d5wSVD}^ z%*?W4?(5v_Ahn7wLO?4Yd;QcV8xwDW&OF~s<0%`n6ltCrIqenx?QRr3tnvNL!$}H4 zN`ZuoikqMONdZ1~ceqq|fT5C16#>aOrzV}R2)Htfw8lT_5VJ}C-n3dOPQXbBT*s-( z^N9_i+4Fa6McuKKdJCs%dkOM7+XZu>;d&Jn)1ZYjeM)CrsH`j2$FJ}HMfP09Z}rEE z+d{HQ+RrOSTK5QCgtF}Ilj0~4KKZo`BNJiQCE*F$N}m_G#j}K7oNrMs9U;Ad!8@x* zNZ{Bu52J{8&qS-ZK!6Z9R!KrI$#OJH)VBoH%kF$pNFE?9rDCeA@{@u*Woz@^VM9Oy zPJ93K2s45m;sc`#EhbtKY`SwNT$C#&_E1yG9y;MOhe7ahiXODAEI&JVfOFd0Lo8(p zMI}*L0q$F)c0jRmXa_Of&oKFXVuU;T@O(LnzzoGDnidyBLCS9KOOujcj=>=zA(LIs zkRj6s2JZAEA=4s}Bondyf8-WI#n0KEnQYy$nMsb}u(z~A-?D_bs6PgK?2&1Z(?5tE z#EGF>2|U+Z+FyF{Ax;?~Fn^v2c%e`ZqmX^tY@5q&&2LCb{cgSC{KoE23py5ifDgh+z` z{owEdQ$BCsr-VC4%a|mWnBJ1-H^%ojy*&-!TsD=QJ3-mg50aqR7#dCOxc)p=>cF0b#tkUd)C`ga2iL+I7*g3E+#d;eU|)9DAIhpQUXPrzGeMBd zgup|q)A&ixa9x<1N`=9l^FIQU%cM?-X&83CswVLC%?vk4zQ8Z~;D281Qv!z{0!IG5 z-I?oaFe=p7R;b#*&Imy|y&19rBlMfDx2wCwKze9thPxQ3lHr?o>fWaLw z701C3`NG;m9NGTzsMtORXJl}^4H+vejY1p2iic^|mB6SFbF zEv@CAoc+yEf@poRlC~Bs2TR;seY$uV?{b|!+lM9jJO#khuZoXZc>}6uCA`MQ1m>yq?Rz&*XjG9|7on{Ou)SIS4l7-bib zK=y;NWZ9S51_~{<$T(0QY~e5oTTO4Spt58!TCg(Qkr7N7NB4bYR~8NQ3V*k`qWz%; zQ*s@3<3c0PIvYwjmNv6<{GJX}B<%+Ldc-EdZ}A07$aDKDGUkzzgdWTk0tVtpK<-bZ z$2FiE3Ad-wEd2#XqzS|chAeI%7U|H;5saMvQPUkNY9hQj2yrquN3*`)HR z+n>=|0r`H@Pg$}GJgsafv_sIO_9lbwKrO>nN*0c)6>|xG!|}9OwzhcN^3kYWVJK|~ zmD`R!;a0YzXd|DNma7XZGDo%>A^`5$QO<=z zQWvcDWp%yiJq8LAi+HvSA*y))5&z=Z&qs0Q(Ja~Zp`kaUPs=+AI~el4>>#kni{e)! z!Hndi?O43J3v;!s=+9ez9WF{?t{~+c5(L6`W@D)QCI?`@)h7+Fe|o#PB^2JM8hN&6 zjyGi@wm^ELA+~hWi(h;u>;OUl1-!~@*K8b}rqI}#xI}8$pqUO-5d({&aE+j%=5|Fj zC-H)h{TE%z!YnVOujnATILwi3$T3*gc!xQ-xgDREkz0^uL?H3wxbfxhvGW3;VFx?l zde%eDEc5L_vmaX1I(?s6vnR@&_BYhnnXZEBi2>z9*%B5070 zP`_6GT^4^c<0Y8`E2cKyh`l=Tz0mjm()-@gMWYbPdU#1tyO5$ttX+&c!Q1ApSgvFt@V%g&s~#T#Zbu8S?gI@^25W! zN^7sLu4=cvv%=w?Ie2xXmzN_tOIbtCI>9BgL$S`QKf4{r2kr>&5yX&+f{_-Ej`^+c z=%NQR?HwHAA3XSqj>NZ?9MRv?c2hF+S-SCkWfc{buX6oR`%->!-KWXP$%A37OlDer zeSM>Wjk|l^q2;mkK}kt;zzO2=EY?-HD5ZE!Dk|*-pQfhfYy+BAw8VO>&lZ!C@_b}u z=*))rrHd}R#o=s+5|1yDe7lRzRdG~IS8lysGnjOUSiUD{EcN;t5C#NS) z#5rp|-A}~GCMI(hKU28>?txdY4zoR~_GD0DeyppnZ?>f`TYL7DTgS)8cfP&)ntzY} zvoGn!?j!Y&xPz0ODuVDsA0F5jyT!|ncU(%b4h>z$JFgT~;i zNi(9!JiO$xJNa9+Gr2YYbnNFEG5x?7PGM_v0YtNfsUE>3#HE_Lb%8&HOT%lq0jL@9 zHUQ!czpfMTO7ln^sHv&d)z+T!_b+BCj_6M_wkRtpefgYvRNJHd#o(nEGD`sy?Wr#> z)O@R0=xrMNk}epeDcv~&Up4{o^vE@>kVPLeik>x^Ff}XjF&`>heO{yB47HUI7pLJ2 z+}z!*PoEw~M`Djg^8Rgc|L--xr)LSPy zUK5Qq@$0Kgoirk~#G@lEH&^-7W1U8VY-|9lx1dHc%<;neyFVo4GEeLxDLe@@Tw9)N zdUJU?AAGgJ$`5+}P;NJvpf$JWfu?1`n3v#IHw176+Fl9I%*%;GkuJP6j%l@l); zDCoSjG{cv6C&*eC>qRDeE4sWDuSH9sv#$Oe8UKq@@G&;vVAcsh(g~ z1uY$eyKrIf$JQZKnfY69jHP2BGIvpzk$x{)EH@8W)rmW8@ zd`i+bB~!WIJ&-Zhx;pb`0E5l#qY=Kuvn#8v?s$P?87|Q&2+xB{efks=yfD?GkP;$Y z+w;t|@ri-5s_JZVeO9Jvq8k+A=HX%0R(OV3qu~OL+gTA@%E2$Li0v%(P8n%Td0r8` z;PzJp`;(?jjQEep$jCrz>v)#Ph(}k6nv<24P}us?DA8Es((2-mzrUs&A`Z|OtJMe6 z;r&~pHpAs(LbY+UxaeV@eiBPDin=xcqX-I6x-c&e78mY$haBBJ&_MMa?ep)r?ulp^ zs=u9%VA;v%Lkd%|$^Q)9kS)13X6)wbIxSI~JTh{zrKM#Y!Zu0wa@rqvMN&=omc1jW zid1Hj5LIu4_MP4J>$ds7xBp)y;Xf>S_)pClZ}Q%UE^*7sU~Yj57d{t_VmP@Psx-MmJ~+6)dIw`z`(b{b@3YX%d`%W$43pYa1Ik7y(Jz z?g`}qleyatuUfdb70yZUVQydEfjTQf*upk({#P&TUubMXE&kOW=)YsC;Z!*19t$k? zRwTbf?zyT+d`qr1v<6o=yiS4S$5KZlU8^GbU|?HWTEZ@yDYQ=3*1c~S1TBDoRLWIW z8>^rKjYzh#uz1?t?WnD-ebt;DHKqtK*R>8D_}2f|H8F#rB9S0TFl$Did+b`TN{ti2Bp6~({^H|S6caw(F($WUQ z0{VyxFq;?Z4z_6`zyz$3B4KSs)rFnPf3aEp?{L(A>z4n&QGgWXipQTaH;>NE%Oe{9 z-D5>b|4vODq!@Sw+dlnH@Z>XRdZ?I=S2DzjVFauhy9>`yXUEd-f9nlq%}KChqB2(a zLH}%BU0u=jK>_&OKB@;*itl`{D=FUcJ(+SRA->X?1yZHAGuSM*%HQ0x+nr+g-evHP7k` zTOEW1je~LD(pl`jb^|HEle}dU9uQ)@g96}RXSIJjq(l-nt2-n(`O6;gKQwCcumSi# g{sZ%WVe07y`&7qpWuxtCI9v{}M&`!~4bMjW2k1~r3IG5A literal 6906 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 diff --git a/dev/_downloads/cbc065b1401edd3c94be5ede9811b881/plotting-7.png b/dev/_downloads/cbc065b1401edd3c94be5ede9811b881/plotting-7.png index 36c5c3a1f77fde5af0be3a707875680fc7b27d58..a29aec118d8acddaaaaa2ce2c0aa116a5e717f2e 100644 GIT binary patch literal 17965 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 diff --git a/dev/_downloads/cc4619d4e67ea48ddf5026828b7569eb/beam-22.pdf b/dev/_downloads/cc4619d4e67ea48ddf5026828b7569eb/beam-22.pdf index 5f4c3bb2d04d4a5053ca7ba3572b223a12564a9d..5d591cdf73bad1d1f7f357063ace8f450e83b070 100644 GIT binary patch delta 16 XcmX?AeyV(fkvX%4snKRr^QkNVJM0Da delta 16 XcmX?AeyV(fkvX%GvFT=0^QkNVJHQ3; diff --git a/dev/_downloads/ce89ed58fdb41bf7840cc83d6e6a1ba6/plotting-30.hires.png b/dev/_downloads/ce89ed58fdb41bf7840cc83d6e6a1ba6/plotting-30.hires.png index 48842eb213ed41506802ed63de65ac356d48d3d5..09065bb63e0cddc85bb8faf7c4cbe1db99c7c516 100644 GIT binary patch literal 25733 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 Ai2wiq literal 25669 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 diff --git a/dev/_downloads/d1eadb36634e8e0276f3d1752e83893e/matrices-14.pdf b/dev/_downloads/d1eadb36634e8e0276f3d1752e83893e/matrices-14.pdf index 15efde6d27ef8039ff77b39100bc4ef02f296d75..3d98c94011e7072e4d75a75a6e296a9910138e34 100644 GIT binary patch delta 26 hcmaEUM&S7wfrb{w7N!>FEi6jPOyFEi6jPOooQrRg_trnE{S<2toh= diff --git a/dev/_downloads/d2c03725fdbe7104e13f46e3798a03e1/beam-7.pdf b/dev/_downloads/d2c03725fdbe7104e13f46e3798a03e1/beam-7.pdf index 7e00169cad1c09cf833940fb21cc7aa955065e24..1a57cee2dab0940391b3e44f2bc3bf99bda9131f 100644 GIT binary patch delta 18 acmZ49%ecIkal?K`W(yPJ&4(PHvH$=_SqEGI delta 18 acmZ49%ecIkal?K`W+NlB&4(PHvH$=_EeBTs diff --git a/dev/_downloads/d3453595eb36f834c2ad86d18546535c/matrices-7.pdf b/dev/_downloads/d3453595eb36f834c2ad86d18546535c/matrices-7.pdf index 396f20b72db8a6c7fea611dfb8872831e3afdca2..4042d08ae75a7a12ee5e8284eab1e273f6caa30b 100644 GIT binary patch delta 25 hcmezNkMG+*zJ?aY7N#xChI^RJOf9#Y>|u6d1^}7j3CaKf delta 25 hcmezNkMG+*zJ?aY7N#xChI^O|j4igC>|u6d1^}6r3BdpW diff --git a/dev/_downloads/d4935c2256660a8a33a7af58457af366/beam-6.pdf b/dev/_downloads/d4935c2256660a8a33a7af58457af366/beam-6.pdf index 1e846255c8aaf620f0e906a7a59492aaaa5c8fc7..ea37dc60800a0c224c58acd3acb9c4db7e476c16 100644 GIT binary patch delta 16 XcmaFo`Ob60bVX(h6Qj+u6hoK+KVJqt delta 16 XcmaFo`Ob60bVX((Bh$^Z6hoK+KQjh6 diff --git a/dev/_downloads/d8f4bbfa41aeb33459953469d86ea8b1/plotting-32_03.pdf b/dev/_downloads/d8f4bbfa41aeb33459953469d86ea8b1/plotting-32_03.pdf index 77475e51c791e6f863f53ee830ffc687efedbd7c..b5bdf2627d0ed4a9afd7fb09cf139391b0f673aa 100644 GIT binary patch delta 29 lcmbQdM_}?Efrb{w7N!>FEi5w9ti}cgM#kF}rCB~P0RWRu2&e!6 delta 29 lcmbQdM_}?Efrb{w7N!>FEi5w9tVX6L1{T{DrCB~P0RWS%2(thH diff --git a/dev/_downloads/dac00acb10450bde21ecfc4fd9c34817/matrices-1.pdf b/dev/_downloads/dac00acb10450bde21ecfc4fd9c34817/matrices-1.pdf index e8ac643742082d907b28bd6f8ea679fb877f18dd..851689350542c626e89a1001f8844e8d52dfd26f 100644 GIT binary patch delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%w|Rw+a(iOq?iGY&InHc delta 27 icmdmdLU8j5!G;#b7N!>FEi7V*%mxPL+a(iOq?iGYfe1zb diff --git a/dev/_downloads/db76a3db1d29ef7f72c47b067c360357/plotting-24.hires.png b/dev/_downloads/db76a3db1d29ef7f72c47b067c360357/plotting-24.hires.png index 6c68b899182ac2a35b424425f2e7f4712f6cffcf..ad043f26fc116451ba86a2765b7704d2485b790e 100644 GIT binary patch literal 26941 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 literal 26955 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 GaL=D0b1Z8B diff --git a/dev/_downloads/ddddc4679201fda850a702ce6ca7ff1e/plotting-5.pdf b/dev/_downloads/ddddc4679201fda850a702ce6ca7ff1e/plotting-5.pdf index 51395e574fd66ab7553a8176482d11c20209b783..7fae7289e7407c7e3173b887181482cc4cf14a39 100644 GIT binary patch delta 16 XcmccUanWN#ks`CDq1onA#XC#@I?M(@ delta 16 XcmccUanWN#ks`B^spaNU#XC#@I>H7( diff --git a/dev/_downloads/e0563f4c3c89c72192ce76efd2e6fe6b/matrices-3.pdf b/dev/_downloads/e0563f4c3c89c72192ce76efd2e6fe6b/matrices-3.pdf index 568d3b75f45e899496299cb827df6e91a466ad24..8875488a8544f58aeeddcd12faa3e5ff3f726ff9 100644 GIT binary patch delta 27 jcmaESTJZ5{!G;#b7N!>FEiA{9n9YnWwx3L5kzxh_q__$g delta 27 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 literal 39830 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

    !3#K& z-BHfe>Own$z~^l3#SJKyK*HcRJyl5WS0WYOeRh0)=bs}0;i8qF*K8i}@=rk_-P)## z;v$V&2CF)Zo&iZi*SMC*rVh8*?uGg4yxt##Uo+!p+a|x%rl~F#-G0yLeh4BLWEodC zdGYDn-y^Sc^^`m{`X#K04fp@1LR2>W_#RPaPF&n8QZ@W()czs|!m97s$HlB0E7vN1 zoY(0dYvfGrvM*ocyK+W(JA-)$a)q9=*}u7J9&{bh8TbaW6tKQ6Al1o}~VV5FYllL7;&>WT*pM((nfEKmZc z1qy3QYvn885_ic2S|h$lE9j&fYkP|f zKo(wz!uYeX(`BZ=f@{w$1bO;BEg(e53W!6HWQWoMwXg>=%sSpf_asPBA_AW2F5X#< zIGSrb^W+rPEH2tN3H^d-s+5qY|BS3id7ApfX>G*%@)y&+ zc70ZL*zNyL0A}0ZWodFY68Jkiwwo$_eMqe!+E1&2%EkP&(NSakP;pzo|NX7PrL&EafkU&2?NT zTJn~ly-^~`=zVBlpx$Pv*<~l&%hWrOnsZH9T-4R8RIf1ZEAgwmg}hvCuls~uX<)%mDQpu5W6Ut_A9P9c=4;uGt4_1dacpBn}%ijOu5t61t#8|g>vSir(JNb4Q5L zrNI6INjSyT#Zh#tn-Zxd%e-UQb>Otqc3^Lav>Ii|~D( zl3QIf4b)~t@bR&ZCd-GV;25L$zS}=xAk%E6AH`H%%&oE|o!%dL!T}*A z6?4Hn)&-H!6tr%JBSRxOR(CIVju<4x>|KA~JES=c4yZrPDTPBIciHa@kuWACsNOK- z{%WoH(Z9OaG_JS62e{3M3~Nb8MXTR5xfbT`A(wtZGFiF9>3`ZKs}{#i??cC4Vh>p=;N ziYBi(e?q7oGSKHr(+ZNfUVbA9M`wLkHU6uN=tJ~@^-iHB21G{`X~3o{d}?P0^!2dV zjy146i4{3IwkC%J<7-@e8W7!M3oh=Y*Eh4sO#|f$8?F*oFE93}-DFqsJislNUu=y5 z5dkGYTie@};*r9%*p$#zZbr7$uRA$1zoMFD=8Bkj_n5yTG-z2GhQlRyYN9J8jM(11 zO;YzhB-kiKl{Chidge@kv8IbSkHr~r98KoygsN|S-j+vB5`0Wk*tgd($iB||#R9b- zd3aEU!%&is^(YbRc||gOvql?G*SQ$WO+?h{v&mNxTnsE6DSUl*v5>PONb{XQbGg2> zPQn&h8=vVGXl5HG6E`ip2Q#(OxBm9h-h3=2ZHsZY{P5ML)pwxZXfB376=Zgo1ncSv z&lj2nPPJwx^=bG&8d5m+Sk5L{9|vdRK(cI7sX{l~@EaNC{%Uy-TCsh61p}*g&<3TM z@1m1pV~uT$p#IhAY5G$<%@%A=MwLENGSOcSx?=B34h&fA^Qns;@M!54t>qBCSex%B zL4IrO3s^6&sS#me zblBoh>07tnKEuN)Xqg#S5s~p<#9jc`M5pMSQ~19C D)mb0T literal 22649 zcmbTecR1C5{6Bn-8IefHEV5@d84Vf73R#(j?2(bp5gA#@v4zZJreSkRviC}M$ezg_ z_w#(dzw7(Qef_TckGtz~)s^>ry`J;&cs$<`_cfHrN$E)u2n4x`vVt}Oft-e)SLcY} zf1d4rd;ot*yWcZ#*KvO0?)k{o3ZeeU-NnJ#-NE+p)n`_&Znn-&A_6yr1cdmm+PJ&B zxJe5NI{xnw0?w}1f*4l=SGWp^i?X2`0zsyM`#}bJMzJ9f`tvFZw;y<=uT6LxV00OX zHhmGE1oyr>QY*OV6Ew><%kB*h@~L-}bh@e=i5|6ARCHGGi41hgR=P~J^LP21Jtd@W zCVW60H}4lHgQUu0yO3_UKIKtA(kj#~bG5t6d&(`t;y#M|A|<6(jBBq6f|4>$_A%lT zC8aGE!NJPfk4CB~DC8pXlf%Q6@ri`s*F9e$Q6m5F5kk8hBB`jHF`tKU5Wy&#a zG@i)~mzibejda9wQapeD{311Vh^E}Z^&+c+cnl`QI>Vc2eSMuy@7Bk&t0XR@POA(F($^U%%Q+HTbum$olSv#K&KH(v_OP=22|; z@yA?CDt-Fx+qZvyuuy7Ou24%6rW1FdJKSAM%cJk2{256r_`@vlo&ig-`v^xUiEagx6*k^tugWEPlHcR6ZGhi)$REX zt#|jYJ$QE?Igqce>TTSYeGiHFY&UeL!SBFj?bl~AGv2_{W6hm9g~TYN8coy01QVNL z)U6`Dl2NB9e0p+JFdn!uDO-24JBC1Oypf*42H}IH-OewI7c^_Y*w?0*6h%iw+=eHZ zUR(@^xBNX^V#KAL+sbCvfmvX$aIYg$qsh_Clv75bzEw^Iq|Gc?cP0n9&bQy@PH;6d zHf9{3nE2p#;HsdgnC-UE&Gq2j#k%_X8=mXNbY!8T@xFC+b(?>CWB19OiXV0&%^9EG~>vMhf)=Mzj%j*-h?L$MlC1#Cs^BY|$B1#E7x+wPR*Wc0b zKYXWG^01IW!s#9E=ZoVQ4`R8j@f7707U@-^nuG!cV%>Q`W2Dfy!OyQEC}7SDGVfmB5N`z`}n2 z@#FD)djdyeVs%DXcm*wfGGDjElwa^vz!5p|1xDq)>JhU*CUD*=pMN|W>5@UPi&tJb+2aLExcPUuxQ-n7(>9y^($5cU!=)yX zaNpUr%Bde<6(L}u__tC&fB5sN&h#Jb82297!c|dGYO8jPO7+ImGW+GfGB35;1un3@ zp~G6n$sI1TG0OT-L)?UYxgAV|i{jtl#2YTtw-C1qwexz54Mn2p#YnZZw8CG$Y~K`p zR`T$(P~fSbf|AlKWEii7H=e>JGlPXX2K7E-j~_pto}0r|XbkuDQ6lcwd2L~Y#KWlA zQCaF~;&eA26O@|Pzl5L_#Vkt?F<)`)i=z(nUe$=$Kkp2pBl%0RvJg&lS?|4^ZlaL? z{%>Vuz<<4ZA*1Q!Xm95C@8{N;{^IkeQf_~)f~{?CZ{N9f3sK{_k+Hr3&c!SsAi!l( zBWgEX905*i^{^?Jm}0YyGc)T!p|;D@r(eS<*@S#|S1~%Z5csf#ItBNuTpm&LJXl<6 zv_UkU>>8m?!0lUNn3{e>Gia5Yf5o&UZ`b6@^bC0YI_=Tyw?9<5ckkZYfRjU;@v0lJ zcQ4>clGmyuI@_|mm_v*2zmfLn#f53`*c3UAYuAv~uJhj@t~ZNikKW>b0g1<=Gxz#btC}Pr3HeV)P>HQw zK!#9VAvPED4d-G0N4t3|ZRv4myS4(5T0;F(FI~FSm!m}S$)=ArZ(=^jv}16=-@wxH zI&L{&y}xyJb@5G6u(~}$T}WHf8-E(NI<1z8b`aYPpw!#`U0utI9| zSQ!>mJzJPF9hjM!G5GM95K{S83rk?~{O1cy(jjqdO5ecxo<4oLzdsv$rNJ@|N&{S_ zweo+fr7W9y^orlr60o+j5(&j!j*N)tGr^;@qWu3~ko{jPIG27X{Zgh*j<9QE*b*bx z@dkb+KbcprUhTFnHiT{HleWGY`^2VS`iX^>?;N!NpVInxO(U;D;tQmjOxF zOheXbQjOuggcCwNEk7XrxSE*4T|d(_2(R$b>Yv2J1ttI08Dv$>a%no3FC9i3cq ztH6C#TH3MviMxVAE7wk66qm6iV`(WmGBQN>NuYp%kOyXY4&x)UZV`NY*=uvUEv8Cx zx|``L4=Uhk_)C=RYk3Wn&+%T7`Ry#VD_QQgQm04OIh3twBV=bn3Q|x}{nht3H3!a1F73gYd+Gry(R$J>8}h=~sx^h?usp&V+> zH0v3;LjaXDGw%(pJO8F{PtUb|%K3HEvtMqwjbw8-QA>Y&W`(zsT@^)_94|{)&P{b` ze$d~5&gE3bO#n2Z;K@g~vg6a}N? z)yl97$i4MEf8(Wo+a|Gt&F$Cr@1$NJ9cqXvu7||qOC3mh@SJ?!6}CdZ*A4phIY`=L zZn#TbbHcI~VsYjAB;f@X4TdjDvHAWY&)o3w@a8u6k|_r0nuH>b?y zp0ci45tx~g%+59S#Hto8E(xLA1i09pE5<52KDZU6YXo@FIJLdDZ4$qFORxi~Jd)_E{S&c5@`r(eDgF+QbXcjCLl5)4^}$<{^+r$ZIsa}V=*0!MJvDc65}c3u4$C*34wCYR+jF$lh*KivI`m8g6^;w7HAGm*FhLfi?1*3io# z>dk&Z;Mx?LD3XNUfhadr^-O(oaJZCkxCEb-Z9c%-I!oo!RW9Yp!Q&IRXB-t8Wab^7 zTiFCpx1XNWjAwGjrbpXOGTMx43%uBL|Lp$=5#Nkber4~_mNQ=OJC9*OJSe*$b5zVo zPXBYm;Q>*(hYIR-%3fQ}Y>AOht#1N1zWX|v`x4$@ne(aGtfe<>p_YJIV&7V-*fz&y zCjLEIp6fXw)|rG4Kfk`x@g4Ey+1^ISe7tTEnqAfM6B(j8vLN(nj-uu;Q*<#ge)6ZA z0gMKp&KZ1BQzS;GzdTQ-#xzevw5`s?MrJ8)*{G zintE$?VT5xqi5^m5q=!$W|oMtN;W05Ss-D+k$U3%6*AX1RhldZ>=MqV6PNpQz-;-L zWf0GUgE9k&hRc%d4V;{8?~a%b|B-WmYi;iCDneBWJ;b&ezSm;!TSC)@;=u~m_Zneui1Z2!)b^mCRj+VY7@|9{lH8~!rr?3{JAxD3dnaNMTptUq% zm7UDN+i&DhOGbAj30kycxMThK%8&!`;gRuYJ!XE$bSbt*g}oKdq&OK_4}I%EFVa+D zYD#3(6*h+c#?u;Oec1ldEWaLR^XXfmWz~RmTwR(vSy>;i4o=|J|28#c=B8^IxjlzG z+)El5h@?SY=4}@onQuo5Hm3ig4s#{KPwtoWqw|`-JX(GluZjNlB50!_-oAFqk1g%$ zt0gEFl7&%@L+>y9`S~FbCx`#;y0{1-%-deGLsLY5e0+Sr(#ZsB7`(E&?U&sZZ9k-> z+jHCek1TiHa}+Bug?75tdUb9E>!fS=nzt{#emy5YldB?Zh>rkNgiempX3F&R<7=zm z+&02VCbgEV^A%Rx;LF&bA1X{(ttg1fnIfYJ|8yrz%RasH{ELx9%Izz3?`oxm3GtIV z*S?dO|5ms{$$7n1_*=v!?_J)T;B&pv46YN_%MV89CYuSN|MdE+{^i3*aqvyUS1l^$BRVD085Cc>ddpo@$cgd(mtwVI9z$&n*{~4A-LP$WDoU&FDVCq*NQ3%^ z^xl5k5uK?S(z*{#wTEw@9eVU<|gl=pIC(T|(aQf`)oUn2#7^@N^N*l{N#8ZA1S zzHPfWvv{sd6Ak21EP`y4PiJ!ny2=_+Y|%-kzl)!+w$pQR z+Ky9F;rZ=fyU2V&W-ncBP}*0|(_=Uc>2UY=@7x~y(TWPcESE>4O!MDK3@v*o1u0X4 zKYl!RWuaodDd0HHl`|vQ@G51%lAfrX{648c9o@SJDjcfRd|a|=ni-gsNHSB__6zK& zR^KkOK%`=hTK9VsBYMBy*&FDR@%4#*(HwhyL(`pRTB^FThW3f@a4u^CLY1^%dz1Jv zjByv4rL@Hz-*&>m4{W%4KXTqLh*{MZwRt6~A9&<=6@tzXWn6t*lI9cTjWJG!FMj_L zK7BE6H1)Jfj6^zEt&hj4Q}H}_m8anNOZn{2M&rVl#|pV-|CX^aOxU@${>1`a-qAxL zaXmO5UYH$&_oNHY&wsvBjfG`ts?P56{pyPKf_t2$>9;d}`N1)Z;$14Z|~Ibva$NO{##bzEMb;K&vzi@<*W4^dg!n;e}0e~-Wkk|=ycBzLjG)Id1q$k zX{Df`*)pWd5!;XzVDJ8^Zzue(ctCk?;C|mIDLuElj)`GXe&(VbE-SrbrpeEvyGySq@*LzFjqgv|q z$iWUwpUD-6(|XO4EqTst<|S=$XpE3m^Q6;zhfx29`1-1RZC zbl6cYZWRuiPj>7DnMs04Cq94Y{=2Icua4rKsyl?!T@qHlca55KdPlGGplFiIjJZ3a z5(N^NqQb*lMWM=NIeyZGj$;c7Au!*unb1w4P{NK*Pv0K>XEBemE#2yoCo^NsF6PqX z`z&#Ka|6+M`o5O+?;}LoXt80xy9^&$vb1i1!S=!k?iK#IdM2%-t=b{Twk=Z{VG-i- z`(C!iTkX8tO%;x5ex0A|!7|DeNR}84ve10`(tZY>_cUXX4n&pC_-kXT7SZ|YR(sjf z9`5@06fBK+^b^~PpFZusCnRGG$Auw}G2g!B1}@cjxY}8+Jv3C%P*C_oOMU(350jef z*Zfuz*I!n|AdjgpFd~+R31b+MawpXLOPo$j$_khXQ$MX;l)Ni}*Qs|3lVda;*6@>$ z*k-3lMZ)y)K}9Be*&Y?;d{kdf-reCJ(NsT%TeC3QHIe1w^2Z3sfz&*hnin*27XTBO z84kD>#TB_em2@E95~D%^kK>`gV=0LjfQLeY*9h5MoL=K!@x9WZpx`stb-pu=GwIaS zhos6)30@);>A;#dhiM68L76Qu-9(s~P3Tfmj#l#Mq9ZN^xh>>c<%z-SUgcIfeZ;9j zuslM1dK@qE23)(D!MQbR5lSB#fkBh#B|2G|tKyEazYG%z4C(2_16$ZXLP(+t=l;PzLH>wPZEpX}&d z&{MHIk&(&0?Bf2(AtWA?Tbtctfv{#3xUl$3SHl`=Vm>3HxsHNbo(l13da>tyHhyy! zG=ip4(4A)iUMECH=C$^D1VE%?#`mvUpM7%TkGHIJh-))Uj6tS@RbDwb-3l8QFhI<8 zm%v4I-@biotJrF4YI^Q-qMMBZ&68s>kHBITZ>V5vn)n>fTXGlNYsTQ2?6M~9`*BBi^*`Y&~3brhYGv;Mwy zIDuP-h*r>4?O^}gi}Qf+sfETe$@xisYiiQDV6B0=idum3@a5&89{Hq!t#^kR4cXKxDLaKoGT<2ZmS*LhNm_C7!oTi?zLE(%1p+ReAK=S=zTq4%anOw|9- zVb2c#Fqn@^W<61d>ho$~z{KS^emY4Pb5w0BfVN*-T8I(7P;5bkjE?}od#my6go2!2 z6dfB&@sfuBWe`5`GGAKj@@HFoQD=c9%2?(h6ZIcI&(jNgoFwR@Q3>c0Bc!M2#AV8q z(E6+h;Y$0Yov`&W+WiCTiJ@HUJ!G8+Z*TDxb5WGYhIXF2zJjGRkx*aGP#MMQlwg;X zjEuW}e4(TJlP9ZInXUJgwRPw(;V&&nUGUb&gVk6139Yk6wsDllj!nDglP?R zvJmo}3B&%b(ZtY2%D4*<*GGF3cs=x49puoO83aCii7WN0i3Y>;LaeOqQay6Km1AF) zO4w4=dyoxo#EXL@;n4}?G*ODM6_jxTP?V4+o7B3)>CXs?se21zqtK1}cWO-Gm;OaM z#FEd{h-_*`9S}Xq*G2+rJ(EiHp)~ebZbdluFi#}>v_VW&A?yCeq&q>3!C!ZsuCyDiP ze{#Ml3_pQqsWdb^oKI`1pUnJYjn8GTGyj9GC#wektxujXeNdW2o>GX0xCn{;j?MHi zzhS`KYH=++D{I9A@4xM9!Nj*3{0^7PBPcg_*RW-ccqI>2$~0kfIwhss9Uo^;N*Bwa zFHu?k)?FXRVz|@2?kOn5{(z*yt%GJ$nxl5#J`}(mErjlx-nPQIkb|LZ!)*nH9mzIp zRQ&6m;YUO9<%&_SLVx}JvsC{I(#0?v56bC0?XXeUPz+ka5s!us@vD;f*XIG;t{X=Zr*w^1$EjbQB!n{mDQf=3W=B3V(B*&1kHz|JzHH8^M``4RfTj| z%}3joDb2fo(rS4BJMt2~f&wBVqlWjxH-y|XGAO4Z=`1a%C@5IIpKY1{Vy6rHqeq8r z8}SRfF!YcJ?)(<2yF}!1NU0ey5E1Wmh~F9Mdy2scju#kTjq&L23?mH;5t?a4Gzj-`(N>=k2b6rxSgtQL6Th_mzo~r&hoJD_$h(4!`t7R zvikFD`s=Mynz{aKsT)$2LV7$`7_B!%pm#2N;LNB}MI5ZQ-Dku9N67^kTkaW39L`H{}^FK7-`rW)ZP(ZP} zIvT(J^fJ!_EP&%~4Yyctey}=!k-=W7AQQ<;hcv4~@ELK?cJb;BnvlmWv9hs!@Z2!n zSslHE=*?551(Ic^Gesnom#soxHL2ZkW!PuME4i6?({rlr&v}Qs+ru1ud}Qn>3_3nO z-A0&>49DBtxqEj&7Vi7;+_`hN%+0UnYrIJv$fFwl#2}Fyrcm-Q@x!S^$~}mEZp6uQ zOz(`Z*!10jZ5d^|dKCe9vx|qvJuffGU!QF8Jv}|$fg+x;;8afyQHkfs^JBbpDLy`r z$}rD%U~cDc`J==S$6P7*V$s%JcurG^eP!(a1L0~oP7v4d0zZJr!rZa3;e!4-{?AjO zFW};Y2)by+oy9(Uphh}2rNSs!Vm3E7F-@bRQofDnSb6uRgVI&_bx9%BdWzW^x+8ir z1=BbhcV4ff!ZXst!ie$k@Pw?p84=jm?5gIX^fR-waBYYaK(XQ>#;e_kfoKb9Yz&MU zQMHVu;eX9c<=kNFEqk2|#hq6h9%bApa3uC@os7>Eyf(X7%43-tN1OwNh;42r6tV7B z08SZ~o7@+Bk-&^&J*WJ`SOWHuz|$!!E8iL^HM!w5E=i{*xn?0s57u%^`DTf8k6>LNV_Sa`1 zhVExWmS{}`yQT2np1ZBAd~P!E%zv&u;XJPCU#|#XMC2uJ0PEBU4u^x&Z)g21?cp6jBxm|;W*!7__-`gmFZ^MplUbp z*N-fx|S=h3*FHbRvo`VuM!>^dDq-LYyEY2D*=FR(oEe>X z;5ooEH#d7tNJevX3N#)KzSH8;eNX)(mZc2DL5H!Cw0T`~)o$2WdAuIkg4*l?Yf3ir zJWB%Ol2rGvtnDOw>k~~-1K+UtL6&~g^TLM@A8?9?|9CP{R-e|WKr0;EP zTz}cw#HxtZFGckA)t#zJ6@U~8N5ei34!+^DV-pe@ntlK69q1^}yB$|W`872K8Gb|~ z@!j<;G_(1ORwXKbWC?nun1y|q+`xvRBBHrIWfcq6g4_Xn9 z_(NvXZVTaTar7f6j=lEs@p%l$W_WDuhzSkliT$oaic13KdhMLYMk$=}5zaW5?3xOK z4^Z1g0<&)pvW%+0GdX4%FEr>5EdGOA*(!|wYvg)sD@8~5kDRl--6nLcC?bE7FQr&t z4{;u!zRuUr2@yN+c#AmTV4k)Z<)r2`Q^i0v`uZK$^pJkge210M*UP-uLmU%!5qhXE zSBtgp(c4{$gQm@rcXt(82Qmv(Cp?;VLv&ry~a6%7lwYUl##7SE~q1Ed5mfg#T_s&s-B zhK1|(0(1PVrNW}GuRmClPfgJdtftbrw>jvO5SdiFL{!zCqiC;zk)0-P5X8Oca^ zzTNjtSQsO)iFv5DnJj-vjDM*KekjB=-R^Ge-jwR*uk8^B(lul!rO;A7<{ND32bY;U zk~eSW0BfEsA1D`acH+rr^hM3n8`A}3rB1;d{al7Dw!t5}G|-CUKK$Z9f}n#g($C*tOkZjAHaE%71l}MB zS&(T&(>lA<6Ym}FE7SS-;IXUXHAi+Vem1{t$U3`2u#xffX<^R%qRo<{-~3CyCbIMR z-I+;_yQhce4Qj>Lro`xS6PJf@m|Te#K9|mq3e5?pNxrYOf%5l1y)#}|o1Cby@3#Gg zzdy`>K)$UKkQ~uD4>{AI(uoPD^I3O0Ps7)HpVBJnJS{p!B(Lx+Ma0#t!SB`^>09Pk z?-wPG`*^3wU*DdKYnnLei&aIvHkb3%i1}z86weuSH_Y+O88yBY@2!2C-n7kZ=nN*1N2rT~(&@~5+k6M2?b zZa$KooN2;xW+EET1afe}Hiju^cP)rR{d!2r*LvT6iJ8quQtA!%Nd#_pp8HLHy?v+3 z+bzpbBxMdG;oLpsxt6-)a=N7?MLt!+AoS>Yx?(|;EyeW9%T_zSJMVC2KU8MMGFIsv z7M##c^ax=sz(YzWMYTUqdr;+J4?r1od`Kmw`p+pH^}enz_c8;~OgHDKpKV*!*Leqp zlC!@`lSmpE9^LX#Qb3sbvw!v7D~r zy}F32PrJLjx%WI5dv9Cl<^wk3Fd~qp!$}fG!*6+A?_>V@`wFwi*?eoGRa!A?WAle1 zS4SR!a!lHjC{;W`=eH)CDE0pD^V18N^J4FH@qfe+W&~!8c&q2hqW}I$7+}|{I3OEM z=1@<~t?e-vn(mQ56YcmL77~&LqN=KZ6KSX>ZrBg=J!s3?ScZhOIclAG4XOo@;536y zCk_h07CCu*$@&r_t54?Fr$?==m}3g> z+(Gxq#h>_GqMEBYNWO8a_L;HX&UcLBhY!L}&zfmH^loGPQ$=mFL4{QaqO`rKKz*nZ zQG3at*((I~&%5yOa|sws?ypMcGMqLqKBEydIe+*@mQ8B&AAER>lDf(J8R!-}zMeuI zl>csu_Gf!e!BlM?XVbhIcP+bl6iCoSPJLBWP>z$u4@OE+Qj)Dx_JhiW9xHQh7_o== z`|Xzx!Wc!BVH-9evS)z+C=cK!jB9e!P?5eaWEkD!#tl1&lTQfyW)ssC@kWa0UTL(i*iXsQ5GQsD_F)xNGzGb|j zWN@$$rCa#=Fxfg&*RF%6{__}VNn{`f@7Jd|4@U**V&iHm&@3r|UKK<>=y&h9AW!`U z-J9mg_@hUUxIp)serjT2Ekt)eU+oIy$Zstzobyis=mLGG+QH9`j`Q$u&6C4jE=hwY zQhTd~wNxF}qIki?9Z$Ei)3r0i&L>N1#XN4dyrXZNUL43QOh6}kuGPGm*{bi78Gfn3 z2iC{Trk_u#F|PxSm6UA95-$M|*01*EZSlt!8&;s#c}dOv99PsgHQ__LzYF?U70ETYJ@20J zw0W1_PbV$9U>aYr+Sx+Wkc31cp$mDhSCYEkQ1I`1LDt`ep3LnVnzyY@V9${e%X2Cd z2?k*|Juwff?iW5=!??O*_AF>=^A7*TuhhOECD%DUb#45b^&sqmD}VBcf7jiW^v`p* zf2@s37hUyDlo|MGBl;M$lsL*cJ3G5`dz_h>8CQX&OMxz2HIXj}AVasqD~KBRrRPU` z8?&I`1Mwkfi@u*1tTRufU+pS?gqTJ*`0FH1-G3HaWgoJIcOQqb<#1x`|H->v7o%MR;Gu_JCD1#4v ze%o`Mtn*%m`qK{N#qBLEO4YTsMgOVG4m3g1y*yk}1Q|rPD^+Z0rYS5z8})B(O#cKB zM($YN2k%~O@9yeNPEIZl>6__NFv|!n9XQTRVaL0z|A`e~ldDK8ON@j7y`JUbEx zz6#e7gj<3(h5ur-qEvml9|WFi-@RPIdFxCS!NvZ(JnojFGS_d3+@FYD5_q<2N4I8i z7V!@{42y{x50I1+F`oHbi_?)Ae6orA)2`Np2>4__k}LbWGsU&O!okomd$7K?ZqFbm zguuIT{G(C~ht^`Z-aHt4ZwJ86+%kwv;uz7BIp{L6RuT zSPl8Ucd`HL$OtVc;cic+kBk3^qQmA_`{;^4&lFeZxPqkmp`O;>mm5*c^5r^8Wr9!-9f{AVc$1KvLY({93b9~d&l6))43>97Sur0GlZ%8M$dBFSB zh`ajKs65L%^Y6~mzT*0ZPX#ZNS7 zVRgKHd_W!y`t20C^@YqpJvlkK_OUS|Xr6oKR1|7t|8|P-a1#q$Ox^bHZ12gHHN}sK zj@E^8`T;Nv?|uF)zxM{bE%6z<(TB$`-rs-we0yt43-plM5KXiLPYVa_%eZw*jh8?7 z%?aG^O6#a-T^h(sfVO4S^F$KZtOzFA_k*G2+o?H9sz%E4@_D4x%0?_#9mUfm^q1d& zzt=pdF_cyJ&kqpn$&@c+WMu3=cF2%&;}}>VC)a(iUpClgdN)*ApC6@qbgs%?-+b$_ zRLSGgsb8t$jxRyUc*Xy4=PQU!whk6DEqXF!ZJ9p;enrM4O-)R}EZP(K>m3L$zm1JC zz`($FoR&UEG1@&=D)3YW@&feJdpVFc7C~_fvdR|{lU{5K=L7CIH=c-hzquI(BJ6@I zglWDK*L50V4G&U2wNP%tDO<3R*&tQ~zGHvAcB9;D>#@URomAH>gyQ?9#!|SE0e}j= z!$d-ypqZRny5x=d8?=J$Gyz7H?XBBCZ&a5altUS!oriwS9>jWY4wP)E#6Tsab<6vu z@g}XJ+|L>qKYVbF7Ux05EZSTZ)_!K!Zc~T}#-Cmy!SHh4Y)%jq%=u+EgrK01o$7$; zf-J>o`f!cOm0ktky>^;cXUA+KVU1^|i6U{m0Vy)x{4Q#0%bA&qkRNu}Cn90@@n4B0 zf~@mLiimZ8Nn>t{{ouPk3zm=YDuDl7%X1sRsp>W5PX>ALydZQT&;SKpo0kjzYQBpQ zpFdL0Z%dO91h6cA`ziR@)_js#zVCRdnEmv|Ml9eYcnBC!2}$HP$|o_`)Ewn61Z5AH z!<~agEh#8>J1mj}+6t%BBy`F?Ke-o#ckAsPs@w!#)pto;*DCW=f#pIcC53ov2>tU- z(fw@KHdk&tfcBh3O1nb@M>d@3H9YZ!h9=&6Zlb|410nwTOaPHC>q`T9#>L(JJ8xOt zbI?4?`XisUrutqv`!`}%qpBP%AFsKd=G<@_l)wWMnSDJ#Z4*#YQE5-IoOXP@T}qzB zpSGpU&#m&y!?uc!5POeP*G^{^zw2+|%OvI@lq2`+P=kSz=;PPe?g* zv$Pjnq5 z7*MQ@ankbhR8ms@@ownPQ!O}7Jg@xm5ESefZXJ%USs2;TreA0HUz}1zlk!+@kXc~D$IPxY{EddRUozjF7T<)F3|71SnWAjNoYn$ws09)xJ*YbMaevSL zi0+7+=Nf*3MI+xs(c9kFr{(SC^$uoSxbyn=gim1zqGAyGGMJ9Zzv(nlW3@YSWBw>P zAydWIIFy=(CLh7&?7V?tzX6TA9*SG+*{Z=m5Xa}r?8eHU-UsOXKFl`g;39EfUtdl8 z7i9>MNqmOcaI@FjAEmrD%{`{n{5kL5!H|++7|)Sm8isc790})sS4iof$|l_0$O_?V zq2_-`4Ut-H^fEV8fY7`M(MKo4SWsxk3%&?hfxE0@mslvG7&!U)CnkcdI&!PSO9lc+ zfAwh%*S?V}simq=0;PB}^coi#7$U*S9szs^eCAa-po__vWehyM6`ozw7nmNS^sYT zjVI>-d4Sv*z1S#gWOA%oL*002NN)E_j&>L{QM*;|^KW`#ff#|4o(G&BSbql% zJ-kV35nF|3bEIlyZ@`J=7x()Y%L8Pm|K!&S0~n>#n9y%>xr<fqmvMcY>_0bpvQQ=Q=1jvMFA>cL^ppkrMQu{11bHH5aDi04S+`ip~V7&a%-MOwbT980|eA4C9UWRTJ zR!c_I?PaWzezw)IqrGSU1fauU@MvN8m4%ak4Z0*yD{ z4*o9O@ZELbGizY1JaepIW?(okFE7t$T1ST{cU#c#0$l6YXZtDueNe=?Fk9ljG06m; z7n+&L0`QCNj}3&@aQ#uKTD!EXf`FlEJ&0LEdPnfDmq<)uG`I>hmP$ibBN`hUVeAQJ zEO_!TC=^N?p5%#dfTpIV$21n1htcNLNdM2z;y~fdod?$~6nCD4x|l~!&J@?`@<05f z%$=vroP*JZo(1~J&!_`B^vjnowNZH+A^&#AoQq&=f;SHXaAQ2wBoEsca4l+-V$QF6 z-%1{%FU7xVJc_hY;zphx9=a&*&+bdwP;hr(8r>j*6r9jpOo8HFMejjr@nBb4O_8@W z&5iT)uMC}Z@>@fS=j^{JjPh6G>p`FUbmki&wV)~ENS9w+As8?q{U6f@8>Y{b(NdDEm!9^&khROrc;=I%!UHxXVp_SKnh}E z1T!0IBm^2a?*iqe`rmy>K@d*pfDXD1vo$!-ToiRmv3(984Fz|1QHU0Vx1QnE`W*kwv&XQmbYgbY7no(jzkR7XV>T=SNz|sx zbec0Tl$M3Bb;VbDWeEZehTfwR_zJ1_6s|G>cQ^#b+L6_DN6J@bWNV=NS6K z4Gm6Sz2f`2MS8jtPUH7aPfzV&8&QRy3bLBMeS4s$76q0GIY<|HLk}pr-28aMJ9)0% zF4TB4=f0DCqo$~hKJxI*HLi12epe*j6oI|bbed|2ZVIEA1;+rrGZNMy)3FSfIvl1N zm|)Pc35dX_AnAEf^6)Zr2X_~`-#nfDLH?jfk6f^B6AyC7bEsS5clBV@Oc-Y_r2y1a zpXDW)euGx|B0c>}+{hdhlp$$p3^;%_icv~fomL0|!TKCj%n0yM81Ko^FEa&Xzs9hU zSmDp~A{W~f_Lljv7ieC9oRW$(2*o&TJ)|IG)QSqs zbPniMaJ_*ss7aH$a|8sf9y9(&2xsSs%PHO2c#^_YK*D(~v72`@P7J-0#ceLcQmqP0 z6~Gor@RQFO)Y8}tDAri5{X`yHKYY<#@lL0gnfcayJ2sKum_kh|2NJR#LxaNg41b#a zX?$??6m~~`K05+3gmWEI?G4XJP)7pj1V(FMaM&EWZySj4siUp=ozhPo?F9PmC&CTp9oZ-$Vbe4Gk?8?f3WFH*}5? zj&KwZ61oV5coTR8)JN&A7vnsH>Cn!N3Ec+H^;V_fS!Wrn!N<3QEOA93@s77g!_khH*N@1omQI3QJ%n5 z1DAz_Gb(1Thaz3}JWkA&y~F23BYL&q;^7VwU`?3R!09k3M^nLA<+uMjG%8z8jE|$W za&T2VjQ}R1KJf>u5*Bfhp47`5`R1l-B#PAyH5tvt1`h*9+ws+|B8Cl^<9qjz&=1JT z_2)K$EJo`g4FeXYUX`9~{3;zz zkerwg^GzgNluf|}J)q2>AHn$&Of$wD9IL8^)Q<*h(JL2egUz?;&^{6_ShGAIxe#Y z8NdiF`d3`2XyR;P1_H1;St33wmDkO&XmX+~Pv_CxM-$RGnMpp(A|}iEOH*CC^c2E9 zpK+B?Q=2Y;+V|Yu-P>Crv4(+g;esB@lI2%rQky|X(n{&|gl1wPMBQ=4xT`RYVI&|P zZyz_m-2C_N9%ws4K|KNV6%xing8M+TfWSgo-j}O#=|Pz(6U4nH=sbne#?X{0Z^DS- z6A9(d_%AXP)zUxOD#(f#vnO&G`yuvKfnt{1hIPRIL`=x9D(d;oXCTE)h(ZSqihWIw z0(p{QUqk(PsaY9LS0jQK6HVBjfKPQP@57gmAJ<=o@64V{Zgoc?p@j5Bss7~sX{U&r zU}Nz^C@A7h`Q`j4jS?pc=2MY&KUd|c=_#g1jYWVc0$nK~^fcQ+4DPUV9g0^V_fL*I z^dDOx({D;Z@`cGLEUg)sLU?$w`WtE2TI<+JX$0?ia|DP--s!17s|*kC{ZHZ)zdb*{ zd+hx`0;CHUfNg2bEsm8R{-0k`u_HJ+r+?oAVD%9KAE14xgmFVIY^k6SqmGFYKA(zA zzej`*?2556i-g915+!vR*(+Ghyr&jfy1eF-GETb63JUqWri|e+M9eb1ptK?qx;pYa z0q;jtp9u+Qoz8P|R;#NG8inZ+yL6>u|MuX2{R%?9|IsBuVyILB8!cZ(5Lt433dY}@ z^cALukxd`W9I&_h+`7eF3}OzGWDY;G{#!10GIJ4n35^=d`n`-(9a4}?jnZMCJjf@* zwXzNV72@zQ4K5KFw{lz`hs#DFh|m=B1W}69Yn4IeLjR*wdl`<{ULYo=foJL>D33f3 ztR42vO)NGj{S~bEm0G_mT!z}I(o2>iNHRo;5q`ZdzWp#v3FrU!1PYXt{g)m}q>-8< zl0``%3(*OO)Uv}jJ|0pqBSy+Z&>vrE$b^gmgRmhj?%rPOAU<*95Nqgu9fgA2Zq zMo!cqfzWL{EB)_+)V{l|j^lEJGFswCjk{*B(|Tt{VWLa|j;}sW1bTOiPU6k44(@EqL*>6V2TV8N!4x z1BTnV+zyz42zZT5znh+p_WnDE*(oZ+v+iCj4G#}@S7r|R>{tYLEY5;OyUV0VP=rSy zYo4jE;iEuYdF=)z%#v;XBYdwv@}E4C2>qnXawHdekGFUKQ;|v89zC0Gznp?8swK1% zt|c)?(1{S)Ofn{mlP8NP;ck!7dF^}0eeHc^OxP7nMVYA(94KI3{r0)y7$zz1$ne%-$1#rJvQiU%PCw*L zGIPY{9x;soL3TD;+|g1LzNzxXcKJcI|JJ>FkK-g0Fvo%30yQKMSqmAnoi?njM((F| zodHfmr0~h`@&$7P~nkd~+Qnw7J*+Q*284|BbGzjHP>9`+5hyfRZ)#Jz|@o z|2ZKzCrp;(RHdwLVDnEpUwJfkrLB~5$ks9=@zKHH&hJ4sx}yX7JP(|P^AFVD{b<|o z=Q>jT5<1uM>2TKfJlHDu&sW^!+OP?wVJ%dEZ{d?6t?)gTP`UiSs?fwPkCeqi&CLc` z8<$y9SR)*M4i#bb&5#K^hLdwemSod`mw7o>o_8b?5|JTbLeBG^WfxEdTOERp(~g(E z%+UWI(H(plzyf4tAiC4srB$|^l{=-Y@}*4{x}EsuAuG}5UGR<``S~xJEarWzpho`8 z192PXq^5V0&kmsJ`C02J=(D>@f&ei6Je0RCq2~u9D)_D|NHY(YQMfN=)uzJ8%vn>1 z>YXaDr&5j|{HoVqwkE!K@#3vQ1Qqvf$Ny!z>`J3rrP+;YsG(lDn`C#WmUDy1;5 zlKxArX|Lw*MJ<^1eA35nO7_XVpq8~l9EU_^=j7Y~@fVpq%ato6EG#VJb>5f$`=A8w zseU&2--P)v=A+|PLUqh?=M`*^=ARu#IWn9Uez6bK{UI=?OU^LIvQ@nR1BgRVsL)eT zP!JFhn0Gghx$zrT5GdyKk|T3NtkF*x>XOI~CZWLGOR4JbNL# zW%QHnr6@%<;A}&#h&;jC{6C$X=|9wM`^RTtM4@sONz!B)ObKO+hMF*A5Rz<}LK0Gz zWTz~3k)=T-)TK!!V{Ibal)7w{LY9PaWf~c4WM6*ATn~Pa?g#hl{sX=j@+xOs#YyX$b zxPk}fkX$o0R_^Bz@^(X2SAZgHoTBHN>F43Ojn7UCDK&{z57)p zf7dUOjT@$?UlqdX;Ct(q;pBj!lgt6HjNdV8EJOr0b|aeC-RkyyFoMQ=6Eq1(!Of1_hTy76?WY8s|@0p|I=@%lG{X3ku_3njl4rN~0@~O7kn>p1+ z0Bi3n)esFCB)9}5rdrilPpp0=50valxot+cb#sIOZQQj*_Xk8_Du>M52(RhBI|eNFZR2{^ZIh1V>xt&Vb z7TK4VkUo8=ZU)kyi#p^r%E0m98u&y{prCM$r@9{SYqh`sT@Dj!Hs@*-7_h8AadSJI zKX(9cK}uI)P4xfD?uB#Jc>yj!K9qr>!#E^uA_k2yC1AW75nB02W24wq_6>2keL1hD z@*@BJz*owGVG9qv)q6ld>krDPZRLA{&;MW}Rwg4^yCa+4Ol{v6MWS7E&b*0JP2<}I zL8jT!iFXhfZlPDJ%uo>?G_hS#2BFYVb51rVsFisNZTU<)AtI%Bk}=;^DCGSO=OOJQ zh}PL@`$Udbt{2F+Enn=;u<3wu-~x%n;uW_lZoIt{4VF9x<5i)C8s@T=|CLmCa$Yzl zCI%5Wir5{A@2`N1uojvW-@#6=x0|yI|-7|Sw#c20kj4T|^ zDo12TdTkt5nLer#jx)gb*v?TATsZ zDb_tGCS~*lz;zBn!^uL-`^?uIGSMxP=_`anM>oVrTN2XG8#Bu~N35h+(%W!|u=Uz8 z^|4WrS)NdZuQ-u70?iZ-0)zH=AYEO-ffXGz_~N$W&c{@s$l(10ZFZ*C&3EXTt$V5N zmeeAkyFYj@{YH~B1g?&y>`EFFM)w^3Lq)#8IRl?+-vPEMkeX9d`P`dEF|RxN>UdOf zeMa44=p5opA&;TL1x}6v#GLd*kJWiphMJlt{rmSoJ7ePPEPw6V zBS&92fT!p+4CGYSb#+h!_F`M^TeB<)q>hKj;-gAkqk#p1mO0%XgDFYJ*%)ts>^p!T z#}k$*4Dq(Ch8GP)w_wPZfPo1{EX}J1B+ZQLb0u}%CpS@5J1R>nN>_%2svfr&-VI3Z zt+wNXej0L_296jJC|}fS&WHO!6n zsLSCtjPyGm$<-9f)NW(WO&wCglx*|&2kj|USk(L;qJ9Onu+$Qmk*)pj6aP#&_qshc z7X9hJzQh9si)E&E<*zTmd;1uEc~-`})V%d4PBTKE%@G8uxce+{e>be#kCa&}uxHxb ztA-iQtj?!~LvLOcmWOSk?mTiiwTdfM`zlHJZZf#(o? zIwmIen9IYa7dKmGLc~z3oZ?@NHslNm+hVbr6^+f?6v8)%?Yh&Pmlg=D@AT!(YNzFH z8z@pz2G0$KOIG?F4~iwak<#w0&AjkxUAdDW$+sWv5TV~adrt!0W1*{K>iZKwd%79j zXbHfKwY6Wn)pVrzT&4oRF{{h&c>{5x?gqe>w@-Qea_gnvehy74)2aZN5AA8|ZH*%Fmk*H`9cm-3}jit*xm6FQ_2+QPH4rv%q8O|JW4U z^z_FeFQ_G>?j3SJ?>|4mn*PpeBeZf(|!~!$9=_T=SIOJPs$8(|Q+%x6+m?dVF$kXvkhIZLDi`xm}amE-&0S z+-j3=Ogbjo5+Q@M(QEFnIC{)oRXu;p!jGK~$lE-h9Ptq2w}9kUkiLQ!78k*dN(xdY zdVZ_ivtDmt5FN1^HFcRfY?|eCC}@9!wvswrM~gG))#cW}e|-AfxO9WiVdhC?YR>`o zTj74&uW|h0GhbqZXs9dWUk~+jQba|Bkr>fC^qa1YsNfltOSoW6EK)+LWi_o_iZy#0 zbA!?X`^&;Ia`gqJDO2Cxf~0*>ey0)9gvU6@g)}j7NG97M3pOIlStsyTz5}JPG;%$n zvbs7y=+`NY9hnC`wh63C{Acv?+u=b()5TLYCuX#!jDrs zgMN&+A}e~CXJhbZ@Z&#$xc|ybKb7gz*W%kVHvw}dkX2{*79$CGEEWZCwlU{$5G6#v z7-?h7aJg$M+EHMZZEAR4J6T4#{(yfxww1Nzfcvf2DIo?r*rVsov@Xc)@`roExT&}X zTYXSLag@>J$4>?NES{ssH)pP_uKwOeJf*5kayV8ub=?Uot!sV#+QMb_FbPybD0||H z6(B+E{b;*_=af3|z`l9k>}o3CGs32i_bR`W9YFBa$${EXeiqdU@@p8H!sOt1yx1;& zZN+9&S5{`)VDcx!cl5k{OT^LHlQJ96Drn0 zf3AKAFCWTT<-YrR3abU&kLlXNh$+amh?qWJrO2mJz4O3?3h;#H2^gWzZ&St0PVCdn z4iEp`W%Bqe!iH%>z83}%X!sM_vPJiE;eemm?u0_y^5oRgD)p%GM(`R+2Y-~IjyphE zg*#!mbZ~x5_@Ix-$o*m?f@x7&3a#GOO4U=3*1{y!!~#a-9`;ozcenQefoNazNZ!6Z zO8*1f7-srf*2ZBFmoBwGRMk!K>JsqdcG(rfpSJJVxpPY_^W334 zRml?tVw?Yvr)}hQaqy8_Vd1(^gGR3BNVhD{7g&t6WZMmFqM@tK81OC`w;{Ur>N!L( z<|fkfN+CH0-QBG0!|p0iuVBor-d%c8T~@Hy2-e8W)u7Qt=s8=TqTP~vdi-xGE8xyqWbzkmomB5H;~H| zV{Lft+C?cPp_!*PWd~L4UtcdPC06cy zynaT(goU+T%Ncu!)+^ATl`kl`GVQ($GKzWLnnJecdTpmr=Ki3vx#!fRRIC`gjILLOUeCB z*6HglG$9aiP`bKlv~{OvX#vK-s;8bdHu6b8uCSv6;$Hc2rW+&C+fztZxw*d*l3!|{ zVB$}d{v}ZKQrj`>4hLdaIZ+GO4ICm_3nPU0mG$jWfHs|7kc}hlZFXxdA@Js zcgN*Zjj}eR^%j-;e>_uQVVdG%dT9`IssB#j`r0Dw;J;;eWNDrB9eBSIyh{emIE(M( z7jgC)hrDZRIg*lbczZ~GO^vOL++7)_>w_~fCLaK@^;>1?5;t3$R(w_(nW=^PnCFt@ zR3#g!quU%fF?{T4#cm}9Qqw@anu(LsXx`*t+qH^yT&xIP^vip(pdi-gY2o@(;`Tow zKP(np?@w?KF52$R*e_~ANvzNdThPj1p6I82Uih9ABOt7I!^k*COzh|S*s%ODJF4U z?D{p{N1mQ;SOsx$^#8mehVgI^kMS_|0Hd6C(=@|E(C<1Y|F9tMuqzP6dkLv_!_X&% zGVbeUXq3^uYMl&Sy%x^r?&O#NL?dc!J_^grLL5)_6 zela)ivkbmdE)@REeCPS)bFctrj)$kI%+&rgy=2261>-|Dsl2`>tbKVrz;$x{(9lf% zZSs*>O7wnb&34+wP&Lp4f^scv5nyehDklP9%m80x-hZ!1E?p?D>%mb$arYo7B)G+f zbPh7T35IUI!3>7uRQtbN^ha$ij?huT&8ywsQ3N5yFgUdH*K00>lwI5J)!@6}W3Zkf+yzuNXTNJbg>kBd~YHswg+ z%B=#ULMM5ck2WvU3pJMz$jwz_zN5k1hfbZQT+6zS z!*Oy)F-C#Q&UqWaf&`mV)WyS}`s9~Bd4T=P4$_!fe=-4_!oFzGST zSNH|el}ndKu2i~;Qp5F!ioYFpbzH!Am=o^2RLk;O$f9A;IaY~@MJhek++5I(x8kUb zIOTQ@n1wq11x@Ec&F*Av5&?-G)#O5G&CRXu9z0^jV}-88C?8vx*BLtz)kZ6jP9)>n z^`3+vDLfX;?e0OwZHVgBpk6<&oEfemJ(n87=>tGCzByLrTjH!0y36P9Xbxu<7mMfmyE z87|87#|RnpXCb548+(mmJ7pjKD2K0&I1p#LXAEx?8WSsrv`j4R5nNksg_#bNh} zA>T?UCBJ^mLbCL6rM$h{;U*DX8Uh}R1FqntokntkV;b0VU#frrl6 zq~<~DSk(-03$U(Gs)%DXGl2&eUEc)m-^c1UvffRSLSmW@2_MSKjjCM7=^K^LnLs^P znIsS#uEP(uc-Z8=j+sH^F|ZN&qWc1(X10t6O~(yp^V@5>@$c?wVj4E%KwmF2{^jg- zZJ1ns#-|jH1cb?GjRA+$UoII`|LRepRdk<-%hCY6NmF+zl+xA-8 zPj+~$999|(hh`T?t{l$k>Kn(&@6;Vw__5MABfpml!9+~7ezYgo(L(X}Aad9hjVyHV(Bpr-!3NQ&B4jRmAL+CWO-7_QQNJTD}}@)Yc3rQyRLj%yFG62qz9N!_*&?m;@8 zostm_#g_LUZ|KSDp8hDx4DFcfMVc)gcVn`+m0WUHx#^m9r+;cPT}oHAq(fiwj#$|l`E$kCl8pV=q&b({Vk z+%-(abQ*NG+w&}!@9av{uXG~xLANWNPQ0&qH*swYs~^q*T2%}) zpR*@RJ13RV@xkdJMGTRzoMoZ;iOVPWG96VH+k2zVFtcXhURR2Kw0GAG#4tPly60N; zbemrwxhyHlwry$k2e8mtpg4ip*hF-|!caVS;4qHktrK{JjRPf^($t5-q23p2S*+Gl zld8052&ptXzBFfK>~=o0b|=u(KL@ReN~9ExhJ9BO68{RjJ&wB8n}$Z5UNK;Xd^+lV ziB*$HqQ)>4HhE&$obS4e04(riNYf9kio>({x!`xkLVj-7u+@iF91~dz?89bS%kle7 zthh8;qgTnHZKora5Dn2#LxWt(*X|~x(n{lE9wHddUPK~MVY*wneMqGWjnGN$N=TRchGVLJ4Tqcu zOJotbkOqgPLYrhf>!Pc)#uAWJPt*^)zP z6vxzj@pgm^_Nf6ZR2DQ`Wr{>~UB90>_}&@8KxXh-NRpSZqdCKH(_ardD=T8GS?7)I z1jfAGYd1+`Z+^gKVD3q_W|NG z`R)^Z;+0nyMs(mN_n@<^*jcS-v?Lvv4~hH{RSd1F!c@DullU3fZ4uOO*q;AxgMnIU zsUe9f&;0&|ItsI@?XQXPE_U8QK`1nTdm?&oH+N#&UM!cq{QFDJt z_TiX#%j{7}HLY9Cq11FxhL}LR;#d~yF0jK^0_(}+> zyDJ5r5e~=aiHOCGR+OF8$)Nwc&b-0Az(`w5hmcCO67ut*WUg@uCqI-%3b0%0 z{cY{438#~O;4#B?7Tm=D;vuSr%oo=BPM>w&-%hTfQ9A{ObKl78fA@^SjBoP#^vEAs;qsDD<6KIqEZ|{B{`IyYDR_&Yf|h z90*(yw-5PAb$|@M^%e}Wee@-Ye}1&Gu<>B6Ga*pN-M!2Mi}jie*hWSz)h>tuw+Ubx z`qkVlT+;%8p64@NiJ1cF{`vsr52YU;IB=;1Dqc-5cODYU&dn8(mp6-I{*B6WI@ZK# zwkK6$R}p$4e)feSWmkX5(mVCjcekRoR&_Z}6sVQ4&N21#P z_OgkG$A`<2p~Swv%`XD!dC2Iiv;Nll`cWO7otaTE6>Iz177|8Vc0y3vl{4htYxikC zVxk;1)OznaTYtm$L}7is;wFV;;yhG5@Z=P2f0>;I1KV|8r}Vy3n_HF6LpsMh?J9i8 z_1RvN+qc_%&m2KxaV`jm>_Do*m^`Cl2wdBbP+SYmxs%8=(3>QKP6C>Q-A%ZD!)w0( z+u}%h=HB+H6;=WIX1fR_6yoW+#jdOz>Em%0HT?y(&GIB^=bTs(6XQ80Fx6`(nghk+ zE?RNy>SXg5XXtEzQ3DM$L7wvMRcn)mLa!G8Ly6VYwO+;~I|EC_)YQZ_4P2-`J4>$$ z^Z*pn-xL%?(ql4zTx(cjH83IRyY_J0t%bp9x^T&UqNQH$!YxR`49MktI;;%319RwY*p zQq;WSYi@dA0T3Q2YG!Ig44PO6*dyZ3>nO|eii(EM(wIv5@3^5S>dh7g-y1Xq9!j|k zUnfPTRM@pMb|*;Ok{$PqrU<%Ed%_aru{p(!drn?+#LqZp>pT-(^TztMlI3riAx}TP z(_gXsaCTtu${ey5^1k_!*Cvz2^{le^)71e>$~*riN(c5gNr|T2|liP*%M4Y zKU6X)e|+%ul4Sc?OMr5##ynn)R$(v*t+8Dk55B1A8hX5TvnYsw>gHhJQZOv3Uwf%v zopH4QAggExL$M9ao5VyRBrv_cHA`wWz&im=%1KE{!8Tr1v94X~ zkbCaY{G8#URM3&XXh{b#J7R|brC@HwL`5;Zw{EgJMavlTkQ=UNZeGBx^f<*EK6PMD zhyes(V<>hc=BkQ{HP8hZzP!H%JIj{Sf=o$RBi9RT#{ zFI>Ba!x8ii40?BK&kJ;M-r6WKExU=pEq<*WvJyd#HuzONKf_b}>C;Uh=?;(D;dL}j zF8#svJTOJ--X3_V?^7^+YVDrn1vqSO#U?*XZSSc6$QKRxV8GtSw~e{JfpUl5VcI|W z(k_zuf#k3=U3y^3`N8*oJwvfE2{oIC)9}zJz0BK(WYx*PqY|Tub)Qmzg_nJ+EUZA? zownNll^Icxm8E9a{@N&62Hl@?_oAp(y&M5{>5HQ5gV72{VPRn+wpXbgd+M5?py1aZ z5h}&cXwMY*Z7(_X<%BDE&3g_G6`R@3TsV8zg*q$`IGMd2ySdeNw7?DfQWiH`pYPQ9 z_hr9)TYC83B%&;Je;s0k?euyziq4i_t1wVPW9BHSegaqZp+zuKzgZ zxvw`mx+_!R4wB#iDXq4ikIDkNE%05RF$W-J+EC8GwK(yXYEkLAv$jsZ?m5mI=0El# zA>DF-HY;7n&7Y{Mo{(sI@%p#c2UDyByYGIJ0RrKiLfuLBUO5BM&Uv7OI`WtF#+w3vo3pnWt$c7#SiCBg%3-w5yJRBhIKa~53%?@u zSG$hR?v!`XzW_|l(s*{ZHafQ%$ z*EXyJ_vuTJK)o)dh))41R6R#jck2I3ag3_jvCufN=3DlwfAHS<-!#uCJ(QtQ@cD}4 zXuinEErp$W7t+NE`&TzQn(Xf_*{s$lsN*?+>e$OC0Hhe~ed)u8F4;Q!PJpu)%?Vvy z!9^!P^)i6OYzl@+@&=>j?EsLzR`ToOB&P)p--O{=KEB-uQAxny@vl%lQdoTUziOr5 zn9)luLuBOn_!F6KXEtkj?_s z4jG+A)CXK^SXeYR=T2l=;AmJt^Hs2fLd*Lc5}yv#TJ4^FHvyc$ zL|X-o<2cB(zK33t&ov@uE~%`5MJfu(j~w)aK-R{5As}5w>+^-EMMiepwm-<~U|{2L z4x(KIQX@jE9F>^b2Z@V_NZM`w(v!s14Dnb2YBhWK{mhKw{8)`XpDlvn#1Pmszn8L? z7?D$Fu_uswq;T+Svg+m2YL`=t)Tc)3O!n5( zvjY#aCK}MWNQ;xuouFVT*Og0$%g0*F4FZQ03~@T11Xw8-;GTs=U5g(GK~27YX=%Nr zsJ#e*-}BOlND?p|ECdJh3p!BKA_cDcNlPb=+gELVKzna|Ig3I<3p|}fPrA05msp_| z-B&a&+wENb?lsRR?R@ocS{y|Ch?d?XI#eo2D%K$22d@2s`$Is=Qy|uBop;~l@f?4C zR_oYnBXcLjxr2;~{;>QgCdoFrofdIGT*FmWITQ?Qx2@*Bhh!i4lU}^}1>#<&phA)` z+{Y96NgcnE?Pkg$tD~hYx$Pk9@(2+r>wbdd2H6|kGoH(0ONorMMR>n>c%nh#4XhuIE@f-mzUo{ zDRJ=vqNcn9#c0C%G+odRkXDbJhuY&Uv;4q-xugB;+u<$(A0ptqlnK#>-5g*4WdmKL zwDYJA)d`{M87Xg1x$sv<)KVjfvR)^~igz=8ylv??tyMlY`SuA|8(@0mtThkE&I@z9 zvv*Jb8tCliw`QeRHA}4UDU;uc;1ZEW3-j}j=uo%vP(wN(lmo(v#p{J5TbnqyG+1 zK|O9$f6ANIufGPY&y$3nc_(fq1Mu11bY)9$OM_3)!4IAjoNqMW5GV!#J~A>wBxVy! zg3wx)AWmTbo45gkdThoO9KSGOzmb=NFf!+BTc7zk%>4YB2VgoK&9l);=lD?qy3nZ5 zcrMAgxQ6U^XbcGpcU@IJURRmPXiQVe9()gijP+kWcBbJw9LGlwwn2DM<=F9MGlQ&V z)8YFn!k-lPHbxDACji`!#8F0#^5JCG$k1Kc(bA8cJ3Ik~wNrGYd>I`s;zA zi1zmOnk-K=Y;HFlTPpc&6>aP@*-*c&w*VN%ykT^49E5Lk+{$!S+}uHYni=?do%2Oj zqLyB<{kah}uXy9?7+k@t4Sw5$6^?!Vg(fA!4MT<0yqq#7t3f;OHo9eV3@crPq@7U+ zb}|p3Ww#r5Z;#d*nKw-=N=_Cfdj1I4kG}eC+^f`~H?5<)d%(!V(rbP@E$C=hD;8G5 zj0b^1k_=!$cU}OF?lhoPyJc>W1*ri$42?cTn-z4Zt$^zqGy9qmEN}m{IJJR($b|*} zl5XymcvsX>Tlmb&Lv8Wcz)ca5LYU&Fbz`E2N*{fMJ9cwmyPFAU{bU(bRqe*cj(=c1 zovO{d5qo!vc{%)pV{|{^y|1Dq1cH-z4Ne3~hvnzb1OqA%I5T<*oK+yz6V(k2A`AyJ zC3KBNH@T+P@ErdMQ<$w191vmH3bb&AU-1B~Dvt4#JwP;>6Bgj>7ym0e)+SBV8aqu#>J=+s(gdo;fWE5cgqw8an8inK~O7CG7A20=O6z+ zrlbCoJnY|cP}Z}sD5|KC+FYKT#4$ss@gSku8hY+Ze-*}>BmwdL29lYlBprJC0snq4 zW?4J@8qRy;9)zdb-W;-ap6}1+PzkIDnNTLp4-^RM0nSL2>in+a literal 8380 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 WNH}fSTh$p1f>4@z8pSsp9{nFqWQ5}Y diff --git a/dev/_images/plotting-25.png b/dev/_images/plotting-25.png index 39bb84855d3903810ae3258d3c197242018368e8..8178c024c87965095528042a080bb2ed6e8ad64a 100644 GIT binary patch literal 10115 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 HY##kDw0ZN? diff --git a/dev/_images/plotting-26.png b/dev/_images/plotting-26.png index 6e18e05e4699b98343b44bb2d13131597a95afff..f8d2f27e8420c9cc1905acfff51ca691c52f9579 100644 GIT binary patch literal 9343 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 diff --git a/dev/_images/plotting-29.png b/dev/_images/plotting-29.png index 4b0932b4d01c59ca50e3c1d0fd451d8f17e061ae..68149d9a146cbfed502bb338e9d1ffcd792d5109 100644 GIT binary patch literal 6906 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 literal 6906 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 diff --git a/dev/_images/plotting-30.png b/dev/_images/plotting-30.png index 1d26f5b17a4ca9c5d5dd08d2a8ec276d59db6f4b..5096750e4e4ee5f937ddf4d93b620239ebe0ece6 100644 GIT binary patch literal 8718 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 literal 8763 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 QT~Y)X15^F{Q?60}2BIbucmMzZ diff --git a/dev/_images/plotting-7.png b/dev/_images/plotting-7.png index 36c5c3a1f77fde5af0be3a707875680fc7b27d58..a29aec118d8acddaaaaa2ce2c0aa116a5e717f2e 100644 GIT binary patch literal 17965 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 diff --git a/dev/explanation/gotchas.html b/dev/explanation/gotchas.html index 23cd58e0a6d..72182588f1d 100644 --- a/dev/explanation/gotchas.html +++ b/dev/explanation/gotchas.html @@ -1574,7 +1574,7 @@

    help()
    measure=<function count_ops>,
    -)
    [source] +)[source]

    Reduce expression by combining powers with similar bases and exponents.

    Explanation

    If deep is True then powsimp() will also simplify arguments of diff --git a/dev/modules/algebras.html b/dev/modules/algebras.html index 432b69caf06..c351003f308 100644 --- a/dev/modules/algebras.html +++ b/dev/modules/algebras.html @@ -824,7 +824,7 @@

    Introductionnorm=None,

    -)[source] +)[source]

    Provides basic quaternion operations. Quaternion objects can be instantiated as Quaternion(a, b, c, d) as in \(q = a + bi + cj + dk\).

    @@ -879,7 +879,7 @@

    Introduction
    -add(other)[source]
    +add(other)[source]

    Adds quaternions.

    Parameters:
    @@ -921,7 +921,7 @@

    Introduction
    -angle()[source]
    +angle()[source]

    Returns the angle of the quaternion measured in the real-axis plane.

    Explanation

    Given a quaternion \(q = a + bi + cj + dk\) where \(a\), \(b\), \(c\) and \(d\) @@ -941,7 +941,7 @@

    Introduction
    -arc_coplanar(other)[source]
    +arc_coplanar(other)[source]

    Returns True if the transformation arcs represented by the input quaternions happen in the same plane.

    Parameters:
    @@ -977,7 +977,7 @@

    Introduction
    -axis()[source]
    +axis()[source]

    Returns \(\mathbf{Ax}(q)\), the axis of the quaternion \(q\).

    Explanation

    Given a quaternion \(q = a + bi + cj + dk\), returns \(\mathbf{Ax}(q)\) i.e., the versor of the vector part of that quaternion @@ -998,7 +998,7 @@

    Introduction
    -exp()[source]
    +exp()[source]

    Returns the exponential of \(q\), given by \(e^q\).

    Returns:
    @@ -1022,7 +1022,7 @@

    Introduction
    -classmethod from_Matrix(elements)[source]
    +classmethod from_Matrix(elements)[source]

    Returns quaternion from elements of a column vector`. If vector_only is True, returns only imaginary part as a Matrix of length 3.

    @@ -1058,7 +1058,7 @@

    Introduction
    -classmethod from_axis_angle(vector, angle)[source]
    +classmethod from_axis_angle(vector, angle)[source]

    Returns a rotation quaternion given the axis and the angle of rotation.

    Parameters:
    @@ -1090,7 +1090,7 @@

    Introduction
    -classmethod from_euler(angles, seq)[source]
    +classmethod from_euler(angles, seq)[source]

    Returns quaternion equivalent to rotation represented by the Euler angles, in the sequence defined by seq.

    @@ -1138,7 +1138,7 @@

    Introduction
    -classmethod from_rotation_matrix(M)[source]
    +classmethod from_rotation_matrix(M)[source]

    Returns the equivalent quaternion of a matrix. The quaternion will be normalized only if the matrix is special orthogonal (orthogonal and det(M) = 1).

    @@ -1170,7 +1170,7 @@

    Introduction
    -index_vector()[source]
    +index_vector()[source]

    Returns the index vector of the quaternion.

    Returns:
    @@ -1195,7 +1195,7 @@

    Introduction
    -integrate(*args)[source]
    +integrate(*args)[source]

    Computes integration of quaternion.

    Returns:
    @@ -1226,13 +1226,13 @@

    Introduction
    -inverse()[source]
    +inverse()[source]

    Returns the inverse of the quaternion.

    -is_pure()[source]
    +is_pure()[source]

    Returns true if the quaternion is pure, false if the quaternion is not pure or returns none if it is unknown.

    Explanation

    @@ -1253,7 +1253,7 @@

    Introduction
    -is_zero_quaternion()[source]
    +is_zero_quaternion()[source]

    Returns true if the quaternion is a zero quaternion or false if it is not a zero quaternion and None if the value is unknown.

    Explanation

    @@ -1279,7 +1279,7 @@

    Introduction
    -log()[source]
    +log()[source]

    Returns the logarithm of the quaternion, given by \(\log q\).

    Examples

    >>> from sympy import Quaternion
    @@ -1295,7 +1295,7 @@ 

    Introduction
    -mensor()[source]
    +mensor()[source]

    Returns the natural logarithm of the norm(magnitude) of the quaternion.

    Examples

    >>> from sympy.algebras.quaternion import Quaternion
    @@ -1314,7 +1314,7 @@ 

    Introduction
    -mul(other)[source]
    +mul(other)[source]

    Multiplies quaternions.

    Parameters:
    @@ -1356,19 +1356,19 @@

    Introduction
    -norm()[source]
    +norm()[source]

    Returns the norm of the quaternion.

    -normalize()[source]
    +normalize()[source]

    Returns the normalized form of the quaternion.

    -orthogonal(other)[source]
    +orthogonal(other)[source]

    Returns the orthogonality of two quaternions.

    Parameters:
    @@ -1400,7 +1400,7 @@

    Introduction
    -parallel(other)[source]
    +parallel(other)[source]

    Returns True if the two pure quaternions seen as 3D vectors are parallel.

    Parameters:
    @@ -1432,7 +1432,7 @@

    Introduction
    -pow(p)[source]
    +pow(p)[source]

    Finds the pth power of the quaternion.

    Parameters:
    @@ -1460,7 +1460,7 @@

    Introduction
    -pow_cos_sin(p)[source]
    +pow_cos_sin(p)[source]

    Computes the pth power in the cos-sin form.

    Parameters:
    @@ -1585,7 +1585,7 @@

    Introduction
    -static rotate_point(pin, r)[source]
    +static rotate_point(pin, r)[source]

    Returns the coordinates of the point pin (a 3 tuple) after rotation.

    Parameters:
    @@ -1624,7 +1624,7 @@

    Introduction
    -scalar_part()[source]
    +scalar_part()[source]

    Returns scalar part(\(\mathbf{S}(q)\)) of the quaternion q.

    Explanation

    Given a quaternion \(q = a + bi + cj + dk\), returns \(\mathbf{S}(q) = a\).

    @@ -1639,7 +1639,7 @@

    Introduction
    -set_norm(norm)[source]
    +set_norm(norm)[source]

    Sets norm of an already instantiated quaternion.

    Parameters:
    @@ -1674,7 +1674,7 @@

    Introduction
    -to_Matrix(vector_only=False)[source]
    +to_Matrix(vector_only=False)[source]

    Returns elements of quaternion as a column vector. By default, a Matrix of length 4 is returned, with the real part as the first element. @@ -1722,7 +1722,7 @@

    Introduction
    -to_axis_angle()[source]
    +to_axis_angle()[source]

    Returns the axis and angle of rotation of a quaternion.

    Returns:
    @@ -1754,7 +1754,7 @@

    Introductionavoid_square_root=False,

    -)[source] +)[source]

    Returns Euler angles representing same rotation as the quaternion, in the sequence given by seq. This implements the method described in [R3].

    @@ -1829,7 +1829,7 @@

    Introductionhomogeneous=True,

    -)[source] +)[source]

    Returns the equivalent rotation transformation matrix of the quaternion which represents rotation about the origin if v is not passed.

    @@ -1872,7 +1872,7 @@

    Introduction
    -classmethod vector_coplanar(q1, q2, q3)[source]
    +classmethod vector_coplanar(q1, q2, q3)[source]

    Returns True if the axis of the pure quaternions seen as 3D vectors q1, q2, and q3 are coplanar.

    @@ -1924,7 +1924,7 @@

    Introduction
    -vector_part()[source]
    +vector_part()[source]

    Returns \(\mathbf{V}(q)\), the vector part of the quaternion \(q\).

    Explanation

    Given a quaternion \(q = a + bi + cj + dk\), returns \(\mathbf{V}(q) = bi + cj + dk\).

    diff --git a/dev/modules/assumptions/ask.html b/dev/modules/assumptions/ask.html index d9d5fbb20ca..3f82e916964 100644 --- a/dev/modules/assumptions/ask.html +++ b/dev/modules/assumptions/ask.html @@ -806,14 +806,14 @@
    Documentation Version

    Module for querying SymPy objects about assumptions.

    -class sympy.assumptions.ask.AssumptionKeys[source]
    +class sympy.assumptions.ask.AssumptionKeys[source]

    This class contains all the supported keys by ask. It should be accessed via the instance sympy.Q.

    -sympy.assumptions.ask.ask(proposition, assumptions=True, context={})[source]
    +sympy.assumptions.ask.ask(proposition, assumptions=True, context={})[source]

    Function to evaluate the proposition with assumptions.

    Parameters:
    @@ -903,7 +903,7 @@
    Documentation Version
    -sympy.assumptions.ask.register_handler(key, handler)[source]
    +sympy.assumptions.ask.register_handler(key, handler)[source]

    Register a handler in the ask system. key must be a string and handler a class inheriting from AskHandler.

    @@ -913,7 +913,7 @@
    Documentation Version
    -sympy.assumptions.ask.remove_handler(key, handler)[source]
    +sympy.assumptions.ask.remove_handler(key, handler)[source]

    Removes a handler from the ask system.

    Deprecated since version 1.8.: Use multipledispatch handler instead. See Predicate.

    diff --git a/dev/modules/assumptions/assume.html b/dev/modules/assumptions/assume.html index beb42aaf631..aab45817f24 100644 --- a/dev/modules/assumptions/assume.html +++ b/dev/modules/assumptions/assume.html @@ -806,7 +806,7 @@
    Documentation Version

    A module which implements predicates and assumption context.

    -class sympy.assumptions.assume.AppliedPredicate(predicate, *args)[source]
    +class sympy.assumptions.assume.AppliedPredicate(predicate, *args)[source]

    The class of expressions resulting from applying Predicate to the arguments. AppliedPredicate merely wraps its argument and remain unevaluated. To evaluate it, use the ask() function.

    @@ -861,7 +861,7 @@
    Documentation Version
    -class sympy.assumptions.assume.AssumptionsContext[source]
    +class sympy.assumptions.assume.AssumptionsContext[source]

    Set containing default assumptions which are applied to the ask() function.

    Explanation

    @@ -906,7 +906,7 @@
    Documentation Version
    -add(*assumptions)[source]
    +add(*assumptions)[source]

    Add assumptions.

    @@ -914,7 +914,7 @@
    Documentation Version
    -class sympy.assumptions.assume.Predicate(*args, **kwargs)[source]
    +class sympy.assumptions.assume.Predicate(*args, **kwargs)[source]

    Base class for mathematical predicates. It also serves as a constructor for undefined predicate objects.

    Explanation

    @@ -986,7 +986,7 @@
    Documentation Version
    -eval(args, assumptions=True)[source]
    +eval(args, assumptions=True)[source]

    Evaluate self(*args) under the given assumptions.

    This uses only direct resolution methods, not logical inference.

    @@ -998,13 +998,13 @@
    Documentation Version
    -classmethod register(*types, **kwargs)[source]
    +classmethod register(*types, **kwargs)[source]

    Register the signature to the handler.

    -classmethod register_many(*types, **kwargs)[source]
    +classmethod register_many(*types, **kwargs)[source]

    Register multiple signatures to same handler.

    @@ -1012,7 +1012,7 @@
    Documentation Version
    -class sympy.assumptions.assume.UndefinedPredicate(name, handlers=None)[source]
    +class sympy.assumptions.assume.UndefinedPredicate(name, handlers=None)[source]

    Predicate without handler.

    Explanation

    This predicate is generated by using Predicate directly for @@ -1031,7 +1031,7 @@

    Documentation Version
    -sympy.assumptions.assume.assuming(*assumptions)[source]
    +sympy.assumptions.assume.assuming(*assumptions)[source]

    Context manager for assumptions.

    Examples

    >>> from sympy import assuming, Q, ask
    diff --git a/dev/modules/assumptions/index.html b/dev/modules/assumptions/index.html
    index 47bebe526cc..a083e510897 100644
    --- a/dev/modules/assumptions/index.html
    +++ b/dev/modules/assumptions/index.html
    @@ -808,7 +808,7 @@ 
    Documentation Version

    Predicate

    -class sympy.assumptions.assume.Predicate(*args, **kwargs)[source]
    +class sympy.assumptions.assume.Predicate(*args, **kwargs)[source]

    Base class for mathematical predicates. It also serves as a constructor for undefined predicate objects.

    Explanation

    @@ -880,7 +880,7 @@

    Predicate
    -eval(args, assumptions=True)[source]
    +eval(args, assumptions=True)[source]

    Evaluate self(*args) under the given assumptions.

    This uses only direct resolution methods, not logical inference.

    @@ -892,13 +892,13 @@

    Predicate
    -classmethod register(*types, **kwargs)[source]
    +classmethod register(*types, **kwargs)[source]

    Register the signature to the handler.

    -classmethod register_many(*types, **kwargs)[source]
    +classmethod register_many(*types, **kwargs)[source]

    Register multiple signatures to same handler.

    @@ -906,7 +906,7 @@

    Predicate
    -class sympy.assumptions.assume.AppliedPredicate(predicate, *args)[source]
    +class sympy.assumptions.assume.AppliedPredicate(predicate, *args)[source]

    The class of expressions resulting from applying Predicate to the arguments. AppliedPredicate merely wraps its argument and remain unevaluated. To evaluate it, use the ask() function.

    @@ -966,7 +966,7 @@

    Querying is ask():

    -sympy.assumptions.ask.ask(proposition, assumptions=True, context={})[source]
    +sympy.assumptions.ask.ask(proposition, assumptions=True, context={})[source]

    Function to evaluate the proposition with assumptions.

    Parameters:
    diff --git a/dev/modules/assumptions/predicates.html b/dev/modules/assumptions/predicates.html index dbb6de5fda7..3f59889922f 100644 --- a/dev/modules/assumptions/predicates.html +++ b/dev/modules/assumptions/predicates.html @@ -807,7 +807,7 @@
    Documentation Version

    Common

    -class sympy.assumptions.predicates.common.IsTruePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.common.IsTruePredicate(*args, **kwargs)[source]

    Generic predicate.

    Explanation

    ask(Q.is_true(x)) is true iff x is true. This only makes @@ -852,7 +852,7 @@

    Common
    -class sympy.assumptions.predicates.common.CommutativePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.common.CommutativePredicate(*args, **kwargs)[source]

    Commutative predicate.

    Explanation

    ask(Q.commutative(x)) is true iff x commutes with any other @@ -872,7 +872,7 @@

    CommonCalculus

    -class sympy.assumptions.predicates.calculus.FinitePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.calculus.FinitePredicate(*args, **kwargs)[source]

    Finite number predicate.

    Explanation

    Q.finite(x) is true if x is a number but neither an infinity @@ -916,7 +916,7 @@

    Calculus
    -class sympy.assumptions.predicates.calculus.InfinitePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.calculus.InfinitePredicate(*args, **kwargs)[source]

    Infinite number predicate.

    Q.infinite(x) is true iff the absolute value of x is infinity.

    @@ -935,7 +935,7 @@

    Calculus

    Matrix

    -class sympy.assumptions.predicates.matrices.SymmetricPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.SymmetricPredicate(*args, **kwargs)[source]

    Symmetric matrix predicate.

    Explanation

    Q.symmetric(x) is true iff x is a square matrix and is equal to @@ -972,7 +972,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.InvertiblePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.InvertiblePredicate(*args, **kwargs)[source]

    Invertible matrix predicate.

    Explanation

    Q.invertible(x) is true iff x is an invertible matrix. @@ -1009,7 +1009,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.OrthogonalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.OrthogonalPredicate(*args, **kwargs)[source]

    Orthogonal matrix predicate.

    Explanation

    Q.orthogonal(x) is true iff x is an orthogonal matrix. @@ -1051,7 +1051,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.UnitaryPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.UnitaryPredicate(*args, **kwargs)[source]

    Unitary matrix predicate.

    Explanation

    Q.unitary(x) is true iff x is a unitary matrix. @@ -1090,7 +1090,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.PositiveDefinitePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.PositiveDefinitePredicate(*args, **kwargs)[source]

    Positive definite matrix predicate.

    Explanation

    If \(M\) is a \(n \times n\) symmetric real matrix, it is said @@ -1129,7 +1129,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.UpperTriangularPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.UpperTriangularPredicate(*args, **kwargs)[source]

    Upper triangular matrix predicate.

    Explanation

    A matrix \(M\) is called upper triangular matrix if \(M_{ij}=0\) @@ -1161,7 +1161,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.LowerTriangularPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.LowerTriangularPredicate(*args, **kwargs)[source]

    Lower triangular matrix predicate.

    Explanation

    A matrix \(M\) is called lower triangular matrix if \(M_{ij}=0\) @@ -1193,7 +1193,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.DiagonalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.DiagonalPredicate(*args, **kwargs)[source]

    Diagonal matrix predicate.

    Explanation

    Q.diagonal(x) is true iff x is a diagonal matrix. A diagonal @@ -1228,7 +1228,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.FullRankPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.FullRankPredicate(*args, **kwargs)[source]

    Fullrank matrix predicate.

    Explanation

    Q.fullrank(x) is true iff x is a full rank matrix. @@ -1258,7 +1258,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.SquarePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.SquarePredicate(*args, **kwargs)[source]

    Square matrix predicate.

    Explanation

    Q.square(x) is true iff x is a square matrix. A square matrix @@ -1296,7 +1296,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.IntegerElementsPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.IntegerElementsPredicate(*args, **kwargs)[source]

    Integer elements matrix predicate.

    Explanation

    Q.integer_elements(x) is true iff all the elements of x @@ -1320,7 +1320,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.RealElementsPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.RealElementsPredicate(*args, **kwargs)[source]

    Real elements matrix predicate.

    Explanation

    Q.real_elements(x) is true iff all the elements of x @@ -1344,7 +1344,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.ComplexElementsPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.ComplexElementsPredicate(*args, **kwargs)[source]

    Complex elements matrix predicate.

    Explanation

    Q.complex_elements(x) is true iff all the elements of x @@ -1370,7 +1370,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.SingularPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.SingularPredicate(*args, **kwargs)[source]

    Singular matrix predicate.

    A matrix is singular iff the value of its determinant is 0.

    Examples

    @@ -1401,7 +1401,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.NormalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.NormalPredicate(*args, **kwargs)[source]

    Normal matrix predicate.

    A matrix is normal if it commutes with its conjugate transpose.

    Examples

    @@ -1430,7 +1430,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.TriangularPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.TriangularPredicate(*args, **kwargs)[source]

    Triangular matrix predicate.

    Explanation

    Q.triangular(X) is true if X is one that is either lower @@ -1463,7 +1463,7 @@

    Matrix
    -class sympy.assumptions.predicates.matrices.UnitTriangularPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.matrices.UnitTriangularPredicate(*args, **kwargs)[source]

    Unit triangular matrix predicate.

    Explanation

    A unit triangular matrix is a triangular matrix with 1s @@ -1490,7 +1490,7 @@

    MatrixNumber Theory

    -class sympy.assumptions.predicates.ntheory.EvenPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.ntheory.EvenPredicate(*args, **kwargs)[source]

    Even number predicate.

    Explanation

    ask(Q.even(x)) is true iff x belongs to the set of even @@ -1519,7 +1519,7 @@

    Number Theory
    -class sympy.assumptions.predicates.ntheory.OddPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.ntheory.OddPredicate(*args, **kwargs)[source]

    Odd number predicate.

    Explanation

    ask(Q.odd(x)) is true iff x belongs to the set of odd numbers.

    @@ -1547,7 +1547,7 @@

    Number Theory
    -class sympy.assumptions.predicates.ntheory.PrimePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.ntheory.PrimePredicate(*args, **kwargs)[source]

    Prime number predicate.

    Explanation

    ask(Q.prime(x)) is true iff x is a natural number greater @@ -1579,7 +1579,7 @@

    Number Theory
    -class sympy.assumptions.predicates.ntheory.CompositePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.ntheory.CompositePredicate(*args, **kwargs)[source]

    Composite number predicate.

    Explanation

    ask(Q.composite(x)) is true iff x is a positive integer and has @@ -1611,7 +1611,7 @@

    Number Theory

    -class sympy.assumptions.predicates.order.PositivePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.PositivePredicate(*args, **kwargs)[source]

    Positive real number predicate.

    Explanation

    Q.positive(x) is true iff x is real and \(x > 0\), that is if x @@ -1659,7 +1659,7 @@

    Order
    -class sympy.assumptions.predicates.order.NegativePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.NegativePredicate(*args, **kwargs)[source]

    Negative number predicate.

    Explanation

    Q.negative(x) is true iff x is a real number and \(x < 0\), that is, @@ -1707,7 +1707,7 @@

    Order
    -class sympy.assumptions.predicates.order.ZeroPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.ZeroPredicate(*args, **kwargs)[source]

    Zero number predicate.

    Explanation

    ask(Q.zero(x)) is true iff the value of x is zero.

    @@ -1738,7 +1738,7 @@

    Order
    -class sympy.assumptions.predicates.order.NonZeroPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.NonZeroPredicate(*args, **kwargs)[source]

    Nonzero real number predicate.

    Explanation

    ask(Q.nonzero(x)) is true iff x is real and x is not zero. Note in @@ -1785,7 +1785,7 @@

    Order
    -class sympy.assumptions.predicates.order.NonPositivePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.NonPositivePredicate(*args, **kwargs)[source]

    Nonpositive real number predicate.

    Explanation

    ask(Q.nonpositive(x)) is true iff x belongs to the set of @@ -1829,7 +1829,7 @@

    Order
    -class sympy.assumptions.predicates.order.NonNegativePredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.order.NonNegativePredicate(*args, **kwargs)[source]

    Nonnegative real number predicate.

    Explanation

    ask(Q.nonnegative(x)) is true iff x belongs to the set of @@ -1874,7 +1874,7 @@

    Order

    Sets

    -class sympy.assumptions.predicates.sets.IntegerPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.IntegerPredicate(*args, **kwargs)[source]

    Integer predicate.

    Explanation

    Q.integer(x) is true iff x belongs to the set of integer @@ -1907,7 +1907,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.RationalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.RationalPredicate(*args, **kwargs)[source]

    Rational number predicate.

    Explanation

    Q.rational(x) is true iff x belongs to the set of @@ -1942,7 +1942,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.IrrationalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.IrrationalPredicate(*args, **kwargs)[source]

    Irrational number predicate.

    Explanation

    Q.irrational(x) is true iff x is any real number that @@ -1979,7 +1979,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.RealPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.RealPredicate(*args, **kwargs)[source]

    Real number predicate.

    Explanation

    Q.real(x) is true iff x is a real number, i.e., it is in the @@ -2050,7 +2050,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.ExtendedRealPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.ExtendedRealPredicate(*args, **kwargs)[source]

    Extended real predicate.

    Explanation

    Q.extended_real(x) is true iff x is a real number or @@ -2081,7 +2081,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.HermitianPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.HermitianPredicate(*args, **kwargs)[source]

    Hermitian predicate.

    Explanation

    ask(Q.hermitian(x)) is true iff x belongs to the set of @@ -2106,7 +2106,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.ComplexPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.ComplexPredicate(*args, **kwargs)[source]

    Complex number predicate.

    Explanation

    Q.complex(x) is true iff x belongs to the set of complex @@ -2142,7 +2142,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.ImaginaryPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.ImaginaryPredicate(*args, **kwargs)[source]

    Imaginary number predicate.

    Explanation

    Q.imaginary(x) is true iff x can be written as a real @@ -2179,7 +2179,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.AntihermitianPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.AntihermitianPredicate(*args, **kwargs)[source]

    Antihermitian predicate.

    Explanation

    Q.antihermitian(x) is true iff x belongs to the field of @@ -2206,7 +2206,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.AlgebraicPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.AlgebraicPredicate(*args, **kwargs)[source]

    Algebraic number predicate.

    Explanation

    Q.algebraic(x) is true iff x belongs to the set of @@ -2246,7 +2246,7 @@

    Sets
    -class sympy.assumptions.predicates.sets.TranscendentalPredicate(*args, **kwargs)[source]
    +class sympy.assumptions.predicates.sets.TranscendentalPredicate(*args, **kwargs)[source]

    Transcedental number predicate.

    Explanation

    Q.transcendental(x) is true iff x belongs to the set of diff --git a/dev/modules/assumptions/refine.html b/dev/modules/assumptions/refine.html index 30554d686e2..5fc479b2483 100644 --- a/dev/modules/assumptions/refine.html +++ b/dev/modules/assumptions/refine.html @@ -805,7 +805,7 @@

    Documentation Version

    Refine

    -sympy.assumptions.refine.refine(expr, assumptions=True)[source]
    +sympy.assumptions.refine.refine(expr, assumptions=True)[source]

    Simplify an expression using assumptions.

    Explanation

    Unlike simplify() which performs structural simplification @@ -843,7 +843,7 @@

    Documentation Version
    -sympy.assumptions.refine.refine_Pow(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_Pow(expr, assumptions)[source]

    Handler for instances of Pow.

    Examples

    >>> from sympy import Q
    @@ -871,7 +871,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_abs(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_abs(expr, assumptions)[source]

    Handler for the absolute value.

    Examples

    >>> from sympy import Q, Abs
    @@ -888,7 +888,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_arg(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_arg(expr, assumptions)[source]

    Handler for complex argument

    Explanation

    >>> from sympy.assumptions.refine import refine_arg
    @@ -904,7 +904,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_atan2(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_atan2(expr, assumptions)[source]

    Handler for the atan2 function.

    Examples

    >>> from sympy import Q, atan2
    @@ -930,7 +930,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_im(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_im(expr, assumptions)[source]

    Handler for imaginary part.

    Explanation

    >>> from sympy.assumptions.refine import refine_im
    @@ -946,7 +946,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_matrixelement(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_matrixelement(expr, assumptions)[source]

    Handler for symmetric part.

    Examples

    >>> from sympy.assumptions.refine import refine_matrixelement
    @@ -962,7 +962,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_re(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_re(expr, assumptions)[source]

    Handler for real part.

    Examples

    >>> from sympy.assumptions.refine import refine_re
    @@ -978,7 +978,7 @@ 
    Documentation Version
    -sympy.assumptions.refine.refine_sign(expr, assumptions)[source]
    +sympy.assumptions.refine.refine_sign(expr, assumptions)[source]

    Handler for sign.

    Examples

    >>> from sympy.assumptions.refine import refine_sign
    diff --git a/dev/modules/calculus/index.html b/dev/modules/calculus/index.html
    index 47d9921d7af..ca898a64548 100644
    --- a/dev/modules/calculus/index.html
    +++ b/dev/modules/calculus/index.html
    @@ -808,7 +808,7 @@ 
    Documentation Version
    Euler-Lagrange Equations for given Lagrangian.

    -sympy.calculus.euler.euler_equations(L, funcs=(), vars=())[source]
    +sympy.calculus.euler.euler_equations(L, funcs=(), vars=())[source]

    Find the Euler-Lagrange equations [R31] for a given Lagrangian.

    Parameters:
    @@ -894,7 +894,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Return whether the function is decreasing in the given interval.

    Parameters:
    @@ -952,7 +952,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Return whether the function is increasing in the given interval.

    Parameters:
    @@ -1006,7 +1006,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Return whether the function is monotonic in the given interval.

    Parameters:
    @@ -1068,7 +1068,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Return whether the function is strictly decreasing in the given interval.

    Parameters:
    @@ -1122,7 +1122,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Return whether the function is strictly increasing in the given interval.

    Parameters:
    @@ -1177,7 +1177,7 @@
    Documentation Version
    symbol=None,
    -)[source] +)[source]

    Helper function for functions checking function monotonicity.

    Parameters:
    @@ -1216,7 +1216,7 @@
    Documentation Version
    -sympy.calculus.singularities.singularities(expression, symbol, domain=None)[source]
    +sympy.calculus.singularities.singularities(expression, symbol, domain=None)[source]

    Find singularities of a given function.

    Parameters:
    @@ -1303,7 +1303,7 @@
    Documentation Version
    -sympy.calculus.finite_diff.apply_finite_diff(order, x_list, y_list, x0=0)[source]
    +sympy.calculus.finite_diff.apply_finite_diff(order, x_list, y_list, x0=0)[source]

    Calculates the finite difference approximation of the derivative of requested order at x0 from points provided in x_list and y_list.

    @@ -1383,7 +1383,7 @@
    Documentation Version
    evaluate=False,
    -)[source] +)[source]

    Differentiate expr and replace Derivatives with finite differences.

    Parameters:
    @@ -1435,7 +1435,7 @@
    Documentation Version
    -sympy.calculus.finite_diff.finite_diff_weights(order, x_list, x0=1)[source]
    +sympy.calculus.finite_diff.finite_diff_weights(order, x_list, x0=1)[source]

    Calculates the finite difference weights for an arbitrarily spaced one-dimensional grid (x_list) for derivatives at x0 of order 0, 1, …, up to order using a recursive formula. Order of accuracy @@ -1573,7 +1573,7 @@

    Documentation Version
    -sympy.calculus.util.continuous_domain(f, symbol, domain)[source]
    +sympy.calculus.util.continuous_domain(f, symbol, domain)[source]

    Returns the domain on which the function expression f is continuous.

    This function is limited by the ability to determine the various singularities and discontinuities of the given function. @@ -1626,7 +1626,7 @@

    Documentation Version
    -sympy.calculus.util.function_range(f, symbol, domain)[source]
    +sympy.calculus.util.function_range(f, symbol, domain)[source]

    Finds the range of a function in a given domain. This method is limited by the ability to determine the singularities and determine limits.

    @@ -1683,7 +1683,7 @@
    Documentation Version
    -sympy.calculus.util.is_convex(f, *syms, domain=Reals)[source]
    +sympy.calculus.util.is_convex(f, *syms, domain=Reals)[source]

    Determines the convexity of the function passed in the argument.

    Parameters:
    @@ -1760,7 +1760,7 @@
    Documentation Version
    -sympy.calculus.util.lcim(numbers)[source]
    +sympy.calculus.util.lcim(numbers)[source]

    Returns the least common integral multiple of a list of numbers.

    The numbers can be rational or irrational or a mixture of both. \(None\) is returned for incommensurable numbers.

    @@ -1792,7 +1792,7 @@
    Documentation Version
    -sympy.calculus.util.maximum(f, symbol, domain=Reals)[source]
    +sympy.calculus.util.maximum(f, symbol, domain=Reals)[source]

    Returns the maximum value of a function in the given domain.

    Parameters:
    @@ -1839,7 +1839,7 @@
    Documentation Version
    -sympy.calculus.util.minimum(f, symbol, domain=Reals)[source]
    +sympy.calculus.util.minimum(f, symbol, domain=Reals)[source]

    Returns the minimum value of a function in the given domain.

    Parameters:
    @@ -1886,7 +1886,7 @@
    Documentation Version
    -sympy.calculus.util.not_empty_in(finset_intersection, *syms)[source]
    +sympy.calculus.util.not_empty_in(finset_intersection, *syms)[source]

    Finds the domain of the functions in finset_intersection in which the finite_set is not-empty.

    @@ -1933,7 +1933,7 @@
    Documentation Version
    -sympy.calculus.util.periodicity(f, symbol, check=False)[source]
    +sympy.calculus.util.periodicity(f, symbol, check=False)[source]

    Tests the given function for periodicity in the given symbol.

    Parameters:
    @@ -1993,7 +1993,7 @@
    Documentation Version
    -sympy.calculus.util.stationary_points(f, symbol, domain=Reals)[source]
    +sympy.calculus.util.stationary_points(f, symbol, domain=Reals)[source]

    Returns the stationary points of a function (where derivative of the function is 0) in the given domain.

    diff --git a/dev/modules/categories.html b/dev/modules/categories.html index e916630afa3..1df2a8f7d6c 100644 --- a/dev/modules/categories.html +++ b/dev/modules/categories.html @@ -829,7 +829,7 @@

    Introduction
    -class sympy.categories.Object(name, **assumptions)[source]
    +class sympy.categories.Object(name, **assumptions)[source]

    The base class for any kind of object in an abstract category.

    Explanation

    While technically any instance of Basic will do, this @@ -839,7 +839,7 @@

    Introduction
    -class sympy.categories.Morphism(domain, codomain)[source]
    +class sympy.categories.Morphism(domain, codomain)[source]

    The base class for any morphism in an abstract category.

    Explanation

    In abstract categories, a morphism is an arrow between two @@ -872,7 +872,7 @@

    Introduction
    -compose(other)[source]
    +compose(other)[source]

    Composes self with the supplied morphism.

    The order of elements in the composition is the usual order, i.e., to construct \(g\circ f\) use g.compose(f).

    @@ -913,7 +913,7 @@

    Introduction
    -class sympy.categories.NamedMorphism(domain, codomain, name)[source]
    +class sympy.categories.NamedMorphism(domain, codomain, name)[source]

    Represents a morphism which has a name.

    Explanation

    Names are used to distinguish between morphisms which have the @@ -953,7 +953,7 @@

    Introduction
    -class sympy.categories.CompositeMorphism(*components)[source]
    +class sympy.categories.CompositeMorphism(*components)[source]

    Represents a morphism which is a composition of other morphisms.

    Explanation

    Two composite morphisms are equal if the morphisms they were @@ -1035,7 +1035,7 @@

    Introduction
    -flatten(new_name)[source]
    +flatten(new_name)[source]

    Forgets the composite structure of this morphism.

    Explanation

    If new_name is not empty, returns a NamedMorphism @@ -1060,7 +1060,7 @@

    Introduction
    -class sympy.categories.IdentityMorphism(domain)[source]
    +class sympy.categories.IdentityMorphism(domain)[source]

    Represents an identity morphism.

    Explanation

    An identity morphism is a morphism with equal domain and codomain, @@ -1094,7 +1094,7 @@

    Introductioncommutative_diagrams=EmptySet,

    -)[source] +)[source]

    An (abstract) category.

    Explanation

    A category [JoyOfCats] is a quadruple \(\mbox{K} = (O, \hom, id, @@ -1191,7 +1191,7 @@

    Introduction
    -class sympy.categories.Diagram(*args)[source]
    +class sympy.categories.Diagram(*args)[source]

    Represents a diagram in a certain category.

    Explanation

    Informally, a diagram is a collection of objects of a category and @@ -1265,7 +1265,7 @@

    Introduction
    -hom(A, B)[source]
    +hom(A, B)[source]

    Returns a 2-tuple of sets of morphisms between objects A and B: one set of morphisms listed as premises, and the other set of morphisms listed as conclusions.

    @@ -1290,7 +1290,7 @@

    Introduction
    -is_subdiagram(diagram)[source]
    +is_subdiagram(diagram)[source]

    Checks whether diagram is a subdiagram of self. Diagram \(D'\) is a subdiagram of \(D\) if all premises (conclusions) of \(D'\) are contained in the premises @@ -1355,7 +1355,7 @@

    Introduction
    -subdiagram_from_objects(objects)[source]
    +subdiagram_from_objects(objects)[source]

    If objects is a subset of the objects of self, returns a diagram which has as premises all those premises of self which have a domains and codomains in objects, likewise @@ -1385,7 +1385,7 @@

    Introduction
    -class sympy.categories.diagram_drawing.DiagramGrid(diagram, groups=None, **hints)[source]
    +class sympy.categories.diagram_drawing.DiagramGrid(diagram, groups=None, **hints)[source]

    Constructs and holds the fitting of the diagram into a grid.

    Explanation

    The mission of this class is to analyse the structure of the @@ -1588,7 +1588,7 @@

    Introductionlabel,

    -)[source] +)[source]

    Stores the information necessary for producing an Xy-pic description of an arrow.

    The principal goal of this class is to abstract away the string @@ -1683,7 +1683,7 @@

    Introduction
    -class sympy.categories.diagram_drawing.XypicDiagramDrawer[source]
    +class sympy.categories.diagram_drawing.XypicDiagramDrawer[source]

    Given a Diagram and the corresponding DiagramGrid, produces the Xy-pic representation of the diagram.

    @@ -1805,7 +1805,7 @@

    Introductiondiagram_format='',

    -)[source] +)[source]

    Returns the Xy-pic representation of diagram laid out in grid.

    Consider the following simple triangle diagram.

    @@ -1868,7 +1868,7 @@

    Introduction**hints,

    -)[source] +)[source]

    Provides a shortcut combining DiagramGrid and XypicDiagramDrawer. Returns an Xy-pic presentation of diagram. The argument masked is a list of morphisms which @@ -1915,7 +1915,7 @@

    Introduction**hints,

    -)[source] +)[source]

    Combines the functionality of xypic_draw_diagram and sympy.printing.preview. The arguments masked, diagram_format, groups, and hints are passed to diff --git a/dev/modules/codegen.html b/dev/modules/codegen.html index e68045dbfd1..acc006bf2a2 100644 --- a/dev/modules/codegen.html +++ b/dev/modules/codegen.html @@ -1344,7 +1344,7 @@

    Autowrap
    opportunistic=True,

    -)[source] +)[source]

    Specialization of ReplaceOptim for functions evaluating “f(x) - 1”.

    Parameters:
    @@ -1383,7 +1383,7 @@

    Autowrap

    -replace_in_Add(e)[source]
    +replace_in_Add(e)[source]

    passed as second argument to Basic.replace(…)

    @@ -1391,7 +1391,7 @@

    Autowrap
    -class sympy.codegen.rewriting.Optimization(cost_function=None, priority=1)[source]
    +class sympy.codegen.rewriting.Optimization(cost_function=None, priority=1)[source]

    Abstract base class for rewriting optimization.

    Subclasses should implement __call__ taking an expression as argument.

    @@ -1405,7 +1405,7 @@

    Autowrap
    -class sympy.codegen.rewriting.ReplaceOptim(query, value, **kwargs)[source]
    +class sympy.codegen.rewriting.ReplaceOptim(query, value, **kwargs)[source]

    Rewriting optimization calling replace on expressions.

    Parameters:
    @@ -1446,7 +1446,7 @@

    Autowrap
    base_req=<function <lambda>>,

    -)[source] +)[source]

    Creates an instance of ReplaceOptim for expanding Pow.

    Parameters:
    @@ -1483,7 +1483,7 @@

    Autowrap
    -sympy.codegen.rewriting.optimize(expr, optimizations)[source]
    +sympy.codegen.rewriting.optimize(expr, optimizations)[source]

    Apply optimizations to an expression.

    Parameters:
    @@ -1524,7 +1524,7 @@

    Autowrap

    -class sympy.codegen.matrix_nodes.MatrixSolve(*args, **kwargs)[source]
    +class sympy.codegen.matrix_nodes.MatrixSolve(*args, **kwargs)[source]

    Represents an operation to solve a linear matrix equation.

    Parameters:
    @@ -1572,7 +1572,7 @@

    Autowrap
    **kwargs,

    -)[source] +)[source]

    Approximates functions by expanding them as a series.

    Parameters:
    @@ -1619,7 +1619,7 @@

    Autowrap
    -class sympy.codegen.approximations.SumApprox(bounds, reltol, **kwargs)[source]
    +class sympy.codegen.approximations.SumApprox(bounds, reltol, **kwargs)[source]

    Approximates sum by neglecting small terms.

    Parameters:
    @@ -1781,7 +1781,7 @@

    Using the nodes
    -class sympy.codegen.ast.Assignment(lhs, rhs)[source]
    +class sympy.codegen.ast.Assignment(lhs, rhs)[source]

    Represents variable assignment for code generation.

    Parameters:
    @@ -1821,7 +1821,7 @@

    Using the nodes
    -class sympy.codegen.ast.AssignmentBase(lhs, rhs)[source]
    +class sympy.codegen.ast.AssignmentBase(lhs, rhs)[source]

    Abstract base class for Assignment and AugmentedAssignment.

    Attributes:

    @@ -1832,7 +1832,7 @@

    Using the nodes
    -class sympy.codegen.ast.Attribute(possibly parametrized)[source]
    +class sympy.codegen.ast.Attribute(possibly parametrized)[source]

    For use with sympy.codegen.ast.Node (which takes instances of Attribute as attrs).

    @@ -1859,7 +1859,7 @@

    Using the nodes
    -class sympy.codegen.ast.AugmentedAssignment(lhs, rhs)[source]
    +class sympy.codegen.ast.AugmentedAssignment(lhs, rhs)[source]

    Base class for augmented assignments.

    Attributes:

    @@ -1871,7 +1871,7 @@

    Using the nodes
    -class sympy.codegen.ast.BreakToken(*args, **kwargs)[source]
    +class sympy.codegen.ast.BreakToken(*args, **kwargs)[source]

    Represents ‘break’ in C/Python (‘exit’ in Fortran).

    Use the premade instance break_ or instantiate manually.

    Examples

    @@ -1887,7 +1887,7 @@

    Using the nodes
    -class sympy.codegen.ast.CodeBlock(*args)[source]
    +class sympy.codegen.ast.CodeBlock(*args)[source]

    Represents a block of code.

    Explanation

    For now only assignments are supported. This restriction will be lifted in @@ -1932,7 +1932,7 @@

    Using the nodesorder='canonical',

    -)[source] +)[source]

    Return a new code block with common subexpressions eliminated.

    Explanation

    See the docstring of sympy.simplify.cse_main.cse() for more @@ -1962,7 +1962,7 @@

    Using the nodes
    -classmethod topological_sort(assignments)[source]
    +classmethod topological_sort(assignments)[source]

    Return a CodeBlock with topologically sorted assignments so that variables are assigned before they are used.

    Examples

    @@ -1994,19 +1994,19 @@

    Using the nodes
    -class sympy.codegen.ast.Comment(*args, **kwargs)[source]
    +class sympy.codegen.ast.Comment(*args, **kwargs)[source]

    Represents a comment.

    -class sympy.codegen.ast.ComplexType(*args, **kwargs)[source]
    +class sympy.codegen.ast.ComplexType(*args, **kwargs)[source]

    Represents a complex floating point number.

    -class sympy.codegen.ast.ContinueToken(*args, **kwargs)[source]
    +class sympy.codegen.ast.ContinueToken(*args, **kwargs)[source]

    Represents ‘continue’ in C/Python (‘cycle’ in Fortran)

    Use the premade instance continue_ or instantiate manually.

    Examples

    @@ -2022,7 +2022,7 @@

    Using the nodes
    -class sympy.codegen.ast.Declaration(*args, **kwargs)[source]
    +class sympy.codegen.ast.Declaration(*args, **kwargs)[source]

    Represents a variable declaration

    Parameters:
    @@ -2047,7 +2047,7 @@

    Using the nodes
    -class sympy.codegen.ast.Element(*args, **kwargs)[source]
    +class sympy.codegen.ast.Element(*args, **kwargs)[source]

    Element in (a possibly N-dimensional) array.

    Examples

    >>> from sympy.codegen.ast import Element
    @@ -2067,11 +2067,11 @@ 

    Using the nodes
    -class sympy.codegen.ast.FloatBaseType(*args, **kwargs)[source]
    +class sympy.codegen.ast.FloatBaseType(*args, **kwargs)[source]

    Represents a floating point number type.

    -cast_nocheck[source]
    +cast_nocheck[source]

    alias of Float

    @@ -2079,7 +2079,7 @@

    Using the nodes
    -class sympy.codegen.ast.FloatType(*args, **kwargs)[source]
    +class sympy.codegen.ast.FloatType(*args, **kwargs)[source]

    Represents a floating point type with fixed bit width.

    Base 2 & one sign bit is assumed.

    @@ -2126,7 +2126,7 @@

    Using the nodes
    -cast_nocheck(value)[source]
    +cast_nocheck(value)[source]

    Casts without checking if out of bounds or subnormal.

    @@ -2183,7 +2183,7 @@

    Using the nodes
    -class sympy.codegen.ast.For(*args, **kwargs)[source]
    +class sympy.codegen.ast.For(*args, **kwargs)[source]

    Represents a ‘for-loop’ in the code.

    @@ -2235,7 +2235,7 @@

    Using the nodes
    -class sympy.codegen.ast.FunctionCall(*args, **kwargs)[source]
    +class sympy.codegen.ast.FunctionCall(*args, **kwargs)[source]

    Represents a call to a function in the code.

    Parameters:
    @@ -2255,7 +2255,7 @@

    Using the nodes
    -class sympy.codegen.ast.FunctionDefinition(*args, **kwargs)[source]
    +class sympy.codegen.ast.FunctionDefinition(*args, **kwargs)[source]

    Represents a function definition in the code.

    Parameters:
    @@ -2286,7 +2286,7 @@

    Using the nodes
    -class sympy.codegen.ast.FunctionPrototype(*args, **kwargs)[source]
    +class sympy.codegen.ast.FunctionPrototype(*args, **kwargs)[source]

    Represents a function prototype

    Allows the user to generate forward declaration in e.g. C/C++.

    @@ -2310,13 +2310,13 @@

    Using the nodes
    -class sympy.codegen.ast.IntBaseType(*args, **kwargs)[source]
    +class sympy.codegen.ast.IntBaseType(*args, **kwargs)[source]

    Integer base type, contains no size information.

    -class sympy.codegen.ast.Node(*args, **kwargs)[source]
    +class sympy.codegen.ast.Node(*args, **kwargs)[source]

    Subclass of Token, carrying the attribute ‘attrs’ (Tuple)

    Examples

    >>> from sympy.codegen.ast import Node, value_const, pointer_const
    @@ -2335,7 +2335,7 @@ 

    Using the nodes
    -attr_params(looking_for)[source]
    +attr_params(looking_for)[source]

    Returns the parameters of the Attribute with name looking_for in self.attrs

    @@ -2343,7 +2343,7 @@

    Using the nodes
    -class sympy.codegen.ast.NoneToken(*args, **kwargs)[source]
    +class sympy.codegen.ast.NoneToken(*args, **kwargs)[source]

    The AST equivalence of Python’s NoneType

    The corresponding instance of Python’s None is none.

    Examples

    @@ -2357,7 +2357,7 @@

    Using the nodes
    -class sympy.codegen.ast.Pointer(*args, **kwargs)[source]
    +class sympy.codegen.ast.Pointer(*args, **kwargs)[source]

    Represents a pointer. See Variable.

    Examples

    Can create instances of Element:

    @@ -2373,7 +2373,7 @@

    Using the nodes
    -class sympy.codegen.ast.Print(*args, **kwargs)[source]
    +class sympy.codegen.ast.Print(*args, **kwargs)[source]

    Represents print command in the code.

    Parameters:
    @@ -2392,19 +2392,19 @@

    Using the nodes
    -class sympy.codegen.ast.QuotedString(*args, **kwargs)[source]
    +class sympy.codegen.ast.QuotedString(*args, **kwargs)[source]

    Represents a string which should be printed with quotes.

    -class sympy.codegen.ast.Raise(*args, **kwargs)[source]
    +class sympy.codegen.ast.Raise(*args, **kwargs)[source]

    Prints as ‘raise …’ in Python, ‘throw …’ in C++

    -class sympy.codegen.ast.Return(*args, **kwargs)[source]
    +class sympy.codegen.ast.Return(*args, **kwargs)[source]

    Represents a return command in the code.

    Parameters:
    @@ -2424,14 +2424,14 @@

    Using the nodes
    -class sympy.codegen.ast.RuntimeError_(*args, **kwargs)[source]
    +class sympy.codegen.ast.RuntimeError_(*args, **kwargs)[source]

    Represents ‘std::runtime_error’ in C++ and ‘RuntimeError’ in Python.

    Note that the latter is uncommon, and you might want to use e.g. ValueError.

    -class sympy.codegen.ast.Scope(*args, **kwargs)[source]
    +class sympy.codegen.ast.Scope(*args, **kwargs)[source]

    Represents a scope in the code.

    Parameters:
    @@ -2445,13 +2445,13 @@

    Using the nodes
    -class sympy.codegen.ast.SignedIntType(*args, **kwargs)[source]
    +class sympy.codegen.ast.SignedIntType(*args, **kwargs)[source]

    Represents a signed integer type.

    -class sympy.codegen.ast.Stream(*args, **kwargs)[source]
    +class sympy.codegen.ast.Stream(*args, **kwargs)[source]

    Represents a stream.

    There are two predefined Stream instances stdout & stderr.

    @@ -2473,7 +2473,7 @@

    Using the nodes
    -class sympy.codegen.ast.String(*args, **kwargs)[source]
    +class sympy.codegen.ast.String(*args, **kwargs)[source]

    SymPy object representing a string.

    Atomic object which is not an expression (as opposed to Symbol).

    @@ -2498,7 +2498,7 @@

    Using the nodes
    -class sympy.codegen.ast.Token(*args, **kwargs)[source]
    +class sympy.codegen.ast.Token(*args, **kwargs)[source]

    Base class for the AST types.

    Explanation

    Defining fields are set in _fields. Attributes (defined in _fields) @@ -2512,7 +2512,7 @@

    Using the nodesnot_in_args are not passed to Basic.

    -kwargs(exclude=(), apply=None)[source]
    +kwargs(exclude=(), apply=None)[source]

    Get instance’s attributes as dict of keyword arguments.

    Parameters:
    @@ -2532,7 +2532,7 @@

    Using the nodes
    -class sympy.codegen.ast.Type(*args, **kwargs)[source]
    +class sympy.codegen.ast.Type(*args, **kwargs)[source]

    Represents a type.

    Parameters:
    @@ -2596,7 +2596,7 @@

    Using the nodesprecision_targets=None,

    -)[source] +)[source]

    Casts a value to the data type of the instance.

    Parameters:
    @@ -2650,7 +2650,7 @@

    Using the nodes
    -classmethod from_expr(expr)[source]
    +classmethod from_expr(expr)[source]

    Deduces type from an expression or a Symbol.

    Parameters:
    @@ -2682,13 +2682,13 @@

    Using the nodes
    -class sympy.codegen.ast.UnsignedIntType(*args, **kwargs)[source]
    +class sympy.codegen.ast.UnsignedIntType(*args, **kwargs)[source]

    Represents an unsigned integer type.

    -class sympy.codegen.ast.Variable(*args, **kwargs)[source]
    +class sympy.codegen.ast.Variable(*args, **kwargs)[source]

    Represents a variable.

    Parameters:
    @@ -2740,7 +2740,7 @@

    Using the nodes
    -as_Declaration(**kwargs)[source]
    +as_Declaration(**kwargs)[source]

    Convenience method for creating a Declaration instance.

    Explanation

    If the variable of the Declaration need to wrap a modified @@ -2775,7 +2775,7 @@

    Using the nodescast_check=True,

    -)[source] +)[source]

    Alt. constructor with type deduction from Type.from_expr.

    Deduces type primarily from symbol, secondarily from value.

    @@ -2813,7 +2813,7 @@

    Using the nodes
    -class sympy.codegen.ast.While(*args, **kwargs)[source]
    +class sympy.codegen.ast.While(*args, **kwargs)[source]

    Represents a ‘for-loop’ in the code.

    Expressions are of the form:
    @@ -2846,7 +2846,7 @@

    Using the nodes
    -sympy.codegen.ast.aug_assign(lhs, op, rhs)[source]
    +sympy.codegen.ast.aug_assign(lhs, op, rhs)[source]

    Create ‘lhs op= rhs’.

    Parameters:
    @@ -2893,7 +2893,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.Cbrt(*args)[source]
    +class sympy.codegen.cfunctions.Cbrt(*args)[source]

    Represents the cube root function.

    Explanation

    The reason why one would use Cbrt(x) over cbrt(x) @@ -2914,7 +2914,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -2922,7 +2922,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.Sqrt(*args)[source]
    +class sympy.codegen.cfunctions.Sqrt(*args)[source]

    Represents the square root function.

    Explanation

    The reason why one would use Sqrt(x) over sqrt(x) @@ -2943,7 +2943,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -2951,7 +2951,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.exp2(arg)[source]
    +class sympy.codegen.cfunctions.exp2(arg)[source]

    Represents the exponential function with base two.

    Explanation

    The benefit of using exp2(x) over 2**x @@ -2972,7 +2972,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -2980,7 +2980,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.expm1(arg)[source]
    +class sympy.codegen.cfunctions.expm1(arg)[source]

    Represents the exponential function minus one.

    Explanation

    The benefit of using expm1(x) over exp(x) - 1 @@ -3004,7 +3004,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3012,7 +3012,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.fma(*args)[source]
    +class sympy.codegen.cfunctions.fma(*args)[source]

    Represents “fused multiply add”.

    Explanation

    The benefit of using fma(x, y, z) over x*y + z @@ -3027,7 +3027,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3035,7 +3035,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.hypot(*args)[source]
    +class sympy.codegen.cfunctions.hypot(*args)[source]

    Represents the hypotenuse function.

    Explanation

    The hypotenuse function is provided by e.g. the math library @@ -3054,7 +3054,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3062,7 +3062,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.log10(arg)[source]
    +class sympy.codegen.cfunctions.log10(arg)[source]

    Represents the logarithm function with base ten.

    Examples

    >>> from sympy.abc import x
    @@ -3079,7 +3079,7 @@ 

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3087,7 +3087,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.log1p(arg)[source]
    +class sympy.codegen.cfunctions.log1p(arg)[source]

    Represents the natural logarithm of a number plus one.

    Explanation

    The benefit of using log1p(x) over log(x + 1) @@ -3112,7 +3112,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3120,7 +3120,7 @@

    Using the nodes
    -class sympy.codegen.cfunctions.log2(arg)[source]
    +class sympy.codegen.cfunctions.log2(arg)[source]

    Represents the logarithm function with base two.

    Explanation

    The benefit of using log2(x) over log(x)/log(2) @@ -3141,7 +3141,7 @@

    Using the nodes
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of this function.

    @@ -3153,13 +3153,13 @@

    Using the nodes
    -class sympy.codegen.cnodes.CommaOperator(*args)[source]
    +class sympy.codegen.cnodes.CommaOperator(*args)[source]

    Represents the comma operator in C

    -class sympy.codegen.cnodes.Label(*args, **kwargs)[source]
    +class sympy.codegen.cnodes.Label(*args, **kwargs)[source]

    Label for use with e.g. goto statement.

    Examples

    >>> from sympy import ccode, Symbol
    @@ -3175,7 +3175,7 @@ 

    Using the nodes
    -class sympy.codegen.cnodes.PostDecrement(*args)[source]
    +class sympy.codegen.cnodes.PostDecrement(*args)[source]

    Represents the post-decrement operator

    Examples

    >>> from sympy.abc import x
    @@ -3189,7 +3189,7 @@ 

    Using the nodes
    -class sympy.codegen.cnodes.PostIncrement(*args)[source]
    +class sympy.codegen.cnodes.PostIncrement(*args)[source]

    Represents the post-increment operator

    Examples

    >>> from sympy.abc import x
    @@ -3203,7 +3203,7 @@ 

    Using the nodes
    -class sympy.codegen.cnodes.PreDecrement(*args)[source]
    +class sympy.codegen.cnodes.PreDecrement(*args)[source]

    Represents the pre-decrement operator

    Examples

    >>> from sympy.abc import x
    @@ -3217,7 +3217,7 @@ 

    Using the nodes
    -class sympy.codegen.cnodes.PreIncrement(*args)[source]
    +class sympy.codegen.cnodes.PreIncrement(*args)[source]

    Represents the pre-increment operator

    Examples

    >>> from sympy.abc import x
    @@ -3231,19 +3231,19 @@ 

    Using the nodes
    -sympy.codegen.cnodes.alignof(arg)[source]
    +sympy.codegen.cnodes.alignof(arg)[source]

    Generate of FunctionCall instance for calling ‘alignof’

    -class sympy.codegen.cnodes.goto(*args, **kwargs)[source]
    +class sympy.codegen.cnodes.goto(*args, **kwargs)[source]

    Represents goto in C

    -sympy.codegen.cnodes.sizeof(arg)[source]
    +sympy.codegen.cnodes.sizeof(arg)[source]

    Generate of FunctionCall instance for calling ‘sizeof’

    Examples

    >>> from sympy.codegen.ast import real
    @@ -3257,13 +3257,13 @@ 

    Using the nodes
    -class sympy.codegen.cnodes.struct(*args, **kwargs)[source]
    +class sympy.codegen.cnodes.struct(*args, **kwargs)[source]

    Represents a struct in C

    -class sympy.codegen.cnodes.union(*args, **kwargs)[source]
    +class sympy.codegen.cnodes.union(*args, **kwargs)[source]

    Represents a union in C

    @@ -3273,7 +3273,7 @@

    Using the nodes
    -class sympy.codegen.cxxnodes.using(*args, **kwargs)[source]
    +class sympy.codegen.cxxnodes.using(*args, **kwargs)[source]

    Represents a ‘using’ statement in C++

    @@ -3285,7 +3285,7 @@

    Using the nodes
    -class sympy.codegen.fnodes.ArrayConstructor(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.ArrayConstructor(*args, **kwargs)[source]

    Represents an array constructor.

    Examples

    >>> from sympy import fcode
    @@ -3301,7 +3301,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.Do(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.Do(*args, **kwargs)[source]

    Represents a Do loop in in Fortran.

    Examples

    >>> from sympy import fcode, symbols
    @@ -3328,7 +3328,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.Extent(*args)[source]
    +class sympy.codegen.fnodes.Extent(*args)[source]

    Represents a dimension extent.

    Examples

    >>> from sympy.codegen.fnodes import Extent
    @@ -3348,7 +3348,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.FortranReturn(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.FortranReturn(*args, **kwargs)[source]

    AST node explicitly mapped to a fortran “return”.

    Explanation

    Because a return statement in fortran is different from C, and @@ -3367,7 +3367,7 @@

    Using the nodes
    -class sympy.codegen.fnodes.GoTo(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.GoTo(*args, **kwargs)[source]

    Represents a goto statement in Fortran

    Examples

    >>> from sympy.codegen.fnodes import GoTo
    @@ -3381,7 +3381,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.ImpliedDoLoop(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.ImpliedDoLoop(*args, **kwargs)[source]

    Represents an implied do loop in Fortran.

    Examples

    >>> from sympy import Symbol, fcode
    @@ -3397,7 +3397,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.Module(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.Module(*args, **kwargs)[source]

    Represents a module in Fortran.

    Examples

    >>> from sympy.codegen.fnodes import Module
    @@ -3416,7 +3416,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.Program(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.Program(*args, **kwargs)[source]

    Represents a ‘program’ block in Fortran.

    Examples

    >>> from sympy.codegen.ast import Print
    @@ -3433,7 +3433,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.Subroutine(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.Subroutine(*args, **kwargs)[source]

    Represents a subroutine in Fortran.

    Examples

    >>> from sympy import fcode, symbols
    @@ -3453,7 +3453,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.SubroutineCall(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.SubroutineCall(*args, **kwargs)[source]

    Represents a call to a subroutine in Fortran.

    Examples

    >>> from sympy.codegen.fnodes import SubroutineCall
    @@ -3466,7 +3466,7 @@ 

    Using the nodes
    -sympy.codegen.fnodes.allocated(array)[source]
    +sympy.codegen.fnodes.allocated(array)[source]

    Creates an AST node for a function call to Fortran’s “allocated(…)”

    Examples

    >>> from sympy import fcode
    @@ -3492,7 +3492,7 @@ 

    Using the nodestype=None,

    -)[source] +)[source]

    Convenience function for creating a Variable instance for a Fortran array.

    Parameters:
    @@ -3528,7 +3528,7 @@

    Using the nodes
    -sympy.codegen.fnodes.bind_C(name=None)[source]
    +sympy.codegen.fnodes.bind_C(name=None)[source]

    Creates an Attribute bind_C with a name.

    Parameters:
    @@ -3556,13 +3556,13 @@

    Using the nodes
    -class sympy.codegen.fnodes.cmplx(*args)[source]
    +class sympy.codegen.fnodes.cmplx(*args)[source]

    Fortran complex conversion function.

    -sympy.codegen.fnodes.dimension(*args)[source]
    +sympy.codegen.fnodes.dimension(*args)[source]

    Creates a ‘dimension’ Attribute with (up to 7) extents.

    Examples

    >>> from sympy import fcode
    @@ -3578,25 +3578,25 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.dsign(*args)[source]
    +class sympy.codegen.fnodes.dsign(*args)[source]

    Fortran sign intrinsic for double precision arguments.

    -class sympy.codegen.fnodes.isign(*args)[source]
    +class sympy.codegen.fnodes.isign(*args)[source]

    Fortran sign intrinsic for integer arguments.

    -class sympy.codegen.fnodes.kind(*args)[source]
    +class sympy.codegen.fnodes.kind(*args)[source]

    Fortran kind function.

    -sympy.codegen.fnodes.lbound(array, dim=None, kind=None)[source]
    +sympy.codegen.fnodes.lbound(array, dim=None, kind=None)[source]

    Creates an AST node for a function call to Fortran’s “lbound(…)”

    Parameters:
    @@ -3617,25 +3617,25 @@

    Using the nodes
    -class sympy.codegen.fnodes.literal_dp(num, dps=None, precision=None)[source]
    +class sympy.codegen.fnodes.literal_dp(num, dps=None, precision=None)[source]

    Fortran double precision real literal

    -class sympy.codegen.fnodes.literal_sp(num, dps=None, precision=None)[source]
    +class sympy.codegen.fnodes.literal_sp(num, dps=None, precision=None)[source]

    Fortran single precision real literal

    -class sympy.codegen.fnodes.merge(*args)[source]
    +class sympy.codegen.fnodes.merge(*args)[source]

    Fortran merge function

    -sympy.codegen.fnodes.reshape(source, shape, pad=None, order=None)[source]
    +sympy.codegen.fnodes.reshape(source, shape, pad=None, order=None)[source]

    Creates an AST node for a function call to Fortran’s “reshape(…)”

    Parameters:
    @@ -3647,7 +3647,7 @@

    Using the nodes
    -sympy.codegen.fnodes.shape(source, kind=None)[source]
    +sympy.codegen.fnodes.shape(source, kind=None)[source]

    Creates an AST node for a function call to Fortran’s “shape(…)”

    Parameters:
    @@ -3667,7 +3667,7 @@

    Using the nodes
    -sympy.codegen.fnodes.size(array, dim=None, kind=None)[source]
    +sympy.codegen.fnodes.size(array, dim=None, kind=None)[source]

    Creates an AST node for a function call to Fortran’s “size(…)”

    Examples

    >>> from sympy import fcode, Symbol
    @@ -3688,7 +3688,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.use(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.use(*args, **kwargs)[source]

    Represents a use statement in Fortran.

    Examples

    >>> from sympy.codegen.fnodes import use
    @@ -3705,7 +3705,7 @@ 

    Using the nodes
    -class sympy.codegen.fnodes.use_rename(*args, **kwargs)[source]
    +class sympy.codegen.fnodes.use_rename(*args, **kwargs)[source]

    Represents a renaming in a use statement in Fortran.

    Examples

    >>> from sympy.codegen.fnodes import use_rename, use
    @@ -3743,7 +3743,7 @@ 

    Using the nodesbounds=None,

    -)[source] +)[source]

    Generates an AST for Newton-Raphson method (a root-finding algorithm).

    Parameters:
    @@ -3833,7 +3833,7 @@

    Using the nodes**kwargs,

    -)[source] +)[source]

    Generates an AST for a function implementing the Newton-Raphson method.

    Parameters:
    @@ -3887,7 +3887,7 @@

    Using the nodes

    Python utilities (sympy.codegen.pyutils)

    -sympy.codegen.pyutils.render_as_module(content, standard='python3')[source]
    +sympy.codegen.pyutils.render_as_module(content, standard='python3')[source]

    Renders Python code as a module (with the required imports).

    Parameters:
    @@ -3913,7 +3913,7 @@

    Using the nodessettings=None,

    -)[source] +)[source]

    Renders a C source file (with required #include statements)

    @@ -3931,7 +3931,7 @@

    Using the nodesprinter_settings=None,

    -)[source] +)[source]

    Creates a Module instance and renders it as a string.

    This generates Fortran source code for a module with the correct use statements.

    diff --git a/dev/modules/combinatorics/galois.html b/dev/modules/combinatorics/galois.html index f9196963e49..040db2fb443 100644 --- a/dev/modules/combinatorics/galois.html +++ b/dev/modules/combinatorics/galois.html @@ -839,7 +839,7 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S6.

    @@ -858,7 +858,7 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S5.

    @@ -877,7 +877,7 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S4.

    @@ -896,7 +896,7 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S3.

    @@ -915,7 +915,7 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S2.

    @@ -934,20 +934,20 @@

    Referencesboundary=None,

    -)[source] +)[source]

    Names for the transitive subgroups of S1.

    -sympy.combinatorics.galois.four_group()[source]
    +sympy.combinatorics.galois.four_group()[source]

    Return a representation of the Klein four-group as a transitive subgroup of S4.

    -sympy.combinatorics.galois.M20()[source]
    +sympy.combinatorics.galois.M20()[source]

    Return a representation of the metacyclic group M20, a transitive subgroup of S5 that is one of the possible Galois groups for polys of degree 5.

    Notes

    @@ -956,7 +956,7 @@

    References
    -sympy.combinatorics.galois.S3_in_S6()[source]
    +sympy.combinatorics.galois.S3_in_S6()[source]

    Return a representation of S3 as a transitive subgroup of S6.

    Notes

    The representation is found by viewing the group as the symmetries of a @@ -965,7 +965,7 @@

    References
    -sympy.combinatorics.galois.A4_in_S6()[source]
    +sympy.combinatorics.galois.A4_in_S6()[source]

    Return a representation of A4 as a transitive subgroup of S6.

    Notes

    This was computed using find_transitive_subgroups_of_S6().

    @@ -973,7 +973,7 @@

    References
    -sympy.combinatorics.galois.S4m()[source]
    +sympy.combinatorics.galois.S4m()[source]

    Return a representation of the S4- transitive subgroup of S6.

    Notes

    This was computed using find_transitive_subgroups_of_S6().

    @@ -981,7 +981,7 @@

    References
    -sympy.combinatorics.galois.S4p()[source]
    +sympy.combinatorics.galois.S4p()[source]

    Return a representation of the S4+ transitive subgroup of S6.

    Notes

    This was computed using find_transitive_subgroups_of_S6().

    @@ -989,7 +989,7 @@

    References
    -sympy.combinatorics.galois.A4xC2()[source]
    +sympy.combinatorics.galois.A4xC2()[source]

    Return a representation of the (A4 x C2) transitive subgroup of S6.

    Notes

    This was computed using find_transitive_subgroups_of_S6().

    @@ -997,7 +997,7 @@

    References
    -sympy.combinatorics.galois.S4xC2()[source]
    +sympy.combinatorics.galois.S4xC2()[source]

    Return a representation of the (S4 x C2) transitive subgroup of S6.

    Notes

    This was computed using find_transitive_subgroups_of_S6().

    @@ -1005,7 +1005,7 @@

    References
    -sympy.combinatorics.galois.G18()[source]
    +sympy.combinatorics.galois.G18()[source]

    Return a representation of the group G18, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C2.

    Notes

    @@ -1014,7 +1014,7 @@

    References
    -sympy.combinatorics.galois.G36m()[source]
    +sympy.combinatorics.galois.G36m()[source]

    Return a representation of the group G36-, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C2^2.

    Notes

    @@ -1023,7 +1023,7 @@

    References
    -sympy.combinatorics.galois.G36p()[source]
    +sympy.combinatorics.galois.G36p()[source]

    Return a representation of the group G36+, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C4.

    Notes

    @@ -1032,7 +1032,7 @@

    References
    -sympy.combinatorics.galois.G72()[source]
    +sympy.combinatorics.galois.G72()[source]

    Return a representation of the group G72, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with D4.

    Notes

    @@ -1041,7 +1041,7 @@

    References
    -sympy.combinatorics.galois.PSL2F5()[source]
    +sympy.combinatorics.galois.PSL2F5()[source]

    Return a representation of the group \(PSL_2(\mathbb{F}_5)\), as a transitive subgroup of S6, isomorphic to \(A_5\).

    Notes

    @@ -1050,7 +1050,7 @@

    References
    -sympy.combinatorics.galois.PGL2F5()[source]
    +sympy.combinatorics.galois.PGL2F5()[source]

    Return a representation of the group \(PGL_2(\mathbb{F}_5)\), as a transitive subgroup of S6, isomorphic to \(S_5\).

    Notes

    @@ -1066,7 +1066,7 @@

    Referencesprint_report=False,

    -)[source] +)[source]

    Search for certain transitive subgroups of \(S_6\).

    The symmetric group \(S_6\) has 16 different transitive subgroups, up to conjugacy. Some are more easily constructed than others. For example, the diff --git a/dev/modules/combinatorics/graycode.html b/dev/modules/combinatorics/graycode.html index 54a0b2f6cac..be120ef04bc 100644 --- a/dev/modules/combinatorics/graycode.html +++ b/dev/modules/combinatorics/graycode.html @@ -805,7 +805,7 @@

    Documentation Version

    Gray Code

    -class sympy.combinatorics.graycode.GrayCode(n, *args, **kw_args)[source]
    +class sympy.combinatorics.graycode.GrayCode(n, *args, **kw_args)[source]

    A Gray code is essentially a Hamiltonian walk on a n-dimensional cube with edge length of one. The vertices of the cube are represented by vectors @@ -859,7 +859,7 @@

    Documentation Version
    -generate_gray(**hints)[source]
    +generate_gray(**hints)[source]

    Generates the sequence of bit vectors of a Gray Code.

    Examples

    >>> from sympy.combinatorics import GrayCode
    @@ -901,7 +901,7 @@ 
    Documentation Version
    -next(delta=1)[source]
    +next(delta=1)[source]

    Returns the Gray code a distance delta (default = 1) from the current value in canonical order.

    Examples

    @@ -964,7 +964,7 @@
    Documentation Version
    -skip()[source]
    +skip()[source]

    Skips the bit generation.

    Examples

    >>> from sympy.combinatorics import GrayCode
    @@ -991,7 +991,7 @@ 
    Documentation Version
    -classmethod unrank(n, rank)[source]
    +classmethod unrank(n, rank)[source]

    Unranks an n-bit sized Gray code of rank k. This method exists so that a derivative GrayCode class can define its own code of a given rank.

    @@ -1015,7 +1015,7 @@
    Documentation Version
    -graycode.random_bitstring()[source]
    +graycode.random_bitstring()[source]

    Generates a random bitlist of length n.

    Examples

    >>> from sympy.combinatorics.graycode import random_bitstring
    @@ -1027,7 +1027,7 @@ 
    Documentation Version
    -graycode.gray_to_bin()[source]
    +graycode.gray_to_bin()[source]

    Convert from Gray coding to binary coding.

    We assume big endian encoding.

    Examples

    @@ -1044,7 +1044,7 @@
    Documentation Version
    -graycode.bin_to_gray()[source]
    +graycode.bin_to_gray()[source]

    Convert from binary coding to gray coding.

    We assume big endian encoding.

    Examples

    @@ -1061,7 +1061,7 @@
    Documentation Version
    -graycode.get_subset_from_bitstring(bitstring)[source]
    +graycode.get_subset_from_bitstring(bitstring)[source]

    Gets the subset defined by the bitstring.

    Examples

    >>> from sympy.combinatorics.graycode import get_subset_from_bitstring
    @@ -1079,7 +1079,7 @@ 
    Documentation Version
    -graycode.graycode_subsets()[source]
    +graycode.graycode_subsets()[source]

    Generates the subsets as enumerated by a Gray code.

    Examples

    >>> from sympy.combinatorics.graycode import graycode_subsets
    diff --git a/dev/modules/combinatorics/group_constructs.html b/dev/modules/combinatorics/group_constructs.html
    index 16e2df4953c..3e54365e3eb 100644
    --- a/dev/modules/combinatorics/group_constructs.html
    +++ b/dev/modules/combinatorics/group_constructs.html
    @@ -805,7 +805,7 @@ 
    Documentation Version

    Group constructors

    -sympy.combinatorics.group_constructs.DirectProduct(*groups)[source]
    +sympy.combinatorics.group_constructs.DirectProduct(*groups)[source]

    Returns the direct product of several groups as a permutation group.

    Explanation

    This is implemented much like the __mul__ procedure for taking the direct diff --git a/dev/modules/combinatorics/group_numbers.html b/dev/modules/combinatorics/group_numbers.html index 8cd0ab7f6a3..9f0bd4baeed 100644 --- a/dev/modules/combinatorics/group_numbers.html +++ b/dev/modules/combinatorics/group_numbers.html @@ -805,7 +805,7 @@

    Documentation Version

    Number of groups

    -sympy.combinatorics.group_numbers.is_nilpotent_number(n) bool[source]
    +sympy.combinatorics.group_numbers.is_nilpotent_number(n) bool[source]

    Check whether \(n\) is a nilpotent number. A number \(n\) is said to be nilpotent if and only if every finite group of order \(n\) is nilpotent. For more information see [R48].

    @@ -835,7 +835,7 @@
    Documentation Version
    -sympy.combinatorics.group_numbers.is_abelian_number(n) bool[source]
    +sympy.combinatorics.group_numbers.is_abelian_number(n) bool[source]

    Check whether \(n\) is an abelian number. A number \(n\) is said to be abelian if and only if every finite group of order \(n\) is abelian. For more information see [R50].

    @@ -867,7 +867,7 @@
    Documentation Version
    -sympy.combinatorics.group_numbers.is_cyclic_number(n) bool[source]
    +sympy.combinatorics.group_numbers.is_cyclic_number(n) bool[source]

    Check whether \(n\) is a cyclic number. A number \(n\) is said to be cyclic if and only if every finite group of order \(n\) is cyclic. For more information see [R52].

    @@ -899,7 +899,7 @@
    Documentation Version
    -sympy.combinatorics.group_numbers.groups_count(n)[source]
    +sympy.combinatorics.group_numbers.groups_count(n)[source]

    Number of groups of order \(n\). In [R54], gnu(n) is given, so we follow this notation here as well.

    diff --git a/dev/modules/combinatorics/named_groups.html b/dev/modules/combinatorics/named_groups.html index d68a032ed1e..78fdbd7129d 100644 --- a/dev/modules/combinatorics/named_groups.html +++ b/dev/modules/combinatorics/named_groups.html @@ -805,7 +805,7 @@
    Documentation Version

    Named Groups

    -sympy.combinatorics.named_groups.SymmetricGroup(n)[source]
    +sympy.combinatorics.named_groups.SymmetricGroup(n)[source]

    Generates the symmetric group on n elements as a permutation group.

    Explanation

    The generators taken are the n-cycle @@ -842,7 +842,7 @@

    Documentation Version
    -sympy.combinatorics.named_groups.CyclicGroup(n)[source]
    +sympy.combinatorics.named_groups.CyclicGroup(n)[source]

    Generates the cyclic group of order n as a permutation group.

    Explanation

    The generator taken is the n-cycle (0 1 2 ... n-1) @@ -868,7 +868,7 @@

    Documentation Version
    -sympy.combinatorics.named_groups.DihedralGroup(n)[source]
    +sympy.combinatorics.named_groups.DihedralGroup(n)[source]

    Generates the dihedral group \(D_n\) as a permutation group.

    Explanation

    The dihedral group \(D_n\) is the group of symmetries of the regular @@ -906,7 +906,7 @@

    Documentation Version
    -sympy.combinatorics.named_groups.AlternatingGroup(n)[source]
    +sympy.combinatorics.named_groups.AlternatingGroup(n)[source]

    Generates the alternating group on n elements as a permutation group.

    Explanation

    For n > 2, the generators taken are (0 1 2), (0 1 2 ... n-1) for @@ -941,7 +941,7 @@

    Documentation Version
    -sympy.combinatorics.named_groups.AbelianGroup(*cyclic_orders)[source]
    +sympy.combinatorics.named_groups.AbelianGroup(*cyclic_orders)[source]

    Returns the direct product of cyclic groups with the given orders.

    Explanation

    According to the structure theorem for finite abelian groups ([1]), diff --git a/dev/modules/combinatorics/partitions.html b/dev/modules/combinatorics/partitions.html index 2ead6b8d01f..08ab79472d4 100644 --- a/dev/modules/combinatorics/partitions.html +++ b/dev/modules/combinatorics/partitions.html @@ -805,7 +805,7 @@

    Documentation Version

    Partitions

    -class sympy.combinatorics.partitions.Partition(*partition)[source]
    +class sympy.combinatorics.partitions.Partition(*partition)[source]

    This class represents an abstract partition.

    A partition is a set of disjoint sets whose union equals a given set.

    @@ -838,7 +838,7 @@
    Documentation Version
    -classmethod from_rgs(rgs, elements)[source]
    +classmethod from_rgs(rgs, elements)[source]

    Creates a set partition from a restricted growth string.

    Explanation

    The indices given in rgs are assumed to be the index @@ -886,7 +886,7 @@

    Documentation Version
    -sort_key(order=None)[source]
    +sort_key(order=None)[source]

    Return a canonical key that can be used for sorting.

    Ordering is based on the size and sorted elements of the partition and ties are broken with the rank.

    @@ -909,7 +909,7 @@
    Documentation Version
    -class sympy.combinatorics.partitions.IntegerPartition(partition, integer=None)[source]
    +class sympy.combinatorics.partitions.IntegerPartition(partition, integer=None)[source]

    This class represents an integer partition.

    Explanation

    In number theory and combinatorics, a partition of a positive integer, @@ -933,7 +933,7 @@

    Documentation Version
    -as_dict()[source]
    +as_dict()[source]

    Return the partition as a dictionary whose keys are the partition integers and the values are the multiplicity of that integer.

    @@ -947,7 +947,7 @@
    Documentation Version
    -as_ferrers(char='#')[source]
    +as_ferrers(char='#')[source]

    Prints the ferrer diagram of a partition.

    Examples

    >>> from sympy.combinatorics.partitions import IntegerPartition
    @@ -974,7 +974,7 @@ 
    Documentation Version
    -next_lex()[source]
    +next_lex()[source]

    Return the next partition of the integer, n, in lexical order, wrapping around to [n] if the partition is [1, …, 1].

    Examples

    @@ -990,7 +990,7 @@
    Documentation Version
    -prev_lex()[source]
    +prev_lex()[source]

    Return the previous partition of the integer, n, in lexical order, wrapping around to [1, …, 1] if the partition is [n].

    Examples

    @@ -1008,7 +1008,7 @@
    Documentation Version
    -sympy.combinatorics.partitions.random_integer_partition(n, seed=None)[source]
    +sympy.combinatorics.partitions.random_integer_partition(n, seed=None)[source]

    Generates a random integer partition summing to n as a list of reverse-sorted integers.

    Examples

    @@ -1029,7 +1029,7 @@
    Documentation Version
    -sympy.combinatorics.partitions.RGS_generalized(m)[source]
    +sympy.combinatorics.partitions.RGS_generalized(m)[source]

    Computes the m + 1 generalized unrestricted growth strings and returns them as rows in matrix.

    Examples

    @@ -1049,7 +1049,7 @@
    Documentation Version
    -sympy.combinatorics.partitions.RGS_enum(m)[source]
    +sympy.combinatorics.partitions.RGS_enum(m)[source]

    RGS_enum computes the total number of restricted growth strings possible for a superset of size m.

    Examples

    @@ -1078,7 +1078,7 @@
    Documentation Version
    -sympy.combinatorics.partitions.RGS_unrank(rank, m)[source]
    +sympy.combinatorics.partitions.RGS_unrank(rank, m)[source]

    Gives the unranked restricted growth string for a given superset size.

    Examples

    @@ -1093,7 +1093,7 @@
    Documentation Version
    -sympy.combinatorics.partitions.RGS_rank(rgs)[source]
    +sympy.combinatorics.partitions.RGS_rank(rgs)[source]

    Computes the rank of a restricted growth string.

    Examples

    >>> from sympy.combinatorics.partitions import RGS_rank, RGS_unrank
    diff --git a/dev/modules/combinatorics/perm_groups.html b/dev/modules/combinatorics/perm_groups.html
    index 074f4e0d4eb..e23c9dd2aad 100644
    --- a/dev/modules/combinatorics/perm_groups.html
    +++ b/dev/modules/combinatorics/perm_groups.html
    @@ -805,7 +805,7 @@ 
    Documentation Version

    Permutation Groups

    -class sympy.combinatorics.perm_groups.PermutationGroup(*args, dups=True, **kwargs)[source]
    +class sympy.combinatorics.perm_groups.PermutationGroup(*args, dups=True, **kwargs)[source]

    The class defining a Permutation group.

    Explanation

    PermutationGroup([p1, p2, ..., pn]) returns the permutation group @@ -925,7 +925,7 @@

    Documentation Version
    -__contains__(i)[source]
    +__contains__(i)[source]

    Return True if i is contained in PermutationGroup.

    Examples

    >>> from sympy.combinatorics import Permutation, PermutationGroup
    @@ -938,7 +938,7 @@ 
    Documentation Version
    -__mul__(other)[source]
    +__mul__(other)[source]

    Return the direct product of two permutation groups as a permutation group.

    Explanation

    @@ -971,7 +971,7 @@
    Documentation Version
    **kwargs,
    -)[source] +)[source]

    The default constructor. Accepts Cycle and Permutation forms. Removes duplicates unless dups keyword is False.

    @@ -984,14 +984,14 @@
    Documentation Version
    -_coset_representative(g, H)[source]
    +_coset_representative(g, H)[source]

    Return the representative of Hg from the transversal that would be computed by self.coset_transversal(H).

    -classmethod _distinct_primes_lemma(primes)[source]
    +classmethod _distinct_primes_lemma(primes)[source]

    Subroutine to test if there is only one cyclic group for the order.

    @@ -1005,7 +1005,7 @@
    Documentation Version
    perms=None,
    -)[source] +)[source]

    A test using monte-carlo algorithm.

    Parameters:
    @@ -1037,13 +1037,13 @@
    Documentation Version
    only_alt=False,
    -)[source] +)[source]

    A naive test using the group order.

    -_p_elements_group(p)[source]
    +_p_elements_group(p)[source]

    For an abelian p-group, return the subgroup consisting of all elements of order p (and the identity)

    @@ -1058,7 +1058,7 @@
    Documentation Version
    _random_prec_n=None,
    -)[source] +)[source]

    Initialize random generators for the product replacement algorithm.

    Explanation

    The implementation uses a modification of the original product @@ -1093,7 +1093,7 @@

    Documentation Version
    -_sylow_alt_sym(p)[source]
    +_sylow_alt_sym(p)[source]

    Return a p-Sylow subgroup of a symmetric or an alternating group.

    Explanation

    @@ -1140,7 +1140,7 @@
    Documentation Version
    not_rep,
    -)[source] +)[source]

    Merges two classes in a union-find data structure.

    Explanation

    Used in the implementation of Atkinson’s algorithm as suggested in [1], @@ -1171,7 +1171,7 @@

    Documentation Version
    -_union_find_rep(num, parents)[source]
    +_union_find_rep(num, parents)[source]

    Find representative of a class in a union-find data structure.

    Explanation

    Used in the implementation of Atkinson’s algorithm as suggested in [1], @@ -1201,7 +1201,7 @@

    Documentation Version
    -_verify(K, phi, z, alpha)[source]
    +_verify(K, phi, z, alpha)[source]

    Return a list of relators rels in generators gens`_h` that are mapped to ``H.generators by phi so that given a finite presentation <gens_k | rels_k> of K on a subset of gens_h @@ -1242,7 +1242,7 @@

    Documentation Version
    -abelian_invariants()[source]
    +abelian_invariants()[source]

    Returns the abelian invariants for the given group. Let G be a nontrivial finite abelian group. Then G is isomorphic to the direct product of finitely many nontrivial cyclic groups of @@ -1315,7 +1315,7 @@

    Documentation Version
    strong_gens_distr=None,
    -)[source] +)[source]

    Swap two consecutive base points in base and strong generating set.

    Parameters:
    @@ -1474,7 +1474,7 @@
    Documentation Version
    -center()[source]
    +center()[source]

    Return the center of a permutation group.

    Explanation

    The center for a group \(G\) is defined as @@ -1501,7 +1501,7 @@

    Documentation Version
    -centralizer(other)[source]
    +centralizer(other)[source]

    Return the centralizer of a group/set/element.

    Parameters:
    @@ -1546,7 +1546,7 @@
    Documentation Version
    -commutator(G, H)[source]
    +commutator(G, H)[source]

    Return the commutator of two subgroups.

    Explanation

    For a permutation group K and subgroups G, H, the @@ -1575,7 +1575,7 @@

    Documentation Version
    -composition_series()[source]
    +composition_series()[source]

    Return the composition series for a group as a list of permutation groups.

    Explanation

    @@ -1622,7 +1622,7 @@
    Documentation Version
    -conjugacy_class(x)[source]
    +conjugacy_class(x)[source]

    Return the conjugacy class of an element in the group.

    Explanation

    The conjugacy class of an element g in a group G is the set of @@ -1659,7 +1659,7 @@

    Documentation Version
    -conjugacy_classes()[source]
    +conjugacy_classes()[source]

    Return the conjugacy classes of the group.

    Explanation

    As described in the documentation for the .conjugacy_class() function, @@ -1676,7 +1676,7 @@

    Documentation Version
    -contains(g, strict=True)[source]
    +contains(g, strict=True)[source]

    Test if permutation g belong to self, G.

    Explanation

    If g is an element of G it can be written as a product @@ -1732,7 +1732,7 @@

    Documentation Version
    factor_index=False,
    -)[source] +)[source]

    Return G’s (self’s) coset factorization of g

    Explanation

    If g is an element of G then it can be written as the product @@ -1787,7 +1787,7 @@

    Documentation Version
    -coset_rank(g)[source]
    +coset_rank(g)[source]

    rank using Schreier-Sims representation.

    Explanation

    The coset rank of g is the ordering number in which @@ -1815,21 +1815,21 @@

    Documentation Version
    -coset_table(H)[source]
    +coset_table(H)[source]

    Return the standardised (right) coset table of self in H as a list of lists.

    -coset_transversal(H)[source]
    +coset_transversal(H)[source]

    Return a transversal of the right cosets of self by its subgroup H using the second method described in [1], Subsection 4.6.7

    -coset_unrank(rank, af=False)[source]
    +coset_unrank(rank, af=False)[source]

    unrank using Schreier-Sims representation

    coset_unrank is the inverse operation of coset_rank if 0 <= rank < order; otherwise it returns None.

    @@ -1865,7 +1865,7 @@
    Documentation Version
    -derived_series()[source]
    +derived_series()[source]

    Return the derived series for the group.

    Returns:
    @@ -1902,7 +1902,7 @@
    Documentation Version
    -derived_subgroup()[source]
    +derived_subgroup()[source]

    Compute the derived subgroup.

    Explanation

    The derived subgroup, or commutator subgroup is the subgroup generated @@ -1940,7 +1940,7 @@

    Documentation Version
    -equals(other)[source]
    +equals(other)[source]

    Return True if PermutationGroup generated by elements in the group are same i.e they represent the same PermutationGroup.

    Examples

    @@ -1965,7 +1965,7 @@
    Documentation Version
    af=False,
    -)[source] +)[source]

    Return iterator to generate the elements of the group.

    Explanation

    Iteration is done with one of these methods:

    @@ -2010,7 +2010,7 @@
    Documentation Version
    -generate_dimino(af=False)[source]
    +generate_dimino(af=False)[source]

    Yield group elements using Dimino’s algorithm.

    If af == True it yields the array form of the permutations.

    Examples

    @@ -2035,7 +2035,7 @@
    Documentation Version
    -generate_schreier_sims(af=False)[source]
    +generate_schreier_sims(af=False)[source]

    Yield group elements using the Schreier-Sims representation in coset_rank order

    If af = True it yields the array form of the permutations

    @@ -2060,7 +2060,7 @@
    Documentation Version
    original=False,
    -)[source] +)[source]

    Return a list of strong generators \([s1, \dots, sn]\) s.t \(g = sn \times \dots \times s1\). If original=True, make the list contain only the original group generators

    @@ -2089,7 +2089,7 @@
    Documentation Version
    -index(H)[source]
    +index(H)[source]

    Returns the index of a permutation group.

    Examples

    >>> from sympy.combinatorics import Permutation, PermutationGroup
    @@ -2131,7 +2131,7 @@ 
    Documentation Version
    _random_prec=None,
    -)[source] +)[source]

    Monte Carlo test for the symmetric/alternating group for degrees >= 8.

    Explanation

    @@ -2284,7 +2284,7 @@
    Documentation Version
    -is_elementary(p)[source]
    +is_elementary(p)[source]

    Return True if the group is elementary abelian. An elementary abelian group is a finite abelian group, where every nontrivial element has order \(p\), where \(p\) is a prime.

    @@ -2333,7 +2333,7 @@
    Documentation Version
    -is_normal(gr, strict=True)[source]
    +is_normal(gr, strict=True)[source]

    Test if G=self is a normal subgroup of gr.

    Explanation

    G is normal in gr if @@ -2387,7 +2387,7 @@

    Documentation Version
    -is_primitive(randomized=True)[source]
    +is_primitive(randomized=True)[source]

    Test if a group is primitive.

    Explanation

    A permutation group G acting on a set S is called primitive if @@ -2439,7 +2439,7 @@

    Documentation Version
    -is_subgroup(G, strict=True)[source]
    +is_subgroup(G, strict=True)[source]

    Return True if all elements of self belong to G.

    If strict is False then if self’s degree is smaller than G’s, the elements will be resized to have the same degree.

    @@ -2515,7 +2515,7 @@
    Documentation Version
    -is_transitive(strict=True)[source]
    +is_transitive(strict=True)[source]

    Test if the group is transitive.

    Explanation

    A group is transitive if it has a single orbit.

    @@ -2559,7 +2559,7 @@
    Documentation Version
    -lower_central_series()[source]
    +lower_central_series()[source]

    Return the lower central series for the group.

    The lower central series for a group \(G\) is the series \(G = G_0 > G_1 > G_2 > \ldots\) where @@ -2588,7 +2588,7 @@

    Documentation Version
    -make_perm(n, seed=None)[source]
    +make_perm(n, seed=None)[source]

    Multiply n randomly selected permutations from pgroup together, starting with the identity permutation. If n is a list of integers, those @@ -2642,7 +2642,7 @@

    Documentation Version
    -minimal_block(points)[source]
    +minimal_block(points)[source]

    For a transitive group, finds the block system generated by points.

    Explanation

    @@ -2684,7 +2684,7 @@
    Documentation Version
    -minimal_blocks(randomized=True)[source]
    +minimal_blocks(randomized=True)[source]

    For a transitive group, return the list of all minimal block systems. If a group is intransitive, return \(False\).

    Examples

    @@ -2705,7 +2705,7 @@
    Documentation Version
    -normal_closure(other, k=10)[source]
    +normal_closure(other, k=10)[source]

    Return the normal closure of a subgroup/set of permutations.

    Parameters:
    @@ -2752,7 +2752,7 @@
    Documentation Version
    -orbit(alpha, action='tuples')[source]
    +orbit(alpha, action='tuples')[source]

    Compute the orbit of alpha \(\{g(\alpha) | g \in G\}\) as a set.

    Explanation

    The time complexity of the algorithm used here is \(O(|Orb|*r)\) where @@ -2791,7 +2791,7 @@

    Documentation Version
    schreier_vector=None,
    -)[source] +)[source]

    Return a group element which sends alpha to beta.

    Explanation

    If beta is not in the orbit of alpha, the function returns @@ -2819,7 +2819,7 @@

    Documentation Version
    pairs=False,
    -)[source] +)[source]

    Computes a transversal for the orbit of alpha as a set.

    Explanation

    For a permutation group \(G\), a transversal for the orbit @@ -2843,7 +2843,7 @@

    Documentation Version
    -orbits(rep=False)[source]
    +orbits(rep=False)[source]

    Return the orbits of self, ordered according to lowest element in each orbit.

    Examples

    @@ -2859,7 +2859,7 @@
    Documentation Version
    -order()[source]
    +order()[source]

    Return the order of the group: the number of permutations that can be generated from elements of the group.

    The number of permutations comprising the group is given by @@ -2903,7 +2903,7 @@

    Documentation Version
    incremental=True,
    -)[source] +)[source]

    Return the pointwise stabilizer for a set of points.

    Explanation

    For a permutation group \(G\) and a set of points @@ -2933,7 +2933,7 @@

    Documentation Version
    -polycyclic_group()[source]
    +polycyclic_group()[source]

    Return the PolycyclicGroup instance with below parameters:

    Explanation

      @@ -2950,14 +2950,14 @@
      Documentation Version
      -presentation(eliminate_gens=True)[source]
      +presentation(eliminate_gens=True)[source]

      Return an \(FpGroup\) presentation of the group.

      The algorithm is described in [1], Chapter 6.1.

      -random(af=False)[source]
      +random(af=False)[source]

      Return a random group element

      @@ -2971,7 +2971,7 @@
      Documentation Version
      _random_prec=None,
    -)[source] +)[source]

    Return a random group element using product replacement.

    Explanation

    For the details of the product replacement algorithm, see @@ -2994,7 +2994,7 @@

    Documentation Version
    _random_prec=None,
    -)[source] +)[source]

    Random element from the stabilizer of alpha.

    The schreier vector for alpha is an optional argument used for speeding up repeated calls. The algorithm is described in [1], p.81

    @@ -3006,7 +3006,7 @@
    Documentation Version
    -schreier_sims()[source]
    +schreier_sims()[source]

    Schreier-Sims algorithm.

    Explanation

    It computes the generators of the chain of stabilizers @@ -3039,7 +3039,7 @@

    Documentation Version
    slp_dict=False,
    -)[source] +)[source]

    Extend a sequence of points and generating set to a base and strong generating set.

    @@ -3110,7 +3110,7 @@
    Documentation Version
    _random_prec=None,
    -)[source] +)[source]

    Randomized Schreier-Sims algorithm.

    Parameters:
    @@ -3180,7 +3180,7 @@
    Documentation Version
    -schreier_vector(alpha)[source]
    +schreier_vector(alpha)[source]

    Computes the schreier vector for alpha.

    Explanation

    The Schreier vector efficiently stores information @@ -3209,7 +3209,7 @@

    Documentation Version
    -stabilizer(alpha)[source]
    +stabilizer(alpha)[source]

    Return the stabilizer subgroup of alpha.

    Explanation

    The stabilizer of \(\alpha\) is the group \(G_\alpha = @@ -3259,7 +3259,7 @@

    Documentation Version
    -strong_presentation()[source]
    +strong_presentation()[source]

    Return a strong finite presentation of group. The generators of the returned group are in the same order as the strong generators of group.

    @@ -3281,7 +3281,7 @@
    Documentation Version
    -subgroup(gens)[source]
    +subgroup(gens)[source]

    Return the subgroup generated by \(gens\) which is a list of elements of the group

    @@ -3298,7 +3298,7 @@
    Documentation Version
    init_subgroup=None,
    -)[source] +)[source]

    Find the subgroup of all elements satisfying the property prop.

    Parameters:
    @@ -3377,7 +3377,7 @@
    Documentation Version
    -sylow_subgroup(p)[source]
    +sylow_subgroup(p)[source]

    Return a p-Sylow subgroup of the group.

    The algorithm is described in [1], Chapter 4, Section 7

    Examples

    diff --git a/dev/modules/combinatorics/permutations.html b/dev/modules/combinatorics/permutations.html index 28c0c99de8f..94d02f501e5 100644 --- a/dev/modules/combinatorics/permutations.html +++ b/dev/modules/combinatorics/permutations.html @@ -805,7 +805,7 @@
    Documentation Version

    Permutations

    -class sympy.combinatorics.permutations.Permutation(*args, size=None, **kwargs)[source]
    +class sympy.combinatorics.permutations.Permutation(*args, size=None, **kwargs)[source]

    A permutation, alternatively known as an ‘arrangement number’ or ‘ordering’ is an arrangement of the elements of an ordered list into a one-to-one mapping with itself. The permutation of a given arrangement is given by @@ -1209,7 +1209,7 @@

    Documentation Version
    -apply(i)[source]
    +apply(i)[source]

    Apply the permutation to an expression.

    Parameters:
    @@ -1263,7 +1263,7 @@
    Documentation Version
    -ascents()[source]
    +ascents()[source]

    Returns the positions of ascents in a permutation, ie, the location where p[i] < p[i+1]

    Examples

    @@ -1281,7 +1281,7 @@
    Documentation Version
    -atoms()[source]
    +atoms()[source]

    Returns all the elements of a permutation

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1312,7 +1312,7 @@ 
    Documentation Version
    -commutator(x)[source]
    +commutator(x)[source]

    Return the commutator of self and x: ~x*~self*x*self

    If f and g are part of a group, G, then the commutator of f and g is the group identity iff f and g commute, i.e. fg == gf.

    @@ -1351,7 +1351,7 @@
    Documentation Version
    -commutes_with(other)[source]
    +commutes_with(other)[source]

    Checks if the elements are commuting.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1424,7 +1424,7 @@ 
    Documentation Version
    -descents()[source]
    +descents()[source]

    Returns the positions of descents in a permutation, ie, the location where p[i] > p[i+1]

    Examples

    @@ -1442,7 +1442,7 @@
    Documentation Version
    -classmethod from_inversion_vector(inversion)[source]
    +classmethod from_inversion_vector(inversion)[source]

    Calculates the permutation from the inversion vector.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1456,7 +1456,7 @@ 
    Documentation Version
    -classmethod from_sequence(i, key=None)[source]
    +classmethod from_sequence(i, key=None)[source]

    Return the permutation needed to obtain i from the sorted elements of i. If custom sorting is desired, a key can be given.

    Examples

    @@ -1487,7 +1487,7 @@
    Documentation Version
    -get_adjacency_distance(other)[source]
    +get_adjacency_distance(other)[source]

    Computes the adjacency distance between two permutations.

    Explanation

    This metric counts the number of times a pair i,j of jobs is @@ -1514,7 +1514,7 @@

    Documentation Version
    -get_adjacency_matrix()[source]
    +get_adjacency_matrix()[source]

    Computes the adjacency matrix of a permutation.

    Explanation

    If job i is adjacent to job j in a permutation p @@ -1548,7 +1548,7 @@

    Documentation Version
    -get_positional_distance(other)[source]
    +get_positional_distance(other)[source]

    Computes the positional distance between two permutations.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1569,7 +1569,7 @@ 
    Documentation Version
    -get_precedence_distance(other)[source]
    +get_precedence_distance(other)[source]

    Computes the precedence distance between two permutations.

    Explanation

    Suppose p and p’ represent n jobs. The precedence metric @@ -1593,7 +1593,7 @@

    Documentation Version
    -get_precedence_matrix()[source]
    +get_precedence_matrix()[source]

    Gets the precedence matrix. This is used for computing the distance between two permutations.

    Examples

    @@ -1621,7 +1621,7 @@
    Documentation Version
    -index()[source]
    +index()[source]

    Returns the index of a permutation.

    The index of a permutation is the sum of all subscripts j such that p[j] is greater than p[j+1].

    @@ -1636,7 +1636,7 @@
    Documentation Version
    -inversion_vector()[source]
    +inversion_vector()[source]

    Return the inversion vector of the permutation.

    The inversion vector consists of elements whose value indicates the number of elements in the permutation @@ -1675,7 +1675,7 @@

    Documentation Version
    -inversions()[source]
    +inversions()[source]

    Computes the number of inversions of a permutation.

    Explanation

    An inversion is where i > j but p[i] < p[j].

    @@ -1810,7 +1810,7 @@
    Documentation Version
    -classmethod josephus(m, n, s=1)[source]
    +classmethod josephus(m, n, s=1)[source]

    Return as a permutation the shuffling of range(n) using the Josephus scheme in which every m-th item is selected until all have been chosen. The returned permutation has elements listed by the order in which they @@ -1855,7 +1855,7 @@

    Documentation Version
    -length()[source]
    +length()[source]

    Returns the number of integers moved by a permutation.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1873,7 +1873,7 @@ 
    Documentation Version
    -list(size=None)[source]
    +list(size=None)[source]

    Return the permutation as an explicit list, possibly trimming unmoved elements if size is less than the maximum element in the permutation; if this is desired, setting @@ -1899,7 +1899,7 @@

    Documentation Version
    -max() int[source]
    +max() int[source]

    The maximum element moved by the permutation.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1916,7 +1916,7 @@ 
    Documentation Version
    -min() int[source]
    +min() int[source]

    The minimum element moved by the permutation.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -1933,13 +1933,13 @@ 
    Documentation Version
    -mul_inv(other)[source]
    +mul_inv(other)[source]

    other*~self, self and other have _array_form

    -next_lex()[source]
    +next_lex()[source]

    Returns the next permutation in lexicographical order. If self is the last permutation in lexicographical order it returns None. @@ -1961,7 +1961,7 @@

    Documentation Version
    -next_nonlex()[source]
    +next_nonlex()[source]

    Returns the next permutation in nonlex order [3]. If self is the last permutation in this order it returns None.

    Examples

    @@ -1984,7 +1984,7 @@
    Documentation Version
    -next_trotterjohnson()[source]
    +next_trotterjohnson()[source]

    Returns the next permutation in Trotter-Johnson order. If self is the last permutation it returns None. See [4] section 2.4. If it is desired to generate all such @@ -2011,7 +2011,7 @@

    Documentation Version
    -order()[source]
    +order()[source]

    Computes the order of a permutation.

    When the permutation is raised to the power of its order it equals the identity permutation.

    @@ -2034,7 +2034,7 @@
    Documentation Version
    -parity()[source]
    +parity()[source]

    Computes the parity of a permutation.

    Explanation

    The parity of a permutation reflects the parity of the @@ -2058,7 +2058,7 @@

    Documentation Version
    -classmethod random(n)[source]
    +classmethod random(n)[source]

    Generates a random permutation of length n.

    Uses the underlying Python pseudo-random number generator.

    Examples

    @@ -2071,7 +2071,7 @@
    Documentation Version
    -rank()[source]
    +rank()[source]

    Returns the lexicographic rank of the permutation.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -2091,7 +2091,7 @@ 
    Documentation Version
    -rank_nonlex(inv_perm=None)[source]
    +rank_nonlex(inv_perm=None)[source]

    This is a linear time ranking algorithm that does not enforce lexicographic order [3].

    Examples

    @@ -2109,7 +2109,7 @@
    Documentation Version
    -rank_trotterjohnson()[source]
    +rank_trotterjohnson()[source]

    Returns the Trotter Johnson rank, which we get from the minimal change algorithm. See [4] section 2.4.

    Examples

    @@ -2130,7 +2130,7 @@
    Documentation Version
    -resize(n)[source]
    +resize(n)[source]

    Resize the permutation to the new size n.

    Parameters:
    @@ -2177,7 +2177,7 @@
    Documentation Version
    -static rmul(*args)[source]
    +static rmul(*args)[source]

    Return product of Permutations [a, b, c, …] as the Permutation whose ith value is a(b(c(i))).

    a, b, c, … can be Permutation objects or tuples.

    @@ -2213,14 +2213,14 @@
    Documentation Version
    -classmethod rmul_with_af(*args)[source]
    +classmethod rmul_with_af(*args)[source]

    same as rmul, but the elements of args are Permutation objects which have _array_form

    -runs()[source]
    +runs()[source]

    Returns the runs of a permutation.

    An ascending sequence in a permutation is called a run [5].

    Examples

    @@ -2237,7 +2237,7 @@
    Documentation Version
    -signature()[source]
    +signature()[source]

    Gives the signature of the permutation needed to place the elements of the permutation in canonical order.

    The signature is calculated as (-1)^<number of inversions>

    @@ -2279,7 +2279,7 @@
    Documentation Version
    -support()[source]
    +support()[source]

    Return the elements in permutation, P, for which P[i] != i.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -2294,7 +2294,7 @@ 
    Documentation Version
    -transpositions()[source]
    +transpositions()[source]

    Return the permutation decomposed into a list of transpositions.

    Explanation

    It is always possible to express a permutation as the product of @@ -2322,7 +2322,7 @@

    Documentation Version
    -classmethod unrank_lex(size, rank)[source]
    +classmethod unrank_lex(size, rank)[source]

    Lexicographic permutation unranking.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -2343,7 +2343,7 @@ 
    Documentation Version
    -classmethod unrank_nonlex(n, r)[source]
    +classmethod unrank_nonlex(n, r)[source]

    This is a linear time unranking algorithm that does not respect lexicographic order [3].

    Examples

    @@ -2364,7 +2364,7 @@
    Documentation Version
    -classmethod unrank_trotterjohnson(size, rank)[source]
    +classmethod unrank_trotterjohnson(size, rank)[source]

    Trotter Johnson permutation unranking. See [4] section 2.4.

    Examples

    >>> from sympy.combinatorics import Permutation
    @@ -2384,7 +2384,7 @@ 
    Documentation Version
    -class sympy.combinatorics.permutations.Cycle(*args)[source]
    +class sympy.combinatorics.permutations.Cycle(*args)[source]

    Wrapper around dict which provides the functionality of a disjoint cycle.

    Explanation

    A cycle shows the rule to use to move subsets of elements to obtain @@ -2455,7 +2455,7 @@

    Documentation Version
    -list(size=None)[source]
    +list(size=None)[source]

    Return the cycles as an explicit list starting from 0 up to the greater of the largest value in the cycles and size.

    Truncation of trailing unmoved items will occur when size @@ -2482,7 +2482,7 @@

    Documentation Version
    -sympy.combinatorics.permutations._af_parity(pi)[source]
    +sympy.combinatorics.permutations._af_parity(pi)[source]

    Computes the parity of a permutation in array form.

    Explanation

    The parity of a permutation reflects the parity of the @@ -2506,7 +2506,7 @@

    Documentation Version

    Generators

    -generators.symmetric()[source]
    +generators.symmetric()[source]

    Generates the symmetric group of order n, Sn.

    Examples

    >>> from sympy.combinatorics.generators import symmetric
    @@ -2518,7 +2518,7 @@ 
    Documentation Version
    -generators.cyclic()[source]
    +generators.cyclic()[source]

    Generates the cyclic group of order n, Cn.

    Examples

    >>> from sympy.combinatorics.generators import cyclic
    @@ -2535,7 +2535,7 @@ 
    Documentation Version
    -generators.alternating()[source]
    +generators.alternating()[source]

    Generates the alternating group of order n, An.

    Examples

    >>> from sympy.combinatorics.generators import alternating
    @@ -2547,7 +2547,7 @@ 
    Documentation Version
    -generators.dihedral()[source]
    +generators.dihedral()[source]

    Generates the dihedral group of order 2n, Dn.

    The result is given as a subgroup of Sn, except for the special cases n=1 (the group S2) and n=2 (the Klein 4-group) where that’s not possible diff --git a/dev/modules/combinatorics/polyhedron.html b/dev/modules/combinatorics/polyhedron.html index b7f5a2eb6e6..06220447491 100644 --- a/dev/modules/combinatorics/polyhedron.html +++ b/dev/modules/combinatorics/polyhedron.html @@ -805,7 +805,7 @@

    Documentation Version

    Polyhedron

    -class sympy.combinatorics.polyhedron.Polyhedron(corners, faces=(), pgroup=())[source]
    +class sympy.combinatorics.polyhedron.Polyhedron(corners, faces=(), pgroup=())[source]

    Represents the polyhedral symmetry group (PSG).

    Explanation

    The PSG is one of the symmetry groups of the Platonic solids. @@ -905,7 +905,7 @@

    Documentation Version
    -reset()[source]
    +reset()[source]

    Return corners to their original positions.

    Examples

    >>> from sympy.combinatorics.polyhedron import tetrahedron as T
    @@ -924,7 +924,7 @@ 
    Documentation Version
    -rotate(perm)[source]
    +rotate(perm)[source]

    Apply a permutation to the polyhedron in place. The permutation may be given as a Permutation instance or an integer indicating which permutation from pgroup of the Polyhedron should be diff --git a/dev/modules/combinatorics/prufer.html b/dev/modules/combinatorics/prufer.html index 0797d28c942..b70128f7c6a 100644 --- a/dev/modules/combinatorics/prufer.html +++ b/dev/modules/combinatorics/prufer.html @@ -805,7 +805,7 @@

    Documentation Version

    Prufer Sequences

    -class sympy.combinatorics.prufer.Prufer(*args, **kw_args)[source]
    +class sympy.combinatorics.prufer.Prufer(*args, **kw_args)[source]

    The Prufer correspondence is an algorithm that describes the bijection between labeled trees and the Prufer code. A Prufer code of a labeled tree is unique up to isomorphism and has @@ -821,7 +821,7 @@

    Documentation Version
    -static edges(*runs)[source]
    +static edges(*runs)[source]

    Return a list of edges and the number of nodes from the given runs that connect nodes in an integer-labelled tree.

    All node numbers will be shifted so that the minimum node is 0. It is @@ -844,7 +844,7 @@

    Documentation Version
    -next(delta=1)[source]
    +next(delta=1)[source]

    Generates the Prufer sequence that is delta beyond the current one.

    Examples

    >>> from sympy.combinatorics.prufer import Prufer
    @@ -878,7 +878,7 @@ 
    Documentation Version
    -prev(delta=1)[source]
    +prev(delta=1)[source]

    Generates the Prufer sequence that is -delta before the current one.

    Examples

    >>> from sympy.combinatorics.prufer import Prufer
    @@ -900,7 +900,7 @@ 
    Documentation Version
    -prufer_rank()[source]
    +prufer_rank()[source]

    Computes the rank of a Prufer sequence.

    Examples

    >>> from sympy.combinatorics.prufer import Prufer
    @@ -975,7 +975,7 @@ 
    Documentation Version
    -static to_prufer(tree, n)[source]
    +static to_prufer(tree, n)[source]

    Return the Prufer sequence for a tree given as a list of edges where n is the number of nodes in the tree.

    Examples

    @@ -998,7 +998,7 @@
    Documentation Version
    -static to_tree(prufer)[source]
    +static to_tree(prufer)[source]

    Return the tree (as a list of edges) of the given Prufer sequence.

    Examples

    >>> from sympy.combinatorics.prufer import Prufer
    @@ -1045,7 +1045,7 @@ 
    Documentation Version
    -classmethod unrank(rank, n)[source]
    +classmethod unrank(rank, n)[source]

    Finds the unranked Prufer sequence.

    Examples

    >>> from sympy.combinatorics.prufer import Prufer
    diff --git a/dev/modules/combinatorics/subsets.html b/dev/modules/combinatorics/subsets.html
    index f9e4fb39291..b325e5ebcf0 100644
    --- a/dev/modules/combinatorics/subsets.html
    +++ b/dev/modules/combinatorics/subsets.html
    @@ -805,7 +805,7 @@ 
    Documentation Version

    Subsets

    -class sympy.combinatorics.subsets.Subset(subset, superset)[source]
    +class sympy.combinatorics.subsets.Subset(subset, superset)[source]

    Represents a basic subset object.

    Explanation

    We generate subsets using essentially two techniques, @@ -824,7 +824,7 @@

    Documentation Version
    -classmethod bitlist_from_subset(subset, superset)[source]
    +classmethod bitlist_from_subset(subset, superset)[source]

    Gets the bitlist corresponding to a subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -857,7 +857,7 @@ 
    Documentation Version
    -iterate_binary(k)[source]
    +iterate_binary(k)[source]

    This is a helper function. It iterates over the binary subsets by k steps. This variable can be both positive or negative.

    @@ -879,7 +879,7 @@
    Documentation Version
    -iterate_graycode(k)[source]
    +iterate_graycode(k)[source]

    Helper function used for prev_gray and next_gray. It performs k step overs to get the respective Gray codes.

    Examples

    @@ -899,7 +899,7 @@
    Documentation Version
    -next_binary()[source]
    +next_binary()[source]

    Generates the next binary ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -919,7 +919,7 @@ 
    Documentation Version
    -next_gray()[source]
    +next_gray()[source]

    Generates the next Gray code ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -936,7 +936,7 @@ 
    Documentation Version
    -next_lexicographic()[source]
    +next_lexicographic()[source]

    Generates the next lexicographically ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -956,7 +956,7 @@ 
    Documentation Version
    -prev_binary()[source]
    +prev_binary()[source]

    Generates the previous binary ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -976,7 +976,7 @@ 
    Documentation Version
    -prev_gray()[source]
    +prev_gray()[source]

    Generates the previous Gray code ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -993,7 +993,7 @@ 
    Documentation Version
    -prev_lexicographic()[source]
    +prev_lexicographic()[source]

    Generates the previous lexicographically ordered subset.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -1103,7 +1103,7 @@ 
    Documentation Version
    -classmethod subset_from_bitlist(super_set, bitlist)[source]
    +classmethod subset_from_bitlist(super_set, bitlist)[source]

    Gets the subset defined by the bitlist.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -1119,7 +1119,7 @@ 
    Documentation Version
    -classmethod subset_indices(subset, superset)[source]
    +classmethod subset_indices(subset, superset)[source]

    Return indices of subset in superset in a list; the list is empty if all elements of subset are not in superset.

    Examples

    @@ -1171,7 +1171,7 @@
    Documentation Version
    -classmethod unrank_binary(rank, superset)[source]
    +classmethod unrank_binary(rank, superset)[source]

    Gets the binary ordered subset of the specified rank.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -1187,7 +1187,7 @@ 
    Documentation Version
    -classmethod unrank_gray(rank, superset)[source]
    +classmethod unrank_gray(rank, superset)[source]

    Gets the Gray code ordered subset of the specified rank.

    Examples

    >>> from sympy.combinatorics import Subset
    @@ -1207,7 +1207,7 @@ 
    Documentation Version
    -subsets.ksubsets(k)[source]
    +subsets.ksubsets(k)[source]

    Finds the subsets of size k in lexicographic order.

    This uses the itertools generator.

    Examples

    diff --git a/dev/modules/combinatorics/tensor_can.html b/dev/modules/combinatorics/tensor_can.html index e29f9bf6d43..3596daa37dd 100644 --- a/dev/modules/combinatorics/tensor_can.html +++ b/dev/modules/combinatorics/tensor_can.html @@ -805,7 +805,7 @@
    Documentation Version

    Tensor Canonicalization

    -sympy.combinatorics.tensor_can.canonicalize(g, dummies, msym, *v)[source]
    +sympy.combinatorics.tensor_can.canonicalize(g, dummies, msym, *v)[source]

    canonicalize tensor formed by tensors

    Parameters:
    @@ -924,7 +924,7 @@
    Documentation Version
    g,
    -)[source] +)[source]

    Butler-Portugal algorithm for tensor canonicalization with dummy indices.

    Parameters:
    @@ -1116,7 +1116,7 @@
    Documentation Version
    -sympy.combinatorics.tensor_can.get_symmetric_group_sgs(n, antisym=False)[source]
    +sympy.combinatorics.tensor_can.get_symmetric_group_sgs(n, antisym=False)[source]

    Return base, gens of the minimal BSGS for (anti)symmetric tensor

    Parameters:
    @@ -1148,7 +1148,7 @@
    Documentation Version
    signed=True,
    -)[source] +)[source]

    Direct product of two BSGS.

    Parameters:
    diff --git a/dev/modules/combinatorics/testutil.html b/dev/modules/combinatorics/testutil.html index 182f31cb550..6adb2818207 100644 --- a/dev/modules/combinatorics/testutil.html +++ b/dev/modules/combinatorics/testutil.html @@ -805,7 +805,7 @@
    Documentation Version

    Test Utilities

    -sympy.combinatorics.testutil._cmp_perm_lists(first, second)[source]
    +sympy.combinatorics.testutil._cmp_perm_lists(first, second)[source]

    Compare two lists of permutations as sets.

    Explanation

    This is used for testing purposes. Since the array form of a @@ -827,12 +827,12 @@

    Documentation Version
    -sympy.combinatorics.testutil._naive_list_centralizer(self, other, af=False)[source]
    +sympy.combinatorics.testutil._naive_list_centralizer(self, other, af=False)[source]
    -sympy.combinatorics.testutil._verify_bsgs(group, base, gens)[source]
    +sympy.combinatorics.testutil._verify_bsgs(group, base, gens)[source]

    Verify the correctness of a base and strong generating set.

    Explanation

    This is a naive implementation using the definition of a base and a strong @@ -856,7 +856,7 @@

    Documentation Version
    -sympy.combinatorics.testutil._verify_centralizer(group, arg, centr=None)[source]
    +sympy.combinatorics.testutil._verify_centralizer(group, arg, centr=None)[source]

    Verify the centralizer of a group/set/element inside another group.

    This is used for testing .centralizer() from sympy.combinatorics.perm_groups

    @@ -881,7 +881,7 @@
    Documentation Version
    -sympy.combinatorics.testutil._verify_normal_closure(group, arg, closure=None)[source]
    +sympy.combinatorics.testutil._verify_normal_closure(group, arg, closure=None)[source]
    diff --git a/dev/modules/combinatorics/util.html b/dev/modules/combinatorics/util.html index bab27107bca..105388ef9a2 100644 --- a/dev/modules/combinatorics/util.html +++ b/dev/modules/combinatorics/util.html @@ -805,7 +805,7 @@
    Documentation Version

    Utilities

    -sympy.combinatorics.util._base_ordering(base, degree)[source]
    +sympy.combinatorics.util._base_ordering(base, degree)[source]

    Order \(\{0, 1, \dots, n-1\}\) so that base points come first and in order.

    Parameters:
    @@ -846,7 +846,7 @@
    Documentation Version
    -sympy.combinatorics.util._check_cycles_alt_sym(perm)[source]
    +sympy.combinatorics.util._check_cycles_alt_sym(perm)[source]

    Checks for cycles of prime length p with n/2 < p < n-2.

    Explanation

    Here \(n\) is the degree of the permutation. This is a helper function for @@ -870,7 +870,7 @@

    Documentation Version
    -sympy.combinatorics.util._distribute_gens_by_base(base, gens)[source]
    +sympy.combinatorics.util._distribute_gens_by_base(base, gens)[source]

    Distribute the group elements gens by membership in basic stabilizers.

    Parameters:
    @@ -924,7 +924,7 @@
    Documentation Version
    strong_gens_distr=None,
    -)[source] +)[source]

    Calculate BSGS-related structures from those present.

    Parameters:
    @@ -974,7 +974,7 @@
    Documentation Version
    slp=False,
    -)[source] +)[source]

    Compute basic orbits and transversals from a base and strong generating set.

    Parameters:
    @@ -1025,7 +1025,7 @@
    Documentation Version
    strong_gens_distr=None,
    -)[source] +)[source]

    Remove redundant generators from a strong generating set.

    Parameters:
    @@ -1066,7 +1066,7 @@
    Documentation Version
    -sympy.combinatorics.util._strip(g, base, orbits, transversals)[source]
    +sympy.combinatorics.util._strip(g, base, orbits, transversals)[source]

    Attempt to decompose a permutation using a (possibly partial) BSGS structure.

    @@ -1126,7 +1126,7 @@
    Documentation Version
    -sympy.combinatorics.util._strong_gens_from_distr(strong_gens_distr)[source]
    +sympy.combinatorics.util._strong_gens_from_distr(strong_gens_distr)[source]

    Retrieve strong generating set from generators of basic stabilizers.

    This is just the union of the generators of the first and second basic stabilizers.

    diff --git a/dev/modules/concrete.html b/dev/modules/concrete.html index deccb1fe589..f6dcc246fb4 100644 --- a/dev/modules/concrete.html +++ b/dev/modules/concrete.html @@ -883,7 +883,7 @@

    Hypergeometric termsConcrete Class Reference

    -class sympy.concrete.summations.Sum(function, *symbols, **assumptions)[source]
    +class sympy.concrete.summations.Sum(function, *symbols, **assumptions)[source]

    Represents unevaluated summation.

    Explanation

    Sum represents a finite or infinite series, with the first argument @@ -1018,7 +1018,7 @@

    Concrete Class Referenceeval_integral=True,

    -)[source] +)[source]

    Return an Euler-Maclaurin approximation of self, where m is the number of leading terms to sum directly and n is the number of terms in the tail.

    @@ -1061,7 +1061,7 @@

    Concrete Class Reference
    -eval_zeta_function(f, limits)[source]
    +eval_zeta_function(f, limits)[source]

    Check whether the function matches with the zeta function.

    If it matches, then return a \(Piecewise\) expression because zeta function does not converge unless \(s > 1\) and \(q > 0\)

    @@ -1069,7 +1069,7 @@

    Concrete Class Reference
    -is_absolutely_convergent()[source]
    +is_absolutely_convergent()[source]

    Checks for the absolute convergence of an infinite series.

    Same as checking convergence of absolute value of sequence_term of an infinite series.

    @@ -1097,7 +1097,7 @@

    Concrete Class Reference
    -is_convergent()[source]
    +is_convergent()[source]

    Checks for the convergence of a Sum.

    Explanation

    We divide the study of convergence of infinite sums and products in @@ -1162,7 +1162,7 @@

    Concrete Class Reference
    -reverse_order(*indices)[source]
    +reverse_order(*indices)[source]

    Reverse the order of a limit in a Sum.

    Explanation

    reverse_order(self, *indices) reverses some limits in the expression @@ -1225,7 +1225,7 @@

    Concrete Class Reference
    -class sympy.concrete.products.Product(function, *symbols, **assumptions)[source]
    +class sympy.concrete.products.Product(function, *symbols, **assumptions)[source]

    Represents unevaluated products.

    Explanation

    Product represents a finite or infinite product, with the first @@ -1393,7 +1393,7 @@

    Concrete Class Reference
    -is_convergent()[source]
    +is_convergent()[source]

    See docs of Sum.is_convergent() for explanation of convergence in SymPy.

    Explanation

    @@ -1438,7 +1438,7 @@

    Concrete Class Reference
    -reverse_order(*indices)[source]
    +reverse_order(*indices)[source]

    Reverse the order of a limit in a Product.

    Explanation

    reverse_order(expr, *indices) reverses some limits in the expression @@ -1513,7 +1513,7 @@

    Concrete Class Reference**assumptions,

    -)[source] +)[source]

    Superclass for Product and Sum.

    See also

    @@ -1529,7 +1529,7 @@

    Concrete Class Referencenewvar=None,

    -)[source] +)[source]

    Change index of a Sum or Product.

    Perform a linear transformation \(x \mapsto a x + b\) on the index variable \(x\). For \(a\) the only values allowed are \(\pm 1\). A new variable to be used @@ -1657,7 +1657,7 @@

    Concrete Class Reference
    -index(x)[source]
    +index(x)[source]

    Return the index of a dummy variable in the list of limits.

    Explanation

    index(expr, x) returns the index of the dummy variable x in the @@ -1684,7 +1684,7 @@

    Concrete Class Reference
    -reorder(*arg)[source]
    +reorder(*arg)[source]

    Reorder limits in a expression containing a Sum or a Product.

    Explanation

    expr.reorder(*arg) reorders the limits in the expression expr @@ -1729,7 +1729,7 @@

    Concrete Class Reference
    -reorder_limit(x, y)[source]
    +reorder_limit(x, y)[source]

    Interchange two limit tuples of a Sum or Product expression.

    Explanation

    expr.reorder_limit(x, y) interchanges two limit tuples. The @@ -1764,7 +1764,7 @@

    Concrete Class Reference

    -sympy.concrete.summations.summation(f, *symbols, **kwargs)[source]
    +sympy.concrete.summations.summation(f, *symbols, **kwargs)[source]

    Compute the summation of f with respect to symbols.

    Explanation

    The notation for symbols is similar to the notation used in Integral. @@ -1811,7 +1811,7 @@

    Concrete Functions Reference
    -sympy.concrete.products.product(*args, **kwargs)[source]
    +sympy.concrete.products.product(*args, **kwargs)[source]

    Compute the product.

    Explanation

    The notation for symbols is similar to the notation used in Sum or @@ -1845,7 +1845,7 @@

    Concrete Functions Reference
    -sympy.concrete.gosper.gosper_normal(f, g, n, polys=True)[source]
    +sympy.concrete.gosper.gosper_normal(f, g, n, polys=True)[source]

    Compute the Gosper’s normal form of f and g.

    Explanation

    Given relatively prime univariate polynomials f and g, @@ -1880,7 +1880,7 @@

    Concrete Functions Reference
    -sympy.concrete.gosper.gosper_term(f, n)[source]
    +sympy.concrete.gosper.gosper_term(f, n)[source]

    Compute Gosper’s hypergeometric term for f.

    Explanation

    Suppose f is a hypergeometric term such that:

    @@ -1904,7 +1904,7 @@

    Concrete Functions Reference
    -sympy.concrete.gosper.gosper_sum(f, k)[source]
    +sympy.concrete.gosper.gosper_sum(f, k)[source]

    Gosper’s hypergeometric summation algorithm.

    Explanation

    Given a hypergeometric term f such that:

    diff --git a/dev/modules/core.html b/dev/modules/core.html index 80b3ea9bc5b..da7c777f8d5 100644 --- a/dev/modules/core.html +++ b/dev/modules/core.html @@ -815,7 +815,7 @@
    Documentation Version
    strict: bool = False,

    -) Integer[source] +) Integer[source]
    sympy.core.sympify.sympify( @@ -1341,7 +1341,7 @@

    References

    cache

    -sympy.core.cache.__cacheit(maxsize)[source]
    +sympy.core.cache.__cacheit(maxsize)[source]

    caching decorator.

    important: the result of cached function must be immutable

    Examples

    @@ -1375,7 +1375,7 @@

    References
    -class sympy.core.basic.Basic(*args)[source]
    +class sympy.core.basic.Basic(*args)[source]

    Base class for all SymPy objects.

    Notes And Conventions

      @@ -1466,7 +1466,7 @@

      Referencesclear=True,

    -)[source] +)[source]

    A stub to allow Basic args (like Tuple) to be skipped when computing the content and primitive components of an expression.

    @@ -1477,7 +1477,7 @@

    References
    -as_dummy() Self[source]
    +as_dummy() Self[source]

    Return the expression with any objects having structurally bound symbols replaced with unique, canonical symbols within the object in which they appear and having only the default @@ -1533,7 +1533,7 @@

    References
    -atoms() set[Basic][source]
    +atoms() set[Basic][source]
    atoms( @@ -1629,13 +1629,13 @@

    References
    -classmethod class_key() tuple[int, int, str][source]
    +classmethod class_key() tuple[int, int, str][source]

    Nice order of classes.

    -compare(other)[source]
    +compare(other)[source]

    Return -1, 0, 1 if the object is less than, equal, or greater than other in a canonical sense. Non-Basic are always greater than Basic. @@ -1663,19 +1663,19 @@

    References
    -count(query)[source]
    +count(query)[source]

    Count the number of matching subexpressions.

    -count_ops(visual=False)[source]
    +count_ops(visual=False)[source]

    Wrapper for count_ops that returns the operation count.

    -doit(**hints)[source]
    +doit(**hints)[source]

    Evaluate objects that are not evaluated by default like limits, integrals, sums and products. All objects of this kind will be evaluated recursively, unless some species were excluded via ‘hints’ @@ -1700,7 +1700,7 @@

    References
    -dummy_eq(other, symbol=None)[source]
    +dummy_eq(other, symbol=None)[source]

    Compare two expressions and handle dummy symbols.

    Examples

    >>> from sympy import Dummy
    @@ -1726,7 +1726,7 @@ 

    References
    -find(query, group=False)[source]
    +find(query, group=False)[source]

    Find all subexpressions matching a query.

    @@ -1777,7 +1777,7 @@

    References
    -classmethod fromiter(args, **assumptions)[source]
    +classmethod fromiter(args, **assumptions)[source]

    Create a new object from an iterable.

    This is a convenience function that allows one to create objects from any iterable, without having to convert to a list or tuple first.

    @@ -1814,7 +1814,7 @@

    References
    -has(*patterns)[source]
    +has(*patterns)[source]

    Test whether any subexpression matches any of the patterns.

    Examples

    >>> from sympy import sin
    @@ -1859,7 +1859,7 @@ 

    References
    -has_free(*patterns)[source]
    +has_free(*patterns)[source]

    Return True if self has object(s) x as a free expression else False.

    Examples

    @@ -1887,7 +1887,7 @@

    References
    -has_xfree(s: set[Basic])[source]
    +has_xfree(s: set[Basic])[source]

    Return True if self has any of the patterns in s as a free argument, else False. This is like \(Basic.has_free\) but this will only report exact argument matches.

    @@ -1938,7 +1938,7 @@

    References
    -is_same(b, approx=None)[source]
    +is_same(b, approx=None)[source]

    Return True if a and b are structurally the same, else False. If \(approx\) is supplied, it will be used to test whether two numbers are the same or not. By default, only numbers of the @@ -1992,7 +1992,7 @@

    References
    -match(pattern, old=False)[source]
    +match(pattern, old=False)[source]

    Pattern matching.

    Wild symbols match all.

    Return None when expression (self) does not match with pattern. @@ -2056,7 +2056,7 @@

    References
    -matches(expr, repl_dict=None, old=False)[source]
    +matches(expr, repl_dict=None, old=False)[source]

    Helper method for match() that looks for a match between Wild symbols in self and expressions in expr.

    Examples

    @@ -2073,7 +2073,7 @@

    References
    -rcall(*args)[source]
    +rcall(*args)[source]

    Apply on the argument recursively through the expression tree.

    This method is used to simulate a common abuse of notation for operators. For instance, in SymPy the following will not work:

    @@ -2089,7 +2089,7 @@

    References
    -refine(assumption=True)[source]
    +refine(assumption=True)[source]

    See the refine function in sympy.assumptions

    @@ -2105,7 +2105,7 @@

    Referencesexact=None,

    -) Basic[source] +) Basic[source]

    Replace matching subexpressions of self with value.

    If map = True then also return the mapping {old: new} where old was a sub-expression found with query and new is the replacement @@ -2259,7 +2259,7 @@

    References
    -rewrite(*args, deep=True, **hints)[source]
    +rewrite(*args, deep=True, **hints)[source]

    Rewrite self using a defined rule.

    Rewriting transforms an expression to another, which is mathematically equivalent but structurally different. For example you can rewrite @@ -2339,13 +2339,13 @@

    References**kwargs,

    -) Basic[source] +) Basic[source]

    See the simplify function in sympy.simplify

    -sort_key(order=None)[source]
    +sort_key(order=None)[source]

    Return a sort key.

    Examples

    >>> from sympy import S, I
    @@ -2373,7 +2373,7 @@ 

    References**kwargs: Any,

    -) Basic[source] +) Basic[source]
    subs( @@ -2520,7 +2520,7 @@

    References
    -xreplace(rule)[source]
    +xreplace(rule)[source]

    Replace occurrences of objects within the expression.

    Parameters:
    @@ -2586,7 +2586,7 @@

    References
    -class sympy.core.basic.Atom(*args)[source]
    +class sympy.core.basic.Atom(*args)[source]

    A parent class for atomic things. An atom is an expression with no subexpressions.

    Examples

    Symbol, Number, Rational, Integer, … @@ -2598,7 +2598,7 @@

    References

    singleton

    -class sympy.core.singleton.SingletonRegistry[source]
    +class sympy.core.singleton.SingletonRegistry[source]

    The registry for the singleton classes (accessible as S).

    Explanation

    This class serves as two separate things.

    @@ -2666,7 +2666,7 @@

    References
    -class sympy.core.singleton.Singleton(*args, **kwargs)[source]
    +class sympy.core.singleton.Singleton(*args, **kwargs)[source]

    Metaclass for singleton classes.

    Explanation

    A singleton class has only one instance which is returned every time the @@ -2696,7 +2696,7 @@

    References

    expr

    -class sympy.core.expr.Expr(*args)[source]
    +class sympy.core.expr.Expr(*args)[source]

    Base class for algebraic expressions.

    Explanation

    Everything that requires arithmetic operations to be defined @@ -2713,13 +2713,13 @@

    References
    -apart(x=None, **args)[source]
    +apart(x=None, **args)[source]

    See the apart function in sympy.polys

    -args_cnc(cset=False, warn=True, split_1=True)[source]
    +args_cnc(cset=False, warn=True, split_1=True)[source]

    Return [commutative factors, non-commutative factors] of self.

    Explanation

    self is treated as a Mul and the ordering of the factors is maintained. @@ -2761,7 +2761,7 @@

    Referencesrational=False,

    -) tuple['Number', Expr][source] +) tuple['Number', Expr][source]

    Efficiently extract the coefficient of a summation.

    @@ -2773,7 +2773,7 @@

    Referencesrational: bool = False,

    -) tuple['Number', Expr][source] +) tuple['Number', Expr][source]

    Efficiently extract the coefficient of a product.

    @@ -2785,7 +2785,7 @@

    References*deps,

    -) tuple[Expr, tuple[Expr, ...]][source] +) tuple[Expr, tuple[Expr, ...]][source]

    Return the tuple (c, args) where self is written as an Add, a.

    c should be a Rational added to any terms of the Add that are independent of deps.

    @@ -2823,7 +2823,7 @@

    Referencesx,

    -) tuple[Expr, Expr][source] +) tuple[Expr, Expr][source]

    c*x**e -> c,e where x can be any symbolic expression.

    @@ -2836,7 +2836,7 @@

    References**kwargs,

    -) tuple[Expr, tuple[Expr, ...]][source] +) tuple[Expr, tuple[Expr, ...]][source]

    Return the tuple (c, args) where self is written as a Mul, m.

    c should be a Rational multiplied by any factors of the Mul that are independent of deps.

    @@ -2874,7 +2874,7 @@

    Referencesexpr: Expr,

    -) Expr | None[source] +) Expr | None[source]

    Extracts symbolic coefficient at the given expression. In other words, this functions separates ‘self’ into the product of ‘expr’ and ‘expr’-free coefficient. If such separation @@ -2946,7 +2946,7 @@

    References
    -as_coefficients_dict(*syms)[source]
    +as_coefficients_dict(*syms)[source]

    Return a dictionary mapping terms to their Rational coefficient. Since the dictionary is a defaultdict, inquiries about terms which were not present will return a coefficient of 0.

    @@ -2979,7 +2979,7 @@

    Referencesclear=True,

    -)[source] +)[source]

    This method should recursively remove a Rational from all arguments and return that (content) and the new self (primitive). The content should always be positive and Mul(*foo.as_content_primitive()) == foo. @@ -3037,7 +3037,7 @@

    References
    -as_expr(*gens)[source]
    +as_expr(*gens)[source]

    Convert a polynomial to a SymPy expression.

    Examples

    >>> from sympy import sin
    @@ -3064,7 +3064,7 @@ 

    References**hint,

    -) tuple[Expr, Expr][source] +) tuple[Expr, Expr][source]

    A mostly naive separation of a Mul or Add into arguments that are not are dependent on deps. To obtain as complete a separation of variables as possible, use a separation method first, e.g.:

    @@ -3195,7 +3195,7 @@

    References
    -as_leading_term(*symbols, logx=None, cdir=0)[source]
    +as_leading_term(*symbols, logx=None, cdir=0)[source]

    Returns the leading (nonzero) term of the series expansion of self.

    The _eval_as_leading_term routines are used to do this, and they must always return a non-zero value.

    @@ -3211,7 +3211,7 @@

    References
    -as_numer_denom() tuple[Expr, Expr][source]
    +as_numer_denom() tuple[Expr, Expr][source]

    Return the numerator and the denominator of an expression.

    expression -> a/b -> a, b

    This is just a stub that should be defined by @@ -3227,13 +3227,13 @@

    References
    -as_ordered_factors(order=None)[source]
    +as_ordered_factors(order=None)[source]

    Return list of ordered factors (if Mul) else [self].

    -as_ordered_terms(order=None, data=False)[source]
    +as_ordered_terms(order=None, data=False)[source]

    Transform an expression to an ordered list of terms.

    Examples

    >>> from sympy import sin, cos
    @@ -3248,7 +3248,7 @@ 

    References
    -as_poly(*gens, **args)[source]
    +as_poly(*gens, **args)[source]

    Converts self to a polynomial or returns None.

    Explanation

    >>> from sympy import sin
    @@ -3271,7 +3271,7 @@ 

    References
    -as_powers_dict()[source]
    +as_powers_dict()[source]

    Return self as a dictionary of factors with each factor being treated as a power. The keys are the bases of the factors and the values, the corresponding exponents. The resulting dictionary should @@ -3298,7 +3298,7 @@

    References**hints,

    -) tuple[Expr, Expr][source] +) tuple[Expr, Expr][source]

    Performs complex expansion on ‘self’ and returns a tuple containing collected both real and imaginary parts. This method cannot be confused with re() and im() functions, @@ -3327,13 +3327,13 @@

    References
    -as_terms()[source]
    +as_terms()[source]

    Transform an expression to a list of terms.

    -aseries(x=None, n=6, bound=0, hir=False)[source]
    +aseries(x=None, n=6, bound=0, hir=False)[source]

    Asymptotic Series expansion of self. This is equivalent to self.series(x, oo, n).

    @@ -3439,7 +3439,7 @@

    References
    -cancel(*gens, **args)[source]
    +cancel(*gens, **args)[source]

    See the cancel function in sympy.polys

    @@ -3454,7 +3454,7 @@

    References_first=True,

    -)[source] +)[source]

    Returns the coefficient from the term(s) containing x**n. If n is zero then all terms independent of x will be returned.

    Explanation

    @@ -3582,19 +3582,19 @@

    Referencesdistribute_order_term=True,

    -)[source] +)[source]

    See the collect function in sympy.simplify

    -combsimp()[source]
    +combsimp()[source]

    See the combsimp function in sympy.simplify

    -compute_leading_term(x, logx=None)[source]
    +compute_leading_term(x, logx=None)[source]

    Deprecated function to compute the leading term of a series.

    as_leading_term is only allowed for results of .series() This is a wrapper to compute a series first.

    @@ -3602,13 +3602,13 @@

    References
    -conjugate()[source]
    +conjugate()[source]

    Returns the complex conjugate of ‘self’.

    -could_extract_minus_sign() bool[source]
    +could_extract_minus_sign() bool[source]

    Return True if self has -1 as a leading factor or has more literal negative signs than positive signs in a sum, otherwise False.

    @@ -3638,7 +3638,7 @@

    References
    -equals(other, failing_expression=False)[source]
    +equals(other, failing_expression=False)[source]

    Return True if self == other, False if it does not, or None. If failing_expression is True then the expression which did not simplify to a 0 will be returned instead of None.

    @@ -3668,7 +3668,7 @@

    References**hints,

    -)[source] +)[source]

    Expand an expression using hints.

    See the docstring of the expand() function in sympy.core.function for more information.

    @@ -3699,7 +3699,7 @@

    References
    -extract_additively(c)[source]
    +extract_additively(c)[source]

    Return self - c if it’s possible to subtract c from self and make all matching coefficients move towards zero, else return None.

    Examples

    @@ -3722,7 +3722,7 @@

    References
    -extract_branch_factor(allow_half=False)[source]
    +extract_branch_factor(allow_half=False)[source]

    Try to write self as exp_polar(2*pi*I*n)*z in a nice way. Return (z, n).

    >>> from sympy import exp_polar, I, pi
    @@ -3762,7 +3762,7 @@ 

    Referencesc: Expr,

    -) Expr | None[source] +) Expr | None[source]

    Return None if it’s not possible to make self in the form c * something in a nice way, i.e. preserving the properties of arguments of self.

    @@ -3795,13 +3795,13 @@

    References
    -factor(*gens, **args)[source]
    +factor(*gens, **args)[source]

    See the factor() function in sympy.polys.polytools

    -fourier_series(limits=None)[source]
    +fourier_series(limits=None)[source]

    Compute fourier sine/cosine series of self.

    See the docstring of the fourier_series() in sympy.series.fourier for more information.

    @@ -3821,7 +3821,7 @@

    Referencesfull=False,

    -)[source] +)[source]

    Compute formal power power series of self.

    See the docstring of the fps() function in sympy.series.formal for more information.

    @@ -3829,19 +3829,19 @@

    References
    -gammasimp()[source]
    +gammasimp()[source]

    See the gammasimp function in sympy.simplify

    -getO() Expr | None[source]
    +getO() Expr | None[source]

    Returns the additive O(..) symbol if there is one, else None.

    -getn()[source]
    +getn()[source]

    Returns the order of the expression.

    Explanation

    The order is determined either from the O(…) term. If there @@ -3858,13 +3858,13 @@

    References
    -integrate(*args, **kwargs)[source]
    +integrate(*args, **kwargs)[source]

    See the integrate function in sympy.integrals

    -invert(g, *gens, **args)[source]
    +invert(g, *gens, **args)[source]

    Return the multiplicative inverse of self mod g where self (and g) may be symbolic expressions).

    @@ -3875,7 +3875,7 @@

    References
    -is_algebraic_expr(*syms)[source]
    +is_algebraic_expr(*syms)[source]

    This tests whether a given expression is algebraic or not, in the given symbols, syms. When syms is not given, all free symbols will be used. The rational function does not have to be in expanded @@ -3918,7 +3918,7 @@

    References
    -is_constant(*wrt, **flags)[source]
    +is_constant(*wrt, **flags)[source]

    Return True if self is constant, False if not, or None if the constancy could not be determined conclusively.

    Explanation

    @@ -3987,7 +3987,7 @@

    References
    -is_meromorphic(x, a)[source]
    +is_meromorphic(x, a)[source]

    This tests whether an expression is meromorphic as a function of the given symbol x at the point a.

    This method is intended as a quick test that will return @@ -4096,7 +4096,7 @@

    References
    -is_polynomial(*syms)[source]
    +is_polynomial(*syms)[source]

    Return True if self is a polynomial in syms and False otherwise.

    This checks if self is an exact polynomial in syms. This function returns False for expressions that are “polynomials” with symbolic @@ -4160,7 +4160,7 @@

    References
    -is_rational_function(*syms)[source]
    +is_rational_function(*syms)[source]

    Test whether function is a ratio of two polynomials in the given symbols, syms. When syms is not given, all free symbols will be used. The rational function does not have to be in expanded or in any kind of @@ -4212,7 +4212,7 @@

    References
    -leadterm(x, logx=None, cdir=0)[source]
    +leadterm(x, logx=None, cdir=0)[source]

    Returns the leading term a*x**b as a tuple (a, b).

    Examples

    >>> from sympy.abc import x
    @@ -4226,7 +4226,7 @@ 

    References
    -limit(x, xlim, dir='+')[source]
    +limit(x, xlim, dir='+')[source]

    Compute limit x->xlim.

    @@ -4242,7 +4242,7 @@

    Referencescdir=0,

    -)[source] +)[source]

    Wrapper for series yielding an iterator of the terms of the series.

    Note: an infinite series will yield an infinite iterator. The following, for exaxmple, will never terminate. It will just keep printing terms @@ -4260,7 +4260,7 @@

    References
    -normal()[source]
    +normal()[source]

    Return the expression as a fraction.

    expression -> a/b

    @@ -4285,7 +4285,7 @@

    Referencescdir=0,

    -)[source] +)[source]

    Wrapper to _eval_nseries if assumptions allow, else to series.

    If x is given, x0 is 0, dir=’+’, and self has x, then _eval_nseries is called. This calculates “n” terms in the innermost expressions and @@ -4347,19 +4347,19 @@

    Referencesfull=False,

    -)[source] +)[source]

    See the nsimplify function in sympy.simplify

    -powsimp(*args, **kwargs)[source]
    +powsimp(*args, **kwargs)[source]

    See the powsimp function in sympy.simplify

    -primitive() tuple[Number, Expr][source]
    +primitive() tuple[Number, Expr][source]

    Return the positive Rational that can be extracted non-recursively from every term of self (i.e., self is treated like an Add). This is like the as_coeff_Mul() method but primitive always extracts a positive @@ -4380,25 +4380,25 @@

    References
    -radsimp(**kwargs)[source]
    +radsimp(**kwargs)[source]

    See the radsimp function in sympy.simplify

    -ratsimp()[source]
    +ratsimp()[source]

    See the ratsimp function in sympy.simplify

    -removeO() Expr[source]
    +removeO() Expr[source]

    Removes the additive O(..) symbol if there is one

    -round(n=None)[source]
    +round(n=None)[source]

    Return x rounded to the given decimal place.

    If a complex number would results, apply round to the real and imaginary components of the number.

    @@ -4432,7 +4432,7 @@

    References
    -separate(deep=False, force=False)[source]
    +separate(deep=False, force=False)[source]

    See the separate function in sympy.simplify

    @@ -4449,7 +4449,7 @@

    Referencescdir=0,

    -)[source] +)[source]

    Series expansion of “self” around x = x0 yielding either terms of the series one by one (the lazy series given when n=None), else all the terms at once when n != None.

    @@ -4562,7 +4562,7 @@

    References
    -taylor_term(n, x, *previous_terms)[source]
    +taylor_term(n, x, *previous_terms)[source]

    General method for the taylor term.

    This method is slow, because it differentiates n-times. Subclasses can redefine it to make it faster by using the “previous_terms”.

    @@ -4570,13 +4570,13 @@

    References
    -together(*args, **kwargs)[source]
    +together(*args, **kwargs)[source]

    See the together function in sympy.polys

    -trigsimp(**args)[source]
    +trigsimp(**args)[source]

    See the trigsimp function in sympy.simplify

    @@ -4584,7 +4584,7 @@

    References
    -class sympy.core.expr.UnevaluatedExpr(arg, **kwargs)[source]
    +class sympy.core.expr.UnevaluatedExpr(arg, **kwargs)[source]

    Expression that is not evaluated unless released.

    Examples

    >>> from sympy import UnevaluatedExpr
    @@ -4599,7 +4599,7 @@ 

    References
    -class sympy.core.expr.AtomicExpr(*args)[source]
    +class sympy.core.expr.AtomicExpr(*args)[source]

    A parent class for object which are both atoms and Exprs.

    For example: Symbol, Number, Rational, Integer, … But not: Add, Mul, Pow, …

    @@ -4610,7 +4610,7 @@

    References

    symbol

    -class sympy.core.symbol.Symbol(name, **assumptions)[source]
    +class sympy.core.symbol.Symbol(name, **assumptions)[source]

    Symbol class is used to create symbolic variables.

    Parameters:
    @@ -4666,7 +4666,7 @@

    References**assumptions,

    -)[source] +)[source]

    A Wild symbol matches anything, or anything without whatever is explicitly excluded.

    @@ -4757,7 +4757,7 @@

    References
    -class sympy.core.symbol.Dummy(name=None, dummy_index=None, **assumptions)[source]
    +class sympy.core.symbol.Dummy(name=None, dummy_index=None, **assumptions)[source]

    Dummy symbols are each unique, even if they have the same name:

    Examples

    >>> from sympy import Dummy
    @@ -4785,7 +4785,7 @@ 

    References**args,

    -) Any[source] +) Any[source]

    Transform strings into instances of Symbol class.

    symbols() function returns a sequence of symbols with names taken from names argument, which can be a comma or whitespace delimited @@ -4902,7 +4902,7 @@

    References
    -sympy.core.symbol.var(names, **args)[source]
    +sympy.core.symbol.var(names, **args)[source]

    Create symbols and inject them into the global namespace.

    Explanation

    This calls symbols() with the same arguments and puts the results @@ -4941,7 +4941,7 @@

    References

    intfunc

    -sympy.core.intfunc.num_digits(n, base=10)[source]
    +sympy.core.intfunc.num_digits(n, base=10)[source]

    Return the number of digits needed to express n in give base.

    Parameters:
    @@ -4973,7 +4973,7 @@

    References
    -sympy.core.intfunc.trailing(n)[source]
    +sympy.core.intfunc.trailing(n)[source]

    Count the number of trailing zero digits in the binary representation of n, i.e. determine the largest power of 2 that divides n.

    @@ -4993,7 +4993,7 @@

    References
    -sympy.core.intfunc.ilcm(*args)[source]
    +sympy.core.intfunc.ilcm(*args)[source]

    Computes integer least common multiple.

    Examples

    >>> from sympy import ilcm
    @@ -5035,7 +5035,7 @@ 

    References
    -sympy.core.intfunc.igcd_lehmer(a, b)[source]
    +sympy.core.intfunc.igcd_lehmer(a, b)[source]

    Computes greatest common divisor of two integers.

    Explanation

    Euclid’s algorithm for the computation of the greatest @@ -5078,7 +5078,7 @@

    References
    -sympy.core.intfunc.igcdex(a, b)[source]
    +sympy.core.intfunc.igcdex(a, b)[source]

    Returns x, y, g such that g = x*a + y*b = gcd(a, b).

    Examples

    >>> from sympy.core.intfunc import igcdex
    @@ -5099,7 +5099,7 @@ 

    References
    -sympy.core.intfunc.isqrt(n)[source]
    +sympy.core.intfunc.isqrt(n)[source]

    Return the largest integer less than or equal to \(\sqrt{n}\).

    Parameters:
    @@ -5143,7 +5143,7 @@

    References
    -sympy.core.intfunc.integer_nthroot(y, n)[source]
    +sympy.core.intfunc.integer_nthroot(y, n)[source]

    Return a tuple containing x = floor(y**(1/n)) and a boolean indicating whether the result is exact (that is, whether x**n == y).

    @@ -5170,7 +5170,7 @@

    References
    -sympy.core.intfunc.integer_log(n, b)[source]
    +sympy.core.intfunc.integer_log(n, b)[source]

    Returns (e, bool) where e is the largest nonnegative integer such that \(|n| \geq |b^e|\) and bool is True if \(n = b^e\).

    Examples

    @@ -5210,7 +5210,7 @@

    References
    -sympy.core.intfunc.mod_inverse(a, m)[source]
    +sympy.core.intfunc.mod_inverse(a, m)[source]

    Return the number \(c\) such that, \(a \times c = 1 \pmod{m}\) where \(c\) has the same sign as \(m\). If no such value exists, a ValueError is raised.

    @@ -5259,7 +5259,7 @@

    References

    numbers

    -class sympy.core.numbers.Number(*obj)[source]
    +class sympy.core.numbers.Number(*obj)[source]

    Represents atomic numbers in SymPy.

    Explanation

    Floating point numbers are represented by the Float class. @@ -5282,31 +5282,31 @@

    References
    -as_coeff_Add(rational=False)[source]
    +as_coeff_Add(rational=False)[source]

    Efficiently extract the coefficient of a summation.

    -as_coeff_Mul(rational=False)[source]
    +as_coeff_Mul(rational=False)[source]

    Efficiently extract the coefficient of a product.

    -cofactors(other)[source]
    +cofactors(other)[source]

    Compute GCD and cofactors of \(self\) and \(other\).

    -gcd(other)[source]
    +gcd(other)[source]

    Compute GCD of \(self\) and \(other\).

    -lcm(other)[source]
    +lcm(other)[source]

    Compute LCM of \(self\) and \(other\).

    @@ -5314,7 +5314,7 @@

    References
    -class sympy.core.numbers.Float(num, dps=None, precision=None)[source]
    +class sympy.core.numbers.Float(num, dps=None, precision=None)[source]

    Represent a floating-point number of arbitrary precision.

    Examples

    >>> from sympy import Float
    @@ -5478,7 +5478,7 @@ 

    References
    -class sympy.core.numbers.Rational(p, q=None, gcd=None)[source]
    +class sympy.core.numbers.Rational(p, q=None, gcd=None)[source]

    Represents rational numbers (p/q) of any size.

    Examples

    >>> from sympy import Rational, nsimplify, S, pi
    @@ -5568,13 +5568,13 @@ 

    References
    -as_coeff_Add(rational=False)[source]
    +as_coeff_Add(rational=False)[source]

    Efficiently extract the coefficient of a summation.

    -as_coeff_Mul(rational=False)[source]
    +as_coeff_Mul(rational=False)[source]

    Efficiently extract the coefficient of a product.

    @@ -5587,7 +5587,7 @@

    Referencesclear=True,

    -)[source] +)[source]

    Return the tuple (R, self/R) where R is the positive Rational extracted from self.

    Examples

    @@ -5612,7 +5612,7 @@

    Referencesvisual=False,

    -)[source] +)[source]

    A wrapper to factorint which return factors of self that are smaller than limit (or cheap to compute). Special methods of factoring are disabled by default so that only trial division is used.

    @@ -5626,7 +5626,7 @@

    Referencesmax_denominator=1000000,

    -)[source] +)[source]

    Closest Rational to self with denominator at most max_denominator.

    Examples

    >>> from sympy import Rational
    @@ -5642,7 +5642,7 @@ 

    References
    -class sympy.core.numbers.Integer(i)[source]
    +class sympy.core.numbers.Integer(i)[source]

    Represents integer numbers of any size.

    Examples

    >>> from sympy import Integer
    @@ -5679,7 +5679,7 @@ 

    References**args,

    -)[source] +)[source]

    Class for representing algebraic numbers in SymPy.

    Symbolically, an instance of this class represents an element \(\alpha \in \mathbb{Q}(\theta) \hookrightarrow \mathbb{C}\). That is, the @@ -5704,7 +5704,7 @@

    References**args,

    -)[source] +)[source]

    Construct a new algebraic number \(\alpha\) belonging to a number field \(k = \mathbb{Q}(\theta)\).

    There are four instance attributes to be determined:

    @@ -5881,25 +5881,25 @@

    References
    -as_expr(x=None)[source]
    +as_expr(x=None)[source]

    Create a Basic expression from self.

    -as_poly(x=None)[source]
    +as_poly(x=None)[source]

    Create a Poly instance from self.

    -coeffs()[source]
    +coeffs()[source]

    Returns all SymPy coefficients of an algebraic number.

    -field_element(coeffs)[source]
    +field_element(coeffs)[source]

    Form another element of the same number field.

    Parameters:
    @@ -5950,7 +5950,7 @@

    References
    -minpoly_of_element()[source]
    +minpoly_of_element()[source]

    Compute the minimal polynomial for this algebraic number.

    Explanation

    Recall that we represent an element \(\alpha \in \mathbb{Q}(\theta)\). @@ -5961,13 +5961,13 @@

    References
    -native_coeffs()[source]
    +native_coeffs()[source]

    Returns all native coefficients of an algebraic number.

    -primitive_element()[source]
    +primitive_element()[source]

    Get the primitive element \(\theta\) for the number field \(\mathbb{Q}(\theta)\) to which this algebraic number \(\alpha\) belongs.

    @@ -5979,7 +5979,7 @@

    References
    -to_algebraic_integer()[source]
    +to_algebraic_integer()[source]

    Convert self to an algebraic integer.

    @@ -5991,7 +5991,7 @@

    Referencesradicals=True,

    -)[source] +)[source]

    Convert self to an AlgebraicNumber instance that is equal to its own primitive element.

    @@ -6056,7 +6056,7 @@

    Referencesminpoly=None,

    -)[source] +)[source]

    Convert to an Expr that is not an AlgebraicNumber, specifically, either a ComplexRootOf, or, optionally and where possible, an @@ -6082,10 +6082,10 @@

    References
    -class sympy.core.numbers.NumberSymbol[source]
    +class sympy.core.numbers.NumberSymbol[source]
    -approximation(number_cls)[source]
    +approximation(number_cls)[source]

    Return an interval with number_cls endpoints that contains the value of NumberSymbol. If not implemented, then return None.

    @@ -6095,13 +6095,13 @@

    References
    -sympy.core.numbers.RealNumber[source]
    +sympy.core.numbers.RealNumber[source]

    alias of Float

    -sympy.core.numbers.seterr(divide=False)[source]
    +sympy.core.numbers.seterr(divide=False)[source]

    Should SymPy raise an exception on 0/0 or return a nan?

    divide == True …. raise an exception divide == False … return nan

    @@ -6109,7 +6109,7 @@

    References
    -class sympy.core.numbers.Zero[source]
    +class sympy.core.numbers.Zero[source]

    The number zero.

    Zero is a singleton, and can be accessed by S.Zero

    Examples

    @@ -6131,7 +6131,7 @@

    References
    -class sympy.core.numbers.One[source]
    +class sympy.core.numbers.One[source]

    The number one.

    One is a singleton, and can be accessed by S.One.

    Examples

    @@ -6151,7 +6151,7 @@

    References
    -class sympy.core.numbers.NegativeOne[source]
    +class sympy.core.numbers.NegativeOne[source]

    The number negative one.

    NegativeOne is a singleton, and can be accessed by S.NegativeOne.

    Examples

    @@ -6175,7 +6175,7 @@

    References
    -class sympy.core.numbers.Half[source]
    +class sympy.core.numbers.Half[source]

    The rational number 1/2.

    Half is a singleton, and can be accessed by S.Half.

    Examples

    @@ -6195,7 +6195,7 @@

    References
    -class sympy.core.numbers.NaN[source]
    +class sympy.core.numbers.NaN[source]

    Not a Number.

    Explanation

    This serves as a place holder for numeric values that are indeterminate. @@ -6238,7 +6238,7 @@

    References
    -class sympy.core.numbers.Infinity[source]
    +class sympy.core.numbers.Infinity[source]

    Positive infinite quantity.

    Explanation

    In real analysis the symbol \(\infty\) denotes an unbounded @@ -6276,7 +6276,7 @@

    References
    -class sympy.core.numbers.NegativeInfinity[source]
    +class sympy.core.numbers.NegativeInfinity[source]

    Negative infinite quantity.

    NegativeInfinity is a singleton, and can be accessed by S.NegativeInfinity.

    @@ -6288,7 +6288,7 @@

    References
    -class sympy.core.numbers.ComplexInfinity[source]
    +class sympy.core.numbers.ComplexInfinity[source]

    Complex infinity.

    Explanation

    In complex analysis the symbol \(\tilde\infty\), called “complex @@ -6316,7 +6316,7 @@

    References
    -class sympy.core.numbers.Exp1[source]
    +class sympy.core.numbers.Exp1[source]

    The \(e\) constant.

    Explanation

    The transcendental number \(e = 2.718281828\ldots\) is the base of the @@ -6343,7 +6343,7 @@

    References
    -class sympy.core.numbers.ImaginaryUnit[source]
    +class sympy.core.numbers.ImaginaryUnit[source]

    The imaginary unit, \(i = \sqrt{-1}\).

    I is a singleton, and can be accessed by S.I, or can be imported as I.

    @@ -6368,7 +6368,7 @@

    References
    -class sympy.core.numbers.Pi[source]
    +class sympy.core.numbers.Pi[source]

    The \(\pi\) constant.

    Explanation

    The transcendental number \(\pi = 3.141592654\ldots\) represents the ratio @@ -6403,7 +6403,7 @@

    References
    -class sympy.core.numbers.EulerGamma[source]
    +class sympy.core.numbers.EulerGamma[source]

    The Euler-Mascheroni constant.

    Explanation

    \(\gamma = 0.5772157\ldots\) (also called Euler’s constant) is a mathematical @@ -6436,7 +6436,7 @@

    References
    -class sympy.core.numbers.Catalan[source]
    +class sympy.core.numbers.Catalan[source]

    Catalan’s constant.

    Explanation

    \(G = 0.91596559\ldots\) is given by the infinite series

    @@ -6465,7 +6465,7 @@

    References
    -class sympy.core.numbers.GoldenRatio[source]
    +class sympy.core.numbers.GoldenRatio[source]

    The golden ratio, \(\phi\).

    Explanation

    \(\phi = \frac{1 + \sqrt{5}}{2}\) is an algebraic number. Two quantities @@ -6493,7 +6493,7 @@

    References
    -class sympy.core.numbers.TribonacciConstant[source]
    +class sympy.core.numbers.TribonacciConstant[source]

    The tribonacci constant.

    Explanation

    The tribonacci numbers are like the Fibonacci numbers, but instead @@ -6528,7 +6528,7 @@

    References
    -sympy.core.numbers.mod_inverse(a, m)[source]
    +sympy.core.numbers.mod_inverse(a, m)[source]

    Return the number \(c\) such that, \(a \times c = 1 \pmod{m}\) where \(c\) has the same sign as \(m\). If no such value exists, a ValueError is raised.

    @@ -6574,7 +6574,7 @@

    References
    -sympy.core.numbers.equal_valued(x, y)[source]
    +sympy.core.numbers.equal_valued(x, y)[source]

    Compare expressions treating plain floats as rationals.

    Examples

    >>> from sympy import S, symbols, Rational, Float
    @@ -6639,7 +6639,7 @@ 

    Referencesevaluate=None,

    -)[source] +)[source]

    Defines the expression x**y as “x raised to a power y”

    Deprecated since version 1.7: Using arguments that aren’t subclasses of Expr in core @@ -6777,7 +6777,7 @@

    References
    -as_base_exp()[source]
    +as_base_exp()[source]

    Return base and exp of self.

    Explanation

    If base a Rational less than 1, then return 1/Rational, -exp. @@ -6805,7 +6805,7 @@

    Referencesclear=True,

    -)[source] +)[source]

    Return the tuple (R, self/R) where R is the positive Rational extracted from self.

    Examples

    @@ -6856,7 +6856,7 @@

    References

    mul

    -class sympy.core.mul.Mul(*args, evaluate=None, _sympify=True)[source]
    +class sympy.core.mul.Mul(*args, evaluate=None, _sympify=True)[source]

    Expression representing multiplication operation for algebraic field.

    Deprecated since version 1.7: Using arguments that aren’t subclasses of Expr in core @@ -6928,7 +6928,7 @@

    References
    -as_coeff_Mul(rational=False)[source]
    +as_coeff_Mul(rational=False)[source]

    Efficiently extract the coefficient of a product.

    @@ -6941,7 +6941,7 @@

    Referencesclear=True,

    -)[source] +)[source]

    Return the tuple (R, self/R) where R is the positive Rational extracted from self.

    Examples

    @@ -6955,7 +6955,7 @@

    References
    -as_ordered_factors(order=None)[source]
    +as_ordered_factors(order=None)[source]

    Transform an expression into an ordered list of factors.

    Examples

    >>> from sympy import sin, cos
    @@ -6970,7 +6970,7 @@ 

    References
    -as_two_terms()[source]
    +as_two_terms()[source]

    Return head and tail of self.

    This is the most efficient way to get the head and tail of an expression.

    @@ -6992,7 +6992,7 @@

    References
    -classmethod flatten(seq)[source]
    +classmethod flatten(seq)[source]

    Return commutative, noncommutative and order arguments by combining related terms.

    Notes

    @@ -7075,7 +7075,7 @@

    References
    -sympy.core.mul.prod(a, start=1)[source]
    +sympy.core.mul.prod(a, start=1)[source]
    Return product of elements of a. Start with int 1 so if only

    ints are included then an int result is returned.

    @@ -7104,7 +7104,7 @@

    References

    add

    -class sympy.core.add.Add(*args, evaluate=None, _sympify=True)[source]
    +class sympy.core.add.Add(*args, evaluate=None, _sympify=True)[source]

    Expression representing addition operation for algebraic group.

    Deprecated since version 1.7: Using arguments that aren’t subclasses of Expr in core @@ -7197,13 +7197,13 @@

    Referencesdeps=None,

    -) tuple[Number, Expr][source] +) tuple[Number, Expr][source]

    Efficiently extract the coefficient of a summation.

    -as_coeff_add(*deps)[source]
    +as_coeff_add(*deps)[source]

    Returns a tuple (coeff, args) where self is treated as an Add and coeff is the Number term and args is a tuple of all other terms.

    Examples

    @@ -7225,7 +7225,7 @@

    Referencesclear=True,

    -)[source] +)[source]

    Return the tuple (R, self/R) where R is the positive Rational extracted from self. If radical is True (default is False) then common radicals will be removed and included as a factor of the @@ -7246,7 +7246,7 @@

    References
    -as_numer_denom() tuple[Expr, Expr][source]
    +as_numer_denom() tuple[Expr, Expr][source]

    Decomposes an expression to its numerator part and its denominator part.

    Examples

    @@ -7265,7 +7265,7 @@

    References
    -as_real_imag(deep=True, **hints)[source]
    +as_real_imag(deep=True, **hints)[source]

    Return a tuple representing a complex number.

    Examples

    >>> from sympy import I
    @@ -7281,7 +7281,7 @@ 

    References
    -as_two_terms()[source]
    +as_two_terms()[source]

    Return head and tail of self.

    This is the most efficient way to get the head and tail of an expression.

    @@ -7302,7 +7302,7 @@

    References
    -extract_leading_order(symbols, point=None)[source]
    +extract_leading_order(symbols, point=None)[source]

    Returns the leading term and its order.

    Examples

    >>> from sympy.abc import x
    @@ -7324,7 +7324,7 @@ 

    Referencesseq: list[Expr],

    -) tuple[list[Expr], list[Expr], None][source] +) tuple[list[Expr], list[Expr], None][source]

    Takes the sequence “seq” of nested Adds and returns a flatten list.

    Returns: (commutative_part, noncommutative_part, order_symbols)

    Applies associativity, all terms are commutable with respect to @@ -7338,7 +7338,7 @@

    References
    -primitive()[source]
    +primitive()[source]

    Return (R, self/R) where R` is the Rational GCD of self`.

    R is collected only from the leading coefficient of each term.

    Examples

    @@ -7378,7 +7378,7 @@

    References

    mod

    -class sympy.core.mod.Mod(p, q)[source]
    +class sympy.core.mod.Mod(p, q)[source]

    Represents a modulo operation on symbolic expressions.

    Parameters:
    @@ -7422,7 +7422,7 @@

    References

    relational

    -class sympy.core.relational.Relational(lhs, rhs, rop=None, **assumptions)[source]
    +class sympy.core.relational.Relational(lhs, rhs, rop=None, **assumptions)[source]

    Base class for all relation types.

    Parameters:
    @@ -7550,7 +7550,7 @@

    References
    -equals(other, failing_expression=False)[source]
    +equals(other, failing_expression=False)[source]

    Return True if the sides of the relationship are mathematically identical and the type of relationship is the same. If failing_expression is True, return the expression whose truth value @@ -7663,49 +7663,49 @@

    References
    -sympy.core.relational.Rel[source]
    +sympy.core.relational.Rel[source]

    alias of Relational

    -sympy.core.relational.Eq[source]
    +sympy.core.relational.Eq[source]

    alias of Equality

    -sympy.core.relational.Ne[source]
    +sympy.core.relational.Ne[source]

    alias of Unequality

    -sympy.core.relational.Lt[source]
    +sympy.core.relational.Lt[source]

    alias of StrictLessThan

    -sympy.core.relational.Le[source]
    +sympy.core.relational.Le[source]

    alias of LessThan

    -sympy.core.relational.Gt[source]
    +sympy.core.relational.Gt[source]

    alias of StrictGreaterThan

    -sympy.core.relational.Ge[source]
    +sympy.core.relational.Ge[source]

    alias of GreaterThan

    -class sympy.core.relational.Equality(lhs, rhs, **options)[source]
    +class sympy.core.relational.Equality(lhs, rhs, **options)[source]

    An equal relation between two objects.

    Explanation

    Represents that two objects are equal. If they can be easily shown @@ -7764,7 +7764,7 @@

    References
    -as_poly(*gens, **kwargs)[source]
    +as_poly(*gens, **kwargs)[source]

    Returns lhs-rhs as a Poly

    Examples

    >>> from sympy import Eq
    @@ -7777,7 +7777,7 @@ 

    References
    -integrate(*args, **kwargs)[source]
    +integrate(*args, **kwargs)[source]

    See the integrate function in sympy.integrals

    @@ -7785,7 +7785,7 @@

    References
    -class sympy.core.relational.GreaterThan(lhs, rhs, **options)[source]
    +class sympy.core.relational.GreaterThan(lhs, rhs, **options)[source]

    Class representations of inequalities.

    Explanation

    The *Than classes represent inequal relationships, where the left-hand @@ -8039,7 +8039,7 @@

    References
    -class sympy.core.relational.LessThan(lhs, rhs, **options)[source]
    +class sympy.core.relational.LessThan(lhs, rhs, **options)[source]

    Class representations of inequalities.

    Explanation

    The *Than classes represent inequal relationships, where the left-hand @@ -8293,7 +8293,7 @@

    References
    -class sympy.core.relational.Unequality(lhs, rhs, **options)[source]
    +class sympy.core.relational.Unequality(lhs, rhs, **options)[source]

    An unequal relation between two objects.

    Explanation

    Represents that two objects are not equal. If they can be shown to be @@ -8321,7 +8321,7 @@

    References
    -class sympy.core.relational.StrictGreaterThan(lhs, rhs, **options)[source]
    +class sympy.core.relational.StrictGreaterThan(lhs, rhs, **options)[source]

    Class representations of inequalities.

    Explanation

    The *Than classes represent inequal relationships, where the left-hand @@ -8575,7 +8575,7 @@

    References
    -class sympy.core.relational.StrictLessThan(lhs, rhs, **options)[source]
    +class sympy.core.relational.StrictLessThan(lhs, rhs, **options)[source]

    Class representations of inequalities.

    Explanation

    The *Than classes represent inequal relationships, where the left-hand @@ -8832,7 +8832,7 @@

    References

    multidimensional

    -class sympy.core.multidimensional.vectorize(*mdargs)[source]
    +class sympy.core.multidimensional.vectorize(*mdargs)[source]

    Generalizes a function taking scalars to accept multidimensional arguments.

    Examples

    >>> from sympy import vectorize, diff, sin, symbols, Function
    @@ -8865,7 +8865,7 @@ 

    References

    function

    -class sympy.core.function.Lambda(signature, expr)[source]
    +class sympy.core.function.Lambda(signature, expr)[source]

    Lambda(x, expr) represents a lambda function similar to Python’s ‘lambda x: expr’. A function of several variables is written as Lambda((x, y, …), expr).

    @@ -8932,7 +8932,7 @@

    References
    -class sympy.core.function.WildFunction(*args)[source]
    +class sympy.core.function.WildFunction(*args)[source]

    A WildFunction function matches any function (with its arguments).

    Examples

    >>> from sympy import WildFunction, Function, cos
    @@ -8979,7 +8979,7 @@ 

    References
    -class sympy.core.function.Derivative(expr, *variables, **kwargs)[source]
    +class sympy.core.function.Derivative(expr, *variables, **kwargs)[source]

    Carries out differentiation of the given expression with respect to symbols.

    Examples

    >>> from sympy import Derivative, Function, symbols, Subs
    @@ -9183,7 +9183,7 @@ 

    References
    -classmethod _sort_variable_count(vc)[source]
    +classmethod _sort_variable_count(vc)[source]

    Sort (variable, count) pairs into canonical order while retaining order of variables that do not commute during differentiation:

    @@ -9242,7 +9242,7 @@

    Referenceswrt=None,

    -)[source] +)[source]

    Expresses a Derivative instance as a finite difference.

    Parameters:
    @@ -9328,7 +9328,7 @@

    References
    -doit_numerically(z0)[source]
    +doit_numerically(z0)[source]

    Evaluate the derivative at z numerically.

    When we can represent derivatives at a point, this should be folded into the normal evalf. For now, we need a special method.

    @@ -9338,7 +9338,7 @@

    References
    -sympy.core.function.diff(f, *symbols, **kwargs)[source]
    +sympy.core.function.diff(f, *symbols, **kwargs)[source]

    Differentiate f with respect to symbols.

    Explanation

    This is just a wrapper to unify .diff() and the Derivative class; its @@ -9404,7 +9404,7 @@

    References
    -class sympy.core.function.FunctionClass(*args, **kwargs)[source]
    +class sympy.core.function.FunctionClass(*args, **kwargs)[source]

    Base class for function classes. FunctionClass is a subclass of type.

    Use Function(‘<function name>’ [ , signature ]) to create undefined function classes.

    @@ -9447,7 +9447,7 @@

    References
    -class sympy.core.function.Function(*args)[source]
    +class sympy.core.function.Function(*args)[source]

    Base class for applied mathematical functions.

    It also serves as a constructor for undefined function classes.

    See the Writing Custom Functions guide for details on how to subclass @@ -9495,13 +9495,13 @@

    References
    -fdiff(argindex=1)[source]
    +fdiff(argindex=1)[source]

    Returns the first derivative of the function.

    -classmethod is_singular(a)[source]
    +classmethod is_singular(a)[source]

    Tests whether the argument is an essential singularity or a branch point, or the functions is non-holomorphic.

    @@ -9538,7 +9538,7 @@

    References
    -class sympy.core.function.Subs(expr, variables, point, **assumptions)[source]
    +class sympy.core.function.Subs(expr, variables, point, **assumptions)[source]

    Represents unevaluated substitutions of an expression.

    Subs(expr, x, x0) represents the expression resulting from substituting x with x0 in expr.

    @@ -9660,7 +9660,7 @@

    References**hints,

    -)[source] +)[source]

    Expand an expression using methods given as hints.

    Explanation

    Hints evaluated unless explicitly set to False are: basic, log, @@ -9943,12 +9943,12 @@

    References
    -class sympy.core.function.PoleError[source]
    +class sympy.core.function.PoleError[source]

    -sympy.core.function.count_ops(expr, visual=False)[source]
    +sympy.core.function.count_ops(expr, visual=False)[source]

    Return a representation (integer or expression) of the operations in expr.

    Parameters:
    @@ -10023,7 +10023,7 @@

    References
    -sympy.core.function.expand_mul(expr, deep=True)[source]
    +sympy.core.function.expand_mul(expr, deep=True)[source]

    Wrapper around expand that only uses the mul hint. See the expand docstring for more information.

    Examples

    @@ -10046,7 +10046,7 @@

    Referencesfactor=False,

    -)[source] +)[source]

    Wrapper around expand that only uses the log hint. See the expand docstring for more information.

    Examples

    @@ -10060,7 +10060,7 @@

    References
    -sympy.core.function.expand_func(expr, deep=True)[source]
    +sympy.core.function.expand_func(expr, deep=True)[source]

    Wrapper around expand that only uses the func hint. See the expand docstring for more information.

    Examples

    @@ -10074,7 +10074,7 @@

    References
    -sympy.core.function.expand_trig(expr, deep=True)[source]
    +sympy.core.function.expand_trig(expr, deep=True)[source]

    Wrapper around expand that only uses the trig hint. See the expand docstring for more information.

    Examples

    @@ -10088,7 +10088,7 @@

    References
    -sympy.core.function.expand_complex(expr, deep=True)[source]
    +sympy.core.function.expand_complex(expr, deep=True)[source]

    Wrapper around expand that only uses the complex hint. See the expand docstring for more information.

    Examples

    @@ -10108,7 +10108,7 @@

    References
    -sympy.core.function.expand_multinomial(expr, deep=True)[source]
    +sympy.core.function.expand_multinomial(expr, deep=True)[source]

    Wrapper around expand that only uses the multinomial hint. See the expand docstring for more information.

    Examples

    @@ -10122,7 +10122,7 @@

    References
    -sympy.core.function.expand_power_exp(expr, deep=True)[source]
    +sympy.core.function.expand_power_exp(expr, deep=True)[source]

    Wrapper around expand that only uses the power_exp hint.

    See the expand docstring for more information.

    Examples

    @@ -10145,7 +10145,7 @@

    References
    -sympy.core.function.expand_power_base(expr, deep=True, force=False)[source]
    +sympy.core.function.expand_power_base(expr, deep=True, force=False)[source]

    Wrapper around expand that only uses the power_base hint.

    A wrapper to expand(power_base=True) which separates a power with a base that is a Mul into a product of powers, without performing any other @@ -10230,7 +10230,7 @@

    References
    -sympy.core.function.nfloat(expr, n=15, exponent=False, dkeys=False)[source]
    +sympy.core.function.nfloat(expr, n=15, exponent=False, dkeys=False)[source]

    Make all Rationals in expr Floats except those in exponents (unless the exponents flag is set to True) and those in undefined functions. When processing dictionaries, do not modify the keys @@ -10256,7 +10256,7 @@

    References

    evalf

    -class sympy.core.evalf.EvalfMixin[source]
    +class sympy.core.evalf.EvalfMixin[source]

    Mixin class adding evalf capability.

    @@ -10272,7 +10272,7 @@

    Referencesverbose=False,

    -)[source] +)[source]

    Evaluate the given formula to an accuracy of n digits.

    Parameters:
    @@ -10355,7 +10355,7 @@

    Referencesverbose=False,

    -)[source] +)[source]

    Evaluate the given formula to an accuracy of n digits.

    Parameters:
    @@ -10428,12 +10428,12 @@

    References
    -class sympy.core.evalf.PrecisionExhausted[source]
    +class sympy.core.evalf.PrecisionExhausted[source]

    -sympy.core.evalf.N(x, n=15, **options)[source]
    +sympy.core.evalf.N(x, n=15, **options)[source]

    Calls x.evalf(n, **options).

    Explanations

    Both .n() and N() are equivalent to .evalf(); use the one that you like better. @@ -10454,7 +10454,7 @@

    References

    containers

    -class sympy.core.containers.Tuple(*args, **kwargs)[source]
    +class sympy.core.containers.Tuple(*args, **kwargs)[source]

    Wrapper around the builtin tuple object.

    Parameters:
    @@ -10481,7 +10481,7 @@

    References
    -index(value, start=None, stop=None)[source]
    +index(value, start=None, stop=None)[source]

    Searches and returns the first index of the value.

    @@ -10509,7 +10509,7 @@

    References
    -tuple_count(value) int[source]
    +tuple_count(value) int[source]

    Return number of occurrences of value.

    @@ -10517,7 +10517,7 @@

    References
    -class sympy.core.containers.TupleKind(*args)[source]
    +class sympy.core.containers.TupleKind(*args)[source]

    TupleKind is a subclass of Kind, which is used to define Kind of Tuple.

    Parameters of TupleKind will be kinds of all the arguments in Tuples, for example

    @@ -10546,7 +10546,7 @@

    References
    -class sympy.core.containers.Dict(*args)[source]
    +class sympy.core.containers.Dict(*args)[source]

    Wrapper around the builtin dict object.

    Explanation

    The Dict is a subclass of Basic, so that it works well in the @@ -10579,25 +10579,25 @@

    References
    -get(key, default=None)[source]
    +get(key, default=None)[source]

    Returns the value for key if the key is in the dictionary.

    -items()[source]
    +items()[source]

    Returns a set-like object providing a view on dict’s items.

    -keys()[source]
    +keys()[source]

    Returns the list of the dict’s keys.

    -values()[source]
    +values()[source]

    Returns the list of the dict’s values.

    @@ -10617,7 +10617,7 @@

    Referencesfraction=True,

    -)[source] +)[source]

    Compute the GCD of terms and put them together.

    Parameters:
    @@ -10694,7 +10694,7 @@

    Referencessign=True,

    -) Expr[source] +) Expr[source]

    Remove common factors from terms in all arguments without changing the underlying structure of the expr. No expansion or simplification (and no processing of non-commutatives) is performed.

    @@ -10763,7 +10763,7 @@

    References

    kind

    -class sympy.core.kind.Kind(*args)[source]
    +class sympy.core.kind.Kind(*args)[source]

    Base class for kinds.

    Kind of the object represents the mathematical classification that the entity falls into. It is expected that functions and classes @@ -10807,7 +10807,7 @@

    References

    -sympy.core.sorting.default_sort_key(item, order=None)[source]
    +sympy.core.sorting.default_sort_key(item, order=None)[source]

    Return a key that can be used for sorting.

    The key has the structure:

    (class_key, (len(args), args), exponent.sort_key(), coefficient)

    @@ -10913,7 +10913,7 @@

    Sorting
    -sympy.core.sorting.ordered(seq, keys=None, default=True, warn=False)[source]
    +sympy.core.sorting.ordered(seq, keys=None, default=True, warn=False)[source]

    Return an iterator of the seq where keys are used to break ties in a conservative fashion: if, after applying a key, there are no ties then no other keys will be computed.

    @@ -11024,7 +11024,7 @@

    Examplestolerance=None,

    -)[source] +)[source]

    Return a random complex number.

    To reduce chance of hitting branch cuts or anything, we guarantee b <= Im z <= d, a <= Re z <= c

    @@ -11047,7 +11047,7 @@

    Examplesd=1,

    -)[source] +)[source]

    Test numerically that f and g agree when evaluated in the argument z.

    If z is None, all symbols will be tested. This routine does not test whether there are Floats present with precision higher than 15 digits @@ -11077,7 +11077,7 @@

    Examplesd=1,

    -)[source] +)[source]

    Test numerically that the symbolically computed derivative of f with respect to z is correct.

    This routine does not test whether there are Floats present with @@ -11095,7 +11095,7 @@

    Examples
    -sympy.core.random._randrange(seed=None)[source]
    +sympy.core.random._randrange(seed=None)[source]

    Return a randrange generator.

    seed can be

      @@ -11121,7 +11121,7 @@

      Examples
      -sympy.core.random._randint(seed=None)[source]
      +sympy.core.random._randint(seed=None)[source]

      Return a randint generator.

      seed can be

        @@ -11150,7 +11150,7 @@

        Examples

        Traversal

        -sympy.core.traversal.bottom_up(rv, F, atoms=False, nonbasic=False)[source]
        +sympy.core.traversal.bottom_up(rv, F, atoms=False, nonbasic=False)[source]

        Apply F to all expressions in an expression tree from the bottom up. If atoms is True, apply F even if there are no args; if nonbasic is True, try to apply F to non-Basic objects.

        @@ -11158,7 +11158,7 @@

        Examples
        -sympy.core.traversal.postorder_traversal(node, keys=None)[source]
        +sympy.core.traversal.postorder_traversal(node, keys=None)[source]

        Do a postorder traversal of a tree.

        This generator recursively yields nodes that it has visited in a postorder fashion. That is, it descends through the tree depth-first to yield all of @@ -11203,7 +11203,7 @@

        Examples
        -sympy.core.traversal.preorder_traversal(node, keys=None)[source]
        +sympy.core.traversal.preorder_traversal(node, keys=None)[source]

        Do a pre-order traversal of a tree.

        This iterator recursively yields nodes that it has visited in a pre-order fashion. That is, it yields the current node then descends through the @@ -11251,7 +11251,7 @@

        Examples
        -sympy.core.traversal.use(expr, func, level=0, args=(), kwargs={})[source]
        +sympy.core.traversal.use(expr, func, level=0, args=(), kwargs={})[source]

        Use func to transform expr at the given level.

        Examples

        >>> from sympy import use, expand
        @@ -11271,7 +11271,7 @@ 

        Examples
        -sympy.core.traversal.walk(e, *target)[source]
        +sympy.core.traversal.walk(e, *target)[source]

        Iterate through the args that are the given types (target) and return a list of the args that were traversed; arguments that are not of the specified types are not traversed.

        diff --git a/dev/modules/crypto.html b/dev/modules/crypto.html index b9de6c1795c..e3b7793cfb8 100644 --- a/dev/modules/crypto.html +++ b/dev/modules/crypto.html @@ -838,7 +838,7 @@

        Cryptography
        -sympy.crypto.crypto.AZ(s=None)[source]
        +sympy.crypto.crypto.AZ(s=None)[source]

        Return the letters of s in uppercase. In case more than one string is passed, each of them will be processed and a list of upper case strings will be returned.

        @@ -858,7 +858,7 @@

        Cryptography
        -sympy.crypto.crypto.padded_key(key, symbols)[source]
        +sympy.crypto.crypto.padded_key(key, symbols)[source]

        Return a string of the distinct characters of symbols with those of key appearing first. A ValueError is raised if a) there are duplicate characters in symbols or @@ -877,7 +877,7 @@

        Cryptography
        -sympy.crypto.crypto.check_and_join(phrase, symbols=None, filter=None)[source]
        +sympy.crypto.crypto.check_and_join(phrase, symbols=None, filter=None)[source]

        Joins characters of phrase and if symbols is given, raises an error if any character in phrase is not in symbols.

        @@ -911,7 +911,7 @@

        Cryptography
        -sympy.crypto.crypto.cycle_list(k, n)[source]
        +sympy.crypto.crypto.cycle_list(k, n)[source]

        Returns the elements of the list range(n) shifted to the left by k (so the list starts with k (mod n)).

        Examples

        @@ -924,7 +924,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_shift(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.encipher_shift(msg, key, symbols=None)[source]

        Performs shift cipher encryption on plaintext msg, and returns the ciphertext.

        @@ -1003,7 +1003,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_shift(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.decipher_shift(msg, key, symbols=None)[source]

        Return the text by shifting the characters of msg to the left by the amount given by key.

        Examples

        @@ -1027,7 +1027,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_rot13(msg, symbols=None)[source]
        +sympy.crypto.crypto.encipher_rot13(msg, symbols=None)[source]

        Performs the ROT13 encryption on a given plaintext msg.

        Explanation

        ROT13 is a substitution cipher which substitutes each letter @@ -1050,7 +1050,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_rot13(msg, symbols=None)[source]
        +sympy.crypto.crypto.decipher_rot13(msg, symbols=None)[source]

        Performs the ROT13 decryption on a given plaintext msg.

        Explanation

        decipher_rot13 is equivalent to encipher_rot13 as both @@ -1084,7 +1084,7 @@

        Cryptography_inverse=False,

        -)[source] +)[source]

        Performs the affine cipher encryption on plaintext msg, and returns the ciphertext.

        @@ -1154,7 +1154,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_affine(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.decipher_affine(msg, key, symbols=None)[source]

        Return the deciphered text that was made from the mapping, \(x \rightarrow ax+b\) (mod \(N\)), where N is the number of characters in the alphabet. Deciphering is done by @@ -1178,7 +1178,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_atbash(msg, symbols=None)[source]
        +sympy.crypto.crypto.encipher_atbash(msg, symbols=None)[source]

        Enciphers a given msg into its Atbash ciphertext and returns it.

        Explanation

        Atbash is a substitution cipher originally used to encrypt the Hebrew @@ -1194,7 +1194,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_atbash(msg, symbols=None)[source]
        +sympy.crypto.crypto.decipher_atbash(msg, symbols=None)[source]

        Deciphers a given msg using Atbash cipher and returns it.

        Explanation

        decipher_atbash is functionally equivalent to encipher_atbash. @@ -1228,7 +1228,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_substitution(msg, old, new=None)[source]
        +sympy.crypto.crypto.encipher_substitution(msg, old, new=None)[source]

        Returns the ciphertext obtained by replacing each character that appears in old with the corresponding character in new. If old is a mapping, then new is ignored and the replacements @@ -1283,7 +1283,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_vigenere(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.encipher_vigenere(msg, key, symbols=None)[source]

        Performs the Vigenere cipher encryption on plaintext msg, and returns the ciphertext.

        Examples

        @@ -1440,7 +1440,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_vigenere(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.decipher_vigenere(msg, key, symbols=None)[source]

        Decode using the Vigenere cipher.

        Examples

        >>> from sympy.crypto.crypto import decipher_vigenere
        @@ -1454,7 +1454,7 @@ 

        Cryptography
        -sympy.crypto.crypto.encipher_hill(msg, key, symbols=None, pad='Q')[source]
        +sympy.crypto.crypto.encipher_hill(msg, key, symbols=None, pad='Q')[source]

        Return the Hill cipher encryption of msg.

        Parameters:
        @@ -1539,7 +1539,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_hill(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.decipher_hill(msg, key, symbols=None)[source]

        Deciphering is the same as enciphering but using the inverse of the key matrix.

        Examples

        @@ -1590,7 +1590,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_bifid(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.encipher_bifid(msg, key, symbols=None)[source]

        Performs the Bifid cipher encryption on plaintext msg, and returns the ciphertext.

        This is the version of the Bifid cipher that uses an \(n \times n\) @@ -1635,7 +1635,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_bifid(msg, key, symbols=None)[source]
        +sympy.crypto.crypto.decipher_bifid(msg, key, symbols=None)[source]

        Performs the Bifid cipher decryption on ciphertext msg, and returns the plaintext.

        This is the version of the Bifid cipher that uses the \(n \times n\) @@ -1714,7 +1714,7 @@

        Cryptography
        -sympy.crypto.crypto.bifid5_square(key=None)[source]
        +sympy.crypto.crypto.bifid5_square(key=None)[source]

        5x5 Polybius square.

        Produce the Polybius square for the \(5 \times 5\) Bifid cipher.

        Examples

        @@ -1732,7 +1732,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_bifid5(msg, key)[source]
        +sympy.crypto.crypto.encipher_bifid5(msg, key)[source]

        Performs the Bifid cipher encryption on plaintext msg, and returns the ciphertext.

        @@ -1835,7 +1835,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_bifid5(msg, key)[source]
        +sympy.crypto.crypto.decipher_bifid5(msg, key)[source]

        Return the Bifid cipher decryption of msg.

        Parameters:
        @@ -1877,7 +1877,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_bifid6(msg, key)[source]
        +sympy.crypto.crypto.encipher_bifid6(msg, key)[source]

        Performs the Bifid cipher encryption on plaintext msg, and returns the ciphertext.

        This is the version of the Bifid cipher that uses the \(6 \times 6\) @@ -1910,7 +1910,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_bifid6(msg, key)[source]
        +sympy.crypto.crypto.decipher_bifid6(msg, key)[source]

        Performs the Bifid cipher decryption on ciphertext msg, and returns the plaintext.

        This is the version of the Bifid cipher that uses the \(6 \times 6\) @@ -1949,7 +1949,7 @@

        Cryptography
        -sympy.crypto.crypto.bifid6_square(key=None)[source]
        +sympy.crypto.crypto.bifid6_square(key=None)[source]

        6x6 Polybius square.

        Produces the Polybius square for the \(6 \times 6\) Bifid cipher. Assumes alphabet of symbols is “A”, …, “Z”, “0”, …, “9”.

        @@ -1970,7 +1970,7 @@

        Cryptography
        -sympy.crypto.crypto.rsa_public_key(*args, **kwargs)[source]
        +sympy.crypto.crypto.rsa_public_key(*args, **kwargs)[source]

        Return the RSA public key pair, \((n, e)\)

        Parameters:
        @@ -2136,7 +2136,7 @@

        Cryptography
        -sympy.crypto.crypto.rsa_private_key(*args, **kwargs)[source]
        +sympy.crypto.crypto.rsa_private_key(*args, **kwargs)[source]

        Return the RSA private key pair, \((n, d)\)

        Parameters:
        @@ -2262,7 +2262,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_rsa(i, key, factors=None)[source]
        +sympy.crypto.crypto.encipher_rsa(i, key, factors=None)[source]

        Encrypt the plaintext with RSA.

        Parameters:
        @@ -2327,7 +2327,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_rsa(i, key, factors=None)[source]
        +sympy.crypto.crypto.decipher_rsa(i, key, factors=None)[source]

        Decrypt the ciphertext with RSA.

        Parameters:
        @@ -2422,7 +2422,7 @@

        Cryptography
        -sympy.crypto.crypto.kid_rsa_public_key(a, b, A, B)[source]
        +sympy.crypto.crypto.kid_rsa_public_key(a, b, A, B)[source]

        Kid RSA is a version of RSA useful to teach grade school children since it does not involve exponentiation.

        Explanation

        @@ -2450,7 +2450,7 @@

        Cryptography
        -sympy.crypto.crypto.kid_rsa_private_key(a, b, A, B)[source]
        +sympy.crypto.crypto.kid_rsa_private_key(a, b, A, B)[source]

        Compute \(M = a b - 1\), \(e = A M + a\), \(d = B M + b\), \(n = (e d - 1) / M\). The private key is \(d\), which Bob keeps secret.

        @@ -2465,7 +2465,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_kid_rsa(msg, key)[source]
        +sympy.crypto.crypto.encipher_kid_rsa(msg, key)[source]

        Here msg is the plaintext and key is the public key.

        Examples

        >>> from sympy.crypto.crypto import (
        @@ -2481,7 +2481,7 @@ 

        Cryptography
        -sympy.crypto.crypto.decipher_kid_rsa(msg, key)[source]
        +sympy.crypto.crypto.decipher_kid_rsa(msg, key)[source]

        Here msg is the plaintext and key is the private key.

        Examples

        >>> from sympy.crypto.crypto import (
        @@ -2501,7 +2501,7 @@ 

        Cryptography
        -sympy.crypto.crypto.encode_morse(msg, sep='|', mapping=None)[source]
        +sympy.crypto.crypto.encode_morse(msg, sep='|', mapping=None)[source]

        Encodes a plaintext into popular Morse Code with letters separated by sep and words by a double sep.

        Examples

        @@ -2522,7 +2522,7 @@

        Cryptography
        -sympy.crypto.crypto.decode_morse(msg, sep='|', mapping=None)[source]
        +sympy.crypto.crypto.decode_morse(msg, sep='|', mapping=None)[source]

        Decodes a Morse Code with letters separated by sep (default is ‘|’) and words by \(word_sep\) (default is ‘||) into plaintext.

        @@ -2544,7 +2544,7 @@

        Cryptography
        -sympy.crypto.crypto.lfsr_sequence(key, fill, n)[source]
        +sympy.crypto.crypto.lfsr_sequence(key, fill, n)[source]

        This function creates an LFSR sequence.

        Parameters:
        @@ -2633,7 +2633,7 @@

        Cryptography
        -sympy.crypto.crypto.lfsr_autocorrelation(L, P, k)[source]
        +sympy.crypto.crypto.lfsr_autocorrelation(L, P, k)[source]

        This function computes the LFSR autocorrelation function.

        Parameters:
        @@ -2676,7 +2676,7 @@

        Cryptography
        -sympy.crypto.crypto.lfsr_connection_polynomial(s)[source]
        +sympy.crypto.crypto.lfsr_connection_polynomial(s)[source]

        This function computes the LFSR connection polynomial.

        Parameters:
        @@ -2736,7 +2736,7 @@

        Cryptography
        -sympy.crypto.crypto.elgamal_public_key(key)[source]
        +sympy.crypto.crypto.elgamal_public_key(key)[source]

        Return three number tuple as public key.

        Parameters:
        @@ -2763,7 +2763,7 @@

        Cryptography
        -sympy.crypto.crypto.elgamal_private_key(digit=10, seed=None)[source]
        +sympy.crypto.crypto.elgamal_private_key(digit=10, seed=None)[source]

        Return three number tuple as private key.

        Parameters:
        @@ -2805,7 +2805,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_elgamal(i, key, seed=None)[source]
        +sympy.crypto.crypto.encipher_elgamal(i, key, seed=None)[source]

        Encrypt message with public key.

        Parameters:
        @@ -2851,7 +2851,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_elgamal(msg, key)[source]
        +sympy.crypto.crypto.decipher_elgamal(msg, key)[source]

        Decrypt message with private key.

        \(msg = (c_{1}, c_{2})\)

        \(key = (p, r, d)\)

        @@ -2879,7 +2879,7 @@

        Cryptography
        -sympy.crypto.crypto.dh_public_key(key)[source]
        +sympy.crypto.crypto.dh_public_key(key)[source]

        Return three number tuple as public key.

        This is the tuple that Alice sends to Bob.

        @@ -2911,7 +2911,7 @@

        Cryptography
        -sympy.crypto.crypto.dh_private_key(digit=10, seed=None)[source]
        +sympy.crypto.crypto.dh_private_key(digit=10, seed=None)[source]

        Return three integer tuple as private key.

        Parameters:
        @@ -2967,7 +2967,7 @@

        Cryptography
        -sympy.crypto.crypto.dh_shared_key(key, b)[source]
        +sympy.crypto.crypto.dh_shared_key(key, b)[source]

        Return an integer that is the shared key.

        This is what Bob and Alice can both calculate using the public keys they received from each other and their private keys.

        @@ -3004,7 +3004,7 @@

        Cryptography
        -sympy.crypto.crypto.gm_public_key(p, q, a=None, seed=None)[source]
        +sympy.crypto.crypto.gm_public_key(p, q, a=None, seed=None)[source]

        Compute public keys for p and q. Note that in Goldwasser-Micali Encryption, public keys are randomly selected.

        @@ -3028,7 +3028,7 @@

        Cryptography
        -sympy.crypto.crypto.gm_private_key(p, q, a=None)[source]
        +sympy.crypto.crypto.gm_private_key(p, q, a=None)[source]

        Check if p and q can be used as private keys for the Goldwasser-Micali encryption. The method works roughly as follows.

        @@ -3088,7 +3088,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_gm(i, key, seed=None)[source]
        +sympy.crypto.crypto.encipher_gm(i, key, seed=None)[source]

        Encrypt integer ‘i’ using public_key ‘key’ Note that gm uses random encryption.

        @@ -3113,7 +3113,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_gm(message, key)[source]
        +sympy.crypto.crypto.decipher_gm(message, key)[source]

        Decrypt message ‘message’ using public_key ‘key’.

        Parameters:
        @@ -3137,7 +3137,7 @@

        Cryptography
        -sympy.crypto.crypto.encipher_railfence(message, rails)[source]
        +sympy.crypto.crypto.encipher_railfence(message, rails)[source]

        Performs Railfence Encryption on plaintext and returns ciphertext

        Parameters:
        @@ -3166,7 +3166,7 @@

        Cryptography
        -sympy.crypto.crypto.decipher_railfence(ciphertext, rails)[source]
        +sympy.crypto.crypto.decipher_railfence(ciphertext, rails)[source]

        Decrypt the message using the given rails

        Parameters:
        diff --git a/dev/modules/diffgeom.html b/dev/modules/diffgeom.html index 075d3b76158..ac82352e923 100644 --- a/dev/modules/diffgeom.html +++ b/dev/modules/diffgeom.html @@ -810,7 +810,7 @@

        Introduction

        -class sympy.diffgeom.Manifold(name, dim, **kwargs)[source]
        +class sympy.diffgeom.Manifold(name, dim, **kwargs)[source]

        A mathematical manifold.

        Parameters:
        @@ -849,7 +849,7 @@

        Base Class Reference
        -class sympy.diffgeom.Patch(name, manifold, **kwargs)[source]
        +class sympy.diffgeom.Patch(name, manifold, **kwargs)[source]

        A patch on a manifold.

        Parameters:
        @@ -903,7 +903,7 @@

        Base Class Reference**kwargs,

        -)[source] +)[source]

        A coordinate system defined on the patch.

        Parameters:
        @@ -1012,7 +1012,7 @@

        Base Class Reference
        -base_oneform(coord_index)[source]
        +base_oneform(coord_index)[source]

        Return a basis 1-form field. The basis one-form field for this coordinate system. It is also an operator on vector fields.

        @@ -1020,27 +1020,27 @@

        Base Class Reference
        -base_oneforms()[source]
        +base_oneforms()[source]

        Returns a list of all base oneforms. For more details see the base_oneform method of this class.

        -base_scalar(coord_index)[source]
        +base_scalar(coord_index)[source]

        Return BaseScalarField that takes a point and returns one of the coordinates.

        -base_scalars()[source]
        +base_scalars()[source]

        Returns a list of all coordinate functions. For more details see the base_scalar method of this class.

        -base_vector(coord_index)[source]
        +base_vector(coord_index)[source]

        Return a basis vector field. The basis vector field for this coordinate system. It is also an operator on scalar fields.

        @@ -1048,20 +1048,20 @@

        Base Class Reference
        -base_vectors()[source]
        +base_vectors()[source]

        Returns a list of all base vectors. For more details see the base_vector method of this class.

        -coord_function(coord_index)[source]
        +coord_function(coord_index)[source]

        Return BaseScalarField that takes a point and returns one of the coordinates.

        -coord_functions()[source]
        +coord_functions()[source]

        Returns a list of all coordinate functions. For more details see the base_scalar method of this class.

        @@ -1075,13 +1075,13 @@

        Base Class Referencecoords,

        -)[source] +)[source]

        Transform coords to coord system to_sys.

        -jacobian(sys, coordinates=None)[source]
        +jacobian(sys, coordinates=None)[source]

        Return the jacobian matrix of a transformation on given coordinates. If coordinates are not given, coordinate symbols of self are used.

        @@ -1116,7 +1116,7 @@

        Base Class Referencecoordinates=None,

        -)[source] +)[source]

        Return the jacobian determinant of a transformation on given coordinates. If coordinates are not given, coordinate symbols of self are used.

        @@ -1141,7 +1141,7 @@

        Base Class Reference
        -jacobian_matrix(sys, coordinates=None)[source]
        +jacobian_matrix(sys, coordinates=None)[source]

        Return the jacobian matrix of a transformation on given coordinates. If coordinates are not given, coordinate symbols of self are used.

        @@ -1169,19 +1169,19 @@

        Base Class Reference
        -point(coords)[source]
        +point(coords)[source]

        Create a Point with coordinates given in this coord system.

        -point_to_coords(point)[source]
        +point_to_coords(point)[source]

        Calculate the coordinates of a point in this coord system.

        -transform(sys, coordinates=None)[source]
        +transform(sys, coordinates=None)[source]

        Return the result of coordinate transformation from self to sys. If coordinates are not given, coordinate symbols of self are used.

        @@ -1209,7 +1209,7 @@

        Base Class Reference
        -transformation(sys)[source]
        +transformation(sys)[source]

        Return coordinate transformation function from self to sys.

        Parameters:
        @@ -1233,7 +1233,7 @@

        Base Class Reference
        -class sympy.diffgeom.CoordinateSymbol(coord_sys, index, **assumptions)[source]
        +class sympy.diffgeom.CoordinateSymbol(coord_sys, index, **assumptions)[source]

        A symbol which denotes an abstract value of i-th coordinate of the coordinate system with given context.

        @@ -1286,7 +1286,7 @@

        Base Class Reference
        -class sympy.diffgeom.Point(coord_sys, coords, **kwargs)[source]
        +class sympy.diffgeom.Point(coord_sys, coords, **kwargs)[source]

        Point defined in a coordinate system.

        Parameters:
        @@ -1332,7 +1332,7 @@

        Base Class Reference
        -coords(sys=None)[source]
        +coords(sys=None)[source]

        Coordinates of the point in given coordinate system. If coordinate system is not passed, it returns the coordinates in the coordinate system in which the poin was defined.

        @@ -1342,7 +1342,7 @@

        Base Class Reference
        -class sympy.diffgeom.BaseScalarField(coord_sys, index, **kwargs)[source]
        +class sympy.diffgeom.BaseScalarField(coord_sys, index, **kwargs)[source]

        Base scalar field over a manifold for a given coordinate system.

        Parameters:
        @@ -1392,7 +1392,7 @@

        Base Class Reference
        -class sympy.diffgeom.BaseVectorField(coord_sys, index, **kwargs)[source]
        +class sympy.diffgeom.BaseVectorField(coord_sys, index, **kwargs)[source]

        Base vector field over a manifold for a given coordinate system.

        Parameters:
        @@ -1448,7 +1448,7 @@

        Base Class Reference
        -class sympy.diffgeom.Commutator(v1, v2)[source]
        +class sympy.diffgeom.Commutator(v1, v2)[source]

        Commutator of two vector fields.

        Explanation

        The commutator of two vector fields \(v_1\) and \(v_2\) is defined as the @@ -1482,7 +1482,7 @@

        Base Class Reference
        -class sympy.diffgeom.Differential(form_field)[source]
        +class sympy.diffgeom.Differential(form_field)[source]

        Return the differential (exterior derivative) of a form field.

        Explanation

        The differential of a form (i.e. the exterior derivative) has a complicated @@ -1524,7 +1524,7 @@

        Base Class Reference
        -class sympy.diffgeom.TensorProduct(*args)[source]
        +class sympy.diffgeom.TensorProduct(*args)[source]

        Tensor product of forms.

        Explanation

        The tensor product permits the creation of multilinear functionals (i.e. @@ -1578,7 +1578,7 @@

        Base Class Reference
        -class sympy.diffgeom.WedgeProduct(*args)[source]
        +class sympy.diffgeom.WedgeProduct(*args)[source]

        Wedge product of forms.

        Explanation

        In the context of integration only completely antisymmetric forms make @@ -1613,7 +1613,7 @@

        Base Class Reference
        -class sympy.diffgeom.LieDerivative(v_field, expr)[source]
        +class sympy.diffgeom.LieDerivative(v_field, expr)[source]

        Lie derivative with respect to a vector field.

        Explanation

        The transport operator that defines the Lie derivative is the pushforward of @@ -1665,7 +1665,7 @@

        Base Class Referencechristoffel,

        -)[source] +)[source]

        Covariant derivative operator with respect to a base vector.

        Examples

        >>> from sympy.diffgeom.rn import R2_r
        @@ -1693,7 +1693,7 @@ 

        Base Class Reference
        -class sympy.diffgeom.CovarDerivativeOp(wrt, christoffel)[source]
        +class sympy.diffgeom.CovarDerivativeOp(wrt, christoffel)[source]

        Covariant derivative operator.

        Examples

        >>> from sympy.diffgeom.rn import R2_r
        @@ -1730,7 +1730,7 @@ 

        Base Class Referencecoeffs=False,

        -)[source] +)[source]

        Return the series expansion for an integral curve of the field.

        Parameters:
        @@ -1839,7 +1839,7 @@

        Base Class Referencecoord_sys=None,

        -)[source] +)[source]

        Return the differential equation for an integral curve of the field.

        Parameters:
        @@ -1911,7 +1911,7 @@

        Base Class Reference
        -sympy.diffgeom.vectors_in_basis(expr, to_sys)[source]
        +sympy.diffgeom.vectors_in_basis(expr, to_sys)[source]

        Transform all base vectors in base vectors of a specified coord basis. While the new base vectors are in the new coordinate system basis, any coefficients are kept in the old system.

        @@ -1930,7 +1930,7 @@

        Base Class Reference
        -sympy.diffgeom.twoform_to_matrix(expr)[source]
        +sympy.diffgeom.twoform_to_matrix(expr)[source]

        Return the matrix representing the twoform.

        For the twoform \(w\) return the matrix \(M\) such that \(M[i,j]=w(e_i, e_j)\), where \(e_i\) is the i-th base vector field for the coordinate system in @@ -1959,7 +1959,7 @@

        Base Class Reference
        -sympy.diffgeom.metric_to_Christoffel_1st(expr)[source]
        +sympy.diffgeom.metric_to_Christoffel_1st(expr)[source]

        Return the nested list of Christoffel symbols for the given metric. This returns the Christoffel symbol of first kind that represents the Levi-Civita connection for the given metric.

        @@ -1979,7 +1979,7 @@

        Base Class Reference
        -sympy.diffgeom.metric_to_Christoffel_2nd(expr)[source]
        +sympy.diffgeom.metric_to_Christoffel_2nd(expr)[source]

        Return the nested list of Christoffel symbols for the given metric. This returns the Christoffel symbol of second kind that represents the Levi-Civita connection for the given metric.

        @@ -1999,7 +1999,7 @@

        Base Class Reference
        -sympy.diffgeom.metric_to_Riemann_components(expr)[source]
        +sympy.diffgeom.metric_to_Riemann_components(expr)[source]

        Return the components of the Riemann tensor expressed in a given basis.

        Given a metric it calculates the components of the Riemann tensor in the canonical basis of the coordinate system in which the metric expression is @@ -2027,7 +2027,7 @@

        Base Class Reference
        -sympy.diffgeom.metric_to_Ricci_components(expr)[source]
        +sympy.diffgeom.metric_to_Ricci_components(expr)[source]

        Return the components of the Ricci tensor expressed in a given basis.

        Given a metric it calculates the components of the Ricci tensor in the canonical basis of the coordinate system in which the metric expression is diff --git a/dev/modules/discrete.html b/dev/modules/discrete.html index be84cfd1484..645ec11ce28 100644 --- a/dev/modules/discrete.html +++ b/dev/modules/discrete.html @@ -824,7 +824,7 @@

        Discrete

        Fast Fourier Transform

        -sympy.discrete.transforms.fft(seq, dps=None)[source]
        +sympy.discrete.transforms.fft(seq, dps=None)[source]

        Performs the Discrete Fourier Transform (DFT) in the complex domain.

        The sequence is automatically padded to the right with zeros, as the radix-2 FFT requires the number of sample points to be a power of 2.

        @@ -879,7 +879,7 @@

        Fast Fourier Transform
        -sympy.discrete.transforms.ifft(seq, dps=None)[source]
        +sympy.discrete.transforms.ifft(seq, dps=None)[source]

        Performs the Discrete Fourier Transform (DFT) in the complex domain.

        The sequence is automatically padded to the right with zeros, as the radix-2 FFT requires the number of sample points to be a power of 2.

        @@ -937,7 +937,7 @@

        Fast Fourier TransformNumber Theoretic Transform

        -sympy.discrete.transforms.ntt(seq, prime)[source]
        +sympy.discrete.transforms.ntt(seq, prime)[source]

        Performs the Number Theoretic Transform (NTT), which specializes the Discrete Fourier Transform (DFT) over quotient ring \(Z/pZ\) for prime \(p\) instead of complex numbers \(C\).

        @@ -987,7 +987,7 @@

        Number Theoretic Transform
        -sympy.discrete.transforms.intt(seq, prime)[source]
        +sympy.discrete.transforms.intt(seq, prime)[source]

        Performs the Number Theoretic Transform (NTT), which specializes the Discrete Fourier Transform (DFT) over quotient ring \(Z/pZ\) for prime \(p\) instead of complex numbers \(C\).

        @@ -1040,7 +1040,7 @@

        Number Theoretic Transform

        -sympy.discrete.transforms.fwht(seq)[source]
        +sympy.discrete.transforms.fwht(seq)[source]

        Performs the Walsh Hadamard Transform (WHT), and uses Hadamard ordering for the sequence.

        The sequence is automatically padded to the right with zeros, as the @@ -1082,7 +1082,7 @@

        Fast Walsh Hadamard Transform
        -sympy.discrete.transforms.ifwht(seq)[source]
        +sympy.discrete.transforms.ifwht(seq)[source]

        Performs the Walsh Hadamard Transform (WHT), and uses Hadamard ordering for the sequence.

        The sequence is automatically padded to the right with zeros, as the @@ -1127,7 +1127,7 @@

        Fast Walsh Hadamard Transform

        -sympy.discrete.transforms.mobius_transform(seq, subset=True)[source]
        +sympy.discrete.transforms.mobius_transform(seq, subset=True)[source]

        Performs the Mobius Transform for subset lattice with indices of sequence as bitmasks.

        The indices of each argument, considered as bit strings, correspond @@ -1195,7 +1195,7 @@

        Möbius Transform
        -sympy.discrete.transforms.inverse_mobius_transform(seq, subset=True)[source]
        +sympy.discrete.transforms.inverse_mobius_transform(seq, subset=True)[source]

        Performs the Mobius Transform for subset lattice with indices of sequence as bitmasks.

        The indices of each argument, considered as bit strings, correspond @@ -1286,7 +1286,7 @@

        Convolutionsubset=None,

        -)[source] +)[source]

        Performs convolution by determining the type of desired convolution using hints.

        Exactly one of dps, prime, dyadic, subset arguments @@ -1360,7 +1360,7 @@

        Convolution

        -sympy.discrete.convolutions.convolution_fft(a, b, dps=None)[source]
        +sympy.discrete.convolutions.convolution_fft(a, b, dps=None)[source]

        Performs linear convolution using Fast Fourier Transform.

        Parameters:
        @@ -1405,7 +1405,7 @@

        Convolution using Fast Fourier Transform

        -sympy.discrete.convolutions.convolution_ntt(a, b, prime)[source]
        +sympy.discrete.convolutions.convolution_ntt(a, b, prime)[source]

        Performs linear convolution using Number Theoretic Transform.

        Parameters:
        @@ -1448,7 +1448,7 @@

        Convolution using Number Theoretic Transform

        -sympy.discrete.convolutions.convolution_fwht(a, b)[source]
        +sympy.discrete.convolutions.convolution_fwht(a, b)[source]

        Performs dyadic (bitwise-XOR) convolution using Fast Walsh Hadamard Transform.

        The convolution is automatically padded to the right with zeros, as the @@ -1499,7 +1499,7 @@

        Convolution using Fast Walsh Hadamard Transform

        -sympy.discrete.convolutions.convolution_subset(a, b)[source]
        +sympy.discrete.convolutions.convolution_subset(a, b)[source]

        Performs Subset Convolution of given sequences.

        The indices of each argument, considered as bit strings, correspond to subsets of a finite set.

        @@ -1546,7 +1546,7 @@

        Subset Convolution

        -sympy.discrete.convolutions.covering_product(a, b)[source]
        +sympy.discrete.convolutions.covering_product(a, b)[source]

        Returns the covering product of given sequences.

        The indices of each argument, considered as bit strings, correspond to subsets of a finite set.

        @@ -1595,7 +1595,7 @@

        Covering Product

        -sympy.discrete.convolutions.intersecting_product(a, b)[source]
        +sympy.discrete.convolutions.intersecting_product(a, b)[source]

        Returns the intersecting product of given sequences.

        The indices of each argument, considered as bit strings, correspond to subsets of a finite set.

        diff --git a/dev/modules/functions/combinatorial.html b/dev/modules/functions/combinatorial.html index 58e42496393..5813b38b627 100644 --- a/dev/modules/functions/combinatorial.html +++ b/dev/modules/functions/combinatorial.html @@ -806,7 +806,7 @@
        Documentation Version

        This module implements various combinatorial functions.

        -class sympy.functions.combinatorial.numbers.bell(n, k_sym=None, symbols=None)[source]
        +class sympy.functions.combinatorial.numbers.bell(n, k_sym=None, symbols=None)[source]

        Bell numbers / Bell polynomials

        The Bell numbers satisfy \(B_0 = 1\) and

        @@ -880,7 +880,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.bernoulli(n, x=None)[source]
        +class sympy.functions.combinatorial.numbers.bernoulli(n, x=None)[source]

        Bernoulli numbers / Bernoulli polynomials / Bernoulli function

        The Bernoulli numbers are a sequence of rational numbers defined by \(B_0 = 1\) and the recursive relation (\(n > 0\)):

        @@ -998,7 +998,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.factorials.binomial(n, k)[source]
        +class sympy.functions.combinatorial.factorials.binomial(n, k)[source]

        Implementation of the binomial coefficient. It can be defined in two ways depending on its desired interpretation:

        @@ -1107,7 +1107,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.catalan(n)[source]
        +class sympy.functions.combinatorial.numbers.catalan(n)[source]

        Catalan numbers

        The \(n^{th}\) catalan number is given by:

        @@ -1202,7 +1202,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.euler(n, x=None)[source]
        +class sympy.functions.combinatorial.numbers.euler(n, x=None)[source]

        Euler numbers / Euler polynomials / Euler function

        The Euler numbers are given by:

        @@ -1299,7 +1299,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.factorials.factorial(n)[source]
        +class sympy.functions.combinatorial.factorials.factorial(n)[source]

        Implementation of factorial function over nonnegative integers. By convention (consistent with the gamma function and the binomial coefficients), factorial of a negative integer is complex infinity.

        @@ -1351,7 +1351,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.factorials.subfactorial(arg)[source]
        +class sympy.functions.combinatorial.factorials.subfactorial(arg)[source]

        The subfactorial counts the derangements of \(n\) items and is defined for non-negative integers as:

        @@ -1399,7 +1399,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.factorials.factorial2(arg)[source]
        +class sympy.functions.combinatorial.factorials.factorial2(arg)[source]

        The double factorial \(n!!\), not to be confused with \((n!)!\)

        The double factorial is defined for nonnegative integers and for odd negative integers as:

        @@ -1440,7 +1440,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.factorials.FallingFactorial(x, k)[source]
        +class sympy.functions.combinatorial.factorials.FallingFactorial(x, k)[source]

        Falling factorial (related to rising factorial) is a double valued function arising in concrete mathematics, hypergeometric functions and series expansions. It is defined by

        @@ -1510,7 +1510,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.fibonacci(n, sym=None)[source]
        +class sympy.functions.combinatorial.numbers.fibonacci(n, sym=None)[source]

        Fibonacci numbers / Fibonacci polynomials

        The Fibonacci numbers are the integer sequence defined by the initial terms \(F_0 = 0\), \(F_1 = 1\) and the two-term recurrence @@ -1557,7 +1557,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.tribonacci(n, sym=None)[source]
        +class sympy.functions.combinatorial.numbers.tribonacci(n, sym=None)[source]

        Tribonacci numbers / Tribonacci polynomials

        The Tribonacci numbers are the integer sequence defined by the initial terms \(T_0 = 0\), \(T_1 = 1\), \(T_2 = 1\) and the three-term @@ -1602,7 +1602,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.harmonic(n, m=None)[source]
        +class sympy.functions.combinatorial.numbers.harmonic(n, m=None)[source]

        Harmonic numbers

        The nth harmonic number is given by \(\operatorname{H}_{n} = 1 + \frac{1}{2} + \frac{1}{3} + \ldots + \frac{1}{n}\).

        @@ -1753,7 +1753,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.lucas(n)[source]
        +class sympy.functions.combinatorial.numbers.lucas(n)[source]

        Lucas numbers

        Lucas numbers satisfy a recurrence relation similar to that of the Fibonacci sequence, in which each term is the sum of the @@ -1789,7 +1789,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.genocchi(n, x=None)[source]
        +class sympy.functions.combinatorial.numbers.genocchi(n, x=None)[source]

        Genocchi numbers / Genocchi polynomials / Genocchi function

        The Genocchi numbers are a sequence of integers \(G_n\) that satisfy the relation:

        @@ -1848,7 +1848,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.andre(n)[source]
        +class sympy.functions.combinatorial.numbers.andre(n)[source]

        Andre numbers / Andre function

        The Andre number \(\mathcal{A}_n\) is Luschny’s name for half the number of alternating permutations on \(n\) elements, where a permutation is alternating @@ -1917,7 +1917,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.partition(n)[source]
        +class sympy.functions.combinatorial.numbers.partition(n)[source]

        Partition numbers

        The Partition numbers are a sequence of integers \(p_n\) that represent the number of distinct ways of representing \(n\) as a sum of natural numbers @@ -1954,7 +1954,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.divisor_sigma(n, k=1)[source]
        +class sympy.functions.combinatorial.numbers.divisor_sigma(n, k=1)[source]

        Calculate the divisor function \(\sigma_k(n)\) for positive integer n

        divisor_sigma(n, k) is equal to sum([x**k for x in divisors(n)])

        If n’s prime factorization is:

        @@ -1995,7 +1995,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.udivisor_sigma(n, k=1)[source]
        +class sympy.functions.combinatorial.numbers.udivisor_sigma(n, k=1)[source]

        Calculate the unitary divisor function \(\sigma_k^*(n)\) for positive integer n

        udivisor_sigma(n, k) is equal to sum([x**k for x in udivisors(n)])

        If n’s prime factorization is:

        @@ -2046,7 +2046,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.legendre_symbol(a, p)[source]
        +class sympy.functions.combinatorial.numbers.legendre_symbol(a, p)[source]

        Returns the Legendre symbol \((a / p)\).

        For an integer a and an odd prime p, the Legendre symbol is defined as

        @@ -2074,7 +2074,7 @@
        Documentation Version
        -class sympy.functions.combinatorial.numbers.jacobi_symbol(m, n)[source]
        +class sympy.functions.combinatorial.numbers.jacobi_symbol(m, n)[source]

        Returns the Jacobi symbol \((m / n)\).

        For any integer m and any positive odd integer n the Jacobi symbol is defined as the product of the Legendre symbols corresponding to the @@ -2123,7 +2123,7 @@

        Documentation Version
        -class sympy.functions.combinatorial.numbers.kronecker_symbol(a, n)[source]
        +class sympy.functions.combinatorial.numbers.kronecker_symbol(a, n)[source]

        Returns the Kronecker symbol \((a / n)\).

        Examples

        >>> from sympy.functions.combinatorial.numbers import kronecker_symbol
        @@ -2148,7 +2148,7 @@ 
        Documentation Version
        -class sympy.functions.combinatorial.numbers.mobius(n)[source]
        +class sympy.functions.combinatorial.numbers.mobius(n)[source]

        Mobius function maps natural number to {-1, 0, 1}

        It is defined as follows:
          @@ -2203,7 +2203,7 @@
          Documentation Version
          -class sympy.functions.combinatorial.numbers.primenu(n)[source]
          +class sympy.functions.combinatorial.numbers.primenu(n)[source]

          Calculate the number of distinct prime factors for a positive integer n.

          If n’s prime factorization is:

          @@ -2242,7 +2242,7 @@
          Documentation Version
          -class sympy.functions.combinatorial.numbers.primeomega(n)[source]
          +class sympy.functions.combinatorial.numbers.primeomega(n)[source]

          Calculate the number of prime factors counting multiplicities for a positive integer n.

          If n’s prime factorization is:

          @@ -2282,7 +2282,7 @@
          Documentation Version
          -class sympy.functions.combinatorial.numbers.totient(n)[source]
          +class sympy.functions.combinatorial.numbers.totient(n)[source]

          Calculate the Euler totient function phi(n)

          totient(n) or \(\phi(n)\) is the number of positive integers \(\leq\) n that are relatively prime to n.

          @@ -2319,7 +2319,7 @@
          Documentation Version
          -class sympy.functions.combinatorial.numbers.reduced_totient(n)[source]
          +class sympy.functions.combinatorial.numbers.reduced_totient(n)[source]

          Calculate the Carmichael reduced totient function lambda(n)

          reduced_totient(n) or \(\lambda(n)\) is the smallest m > 0 such that \(k^m \equiv 1 \mod n\) for all k relatively prime to n.

          @@ -2356,7 +2356,7 @@
          Documentation Version
          -class sympy.functions.combinatorial.numbers.primepi(n)[source]
          +class sympy.functions.combinatorial.numbers.primepi(n)[source]

          Represents the prime counting function pi(n) = the number of prime numbers less than or equal to n.

          Examples

          @@ -2399,12 +2399,12 @@
          Documentation Version
          -class sympy.functions.combinatorial.factorials.MultiFactorial(*args)[source]
          +class sympy.functions.combinatorial.factorials.MultiFactorial(*args)[source]
          -class sympy.functions.combinatorial.factorials.RisingFactorial(x, k)[source]
          +class sympy.functions.combinatorial.factorials.RisingFactorial(x, k)[source]

          Rising factorial (also called Pochhammer symbol [R268]) is a double valued function arising in concrete mathematics, hypergeometric functions and series expansions. It is defined by:

          @@ -2471,7 +2471,7 @@
          Documentation Version
          -sympy.functions.combinatorial.numbers.stirling(n, k, d=None, kind=2, signed=False)[source]
          +sympy.functions.combinatorial.numbers.stirling(n, k, d=None, kind=2, signed=False)[source]

          Return Stirling number \(S(n, k)\) of the first or second (default) kind.

          The sum of all Stirling numbers of the second kind for \(k = 1\) through \(n\) is bell(n). The recurrence relationship for these numbers @@ -2579,7 +2579,7 @@

          Enumeration
          -sympy.functions.combinatorial.numbers.nC(n, k=None, replacement=False)[source]
          +sympy.functions.combinatorial.numbers.nC(n, k=None, replacement=False)[source]

          Return the number of combinations of n items taken k at a time.

          Possible values for n:

          @@ -2645,7 +2645,7 @@

          Enumeration
          -sympy.functions.combinatorial.numbers.nP(n, k=None, replacement=False)[source]
          +sympy.functions.combinatorial.numbers.nP(n, k=None, replacement=False)[source]

          Return the number of permutations of n items taken k at a time.

          Possible values for n:

          @@ -2703,7 +2703,7 @@

          Enumeration
          -sympy.functions.combinatorial.numbers.nT(n, k=None)[source]
          +sympy.functions.combinatorial.numbers.nT(n, k=None)[source]

          Return the number of k-sized partitions of n items.

          Possible values for n:

          diff --git a/dev/modules/functions/elementary.html b/dev/modules/functions/elementary.html index a18e9ef9920..01de8cb2952 100644 --- a/dev/modules/functions/elementary.html +++ b/dev/modules/functions/elementary.html @@ -809,7 +809,7 @@
          Documentation Version

          Complex Functions

          -class sympy.functions.elementary.complexes.re(arg)[source]
          +class sympy.functions.elementary.complexes.re(arg)[source]

          Returns real part of expression. This function performs only elementary analysis and so it will fail to decompose properly more complicated expressions. If completely simplified result @@ -850,7 +850,7 @@

          Complex Functions
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Returns the real number with a zero imaginary part.

          @@ -858,7 +858,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.im(arg)[source]
          +class sympy.functions.elementary.complexes.im(arg)[source]

          Returns imaginary part of expression. This function performs only elementary analysis and so it will fail to decompose properly more complicated expressions. If completely simplified result is needed then @@ -899,7 +899,7 @@

          Complex Functions
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Return the imaginary part with a zero real part.

          @@ -907,7 +907,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.sign(arg)[source]
          +class sympy.functions.elementary.complexes.sign(arg)[source]

          Returns the complex sign of an expression:

          Parameters:
          @@ -965,7 +965,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.Abs(arg)[source]
          +class sympy.functions.elementary.complexes.Abs(arg)[source]

          Return the absolute value of the argument.

          Parameters:
          @@ -1018,7 +1018,7 @@

          Complex Functions
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Get the first derivative of the argument to Abs().

          @@ -1026,7 +1026,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.arg(arg)[source]
          +class sympy.functions.elementary.complexes.arg(arg)[source]

          Returns the argument (in radians) of a complex number. The argument is evaluated in consistent convention with atan2 where the branch-cut is taken along the negative real axis and arg(z) is in the interval @@ -1075,7 +1075,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.conjugate(arg)[source]
          +class sympy.functions.elementary.complexes.conjugate(arg)[source]

          Returns the complex conjugate [R276] of an argument. In mathematics, the complex conjugate of a complex number is given by changing the sign of the imaginary part.

          @@ -1123,7 +1123,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.polar_lift(arg)[source]
          +class sympy.functions.elementary.complexes.polar_lift(arg)[source]

          Lift argument to the Riemann surface of the logarithm, using the standard branch.

          @@ -1162,7 +1162,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.periodic_argument(ar, period)[source]
          +class sympy.functions.elementary.complexes.periodic_argument(ar, period)[source]

          Represent the argument on a quotient of the Riemann surface of the logarithm. That is, given a period \(P\), always return a value in \((-P/2, P/2]\), by using \(\exp(PI) = 1\).

          @@ -1208,7 +1208,7 @@

          Complex Functions
          -class sympy.functions.elementary.complexes.principal_branch(x, period)[source]
          +class sympy.functions.elementary.complexes.principal_branch(x, period)[source]

          Represent a polar number reduced to its principal branch on a quotient of the Riemann surface of the logarithm.

          @@ -1256,7 +1256,7 @@

          Trigonometric

          Trigonometric Functions

          -class sympy.functions.elementary.trigonometric.sin(arg)[source]
          +class sympy.functions.elementary.trigonometric.sin(arg)[source]

          The sine function.

          Returns the sine of x (measured in radians).

          Explanation

          @@ -1308,7 +1308,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.cos(arg)[source]
          +class sympy.functions.elementary.trigonometric.cos(arg)[source]

          The cosine function.

          Returns the cosine of x (measured in radians).

          Explanation

          @@ -1353,7 +1353,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.tan(arg)[source]
          +class sympy.functions.elementary.trigonometric.tan(arg)[source]

          The tangent function.

          Returns the tangent of x (measured in radians).

          Explanation

          @@ -1390,7 +1390,7 @@

          Trigonometric
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1398,7 +1398,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.cot(arg)[source]
          +class sympy.functions.elementary.trigonometric.cot(arg)[source]

          The cotangent function.

          Returns the cotangent of x (measured in radians).

          Explanation

          @@ -1435,7 +1435,7 @@

          Trigonometric
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1443,7 +1443,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.sec(arg)[source]
          +class sympy.functions.elementary.trigonometric.sec(arg)[source]

          The secant function.

          Returns the secant of x (measured in radians).

          Explanation

          @@ -1480,7 +1480,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.csc(arg)[source]
          +class sympy.functions.elementary.trigonometric.csc(arg)[source]

          The cosecant function.

          Returns the cosecant of x (measured in radians).

          Explanation

          @@ -1517,7 +1517,7 @@

          Trigonometric
          -class sympy.functions.elementary.trigonometric.sinc(arg)[source]
          +class sympy.functions.elementary.trigonometric.sinc(arg)[source]

          Represents an unnormalized sinc function:

          @@ -1582,7 +1582,7 @@

          Trigonometric

          -class sympy.functions.elementary.trigonometric.asin(arg)[source]
          +class sympy.functions.elementary.trigonometric.asin(arg)[source]

          The inverse sine function.

          Returns the arcsine of x in radians.

          Explanation

          @@ -1623,7 +1623,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1631,7 +1631,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.acos(arg)[source]
          +class sympy.functions.elementary.trigonometric.acos(arg)[source]

          The inverse cosine function.

          Explanation

          Returns the arc cosine of x (measured in radians).

          @@ -1672,7 +1672,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1680,7 +1680,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.atan(arg)[source]
          +class sympy.functions.elementary.trigonometric.atan(arg)[source]

          The inverse tangent function.

          Returns the arc tangent of x (measured in radians).

          Explanation

          @@ -1718,7 +1718,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1726,7 +1726,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.acot(arg)[source]
          +class sympy.functions.elementary.trigonometric.acot(arg)[source]

          The inverse cotangent function.

          Returns the arc cotangent of x (measured in radians).

          Explanation

          @@ -1764,7 +1764,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1772,7 +1772,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.asec(arg)[source]
          +class sympy.functions.elementary.trigonometric.asec(arg)[source]

          The inverse secant function.

          Returns the arc secant of x (measured in radians).

          Explanation

          @@ -1833,7 +1833,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1841,7 +1841,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.acsc(arg)[source]
          +class sympy.functions.elementary.trigonometric.acsc(arg)[source]

          The inverse cosecant function.

          Returns the arc cosecant of x (measured in radians).

          Explanation

          @@ -1883,7 +1883,7 @@

          Trigonometric Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -1891,7 +1891,7 @@

          Trigonometric Inverses
          -class sympy.functions.elementary.trigonometric.atan2(y, x)[source]
          +class sympy.functions.elementary.trigonometric.atan2(y, x)[source]

          The function atan2(y, x) computes \(\operatorname{atan}(y/x)\) taking two arguments \(y\) and \(x\). Signs of both \(y\) and \(x\) are considered to determine the appropriate quadrant of \(\operatorname{atan}(y/x)\). @@ -2002,7 +2002,7 @@

          Hyperbolic

          -class sympy.functions.elementary.hyperbolic.HyperbolicFunction(*args)[source]
          +class sympy.functions.elementary.hyperbolic.HyperbolicFunction(*args)[source]

          Base class for hyperbolic functions.

          See also

          @@ -2012,7 +2012,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.sinh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.sinh(arg)[source]

          sinh(x) is the hyperbolic sine of x.

          The hyperbolic sine function is \(\frac{e^x - e^{-x}}{2}\).

          Examples

          @@ -2028,25 +2028,25 @@

          Hyperbolic Functions
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Returns this function as a complex coordinate.

          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of this function.

          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          -static taylor_term(n, x, *previous_terms)[source]
          +static taylor_term(n, x, *previous_terms)[source]

          Returns the next term in the Taylor series expansion.

          @@ -2054,7 +2054,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.cosh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.cosh(arg)[source]

          cosh(x) is the hyperbolic cosine of x.

          The hyperbolic cosine function is \(\frac{e^x + e^{-x}}{2}\).

          Examples

          @@ -2072,7 +2072,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.tanh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.tanh(arg)[source]

          tanh(x) is the hyperbolic tangent of x.

          The hyperbolic tangent function is \(\frac{\sinh(x)}{\cosh(x)}\).

          Examples

          @@ -2088,7 +2088,7 @@

          Hyperbolic Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2096,7 +2096,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.coth(arg)[source]
          +class sympy.functions.elementary.hyperbolic.coth(arg)[source]

          coth(x) is the hyperbolic cotangent of x.

          The hyperbolic cotangent function is \(\frac{\cosh(x)}{\sinh(x)}\).

          Examples

          @@ -2112,7 +2112,7 @@

          Hyperbolic Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2120,7 +2120,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.sech(arg)[source]
          +class sympy.functions.elementary.hyperbolic.sech(arg)[source]

          sech(x) is the hyperbolic secant of x.

          The hyperbolic secant function is \(\frac{2}{e^x + e^{-x}}\)

          Examples

          @@ -2138,7 +2138,7 @@

          Hyperbolic Functions
          -class sympy.functions.elementary.hyperbolic.csch(arg)[source]
          +class sympy.functions.elementary.hyperbolic.csch(arg)[source]

          csch(x) is the hyperbolic cosecant of x.

          The hyperbolic cosecant function is \(\frac{2}{e^x - e^{-x}}\)

          Examples

          @@ -2154,13 +2154,13 @@

          Hyperbolic Functions
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of this function

          -static taylor_term(n, x, *previous_terms)[source]
          +static taylor_term(n, x, *previous_terms)[source]

          Returns the next term in the Taylor series expansion

          @@ -2171,7 +2171,7 @@

          Hyperbolic FunctionsHyperbolic Inverses

          -class sympy.functions.elementary.hyperbolic.asinh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.asinh(arg)[source]

          asinh(x) is the inverse hyperbolic sine of x.

          The inverse hyperbolic sine function.

          Examples

          @@ -2189,7 +2189,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2197,7 +2197,7 @@

          Hyperbolic Inverses
          -class sympy.functions.elementary.hyperbolic.acosh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.acosh(arg)[source]

          acosh(x) is the inverse hyperbolic cosine of x.

          The inverse hyperbolic cosine function.

          Examples

          @@ -2215,7 +2215,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2223,7 +2223,7 @@

          Hyperbolic Inverses
          -class sympy.functions.elementary.hyperbolic.atanh(arg)[source]
          +class sympy.functions.elementary.hyperbolic.atanh(arg)[source]

          atanh(x) is the inverse hyperbolic tangent of x.

          The inverse hyperbolic tangent function.

          Examples

          @@ -2239,7 +2239,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2247,7 +2247,7 @@

          Hyperbolic Inverses
          -class sympy.functions.elementary.hyperbolic.acoth(arg)[source]
          +class sympy.functions.elementary.hyperbolic.acoth(arg)[source]

          acoth(x) is the inverse hyperbolic cotangent of x.

          The inverse hyperbolic cotangent function.

          Examples

          @@ -2263,7 +2263,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2271,7 +2271,7 @@

          Hyperbolic Inverses
          -class sympy.functions.elementary.hyperbolic.asech(arg)[source]
          +class sympy.functions.elementary.hyperbolic.asech(arg)[source]

          asech(x) is the inverse hyperbolic secant of x.

          The inverse hyperbolic secant function.

          Examples

          @@ -2312,7 +2312,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2320,7 +2320,7 @@

          Hyperbolic Inverses
          -class sympy.functions.elementary.hyperbolic.acsch(arg)[source]
          +class sympy.functions.elementary.hyperbolic.acsch(arg)[source]

          acsch(x) is the inverse hyperbolic cosecant of x.

          The inverse hyperbolic cosecant function.

          Examples

          @@ -2361,7 +2361,7 @@

          Hyperbolic Inverses
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2373,7 +2373,7 @@

          Hyperbolic Inverses

          -class sympy.functions.elementary.integers.ceiling(arg)[source]
          +class sympy.functions.elementary.integers.ceiling(arg)[source]

          Ceiling is a univariate function which returns the smallest integer value not less than its argument. This implementation generalizes ceiling to complex numbers by taking the ceiling of the @@ -2413,7 +2413,7 @@

          Integer Functions
          -class sympy.functions.elementary.integers.floor(arg)[source]
          +class sympy.functions.elementary.integers.floor(arg)[source]

          Floor is a univariate function which returns the largest integer value not greater than its argument. This implementation generalizes floor to complex numbers by taking the floor of the @@ -2453,13 +2453,13 @@

          Integer Functions
          -class sympy.functions.elementary.integers.RoundFunction(arg)[source]
          +class sympy.functions.elementary.integers.RoundFunction(arg)[source]

          Abstract base class for rounding functions.

          -class sympy.functions.elementary.integers.frac(arg)[source]
          +class sympy.functions.elementary.integers.frac(arg)[source]

          Represents the fractional part of x

          For real numbers it is defined [R328] as

          @@ -2516,7 +2516,7 @@

          Integer Functions

          -class sympy.functions.elementary.exponential.exp(arg)[source]
          +class sympy.functions.elementary.exponential.exp(arg)[source]

          The exponential function, \(e^x\).

          Parameters:
          @@ -2540,7 +2540,7 @@

          Exponential
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Returns this function as a 2-tuple representing a complex number.

          Examples

          >>> from sympy import exp, I
          @@ -2569,13 +2569,13 @@ 

          Exponential
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of this function.

          -static taylor_term(n, x, *previous_terms)[source]
          +static taylor_term(n, x, *previous_terms)[source]

          Calculates the next term in the Taylor series expansion.

          @@ -2583,7 +2583,7 @@

          Exponential
          -class sympy.functions.elementary.exponential.LambertW(x, k=None)[source]
          +class sympy.functions.elementary.exponential.LambertW(x, k=None)[source]

          The Lambert W function \(W(z)\) is defined as the inverse function of \(w \exp(w)\) [R330].

          Explanation

          @@ -2616,7 +2616,7 @@

          Exponential
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Return the first derivative of this function.

          @@ -2624,7 +2624,7 @@

          Exponential
          -class sympy.functions.elementary.exponential.log(arg, base=None)[source]
          +class sympy.functions.elementary.exponential.log(arg, base=None)[source]

          The natural logarithm function \(\ln(x)\) or \(\log(x)\).

          Explanation

          Logarithms are taken with the natural base, \(e\). To get @@ -2650,7 +2650,7 @@

          Exponential
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Returns this function as a complex coordinate.

          Examples

          >>> from sympy import I, log
          @@ -2669,19 +2669,19 @@ 

          Exponential
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of the function.

          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns \(e^x\), the inverse function of \(\log(x)\).

          -static taylor_term(n, x, *previous_terms)[source]
          +static taylor_term(n, x, *previous_terms)[source]

          Returns the next term in the Taylor series expansion of \(\log(1+x)\).

          @@ -2689,7 +2689,7 @@

          Exponential
          -class sympy.functions.elementary.exponential.exp_polar(*args)[source]
          +class sympy.functions.elementary.exponential.exp_polar(*args)[source]

          Represent a polar number (see g-function Sphinx documentation).

          Explanation

          exp_polar represents the function @@ -2723,7 +2723,7 @@

          Exponential

          -class sympy.functions.elementary.piecewise.ExprCondPair(expr, cond)[source]
          +class sympy.functions.elementary.piecewise.ExprCondPair(expr, cond)[source]

          Represents an expression, condition pair.

          @@ -2741,7 +2741,7 @@

          Piecewise
          -class sympy.functions.elementary.piecewise.Piecewise(*_args)[source]
          +class sympy.functions.elementary.piecewise.Piecewise(*_args)[source]

          Represents a piecewise function.

          Usage:

          @@ -2803,7 +2803,7 @@

          Piecewise
          -_eval_integral(x, _first=True, **kwargs)[source]
          +_eval_integral(x, _first=True, **kwargs)[source]

          Return the indefinite integral of the Piecewise such that subsequent substitution of x with a value will give the value of the integral (not including @@ -2828,7 +2828,7 @@

          Piecewise
          -as_expr_set_pairs(domain=None)[source]
          +as_expr_set_pairs(domain=None)[source]

          Return tuples for each argument of self that give the expression and the interval in which it is valid which is contained within the given domain. @@ -2855,13 +2855,13 @@

          Piecewise
          -doit(**hints)[source]
          +doit(**hints)[source]

          Evaluate this piecewise function.

          -classmethod eval(*_args)[source]
          +classmethod eval(*_args)[source]

          Either return a modified version of the args or, if no modifications were made, return None.

          Modifications that are made here:

          @@ -2889,7 +2889,7 @@

          Piecewise
          -piecewise_integrate(x, **kwargs)[source]
          +piecewise_integrate(x, **kwargs)[source]

          Return the Piecewise with each expression being replaced with its antiderivative. To obtain a continuous antiderivative, use the integrate() function or method.

          @@ -2936,7 +2936,7 @@

          Piecewisedeep=True,

          -)[source] +)[source]

          Rewrite Piecewise with mutually exclusive conditions.

          Parameters:
          @@ -2997,7 +2997,7 @@

          Piecewise
          -sympy.functions.elementary.piecewise.piecewise_fold(expr, evaluate=True)[source]
          +sympy.functions.elementary.piecewise.piecewise_fold(expr, evaluate=True)[source]

          Takes an expression containing a piecewise function and returns the expression in piecewise form. In addition, any ITE conditions are rewritten in negation normal form and simplified.

          @@ -3024,7 +3024,7 @@

          Piecewise

          -class sympy.functions.elementary.miscellaneous.IdentityFunction[source]
          +class sympy.functions.elementary.miscellaneous.IdentityFunction[source]

          The identity function

          Examples

          >>> from sympy import Id, Symbol
          @@ -3037,7 +3037,7 @@ 

          Miscellaneous
          -class sympy.functions.elementary.miscellaneous.Min(*args)[source]
          +class sympy.functions.elementary.miscellaneous.Min(*args)[source]

          Return, if possible, the minimum value of the list. It is named Min and not min to avoid conflicts with the built-in function min.

          @@ -3071,7 +3071,7 @@

          Miscellaneous
          -class sympy.functions.elementary.miscellaneous.Max(*args)[source]
          +class sympy.functions.elementary.miscellaneous.Max(*args)[source]

          Return, if possible, the maximum value of the list.

          When number of arguments is equal one, then return this argument.

          @@ -3157,7 +3157,7 @@

          Miscellaneous
          -sympy.functions.elementary.miscellaneous.root(arg, n, k=0, evaluate=None)[source]
          +sympy.functions.elementary.miscellaneous.root(arg, n, k=0, evaluate=None)[source]

          Returns the k-th n-th root of arg.

          Parameters:
          @@ -3273,7 +3273,7 @@

          Miscellaneous
          -sympy.functions.elementary.miscellaneous.sqrt(arg, evaluate=None)[source]
          +sympy.functions.elementary.miscellaneous.sqrt(arg, evaluate=None)[source]

          Returns the principal square root.

          Parameters:
          @@ -3368,7 +3368,7 @@

          Miscellaneous
          -sympy.functions.elementary.miscellaneous.cbrt(arg, evaluate=None)[source]
          +sympy.functions.elementary.miscellaneous.cbrt(arg, evaluate=None)[source]

          Returns the principal cube root.

          Parameters:
          @@ -3431,7 +3431,7 @@

          Miscellaneous
          -sympy.functions.elementary.miscellaneous.real_root(arg, n=None, evaluate=None)[source]
          +sympy.functions.elementary.miscellaneous.real_root(arg, n=None, evaluate=None)[source]

          Return the real n’th-root of arg if possible.

          Parameters:
          diff --git a/dev/modules/functions/index.html b/dev/modules/functions/index.html index 531f20aceff..983be6f0ca2 100644 --- a/dev/modules/functions/index.html +++ b/dev/modules/functions/index.html @@ -807,7 +807,7 @@
          Documentation Version
          sympy.core.function.Function.

          -class sympy.core.function.Function(*args)[source]
          +class sympy.core.function.Function(*args)[source]

          Base class for applied mathematical functions.

          It also serves as a constructor for undefined function classes.

          See the Writing Custom Functions guide for details on how to subclass @@ -855,13 +855,13 @@

          Documentation Version
          to create a custom function.

          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of the function.

          -classmethod is_singular(a)[source]
          +classmethod is_singular(a)[source]

          Tests whether the argument is an essential singularity or a branch point, or the functions is non-holomorphic.

          diff --git a/dev/modules/functions/special.html b/dev/modules/functions/special.html index 92d098d7875..fd75cf309ac 100644 --- a/dev/modules/functions/special.html +++ b/dev/modules/functions/special.html @@ -807,7 +807,7 @@
          Documentation Version

          Dirac Delta and Related Discontinuous Functions

          -class sympy.functions.special.delta_functions.DiracDelta(arg, k=0)[source]
          +class sympy.functions.special.delta_functions.DiracDelta(arg, k=0)[source]

          The DiracDelta function and its derivatives.

          Explanation

          DiracDelta is not an ordinary function. It can be rigorously defined either @@ -884,7 +884,7 @@

          Dirac Delta and Related Discontinuous Functions
          -classmethod eval(arg, k=0)[source]
          +classmethod eval(arg, k=0)[source]

          Returns a simplified form or a value of DiracDelta depending on the argument passed by the DiracDelta object.

          @@ -947,7 +947,7 @@

          Dirac Delta and Related Discontinuous Functions
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of a DiracDelta Function.

          Parameters:
          @@ -989,7 +989,7 @@

          Dirac Delta and Related Discontinuous Functions
          -is_simple(x)[source]
          +is_simple(x)[source]

          Tells whether the argument(args[0]) of DiracDelta is a linear expression in x.

          @@ -1026,7 +1026,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.delta_functions.Heaviside(arg, H0=1 / 2)[source]
          +class sympy.functions.special.delta_functions.Heaviside(arg, H0=1 / 2)[source]

          Heaviside step function.

          Explanation

          The Heaviside step function has the following properties:

          @@ -1079,7 +1079,7 @@

          Dirac Delta and Related Discontinuous Functions
          -classmethod eval(arg, H0=1 / 2)[source]
          +classmethod eval(arg, H0=1 / 2)[source]

          Returns a simplified form or a value of Heaviside depending on the argument passed by the Heaviside object.

          @@ -1135,7 +1135,7 @@

          Dirac Delta and Related Discontinuous Functions
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of a Heaviside Function.

          Parameters:
          @@ -1174,7 +1174,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.singularity_functions.SingularityFunction(variable, offset, exponent)[source]
          +class sympy.functions.special.singularity_functions.SingularityFunction(variable, offset, exponent)[source]

          Singularity functions are a class of discontinuous functions.

          Explanation

          Singularity functions take a variable, an offset, and an exponent as @@ -1247,7 +1247,7 @@

          Dirac Delta and Related Discontinuous Functionsexponent,

          -)[source] +)[source]

          Returns a simplified form or a value of Singularity Function depending on the argument passed by the object.

          Explanation

          @@ -1285,7 +1285,7 @@

          Dirac Delta and Related Discontinuous Functions
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Returns the first derivative of a DiracDelta Function.

          Explanation

          The difference between diff() and fdiff() is: diff() is the @@ -1303,7 +1303,7 @@

          Dirac Delta and Related Discontinuous Functions

          Gamma, Beta and Related Functions

          -class sympy.functions.special.gamma_functions.gamma(arg)[source]
          +class sympy.functions.special.gamma_functions.gamma(arg)[source]

          The gamma function

          @@ -1396,7 +1396,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.loggamma(z)[source]
          +class sympy.functions.special.gamma_functions.loggamma(z)[source]

          The loggamma function implements the logarithm of the gamma function (i.e., \(\log\Gamma(x)\)).

          Examples

          @@ -1524,7 +1524,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.polygamma(n, z)[source]
          +class sympy.functions.special.gamma_functions.polygamma(n, z)[source]

          The function polygamma(n, z) returns log(gamma(z)).diff(n + 1).

          Explanation

          It is a meromorphic function on \(\mathbb{C}\) and defined as the \((n+1)\)-th @@ -1653,7 +1653,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.digamma(z)[source]
          +class sympy.functions.special.gamma_functions.digamma(z)[source]

          The digamma function is the first derivative of the loggamma function

          @@ -1717,7 +1717,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.trigamma(z)[source]
          +class sympy.functions.special.gamma_functions.trigamma(z)[source]

          The trigamma function is the second derivative of the loggamma function

          @@ -1780,7 +1780,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.uppergamma(a, z)[source]
          +class sympy.functions.special.gamma_functions.uppergamma(a, z)[source]

          The upper incomplete gamma function.

          Explanation

          It can be defined as the meromorphic continuation of

          @@ -1866,7 +1866,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.lowergamma(a, x)[source]
          +class sympy.functions.special.gamma_functions.lowergamma(a, x)[source]

          The lower incomplete gamma function.

          Explanation

          It can be defined as the meromorphic continuation of

          @@ -1939,7 +1939,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.gamma_functions.multigamma(x, p)[source]
          +class sympy.functions.special.gamma_functions.multigamma(x, p)[source]

          The multivariate gamma function is a generalization of the gamma function

          @@ -1999,7 +1999,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.beta_functions.beta(x, y=None)[source]
          +class sympy.functions.special.beta_functions.beta(x, y=None)[source]

          The beta integral is called the Eulerian integral of the first kind by Legendre:

          @@ -2107,7 +2107,7 @@

          Dirac Delta and Related Discontinuous Functions

          Error Functions and Fresnel Integrals

          -class sympy.functions.special.error_functions.erf(arg)[source]
          +class sympy.functions.special.error_functions.erf(arg)[source]

          The Gauss error function.

          Explanation

          This function is defined as:

          @@ -2198,7 +2198,7 @@

          Dirac Delta and Related Discontinuous Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2206,7 +2206,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erfc(arg)[source]
          +class sympy.functions.special.error_functions.erfc(arg)[source]

          Complementary Error Function.

          Explanation

          The function is defined as:

          @@ -2297,7 +2297,7 @@

          Dirac Delta and Related Discontinuous Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2305,7 +2305,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erfi(z)[source]
          +class sympy.functions.special.error_functions.erfi(z)[source]

          Imaginary error function.

          Explanation

          The function erfi is defined as:

          @@ -2393,7 +2393,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erf2(x, y)[source]
          +class sympy.functions.special.error_functions.erf2(x, y)[source]

          Two-argument error function.

          Explanation

          This function is defined as:

          @@ -2468,7 +2468,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erfinv(z)[source]
          +class sympy.functions.special.error_functions.erfinv(z)[source]

          Inverse Error Function. The erfinv function is defined as:

          @@ -2528,7 +2528,7 @@

          Dirac Delta and Related Discontinuous Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2536,7 +2536,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erfcinv(z)[source]
          +class sympy.functions.special.error_functions.erfcinv(z)[source]

          Inverse Complementary Error Function. The erfcinv function is defined as:

          @@ -2590,7 +2590,7 @@

          Dirac Delta and Related Discontinuous Functions
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Returns the inverse of this function.

          @@ -2598,7 +2598,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.erf2inv(x, y)[source]
          +class sympy.functions.special.error_functions.erf2inv(x, y)[source]

          Two-argument Inverse error function. The erf2inv function is defined as:

          @@ -2658,13 +2658,13 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.FresnelIntegral(z)[source]
          +class sympy.functions.special.error_functions.FresnelIntegral(z)[source]

          Base class for the Fresnel integrals.

          -class sympy.functions.special.error_functions.fresnels(z)[source]
          +class sympy.functions.special.error_functions.fresnels(z)[source]

          Fresnel integral S.

          Explanation

          This function is defined by

          @@ -2764,7 +2764,7 @@

          Dirac Delta and Related Discontinuous Functions
          -class sympy.functions.special.error_functions.fresnelc(z)[source]
          +class sympy.functions.special.error_functions.fresnelc(z)[source]

          Fresnel integral C.

          Explanation

          This function is defined by

          @@ -2867,7 +2867,7 @@

          Dirac Delta and Related Discontinuous Functions

          -class sympy.functions.special.error_functions.Ei(z)[source]
          +class sympy.functions.special.error_functions.Ei(z)[source]

          The classical exponential integral.

          Explanation

          For use in SymPy, this function is defined as

          @@ -2968,7 +2968,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.expint(nu, z)[source]
          +class sympy.functions.special.error_functions.expint(nu, z)[source]

          Generalized exponential integral.

          Explanation

          This function is defined as

          @@ -3084,7 +3084,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -sympy.functions.special.error_functions.E1(z)[source]
          +sympy.functions.special.error_functions.E1(z)[source]

          Classical case of the generalized exponential integral.

          Explanation

          This is equivalent to expint(1, z).

          @@ -3123,7 +3123,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.li(z)[source]
          +class sympy.functions.special.error_functions.li(z)[source]

          The classical logarithmic integral.

          Explanation

          For use in SymPy, this function is defined as

          @@ -3240,7 +3240,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.Li(z)[source]
          +class sympy.functions.special.error_functions.Li(z)[source]

          The offset logarithmic integral.

          Explanation

          For use in SymPy, this function is defined as

          @@ -3320,7 +3320,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.Si(z)[source]
          +class sympy.functions.special.error_functions.Si(z)[source]

          Sine integral.

          Explanation

          This function is defined by

          @@ -3400,7 +3400,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.Ci(z)[source]
          +class sympy.functions.special.error_functions.Ci(z)[source]

          Cosine integral.

          Explanation

          This function is defined for positive \(x\) by

          @@ -3487,7 +3487,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.Shi(z)[source]
          +class sympy.functions.special.error_functions.Shi(z)[source]

          Sinh integral.

          Explanation

          This function is defined by

          @@ -3559,7 +3559,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.error_functions.Chi(z)[source]
          +class sympy.functions.special.error_functions.Chi(z)[source]

          Cosh integral.

          Explanation

          This function is defined for positive \(x\) by

          @@ -3645,7 +3645,7 @@

          Exponential, Logarithmic and Trigonometric Integrals

          Bessel Type Functions

          -class sympy.functions.special.bessel.BesselBase(nu, z)[source]
          +class sympy.functions.special.bessel.BesselBase(nu, z)[source]

          Abstract base class for Bessel-type functions.

          This class is meant to reduce code duplication. All Bessel-type functions can 1) be differentiated, with the derivatives @@ -3670,7 +3670,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.besselj(nu, z)[source]
          +class sympy.functions.special.bessel.besselj(nu, z)[source]

          Bessel function of the first kind.

          Explanation

          The Bessel \(J\) function of order \(\nu\) is defined to be the function @@ -3745,7 +3745,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.bessely(nu, z)[source]
          +class sympy.functions.special.bessel.bessely(nu, z)[source]

          Bessel function of the second kind.

          Explanation

          The Bessel \(Y\) function of order \(\nu\) is defined as

          @@ -3782,7 +3782,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.besseli(nu, z)[source]
          +class sympy.functions.special.bessel.besseli(nu, z)[source]

          Modified Bessel function of the first kind.

          Explanation

          The Bessel \(I\) function is a solution to the modified Bessel equation

          @@ -3819,7 +3819,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.besselk(nu, z)[source]
          +class sympy.functions.special.bessel.besselk(nu, z)[source]

          Modified Bessel function of the second kind.

          Explanation

          The Bessel \(K\) function of order \(\nu\) is defined as

          @@ -3853,7 +3853,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.hankel1(nu, z)[source]
          +class sympy.functions.special.bessel.hankel1(nu, z)[source]

          Hankel function of the first kind.

          Explanation

          This function is defined as

          @@ -3886,7 +3886,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.hankel2(nu, z)[source]
          +class sympy.functions.special.bessel.hankel2(nu, z)[source]

          Hankel function of the second kind.

          Explanation

          This function is defined as

          @@ -3920,7 +3920,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.jn(nu, z)[source]
          +class sympy.functions.special.bessel.jn(nu, z)[source]

          Spherical Bessel function of the first kind.

          Explanation

          This function is a solution to the spherical Bessel equation

          @@ -3976,7 +3976,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.yn(nu, z)[source]
          +class sympy.functions.special.bessel.yn(nu, z)[source]

          Spherical Bessel function of the second kind.

          Explanation

          This function is another solution to the spherical Bessel equation, and @@ -4022,7 +4022,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -sympy.functions.special.bessel.jn_zeros(n, k, method='sympy', dps=15)[source]
          +sympy.functions.special.bessel.jn_zeros(n, k, method='sympy', dps=15)[source]

          Zeros of the spherical Bessel function of the first kind.

          Parameters:
          @@ -4065,7 +4065,7 @@

          Exponential, Logarithmic and Trigonometric Integrals
          -class sympy.functions.special.bessel.marcumq(m, a, b)[source]
          +class sympy.functions.special.bessel.marcumq(m, a, b)[source]

          The Marcum Q-function.

          Explanation

          The Marcum Q-function is defined by the meromorphic continuation of

          @@ -4119,14 +4119,14 @@

          Exponential, Logarithmic and Trigonometric IntegralsAiry Functions

          -class sympy.functions.special.bessel.AiryBase(*args)[source]
          +class sympy.functions.special.bessel.AiryBase(*args)[source]

          Abstract base class for Airy functions.

          This class is meant to reduce code duplication.

          -class sympy.functions.special.bessel.airyai(arg)[source]
          +class sympy.functions.special.bessel.airyai(arg)[source]

          The Airy function \(\operatorname{Ai}\) of the first kind.

          Explanation

          The Airy function \(\operatorname{Ai}(z)\) is defined to be the function @@ -4227,7 +4227,7 @@

          Airy Functions
          -class sympy.functions.special.bessel.airybi(arg)[source]
          +class sympy.functions.special.bessel.airybi(arg)[source]

          The Airy function \(\operatorname{Bi}\) of the second kind.

          Explanation

          The Airy function \(\operatorname{Bi}(z)\) is defined to be the function @@ -4330,7 +4330,7 @@

          Airy Functions
          -class sympy.functions.special.bessel.airyaiprime(arg)[source]
          +class sympy.functions.special.bessel.airyaiprime(arg)[source]

          The derivative \(\operatorname{Ai}^\prime\) of the Airy function of the first kind.

          Explanation

          @@ -4424,7 +4424,7 @@

          Airy Functions
          -class sympy.functions.special.bessel.airybiprime(arg)[source]
          +class sympy.functions.special.bessel.airybiprime(arg)[source]

          The derivative \(\operatorname{Bi}^\prime\) of the Airy function of the first kind.

          Explanation

          @@ -4603,7 +4603,7 @@

          B-Splines
          -sympy.functions.special.bsplines.bspline_basis_set(d, knots, x)[source]
          +sympy.functions.special.bsplines.bspline_basis_set(d, knots, x)[source]

          Return the len(knots)-d-1 B-splines at x of degree d with knots.

          @@ -4649,7 +4649,7 @@

          B-Splines
          -sympy.functions.special.bsplines.interpolating_spline(d, x, X, Y)[source]
          +sympy.functions.special.bsplines.interpolating_spline(d, x, X, Y)[source]

          Return spline of degree d, passing through the given X and Y values.

          @@ -4697,7 +4697,7 @@

          B-Splines

          Riemann Zeta and Related Functions

          -class sympy.functions.special.zeta_functions.zeta(s, a=None)[source]
          +class sympy.functions.special.zeta_functions.zeta(s, a=None)[source]

          Hurwitz zeta function (or Riemann zeta function).

          Explanation

          For \(\operatorname{Re}(a) > 0\) and \(\operatorname{Re}(s) > 1\), this @@ -4809,7 +4809,7 @@

          B-Splines
          -class sympy.functions.special.zeta_functions.dirichlet_eta(s, a=None)[source]
          +class sympy.functions.special.zeta_functions.dirichlet_eta(s, a=None)[source]

          Dirichlet eta function.

          Explanation

          For \(\operatorname{Re}(s) > 0\) and \(0 < x \le 1\), this function is defined as

          @@ -4858,7 +4858,7 @@

          B-Splines
          -class sympy.functions.special.zeta_functions.polylog(s, z)[source]
          +class sympy.functions.special.zeta_functions.polylog(s, z)[source]

          Polylogarithm function.

          Explanation

          For \(|z| < 1\) and \(s \in \mathbb{C}\), the polylogarithm is @@ -4925,7 +4925,7 @@

          B-Splines
          -class sympy.functions.special.zeta_functions.lerchphi(*args)[source]
          +class sympy.functions.special.zeta_functions.lerchphi(*args)[source]

          Lerch transcendent (Lerch phi function).

          Explanation

          For \(\operatorname{Re}(a) > 0\), \(|z| < 1\) and \(s \in \mathbb{C}\), the @@ -5034,7 +5034,7 @@

          B-Splines
          -class sympy.functions.special.zeta_functions.stieltjes(n, a=None)[source]
          +class sympy.functions.special.zeta_functions.stieltjes(n, a=None)[source]

          Represents Stieltjes constants, \(\gamma_{k}\) that occur in Laurent Series expansion of the Riemann zeta function.

          Examples

          @@ -5075,7 +5075,7 @@

          B-Splines

          -class sympy.functions.special.hyper.hyper(ap, bq, z)[source]
          +class sympy.functions.special.hyper.hyper(ap, bq, z)[source]

          The generalized hypergeometric function is defined by a series where the ratios of successive terms are a rational function of the summation index. When convergent, it is continued analytically to the largest @@ -5239,7 +5239,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.hyper.meijerg(*args)[source]
          +class sympy.functions.special.hyper.meijerg(*args)[source]

          The Meijer G-function is defined by a Mellin-Barnes type integral that resembles an inverse Mellin transform. It generalizes the hypergeometric functions.

          @@ -5410,7 +5410,7 @@

          Hypergeometric Functions
          -get_period()[source]
          +get_period()[source]

          Return a number \(P\) such that \(G(x*exp(I*P)) == G(x)\).

          Examples

          >>> from sympy import meijerg, pi, S
          @@ -5431,7 +5431,7 @@ 

          Hypergeometric Functions
          -integrand(s)[source]
          +integrand(s)[source]

          Get the defining integrand D(s).

          @@ -5452,7 +5452,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.hyper.appellf1(a, b1, b2, c, x, y)[source]
          +class sympy.functions.special.hyper.appellf1(a, b1, b2, c, x, y)[source]

          This is the Appell hypergeometric function of two variables as:

          @@ -5495,7 +5495,7 @@

          Hypergeometric Functions

          Elliptic integrals

          -class sympy.functions.special.elliptic_integrals.elliptic_k(m)[source]
          +class sympy.functions.special.elliptic_integrals.elliptic_k(m)[source]

          The complete elliptic integral of the first kind, defined by

          @@ -5540,7 +5540,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.elliptic_integrals.elliptic_f(z, m)[source]
          +class sympy.functions.special.elliptic_integrals.elliptic_f(z, m)[source]

          The Legendre incomplete elliptic integral of the first kind, defined by

          @@ -5583,7 +5583,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.elliptic_integrals.elliptic_e(m, z=None)[source]
          +class sympy.functions.special.elliptic_integrals.elliptic_e(m, z=None)[source]

          Called with two arguments \(z\) and \(m\), evaluates the incomplete elliptic integral of the second kind, defined by

          @@ -5637,7 +5637,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.elliptic_integrals.elliptic_pi(n, m, z=None)[source]
          +class sympy.functions.special.elliptic_integrals.elliptic_pi(n, m, z=None)[source]

          Called with three arguments \(n\), \(z\) and \(m\), evaluates the Legendre incomplete elliptic integral of the third kind, defined by

          @@ -5692,14 +5692,14 @@

          Hypergeometric Functions

          Mathieu Functions

          -class sympy.functions.special.mathieu_functions.MathieuBase(*args)[source]
          +class sympy.functions.special.mathieu_functions.MathieuBase(*args)[source]

          Abstract base class for Mathieu functions.

          This class is meant to reduce code duplication.

          -class sympy.functions.special.mathieu_functions.mathieus(a, q, z)[source]
          +class sympy.functions.special.mathieu_functions.mathieus(a, q, z)[source]

          The Mathieu Sine function \(S(a,q,z)\).

          Explanation

          This function is one solution of the Mathieu differential equation:

          @@ -5759,7 +5759,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.mathieu_functions.mathieuc(a, q, z)[source]
          +class sympy.functions.special.mathieu_functions.mathieuc(a, q, z)[source]

          The Mathieu Cosine function \(C(a,q,z)\).

          Explanation

          This function is one solution of the Mathieu differential equation:

          @@ -5819,7 +5819,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.mathieu_functions.mathieusprime(a, q, z)[source]
          +class sympy.functions.special.mathieu_functions.mathieusprime(a, q, z)[source]

          The derivative \(S^{\prime}(a,q,z)\) of the Mathieu Sine function.

          Explanation

          This function is one solution of the Mathieu differential equation:

          @@ -5879,7 +5879,7 @@

          Hypergeometric Functions
          -class sympy.functions.special.mathieu_functions.mathieucprime(a, q, z)[source]
          +class sympy.functions.special.mathieu_functions.mathieucprime(a, q, z)[source]

          The derivative \(C^{\prime}(a,q,z)\) of the Mathieu Cosine function.

          Explanation

          This function is one solution of the Mathieu differential equation:

          @@ -5947,7 +5947,7 @@

          Hypergeometric Functions

          -class sympy.functions.special.polynomials.jacobi(n, a, b, x)[source]
          +class sympy.functions.special.polynomials.jacobi(n, a, b, x)[source]

          Jacobi polynomial \(P_n^{\left(\alpha, \beta\right)}(x)\).

          Explanation

          jacobi(n, alpha, beta, x) gives the \(n\)th Jacobi polynomial @@ -6029,7 +6029,7 @@

          Jacobi Polynomials
          -sympy.functions.special.polynomials.jacobi_normalized(n, a, b, x)[source]
          +sympy.functions.special.polynomials.jacobi_normalized(n, a, b, x)[source]

          Jacobi polynomial \(P_n^{\left(\alpha, \beta\right)}(x)\).

          Parameters:
          @@ -6088,7 +6088,7 @@

          Jacobi Polynomials

          -class sympy.functions.special.polynomials.gegenbauer(n, a, x)[source]
          +class sympy.functions.special.polynomials.gegenbauer(n, a, x)[source]

          Gegenbauer polynomial \(C_n^{\left(\alpha\right)}(x)\).

          Explanation

          gegenbauer(n, alpha, x) gives the \(n\)th Gegenbauer polynomial @@ -6154,7 +6154,7 @@

          Gegenbauer PolynomialsChebyshev Polynomials

          -class sympy.functions.special.polynomials.chebyshevt(n, x)[source]
          +class sympy.functions.special.polynomials.chebyshevt(n, x)[source]

          Chebyshev polynomial of the first kind, \(T_n(x)\).

          Explanation

          chebyshevt(n, x) gives the \(n\)th Chebyshev polynomial (of the first @@ -6221,7 +6221,7 @@

          Chebyshev Polynomials
          -class sympy.functions.special.polynomials.chebyshevu(n, x)[source]
          +class sympy.functions.special.polynomials.chebyshevu(n, x)[source]

          Chebyshev polynomial of the second kind, \(U_n(x)\).

          Explanation

          chebyshevu(n, x) gives the \(n\)th Chebyshev polynomial of the second @@ -6288,7 +6288,7 @@

          Chebyshev Polynomials
          -class sympy.functions.special.polynomials.chebyshevt_root(n, k)[source]
          +class sympy.functions.special.polynomials.chebyshevt_root(n, k)[source]

          chebyshev_root(n, k) returns the \(k\)th root (indexed from zero) of the \(n\)th Chebyshev polynomial of the first kind; that is, if \(0 \le k < n\), chebyshevt(n, chebyshevt_root(n, k)) == 0.

          @@ -6308,7 +6308,7 @@

          Chebyshev Polynomials
          -class sympy.functions.special.polynomials.chebyshevu_root(n, k)[source]
          +class sympy.functions.special.polynomials.chebyshevu_root(n, k)[source]

          chebyshevu_root(n, k) returns the \(k\)th root (indexed from zero) of the \(n\)th Chebyshev polynomial of the second kind; that is, if \(0 \le k < n\), chebyshevu(n, chebyshevu_root(n, k)) == 0.

          @@ -6331,7 +6331,7 @@

          Chebyshev PolynomialsLegendre Polynomials

          -class sympy.functions.special.polynomials.legendre(n, x)[source]
          +class sympy.functions.special.polynomials.legendre(n, x)[source]

          legendre(n, x) gives the \(n\)th Legendre polynomial of \(x\), \(P_n(x)\)

          Explanation

          The Legendre polynomials are orthogonal on \([-1, 1]\) with respect to @@ -6379,7 +6379,7 @@

          Legendre Polynomials
          -class sympy.functions.special.polynomials.assoc_legendre(n, m, x)[source]
          +class sympy.functions.special.polynomials.assoc_legendre(n, m, x)[source]

          assoc_legendre(n, m, x) gives \(P_n^m(x)\), where \(n\) and \(m\) are the degree and order or an expression which is related to the nth order Legendre polynomial, \(P_n(x)\) in the following manner:

          @@ -6437,7 +6437,7 @@

          Legendre PolynomialsHermite Polynomials

          -class sympy.functions.special.polynomials.hermite(n, x)[source]
          +class sympy.functions.special.polynomials.hermite(n, x)[source]

          hermite(n, x) gives the \(n\)th Hermite polynomial in \(x\), \(H_n(x)\).

          Explanation

          The Hermite polynomials are orthogonal on \((-\infty, \infty)\) @@ -6482,7 +6482,7 @@

          Hermite Polynomials
          -class sympy.functions.special.polynomials.hermite_prob(n, x)[source]
          +class sympy.functions.special.polynomials.hermite_prob(n, x)[source]

          hermite_prob(n, x) gives the \(n\)th probabilist’s Hermite polynomial in \(x\), \(He_n(x)\).

          Explanation

          @@ -6534,7 +6534,7 @@

          Hermite Polynomials

          -class sympy.functions.special.polynomials.laguerre(n, x)[source]
          +class sympy.functions.special.polynomials.laguerre(n, x)[source]

          Returns the \(n\)th Laguerre polynomial in \(x\), \(L_n(x)\).

          Parameters:
          @@ -6592,7 +6592,7 @@

          Laguerre Polynomials
          -class sympy.functions.special.polynomials.assoc_laguerre(n, alpha, x)[source]
          +class sympy.functions.special.polynomials.assoc_laguerre(n, alpha, x)[source]

          Returns the \(n\)th generalized Laguerre polynomial in \(x\), \(L_n(x)\).

          Parameters:
          @@ -6672,7 +6672,7 @@

          Laguerre PolynomialsSpherical Harmonics

          -class sympy.functions.special.spherical_harmonics.Ynm(n, m, theta, phi)[source]
          +class sympy.functions.special.spherical_harmonics.Ynm(n, m, theta, phi)[source]

          Spherical harmonics defined as

          @@ -6815,7 +6815,7 @@

          Spherical Harmonics
          -sympy.functions.special.spherical_harmonics.Ynm_c(n, m, theta, phi)[source]
          +sympy.functions.special.spherical_harmonics.Ynm_c(n, m, theta, phi)[source]

          Conjugate spherical harmonics defined as

          @@ -6863,7 +6863,7 @@

          Spherical Harmonics
          -class sympy.functions.special.spherical_harmonics.Znm(n, m, theta, phi)[source]
          +class sympy.functions.special.spherical_harmonics.Znm(n, m, theta, phi)[source]

          Real spherical harmonics defined as

          @@ -6929,7 +6929,7 @@

          Spherical Harmonics

          -sympy.functions.special.tensor_functions.Eijk(*args, **kwargs)[source]
          +sympy.functions.special.tensor_functions.Eijk(*args, **kwargs)[source]

          Represent the Levi-Civita symbol.

          This is a compatibility wrapper to LeviCivita().

          @@ -6940,13 +6940,13 @@

          Tensor Functions
          -sympy.functions.special.tensor_functions.eval_levicivita(*args)[source]
          +sympy.functions.special.tensor_functions.eval_levicivita(*args)[source]

          Evaluate Levi-Civita symbol.

          -class sympy.functions.special.tensor_functions.LeviCivita(*args)[source]
          +class sympy.functions.special.tensor_functions.LeviCivita(*args)[source]

          Represent the Levi-Civita symbol.

          Explanation

          For even permutations of indices it returns 1, for odd permutations -1, and @@ -6975,7 +6975,7 @@

          Tensor Functions
          -class sympy.functions.special.tensor_functions.KroneckerDelta(i, j, delta_range=None)[source]
          +class sympy.functions.special.tensor_functions.KroneckerDelta(i, j, delta_range=None)[source]

          The discrete, or Kronecker, delta function.

          Parameters:
          @@ -7026,7 +7026,7 @@

          Tensor Functions
          -classmethod eval(i, j, delta_range=None)[source]
          +classmethod eval(i, j, delta_range=None)[source]

          Evaluates the discrete delta function.

          Examples

          >>> from sympy import KroneckerDelta
          diff --git a/dev/modules/geometry/curves.html b/dev/modules/geometry/curves.html
          index c99ff22beb4..b3518b13c06 100644
          --- a/dev/modules/geometry/curves.html
          +++ b/dev/modules/geometry/curves.html
          @@ -805,7 +805,7 @@ 
          Documentation Version

          Curves

          -class sympy.geometry.curve.Curve(function, limits)[source]
          +class sympy.geometry.curve.Curve(function, limits)[source]

          A curve in space.

          A curve is defined by parametric functions for the coordinates, a parameter and the lower and upper bounds for the parameter value.

          @@ -887,7 +887,7 @@
          Documentation Version
          -arbitrary_point(parameter='t')[source]
          +arbitrary_point(parameter='t')[source]

          A parameterized point on the curve.

          Parameters:
          @@ -1048,7 +1048,7 @@
          Documentation Version
          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of the curve.

          Parameters:
          @@ -1088,7 +1088,7 @@
          Documentation Version
          -rotate(angle=0, pt=None)[source]
          +rotate(angle=0, pt=None)[source]

          This function is used to rotate a curve along given point pt at given angle(in radian).

          Parameters:
          @@ -1121,7 +1121,7 @@
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Override GeometryEntity.scale since Curve is not made up of Points.

          Returns:
          @@ -1142,7 +1142,7 @@
          Documentation Version
          -translate(x=0, y=0)[source]
          +translate(x=0, y=0)[source]

          Translate the Curve by (x, y).

          Returns:
          diff --git a/dev/modules/geometry/ellipses.html b/dev/modules/geometry/ellipses.html index acedaae8247..6b47ed9c14a 100644 --- a/dev/modules/geometry/ellipses.html +++ b/dev/modules/geometry/ellipses.html @@ -815,7 +815,7 @@
          Documentation Version
          **kwargs,
          -)[source] +)[source]

          An elliptical GeometryEntity.

          Parameters:
          @@ -931,7 +931,7 @@
          Documentation Version
          -arbitrary_point(parameter='t')[source]
          +arbitrary_point(parameter='t')[source]

          A parameterized point on the ellipse.

          Parameters:
          @@ -984,7 +984,7 @@
          Documentation Version
          -auxiliary_circle()[source]
          +auxiliary_circle()[source]

          Returns a Circle whose diameter is the major axis of the ellipse.

          Examples

          >>> from sympy import Ellipse, Point, symbols
          @@ -1044,7 +1044,7 @@ 
          Documentation Version
          -director_circle()[source]
          +director_circle()[source]

          Returns a Circle consisting of all points where two perpendicular tangent lines to the ellipse cross each other.

          @@ -1095,7 +1095,7 @@
          Documentation Version
          -encloses_point(p)[source]
          +encloses_point(p)[source]

          Return True if p is enclosed by (is inside of) self.

          Parameters:
          @@ -1127,7 +1127,7 @@
          Documentation Version
          -equation(x='x', y='y', _slope=None)[source]
          +equation(x='x', y='y', _slope=None)[source]

          Returns the equation of an ellipse aligned with the x and y axes; when slope is given, the equation returned corresponds to an ellipse with a major axis having that slope.

          @@ -1194,7 +1194,7 @@
          Documentation Version
          -evolute(x='x', y='y')[source]
          +evolute(x='x', y='y')[source]

          The equation of evolute of the ellipse.

          Parameters:
          @@ -1301,7 +1301,7 @@
          Documentation Version
          -intersection(o)[source]
          +intersection(o)[source]

          The intersection of this ellipse and another geometrical entity \(o\).

          @@ -1349,7 +1349,7 @@
          Documentation Version
          -is_tangent(o)[source]
          +is_tangent(o)[source]

          Is \(o\) tangent to the ellipse?

          Parameters:
          @@ -1462,7 +1462,7 @@
          Documentation Version
          -normal_lines(p, prec=None)[source]
          +normal_lines(p, prec=None)[source]

          Normal lines between \(p\) and the ellipse.

          Parameters:
          @@ -1524,7 +1524,7 @@
          Documentation Version
          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of the Ellipse.

          Parameters:
          @@ -1551,7 +1551,7 @@
          Documentation Version
          -polar_second_moment_of_area()[source]
          +polar_second_moment_of_area()[source]

          Returns the polar second moment of area of an Ellipse

          It is a constituent of the second moment of area, linked through the perpendicular axis theorem. While the planar second moment of @@ -1583,7 +1583,7 @@

          Documentation Version
          -random_point(seed=None)[source]
          +random_point(seed=None)[source]

          A random point on the ellipse.

          Returns:
          @@ -1628,7 +1628,7 @@
          Documentation Version
          -reflect(line)[source]
          +reflect(line)[source]

          Override GeometryEntity.reflect since the radius is not a GeometryEntity.

          Examples

          @@ -1653,7 +1653,7 @@
          Documentation Version
          -rotate(angle=0, pt=None)[source]
          +rotate(angle=0, pt=None)[source]

          Rotate angle radians counterclockwise about Point pt.

          Note: since the general ellipse is not supported, only rotations that are integer multiples of pi/2 are allowed.

          @@ -1669,7 +1669,7 @@
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Override GeometryEntity.scale since it is the major and minor axes which must be scaled and they are not GeometryEntities.

          Examples

          @@ -1684,7 +1684,7 @@
          Documentation Version
          -second_moment_of_area(point=None)[source]
          +second_moment_of_area(point=None)[source]

          Returns the second moment and product moment area of an ellipse.

          Parameters:
          @@ -1722,7 +1722,7 @@
          Documentation Version
          -section_modulus(point=None)[source]
          +section_modulus(point=None)[source]

          Returns a tuple with the section modulus of an ellipse

          Section modulus is a geometric property of an ellipse defined as the ratio of second moment of area to the distance of the extreme end of @@ -1811,7 +1811,7 @@

          Documentation Version
          -tangent_lines(p)[source]
          +tangent_lines(p)[source]

          Tangent lines between \(p\) and the ellipse.

          If \(p\) is on the ellipse, returns the tangent line through point \(p\). Otherwise, returns the tangent line(s) from \(p\) to the ellipse, or @@ -1870,7 +1870,7 @@

          Documentation Version
          -class sympy.geometry.ellipse.Circle(*args, **kwargs)[source]
          +class sympy.geometry.ellipse.Circle(*args, **kwargs)[source]

          A circle in space.

          Constructed simply from a center and a radius, from three non-collinear points, or the equation of a circle.

          @@ -1958,7 +1958,7 @@
          Documentation Version
          -equation(x='x', y='y')[source]
          +equation(x='x', y='y')[source]

          The equation of the circle.

          Parameters:
          @@ -1986,7 +1986,7 @@
          Documentation Version
          -intersection(o)[source]
          +intersection(o)[source]

          The intersection of this circle with another geometrical entity.

          Parameters:
          @@ -2037,7 +2037,7 @@
          Documentation Version
          -reflect(line)[source]
          +reflect(line)[source]

          Override GeometryEntity.reflect since the radius is not a GeometryEntity.

          Examples

          @@ -2050,7 +2050,7 @@
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Override GeometryEntity.scale since the radius is not a GeometryEntity.

          Examples

          diff --git a/dev/modules/geometry/entities.html b/dev/modules/geometry/entities.html index a06913d085e..3548e8603f2 100644 --- a/dev/modules/geometry/entities.html +++ b/dev/modules/geometry/entities.html @@ -805,7 +805,7 @@
          Documentation Version

          Entities

          -class sympy.geometry.entity.GeometryEntity(*args, **kwargs)[source]
          +class sympy.geometry.entity.GeometryEntity(*args, **kwargs)[source]

          The base class for all geometrical entities.

          This class does not represent any particular geometric entity, it only provides the implementation of some methods common to all subclasses.

          @@ -824,7 +824,7 @@
          Documentation Version
          -encloses(o)[source]
          +encloses(o)[source]

          Return True if o is inside (not on or outside) the boundaries of self.

          The object will be decomposed into Points and individual Entities need only define an encloses_point method for their class.

          @@ -846,7 +846,7 @@
          Documentation Version
          -intersection(o)[source]
          +intersection(o)[source]

          Returns a list of all of the intersections of self with o.

          Notes

          An entity is not required to implement this method.

          @@ -861,7 +861,7 @@
          Documentation Version
          -is_similar(other)[source]
          +is_similar(other)[source]

          Is this geometrical entity similar to another geometrical entity?

          Two entities are similar if a uniform scaling (enlarging or shrinking) of one of the entities will allow one to obtain the other.

          @@ -879,7 +879,7 @@
          Documentation Version
          -parameter_value(other, t)[source]
          +parameter_value(other, t)[source]

          Return the parameter corresponding to the given point. Evaluating an arbitrary point of the entity at this parameter value will return the given point.

          @@ -898,7 +898,7 @@
          Documentation Version
          -reflect(line)[source]
          +reflect(line)[source]

          Reflects an object across a line.

          Parameters:
          @@ -926,7 +926,7 @@
          Documentation Version
          -rotate(angle, pt=None)[source]
          +rotate(angle, pt=None)[source]

          Rotate angle radians counterclockwise about Point pt.

          The default pt is the origin, Point(0, 0)

          Examples

          @@ -946,7 +946,7 @@
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Scale the object by multiplying the x,y-coordinates by x and y.

          If pt is given, the scaling is done relative to that point; the object is shifted by -pt, scaled, and shifted by pt.

          @@ -969,7 +969,7 @@
          Documentation Version
          -translate(x=0, y=0)[source]
          +translate(x=0, y=0)[source]

          Shift the object by adding to the x,y-coordinates the values x and y.

          Examples

          >>> from sympy import RegularPolygon, Point, Polygon
          diff --git a/dev/modules/geometry/lines.html b/dev/modules/geometry/lines.html
          index 0154e045591..c97a43440f1 100644
          --- a/dev/modules/geometry/lines.html
          +++ b/dev/modules/geometry/lines.html
          @@ -805,7 +805,7 @@ 
          Documentation Version

          Lines

          -class sympy.geometry.line.LinearEntity(p1, p2=None, **kwargs)[source]
          +class sympy.geometry.line.LinearEntity(p1, p2=None, **kwargs)[source]

          A base class for all linear entities (Line, Ray and Segment) in n-dimensional Euclidean space.

          Notes

          @@ -871,7 +871,7 @@
          Documentation Version
          -angle_between(l2)[source]
          +angle_between(l2)[source]

          Return the non-reflex angle formed by rays emanating from the origin with directions the same as the direction vectors of the linear entities.

          @@ -926,7 +926,7 @@
          Documentation Version
          -arbitrary_point(parameter='t')[source]
          +arbitrary_point(parameter='t')[source]

          A parameterized point on the Line.

          Parameters:
          @@ -969,7 +969,7 @@
          Documentation Version
          -static are_concurrent(*lines)[source]
          +static are_concurrent(*lines)[source]

          Is a sequence of linear entities concurrent?

          Two or more linear entities are concurrent if they all intersect at a single point.

          @@ -1014,7 +1014,7 @@
          Documentation Version
          -bisectors(other)[source]
          +bisectors(other)[source]

          Returns the perpendicular lines which pass through the intersections of self and other that are in the same plane.

          @@ -1037,7 +1037,7 @@
          Documentation Version
          -contains(other)[source]
          +contains(other)[source]

          Subclasses should implement this method and should return True if other is on the boundaries of self; False if not on the boundaries of self; @@ -1078,7 +1078,7 @@

          Documentation Version
          -intersection(other)[source]
          +intersection(other)[source]

          The intersection with another geometrical entity.

          Parameters:
          @@ -1125,7 +1125,7 @@
          Documentation Version
          -is_parallel(l2)[source]
          +is_parallel(l2)[source]

          Are two linear entities parallel?

          Parameters:
          @@ -1168,7 +1168,7 @@
          Documentation Version
          -is_perpendicular(l2)[source]
          +is_perpendicular(l2)[source]

          Are two linear entities perpendicular?

          Parameters:
          @@ -1209,7 +1209,7 @@
          Documentation Version
          -is_similar(other)[source]
          +is_similar(other)[source]

          Return True if self and other are contained in the same line.

          Examples

          >>> from sympy import Point, Line
          @@ -1274,7 +1274,7 @@ 
          Documentation Version
          -parallel_line(p)[source]
          +parallel_line(p)[source]

          Create a new Line parallel to this linear entity which passes through the point \(p\).

          @@ -1312,7 +1312,7 @@
          Documentation Version
          -perpendicular_line(p)[source]
          +perpendicular_line(p)[source]

          Create a new Line perpendicular to this linear entity which passes through the point \(p\).

          @@ -1348,7 +1348,7 @@
          Documentation Version
          -perpendicular_segment(p)[source]
          +perpendicular_segment(p)[source]

          Create a perpendicular line segment from \(p\) to this line.

          The endpoints of the segment are p and the closest point in the line containing self. (If self is not a line, the point might @@ -1417,7 +1417,7 @@

          Documentation Version
          -projection(other)[source]
          +projection(other)[source]

          Project a point, line, ray, or segment onto this linear entity.

          Parameters:
          @@ -1472,7 +1472,7 @@
          Documentation Version
          -random_point(seed=None)[source]
          +random_point(seed=None)[source]

          A random point on a LinearEntity.

          Returns:
          @@ -1502,7 +1502,7 @@
          Documentation Version
          -smallest_angle_between(l2)[source]
          +smallest_angle_between(l2)[source]

          Return the smallest angle formed at the intersection of the lines containing the linear entities.

          @@ -1532,7 +1532,7 @@
          Documentation Version
          -class sympy.geometry.line.Line(*args, **kwargs)[source]
          +class sympy.geometry.line.Line(*args, **kwargs)[source]

          An infinite line in space.

          A 2D line is declared with two distinct points, point and slope, or an equation. A 3D line may be defined with a point and a direction ratio.

          @@ -1597,7 +1597,7 @@
          Documentation Version
          -contains(other)[source]
          +contains(other)[source]

          Return True if \(other\) is on this Line, or False otherwise.

          Examples

          >>> from sympy import Line,Point
          @@ -1624,7 +1624,7 @@ 
          Documentation Version
          -distance(other)[source]
          +distance(other)[source]

          Finds the shortest distance between a line and a point.

          Raises:
          @@ -1651,13 +1651,13 @@
          Documentation Version
          -equals(other)[source]
          +equals(other)[source]

          Returns True if self and other are the same mathematical entities

          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of line. Gives values that will produce a line that is +/- 5 units long (where a unit is the distance between the two points that define the line).

          @@ -1689,7 +1689,7 @@
          Documentation Version
          -class sympy.geometry.line.Ray(p1, p2=None, **kwargs)[source]
          +class sympy.geometry.line.Ray(p1, p2=None, **kwargs)[source]

          A Ray is a semi-line in the space with a source point and a direction.

          Parameters:
          @@ -1743,7 +1743,7 @@
          Documentation Version
          -contains(other)[source]
          +contains(other)[source]

          Is other GeometryEntity contained in this Ray?

          Examples

          >>> from sympy import Ray,Point,Segment
          @@ -1773,7 +1773,7 @@ 
          Documentation Version
          -distance(other)[source]
          +distance(other)[source]

          Finds the shortest distance between the ray and a point.

          Raises:
          @@ -1802,13 +1802,13 @@
          Documentation Version
          -equals(other)[source]
          +equals(other)[source]

          Returns True if self and other are the same mathematical entities

          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of the Ray. Gives values that will produce a ray that is 10 units long (where a unit is the distance between the two points that define the ray).

          @@ -1861,7 +1861,7 @@
          Documentation Version
          -class sympy.geometry.line.Segment(p1, p2, **kwargs)[source]
          +class sympy.geometry.line.Segment(p1, p2, **kwargs)[source]

          A line segment in space.

          Parameters:
          @@ -1916,7 +1916,7 @@
          Documentation Version
          -contains(other)[source]
          +contains(other)[source]

          Is the other GeometryEntity contained within this Segment?

          Examples

          >>> from sympy import Point, Segment
          @@ -1939,7 +1939,7 @@ 
          Documentation Version
          -distance(other)[source]
          +distance(other)[source]

          Finds the shortest distance between a line segment and a point.

          Raises:
          @@ -1967,7 +1967,7 @@
          Documentation Version
          -equals(other)[source]
          +equals(other)[source]

          Returns True if self and other are the same mathematical entities

          @@ -2019,7 +2019,7 @@
          Documentation Version
          -perpendicular_bisector(p=None)[source]
          +perpendicular_bisector(p=None)[source]

          The perpendicular bisector of this segment.

          If no point is specified or the point specified is not on the bisector then the bisector is returned as a Line. Otherwise a @@ -2053,7 +2053,7 @@

          Documentation Version
          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of the Segment gives values that will produce the full segment in a plot.

          @@ -2084,7 +2084,7 @@
          Documentation Version
          -class sympy.geometry.line.LinearEntity2D(p1, p2=None, **kwargs)[source]
          +class sympy.geometry.line.LinearEntity2D(p1, p2=None, **kwargs)[source]

          A base class for all linear entities (line, ray and segment) in a 2-dimensional Euclidean space.

          Notes

          @@ -2124,7 +2124,7 @@
          Documentation Version
          -perpendicular_line(p)[source]
          +perpendicular_line(p)[source]

          Create a new Line perpendicular to this linear entity which passes through the point \(p\).

          @@ -2193,7 +2193,7 @@
          Documentation Version
          -class sympy.geometry.line.Line2D(p1, pt=None, slope=None, **kwargs)[source]
          +class sympy.geometry.line.Line2D(p1, pt=None, slope=None, **kwargs)[source]

          An infinite line in space 2D.

          A line is declared with two distinct points or a point and slope as defined using keyword \(slope\).

          @@ -2259,7 +2259,7 @@
          Documentation Version
          -equation(x='x', y='y')[source]
          +equation(x='x', y='y')[source]

          The equation of the line: ax + by + c.

          Parameters:
          @@ -2294,7 +2294,7 @@
          Documentation Version
          -class sympy.geometry.line.Ray2D(p1, pt=None, angle=None, **kwargs)[source]
          +class sympy.geometry.line.Ray2D(p1, pt=None, angle=None, **kwargs)[source]

          A Ray is a semi-line in the space with a source point and a direction.

          Parameters:
          @@ -2351,7 +2351,7 @@
          Documentation Version
          -closing_angle(r2)[source]
          +closing_angle(r2)[source]

          Return the angle by which r2 must be rotated so it faces the same direction as r1.

          @@ -2431,7 +2431,7 @@
          Documentation Version
          -class sympy.geometry.line.Segment2D(p1, p2, **kwargs)[source]
          +class sympy.geometry.line.Segment2D(p1, p2, **kwargs)[source]

          A line segment in 2D space.

          Parameters:
          @@ -2476,7 +2476,7 @@
          Documentation Version
          -class sympy.geometry.line.LinearEntity3D(p1, p2, **kwargs)[source]
          +class sympy.geometry.line.LinearEntity3D(p1, p2, **kwargs)[source]

          An base class for all linear entities (line, ray and segment) in a 3-dimensional Euclidean space.

          Notes

          @@ -2545,7 +2545,7 @@
          Documentation Version
          -class sympy.geometry.line.Line3D(p1, pt=None, direction_ratio=(), **kwargs)[source]
          +class sympy.geometry.line.Line3D(p1, pt=None, direction_ratio=(), **kwargs)[source]

          An infinite 3D line in space.

          A line is declared with two distinct points or a point and direction_ratio as defined using keyword \(direction_ratio\).

          @@ -2571,7 +2571,7 @@
          Documentation Version
          -distance(other)[source]
          +distance(other)[source]

          Finds the shortest distance between a line and another object.

          Parameters:
          @@ -2607,7 +2607,7 @@
          Documentation Version
          -equation(x='x', y='y', z='z')[source]
          +equation(x='x', y='y', z='z')[source]

          Return the equations that define the line in 3D.

          Parameters:
          @@ -2645,7 +2645,7 @@
          Documentation Version
          -class sympy.geometry.line.Ray3D(p1, pt=None, direction_ratio=(), **kwargs)[source]
          +class sympy.geometry.line.Ray3D(p1, pt=None, direction_ratio=(), **kwargs)[source]

          A Ray is a semi-line in the space with a source point and a direction.

          Parameters:
          @@ -2772,7 +2772,7 @@
          Documentation Version
          -class sympy.geometry.line.Segment3D(p1, p2, **kwargs)[source]
          +class sympy.geometry.line.Segment3D(p1, p2, **kwargs)[source]

          A line segment in a 3D space.

          Parameters:
          diff --git a/dev/modules/geometry/plane.html b/dev/modules/geometry/plane.html index d53c081be9f..abc87d36829 100644 --- a/dev/modules/geometry/plane.html +++ b/dev/modules/geometry/plane.html @@ -805,7 +805,7 @@
          Documentation Version

          Plane

          -class sympy.geometry.plane.Plane(p1, a=None, b=None, **kwargs)[source]
          +class sympy.geometry.plane.Plane(p1, a=None, b=None, **kwargs)[source]

          A plane is a flat, two-dimensional surface. A plane is the two-dimensional analogue of a point (zero-dimensions), a line (one-dimension) and a solid (three-dimensions). A plane can generally be constructed by two types of @@ -837,7 +837,7 @@

          Documentation Version
          -angle_between(o)[source]
          +angle_between(o)[source]

          Angle between the plane and other geometric entity.

          Parameters:
          @@ -864,7 +864,7 @@
          Documentation Version
          -arbitrary_point(u=None, v=None)[source]
          +arbitrary_point(u=None, v=None)[source]

          Returns an arbitrary point on the Plane. If given two parameters, the point ranges over the entire plane. If given 1 or no parameters, returns a point with one parameter which, @@ -897,7 +897,7 @@

          Documentation Version
          -static are_concurrent(*planes)[source]
          +static are_concurrent(*planes)[source]

          Is a sequence of Planes concurrent?

          Two or more Planes are concurrent if their intersections are a common line.

          @@ -924,7 +924,7 @@
          Documentation Version
          -distance(o)[source]
          +distance(o)[source]

          Distance between the plane and another geometric entity.

          Parameters:
          @@ -954,7 +954,7 @@
          Documentation Version
          -equals(o)[source]
          +equals(o)[source]

          Returns True if self and o are the same mathematical entities.

          Examples

          >>> from sympy import Plane, Point3D
          @@ -973,7 +973,7 @@ 
          Documentation Version
          -equation(x=None, y=None, z=None)[source]
          +equation(x=None, y=None, z=None)[source]

          The equation of the Plane.

          Examples

          >>> from sympy import Point3D, Plane
          @@ -989,7 +989,7 @@ 
          Documentation Version
          -intersection(o)[source]
          +intersection(o)[source]

          The intersection with other geometrical entity.

          Parameters:
          @@ -1018,7 +1018,7 @@
          Documentation Version
          -is_coplanar(o)[source]
          +is_coplanar(o)[source]

          Returns True if \(o\) is coplanar with self, else False.

          Examples

          >>> from sympy import Plane
          @@ -1035,7 +1035,7 @@ 
          Documentation Version
          -is_parallel(l)[source]
          +is_parallel(l)[source]

          Is the given geometric entity parallel to the plane?

          Parameters:
          @@ -1057,7 +1057,7 @@
          Documentation Version
          -is_perpendicular(l)[source]
          +is_perpendicular(l)[source]

          Is the given geometric entity perpendicualar to the given plane?

          Parameters:
          @@ -1113,7 +1113,7 @@
          Documentation Version
          -parallel_plane(pt)[source]
          +parallel_plane(pt)[source]

          Plane parallel to the given plane and passing through the point pt.

          Parameters:
          @@ -1134,7 +1134,7 @@
          Documentation Version
          -parameter_value(other, u, v=None)[source]
          +parameter_value(other, u, v=None)[source]

          Return the parameter(s) corresponding to the given point.

          Examples

          >>> from sympy import pi, Plane
          @@ -1174,7 +1174,7 @@ 
          Documentation Version
          -perpendicular_line(pt)[source]
          +perpendicular_line(pt)[source]

          A line perpendicular to the given plane.

          Parameters:
          @@ -1195,7 +1195,7 @@
          Documentation Version
          -perpendicular_plane(*pts)[source]
          +perpendicular_plane(*pts)[source]

          Return a perpendicular passing through the given points. If the direction ratio between the points is the same as the Plane’s normal vector then, to select from the infinite number of possible planes, @@ -1227,7 +1227,7 @@

          Documentation Version
          -projection(pt)[source]
          +projection(pt)[source]

          Project the given point onto the plane along the plane normal.

          Parameters:
          @@ -1261,7 +1261,7 @@
          Documentation Version
          -projection_line(line)[source]
          +projection_line(line)[source]

          Project the given line onto the plane through the normal plane containing the line.

          @@ -1293,7 +1293,7 @@
          Documentation Version
          -random_point(seed=None)[source]
          +random_point(seed=None)[source]

          Returns a random point on the Plane.

          Returns:
          diff --git a/dev/modules/geometry/points.html b/dev/modules/geometry/points.html index dedb6c44f8d..345a7ab71e6 100644 --- a/dev/modules/geometry/points.html +++ b/dev/modules/geometry/points.html @@ -805,7 +805,7 @@
          Documentation Version

          Points

          -class sympy.geometry.point.Point(*args, **kwargs)[source]
          +class sympy.geometry.point.Point(*args, **kwargs)[source]

          A point in a n-dimensional Euclidean space.

          Parameters:
          @@ -883,7 +883,7 @@
          Documentation Version
          -static affine_rank(*args)[source]
          +static affine_rank(*args)[source]

          The affine rank of a set of points is the dimension of the smallest affine space containing all the points. For example, if the points lie on a line (and are not all @@ -900,7 +900,7 @@

          Documentation Version
          -classmethod are_coplanar(*points)[source]
          +classmethod are_coplanar(*points)[source]

          Return True if there exists a plane in which all the points lie. A trivial True value is returned if \(len(points) < 3\) or all Points are 2-dimensional.

          @@ -932,7 +932,7 @@
          Documentation Version
          -canberra_distance(p)[source]
          +canberra_distance(p)[source]

          The Canberra Distance from self to point p.

          Returns the weighted sum of horizontal and vertical distances to point p.

          @@ -967,7 +967,7 @@
          Documentation Version
          -distance(other)[source]
          +distance(other)[source]

          The Euclidean distance between self and another GeometricEntity.

          Returns:
          @@ -1005,19 +1005,19 @@
          Documentation Version
          -dot(p)[source]
          +dot(p)[source]

          Return dot product of self with another Point.

          -equals(other)[source]
          +equals(other)[source]

          Returns whether the coordinates of self and other agree.

          -intersection(other)[source]
          +intersection(other)[source]

          The intersection between this point and another GeometryEntity.

          Parameters:
          @@ -1043,7 +1043,7 @@
          Documentation Version
          -is_collinear(*args)[source]
          +is_collinear(*args)[source]

          Returns \(True\) if there exists a line that contains \(self\) and \(points\). Returns \(False\) otherwise. A trivially True value is returned if no points are given.

          @@ -1074,7 +1074,7 @@
          Documentation Version
          -is_concyclic(*args)[source]
          +is_concyclic(*args)[source]

          Do \(self\) and the given sequence of points lie in a circle?

          Returns True if the set of points are concyclic and False otherwise. A trivial value of True is returned @@ -1118,7 +1118,7 @@

          Documentation Version
          -is_scalar_multiple(p)[source]
          +is_scalar_multiple(p)[source]

          Returns whether each coordinate of \(self\) is a scalar multiple of the corresponding coordinate in point p.

          @@ -1145,7 +1145,7 @@
          Documentation Version
          -midpoint(p)[source]
          +midpoint(p)[source]

          The midpoint between self and point p.

          Parameters:
          @@ -1194,7 +1194,7 @@
          Documentation Version
          -static project(a, b)[source]
          +static project(a, b)[source]

          Project the point \(a\) onto the line between the origin and point \(b\) along the normal direction.

          @@ -1226,7 +1226,7 @@
          Documentation Version
          -taxicab_distance(p)[source]
          +taxicab_distance(p)[source]

          The Taxicab Distance from self to point p.

          Returns the sum of the horizontal and vertical distances to point p.

          @@ -1262,7 +1262,7 @@
          Documentation Version
          -class sympy.geometry.point.Point2D(*args, _nocheck=False, **kwargs)[source]
          +class sympy.geometry.point.Point2D(*args, _nocheck=False, **kwargs)[source]

          A point in a 2-dimensional Euclidean space.

          Parameters:
          @@ -1344,7 +1344,7 @@
          Documentation Version
          -rotate(angle, pt=None)[source]
          +rotate(angle, pt=None)[source]

          Rotate angle radians counterclockwise about Point pt.

          Examples

          >>> from sympy import Point2D, pi
          @@ -1363,7 +1363,7 @@ 
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Scale the coordinates of the Point by multiplying by x and y after subtracting pt – default is (0, 0) – and then adding pt back again (i.e. pt is the point of @@ -1385,7 +1385,7 @@

          Documentation Version
          -transform(matrix)[source]
          +transform(matrix)[source]

          Return the point after applying the transformation described by the 3x3 Matrix, matrix.

          @@ -1396,7 +1396,7 @@
          Documentation Version
          -translate(x=0, y=0)[source]
          +translate(x=0, y=0)[source]

          Shift the Point by adding x and y to the coordinates of the Point.

          Examples

          >>> from sympy import Point2D
          @@ -1445,7 +1445,7 @@ 
          Documentation Version
          -class sympy.geometry.point.Point3D(*args, _nocheck=False, **kwargs)[source]
          +class sympy.geometry.point.Point3D(*args, _nocheck=False, **kwargs)[source]

          A point in a 3-dimensional Euclidean space.

          Parameters:
          @@ -1502,7 +1502,7 @@
          Documentation Version
          -static are_collinear(*points)[source]
          +static are_collinear(*points)[source]

          Is a sequence of points collinear?

          Test whether or not a set of points are collinear. Returns True if the set of points are collinear, or False otherwise.

          @@ -1546,7 +1546,7 @@
          Documentation Version
          -direction_cosine(point)[source]
          +direction_cosine(point)[source]

          Gives the direction cosine between 2 points

          Parameters:
          @@ -1567,7 +1567,7 @@
          Documentation Version
          -direction_ratio(point)[source]
          +direction_ratio(point)[source]

          Gives the direction ratio between 2 points

          Parameters:
          @@ -1588,7 +1588,7 @@
          Documentation Version
          -intersection(other)[source]
          +intersection(other)[source]

          The intersection between this point and another GeometryEntity.

          Parameters:
          @@ -1614,7 +1614,7 @@
          Documentation Version
          -scale(x=1, y=1, z=1, pt=None)[source]
          +scale(x=1, y=1, z=1, pt=None)[source]

          Scale the coordinates of the Point by multiplying by x and y after subtracting pt – default is (0, 0) – and then adding pt back again (i.e. pt is the point of @@ -1636,7 +1636,7 @@

          Documentation Version
          -transform(matrix)[source]
          +transform(matrix)[source]

          Return the point after applying the transformation described by the 4x4 Matrix, matrix.

          @@ -1647,7 +1647,7 @@
          Documentation Version
          -translate(x=0, y=0, z=0)[source]
          +translate(x=0, y=0, z=0)[source]

          Shift the Point by adding x and y to the coordinates of the Point.

          Examples

          >>> from sympy import Point3D
          diff --git a/dev/modules/geometry/polygons.html b/dev/modules/geometry/polygons.html
          index 4c58db76c15..d0278761139 100644
          --- a/dev/modules/geometry/polygons.html
          +++ b/dev/modules/geometry/polygons.html
          @@ -805,7 +805,7 @@ 
          Documentation Version

          Polygons

          -class sympy.geometry.polygon.Polygon(*args, n=0, **kwargs)[source]
          +class sympy.geometry.polygon.Polygon(*args, n=0, **kwargs)[source]

          A two-dimensional polygon.

          A simple polygon in space. Can be constructed from a sequence of points or from a center, radius, number of sides and rotation angle.

          @@ -936,7 +936,7 @@
          Documentation Version
          -arbitrary_point(parameter='t')[source]
          +arbitrary_point(parameter='t')[source]

          A parameterized point on the polygon.

          The parameter, varying from 0 to 1, assigns points to the position on the perimeter that is that fraction of the total perimeter. So the @@ -1014,7 +1014,7 @@

          Documentation Version
          -bisectors(prec=None)[source]
          +bisectors(prec=None)[source]

          Returns angle bisectors of a polygon. If prec is given then approximate the point defining the ray to that precision.

          The distance between the points defining the bisector ray is 1.

          @@ -1062,7 +1062,7 @@
          Documentation Version
          -cut_section(line)[source]
          +cut_section(line)[source]

          Returns a tuple of two polygon segments that lie above and below the intersecting line respectively.

          @@ -1115,7 +1115,7 @@
          Documentation Version
          -distance(o)[source]
          +distance(o)[source]

          Returns the shortest distance between self and o.

          If o is a point, then self does not need to be convex. If o is another polygon self and o must be convex.

          @@ -1131,7 +1131,7 @@
          Documentation Version
          -encloses_point(p)[source]
          +encloses_point(p)[source]

          Return True if p is enclosed by (is inside of) self.

          Parameters:
          @@ -1169,7 +1169,7 @@
          Documentation Version
          -first_moment_of_area(point=None)[source]
          +first_moment_of_area(point=None)[source]

          Returns the first moment of area of a two-dimensional polygon with respect to a certain point of interest.

          First moment of area is a measure of the distribution of the area @@ -1224,7 +1224,7 @@

          Documentation Version
          -intersection(o)[source]
          +intersection(o)[source]

          The intersection of polygon and geometry entity.

          The intersection may be empty and can contain individual Points and complete Line Segments.

          @@ -1261,7 +1261,7 @@
          Documentation Version
          -is_convex()[source]
          +is_convex()[source]

          Is the polygon convex?

          A polygon is convex if all its interior angles are less than 180 degrees and there are no intersections between sides.

          @@ -1312,7 +1312,7 @@
          Documentation Version
          -plot_interval(parameter='t')[source]
          +plot_interval(parameter='t')[source]

          The plot interval for the default geometric plot of the polygon.

          Parameters:
          @@ -1339,7 +1339,7 @@
          Documentation Version
          -polar_second_moment_of_area()[source]
          +polar_second_moment_of_area()[source]

          Returns the polar modulus of a two-dimensional polygon

          It is a constituent of the second moment of area, linked through the perpendicular axis theorem. While the planar second moment of @@ -1368,7 +1368,7 @@

          Documentation Version
          -second_moment_of_area(point=None)[source]
          +second_moment_of_area(point=None)[source]

          Returns the second moment and product moment of area of a two dimensional polygon.

          Parameters:
          @@ -1409,7 +1409,7 @@
          Documentation Version
          -section_modulus(point=None)[source]
          +section_modulus(point=None)[source]

          Returns a tuple with the section modulus of a two-dimensional polygon.

          Section modulus is a geometric property of a polygon defined as the @@ -1515,7 +1515,7 @@

          Documentation Version
          -class sympy.geometry.polygon.RegularPolygon(c, r, n, rot=0, **kwargs)[source]
          +class sympy.geometry.polygon.RegularPolygon(c, r, n, rot=0, **kwargs)[source]

          A regular polygon.

          Such a polygon has all internal angles equal and all sides the same length.

          @@ -1761,7 +1761,7 @@
          Documentation Version
          -encloses_point(p)[source]
          +encloses_point(p)[source]

          Return True if p is enclosed by (is inside of) self.

          Parameters:
          @@ -1926,7 +1926,7 @@
          Documentation Version
          -reflect(line)[source]
          +reflect(line)[source]

          Override GeometryEntity.reflect since this is not made of only points.

          Examples

          @@ -1941,7 +1941,7 @@
          Documentation Version
          -rotate(angle, pt=None)[source]
          +rotate(angle, pt=None)[source]

          Override GeometryEntity.rotate to first rotate the RegularPolygon about its center.

          >>> from sympy import Point, RegularPolygon, pi
          @@ -1990,7 +1990,7 @@ 
          Documentation Version
          -scale(x=1, y=1, pt=None)[source]
          +scale(x=1, y=1, pt=None)[source]

          Override GeometryEntity.scale since it is the radius that must be scaled (if x == y) or else a new Polygon must be returned.

          >>> from sympy import RegularPolygon
          @@ -2010,7 +2010,7 @@ 
          Documentation Version
          -spin(angle)[source]
          +spin(angle)[source]

          Increment in place the virtual Polygon’s rotation by ccw angle.

          See also: rotate method which moves the center.

          >>> from sympy import Polygon, Point, pi
          @@ -2061,7 +2061,7 @@ 
          Documentation Version
          -class sympy.geometry.polygon.Triangle(*args, **kwargs)[source]
          +class sympy.geometry.polygon.Triangle(*args, **kwargs)[source]

          A polygon with three vertices and three sides.

          Parameters:
          @@ -2172,7 +2172,7 @@
          Documentation Version
          -bisectors()[source]
          +bisectors()[source]

          The angle bisectors of the triangle.

          An angle bisector of a triangle is a straight line through a vertex which cuts the corresponding angle in half.

          @@ -2444,7 +2444,7 @@
          Documentation Version
          -is_equilateral()[source]
          +is_equilateral()[source]

          Are all the sides the same length?

          Returns:
          @@ -2472,7 +2472,7 @@
          Documentation Version
          -is_isosceles()[source]
          +is_isosceles()[source]

          Are two or more of the sides the same length?

          Returns:
          @@ -2494,7 +2494,7 @@
          Documentation Version
          -is_right()[source]
          +is_right()[source]

          Is the triangle right-angled.

          Returns:
          @@ -2516,7 +2516,7 @@
          Documentation Version
          -is_scalene()[source]
          +is_scalene()[source]

          Are all the sides of the triangle of different lengths?

          Returns:
          @@ -2538,7 +2538,7 @@
          Documentation Version
          -is_similar(t2)[source]
          +is_similar(t2)[source]

          Is another triangle similar to this one.

          Two triangles are similar if one can be uniformly scaled to the other.

          diff --git a/dev/modules/geometry/utils.html b/dev/modules/geometry/utils.html index f865aa003fa..ce0e631496a 100644 --- a/dev/modules/geometry/utils.html +++ b/dev/modules/geometry/utils.html @@ -805,7 +805,7 @@
          Documentation Version

          Utils

          -sympy.geometry.util.intersection(*entities, pairwise=False, **kwargs)[source]
          +sympy.geometry.util.intersection(*entities, pairwise=False, **kwargs)[source]

          The intersection of a collection of GeometryEntity instances.

          Parameters:
          @@ -862,7 +862,7 @@
          Documentation Version
          -sympy.geometry.util.convex_hull(*args, polygon=True)[source]
          +sympy.geometry.util.convex_hull(*args, polygon=True)[source]

          The convex hull surrounding the Points contained in the list of entities.

          Parameters:
          @@ -915,7 +915,7 @@
          Documentation Version
          -sympy.geometry.util.are_similar(e1, e2)[source]
          +sympy.geometry.util.are_similar(e1, e2)[source]

          Are two geometrical entities similar.

          Can one geometrical entity be uniformly scaled to the other?

          @@ -955,7 +955,7 @@
          Documentation Version
          -sympy.geometry.util.centroid(*args)[source]
          +sympy.geometry.util.centroid(*args)[source]

          Find the centroid (center of mass) of the collection containing only Points, Segments or Polygons. The centroid is the weighted average of the individual centroid where the weights are the lengths (of segments) or areas (of polygons). @@ -1001,7 +1001,7 @@

          Documentation Version
          -sympy.geometry.util.idiff(eq, y, x, n=1)[source]
          +sympy.geometry.util.idiff(eq, y, x, n=1)[source]

          Return dy/dx assuming that eq == 0.

          Parameters:
          diff --git a/dev/modules/holonomic/convert.html b/dev/modules/holonomic/convert.html index 3a8dbddcc14..87f3a206add 100644 --- a/dev/modules/holonomic/convert.html +++ b/dev/modules/holonomic/convert.html @@ -807,7 +807,7 @@

          Converting other representations to holonomic

          -sympy.holonomic.holonomic.from_hyper(func, x0=0, evalf=False)[source]
          +sympy.holonomic.holonomic.from_hyper(func, x0=0, evalf=False)[source]

          Converts a hypergeometric function to holonomic. func is the Hypergeometric Function and x0 is the point at which initial conditions are required.

          @@ -836,7 +836,7 @@

          Converting Meijer G-functionsdomain=QQ,

          -)[source] +)[source]

          Converts a Meijer G-function to Holonomic. func is the G-Function and x0 is the point at which initial conditions are required.

          @@ -867,7 +867,7 @@

          Converting symbolic expressionsinitcond=True,

          -)[source] +)[source]

          Converts a function or an expression to a holonomic function.

          Parameters:
          diff --git a/dev/modules/holonomic/internal.html b/dev/modules/holonomic/internal.html index 3b5ebd0b072..cae50f5b4a0 100644 --- a/dev/modules/holonomic/internal.html +++ b/dev/modules/holonomic/internal.html @@ -805,7 +805,7 @@
          Documentation Version

          Internal API

          -sympy.holonomic.holonomic._create_table(table, domain=QQ)[source]
          +sympy.holonomic.holonomic._create_table(table, domain=QQ)[source]

          Creates the look-up table. For a similar implementation see meijerint._create_lookup_table.

          @@ -824,7 +824,7 @@

          Internal APIinitcond=True,

          -)[source] +)[source]

          Converts polynomials, rationals and algebraic functions to holonomic.

          diff --git a/dev/modules/holonomic/operations.html b/dev/modules/holonomic/operations.html index 1d27141234f..a316f0d0ac9 100644 --- a/dev/modules/holonomic/operations.html +++ b/dev/modules/holonomic/operations.html @@ -844,7 +844,7 @@

          Integration and Differentiationinitcond=False,

          -)[source] +)[source]

          Integrates the given holonomic function.

          Examples

          >>> from sympy.holonomic.holonomic import HolonomicFunction, DifferentialOperators
          @@ -862,7 +862,7 @@ 

          Integration and Differentiation
          -HolonomicFunction.diff(*args, **kwargs)[source]
          +HolonomicFunction.diff(*args, **kwargs)[source]

          Differentiation of the given Holonomic function.

          Examples

          >>> from sympy.holonomic.holonomic import HolonomicFunction, DifferentialOperators
          @@ -895,7 +895,7 @@ 

          Composition with polynomials**kwargs,

          -)[source] +)[source]

          Returns function after composition of a holonomic function with an algebraic function. The method cannot compute initial conditions for the result by itself, so they can be also be @@ -923,7 +923,7 @@

          Composition with polynomials

          -HolonomicFunction.to_sequence(lb=True)[source]
          +HolonomicFunction.to_sequence(lb=True)[source]

          Finds recurrence relation for the coefficients in the series expansion of the function about \(x_0\), where \(x_0\) is the point at which the initial condition is stored.

          @@ -985,7 +985,7 @@

          Series expansion_recur=None,

          -)[source] +)[source]

          Finds the power series expansion of given holonomic function about \(x_0\).

          Explanation

          A list of series might be returned if \(x_0\) is a regular point with @@ -1022,7 +1022,7 @@

          Numerical evaluationderivatives=False,

          -)[source] +)[source]

          Finds numerical value of a holonomic function using numerical methods. (RK4 by default). A set of points (real or complex) must be provided which will be the path for the numerical integration.

          @@ -1073,7 +1073,7 @@

          Convert to a linear combination of hypergeometric functions_recur=None,

          -)[source] +)[source]

          Returns a hypergeometric function (or linear combination of them) representing the given holonomic function.

          Explanation

          @@ -1106,7 +1106,7 @@

          Convert to a linear combination of hypergeometric functions

          -HolonomicFunction.to_meijerg()[source]
          +HolonomicFunction.to_meijerg()[source]

          Returns a linear combination of Meijer G-functions.

          Examples

          >>> from sympy.holonomic import expr_to_holonomic
          @@ -1129,7 +1129,7 @@ 

          Convert to a linear combination of Meijer G-functionsConvert to expressions

          -HolonomicFunction.to_expr()[source]
          +HolonomicFunction.to_expr()[source]

          Converts a Holonomic Function back to elementary functions.

          Examples

          >>> from sympy.holonomic.holonomic import HolonomicFunction, DifferentialOperators
          diff --git a/dev/modules/holonomic/represent.html b/dev/modules/holonomic/represent.html
          index 54d9a709b64..d083e87f020 100644
          --- a/dev/modules/holonomic/represent.html
          +++ b/dev/modules/holonomic/represent.html
          @@ -836,7 +836,7 @@ 

          Representation of holonomic functions in SymPy
          -class sympy.holonomic.holonomic.HolonomicFunction(annihilator, x, x0=0, y0=None)[source]
          +class sympy.holonomic.holonomic.HolonomicFunction(annihilator, x, x0=0, y0=None)[source]

          A Holonomic Function is a solution to a linear homogeneous ordinary differential equation with polynomial coefficients. This differential equation can also be represented by an annihilator i.e. a Differential @@ -901,7 +901,7 @@

          Representation of holonomic functions in SymPy
          -class sympy.holonomic.holonomic.DifferentialOperator(list_of_poly, parent)[source]
          +class sympy.holonomic.holonomic.DifferentialOperator(list_of_poly, parent)[source]

          Differential Operators are elements of Weyl Algebra. The Operators are defined by a list of polynomials in the base ring and the parent ring of the Operator i.e. the algebra it belongs to.

          @@ -932,7 +932,7 @@

          Representation of holonomic functions in SymPy
          -is_singular(x0)[source]
          +is_singular(x0)[source]

          Checks if the differential equation is singular at x0.

          @@ -940,7 +940,7 @@

          Representation of holonomic functions in SymPy
          -sympy.holonomic.holonomic.DifferentialOperators(base, generator)[source]
          +sympy.holonomic.holonomic.DifferentialOperators(base, generator)[source]

          This function is used to create annihilators using Dx.

          Parameters:
          @@ -975,7 +975,7 @@

          Representation of holonomic functions in SymPy
          -class sympy.holonomic.holonomic.DifferentialOperatorAlgebra(base, generator)[source]
          +class sympy.holonomic.holonomic.DifferentialOperatorAlgebra(base, generator)[source]

          An Ore Algebra is a set of noncommutative polynomials in the intermediate Dx and coefficients in a base polynomial ring \(A\). It follows the commutation rule:

          diff --git a/dev/modules/integrals/g-functions.html b/dev/modules/integrals/g-functions.html index 4b80e19d012..bfbf9f5dfca 100644 --- a/dev/modules/integrals/g-functions.html +++ b/dev/modules/integrals/g-functions.html @@ -1814,19 +1814,19 @@

          Implemented G-Function Formulae
          -exception sympy.integrals.meijerint._CoeffExpValueError[source]
          +exception sympy.integrals.meijerint._CoeffExpValueError[source]

          Exception raised by _get_coeff_exp, for internal use only.

          -sympy.integrals.meijerint._check_antecedents(g1, g2, x)[source]
          +sympy.integrals.meijerint._check_antecedents(g1, g2, x)[source]

          Return a condition under which the integral theorem applies.

          -sympy.integrals.meijerint._check_antecedents_1(g, x, helper=False)[source]
          +sympy.integrals.meijerint._check_antecedents_1(g, x, helper=False)[source]

          Return a condition under which the mellin transform of g exists. Any power of x has already been absorbed into the G function, so this is just \(\int_0^\infty g\, dx\).

          @@ -1837,13 +1837,13 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._check_antecedents_inversion(g, x)[source]
          +sympy.integrals.meijerint._check_antecedents_inversion(g, x)[source]

          Check antecedents for the laplace inversion integral.

          -sympy.integrals.meijerint._condsimp(cond, first=True)[source]
          +sympy.integrals.meijerint._condsimp(cond, first=True)[source]

          Do naive simplifications on cond.

          Explanation

          Note that this routine is completely ad-hoc, simplification rules being @@ -1860,13 +1860,13 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._create_lookup_table(table)[source]
          +sympy.integrals.meijerint._create_lookup_table(table)[source]

          Add formulae for the function -> meijerg lookup table.

          -sympy.integrals.meijerint._dummy(name, token, expr, **kwargs)[source]
          +sympy.integrals.meijerint._dummy(name, token, expr, **kwargs)[source]

          Return a dummy. This will return the same dummy if the same token+name is requested more than once, and it is not already in expr. This is for being cache-friendly.

          @@ -1874,20 +1874,20 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._dummy_(name, token, **kwargs)[source]
          +sympy.integrals.meijerint._dummy_(name, token, **kwargs)[source]

          Return a dummy associated to name and token. Same effect as declaring it globally.

          -sympy.integrals.meijerint._eval_cond(cond)[source]
          +sympy.integrals.meijerint._eval_cond(cond)[source]

          Re-evaluate the conditions.

          -sympy.integrals.meijerint._exponents(expr, x)[source]
          +sympy.integrals.meijerint._exponents(expr, x)[source]

          Find the exponents of x (not including zero) in expr.

          Examples

          >>> from sympy.integrals.meijerint import _exponents
          @@ -1907,7 +1907,7 @@ 

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._find_splitting_points(expr, x)[source]
          +sympy.integrals.meijerint._find_splitting_points(expr, x)[source]

          Find numbers a such that a linear substitution x -> x + a would (hopefully) simplify expr.

          Examples

          @@ -1926,20 +1926,20 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._flip_g(g)[source]
          +sympy.integrals.meijerint._flip_g(g)[source]

          Turn the G function into one of inverse argument (i.e. G(1/x) -> G’(x))

          -sympy.integrals.meijerint._functions(expr, x)[source]
          +sympy.integrals.meijerint._functions(expr, x)[source]

          Find the types of functions in expr, to estimate the complexity.

          -sympy.integrals.meijerint._get_coeff_exp(expr, x)[source]
          +sympy.integrals.meijerint._get_coeff_exp(expr, x)[source]

          When expr is known to be of the form c*x**b, with c and/or b possibly 1, return c, b.

          Examples

          @@ -1959,13 +1959,13 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._guess_expansion(f, x)[source]
          +sympy.integrals.meijerint._guess_expansion(f, x)[source]

          Try to guess sensible rewritings for integrand f(x).

          -sympy.integrals.meijerint._inflate_fox_h(g, a)[source]
          +sympy.integrals.meijerint._inflate_fox_h(g, a)[source]

          Let d denote the integrand in the definition of the G function g. Consider the function H which is defined in the same way, but with integrand d/Gamma(a*s) (contour conventions as usual).

          @@ -1976,14 +1976,14 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._inflate_g(g, n)[source]
          +sympy.integrals.meijerint._inflate_g(g, n)[source]

          Return C, h such that h is a G function of argument z**n and g = C*h.

          -sympy.integrals.meijerint._int0oo(g1, g2, x)[source]
          +sympy.integrals.meijerint._int0oo(g1, g2, x)[source]

          Express integral from zero to infinity g1*g2 using a G function, assuming the necessary conditions are fulfilled.

          Examples

          @@ -2000,7 +2000,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._int0oo_1(g, x)[source]
          +sympy.integrals.meijerint._int0oo_1(g, x)[source]

          Evaluate \(\int_0^\infty g\, dx\) using G functions, assuming the necessary conditions are fulfilled.

          Examples

          @@ -2015,20 +2015,20 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._int_inversion(g, x, t)[source]
          +sympy.integrals.meijerint._int_inversion(g, x, t)[source]

          Compute the laplace inversion integral, assuming the formula applies.

          -sympy.integrals.meijerint._is_analytic(f, x)[source]
          +sympy.integrals.meijerint._is_analytic(f, x)[source]

          Check if f(x), when expressed using G functions on the positive reals, will in fact agree with the G functions almost everywhere

          -sympy.integrals.meijerint._meijerint_definite_2(f, x)[source]
          +sympy.integrals.meijerint._meijerint_definite_2(f, x)[source]

          Try to integrate f dx from zero to infinity.

          The body of this function computes various ‘simplifications’ f1, f2, … of f (e.g. by calling expand_mul(), trigexpand() @@ -2040,7 +2040,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._meijerint_definite_3(f, x)[source]
          +sympy.integrals.meijerint._meijerint_definite_3(f, x)[source]

          Try to integrate f dx from zero to infinity.

          This function calls _meijerint_definite_4 to try to compute the integral. If this fails, it tries using linearity.

          @@ -2048,7 +2048,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._meijerint_definite_4(f, x, only_double=False)[source]
          +sympy.integrals.meijerint._meijerint_definite_4(f, x, only_double=False)[source]

          Try to integrate f dx from zero to infinity.

          Explanation

          This function tries to apply the integration theorems found in literature, @@ -2059,13 +2059,13 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._meijerint_indefinite_1(f, x)[source]
          +sympy.integrals.meijerint._meijerint_indefinite_1(f, x)[source]

          Helper that does not attempt any substitution.

          -sympy.integrals.meijerint._mul_args(f)[source]
          +sympy.integrals.meijerint._mul_args(f)[source]

          Return a list L such that Mul(*L) == f.

          If f is not a Mul or Pow, L=[f]. If f=g**n for an integer n, L=[g]*n. @@ -2074,7 +2074,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._mul_as_two_parts(f)[source]
          +sympy.integrals.meijerint._mul_as_two_parts(f)[source]

          Find all the ways to split f into a product of two terms. Return None on failure.

          Explanation

          @@ -2094,7 +2094,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._my_principal_branch(expr, period, full_pb=False)[source]
          +sympy.integrals.meijerint._my_principal_branch(expr, period, full_pb=False)[source]

          Bring expr nearer to its principal branch by removing superfluous factors. This function does not guarantee to yield the principal branch, @@ -2111,13 +2111,13 @@

          Implemented G-Function Formulaex: Symbol,

          -) tuple[type[Basic], ...][source] +) tuple[type[Basic], ...][source]

          Create a hashable entity describing the type of f.

          -sympy.integrals.meijerint._rewrite1(f, x, recursive=True)[source]
          +sympy.integrals.meijerint._rewrite1(f, x, recursive=True)[source]

          Try to rewrite f using a (sum of) single G functions with argument a*x**b. Return fac, po, g such that f = fac*po*g, fac is independent of x. and po = x**s. @@ -2127,7 +2127,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._rewrite2(f, x)[source]
          +sympy.integrals.meijerint._rewrite2(f, x)[source]

          Try to rewrite f as a product of two G functions of arguments a*x**b. Return fac, po, g1, g2 such that f = fac*po*g1*g2, where fac is independent of x and po is x**s. @@ -2137,13 +2137,13 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._rewrite_inversion(fac, po, g, x)[source]
          +sympy.integrals.meijerint._rewrite_inversion(fac, po, g, x)[source]

          Absorb po == x**s into g.

          -sympy.integrals.meijerint._rewrite_saxena(fac, po, g1, g2, x, full_pb=False)[source]
          +sympy.integrals.meijerint._rewrite_saxena(fac, po, g1, g2, x, full_pb=False)[source]

          Rewrite the integral fac*po*g1*g2 from 0 to oo in terms of G functions with argument c*x.

          Explanation

          @@ -2168,7 +2168,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._rewrite_saxena_1(fac, po, g, x)[source]
          +sympy.integrals.meijerint._rewrite_saxena_1(fac, po, g, x)[source]

          Rewrite the integral fac*po*g dx, from zero to infinity, as integral fac*G, where G has argument a*x. Note po=x**s. Return fac, G.

          @@ -2176,7 +2176,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._rewrite_single(f, x, recursive=True)[source]
          +sympy.integrals.meijerint._rewrite_single(f, x, recursive=True)[source]

          Try to rewrite f as a sum of single G functions of the form C*x**s*G(a*x**b), where b is a rational number and C is independent of x. We guarantee that result.argument.as_coeff_mul(x) returns (a, (x**b,)) @@ -2187,7 +2187,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint._split_mul(f, x)[source]
          +sympy.integrals.meijerint._split_mul(f, x)[source]

          Split expression f into fac, po, g, where fac is a constant factor, po = x**s for some s independent of s, and g is “the rest”.

          Examples

          @@ -2202,7 +2202,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint.meijerint_definite(f, x, a, b)[source]
          +sympy.integrals.meijerint.meijerint_definite(f, x, a, b)[source]

          Integrate f over the interval [a, b], by rewriting it as a product of two G functions, or as a single G function.

          Return res, cond, where cond are convergence conditions.

          @@ -2223,7 +2223,7 @@

          Implemented G-Function Formulae
          -sympy.integrals.meijerint.meijerint_indefinite(f, x)[source]
          +sympy.integrals.meijerint.meijerint_indefinite(f, x)[source]

          Compute an indefinite integral of f by rewriting it as a G function.

          Examples

          >>> from sympy.integrals.meijerint import meijerint_indefinite
          @@ -2237,7 +2237,7 @@ 

          Implemented G-Function Formulae
          -sympy.integrals.meijerint.meijerint_inversion(f, x, t)[source]
          +sympy.integrals.meijerint.meijerint_inversion(f, x, t)[source]

          Compute the inverse laplace transform \(\int_{c+i\infty}^{c-i\infty} f(x) e^{tx}\, dx\), for real c larger than the real part of all singularities of f.

          diff --git a/dev/modules/integrals/integrals.html b/dev/modules/integrals/integrals.html index 746ac8340ad..694d1c1a654 100644 --- a/dev/modules/integrals/integrals.html +++ b/dev/modules/integrals/integrals.html @@ -853,7 +853,7 @@

          Examples

          SymPy has special support for definite integrals, and integral transforms.

          -sympy.integrals.transforms.mellin_transform(f, x, s, **hints)[source]
          +sympy.integrals.transforms.mellin_transform(f, x, s, **hints)[source]

          Compute the Mellin transform \(F(s)\) of \(f(x)\),

          @@ -890,7 +890,7 @@

          Examples
          -class sympy.integrals.transforms.MellinTransform(*args)[source]
          +class sympy.integrals.transforms.MellinTransform(*args)[source]

          Class representing unevaluated Mellin transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute Mellin transforms, see the mellin_transform() @@ -899,7 +899,7 @@

          Examples
          -sympy.integrals.transforms.inverse_mellin_transform(F, s, x, strip, **hints)[source]
          +sympy.integrals.transforms.inverse_mellin_transform(F, s, x, strip, **hints)[source]

          Compute the inverse Mellin transform of \(F(s)\) over the fundamental strip given by strip=(a, b).

          Explanation

          @@ -945,7 +945,7 @@

          Examples
          -class sympy.integrals.transforms.InverseMellinTransform(*args)[source]
          +class sympy.integrals.transforms.InverseMellinTransform(*args)[source]

          Class representing unevaluated inverse Mellin transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse Mellin transforms, see the @@ -964,7 +964,7 @@

          Examples
          **hints,

          -)[source] +)[source]

          Compute the Laplace Transform \(F(s)\) of \(f(t)\),

          @@ -1063,7 +1063,7 @@

          Examples
          -sympy.integrals.transforms.laplace_correspondence(f, fdict, /)[source]
          +sympy.integrals.transforms.laplace_correspondence(f, fdict, /)[source]

          This helper function takes a function \(f\) that is the result of a laplace_transform or an inverse_laplace_transform. It replaces all unevaluated LaplaceTransform(y(t), t, s) by \(Y(s)\) for any \(s\) and @@ -1104,7 +1104,7 @@

          Examples
          -sympy.integrals.transforms.laplace_initial_conds(f, t, fdict, /)[source]
          +sympy.integrals.transforms.laplace_initial_conds(f, t, fdict, /)[source]

          This helper function takes a function \(f\) that is the result of a laplace_transform. It takes an fdict of the form {y: [1, 4, 2]}, where the values in the list are the initial value, the initial slope, the @@ -1145,7 +1145,7 @@

          Examples
          -class sympy.integrals.transforms.LaplaceTransform(*args)[source]
          +class sympy.integrals.transforms.LaplaceTransform(*args)[source]

          Class representing unevaluated Laplace transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute Laplace transforms, see the laplace_transform() @@ -1155,7 +1155,7 @@

          Examples tuple containing the same expression, a convergence plane, and conditions.

          -doit(**hints)[source]
          +doit(**hints)[source]

          Try to evaluate the transform in closed form.

          Explanation

          Standard hints are the following: @@ -1179,7 +1179,7 @@

          Examples
          **hints,

          -)[source] +)[source]

          Compute the inverse Laplace transform of \(F(s)\), defined as

          @@ -1216,14 +1216,14 @@

          Examples
          -class sympy.integrals.transforms.InverseLaplaceTransform(*args)[source]
          +class sympy.integrals.transforms.InverseLaplaceTransform(*args)[source]

          Class representing unevaluated inverse Laplace transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse Laplace transforms, see the inverse_laplace_transform() docstring.

          -doit(**hints)[source]
          +doit(**hints)[source]

          Try to evaluate the transform in closed form.

          Explanation

          Standard hints are the following: @@ -1237,7 +1237,7 @@

          Examples
          -sympy.integrals.transforms.fourier_transform(f, x, k, **hints)[source]
          +sympy.integrals.transforms.fourier_transform(f, x, k, **hints)[source]

          Compute the unitary, ordinary-frequency Fourier transform of f, defined as

          @@ -1281,7 +1281,7 @@

          Examples
          simplify=True,

          -)[source] +)[source]

          Compute a general Fourier-type transform

          @@ -1293,7 +1293,7 @@

          Examples
          -class sympy.integrals.transforms.FourierTransform(*args)[source]
          +class sympy.integrals.transforms.FourierTransform(*args)[source]

          Class representing unevaluated Fourier transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute Fourier transforms, see the fourier_transform() @@ -1302,7 +1302,7 @@

          Examples
          -sympy.integrals.transforms.inverse_fourier_transform(F, k, x, **hints)[source]
          +sympy.integrals.transforms.inverse_fourier_transform(F, k, x, **hints)[source]

          Compute the unitary, ordinary-frequency inverse Fourier transform of \(F\), defined as

          @@ -1334,7 +1334,7 @@

          Examples
          -class sympy.integrals.transforms.InverseFourierTransform(*args)[source]
          +class sympy.integrals.transforms.InverseFourierTransform(*args)[source]

          Class representing unevaluated inverse Fourier transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse Fourier transforms, see the @@ -1343,7 +1343,7 @@

          Examples
          -sympy.integrals.transforms.sine_transform(f, x, k, **hints)[source]
          +sympy.integrals.transforms.sine_transform(f, x, k, **hints)[source]

          Compute the unitary, ordinary-frequency sine transform of \(f\), defined as

          @@ -1373,7 +1373,7 @@

          Examples
          -class sympy.integrals.transforms.SineTransform(*args)[source]
          +class sympy.integrals.transforms.SineTransform(*args)[source]

          Class representing unevaluated sine transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute sine transforms, see the sine_transform() @@ -1382,7 +1382,7 @@

          Examples
          -sympy.integrals.transforms.inverse_sine_transform(F, k, x, **hints)[source]
          +sympy.integrals.transforms.inverse_sine_transform(F, k, x, **hints)[source]

          Compute the unitary, ordinary-frequency inverse sine transform of \(F\), defined as

          @@ -1413,7 +1413,7 @@

          Examples
          -class sympy.integrals.transforms.InverseSineTransform(*args)[source]
          +class sympy.integrals.transforms.InverseSineTransform(*args)[source]

          Class representing unevaluated inverse sine transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse sine transforms, see the @@ -1422,7 +1422,7 @@

          Examples
          -sympy.integrals.transforms.cosine_transform(f, x, k, **hints)[source]
          +sympy.integrals.transforms.cosine_transform(f, x, k, **hints)[source]

          Compute the unitary, ordinary-frequency cosine transform of \(f\), defined as

          @@ -1452,7 +1452,7 @@

          Examples
          -class sympy.integrals.transforms.CosineTransform(*args)[source]
          +class sympy.integrals.transforms.CosineTransform(*args)[source]

          Class representing unevaluated cosine transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute cosine transforms, see the cosine_transform() @@ -1461,7 +1461,7 @@

          Examples
          -sympy.integrals.transforms.inverse_cosine_transform(F, k, x, **hints)[source]
          +sympy.integrals.transforms.inverse_cosine_transform(F, k, x, **hints)[source]

          Compute the unitary, ordinary-frequency inverse cosine transform of \(F\), defined as

          @@ -1491,7 +1491,7 @@

          Examples
          -class sympy.integrals.transforms.InverseCosineTransform(*args)[source]
          +class sympy.integrals.transforms.InverseCosineTransform(*args)[source]

          Class representing unevaluated inverse cosine transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse cosine transforms, see the @@ -1500,7 +1500,7 @@

          Examples
          -sympy.integrals.transforms.hankel_transform(f, r, k, nu, **hints)[source]
          +sympy.integrals.transforms.hankel_transform(f, r, k, nu, **hints)[source]

          Compute the Hankel transform of \(f\), defined as

          @@ -1544,7 +1544,7 @@

          Examples
          -class sympy.integrals.transforms.HankelTransform(*args)[source]
          +class sympy.integrals.transforms.HankelTransform(*args)[source]

          Class representing unevaluated Hankel transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute Hankel transforms, see the hankel_transform() @@ -1553,7 +1553,7 @@

          Examples
          -sympy.integrals.transforms.inverse_hankel_transform(F, k, r, nu, **hints)[source]
          +sympy.integrals.transforms.inverse_hankel_transform(F, k, r, nu, **hints)[source]

          Compute the inverse Hankel transform of \(F\) defined as

          @@ -1597,7 +1597,7 @@

          Examples
          -class sympy.integrals.transforms.InverseHankelTransform(*args)[source]
          +class sympy.integrals.transforms.InverseHankelTransform(*args)[source]

          Class representing unevaluated inverse Hankel transforms.

          For usage of this class, see the IntegralTransform docstring.

          For how to compute inverse Hankel transforms, see the @@ -1606,7 +1606,7 @@

          Examples
          -class sympy.integrals.transforms.IntegralTransform(*args)[source]
          +class sympy.integrals.transforms.IntegralTransform(*args)[source]

          Base class for integral transforms.

          Explanation

          This class represents unevaluated transforms.

          @@ -1623,7 +1623,7 @@

          Examples number and possibly a convergence condition.

          -doit(**hints)[source]
          +doit(**hints)[source]

          Try to evaluate the transform in closed form.

          Explanation

          This general function handles linearity, but apart from that leaves @@ -1665,7 +1665,7 @@

          Examples
          -exception sympy.integrals.transforms.IntegralTransformError(transform, function, msg)[source]
          +exception sympy.integrals.transforms.IntegralTransformError(transform, function, msg)[source]

          Exception raised in relation to problems computing transforms.

          Explanation

          This class is mostly used internally; if integrals cannot be computed @@ -1688,7 +1688,7 @@

          Internalsratint().

          -sympy.integrals.rationaltools.ratint(f, x, **flags)[source]
          +sympy.integrals.rationaltools.ratint(f, x, **flags)[source]

          Performs indefinite integration of rational functions.

          Explanation

          Given a field \(K\) and a rational function \(f = p/q\), @@ -1719,7 +1719,7 @@

          Internals
          -sympy.integrals.rationaltools.ratint_ratpart(f, g, x)[source]
          +sympy.integrals.rationaltools.ratint_ratpart(f, g, x)[source]

          Horowitz-Ostrogradsky algorithm.

          Explanation

          Given a field K and polynomials f and g in K[x], such that f and g @@ -1748,7 +1748,7 @@

          Internals
          -sympy.integrals.rationaltools.ratint_logpart(f, g, x, t=None)[source]
          +sympy.integrals.rationaltools.ratint_logpart(f, g, x, t=None)[source]

          Lazard-Rioboo-Trager algorithm.

          Explanation

          Given a field K and polynomials f and g in K[x], such that f and g @@ -1787,7 +1787,7 @@

          Internals
          -sympy.integrals.trigonometry.trigintegrate(f, x, conds='piecewise')[source]
          +sympy.integrals.trigonometry.trigintegrate(f, x, conds='piecewise')[source]

          Integrate f = Mul(trig) over x.

          Examples

          >>> from sympy import sin, cos, tan, sec
          @@ -1828,7 +1828,7 @@ 

          Internalsdeltaintegrate() solves integrals with DiracDelta objects.

          -sympy.integrals.deltafunctions.deltaintegrate(f, x)[source]
          +sympy.integrals.deltafunctions.deltaintegrate(f, x)[source]

          Explanation

          The idea for integration is the following:

            @@ -1878,7 +1878,7 @@

            Internalssingularityintegrate() is applied if the function contains a SingularityFunction

            -sympy.integrals.singularityfunctions.singularityintegrate(f, x)[source]
            +sympy.integrals.singularityfunctions.singularityintegrate(f, x)[source]

            This function handles the indefinite integrations of Singularity functions. The integrate function calls this function internally whenever an instance of SingularityFunction is passed as argument.

            @@ -1943,7 +1943,7 @@

            Internalsconds='piecewise',

            -)[source] +)[source]

            The Risch Integration Algorithm.

            Explanation

            Only transcendental functions are supported. Currently, only exponentials @@ -2051,7 +2051,7 @@

            Internals**assumptions,

          -)[source] +)[source]

          Represents a nonelementary Integral.

          Explanation

          If the result of integrate() is an instance of this class, it is @@ -2103,7 +2103,7 @@

          Internalsintegral_steps() function.

          -sympy.integrals.manualintegrate.manualintegrate(f, var)[source]
          +sympy.integrals.manualintegrate.manualintegrate(f, var)[source]

          Explanation

          Compute indefinite integral of a single variable using an algorithm that resembles what a student would do by hand.

          @@ -2146,7 +2146,7 @@

          Internals
          -sympy.integrals.manualintegrate.integral_steps(integrand, symbol, **options)[source]
          +sympy.integrals.manualintegrate.integral_steps(integrand, symbol, **options)[source]

          Returns the steps needed to compute an integral.

          Returns:
          @@ -2206,7 +2206,7 @@

          Internals_try_heurisch=None,

          -)[source] +)[source]

          Compute indefinite integral using heuristic Risch algorithm.

          Explanation

          This is a heuristic approach to indefinite integration in finite @@ -2292,7 +2292,7 @@

          Internals
          -sympy.integrals.heurisch.components(f, x)[source]
          +sympy.integrals.heurisch.components(f, x)[source]

          Returns a set of all functional components of the given expression which includes symbols, function applications and compositions and non-integer powers. Fractional powers are collected with @@ -2320,7 +2320,7 @@

          Internals

          -sympy.integrals.integrals.integrate(f, var, ...)[source]
          +sympy.integrals.integrals.integrate(f, var, ...)[source]

          Deprecated since version 1.6: Using integrate() with Poly is deprecated. Use Poly.integrate() instead. See Using integrate with Poly.

          @@ -2469,7 +2469,7 @@

          API reference
          -sympy.integrals.integrals.line_integrate(field, Curve, variables)[source]
          +sympy.integrals.integrals.line_integrate(field, Curve, variables)[source]

          Compute the line integral.

          Examples

          >>> from sympy import Curve, line_integrate, E, ln
          @@ -2488,7 +2488,7 @@ 

          API referenceIntegral represents an unevaluated integral and has some methods that help in the integration of an expression.

          -class sympy.integrals.integrals.Integral(function, *symbols, **assumptions)[source]
          +class sympy.integrals.integrals.Integral(function, *symbols, **assumptions)[source]

          Represents unevaluated integral.

          @@ -2506,7 +2506,7 @@

          API referenceevaluate=True,

          -)[source] +)[source]

          Approximates a definite integral by a sum.

          Parameters:
          @@ -2617,7 +2617,7 @@

          API reference
          -doit(**hints)[source]
          +doit(**hints)[source]

          Perform the integration using any hints given.

          Examples

          >>> from sympy import Piecewise, S
          @@ -2659,7 +2659,7 @@ 

          API reference
          -principal_value(**kwargs)[source]
          +principal_value(**kwargs)[source]

          Compute the Cauchy Principal Value of the definite integral of a real function in the given interval on the real axis.

          Explanation

          @@ -2694,7 +2694,7 @@

          API reference
          -transform(x, u)[source]
          +transform(x, u)[source]

          Performs a change of variables from \(x\) to \(u\) using the relationship given by \(x\) and \(u\) which will define the transformations \(f\) and \(F\) (which are inverses of each other) as follows:

          @@ -2801,7 +2801,7 @@

          API referenceIntegral and Sum.

          -class sympy.concrete.expr_with_limits.ExprWithLimits(function, *symbols, **assumptions)[source]
          +class sympy.concrete.expr_with_limits.ExprWithLimits(function, *symbols, **assumptions)[source]
          property bound_symbols
          @@ -2987,7 +2987,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_legendre(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_legendre(n, n_digits)[source]

          Computes the Gauss-Legendre quadrature [R578] points and weights.

          Parameters:
          @@ -3054,7 +3054,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_laguerre(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_laguerre(n, n_digits)[source]

          Computes the Gauss-Laguerre quadrature [R580] points and weights.

          Parameters:
          @@ -3121,7 +3121,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_hermite(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_hermite(n, n_digits)[source]

          Computes the Gauss-Hermite quadrature [R582] points and weights.

          Parameters:
          @@ -3195,7 +3195,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_gen_laguerre(n, alpha, n_digits)[source]
          +sympy.integrals.quadrature.gauss_gen_laguerre(n, alpha, n_digits)[source]

          Computes the generalized Gauss-Laguerre quadrature [R585] points and weights.

          Parameters:
          @@ -3271,7 +3271,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_chebyshev_t(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_chebyshev_t(n, n_digits)[source]

          Computes the Gauss-Chebyshev quadrature [R587] points and weights of the first kind.

          @@ -3342,7 +3342,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_chebyshev_u(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_chebyshev_u(n, n_digits)[source]

          Computes the Gauss-Chebyshev quadrature [R589] points and weights of the second kind.

          @@ -3407,7 +3407,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_jacobi(n, alpha, beta, n_digits)[source]
          +sympy.integrals.quadrature.gauss_jacobi(n, alpha, beta, n_digits)[source]

          Computes the Gauss-Jacobi quadrature [R591] points and weights.

          Parameters:
          @@ -3482,7 +3482,7 @@

          Numeric Integrals
          -sympy.integrals.quadrature.gauss_lobatto(n, n_digits)[source]
          +sympy.integrals.quadrature.gauss_lobatto(n, n_digits)[source]

          Computes the Gauss-Lobatto quadrature [R594] points and weights.

          Parameters:
          @@ -3648,7 +3648,7 @@

          API referencemax_degree=None,

          -)[source] +)[source]

          Integrates polynomials over 2/3-Polytopes.

          Parameters:
          diff --git a/dev/modules/interactive.html b/dev/modules/interactive.html index d761a7cdbbc..ff0147c7d57 100644 --- a/dev/modules/interactive.html +++ b/dev/modules/interactive.html @@ -809,13 +809,13 @@
          Documentation Version

          Tools for setting up interactive sessions.

          -sympy.interactive.session.enable_automatic_int_sympification(shell)[source]
          +sympy.interactive.session.enable_automatic_int_sympification(shell)[source]

          Allow IPython to automatically convert integer literals to Integer.

          -sympy.interactive.session.enable_automatic_symbols(shell)[source]
          +sympy.interactive.session.enable_automatic_symbols(shell)[source]

          Allow IPython to automatically create symbols (isympy -a).

          @@ -830,13 +830,13 @@
          Documentation Version
          auto_int_to_Integer=False,
          -)[source] +)[source]

          Construct new IPython session.

          -sympy.interactive.session.init_python_session()[source]
          +sympy.interactive.session.init_python_session()[source]

          Construct new Python session.

          @@ -859,7 +859,7 @@
          Documentation Version
          argv=[],

          -)[source] +)[source]

          Initialize an embedded IPython or Python session. The IPython session is initiated with the –pylab option, without the numpy imports, so that matplotlib plotting can be interactive.

          @@ -977,7 +977,7 @@
          Documentation Version
          -sympy.interactive.session.int_to_Integer(s)[source]
          +sympy.interactive.session.int_to_Integer(s)[source]

          Wrap integer literals with Integer.

          This is based on the decistmt example from https://docs.python.org/3/library/tokenize.html.

          @@ -1029,7 +1029,7 @@
          Documentation Version
          **settings,
          -)[source] +)[source]

          Initializes pretty-printer depending on the environment.

          Parameters:
          diff --git a/dev/modules/liealgebras/index.html b/dev/modules/liealgebras/index.html index 00da8a5497c..e979d1437da 100644 --- a/dev/modules/liealgebras/index.html +++ b/dev/modules/liealgebras/index.html @@ -805,7 +805,7 @@
          Documentation Version

          Lie Algebra

          -class sympy.liealgebras.root_system.RootSystem(cartantype)[source]
          +class sympy.liealgebras.root_system.RootSystem(cartantype)[source]

          Represent the root system of a simple Lie algebra

          Every simple Lie algebra has a unique root system. To find the root system, we first consider the Cartan subalgebra of g, which is the maximal @@ -840,7 +840,7 @@

          Documentation Version

          -add_as_roots(root1, root2)[source]
          +add_as_roots(root1, root2)[source]

          Add two roots together if and only if their sum is also a root

          It takes as input two vectors which should be roots. It then computes their sum and checks if it is in the list of all possible roots. If it @@ -859,7 +859,7 @@

          Documentation Version
          -add_simple_roots(root1, root2)[source]
          +add_simple_roots(root1, root2)[source]

          Add two simple roots together

          The function takes as input two integers, root1 and root2. It then uses these integers as keys in the dictionary of simple roots, and gets @@ -876,7 +876,7 @@

          Documentation Version
          -all_roots()[source]
          +all_roots()[source]

          Generate all the roots of a given root system

          The result is a dictionary where the keys are integer numbers. It generates the roots by getting the dictionary of all positive roots @@ -887,7 +887,7 @@

          Documentation Version
          -cartan_matrix()[source]
          +cartan_matrix()[source]

          Cartan matrix of Lie algebra associated with this root system

          Examples

          >>> from sympy.liealgebras.root_system import RootSystem
          @@ -903,7 +903,7 @@ 
          Documentation Version
          -dynkin_diagram()[source]
          +dynkin_diagram()[source]

          Dynkin diagram of the Lie algebra associated with this root system

          Examples

          >>> from sympy.liealgebras.root_system import RootSystem
          @@ -917,7 +917,7 @@ 
          Documentation Version
          -root_space()[source]
          +root_space()[source]

          Return the span of the simple roots

          The root space is the vector space spanned by the simple roots, i.e. it is a vector space with a distinguished basis, the simple roots. This @@ -934,7 +934,7 @@

          Documentation Version
          -simple_roots()[source]
          +simple_roots()[source]

          Generate the simple roots of the Lie algebra

          The rank of the Lie algebra determines the number of simple roots that it has. This method obtains the rank of the Lie algebra, and then uses @@ -954,13 +954,13 @@

          Documentation Version
          -class sympy.liealgebras.type_a.TypeA(n)[source]
          +class sympy.liealgebras.type_a.TypeA(n)[source]

          This class contains the information about the A series of simple Lie algebras. ====

          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          This is a method just to generate roots with a 1 iin the ith position and a -1 in the jth position.

          @@ -968,13 +968,13 @@
          Documentation Version
          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of A_n

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          Returns the Cartan matrix for A_n. The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -995,7 +995,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1008,19 +1008,19 @@ 
          Documentation Version
          -highest_root()[source]
          +highest_root()[source]

          Returns the highest weight root for A_n

          -lie_algebra()[source]
          +lie_algebra()[source]

          Returns the Lie algebra associated with A_n

          -positive_roots()[source]
          +positive_roots()[source]

          This method generates all the positive roots of A_n. This is half of all of the roots of A_n; by multiplying all the positive roots by -1 we @@ -1037,13 +1037,13 @@

          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots for A_n

          -simple_root(i)[source]
          +simple_root(i)[source]

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the roots such that an element of Q is called a @@ -1069,10 +1069,10 @@

          Documentation Version
          -class sympy.liealgebras.type_b.TypeB(n)[source]
          +class sympy.liealgebras.type_b.TypeB(n)[source]
          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          This is a method just to generate roots with a 1 iin the ith position and a -1 in the jth position.

          @@ -1080,13 +1080,13 @@
          Documentation Version
          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of B_n

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          Returns the Cartan matrix for B_n. The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1107,7 +1107,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1120,13 +1120,13 @@ 
          Documentation Version
          -lie_algebra()[source]
          +lie_algebra()[source]

          Returns the Lie algebra associated with B_n

          -positive_roots()[source]
          +positive_roots()[source]

          This method generates all the positive roots of A_n. This is half of all of the roots of B_n; by multiplying all the positive roots by -1 we @@ -1143,13 +1143,13 @@

          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots for B_n”

          -simple_root(i)[source]
          +simple_root(i)[source]

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the roots such that an element of Q is called a @@ -1177,22 +1177,22 @@

          Documentation Version
          -class sympy.liealgebras.type_c.TypeC(n)[source]
          +class sympy.liealgebras.type_c.TypeC(n)[source]
          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          Generate roots with 1 in ith position and a -1 in jth position

          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of C_n

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          The Cartan matrix for C_n

          The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1213,7 +1213,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1226,13 +1226,13 @@ 
          Documentation Version
          -lie_algebra()[source]
          +lie_algebra()[source]

          Returns the Lie algebra associated with C_n”

          -positive_roots()[source]
          +positive_roots()[source]

          Generates all the positive roots of A_n

          This is half of all of the roots of C_n; by multiplying all the positive roots by -1 we get the negative roots.

          @@ -1248,13 +1248,13 @@
          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots for C_n”

          -simple_root(i)[source]
          +simple_root(i)[source]

          The ith simple root for the C series

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the @@ -1282,10 +1282,10 @@

          Documentation Version
          -class sympy.liealgebras.type_d.TypeD(n)[source]
          +class sympy.liealgebras.type_d.TypeD(n)[source]
          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          This is a method just to generate roots with a 1 iin the ith position and a -1 in the jth position.

          @@ -1293,13 +1293,13 @@
          Documentation Version
          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of D_n

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          Returns the Cartan matrix for D_n. The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1320,7 +1320,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dmension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1333,13 +1333,13 @@ 
          Documentation Version
          -lie_algebra()[source]
          +lie_algebra()[source]

          Returns the Lie algebra associated with D_n”

          -positive_roots()[source]
          +positive_roots()[source]

          This method generates all the positive roots of A_n. This is half of all of the roots of D_n by multiplying all the positive roots by -1 we @@ -1356,13 +1356,13 @@

          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots for D_n”

          -simple_root(i)[source]
          +simple_root(i)[source]

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the roots such that an element of Q is called a @@ -1390,10 +1390,10 @@

          Documentation Version
          -class sympy.liealgebras.type_e.TypeE(n)[source]
          +class sympy.liealgebras.type_e.TypeE(n)[source]
          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          This is a method just to generate roots with a -1 in the ith position and a 1 in the jth position.

          @@ -1401,13 +1401,13 @@
          Documentation Version
          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of E_n

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          Returns the Cartan matrix for G_2 The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1428,7 +1428,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1441,7 +1441,7 @@ 
          Documentation Version
          -positive_roots()[source]
          +positive_roots()[source]

          This method generates all the positive roots of A_n. This is half of all of the roots of E_n; by multiplying all the positive roots by -1 we @@ -1458,13 +1458,13 @@

          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots of E_n

          -simple_root(i)[source]
          +simple_root(i)[source]

          Every Lie algebra has a unique root system. Given a root system Q, there is a subset of the roots such that an element of Q is called a @@ -1487,22 +1487,22 @@

          Documentation Version
          -class sympy.liealgebras.type_f.TypeF(n)[source]
          +class sympy.liealgebras.type_f.TypeF(n)[source]
          -basic_root(i, j)[source]
          +basic_root(i, j)[source]

          Generate roots with 1 in ith position and -1 in jth position

          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of F_4

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          The Cartan matrix for F_4

          The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1523,7 +1523,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1536,7 +1536,7 @@ 
          Documentation Version
          -positive_roots()[source]
          +positive_roots()[source]

          Generate all the positive roots of A_n

          This is half of all of the roots of F_4; by multiplying all the positive roots by -1 we get the negative roots.

          @@ -1552,13 +1552,13 @@
          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots for F_4

          -simple_root(i)[source]
          +simple_root(i)[source]

          The ith simple root of F_4

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the @@ -1581,16 +1581,16 @@

          Documentation Version
          -class sympy.liealgebras.type_g.TypeG(n)[source]
          +class sympy.liealgebras.type_g.TypeG(n)[source]
          -basis()[source]
          +basis()[source]

          Returns the number of independent generators of G_2

          -cartan_matrix()[source]
          +cartan_matrix()[source]

          The Cartan matrix for G_2

          The Cartan matrix matrix for a Lie algebra is generated by assigning an ordering to the simple @@ -1609,7 +1609,7 @@

          Documentation Version
          -dimension()[source]
          +dimension()[source]

          Dimension of the vector space V underlying the Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_type import CartanType
          @@ -1622,7 +1622,7 @@ 
          Documentation Version
          -positive_roots()[source]
          +positive_roots()[source]

          Generate all the positive roots of A_n

          This is half of all of the roots of A_n; by multiplying all the positive roots by -1 we get the negative roots.

          @@ -1638,13 +1638,13 @@
          Documentation Version
          -roots()[source]
          +roots()[source]

          Returns the total number of roots of G_2”

          -simple_root(i)[source]
          +simple_root(i)[source]

          The ith simple root of G_2

          Every lie algebra has a unique root system. Given a root system Q, there is a subset of the @@ -1667,7 +1667,7 @@

          Documentation Version
          -class sympy.liealgebras.weyl_group.WeylGroup(cartantype)[source]
          +class sympy.liealgebras.weyl_group.WeylGroup(cartantype)[source]

          For each semisimple Lie group, we have a Weyl group. It is a subgroup of the isometry group of the root system. Specifically, it’s the subgroup that is generated by reflections through the hyperplanes orthogonal to @@ -1675,7 +1675,7 @@

          Documentation Version
          group is a finite Coxeter group.

          -coxeter_diagram()[source]
          +coxeter_diagram()[source]

          This method returns the Coxeter diagram corresponding to a Weyl group. The Coxeter diagram can be obtained from a Lie algebra’s Dynkin diagram by deleting all arrows; the Coxeter diagram is the undirected graph. @@ -1696,7 +1696,7 @@

          Documentation Version
          -delete_doubles(reflections)[source]
          +delete_doubles(reflections)[source]

          This is a helper method for determining the order of an element in the Weyl group of G2. It takes a Weyl element and if repeated simple reflections in it, it deletes them.

          @@ -1704,7 +1704,7 @@
          Documentation Version
          -element_order(weylelt)[source]
          +element_order(weylelt)[source]

          This method returns the order of a given Weyl group element, which should be specified by the user in the form of products of the generating reflections, i.e. of the form r1*r2 etc.

          @@ -1722,7 +1722,7 @@
          Documentation Version
          -generators()[source]
          +generators()[source]

          This method creates the generating reflections of the Weyl group for a given Lie algebra. For a Lie algebra of rank n, there are n different generating reflections. This function returns them as @@ -1738,7 +1738,7 @@

          Documentation Version
          -group_name()[source]
          +group_name()[source]

          This method returns some general information about the Weyl group for a given Lie algebra. It returns the name of the group and the elements it acts on, if relevant.

          @@ -1746,7 +1746,7 @@
          Documentation Version
          -group_order()[source]
          +group_order()[source]

          This method returns the order of the Weyl group. For types A, B, C, D, and E the order depends on the rank of the Lie algebra. For types F and G, @@ -1762,7 +1762,7 @@

          Documentation Version
          -matrix_form(weylelt)[source]
          +matrix_form(weylelt)[source]

          This method takes input from the user in the form of products of the generating reflections, and returns the matrix corresponding to the element of the Weyl group. Since each element of the Weyl group is @@ -1786,23 +1786,23 @@

          Documentation Version
          -class sympy.liealgebras.cartan_type.CartanType_generator[source]
          +class sympy.liealgebras.cartan_type.CartanType_generator[source]

          Constructor for actually creating things

          -class sympy.liealgebras.cartan_type.Standard_Cartan(series, n)[source]
          +class sympy.liealgebras.cartan_type.Standard_Cartan(series, n)[source]

          Concrete base class for Cartan types such as A4, etc

          -rank()[source]
          +rank()[source]

          Returns the rank of the Lie algebra

          -series()[source]
          +series()[source]

          Returns the type of the Lie algebra

          @@ -1810,7 +1810,7 @@
          Documentation Version
          -sympy.liealgebras.dynkin_diagram.DynkinDiagram(t)[source]
          +sympy.liealgebras.dynkin_diagram.DynkinDiagram(t)[source]

          Display the Dynkin diagram of a given Lie algebra

          Works by generating the CartanType for the input, t, and then returning the Dynkin diagram method from the individual classes.

          @@ -1830,7 +1830,7 @@
          Documentation Version
          -sympy.liealgebras.cartan_matrix.CartanMatrix(ct)[source]
          +sympy.liealgebras.cartan_matrix.CartanMatrix(ct)[source]

          Access the Cartan matrix of a specific Lie algebra

          Examples

          >>> from sympy.liealgebras.cartan_matrix import CartanMatrix
          diff --git a/dev/modules/logic.html b/dev/modules/logic.html
          index 8637ee82ea8..34fe7fcede5 100644
          --- a/dev/modules/logic.html
          +++ b/dev/modules/logic.html
          @@ -840,7 +840,7 @@ 

          Forming logical expressions
          -sympy.logic.boolalg.SOPform(variables, minterms, dontcares=None)[source]
          +sympy.logic.boolalg.SOPform(variables, minterms, dontcares=None)[source]

          The SOPform function uses simplified_pairs and a redundant group- eliminating algorithm to convert the list of all input combos that generate ‘1’ (the minterms) into the smallest sum-of-products form.

          @@ -901,7 +901,7 @@

          Forming logical expressions
          -sympy.logic.boolalg.POSform(variables, minterms, dontcares=None)[source]
          +sympy.logic.boolalg.POSform(variables, minterms, dontcares=None)[source]

          The POSform function uses simplified_pairs and a redundant-group eliminating algorithm to convert the list of all input combinations that generate ‘1’ (the minterms) into the smallest product-of-sums form.

          @@ -962,7 +962,7 @@

          Forming logical expressions
          -sympy.logic.boolalg.ANFform(variables, truthvalues)[source]
          +sympy.logic.boolalg.ANFform(variables, truthvalues)[source]

          The ANFform function converts the list of truth values to Algebraic Normal Form (ANF).

          The variables must be given as the first argument.

          @@ -1006,11 +1006,11 @@

          Forming logical expressions

          -class sympy.logic.boolalg.Boolean(*args)[source]
          +class sympy.logic.boolalg.Boolean(*args)[source]

          A Boolean object is an object for which logic operations make sense.

          -as_set()[source]
          +as_set()[source]

          Rewrites Boolean expression in terms of real sets.

          Examples

          >>> from sympy import Symbol, Eq, Or, And
          @@ -1029,7 +1029,7 @@ 

          Boolean functions
          -equals(other)[source]
          +equals(other)[source]

          Returns True if the given formulas have the same truth table. For two formulas to be equal they must have the same literals.

          Examples

          @@ -1049,7 +1049,7 @@

          Boolean functions
          -class sympy.logic.boolalg.BooleanTrue[source]
          +class sympy.logic.boolalg.BooleanTrue[source]

          SymPy version of True, a singleton that can be accessed via S.true.

          This is the SymPy version of True, for use in the logic module. The primary advantage of using true instead of True is that shorthand Boolean @@ -1122,7 +1122,7 @@

          Boolean functions
          -as_set()[source]
          +as_set()[source]

          Rewrite logic operators and relationals in terms of real sets.

          Examples

          >>> from sympy import true
          @@ -1136,7 +1136,7 @@ 

          Boolean functions
          -class sympy.logic.boolalg.BooleanFalse[source]
          +class sympy.logic.boolalg.BooleanFalse[source]

          SymPy version of False, a singleton that can be accessed via S.false.

          This is the SymPy version of False, for use in the logic module. The primary advantage of using false instead of False is that shorthand @@ -1173,7 +1173,7 @@

          Boolean functions
          -as_set()[source]
          +as_set()[source]

          Rewrite logic operators and relationals in terms of real sets.

          Examples

          >>> from sympy import false
          @@ -1187,7 +1187,7 @@ 

          Boolean functions
          -class sympy.logic.boolalg.And(*args)[source]
          +class sympy.logic.boolalg.And(*args)[source]

          Logical AND function.

          It evaluates its arguments in order, returning false immediately when an argument is false and true if they are all true.

          @@ -1211,7 +1211,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Or(*args)[source]
          +class sympy.logic.boolalg.Or(*args)[source]

          Logical OR function

          It evaluates its arguments in order, returning true immediately when an argument is true, and false if they are all false.

          @@ -1235,7 +1235,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Not(arg)[source]
          +class sympy.logic.boolalg.Not(arg)[source]

          Logical Not function (negation)

          Returns true if the statement is false or False. Returns false if the statement is true or True.

          @@ -1281,7 +1281,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Xor(*args)[source]
          +class sympy.logic.boolalg.Xor(*args)[source]

          Logical XOR (exclusive OR) function.

          Returns True if an odd number of the arguments are True and the rest are False.

          @@ -1316,7 +1316,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Nand(*args)[source]
          +class sympy.logic.boolalg.Nand(*args)[source]

          Logical NAND function.

          It evaluates its arguments in order, giving True immediately if any of them are False, and False if they are all True.

          @@ -1338,7 +1338,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Nor(*args)[source]
          +class sympy.logic.boolalg.Nor(*args)[source]

          Logical NOR function.

          It evaluates its arguments in order, giving False immediately if any of them are True, and True if they are all False.

          @@ -1366,7 +1366,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Xnor(*args)[source]
          +class sympy.logic.boolalg.Xnor(*args)[source]

          Logical XNOR function.

          Returns False if an odd number of the arguments are True and the rest are False.

          @@ -1390,7 +1390,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Implies(*args)[source]
          +class sympy.logic.boolalg.Implies(*args)[source]

          Logical implication.

          A implies B is equivalent to if A then B. Mathematically, it is written as \(A \Rightarrow B\) and is equivalent to \(\neg A \vee B\) or ~A | B.

          @@ -1436,7 +1436,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Equivalent(*args)[source]
          +class sympy.logic.boolalg.Equivalent(*args)[source]

          Equivalence relation.

          Equivalent(A, B) is True iff A and B are both True or both False.

          Returns True if all of the arguments are logically equivalent. @@ -1457,7 +1457,7 @@

          Boolean functions
          -class sympy.logic.boolalg.ITE(*args)[source]
          +class sympy.logic.boolalg.ITE(*args)[source]

          If-then-else clause.

          ITE(A, B, C) evaluates and returns the result of B if A is true else it returns the result of C. All args must be Booleans.

          @@ -1491,7 +1491,7 @@

          Boolean functions
          -class sympy.logic.boolalg.Exclusive(*args)[source]
          +class sympy.logic.boolalg.Exclusive(*args)[source]

          True if only one or no argument is true.

          Exclusive(A, B, C) is equivalent to ~(A & B) & ~(A & C) & ~(B & C).

          For two arguments, this is equivalent to Xor.

          @@ -1511,7 +1511,7 @@

          Boolean functions
          -sympy.logic.boolalg.to_anf(expr, deep=True)[source]
          +sympy.logic.boolalg.to_anf(expr, deep=True)[source]

          Converts expr to Algebraic Normal Form (ANF).

          ANF is a canonical normal form, which means that two equivalent formulas will convert to the same ANF.

          @@ -1550,7 +1550,7 @@

          Boolean functions
          -sympy.logic.boolalg.to_cnf(expr, simplify=False, force=False)[source]
          +sympy.logic.boolalg.to_cnf(expr, simplify=False, force=False)[source]

          Convert a propositional logical sentence expr to conjunctive normal form: ((A | ~B | ...) & (B | C | ...) & ...). If simplify is True, expr is evaluated to its simplest CNF @@ -1570,7 +1570,7 @@

          Boolean functions
          -sympy.logic.boolalg.to_dnf(expr, simplify=False, force=False)[source]
          +sympy.logic.boolalg.to_dnf(expr, simplify=False, force=False)[source]

          Convert a propositional logical sentence expr to disjunctive normal form: ((A & ~B & ...) | (B & C & ...) | ...). If simplify is True, expr is evaluated to its simplest DNF form using @@ -1590,7 +1590,7 @@

          Boolean functions
          -sympy.logic.boolalg.to_nnf(expr, simplify=True)[source]
          +sympy.logic.boolalg.to_nnf(expr, simplify=True)[source]

          Converts expr to Negation Normal Form (NNF).

          A logical expression is in NNF if it contains only And, Or and Not, @@ -1609,7 +1609,7 @@

          Boolean functions
          -sympy.logic.boolalg.is_anf(expr)[source]
          +sympy.logic.boolalg.is_anf(expr)[source]

          Checks if expr is in Algebraic Normal Form (ANF).

          A logical expression is in ANF if it has the form

          @@ -1637,7 +1637,7 @@

          Boolean functions
          -sympy.logic.boolalg.is_cnf(expr)[source]
          +sympy.logic.boolalg.is_cnf(expr)[source]

          Test whether or not an expression is in conjunctive normal form.

          Examples

          >>> from sympy.logic.boolalg import is_cnf
          @@ -1654,7 +1654,7 @@ 

          Boolean functions
          -sympy.logic.boolalg.is_dnf(expr)[source]
          +sympy.logic.boolalg.is_dnf(expr)[source]

          Test whether or not an expression is in disjunctive normal form.

          Examples

          >>> from sympy.logic.boolalg import is_dnf
          @@ -1673,7 +1673,7 @@ 

          Boolean functions
          -sympy.logic.boolalg.is_nnf(expr, simplified=True)[source]
          +sympy.logic.boolalg.is_nnf(expr, simplified=True)[source]

          Checks if expr is in Negation Normal Form (NNF).

          A logical expression is in NNF if it contains only And, Or and Not, @@ -1698,7 +1698,7 @@

          Boolean functions
          -sympy.logic.boolalg.gateinputcount(expr)[source]
          +sympy.logic.boolalg.gateinputcount(expr)[source]

          Return the total number of inputs for the logic gates realizing the Boolean expression.

          @@ -1762,7 +1762,7 @@

          Simplification and equivalence-testingdontcare=None,

          -)[source] +)[source]

          This function simplifies a boolean function to its simplified version in SOP or POS form. The return type is an Or or And object in SymPy.

          @@ -1823,7 +1823,7 @@

          Simplification and equivalence-testing
          -sympy.logic.boolalg.bool_map(bool1, bool2)[source]
          +sympy.logic.boolalg.bool_map(bool1, bool2)[source]

          Return the simplified version of bool1, and the mapping of variables that makes the two expressions bool1 and bool2 represent the same logical behaviour for some correspondence between the variables @@ -1861,7 +1861,7 @@

          Manipulating expressions
          -sympy.logic.boolalg.distribute_and_over_or(expr)[source]
          +sympy.logic.boolalg.distribute_and_over_or(expr)[source]

          Given a sentence expr consisting of conjunctions and disjunctions of literals, return an equivalent sentence in CNF.

          Examples

          @@ -1875,7 +1875,7 @@

          Manipulating expressions
          -sympy.logic.boolalg.distribute_or_over_and(expr)[source]
          +sympy.logic.boolalg.distribute_or_over_and(expr)[source]

          Given a sentence expr consisting of conjunctions and disjunctions of literals, return an equivalent sentence in DNF.

          Note that the output is NOT simplified.

          @@ -1890,7 +1890,7 @@

          Manipulating expressions
          -sympy.logic.boolalg.distribute_xor_over_and(expr)[source]
          +sympy.logic.boolalg.distribute_xor_over_and(expr)[source]

          Given a sentence expr consisting of conjunction and exclusive disjunctions of literals, return an equivalent exclusive disjunction.

          @@ -1906,7 +1906,7 @@

          Manipulating expressions
          -sympy.logic.boolalg.eliminate_implications(expr)[source]
          +sympy.logic.boolalg.eliminate_implications(expr)[source]

          Change Implies and Equivalent into And, Or, and Not. That is, return an expression that is equivalent to expr, but has only @@ -1931,7 +1931,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.truth_table(expr, variables, input=True)[source]
          +sympy.logic.boolalg.truth_table(expr, variables, input=True)[source]

          Return a generator of all possible configurations of the input variables, and the result of the boolean expression for those values.

          @@ -1987,7 +1987,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.integer_to_term(n, bits=None, str=False)[source]
          +sympy.logic.boolalg.integer_to_term(n, bits=None, str=False)[source]

          Return a list of length bits corresponding to the binary value of n with small bits to the right (last). If bits is omitted, the length will be the number required to represent n. If the bits are @@ -2030,7 +2030,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.term_to_integer(term)[source]
          +sympy.logic.boolalg.term_to_integer(term)[source]

          Return an integer corresponding to the base-2 digits given by term.

          Parameters:
          @@ -2049,7 +2049,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.bool_maxterm(k, variables)[source]
          +sympy.logic.boolalg.bool_maxterm(k, variables)[source]

          Return the k-th maxterm.

          Each maxterm is assigned an index based on the opposite conventional binary encoding used for minterms. The maxterm @@ -2081,7 +2081,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.bool_minterm(k, variables)[source]
          +sympy.logic.boolalg.bool_minterm(k, variables)[source]

          Return the k-th minterm.

          Minterms are numbered by a binary encoding of the complementation pattern of the variables. This convention assigns the value 1 to @@ -2112,7 +2112,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.bool_monomial(k, variables)[source]
          +sympy.logic.boolalg.bool_monomial(k, variables)[source]

          Return the k-th monomial.

          Monomials are numbered by a binary encoding of the presence and absences of the variables. This convention assigns the value @@ -2145,7 +2145,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.anf_coeffs(truthvalues)[source]
          +sympy.logic.boolalg.anf_coeffs(truthvalues)[source]

          Convert a list of truth values of some boolean expression to the list of coefficients of the polynomial mod 2 (exclusive disjunction) representing the boolean expression in ANF @@ -2178,7 +2178,7 @@

          Truth tables and related functions
          -sympy.logic.boolalg.to_int_repr(clauses, symbols)[source]
          +sympy.logic.boolalg.to_int_repr(clauses, symbols)[source]

          Takes clauses in CNF format and puts them into an integer representation.

          Examples

          >>> from sympy.logic.boolalg import to_int_repr
          @@ -2223,7 +2223,7 @@ 

          Truth tables and related functionsuse_lra_theory=False,

          -)[source] +)[source]

          Check satisfiability of a propositional sentence. Returns a model when it succeeds. Returns {true: true} for trivially true expressions.

          diff --git a/dev/modules/matrices/dense.html b/dev/modules/matrices/dense.html index 83cceef34f1..656c55d2917 100644 --- a/dev/modules/matrices/dense.html +++ b/dev/modules/matrices/dense.html @@ -805,17 +805,17 @@
          Documentation Version

          Dense Matrices

          -sympy.matrices.dense.Matrix[source]
          +sympy.matrices.dense.Matrix[source]

          alias of MutableDenseMatrix

          -class sympy.matrices.dense.DenseMatrix[source]
          +class sympy.matrices.dense.DenseMatrix[source]

          Matrix implementation based on DomainMatrix as the internal representation

          -LDLdecomposition(hermitian=True)[source]
          +LDLdecomposition(hermitian=True)[source]

          Returns the LDL Decomposition (L, D) of matrix A, such that L * D * L.H == A if hermitian flag is True, or L * D * L.T == A if hermitian is False. @@ -865,13 +865,13 @@

          Dense Matrices
          -as_immutable()[source]
          +as_immutable()[source]

          Returns an Immutable version of this Matrix

          -as_mutable()[source]
          +as_mutable()[source]

          Returns a mutable version of this matrix

          Examples

          >>> from sympy import ImmutableMatrix
          @@ -888,7 +888,7 @@ 

          Dense Matrices
          -cholesky(hermitian=True)[source]
          +cholesky(hermitian=True)[source]

          Returns the Cholesky-type decomposition L of a matrix A such that L * L.H == A if hermitian flag is True, or L * L.T == A if hermitian is False.

          @@ -942,7 +942,7 @@

          Dense Matrices
          -lower_triangular_solve(rhs)[source]
          +lower_triangular_solve(rhs)[source]

          Solves Ax = B, where A is a lower triangular matrix.

          See also

          @@ -952,7 +952,7 @@

          Dense Matrices
          -upper_triangular_solve(rhs)[source]
          +upper_triangular_solve(rhs)[source]

          Solves Ax = B, where A is an upper triangular matrix.

          See also

          @@ -964,10 +964,10 @@

          Dense Matrices
          -class sympy.matrices.dense.MutableDenseMatrix(*args, **kwargs)[source]
          +class sympy.matrices.dense.MutableDenseMatrix(*args, **kwargs)[source]
          -simplify(**kwargs)[source]
          +simplify(**kwargs)[source]

          Applies simplify to the elements of a matrix in place.

          This is a shortcut for M.applyfunc(lambda x: simplify(x, ratio, measure))

          @@ -980,7 +980,7 @@

          Dense Matrices
          -class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[source]
          +class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[source]

          Create an immutable version of a matrix.

          Examples

          >>> from sympy import eye, ImmutableMatrix
          diff --git a/dev/modules/matrices/expressions.html b/dev/modules/matrices/expressions.html
          index 2572c71e660..fb721196dea 100644
          --- a/dev/modules/matrices/expressions.html
          +++ b/dev/modules/matrices/expressions.html
          @@ -842,7 +842,7 @@ 
          Documentation Version

          Matrix Expressions Core Reference

          -class sympy.matrices.expressions.MatrixExpr(*args, **kwargs)[source]
          +class sympy.matrices.expressions.MatrixExpr(*args, **kwargs)[source]

          Superclass for Matrix Expressions

          MatrixExprs represent abstract matrices, linear transformations represented within a particular basis.

          @@ -865,13 +865,13 @@

          Matrix Expressions Core Reference
          -as_coeff_Mul(rational=False)[source]
          +as_coeff_Mul(rational=False)[source]

          Efficiently extract the coefficient of a product.

          -as_explicit()[source]
          +as_explicit()[source]

          Returns a dense Matrix with elements represented explicitly

          Returns an object of type ImmutableDenseMatrix.

          Examples

          @@ -897,7 +897,7 @@

          Matrix Expressions Core Reference
          -as_mutable()[source]
          +as_mutable()[source]

          Returns a dense, mutable matrix with elements represented explicitly

          Examples

          >>> from sympy import Identity
          @@ -924,7 +924,7 @@ 

          Matrix Expressions Core Reference
          -equals(other)[source]
          +equals(other)[source]

          Test elementwise equality between matrices, potentially of different types

          >>> from sympy import Identity, eye
          @@ -945,7 +945,7 @@ 

          Matrix Expressions Core Referencedimensions=None,

          -)[source] +)[source]

          Parse expression of matrices with explicitly summed indices into a matrix expression without indices, if possible.

          This transformation expressed in mathematical notation:

          @@ -986,7 +986,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.MatrixSymbol(name, n, m)[source]
          +class sympy.matrices.expressions.MatrixSymbol(name, n, m)[source]

          Symbolic representation of a Matrix object

          Creates a SymPy Symbol to represent a Matrix. This matrix has a shape and can be included in Matrix Expressions

          @@ -1013,7 +1013,7 @@

          Matrix Expressions Core Reference_sympify=True,

          -)[source] +)[source]

          A Sum of Matrix Expressions

          MatAdd inherits from and operates like SymPy Add

          Examples

          @@ -1038,7 +1038,7 @@

          Matrix Expressions Core Reference_sympify=True,

          -)[source] +)[source]

          A product of matrix expressions

          Examples

          >>> from sympy import MatMul, MatrixSymbol
          @@ -1053,12 +1053,12 @@ 

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.MatPow(base, exp, evaluate=False, **options)[source]
          +class sympy.matrices.expressions.MatPow(base, exp, evaluate=False, **options)[source]

          -sympy.matrices.expressions.hadamard_product(*matrices)[source]
          +sympy.matrices.expressions.hadamard_product(*matrices)[source]

          Return the elementwise (aka Hadamard) product of matrices.

          Examples

          >>> from sympy import hadamard_product, MatrixSymbol
          @@ -1076,7 +1076,7 @@ 

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.HadamardProduct(*args, evaluate=False, check=None)[source]
          +class sympy.matrices.expressions.HadamardProduct(*args, evaluate=False, check=None)[source]

          Elementwise product of matrix expressions

          Examples

          Hadamard product for matrix symbols:

          @@ -1095,7 +1095,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.HadamardPower(base, exp)[source]
          +class sympy.matrices.expressions.HadamardPower(base, exp)[source]

          Elementwise power of matrix expressions

          Parameters:
          @@ -1149,7 +1149,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.Inverse(mat, exp=-1)[source]
          +class sympy.matrices.expressions.Inverse(mat, exp=-1)[source]

          The multiplicative inverse of a matrix expression

          This is a symbolic object that simply stores its argument without evaluating it. To actually compute the inverse, use the .inverse() @@ -1172,7 +1172,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.Transpose(*args, **kwargs)[source]
          +class sympy.matrices.expressions.Transpose(*args, **kwargs)[source]

          The transpose of a matrix expression.

          This is a symbolic object that simply stores its argument without evaluating it. To actually compute the transpose, use the transpose() @@ -1195,7 +1195,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.Trace(mat)[source]
          +class sympy.matrices.expressions.Trace(mat)[source]

          Matrix Trace

          Represents the trace of a matrix expression.

          Examples

          @@ -1216,7 +1216,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.FunctionMatrix(rows, cols, lamda)[source]
          +class sympy.matrices.expressions.FunctionMatrix(rows, cols, lamda)[source]

          Represents a matrix using a function (Lambda) which gives outputs according to the coordinates of each matrix entries.

          @@ -1284,7 +1284,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.PermutationMatrix(perm)[source]
          +class sympy.matrices.expressions.PermutationMatrix(perm)[source]

          A Permutation Matrix

          Parameters:
          @@ -1335,7 +1335,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.MatrixPermute(mat, perm, axis=0)[source]
          +class sympy.matrices.expressions.MatrixPermute(mat, perm, axis=0)[source]

          Symbolic representation for permuting matrix rows or columns.

          Parameters:
          @@ -1388,7 +1388,7 @@

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.Identity(n)[source]
          +class sympy.matrices.expressions.Identity(n)[source]

          The Matrix Identity I - multiplicative identity

          Examples

          >>> from sympy import Identity, MatrixSymbol
          @@ -1402,7 +1402,7 @@ 

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.ZeroMatrix(m, n)[source]
          +class sympy.matrices.expressions.ZeroMatrix(m, n)[source]

          The Matrix Zero 0 - additive identity

          Examples

          >>> from sympy import MatrixSymbol, ZeroMatrix
          @@ -1418,7 +1418,7 @@ 

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.CompanionMatrix(poly)[source]
          +class sympy.matrices.expressions.CompanionMatrix(poly)[source]

          A symbolic companion matrix of a polynomial.

          Examples

          >>> from sympy import Poly, Symbol, symbols
          @@ -1435,7 +1435,7 @@ 

          Matrix Expressions Core Reference
          -class sympy.matrices.expressions.MatrixSet(n, m, set)[source]
          +class sympy.matrices.expressions.MatrixSet(n, m, set)[source]

          MatrixSet represents the set of matrices with shape = (n, m) over the given set.

          Examples

          @@ -1460,7 +1460,7 @@

          Block MatricesImmutableMatrix objects.

          -class sympy.matrices.expressions.blockmatrix.BlockMatrix(*args, **kwargs)[source]
          +class sympy.matrices.expressions.blockmatrix.BlockMatrix(*args, **kwargs)[source]

          A BlockMatrix is a Matrix comprised of other matrices.

          The submatrices are stored in a SymPy Matrix object but accessed as part of a Matrix Expression

          @@ -1519,7 +1519,7 @@

          Block Matrices
          -LDUdecomposition()[source]
          +LDUdecomposition()[source]

          Returns the Block LDU decomposition of a 2x2 Block Matrix

          @@ -1565,7 +1565,7 @@

          Block Matrices
          -LUdecomposition()[source]
          +LUdecomposition()[source]

          Returns the Block LU decomposition of a 2x2 Block Matrix

          @@ -1610,7 +1610,7 @@

          Block Matrices
          -UDLdecomposition()[source]
          +UDLdecomposition()[source]

          Returns the Block UDL decomposition of a 2x2 Block Matrix

          @@ -1656,7 +1656,7 @@

          Block Matrices
          -schur(mat='A', generalized=False)[source]
          +schur(mat='A', generalized=False)[source]

          Return the Schur Complement of the 2x2 BlockMatrix

          Parameters:
          @@ -1731,7 +1731,7 @@

          Block Matrices
          -transpose()[source]
          +transpose()[source]

          Return transpose of matrix.

          Examples

          >>> from sympy import MatrixSymbol, BlockMatrix, ZeroMatrix
          @@ -1756,7 +1756,7 @@ 

          Block Matrices
          -class sympy.matrices.expressions.blockmatrix.BlockDiagMatrix(*mats)[source]
          +class sympy.matrices.expressions.blockmatrix.BlockDiagMatrix(*mats)[source]

          A sparse matrix with block matrices along its diagonals

          Examples

          >>> from sympy import MatrixSymbol, BlockDiagMatrix, symbols
          @@ -1778,7 +1778,7 @@ 

          Block Matrices
          -get_diag_blocks()[source]
          +get_diag_blocks()[source]

          Return the list of diagonal blocks of the matrix.

          Examples

          >>> from sympy import BlockDiagMatrix, Matrix
          @@ -1807,7 +1807,7 @@ 

          Block Matrices
          -sympy.matrices.expressions.blockmatrix.block_collapse(expr)[source]
          +sympy.matrices.expressions.blockmatrix.block_collapse(expr)[source]

          Evaluates a block matrix expression

          >>> from sympy import MatrixSymbol, BlockMatrix, symbols, Identity, ZeroMatrix, block_collapse
           >>> n,m,l = symbols('n m l')
          diff --git a/dev/modules/matrices/immutablematrices.html b/dev/modules/matrices/immutablematrices.html
          index 2e37d38e909..b5fa2f06197 100644
          --- a/dev/modules/matrices/immutablematrices.html
          +++ b/dev/modules/matrices/immutablematrices.html
          @@ -835,13 +835,13 @@ 

          Immutable Matrices

          ImmutableMatrix Class Reference

          -sympy.matrices.immutable.ImmutableMatrix[source]
          +sympy.matrices.immutable.ImmutableMatrix[source]

          alias of ImmutableDenseMatrix

          -class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[source]
          +class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[source]

          Create an immutable version of a matrix.

          Examples

          >>> from sympy import eye, ImmutableMatrix
          diff --git a/dev/modules/matrices/kind.html b/dev/modules/matrices/kind.html
          index 99288e497f7..e25260814b1 100644
          --- a/dev/modules/matrices/kind.html
          +++ b/dev/modules/matrices/kind.html
          @@ -805,7 +805,7 @@ 
          Documentation Version

          Matrix Kind

          -class sympy.matrices.kind.MatrixKind(element_kind=NumberKind)[source]
          +class sympy.matrices.kind.MatrixKind(element_kind=NumberKind)[source]

          Kind for all matrices in SymPy.

          Basic class for this kind is MatrixBase and MatrixExpr, but any expression representing the matrix can have this.

          diff --git a/dev/modules/matrices/matrices.html b/dev/modules/matrices/matrices.html index e651b335cdd..c8b75c1c454 100644 --- a/dev/modules/matrices/matrices.html +++ b/dev/modules/matrices/matrices.html @@ -1327,7 +1327,7 @@

          Matrix Base ClassesSparse Matrices.

          -class sympy.matrices.matrixbase.MatrixBase[source]
          +class sympy.matrices.matrixbase.MatrixBase[source]

          All common matrix operations including basic arithmetic, shaping, and special matrices like \(zeros\), and \(eye\).

          @@ -1404,7 +1404,7 @@

          Matrix Base Classes
          -LDLdecomposition(hermitian=True)[source]
          +LDLdecomposition(hermitian=True)[source]

          Returns the LDL Decomposition (L, D) of matrix A, such that L * D * L.H == A if hermitian flag is True, or L * D * L.T == A if hermitian is False. @@ -1454,7 +1454,7 @@

          Matrix Base Classes
          -LDLsolve(rhs)[source]
          +LDLsolve(rhs)[source]

          Solves Ax = B using LDL decomposition, for a general square and non-singular matrix.

          For a non-square matrix with rows > cols, @@ -1483,7 +1483,7 @@

          Matrix Base Classesrankcheck=False,

          -)[source] +)[source]

          Returns (L, U, perm) where L is a lower triangular matrix with unit diagonal, U is an upper triangular matrix, and perm is a list of row swap index pairs. If A is the original matrix, then @@ -1546,7 +1546,7 @@

          Matrix Base Classes
          -LUdecompositionFF()[source]
          +LUdecompositionFF()[source]

          Compute a fraction-free LU decomposition.

          Returns 4 matrices P, L, D, U such that PA = L D**-1 U. If the elements of the matrix belong to some integral domain I, then all @@ -1576,7 +1576,7 @@

          Matrix Base Classesrankcheck=False,

          -)[source] +)[source]

          Compute the PLU decomposition of the matrix.

          Parameters:
          @@ -1846,7 +1846,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Solve the linear system Ax = rhs for x where A = M.

          This is for symbolic matrices, for real or complex ones use mpmath.lu_solve or mpmath.qr_solve.

          @@ -1858,7 +1858,7 @@

          Matrix Base Classes
          -QRdecomposition()[source]
          +QRdecomposition()[source]

          Returns a QR decomposition.

          Explanation

          A QR decomposition is a decomposition in the form \(A = Q R\) @@ -2030,7 +2030,7 @@

          Matrix Base Classes
          -QRsolve(b)[source]
          +QRsolve(b)[source]

          Solve the linear system Ax = b.

          M is the matrix A, the method argument is the vector b. The method returns the solution vector x. If b is a @@ -2056,19 +2056,19 @@

          Matrix Base Classes
          -__abs__()[source]
          +__abs__()[source]

          Returns a new matrix with entry-wise absolute values.

          -__add__(other)[source]
          +__add__(other)[source]

          Return self + other, raising ShapeError if shapes do not match.

          -__getitem__(key)[source]
          +__getitem__(key)[source]

          Implementations of __getitem__ should accept ints, in which case the matrix is indexed as a flat list, tuples (i,j) in which case the (i,j) entry is returned, slices, or mixed tuples (a,b) @@ -2077,14 +2077,14 @@

          Matrix Base Classes
          -__len__()[source]
          +__len__()[source]

          Return the number of elements of self.

          Implemented mainly so bool(Matrix()) == False.

          -__mul__(other)[source]
          +__mul__(other)[source]

          Return self*other where other is either a scalar or a matrix of compatible dimensions.

          Examples

          @@ -2112,7 +2112,7 @@

          Matrix Base Classes
          -__pow__(exp)[source]
          +__pow__(exp)[source]

          Return self**exp a scalar or symbol.

          @@ -2124,19 +2124,19 @@

          Matrix Base Classes
          -add(b)[source]
          +add(b)[source]

          Return self + b.

          -adjoint()[source]
          +adjoint()[source]

          Conjugate transpose or Hermitian conjugation.

          -adjugate(method='berkowitz')[source]
          +adjugate(method='berkowitz')[source]

          Returns the adjugate, or classical adjoint, of a matrix. That is, the transpose of the matrix of cofactors.

          https://en.wikipedia.org/wiki/Adjugate

          @@ -2166,7 +2166,7 @@

          Matrix Base Classes
          -analytic_func(f, x)[source]
          +analytic_func(f, x)[source]

          Computes f(A) where A is a Square Matrix and f is an analytic function.

          @@ -2198,7 +2198,7 @@

          Matrix Base Classes
          -applyfunc(f)[source]
          +applyfunc(f)[source]

          Apply a function to each element of the matrix.

          Examples

          >>> from sympy import Matrix
          @@ -2217,13 +2217,13 @@ 

          Matrix Base Classes
          -as_real_imag(deep=True, **hints)[source]
          +as_real_imag(deep=True, **hints)[source]

          Returns a tuple containing the (real, imaginary) part of matrix.

          -atoms(*types)[source]
          +atoms(*types)[source]

          Returns the atoms that form the current object.

          Examples

          >>> from sympy.abc import x, y
          @@ -2244,7 +2244,7 @@ 

          Matrix Base Classes
          -berkowitz_det()[source]
          +berkowitz_det()[source]

          Computes determinant using Berkowitz method.

          See also

          @@ -2254,19 +2254,19 @@

          Matrix Base Classes
          -berkowitz_eigenvals(**flags)[source]
          +berkowitz_eigenvals(**flags)[source]

          Computes eigenvalues of a Matrix using Berkowitz method.

          -berkowitz_minors()[source]
          +berkowitz_minors()[source]

          Computes principal minors using Berkowitz method.

          -bidiagonal_decomposition(upper=True)[source]
          +bidiagonal_decomposition(upper=True)[source]

          Returns \((U,B,V.H)\) for

          @@ -2298,7 +2298,7 @@

          Matrix Base Classes
          -bidiagonalize(upper=True)[source]
          +bidiagonalize(upper=True)[source]

          Returns \(B\), the Bidiagonalized form of the input matrix.

          Note: Bidiagonal Computation can hang for symbolic matrices.

          @@ -2331,7 +2331,7 @@

          Matrix Base Classessimplify=<function _simplify>,

          -)[source] +)[source]

          Computes characteristic polynomial det(x*I - M) where I is the identity matrix.

          A PurePoly is returned, so using different variables for x does @@ -2400,7 +2400,7 @@

          Matrix Base Classes
          -cholesky(hermitian=True)[source]
          +cholesky(hermitian=True)[source]

          Returns the Cholesky-type decomposition L of a matrix A such that L * L.H == A if hermitian flag is True, or L * L.T == A if hermitian is False.

          @@ -2454,7 +2454,7 @@

          Matrix Base Classes
          -cholesky_solve(rhs)[source]
          +cholesky_solve(rhs)[source]

          Solves Ax = B using Cholesky decomposition, for a general square non-singular matrix. For a non-square matrix with rows > cols, @@ -2467,7 +2467,7 @@

          Matrix Base Classes
          -cofactor(i, j, method='berkowitz')[source]
          +cofactor(i, j, method='berkowitz')[source]

          Calculate the cofactor of an element.

          Parameters:
          @@ -2493,7 +2493,7 @@

          Matrix Base Classes
          -cofactor_matrix(method='berkowitz')[source]
          +cofactor_matrix(method='berkowitz')[source]

          Return a matrix containing the cofactor of each element.

          Parameters:
          @@ -2521,7 +2521,7 @@

          Matrix Base Classes
          -col(j)[source]
          +col(j)[source]

          Elementary column selector.

          Examples

          >>> from sympy import eye
          @@ -2539,13 +2539,13 @@ 

          Matrix Base Classes
          -col_del(col)[source]
          +col_del(col)[source]

          Delete the specified column.

          -col_insert(pos, other)[source]
          +col_insert(pos, other)[source]

          Insert one or more columns at the given column position.

          Examples

          >>> from sympy import zeros, ones
          @@ -2566,7 +2566,7 @@ 

          Matrix Base Classes
          -col_join(other)[source]
          +col_join(other)[source]

          Concatenates two matrices along self’s last and other’s first row.

          Examples

          >>> from sympy import zeros, ones
          @@ -2588,7 +2588,7 @@ 

          Matrix Base Classes
          -columnspace(simplify=False)[source]
          +columnspace(simplify=False)[source]

          Returns a list of vectors (Matrix objects) that span columnspace of M

          Examples

          >>> from sympy import Matrix
          @@ -2616,7 +2616,7 @@ 

          Matrix Base Classes
          -classmethod companion(poly)[source]
          +classmethod companion(poly)[source]

          Returns a companion matrix of a polynomial.

          Examples

          >>> from sympy import Matrix, Poly, Symbol, symbols
          @@ -2636,7 +2636,7 @@ 

          Matrix Base Classes
          -condition_number()[source]
          +condition_number()[source]

          Returns the condition number of a matrix.

          This is the maximum singular value divided by the minimum singular value

          Examples

          @@ -2654,7 +2654,7 @@

          Matrix Base Classes
          -conjugate()[source]
          +conjugate()[source]

          Return the by-element conjugation.

          Examples

          >>> from sympy import SparseMatrix, I
          @@ -2686,7 +2686,7 @@ 

          Matrix Base Classes
          -connected_components()[source]
          +connected_components()[source]

          Returns the list of connected vertices of the graph when a square matrix is viewed as a weighted graph.

          Examples

          @@ -2714,7 +2714,7 @@

          Matrix Base Classes
          -connected_components_decomposition()[source]
          +connected_components_decomposition()[source]

          Decomposes a square matrix into block diagonal form only using the permutations.

          @@ -2783,7 +2783,7 @@

          Matrix Base Classes
          -copy()[source]
          +copy()[source]

          Returns the copy of a matrix.

          Examples

          >>> from sympy import Matrix
          @@ -2798,7 +2798,7 @@ 

          Matrix Base Classes
          -cramer_solve(rhs, det_method='laplace')[source]
          +cramer_solve(rhs, det_method='laplace')[source]

          Solves system of linear equations using Cramer’s rule.

          This method is relatively inefficient compared to other methods. However it only uses a single division, assuming a division-free determinant @@ -2852,7 +2852,7 @@

          Matrix Base Classes
          -cross(b)[source]
          +cross(b)[source]

          Return the cross product of self and b relaxing the condition of compatible dimensions: if each has 3 elements, a matrix of the same type and shape as self will be returned. If b has the same @@ -2871,7 +2871,7 @@

          Matrix Base Classes
          -det(method='bareiss', iszerofunc=None)[source]
          +det(method='bareiss', iszerofunc=None)[source]

          Computes the determinant of a matrix if M is a concrete matrix object otherwise return an expressions Determinant(M) if M is a MatrixSymbol or other expression.

          @@ -2959,7 +2959,7 @@

          Matrix Base Classes
          -det_LU_decomposition()[source]
          +det_LU_decomposition()[source]

          Compute matrix determinant using LU decomposition.

          Note that this method fails if the LU decomposition itself fails. In particular, if the matrix has no inverse this method @@ -2985,7 +2985,7 @@

          Matrix Base Classes**kwargs,

          -)[source] +)[source]

          Returns a matrix with the specified diagonal. If matrices are passed, a block-diagonal matrix is created (i.e. the “direct sum” of the matrices).

          @@ -3069,7 +3069,7 @@

          Matrix Base Classes
          -diagonal(k=0)[source]
          +diagonal(k=0)[source]

          Returns the kth diagonal of self. The main diagonal corresponds to \(k=0\); diagonals above and below correspond to \(k > 0\) and \(k < 0\), respectively. The values of \(self[i, j]\) @@ -3104,7 +3104,7 @@

          Matrix Base Classes
          -diagonal_solve(rhs)[source]
          +diagonal_solve(rhs)[source]

          Solves Ax = B efficiently, where A is a diagonal Matrix, with non-zero diagonal entries.

          Examples

          @@ -3131,7 +3131,7 @@

          Matrix Base Classesnormalize=False,

          -)[source] +)[source]

          Return (P, D), where D is diagonal and

          D = P^-1 * M * P

          @@ -3181,7 +3181,7 @@

          Matrix Base Classes
          -diff(*args, evaluate=True, **kwargs)[source]
          +diff(*args, evaluate=True, **kwargs)[source]

          Calculate the derivative of each element in the matrix.

          Examples

          >>> from sympy import Matrix
          @@ -3209,7 +3209,7 @@ 

          Matrix Base Classesconjugate_convention=None,

          -)[source] +)[source]

          Return the dot or inner product of two vectors of equal length. Here self must be a Matrix of size 1 x n or n x 1, and b must be either a matrix of size 1 x n, n x 1, or a list/tuple of length n. @@ -3259,7 +3259,7 @@

          Matrix Base Classes
          -dual()[source]
          +dual()[source]

          Returns the dual of a matrix.

          A dual of a matrix is:

          (1/2)*levicivita(i, j, k, l)*M(k, l) summed over indices \(k\) and \(l\)

          @@ -3280,7 +3280,7 @@

          Matrix Base Classeswith_pivots=False,

          -)[source] +)[source]

          Returns a matrix row-equivalent to M that is in echelon form. Note that echelon form of a matrix is not unique, however, properties like the row space and the null space are preserved.

          @@ -3304,7 +3304,7 @@

          Matrix Base Classes**flags,

          -)[source] +)[source]

          Compute eigenvalues of the matrix.

          Parameters:
          @@ -3388,7 +3388,7 @@

          Matrix Base Classes**flags,

          -)[source] +)[source]

          Compute eigenvectors of the matrix.

          Parameters:
          @@ -3474,7 +3474,7 @@

          Matrix Base Classescol2=None,

          -)[source] +)[source]

          Performs the elementary column operation \(op\).

          \(op\) may be one of

          @@ -3510,7 +3510,7 @@

          Matrix Base Classesrow2=None,

          -)[source] +)[source]

          Performs the elementary row operation \(op\).

          \(op\) may be one of

          @@ -3548,13 +3548,13 @@

          Matrix Base Classesverbose=False,

          -)[source] +)[source]

          Apply evalf() to each element of self.

          -exp()[source]
          +exp()[source]

          Return the exponential of a square matrix.

          Examples

          >>> from sympy import Symbol, Matrix
          @@ -3586,7 +3586,7 @@ 

          Matrix Base Classes**hints,

          -)[source] +)[source]

          Apply core.function.expand to each entry of the matrix.

          Examples

          >>> from sympy.abc import x
          @@ -3601,7 +3601,7 @@ 

          Matrix Base Classes
          -extract(rowsList, colsList)[source]
          +extract(rowsList, colsList)[source]

          Return a submatrix by specifying a list of rows and columns. Negative indices can be given. All indices must be in the range \(-n \le i < n\) where \(n\) is the number of rows or columns.

          @@ -3650,7 +3650,7 @@

          Matrix Base Classes
          -classmethod eye(rows, cols=None, **kwargs)[source]
          +classmethod eye(rows, cols=None, **kwargs)[source]

          Returns an identity matrix.

          Parameters:
          @@ -3664,7 +3664,7 @@

          Matrix Base Classes
          -flat()[source]
          +flat()[source]

          Returns a flat list of all elements in the matrix.

          Examples

          >>> from sympy import Matrix
          @@ -3694,7 +3694,7 @@ 

          Matrix Base Classes
          -classmethod from_dok(rows, cols, dok)[source]
          +classmethod from_dok(rows, cols, dok)[source]

          Create a matrix from a dictionary of keys.

          Examples

          >>> from sympy import Matrix
          @@ -3710,7 +3710,7 @@ 

          Matrix Base Classes
          -gauss_jordan_solve(B, freevar=False)[source]
          +gauss_jordan_solve(B, freevar=False)[source]

          Solves Ax = B using Gauss Jordan elimination.

          There may be zero, one, or infinite solutions. If one solution exists, it will be returned. If infinite solutions exist, it will @@ -3836,7 +3836,7 @@

          Matrix Base Classes
          -get_diag_blocks()[source]
          +get_diag_blocks()[source]

          Obtains the square sub-matrices on the main diagonal of a square matrix.

          Useful for inverting symbolic matrices or solving systems of linear equations which may be decoupled by having a block diagonal @@ -3860,7 +3860,7 @@

          Matrix Base Classes
          -has(*patterns)[source]
          +has(*patterns)[source]

          Test whether any subexpression matches any of the patterns.

          Examples

          >>> from sympy import Matrix, SparseMatrix, Float
          @@ -3885,7 +3885,7 @@ 

          Matrix Base Classes
          -hat()[source]
          +hat()[source]

          Return the skew-symmetric matrix representing the cross product, so that self.hat() * b is equivalent to self.cross(b).

          Examples

          @@ -3924,7 +3924,7 @@

          Matrix Base Classes
          -classmethod hstack(*args)[source]
          +classmethod hstack(*args)[source]

          Return a matrix formed by joining args horizontally (i.e. by repeated application of row_join).

          Examples

          @@ -3939,7 +3939,7 @@

          Matrix Base Classes
          -integrate(*args, **kwargs)[source]
          +integrate(*args, **kwargs)[source]

          Integrate each element of the matrix. args will be passed to the integrate function.

          Examples

          @@ -3972,7 +3972,7 @@

          Matrix Base Classestry_block_diag=False,

          -)[source] +)[source]

          Return the inverse of a matrix using the method indicated. The default is DM if a suitable domain is found or otherwise GE for dense matrices LDL for sparse matrices.

          @@ -4061,7 +4061,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using the adjugate matrix and a determinant.

          See also

          @@ -4077,7 +4077,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using BLOCKWISE inversion.

          See also

          @@ -4093,7 +4093,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using cholesky decomposition.

          See also

          @@ -4109,7 +4109,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using Gaussian elimination.

          See also

          @@ -4125,7 +4125,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using LDL decomposition.

          See also

          @@ -4141,7 +4141,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using LU decomposition.

          See also

          @@ -4157,7 +4157,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Calculates the inverse using QR decomposition.

          See also

          @@ -4167,7 +4167,7 @@

          Matrix Base Classes
          -classmethod irregular(ntop, *matrices, **kwargs)[source]
          +classmethod irregular(ntop, *matrices, **kwargs)[source]

          Return a matrix filled by the given matrices which are listed in order of appearance from left to right, top to bottom as they first appear in the matrix. They must fill the @@ -4187,7 +4187,7 @@

          Matrix Base Classes
          -is_anti_symmetric(simplify=True)[source]
          +is_anti_symmetric(simplify=True)[source]

          Check if matrix M is an antisymmetric matrix, that is, M is a square matrix with all M[i, j] == -M[j, i].

          When simplify=True (default), the sum M[i, j] + M[j, i] is @@ -4251,7 +4251,7 @@

          Matrix Base Classes
          -is_diagonal()[source]
          +is_diagonal()[source]

          Check if matrix is diagonal, that is matrix in which the entries outside the main diagonal are all zero.

          Examples

          @@ -4299,7 +4299,7 @@

          Matrix Base Classes**kwargs,

          -)[source] +)[source]

          Returns True if a matrix is diagonalizable.

          Parameters:
          @@ -4960,7 +4960,7 @@

          Matrix Base Classes
          -is_nilpotent()[source]
          +is_nilpotent()[source]

          Checks if a matrix is nilpotent.

          A matrix B is nilpotent if for some integer k, B**k is a zero matrix.

          @@ -5378,7 +5378,7 @@

          Matrix Base Classes
          -is_symbolic()[source]
          +is_symbolic()[source]

          Checks if any elements contain Symbols.

          Examples

          >>> from sympy import Matrix
          @@ -5392,7 +5392,7 @@ 

          Matrix Base Classes
          -is_symmetric(simplify=True)[source]
          +is_symmetric(simplify=True)[source]

          Check if matrix is symmetric matrix, that is square matrix and is equal to its transpose.

          By default, simplifications occur before testing symmetry. @@ -5581,7 +5581,7 @@

          Matrix Base Classes
          -iter_items()[source]
          +iter_items()[source]

          Iterate over indices and values of nonzero items.

          Examples

          >>> from sympy import Matrix
          @@ -5598,7 +5598,7 @@ 

          Matrix Base Classes
          -iter_values()[source]
          +iter_values()[source]

          Iterate over non-zero values of self.

          Examples

          >>> from sympy import Matrix
          @@ -5615,7 +5615,7 @@ 

          Matrix Base Classes
          -jacobian(X)[source]
          +jacobian(X)[source]

          Calculates the Jacobian matrix (derivative of a vector-valued function).

          Parameters:
          @@ -5660,7 +5660,7 @@

          Matrix Base Classes**kwargs,

          -)[source] +)[source]

          Returns a Jordan block

          Parameters:
          @@ -5752,7 +5752,7 @@

          Matrix Base Classes**kwargs,

          -)[source] +)[source]

          Return \((P, J)\) where \(J\) is a Jordan block matrix and \(P\) is a matrix such that \(M = P J P^{-1}\)

          @@ -5790,7 +5790,7 @@

          Matrix Base Classes
          -key2bounds(keys)[source]
          +key2bounds(keys)[source]

          Converts a key with potentially mixed types of keys (integer and slice) into a tuple of ranges and raises an error if any index is out of self’s range.

          @@ -5802,7 +5802,7 @@

          Matrix Base Classes
          -key2ij(key)[source]
          +key2ij(key)[source]

          Converts key into canonical form, converting integers or indexable items into valid integers for self’s range or returning slices unchanged.

          @@ -5814,7 +5814,7 @@

          Matrix Base Classes
          -left_eigenvects(**flags)[source]
          +left_eigenvects(**flags)[source]

          Returns left eigenvectors and eigenvalues.

          This function returns the list of triples (eigenval, multiplicity, basis) for the left eigenvectors. Options are the same as for @@ -5843,7 +5843,7 @@

          Matrix Base Classes
          -limit(*args)[source]
          +limit(*args)[source]

          Calculate the limit of each element in the matrix. args will be passed to the limit function.

          Examples

          @@ -5864,7 +5864,7 @@

          Matrix Base Classes
          -log(simplify=<function cancel>)[source]
          +log(simplify=<function cancel>)[source]

          Return the logarithm of a square matrix.

          Parameters:
          @@ -5921,7 +5921,7 @@

          Matrix Base Classes
          -lower_triangular(k=0)[source]
          +lower_triangular(k=0)[source]

          Return the elements on and below the kth diagonal of a matrix. If k is not specified then simply returns lower-triangular portion of a matrix

          @@ -5956,7 +5956,7 @@

          Matrix Base Classes
          -lower_triangular_solve(rhs)[source]
          +lower_triangular_solve(rhs)[source]

          Solves Ax = B, where A is a lower triangular matrix.

          See also

          @@ -5966,7 +5966,7 @@

          Matrix Base Classes
          -minor(i, j, method='berkowitz')[source]
          +minor(i, j, method='berkowitz')[source]

          Return the (i,j) minor of M. That is, return the determinant of the matrix obtained by deleting the \(i`th row and `j`th column from ``M`\).

          @@ -5998,7 +5998,7 @@

          Matrix Base Classes
          -minor_submatrix(i, j)[source]
          +minor_submatrix(i, j)[source]

          Return the submatrix obtained by removing the \(i`th row and `j`th column from ``M`\) (works with Pythonic negative indices).

          @@ -6026,7 +6026,7 @@

          Matrix Base Classes
          -multiply(other, dotprodsimp=None)[source]
          +multiply(other, dotprodsimp=None)[source]

          Same as __mul__() but with optional simplification.

          Parameters:
          @@ -6042,7 +6042,7 @@

          Matrix Base Classes
          -multiply_elementwise(other)[source]
          +multiply_elementwise(other)[source]

          Return the Hadamard product (elementwise product) of A and B

          Examples

          >>> from sympy import Matrix
          @@ -6062,13 +6062,13 @@ 

          Matrix Base Classes
          -n(*args, **kwargs)[source]
          +n(*args, **kwargs)[source]

          Apply evalf() to each element of self.

          -norm(ord=None)[source]
          +norm(ord=None)[source]

          Return the Norm of a Matrix or Vector.

          In the simplest case this is the geometric size of the vector Other norms can be specified by the ord parameter

          @@ -6165,7 +6165,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Return the normalized version of self.

          Parameters:
          @@ -6206,7 +6206,7 @@

          Matrix Base Classesiszerofunc=<function _iszero>,

          -)[source] +)[source]

          Returns list of vectors (Matrix objects) that span nullspace of M

          Examples

          >>> from sympy import Matrix
          @@ -6231,7 +6231,7 @@ 

          Matrix Base Classes
          -classmethod ones(rows, cols=None, **kwargs)[source]
          +classmethod ones(rows, cols=None, **kwargs)[source]

          Returns a matrix of ones.

          Parameters:
          @@ -6245,7 +6245,7 @@

          Matrix Base Classes
          -classmethod orthogonalize(*vecs, **kwargs)[source]
          +classmethod orthogonalize(*vecs, **kwargs)[source]

          Apply the Gram-Schmidt orthogonalization procedure to vectors supplied in vecs.

          @@ -6299,7 +6299,7 @@

          Matrix Base Classes
          -per()[source]
          +per()[source]

          Returns the permanent of a matrix. Unlike determinant, permanent is defined for both square and non-square matrices.

          For an m x n matrix, with m less than or equal to n, @@ -6352,7 +6352,7 @@

          Matrix Base Classesdirection='forward',

          -)[source] +)[source]

          Permute the rows or columns of a matrix by the given list of swaps.

          @@ -6446,13 +6446,13 @@

          Matrix Base Classes
          -permuteBkwd(perm)[source]
          +permuteBkwd(perm)[source]

          Permute the rows of the matrix with the given permutation in reverse.

          -permuteFwd(perm)[source]
          +permuteFwd(perm)[source]

          Permute the rows of the matrix with the given permutation.

          @@ -6465,7 +6465,7 @@

          Matrix Base Classesdirection='forward',

          -)[source] +)[source]

          Alias for self.permute(swaps, orientation='cols', direction=direction)

          @@ -6483,7 +6483,7 @@

          Matrix Base Classesdirection='forward',

          -)[source] +)[source]

          Alias for self.permute(swaps, orientation='rows', direction=direction)

          @@ -6494,7 +6494,7 @@

          Matrix Base Classes
          -pinv(method='RD')[source]
          +pinv(method='RD')[source]

          Calculate the Moore-Penrose pseudoinverse of the matrix.

          The Moore-Penrose pseudoinverse exists and is unique for any matrix. If the matrix is invertible, the pseudoinverse is the same as the @@ -6545,7 +6545,7 @@

          Matrix Base Classes
          -pinv_solve(B, arbitrary_matrix=None)[source]
          +pinv_solve(B, arbitrary_matrix=None)[source]

          Solve Ax = B using the Moore-Penrose pseudoinverse.

          There may be zero, one, or infinite solutions. If one solution exists, it will be returned. If infinite solutions exist, one will @@ -6616,7 +6616,7 @@

          Matrix Base Classes
          -pow(exp, method=None)[source]
          +pow(exp, method=None)[source]

          Return self**exp a scalar or symbol.

          Parameters:
          @@ -6638,7 +6638,7 @@

          Matrix Base Classes
          -print_nonzero(symb='X')[source]
          +print_nonzero(symb='X')[source]

          Shows location of non-zero entries for fast shape lookup.

          Examples

          >>> from sympy import Matrix, eye
          @@ -6662,7 +6662,7 @@ 

          Matrix Base Classes
          -project(v)[source]
          +project(v)[source]

          Return the projection of self onto the line containing v.

          Examples

          >>> from sympy import Matrix, S, sqrt
          @@ -6685,7 +6685,7 @@ 

          Matrix Base Classessimplify=False,

          -)[source] +)[source]

          Returns the rank of a matrix.

          Examples

          >>> from sympy import Matrix
          @@ -6709,7 +6709,7 @@ 

          Matrix Base Classessimplify=False,

          -)[source] +)[source]

          Returns a pair of matrices (\(C\), \(F\)) with matching rank such that \(A = C F\).

          @@ -6797,7 +6797,7 @@

          Matrix Base Classes
          -refine(assumptions=True)[source]
          +refine(assumptions=True)[source]

          Apply refine to each element of the matrix.

          Examples

          >>> from sympy import Symbol, Matrix, Abs, sqrt, Q
          @@ -6826,7 +6826,7 @@ 

          Matrix Base Classesexact=None,

          -)[source] +)[source]

          Replaces Function F in Matrix entries with Function G.

          Examples

          >>> from sympy import symbols, Function, Matrix
          @@ -6846,7 +6846,7 @@ 

          Matrix Base Classes
          -reshape(rows, cols)[source]
          +reshape(rows, cols)[source]

          Reshape the matrix. Total number of elements must remain the same.

          Examples

          >>> from sympy import Matrix
          @@ -6868,7 +6868,7 @@ 

          Matrix Base Classes
          -rmultiply(other, dotprodsimp=None)[source]
          +rmultiply(other, dotprodsimp=None)[source]

          Same as __rmul__() but with optional simplification.

          Parameters:
          @@ -6884,7 +6884,7 @@

          Matrix Base Classes
          -rot90(k=1)[source]
          +rot90(k=1)[source]

          Rotates Matrix by 90 degrees

          Parameters:
          @@ -6922,7 +6922,7 @@

          Matrix Base Classes
          -row(i)[source]
          +row(i)[source]

          Elementary row selector.

          Examples

          >>> from sympy import eye
          @@ -6938,13 +6938,13 @@ 

          Matrix Base Classes
          -row_del(row)[source]
          +row_del(row)[source]

          Delete the specified row.

          -row_insert(pos, other)[source]
          +row_insert(pos, other)[source]

          Insert one or more rows at the given row position.

          Examples

          >>> from sympy import zeros, ones
          @@ -6966,7 +6966,7 @@ 

          Matrix Base Classes
          -row_join(other)[source]
          +row_join(other)[source]

          Concatenates two matrices along self’s last and rhs’s first column

          Examples

          >>> from sympy import zeros, ones
          @@ -6987,7 +6987,7 @@ 

          Matrix Base Classes
          -rowspace(simplify=False)[source]
          +rowspace(simplify=False)[source]

          Returns a list of vectors that span the row space of M.

          Examples

          >>> from sympy import Matrix
          @@ -7014,7 +7014,7 @@ 

          Matrix Base Classesnormalize_last=True,

          -)[source] +)[source]

          Return reduced row-echelon form of matrix and indices of pivot vars.

          @@ -7090,7 +7090,7 @@

          Matrix Base Classes
          -rref_rhs(rhs)[source]
          +rref_rhs(rhs)[source]

          Return reduced row-echelon form of matrix, matrix showing rhs after reduction steps. rhs must have the same number of rows as self.

          @@ -7126,7 +7126,7 @@

          Matrix Base Classes
          -simplify(**kwargs)[source]
          +simplify(**kwargs)[source]

          Apply simplify to each element of the matrix.

          Examples

          >>> from sympy.abc import x, y
          @@ -7141,7 +7141,7 @@ 

          Matrix Base Classes
          -singular_value_decomposition()[source]
          +singular_value_decomposition()[source]

          Returns a Condensed Singular Value decomposition.

          Explanation

          A Singular Value decomposition is a decomposition in the form \(A = U \Sigma V^H\) @@ -7312,7 +7312,7 @@

          Matrix Base Classes
          -singular_values()[source]
          +singular_values()[source]

          Compute the singular values of a Matrix

          Examples

          >>> from sympy import Matrix, Symbol
          @@ -7330,7 +7330,7 @@ 

          Matrix Base Classes
          -solve(rhs, method='GJ')[source]
          +solve(rhs, method='GJ')[source]

          Solves linear equation where the unique solution exists.

          Parameters:
          @@ -7374,7 +7374,7 @@

          Matrix Base Classes
          -solve_least_squares(rhs, method='CH')[source]
          +solve_least_squares(rhs, method='CH')[source]

          Return the least-square fit to the data.

          Parameters:
          @@ -7449,7 +7449,7 @@

          Matrix Base Classes
          -strongly_connected_components()[source]
          +strongly_connected_components()[source]

          Returns the list of strongly connected vertices of the graph when a square matrix is viewed as a weighted graph.

          Examples

          @@ -7478,7 +7478,7 @@

          Matrix Base Classeslower=True,

          -)[source] +)[source]

          Decomposes a square matrix into block triangular form only using the permutations.

          @@ -7579,7 +7579,7 @@

          Matrix Base Classes
          -subs(*args, **kwargs)[source]
          +subs(*args, **kwargs)[source]

          Return a new matrix with subs applied to each entry.

          Examples

          >>> from sympy.abc import x, y
          @@ -7607,7 +7607,7 @@ 

          Matrix Base Classesalign='right',

          -)[source] +)[source]

          String form of Matrix as a table.

          printer is the printer to use for on the elements (generally something like StrPrinter())

          @@ -7649,7 +7649,7 @@

          Matrix Base Classes
          -todod()[source]
          +todod()[source]

          Returns matrix as dict of dicts containing non-zero elements of the Matrix

          Examples

          >>> from sympy import Matrix
          @@ -7666,7 +7666,7 @@ 

          Matrix Base Classes
          -todok()[source]
          +todok()[source]

          Return the matrix as dictionary of keys.

          Examples

          >>> from sympy import Matrix
          @@ -7679,7 +7679,7 @@ 

          Matrix Base Classes
          -tolist()[source]
          +tolist()[source]

          Return the Matrix as a nested Python list.

          Examples

          >>> from sympy import Matrix, ones
          @@ -7705,7 +7705,7 @@ 

          Matrix Base Classes
          -trace()[source]
          +trace()[source]

          Returns the trace of a square matrix i.e. the sum of the diagonal elements.

          Examples

          @@ -7719,7 +7719,7 @@

          Matrix Base Classes
          -transpose()[source]
          +transpose()[source]

          Returns the transpose of the matrix.

          Examples

          >>> from sympy import Matrix
          @@ -7755,7 +7755,7 @@ 

          Matrix Base Classes
          -upper_hessenberg_decomposition()[source]
          +upper_hessenberg_decomposition()[source]

          Converts a matrix into Hessenberg matrix H.

          Returns 2 matrices H, P s.t. \(P H P^{T} = A\), where H is an upper hessenberg matrix @@ -7793,7 +7793,7 @@

          Matrix Base Classes
          -upper_triangular(k=0)[source]
          +upper_triangular(k=0)[source]

          Return the elements on and above the kth diagonal of a matrix. If k is not specified then simply returns upper-triangular portion of a matrix

          @@ -7828,7 +7828,7 @@

          Matrix Base Classes
          -upper_triangular_solve(rhs)[source]
          +upper_triangular_solve(rhs)[source]

          Solves Ax = B, where A is an upper triangular matrix.

          See also

          @@ -7838,7 +7838,7 @@

          Matrix Base Classes
          -values()[source]
          +values()[source]

          Return non-zero values of self.

          Examples

          >>> from sympy import Matrix
          @@ -7855,7 +7855,7 @@ 

          Matrix Base Classes
          -vec()[source]
          +vec()[source]

          Return the Matrix converted into a one column matrix by stacking columns

          Examples

          >>> from sympy import Matrix
          @@ -7887,7 +7887,7 @@ 

          Matrix Base Classescheck_symmetry=True,

          -)[source] +)[source]

          Reshapes the matrix into a column vector by stacking the elements in the lower triangle.

          @@ -7930,7 +7930,7 @@

          Matrix Base Classes
          -vee()[source]
          +vee()[source]

          Return a 3x1 vector from a skew-symmetric matrix representing the cross product, so that self * b is equivalent to self.vee().cross(b).

          Examples

          @@ -7993,7 +7993,7 @@

          Matrix Base Classes
          -classmethod vstack(*args)[source]
          +classmethod vstack(*args)[source]

          Return a matrix formed by joining args vertically (i.e. by repeated application of col_join).

          Examples

          @@ -8010,7 +8010,7 @@

          Matrix Base Classes
          -classmethod wilkinson(n, **kwargs)[source]
          +classmethod wilkinson(n, **kwargs)[source]

          Returns two square Wilkinson Matrix of size 2*n + 1 \(W_{2n + 1}^-, W_{2n + 1}^+ =\) Wilkinson(n)

          Examples

          @@ -8056,7 +8056,7 @@

          Matrix Base Classes
          -xreplace(rule)[source]
          +xreplace(rule)[source]

          Return a new matrix with xreplace applied to each entry.

          Examples

          >>> from sympy.abc import x, y
          @@ -8073,7 +8073,7 @@ 

          Matrix Base Classes
          -classmethod zeros(rows, cols=None, **kwargs)[source]
          +classmethod zeros(rows, cols=None, **kwargs)[source]

          Returns a matrix of zeros.

          Parameters:
          @@ -8092,18 +8092,18 @@

          Matrix Base Classes

          -class sympy.matrices.matrixbase.MatrixError[source]
          +class sympy.matrices.matrixbase.MatrixError[source]
          -class sympy.matrices.matrixbase.ShapeError[source]
          +class sympy.matrices.matrixbase.ShapeError[source]

          Wrong matrix shape

          -class sympy.matrices.matrixbase.NonSquareMatrixError[source]
          +class sympy.matrices.matrixbase.NonSquareMatrixError[source]
          @@ -8111,7 +8111,7 @@

          Matrix Exceptions

          -sympy.matrices.dense.matrix_multiply_elementwise(A, B)[source]
          +sympy.matrices.dense.matrix_multiply_elementwise(A, B)[source]

          Return the Hadamard product (elementwise product) of A and B

          >>> from sympy import Matrix, matrix_multiply_elementwise
           >>> A = Matrix([[0, 1, 2], [3, 4, 5]])
          @@ -8130,7 +8130,7 @@ 

          Matrix Functions
          -sympy.matrices.dense.zeros(*args, **kwargs)[source]
          +sympy.matrices.dense.zeros(*args, **kwargs)[source]

          Returns a matrix of zeros with rows rows and cols columns; if cols is omitted a square matrix will be returned.

          @@ -8141,7 +8141,7 @@

          Matrix Functions
          -sympy.matrices.dense.ones(*args, **kwargs)[source]
          +sympy.matrices.dense.ones(*args, **kwargs)[source]

          Returns a matrix of ones with rows rows and cols columns; if cols is omitted a square matrix will be returned.

          @@ -8152,7 +8152,7 @@

          Matrix Functions
          -sympy.matrices.dense.eye(*args, **kwargs)[source]
          +sympy.matrices.dense.eye(*args, **kwargs)[source]

          Create square identity matrix n x n

          See also

          @@ -8162,7 +8162,7 @@

          Matrix Functions
          -sympy.matrices.dense.diag(*values, strict=True, unpack=False, **kwargs)[source]
          +sympy.matrices.dense.diag(*values, strict=True, unpack=False, **kwargs)[source]

          Returns a matrix with the provided values placed on the diagonal. If non-square matrices are included, they will produce a block-diagonal matrix.

          @@ -8196,7 +8196,7 @@

          Matrix Functions
          -sympy.matrices.dense.jordan_cell(eigenval, n)[source]
          +sympy.matrices.dense.jordan_cell(eigenval, n)[source]

          Create a Jordan block:

          Examples

          >>> from sympy import jordan_cell
          @@ -8213,7 +8213,7 @@ 

          Matrix Functions
          -sympy.matrices.dense.hessian(f, varlist, constraints=())[source]
          +sympy.matrices.dense.hessian(f, varlist, constraints=())[source]

          Compute Hessian matrix for a function f wrt parameters in varlist which may be given as a sequence or a row/column vector. A list of constraints may optionally be given.

          @@ -8258,7 +8258,7 @@

          Matrix Functions
          -sympy.matrices.dense.GramSchmidt(vlist, orthonormal=False)[source]
          +sympy.matrices.dense.GramSchmidt(vlist, orthonormal=False)[source]

          Apply the Gram-Schmidt process to a set of vectors.

          Parameters:
          @@ -8298,7 +8298,7 @@

          Matrix Functions
          -sympy.matrices.dense.wronskian(functions, var, method='bareiss')[source]
          +sympy.matrices.dense.wronskian(functions, var, method='bareiss')[source]

          Compute Wronskian for [] of functions

                           | f1       f2        ...   fn      |
                            | f1'      f2'       ...   fn'     |
          @@ -8318,7 +8318,7 @@ 

          Matrix Functions
          -sympy.matrices.dense.casoratian(seqs, n, zero=True)[source]
          +sympy.matrices.dense.casoratian(seqs, n, zero=True)[source]

          Given linear difference operator L of order ‘k’ and homogeneous equation Ly = 0 we want to compute kernel of L, which is a set of ‘k’ sequences: a(n), b(n), … z(n).

          @@ -8362,7 +8362,7 @@

          Matrix Functionsprng=None,

          -)[source] +)[source]

          Create random matrix with dimensions r x c. If c is omitted the matrix will be square. If symmetric is True the matrix must be square. If percent is less than 100 then only approximately the given @@ -8414,7 +8414,7 @@

          Matrix Functions

          -sympy.matrices.dense.rot_givens(i, j, theta, dim=3)[source]
          +sympy.matrices.dense.rot_givens(i, j, theta, dim=3)[source]

          Returns a a Givens rotation matrix, a a rotation in the plane spanned by two coordinates axes.

          @@ -8517,7 +8517,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_axis1(theta)[source]
          +sympy.matrices.dense.rot_axis1(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 1-axis.

          Explanation

          @@ -8569,7 +8569,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_axis2(theta)[source]
          +sympy.matrices.dense.rot_axis2(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 2-axis.

          Explanation

          @@ -8621,7 +8621,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_axis3(theta)[source]
          +sympy.matrices.dense.rot_axis3(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 3-axis.

          Explanation

          @@ -8673,7 +8673,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_ccw_axis1(theta)[source]
          +sympy.matrices.dense.rot_ccw_axis1(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 1-axis.

          Explanation

          @@ -8725,7 +8725,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_ccw_axis2(theta)[source]
          +sympy.matrices.dense.rot_ccw_axis2(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 2-axis.

          Explanation

          @@ -8777,7 +8777,7 @@

          Rotation matrices
          -sympy.matrices.dense.rot_ccw_axis3(theta)[source]
          +sympy.matrices.dense.rot_ccw_axis3(theta)[source]

          Returns a rotation matrix for a rotation of theta (in radians) about the 3-axis.

          Explanation

          @@ -8832,7 +8832,7 @@

          Rotation matrices

          -sympy.matrices.dense.list2numpy(l, dtype=<class 'object'>)[source]
          +sympy.matrices.dense.list2numpy(l, dtype=<class 'object'>)[source]

          Converts Python list of SymPy expressions to a NumPy array.

          See also

          @@ -8842,7 +8842,7 @@

          Numpy Utility Functions
          -sympy.matrices.dense.matrix2numpy(m, dtype=<class 'object'>)[source]
          +sympy.matrices.dense.matrix2numpy(m, dtype=<class 'object'>)[source]

          Converts SymPy’s matrix to a NumPy array.

          See also

          @@ -8852,7 +8852,7 @@

          Numpy Utility Functions
          -sympy.matrices.dense.symarray(prefix, shape, **kwargs)[source]
          +sympy.matrices.dense.symarray(prefix, shape, **kwargs)[source]

          Create a numpy ndarray of symbols (as an object array).

          The created symbols are named prefix_i1_i2_… You should thus provide a non-empty prefix if you want your symbols to be unique for different output @@ -8921,7 +8921,7 @@

          Numpy Utility Functions
          -sympy.matrices.matrixbase.a2idx(j, n=None)[source]
          +sympy.matrices.matrixbase.a2idx(j, n=None)[source]

          Return integer after making positive and validating against n.

          diff --git a/dev/modules/matrices/normalforms.html b/dev/modules/matrices/normalforms.html index e276038ef7c..ce9614f8e13 100644 --- a/dev/modules/matrices/normalforms.html +++ b/dev/modules/matrices/normalforms.html @@ -805,7 +805,7 @@
          Documentation Version

          Matrix Normal Forms

          -sympy.matrices.normalforms.smith_normal_form(m, domain=None)[source]
          +sympy.matrices.normalforms.smith_normal_form(m, domain=None)[source]

          Return the Smith Normal Form of a matrix \(m\) over the ring \(domain\). This will only work if the ring is a principal ideal domain.

          Examples

          @@ -829,7 +829,7 @@
          Documentation Version
          check_rank=False,
          -)[source] +)[source]

          Compute the Hermite Normal Form of a Matrix A of integers.

          Parameters:
          diff --git a/dev/modules/matrices/sparse.html b/dev/modules/matrices/sparse.html index 4467c7693e6..f0bfe8cb71d 100644 --- a/dev/modules/matrices/sparse.html +++ b/dev/modules/matrices/sparse.html @@ -807,13 +807,13 @@
          Documentation Version

          SparseMatrix Class Reference

          -sympy.matrices.sparse.SparseMatrix[source]
          +sympy.matrices.sparse.SparseMatrix[source]

          alias of MutableSparseMatrix

          -class sympy.matrices.sparse.MutableSparseMatrix(*args, **kwargs)[source]
          +class sympy.matrices.sparse.MutableSparseMatrix(*args, **kwargs)[source]
          @@ -821,7 +821,7 @@

          SparseMatrix Class Reference

          -class sympy.matrices.immutable.ImmutableSparseMatrix(*args, **kwargs)[source]
          +class sympy.matrices.immutable.ImmutableSparseMatrix(*args, **kwargs)[source]

          Create an immutable version of a sparse matrix.

          Examples

          >>> from sympy import eye, ImmutableSparseMatrix
          diff --git a/dev/modules/matrices/sparsetools.html b/dev/modules/matrices/sparsetools.html
          index 28dd8081356..35d1e9e58f5 100644
          --- a/dev/modules/matrices/sparsetools.html
          +++ b/dev/modules/matrices/sparsetools.html
          @@ -805,7 +805,7 @@ 
          Documentation Version

          Sparse Tools

          -sympy.matrices.sparsetools._doktocsr()[source]
          +sympy.matrices.sparsetools._doktocsr()[source]

          Converts a sparse matrix to Compressed Sparse Row (CSR) format.

          Parameters:
          @@ -832,7 +832,7 @@
          Documentation Version
          -sympy.matrices.sparsetools._csrtodok()[source]
          +sympy.matrices.sparsetools._csrtodok()[source]

          Converts a CSR representation to DOK representation.

          Examples

          >>> from sympy.matrices.sparsetools import _csrtodok
          @@ -848,7 +848,7 @@ 
          Documentation Version
          -sympy.matrices.sparsetools.banded(**kwargs)[source]
          +sympy.matrices.sparsetools.banded(**kwargs)[source]

          Returns a SparseMatrix from the given dictionary describing the diagonals of the matrix. The keys are positive for upper diagonals and negative for those below the main diagonal. The diff --git a/dev/modules/ntheory.html b/dev/modules/ntheory.html index f69496bcc49..6be13bb2705 100644 --- a/dev/modules/ntheory.html +++ b/dev/modules/ntheory.html @@ -807,7 +807,7 @@

          Documentation Version

          Ntheory Class Reference

          -class sympy.ntheory.generate.Sieve(sieve_interval=1000000)[source]
          +class sympy.ntheory.generate.Sieve(sieve_interval=1000000)[source]

          A list of prime numbers, implemented as a dynamically growing sieve of Eratosthenes. When a lookup is requested involving an odd number that has not been sieved, the sieve is automatically @@ -824,7 +824,7 @@

          Ntheory Class Reference
          -extend(n)[source]
          +extend(n)[source]

          Grow the sieve to cover all primes <= n.

          Examples

          >>> from sympy import sieve
          @@ -838,7 +838,7 @@ 

          Ntheory Class Reference
          -extend_to_no(i)[source]
          +extend_to_no(i)[source]

          Extend to include the ith prime number.

          Parameters:
          @@ -860,7 +860,7 @@

          Ntheory Class Reference
          -mobiusrange(a, b)[source]
          +mobiusrange(a, b)[source]

          Generate all mobius numbers for the range [a, b).

          Parameters:
          @@ -884,7 +884,7 @@

          Ntheory Class Reference
          -primerange(a, b=None)[source]
          +primerange(a, b=None)[source]

          Generate all prime numbers in the range [2, a) or [a, b).

          Examples

          >>> from sympy import sieve, prime
          @@ -909,7 +909,7 @@ 

          Ntheory Class Reference
          -search(n)[source]
          +search(n)[source]

          Return the indices i, j of the primes that bound n.

          If n is prime then i == j.

          Although n can be an expression, if ceiling cannot convert @@ -926,7 +926,7 @@

          Ntheory Class Reference
          -totientrange(a, b)[source]
          +totientrange(a, b)[source]

          Generate all totient numbers for the range [a, b).

          Examples

          >>> from sympy import sieve
          @@ -940,7 +940,7 @@ 

          Ntheory Class Reference
          -class sympy.ntheory.factor_.FactorCache(maxsize: int | None = None)[source]
          +class sympy.ntheory.factor_.FactorCache(maxsize: int | None = None)[source]

          Provides a cache for prime factors. factor_cache is pre-prepared as an instance of FactorCache, and factorint internally references it to speed up @@ -972,13 +972,13 @@

          Ntheory Class Referencefactorint.

          -cache_clear() None[source]
          +cache_clear() None[source]

          Clear the cache

          -get(n: int, default=None)[source]
          +get(n: int, default=None)[source]

          Return the prime factor of n. If it does not exist in the cache, return the value of default.

          @@ -996,7 +996,7 @@

          Ntheory Class Reference

          Ntheory Functions Reference

          -sympy.ntheory.generate.prime(nth)[source]
          +sympy.ntheory.generate.prime(nth)[source]

          Return the nth prime number, where primes are indexed starting from 1: prime(1) = 2, prime(2) = 3, etc.

          @@ -1053,7 +1053,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.primepi(n)[source]
          +sympy.ntheory.generate.primepi(n)[source]

          Represents the prime counting function pi(n) = the number of prime numbers less than or equal to n.

          @@ -1129,7 +1129,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.nextprime(n, ith=1)[source]
          +sympy.ntheory.generate.nextprime(n, ith=1)[source]

          Return the ith prime greater than n.

          Parameters:
          @@ -1170,7 +1170,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.prevprime(n)[source]
          +sympy.ntheory.generate.prevprime(n)[source]

          Return the largest prime smaller than n.

          Notes

          Potential primes are located at 6*j +/- 1. This @@ -1193,7 +1193,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.primerange(a, b=None)[source]
          +sympy.ntheory.generate.primerange(a, b=None)[source]

          Generate a list of all prime numbers in the range [2, a), or [a, b).

          If the range exists in the default sieve, the values will @@ -1290,7 +1290,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.randprime(a, b)[source]
          +sympy.ntheory.generate.randprime(a, b)[source]

          Return a random prime number in the range [a, b).

          Bertrand’s postulate assures that randprime(a, 2*a) will always succeed for a > 1.

          @@ -1325,7 +1325,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.primorial(n, nth=True)[source]
          +sympy.ntheory.generate.primorial(n, nth=True)[source]

          Returns the product of the first n primes (default) or the primes less than or equal to n (when nth=False).

          Examples

          @@ -1376,7 +1376,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.cycle_length(f, x0, nmax=None, values=False)[source]
          +sympy.ntheory.generate.cycle_length(f, x0, nmax=None, values=False)[source]

          For a given iterated sequence, return a generator that gives the length of the iterated cycle (lambda) and the length of terms before the cycle begins (mu); if values is True then the @@ -1429,7 +1429,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.composite(nth)[source]
          +sympy.ntheory.generate.composite(nth)[source]

          Return the nth composite number, with the composite numbers indexed as composite(1) = 4, composite(2) = 6, etc….

          Examples

          @@ -1461,7 +1461,7 @@

          Ntheory Class Reference
          -sympy.ntheory.generate.compositepi(n)[source]
          +sympy.ntheory.generate.compositepi(n)[source]

          Return the number of positive composite numbers less than or equal to n. The first positive composite is 4, i.e. compositepi(4) = 1.

          Examples

          @@ -1491,7 +1491,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.smoothness(n)[source]
          +sympy.ntheory.factor_.smoothness(n)[source]

          Return the B-smooth and B-power smooth values of n.

          The smoothness of n is the largest prime factor of n; the power- smoothness is the largest divisor raised to its multiplicity.

          @@ -1513,7 +1513,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.smoothness_p(n, m=-1, power=0, visual=None)[source]
          +sympy.ntheory.factor_.smoothness_p(n, m=-1, power=0, visual=None)[source]

          Return a list of [m, (p, (M, sm(p + m), psm(p + m)))…] where:

            @@ -1606,7 +1606,7 @@

            Ntheory Class Reference
            -sympy.ntheory.factor_.multiplicity(p, n)[source]
            +sympy.ntheory.factor_.multiplicity(p, n)[source]

            Find the greatest integer m such that p**m divides n.

            Examples

            >>> from sympy import multiplicity, Rational
            @@ -1647,7 +1647,7 @@ 

            Ntheory Class Referencefactor=True,

          -)[source] +)[source]

          Return (b, e) such that n == b**e if n is a unique perfect power with e > 1, else False (e.g. 1 is not a perfect power). A ValueError is raised if n is not Rational.

          @@ -1723,7 +1723,7 @@

          Ntheory Class ReferenceF=None,

          -)[source] +)[source]

          Use Pollard’s rho method to try to extract a nontrivial factor of n. The returned factor may be a composite number. If no factor is found, None is returned.

          @@ -1809,7 +1809,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.pollard_pm1(n, B=10, a=2, retries=0, seed=1234)[source]
          +sympy.ntheory.factor_.pollard_pm1(n, B=10, a=2, retries=0, seed=1234)[source]

          Use Pollard’s p-1 method to try to extract a nontrivial factor of n. Either a divisor (perhaps composite) or None is returned.

          The value of a is the base that is used in the test gcd(a**M - 1, n). @@ -1954,7 +1954,7 @@

          Ntheory Class Referencemultiple=False,

          -)[source] +)[source]

          Given a positive integer n, factorint(n) returns a dict containing the prime factors of n as keys and their respective multiplicities as values. For example:

          @@ -2131,7 +2131,7 @@

          Ntheory Class Referencemultiple=False,

          -)[source] +)[source]

          Given a Rational r, factorrat(r) returns a dict containing the prime factors of r as keys and their respective multiplicities as values. For example:

          @@ -2168,7 +2168,7 @@

          Ntheory Class Reference**kwargs,

          -)[source] +)[source]

          Return a sorted list of n’s prime factors, ignoring multiplicity and any composite factor that remains if the limit was set too low for complete factorization. Unlike factorint(), primefactors() does @@ -2217,7 +2217,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.divisors(n, generator=False, proper=False)[source]
          +sympy.ntheory.factor_.divisors(n, generator=False, proper=False)[source]

          Return all divisors of n sorted from 1..n by default. If generator is True an unordered generator is returned.

          The number of divisors of n can be quite large if there are many @@ -2246,7 +2246,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.proper_divisors(n, generator=False)[source]
          +sympy.ntheory.factor_.proper_divisors(n, generator=False)[source]

          Return all divisors of n except n, sorted by default. If generator is True an unordered generator is returned.

          Examples

          @@ -2267,7 +2267,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.divisor_count(n, modulus=1, proper=False)[source]
          +sympy.ntheory.factor_.divisor_count(n, modulus=1, proper=False)[source]

          Return the number of divisors of n. If modulus is not 1 then only those that are divisible by modulus are counted. If proper is True then the divisor of n will not be counted.

          @@ -2289,7 +2289,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.proper_divisor_count(n, modulus=1)[source]
          +sympy.ntheory.factor_.proper_divisor_count(n, modulus=1)[source]

          Return the number of proper divisors of n.

          Examples

          >>> from sympy import proper_divisor_count
          @@ -2307,7 +2307,7 @@ 

          Ntheory Class Reference
          -sympy.ntheory.factor_.udivisors(n, generator=False)[source]
          +sympy.ntheory.factor_.udivisors(n, generator=False)[source]

          Return all unitary divisors of n sorted from 1..n by default. If generator is True an unordered generator is returned.

          The number of unitary divisors of n can be quite large if there are many @@ -2344,7 +2344,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.udivisor_count(n)[source]
          +sympy.ntheory.factor_.udivisor_count(n)[source]

          Return the number of unitary divisors of n.

          Parameters:
          @@ -2372,7 +2372,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.antidivisors(n, generator=False)[source]
          +sympy.ntheory.factor_.antidivisors(n, generator=False)[source]

          Return all antidivisors of n sorted from 1..n by default.

          Antidivisors [R661] of n are numbers that do not divide n by the largest possible margin. If generator is True an unordered generator is returned.

          @@ -2402,7 +2402,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.antidivisor_count(n)[source]
          +sympy.ntheory.factor_.antidivisor_count(n)[source]

          Return the number of antidivisors [R662] of n.

          Parameters:
          @@ -2433,7 +2433,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.totient(n)[source]
          +sympy.ntheory.factor_.totient(n)[source]

          Calculate the Euler totient function phi(n)

          Deprecated since version 1.13: The totient function is deprecated. Use sympy.functions.combinatorial.numbers.totient @@ -2476,7 +2476,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.reduced_totient(n)[source]
          +sympy.ntheory.factor_.reduced_totient(n)[source]

          Calculate the Carmichael reduced totient function lambda(n)

          Deprecated since version 1.13: The reduced_totient function is deprecated. Use sympy.functions.combinatorial.numbers.reduced_totient @@ -2514,7 +2514,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.divisor_sigma(n, k=1)[source]
          +sympy.ntheory.factor_.divisor_sigma(n, k=1)[source]

          Calculate the divisor function \(\sigma_k(n)\) for positive integer n

          Deprecated since version 1.13: The divisor_sigma function is deprecated. Use sympy.functions.combinatorial.numbers.divisor_sigma @@ -2573,7 +2573,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.udivisor_sigma(n, k=1)[source]
          +sympy.ntheory.factor_.udivisor_sigma(n, k=1)[source]

          Calculate the unitary divisor function \(\sigma_k^*(n)\) for positive integer n

          Deprecated since version 1.13: The udivisor_sigma function is deprecated. Use sympy.functions.combinatorial.numbers.udivisor_sigma @@ -2629,7 +2629,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.core(n, t=2)[source]
          +sympy.ntheory.factor_.core(n, t=2)[source]

          Calculate core(n, t) = \(core_t(n)\) of a positive integer n

          core_2(n) is equal to the squarefree part of n

          If n’s prime factorization is:

          @@ -2681,7 +2681,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.digits(n, b=10, digits=None)[source]
          +sympy.ntheory.factor_.digits(n, b=10, digits=None)[source]

          Return a list of the digits of n in base b. The first element in the list is b (or -b if n is negative).

          @@ -2731,7 +2731,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.primenu(n)[source]
          +sympy.ntheory.factor_.primenu(n)[source]

          Calculate the number of distinct prime factors for a positive integer n.

          Deprecated since version 1.13: The primenu function is deprecated. Use sympy.functions.combinatorial.numbers.primenu @@ -2771,7 +2771,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.primeomega(n)[source]
          +sympy.ntheory.factor_.primeomega(n)[source]

          Calculate the number of prime factors counting multiplicities for a positive integer n.

          @@ -2812,7 +2812,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.mersenne_prime_exponent(nth)[source]
          +sympy.ntheory.factor_.mersenne_prime_exponent(nth)[source]

          Returns the exponent i for the nth Mersenne prime (which has the form \(2^i - 1\)).

          Examples

          @@ -2827,7 +2827,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.is_perfect(n)[source]
          +sympy.ntheory.factor_.is_perfect(n)[source]

          Returns True if n is a perfect number, else False.

          A perfect number is equal to the sum of its positive, proper divisors.

          Examples

          @@ -2856,7 +2856,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.abundance(n)[source]
          +sympy.ntheory.factor_.abundance(n)[source]

          Returns the difference between the sum of the positive proper divisors of a number and the number.

          Examples

          @@ -2875,7 +2875,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.is_abundant(n)[source]
          +sympy.ntheory.factor_.is_abundant(n)[source]

          Returns True if n is an abundant number, else False.

          A abundant number is smaller than the sum of its positive proper divisors.

          Examples

          @@ -2897,7 +2897,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.is_deficient(n)[source]
          +sympy.ntheory.factor_.is_deficient(n)[source]

          Returns True if n is a deficient number, else False.

          A deficient number is greater than the sum of its positive proper divisors.

          Examples

          @@ -2919,7 +2919,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.is_amicable(m, n)[source]
          +sympy.ntheory.factor_.is_amicable(m, n)[source]

          Returns True if the numbers \(m\) and \(n\) are “amicable”, else False.

          Amicable numbers are two different numbers so related that the sum of the proper divisors of each is equal to that of the other.

          @@ -2943,7 +2943,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.is_carmichael(n)[source]
          +sympy.ntheory.factor_.is_carmichael(n)[source]

          Returns True if the numbers \(n\) is Carmichael number, else False.

          Parameters:
          @@ -2965,7 +2965,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.find_carmichael_numbers_in_range(x, y)[source]
          +sympy.ntheory.factor_.find_carmichael_numbers_in_range(x, y)[source]

          Returns a list of the number of Carmichael in the range

          See also

          @@ -2975,7 +2975,7 @@

          Ntheory Class Reference
          -sympy.ntheory.factor_.find_first_n_carmichaels(n)[source]
          +sympy.ntheory.factor_.find_first_n_carmichaels(n)[source]

          Returns the first n Carmichael numbers.

          Parameters:
          @@ -2990,7 +2990,7 @@

          Ntheory Class Reference
          -sympy.ntheory.modular.symmetric_residue(a, m)[source]
          +sympy.ntheory.modular.symmetric_residue(a, m)[source]

          Return the residual mod m such that it is within half of the modulus.

          >>> from sympy.ntheory.modular import symmetric_residue
           >>> symmetric_residue(1, 6)
          @@ -3003,7 +3003,7 @@ 

          Ntheory Class Reference
          -sympy.ntheory.modular.crt(m, v, symmetric=False, check=True)[source]
          +sympy.ntheory.modular.crt(m, v, symmetric=False, check=True)[source]

          Chinese Remainder Theorem.

          The moduli in m are assumed to be pairwise coprime. The output is then an integer f, such that f = v_i mod m_i for each pair out @@ -3059,7 +3059,7 @@

          Ntheory Class Reference
          -sympy.ntheory.modular.crt1(m)[source]
          +sympy.ntheory.modular.crt1(m)[source]

          First part of Chinese Remainder Theorem, for multiple application.

          Examples

          >>> from sympy.ntheory.modular import crt, crt1, crt2
          @@ -3099,7 +3099,7 @@ 

          Ntheory Class Reference
          -sympy.ntheory.modular.crt2(m, v, mm, e, s, symmetric=False)[source]
          +sympy.ntheory.modular.crt2(m, v, mm, e, s, symmetric=False)[source]

          Second part of Chinese Remainder Theorem, for multiple application.

          See crt1 for usage.

          Examples

          @@ -3121,7 +3121,7 @@

          Ntheory Class Reference
          -sympy.ntheory.modular.solve_congruence(*remainder_modulus_pairs, **hint)[source]
          +sympy.ntheory.modular.solve_congruence(*remainder_modulus_pairs, **hint)[source]

          Compute the integer n that has the residual ai when it is divided by mi where the ai and mi are given as pairs to this function: ((a1, m1), (a2, m2), …). If there is no solution, @@ -3175,7 +3175,7 @@

          Ntheory Class Reference
          -sympy.ntheory.multinomial.binomial_coefficients(n)[source]
          +sympy.ntheory.multinomial.binomial_coefficients(n)[source]

          Return a dictionary containing pairs \({(k1,k2) : C_kn}\) where \(C_kn\) are binomial coefficients and \(n=k1+k2\).

          Examples

          @@ -3193,7 +3193,7 @@

          Ntheory Class Reference
          -sympy.ntheory.multinomial.binomial_coefficients_list(n)[source]
          +sympy.ntheory.multinomial.binomial_coefficients_list(n)[source]

          Return a list of binomial coefficients as rows of the Pascal’s triangle.

          Examples

          @@ -3210,7 +3210,7 @@

          Ntheory Class Reference
          -sympy.ntheory.multinomial.multinomial_coefficients(m, n)[source]
          +sympy.ntheory.multinomial.multinomial_coefficients(m, n)[source]

          Return a dictionary containing pairs {(k1,k2,..,km) : C_kn} where C_kn are multinomial coefficients such that n=k1+k2+..+km.

          @@ -3245,7 +3245,7 @@

          Ntheory Class Reference_tuple=<class 'tuple'>,

          -)[source] +)[source]

          multinomial coefficient iterator

          This routine has been optimized for \(m\) large with respect to \(n\) by taking advantage of the fact that when the monomial tuples \(t\) are stripped of @@ -3269,7 +3269,7 @@

          Ntheory Class Reference
          -sympy.ntheory.partitions_.npartitions(n, verbose=False)[source]
          +sympy.ntheory.partitions_.npartitions(n, verbose=False)[source]

          Calculate the partition function P(n), i.e. the number of ways that n can be written as a sum of positive integers.

          @@ -3297,7 +3297,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_fermat_pseudoprime(n, a)[source]
          +sympy.ntheory.primetest.is_fermat_pseudoprime(n, a)[source]

          Returns True if n is prime or is an odd composite integer that is coprime to a and satisfy the modular arithmetic congruence relation:

          @@ -3346,7 +3346,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_euler_pseudoprime(n, a)[source]
          +sympy.ntheory.primetest.is_euler_pseudoprime(n, a)[source]

          Returns True if n is prime or is an odd composite integer that is coprime to a and satisfy the modular arithmetic congruence relation:

          @@ -3394,7 +3394,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_euler_jacobi_pseudoprime(n, a)[source]
          +sympy.ntheory.primetest.is_euler_jacobi_pseudoprime(n, a)[source]

          Returns True if n is prime or is an odd composite integer that is coprime to a and satisfy the modular arithmetic congruence relation:

          @@ -3441,7 +3441,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_square(n, prep=True)[source]
          +sympy.ntheory.primetest.is_square(n, prep=True)[source]

          Return True if n == a * a for some integer a, else False. If n is suspected of not being a square then this is a quick method of confirming that it is not.

          @@ -3468,7 +3468,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.mr(n, bases)[source]
          +sympy.ntheory.primetest.mr(n, bases)[source]

          Perform a Miller-Rabin strong pseudoprime test on n using a given list of bases/witnesses.

          Examples

          @@ -3493,7 +3493,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_lucas_prp(n)[source]
          +sympy.ntheory.primetest.is_lucas_prp(n)[source]

          Standard Lucas compositeness test with Selfridge parameters. Returns False if n is definitely composite, and True if n is a Lucas probable prime.

          @@ -3537,7 +3537,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_strong_lucas_prp(n)[source]
          +sympy.ntheory.primetest.is_strong_lucas_prp(n)[source]

          Strong Lucas compositeness test with Selfridge parameters. Returns False if n is definitely composite, and True if n is a strong Lucas probable prime.

          @@ -3582,7 +3582,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_extra_strong_lucas_prp(n)[source]
          +sympy.ntheory.primetest.is_extra_strong_lucas_prp(n)[source]

          Extra Strong Lucas compositeness test. Returns False if n is definitely composite, and True if n is an “extra strong” Lucas probable prime.

          @@ -3629,7 +3629,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.proth_test(n)[source]
          +sympy.ntheory.primetest.proth_test(n)[source]

          Test if the Proth number \(n = k2^m + 1\) is prime. where k is a positive odd number and \(2^m > k\).

          Parameters:
          @@ -3667,7 +3667,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_mersenne_prime(n)[source]
          +sympy.ntheory.primetest.is_mersenne_prime(n)[source]

          Returns True if n is a Mersenne prime, else False.

          A Mersenne prime is a prime number having the form \(2^i - 1\).

          Examples

          @@ -3689,7 +3689,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.isprime(n)[source]
          +sympy.ntheory.primetest.isprime(n)[source]

          Test if n is a prime number (True) or not (False). For n < 2^64 the answer is definitive; larger n values have a small probability of actually being pseudoprimes.

          @@ -3769,7 +3769,7 @@

          Ntheory Class Reference
          -sympy.ntheory.primetest.is_gaussian_prime(num)[source]
          +sympy.ntheory.primetest.is_gaussian_prime(num)[source]

          Test if num is a Gaussian prime number.

          References

          @@ -3782,7 +3782,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.n_order(a, n)[source]
          +sympy.ntheory.residue_ntheory.n_order(a, n)[source]

          Returns the order of a modulo n.

          Parameters:
          @@ -3822,7 +3822,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.is_primitive_root(a, p)[source]
          +sympy.ntheory.residue_ntheory.is_primitive_root(a, p)[source]

          Returns True if a is a primitive root of p.

          Parameters:
          @@ -3874,7 +3874,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.primitive_root(p, smallest=True)[source]
          +sympy.ntheory.residue_ntheory.primitive_root(p, smallest=True)[source]

          Returns a primitive root of p or None.

          Parameters:
          @@ -3941,7 +3941,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.sqrt_mod(a, p, all_roots=False)[source]
          +sympy.ntheory.residue_ntheory.sqrt_mod(a, p, all_roots=False)[source]

          Find a root of x**2 = a mod p.

          Parameters:
          @@ -3968,7 +3968,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.sqrt_mod_iter(a, p, domain=<class 'int'>)[source]
          +sympy.ntheory.residue_ntheory.sqrt_mod_iter(a, p, domain=<class 'int'>)[source]

          Iterate over solutions to x**2 = a mod p.

          Parameters:
          @@ -3994,7 +3994,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.quadratic_residues(p) list[int][source]
          +sympy.ntheory.residue_ntheory.quadratic_residues(p) list[int][source]

          Returns the list of quadratic residues.

          Examples

          >>> from sympy.ntheory.residue_ntheory import quadratic_residues
          @@ -4006,7 +4006,7 @@ 

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.nthroot_mod(a, n, p, all_roots=False)[source]
          +sympy.ntheory.residue_ntheory.nthroot_mod(a, n, p, all_roots=False)[source]

          Find the solutions to x**n = a mod p.

          Parameters:
          @@ -4081,7 +4081,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.is_nthpow_residue(a, n, m)[source]
          +sympy.ntheory.residue_ntheory.is_nthpow_residue(a, n, m)[source]

          Returns True if x**n == a (mod m) has solutions.

          References

          @@ -4096,7 +4096,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.is_quad_residue(a, p)[source]
          +sympy.ntheory.residue_ntheory.is_quad_residue(a, p)[source]

          Returns True if a (mod p) is in the set of squares mod p, i.e a % p in set([i**2 % p for i in range(p)]).

          @@ -4144,7 +4144,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.legendre_symbol(a, p)[source]
          +sympy.ntheory.residue_ntheory.legendre_symbol(a, p)[source]

          Returns the Legendre symbol \((a / p)\).

          Deprecated since version 1.13: The legendre_symbol function is deprecated. Use sympy.functions.combinatorial.numbers.legendre_symbol @@ -4183,7 +4183,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.jacobi_symbol(m, n)[source]
          +sympy.ntheory.residue_ntheory.jacobi_symbol(m, n)[source]

          Returns the Jacobi symbol \((m / n)\).

          Deprecated since version 1.13: The jacobi_symbol function is deprecated. Use sympy.functions.combinatorial.numbers.jacobi_symbol @@ -4243,7 +4243,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.mobius(n)[source]
          +sympy.ntheory.residue_ntheory.mobius(n)[source]

          Mobius function maps natural number to {-1, 0, 1}

          Deprecated since version 1.13: The mobius function is deprecated. Use sympy.functions.combinatorial.numbers.mobius @@ -4305,7 +4305,7 @@

          Ntheory Class Referenceprime_order=None,

          -)[source] +)[source]

          Compute the discrete logarithm of a to the base b modulo n.

          This is a recursive function to reduce the discrete logarithm problem in cyclic groups of composite order to the problem in cyclic groups of prime @@ -4343,7 +4343,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.quadratic_congruence(a, b, c, n)[source]
          +sympy.ntheory.residue_ntheory.quadratic_congruence(a, b, c, n)[source]

          Find the solutions to \(a x^2 + b x + c \equiv 0 \pmod{n}\).

          Parameters:
          @@ -4381,7 +4381,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.polynomial_congruence(expr, m)[source]
          +sympy.ntheory.residue_ntheory.polynomial_congruence(expr, m)[source]

          Find the solutions to a polynomial congruence equation modulo m.

          Parameters:
          @@ -4408,7 +4408,7 @@

          Ntheory Class Reference
          -sympy.ntheory.residue_ntheory.binomial_mod(n, m, k)[source]
          +sympy.ntheory.residue_ntheory.binomial_mod(n, m, k)[source]

          Compute binomial(n, m) % k.

          Parameters:
          @@ -4443,7 +4443,7 @@

          Ntheory Class Reference
          -sympy.ntheory.continued_fraction.continued_fraction(a) list[source]
          +sympy.ntheory.continued_fraction.continued_fraction(a) list[source]

          Return the continued fraction representation of a Rational or quadratic irrational.

          Examples

          @@ -4461,7 +4461,7 @@

          Ntheory Class Reference
          -sympy.ntheory.continued_fraction.continued_fraction_convergents(cf)[source]
          +sympy.ntheory.continued_fraction.continued_fraction_convergents(cf)[source]

          Return an iterator over the convergents of a continued fraction (cf).

          The parameter should be in either of the following to forms: - A list of partial quotients, possibly with the last element being a list @@ -4518,7 +4518,7 @@

          Ntheory Class Reference
          -sympy.ntheory.continued_fraction.continued_fraction_iterator(x)[source]
          +sympy.ntheory.continued_fraction.continued_fraction_iterator(x)[source]

          Return continued fraction expansion of x as iterator.

          Examples

          >>> from sympy import Rational, pi
          @@ -4565,7 +4565,7 @@ 

          Ntheory Class References=1,

          -) list[source] +) list[source]

          Find the periodic continued fraction expansion of a quadratic irrational.

          Compute the continued fraction expansion of a rational or a quadratic irrational number, i.e. \(\frac{p + s\sqrt{d}}{q}\), where @@ -4632,7 +4632,7 @@

          Ntheory Class Reference
          -sympy.ntheory.continued_fraction.continued_fraction_reduce(cf)[source]
          +sympy.ntheory.continued_fraction.continued_fraction_reduce(cf)[source]

          Reduce a continued fraction to a rational or quadratic irrational.

          Compute the rational or quadratic irrational number from its terminating or periodic continued fraction expansion. The @@ -4672,7 +4672,7 @@

          Ntheory Class Reference
          -sympy.ntheory.digits.count_digits(n, b=10)[source]
          +sympy.ntheory.digits.count_digits(n, b=10)[source]

          Return a dictionary whose keys are the digits of n in the given base, b, with keys indicating the digits appearing in the number and values indicating how many times that digit appeared.

          @@ -4713,7 +4713,7 @@

          Ntheory Class Reference
          -sympy.ntheory.digits.digits(n, b=10, digits=None)[source]
          +sympy.ntheory.digits.digits(n, b=10, digits=None)[source]

          Return a list of the digits of n in base b. The first element in the list is b (or -b if n is negative).

          @@ -4763,7 +4763,7 @@

          Ntheory Class Reference
          -sympy.ntheory.digits.is_palindromic(n, b=10)[source]
          +sympy.ntheory.digits.is_palindromic(n, b=10)[source]

          return True if n is the same when read from left to right or right to left in the given base, b.

          Examples

          @@ -4796,7 +4796,7 @@

          Ntheory Class Reference
          -sympy.ntheory.egyptian_fraction.egyptian_fraction(r, algorithm='Greedy')[source]
          +sympy.ntheory.egyptian_fraction.egyptian_fraction(r, algorithm='Greedy')[source]

          Return the list of denominators of an Egyptian fraction expansion [R713] of the said rational \(r\).

          @@ -4903,7 +4903,7 @@

          Ntheory Class Reference
          -sympy.ntheory.bbp_pi.pi_hex_digits(n, prec=14)[source]
          +sympy.ntheory.bbp_pi.pi_hex_digits(n, prec=14)[source]

          Returns a string containing prec (default 14) digits starting at the nth digit of pi in hex. Counting of digits starts at 0 and the decimal is not counted, so for n = 0 the @@ -4977,7 +4977,7 @@

          Ntheory Class Referenceseed=1234,

          -)[source] +)[source]

          Performs factorization using Lenstra’s Elliptic curve method.

          This function repeatedly calls _ecm_one_factor to compute the factors of n. First all the small factors are taken out using trial division. @@ -5028,7 +5028,7 @@

          Examples with two 25 digit factors. \(qs\) is able to factorize this in around 248s.

          -sympy.ntheory.qs.qs(N, prime_bound, M, ERROR_TERM=25, seed=1234)[source]
          +sympy.ntheory.qs.qs(N, prime_bound, M, ERROR_TERM=25, seed=1234)[source]

          Performs factorization using Self-Initializing Quadratic Sieve. In SIQS, let N be a number to be factored, and this N should not be a perfect power. If we find two integers such that X**2 = Y**2 modN and diff --git a/dev/modules/parsing.html b/dev/modules/parsing.html index 6a750349d5a..49829e7cd04 100644 --- a/dev/modules/parsing.html +++ b/dev/modules/parsing.html @@ -807,7 +807,7 @@

          Documentation Version

          Parsing Functions Reference

          -sympy.parsing.sympy_parser.parse_expr(s: str, local_dict: ~typing.Dict[str, ~typing.Any] | None = None, transformations: ~typing.Tuple[~typing.Callable[[~typing.List[~typing.Tuple[int, str]], ~typing.Dict[str, ~typing.Any], ~typing.Dict[str, ~typing.Any]], ~typing.List[~typing.Tuple[int, str]]], ...] | str = (<function lambda_notation>, <function auto_symbol>, <function repeated_decimals>, <function auto_number>, <function factorial_notation>), global_dict: ~typing.Dict[str, ~typing.Any] | None = None, evaluate=True)[source]
          +sympy.parsing.sympy_parser.parse_expr(s: str, local_dict: ~typing.Dict[str, ~typing.Any] | None = None, transformations: ~typing.Tuple[~typing.Callable[[~typing.List[~typing.Tuple[int, str]], ~typing.Dict[str, ~typing.Any], ~typing.Dict[str, ~typing.Any]], ~typing.List[~typing.Tuple[int, str]]], ...] | str = (<function lambda_notation>, <function auto_symbol>, <function repeated_decimals>, <function auto_number>, <function factorial_notation>), global_dict: ~typing.Dict[str, ~typing.Any] | None = None, evaluate=True)[source]

          Converts the string s to a SymPy expression, in local_dict.

          Parameters:
          @@ -947,7 +947,7 @@

          Parsing Functions Referencetransformations: Tuple[Callable[[List[Tuple[int, str]], Dict[str, Any], Dict[str, Any]], List[Tuple[int, str]]], ...],

          -) str[source] +) str[source]

          Converts the string s to Python code, in local_dict

          Generally, parse_expr should be used.

          @@ -962,19 +962,19 @@

          Parsing Functions Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Evaluate Python code generated by stringify_expr.

          Generally, parse_expr should be used.

          -sympy.parsing.maxima.parse_maxima(str, globals=None, name_dict={})[source]
          +sympy.parsing.maxima.parse_maxima(str, globals=None, name_dict={})[source]
          -sympy.parsing.mathematica.parse_mathematica(s)[source]
          +sympy.parsing.mathematica.parse_mathematica(s)[source]

          Translate a string containing a Wolfram Mathematica expression to a SymPy expression.

          If the translator is unable to find a suitable SymPy expression, the @@ -1047,7 +1047,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Splits symbol names for implicit multiplication.

          Intended to let expressions like xyz be parsed as x*y*z. Does not split Greek character names, so theta will not become @@ -1063,7 +1063,7 @@

          Parsing Transformations Referencepredicate: Callable[[str], bool],

          -)[source] +)[source]

          Creates a transformation that splits symbol names.

          predicate should return True if the symbol name is to be split.

          For instance, to retain the default behavior but avoid splitting certain @@ -1094,7 +1094,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -) List[Tuple[int, str]][source] +) List[Tuple[int, str]][source]

          Makes the multiplication operator optional in most cases.

          Use this before implicit_application(), otherwise expressions like sin 2x will be parsed as x * sin(2) rather than sin(2*x).

          @@ -1118,7 +1118,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -) List[Tuple[int, str]][source] +) List[Tuple[int, str]][source]

          Makes parentheses optional in some cases for function calls.

          Use this after implicit_multiplication(), otherwise expressions like sin 2x will be parsed as x * sin(2) rather than @@ -1143,7 +1143,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Allows functions to be exponentiated, e.g. cos**2(x).

          Examples

          >>> from sympy.parsing.sympy_parser import (parse_expr,
          @@ -1165,7 +1165,7 @@ 

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -) List[Tuple[int, str]][source] +) List[Tuple[int, str]][source]

          Allows a slightly relaxed syntax.

          • Parentheses for single-argument method calls are optional.

          • @@ -1195,7 +1195,7 @@

            Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Converts floats into Rational. Run AFTER auto_number.

          @@ -1209,7 +1209,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Treats XOR, ^, as exponentiation, **.

          @@ -1226,7 +1226,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Substitutes “lambda” with its SymPy equivalent Lambda(). However, the conversion does not take place if only “lambda” is passed because that is a syntax error.

          @@ -1242,7 +1242,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Inserts calls to Symbol/Function for undefined variables.

          @@ -1256,7 +1256,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Allows 0.2[1] notation to represent the repeated decimal 0.2111… (19/90)

          Run this before auto_number.

          @@ -1271,7 +1271,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Converts numeric literals to use SymPy equivalents.

          Complex numbers use I, integer literals use Integer, and float literals use Float.

          @@ -1287,7 +1287,7 @@

          Parsing Transformations Referenceglobal_dict: Dict[str, Any],

          -)[source] +)[source]

          Allows standard notation for factorial.

          @@ -1303,7 +1303,7 @@

          Experimental \(\mathrm{\LaTeX}\)<

          \(\mathrm{\LaTeX}\) Parsing Functions Reference

          -sympy.parsing.latex.parse_latex(s, strict=False, backend='antlr')[source]
          +sympy.parsing.latex.parse_latex(s, strict=False, backend='antlr')[source]

          Converts the input LaTeX string s to a SymPy Expr.

          Parameters:
          @@ -1477,7 +1477,7 @@

          Lark \(\mathrm{\LaTeX}\) P

          Lark \(\mathrm{\LaTeX}\) Parser Functions

          -sympy.parsing.latex.parse_latex_lark(s: str)[source]
          +sympy.parsing.latex.parse_latex_lark(s: str)[source]

          Experimental LaTeX parser using Lark.

          This function is still under development and its API may change with the next releases of SymPy.

          @@ -1497,7 +1497,7 @@

          Lark \(\mathrm{\LaTeX}\) P
          transformer=None,

          -)[source] +)[source]

          Class for converting input \(\mathrm{\LaTeX}\) strings into SymPy Expressions. It holds all the necessary internal data for doing so, and exposes hooks for customizing its behavior.

          @@ -1530,7 +1530,7 @@

          Lark \(\mathrm{\LaTeX}\) P
          -class sympy.parsing.latex.lark.TransformToSymPyExpr[source]
          +class sympy.parsing.latex.lark.TransformToSymPyExpr[source]

          Returns a SymPy expression that is generated by traversing the lark.Tree passed to the .transform() function.

          @@ -1557,7 +1557,7 @@

          Lark \(\mathrm{\LaTeX}\) P

          \(\mathrm{\LaTeX}\) Parsing Exceptions Reference

          -class sympy.parsing.latex.LaTeXParsingError[source]
          +class sympy.parsing.latex.LaTeXParsingError[source]
          @@ -1565,7 +1565,7 @@

          \(\mathrm{\LaTeX}\) Parsin

          SymPy Expression Reference

          -class sympy.parsing.sym_expr.SymPyExpression(source_code=None, mode=None)[source]
          +class sympy.parsing.sym_expr.SymPyExpression(source_code=None, mode=None)[source]

          Class to store and handle SymPy expressions

          This class will hold SymPy Expressions and handle the API for the conversion to and from different languages.

          @@ -1636,7 +1636,7 @@

          \(\mathrm{\LaTeX}\) Parsin

          -convert_to_c()[source]
          +convert_to_c()[source]

          Returns a list with the c source code for the SymPy expressions

          Examples

          >>> from sympy.parsing.sym_expr import SymPyExpression
          @@ -1658,7 +1658,7 @@ 

          \(\mathrm{\LaTeX}\) Parsin
          -convert_to_expr(src_code, mode)[source]
          +convert_to_expr(src_code, mode)[source]

          Converts the given source code to SymPy Expressions

          Examples

          >>> from sympy.parsing.sym_expr import SymPyExpression
          @@ -1697,7 +1697,7 @@ 

          \(\mathrm{\LaTeX}\) Parsin
          -convert_to_fortran()[source]
          +convert_to_fortran()[source]

          Returns a list with the fortran source code for the SymPy expressions

          Examples

          >>> from sympy.parsing.sym_expr import SymPyExpression
          @@ -1718,7 +1718,7 @@ 

          \(\mathrm{\LaTeX}\) Parsin
          -convert_to_python()[source]
          +convert_to_python()[source]

          Returns a list with Python code for the SymPy expressions

          Examples

          >>> from sympy.parsing.sym_expr import SymPyExpression
          @@ -1739,7 +1739,7 @@ 

          \(\mathrm{\LaTeX}\) Parsin
          -return_expr()[source]
          +return_expr()[source]

          Returns the expression list

          Examples

          >>> from sympy.parsing.sym_expr import SymPyExpression
          diff --git a/dev/modules/physics/biomechanics/api/activation.html b/dev/modules/physics/biomechanics/api/activation.html
          index 7360d9b4f5e..18251dd97f3 100644
          --- a/dev/modules/physics/biomechanics/api/activation.html
          +++ b/dev/modules/physics/biomechanics/api/activation.html
          @@ -814,7 +814,7 @@ 
          Documentation Version
          module.

          -class sympy.physics.biomechanics.activation.ActivationBase(name)[source]
          +class sympy.physics.biomechanics.activation.ActivationBase(name)[source]

          Abstract base class for all activation dynamics classes to inherit from.

          Notes

          Instances of this class cannot be directly instantiated by users. However, @@ -928,7 +928,7 @@

          Documentation Version
          -abstract rhs()[source]
          +abstract rhs()[source]

          Explanation

          The solution to the linear system of ordinary differential equations governing the activation dynamics:

          @@ -946,7 +946,7 @@
          Documentation Version
          -abstract classmethod with_defaults(name)[source]
          +abstract classmethod with_defaults(name)[source]

          Alternate constructor that provides recommended defaults for constants.

          @@ -973,7 +973,7 @@
          Documentation Version
          smoothing_rate=None,
          -)[source] +)[source]

          First-order activation dynamics based on De Groote et al., 2016 [R720].

          Explanation

          Gives the first-order activation dynamics equation for the rate of change @@ -1106,7 +1106,7 @@

          Documentation Version
          -rhs()[source]
          +rhs()[source]

          Ordered column matrix of equations for the solution of M x' = F.

          Explanation

          The solution to the linear system of ordinary differential equations @@ -1157,7 +1157,7 @@

          Documentation Version
          name,
          -)[source] +)[source]

          Alternate constructor that will use the published constants.

          Explanation

          Returns an instance of FirstOrderActivationDeGroote2016 using the @@ -1181,7 +1181,7 @@

          Documentation Version
          -class sympy.physics.biomechanics.activation.ZerothOrderActivation(name)[source]
          +class sympy.physics.biomechanics.activation.ZerothOrderActivation(name)[source]

          Simple zeroth-order activation dynamics mapping excitation to activation.

          Explanation

          @@ -1285,7 +1285,7 @@
          Documentation Version
          -rhs()[source]
          +rhs()[source]

          Ordered column matrix of equations for the solution of M x' = F.

          Explanation

          The solution to the linear system of ordinary differential equations @@ -1310,7 +1310,7 @@

          Documentation Version
          -classmethod with_defaults(name)[source]
          +classmethod with_defaults(name)[source]

          Alternate constructor that provides recommended defaults for constants.

          Explanation

          diff --git a/dev/modules/physics/biomechanics/api/curve.html b/dev/modules/physics/biomechanics/api/curve.html index cb8508522f2..419993562c8 100644 --- a/dev/modules/physics/biomechanics/api/curve.html +++ b/dev/modules/physics/biomechanics/api/curve.html @@ -818,13 +818,13 @@
          Documentation Version
          fiber_force_velocity_inverse: CharacteristicCurveFunction,
          -)[source] +)[source]

          Simple data container to group together related characteristic curves.

          -class sympy.physics.biomechanics.curve.CharacteristicCurveFunction[source]
          +class sympy.physics.biomechanics.curve.CharacteristicCurveFunction[source]

          Base class for all musculotendon characteristic curve functions.

          @@ -848,7 +848,7 @@
          Documentation Version
          c11,
          -)[source] +)[source]

          Active muscle fiber force-length curve based on De Groote et al., 2016 [R721].

          Explanation

          @@ -951,7 +951,7 @@
          Documentation Version
          **hints,
          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -996,7 +996,7 @@
          Documentation Version
          c11,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -1076,7 +1076,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -1098,7 +1098,7 @@
          Documentation Version
          l_M_tilde,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -1140,7 +1140,7 @@
          Documentation Version
          c1,
          -)[source] +)[source]

          Passive muscle fiber force-length curve based on De Groote et al., 2016 [R722].

          Explanation

          @@ -1223,7 +1223,7 @@
          Documentation Version
          **hints,
          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -1258,7 +1258,7 @@
          Documentation Version
          c1,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -1288,7 +1288,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -1310,7 +1310,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Inverse function.

          Parameters:
          @@ -1330,7 +1330,7 @@
          Documentation Version
          l_M_tilde,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -1361,7 +1361,7 @@
          Documentation Version
          c1,
          -)[source] +)[source]

          Inverse passive muscle fiber force-length curve based on De Groote et al., 2016 [R723].

          Explanation

          @@ -1438,7 +1438,7 @@
          Documentation Version
          **hints,

          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -1473,7 +1473,7 @@
          Documentation Version
          c1,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -1503,7 +1503,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -1525,7 +1525,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Inverse function.

          Parameters:
          @@ -1545,7 +1545,7 @@
          Documentation Version
          fl_M_pas,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -1579,7 +1579,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Muscle fiber force-velocity curve based on De Groote et al., 2016 [R724].

          Explanation

          Gives the normalized muscle fiber force produced as a function of @@ -1665,7 +1665,7 @@

          Documentation Version
          **hints,

          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -1702,7 +1702,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -1736,7 +1736,7 @@
          Documentation Version
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -1752,7 +1752,7 @@
          Documentation Version
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Inverse function.

          Parameters:
          @@ -1772,7 +1772,7 @@
          Documentation Version
          v_M_tilde,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -1806,7 +1806,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Inverse muscle fiber force-velocity curve based on De Groote et al., 2016 [R725].

          Explanation

          @@ -1882,7 +1882,7 @@
          Documentation Version
          **hints,
          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -1919,7 +1919,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -1960,7 +1960,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -1982,7 +1982,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Inverse function.

          Parameters:
          @@ -2002,7 +2002,7 @@
          Documentation Version
          fv_M,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -2037,7 +2037,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Tendon force-length curve based on De Groote et al., 2016 [R726].

          Explanation

          Gives the normalized tendon force produced as a function of normalized @@ -2124,7 +2124,7 @@

          Documentation Version
          **hints,
          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -2161,7 +2161,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -2195,7 +2195,7 @@
          Documentation Version
          -fdiff(argindex=1)[source]
          +fdiff(argindex=1)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -2211,7 +2211,7 @@
          Documentation Version
          -inverse(argindex=1)[source]
          +inverse(argindex=1)[source]

          Inverse function.

          Parameters:
          @@ -2231,7 +2231,7 @@
          Documentation Version
          l_T_tilde,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -2265,7 +2265,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Inverse tendon force-length curve based on De Groote et al., 2016 [R727].

          Explanation

          Gives the normalized tendon length that produces a specific normalized @@ -2341,7 +2341,7 @@

          Documentation Version
          **hints,
          -)[source] +)[source]

          Evaluate the expression defining the function.

          Parameters:
          @@ -2378,7 +2378,7 @@
          Documentation Version
          c3,
          -)[source] +)[source]

          Evaluation of basic inputs.

          Parameters:
          @@ -2418,7 +2418,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Derivative of the function with respect to a single argument.

          Parameters:
          @@ -2440,7 +2440,7 @@
          Documentation Version
          argindex=1,
          -)[source] +)[source]

          Inverse function.

          Parameters:
          @@ -2460,7 +2460,7 @@
          Documentation Version
          fl_T,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          diff --git a/dev/modules/physics/biomechanics/api/musculotendon.html b/dev/modules/physics/biomechanics/api/musculotendon.html index 719bc04bc33..19fbca79a85 100644 --- a/dev/modules/physics/biomechanics/api/musculotendon.html +++ b/dev/modules/physics/biomechanics/api/musculotendon.html @@ -830,7 +830,7 @@
          Documentation Version
          with_defaults=False,
          -)[source] +)[source]

          Abstract base class for all musculotendon classes to inherit from.

          Parameters:
          @@ -1035,7 +1035,7 @@
          Documentation Version
          -abstract curves()[source]
          +abstract curves()[source]

          Return a CharacteristicCurveCollection of the curves related to the specific model.

          @@ -1204,7 +1204,7 @@
          Documentation Version
          -rhs()[source]
          +rhs()[source]

          Ordered column matrix of equations for the solution of M x' = F.

          Explanation

          The solution to the linear system of ordinary differential equations @@ -1268,7 +1268,7 @@

          Documentation Version
          fiber_damping_coefficient=0.100000000000000,
          -)[source] +)[source]

          Recommended constructor that will use the published constants.

          Parameters:
          @@ -1399,7 +1399,7 @@
          Documentation Version
          with_defaults=False,
          -)[source] +)[source]

          Musculotendon model using the curves of De Groote et al., 2016 [R728].

          Parameters:
          @@ -1787,7 +1787,7 @@
          Documentation Version
          boundary=None,
          -)[source] +)[source]

          Enumeration of types of musculotendon dynamics formulations.

          Explanation

          An (integer) enumeration is used as it allows for clearer selection of the diff --git a/dev/modules/physics/continuum_mechanics/beam.html b/dev/modules/physics/continuum_mechanics/beam.html index 736f869e707..8d5b7053e47 100644 --- a/dev/modules/physics/continuum_mechanics/beam.html +++ b/dev/modules/physics/continuum_mechanics/beam.html @@ -819,7 +819,7 @@

          Documentation Version
          ild_variable=a,
          -)[source] +)[source]

          A Beam is a structural element that is capable of withstanding load primarily by resisting against bending. Beams are characterized by their cross sectional profile(Second moment of area), their length @@ -936,7 +936,7 @@

          Documentation Version
          -apply_load(value, start, order, end=None)[source]
          +apply_load(value, start, order, end=None)[source]

          This method adds up the loads given to a particular beam object.

          Parameters:
          @@ -1004,7 +1004,7 @@
          Documentation Version
          -apply_rotation_hinge(loc)[source]
          +apply_rotation_hinge(loc)[source]

          This method applies a rotation hinge at a single location on the beam.

          Parameters:
          @@ -1058,7 +1058,7 @@
          Documentation Version
          -apply_sliding_hinge(loc)[source]
          +apply_sliding_hinge(loc)[source]

          This method applies a sliding hinge at a single location on the beam.

          Parameters:
          @@ -1105,7 +1105,7 @@
          Documentation Version
          -apply_support(loc, type='fixed')[source]
          +apply_support(loc, type='fixed')[source]

          This method applies support to a particular beam object and returns the symbol of the unknown reaction load(s).

          @@ -1168,7 +1168,7 @@
          Documentation Version
          -bending_moment()[source]
          +bending_moment()[source]

          Returns a Singularity Function expression which represents the bending moment curve of the Beam object.

          Examples

          @@ -1231,7 +1231,7 @@
          Documentation Version
          -deflection()[source]
          +deflection()[source]

          Returns a Singularity Function expression which represents the elastic curve or deflection of the Beam object.

          Examples

          @@ -1271,7 +1271,7 @@
          Documentation Version
          -draw(pictorial=True)[source]
          +draw(pictorial=True)[source]

          Returns a plot object representing the beam diagram of the beam. In particular, the diagram might include:

            @@ -1386,7 +1386,7 @@
            Documentation Version
            -join(beam, via='fixed')[source]
            +join(beam, via='fixed')[source]

            This method joins two beams to make a new composite beam system. Passed Beam class instance is attached to the right end of calling object. This method can be used to form beams having Discontinuous @@ -1466,28 +1466,28 @@

            Documentation Version
            -max_bmoment()[source]
            +max_bmoment()[source]

            Returns maximum Shear force and its coordinate in the Beam object.

            -max_deflection()[source]
            +max_deflection()[source]

            Returns point of max deflection and its corresponding deflection value in a Beam object.

            -max_shear_force()[source]
            +max_shear_force()[source]

            Returns maximum Shear force and its coordinate in the Beam object.

            -plot_bending_moment(subs=None)[source]
            +plot_bending_moment(subs=None)[source]

            Returns a plot for Bending moment present in the Beam object.

            Parameters:
            @@ -1531,7 +1531,7 @@
            Documentation Version
            -plot_deflection(subs=None)[source]
            +plot_deflection(subs=None)[source]

            Returns a plot for deflection curve of the Beam object.

            Parameters:
            @@ -1576,7 +1576,7 @@
            Documentation Version
            -plot_ild_moment(subs=None)[source]
            +plot_ild_moment(subs=None)[source]

            Plots the Influence Line Diagram for Moment under the effect of a moving load. This function should be called after calling solve_for_ild_moment().

            @@ -1626,7 +1626,7 @@
            Documentation Version
            -plot_ild_reactions(subs=None)[source]
            +plot_ild_reactions(subs=None)[source]

            Plots the Influence Line Diagram of Reaction Forces under the effect of a moving load. This function should be called after calling solve_for_ild_reactions().

            @@ -1682,7 +1682,7 @@
            Documentation Version
            -plot_ild_shear(subs=None)[source]
            +plot_ild_shear(subs=None)[source]

            Plots the Influence Line Diagram for Shear under the effect of a moving load. This function should be called after calling solve_for_ild_shear().

            @@ -1732,7 +1732,7 @@
            Documentation Version
            -plot_loading_results(subs=None)[source]
            +plot_loading_results(subs=None)[source]

            Returns a subplot of Shear Force, Bending Moment, Slope and Deflection of the Beam object.

            @@ -1773,7 +1773,7 @@
            Documentation Version
            -plot_shear_force(subs=None)[source]
            +plot_shear_force(subs=None)[source]

            Returns a plot for Shear force present in the Beam object.

            Parameters:
            @@ -1817,7 +1817,7 @@
            Documentation Version
            -plot_shear_stress(subs=None)[source]
            +plot_shear_stress(subs=None)[source]

            Returns a plot of shear stress present in the beam object.

            Parameters:
            @@ -1862,7 +1862,7 @@
            Documentation Version
            -plot_slope(subs=None)[source]
            +plot_slope(subs=None)[source]

            Returns a plot for slope of deflection curve of the Beam object.

            Parameters:
            @@ -1906,7 +1906,7 @@
            Documentation Version
            -point_cflexure()[source]
            +point_cflexure()[source]

            Returns a Set of point(s) with zero bending moment and where bending moment curve of the beam object changes its sign from negative to positive or vice versa.

            @@ -1944,7 +1944,7 @@
            Documentation Version
            -remove_load(value, start, order, end=None)[source]
            +remove_load(value, start, order, end=None)[source]

            This method removes a particular load present on the beam object. Returns a ValueError if the load passed as an argument is not present on the beam.

            @@ -2015,7 +2015,7 @@
            Documentation Version
            -shear_force()[source]
            +shear_force()[source]

            Returns a Singularity Function expression which represents the shear force curve of the Beam object.

            Examples

            @@ -2046,14 +2046,14 @@
            Documentation Version
            -shear_stress()[source]
            +shear_stress()[source]

            Returns an expression representing the Shear Stress curve of the Beam object.

            -slope()[source]
            +slope()[source]

            Returns a Singularity Function expression which represents the slope the elastic curve of the Beam object.

            Examples

            @@ -2093,7 +2093,7 @@
            Documentation Version
            *reactions,
            -)[source] +)[source]

            Determines the Influence Line Diagram equations for moment at a specified point under the effect of a moving load.

            @@ -2141,7 +2141,7 @@
            Documentation Version
            -solve_for_ild_reactions(value, *reactions)[source]
            +solve_for_ild_reactions(value, *reactions)[source]

            Determines the Influence Line Diagram equations for reaction forces under the effect of a moving load.

            @@ -2190,7 +2190,7 @@
            Documentation Version
            *reactions,
            -)[source] +)[source]

            Determines the Influence Line Diagram equations for shear at a specified point under the effect of a moving load.

            @@ -2238,7 +2238,7 @@
            Documentation Version
            -solve_for_reaction_loads(*reactions)[source]
            +solve_for_reaction_loads(*reactions)[source]

            Solves for the reaction forces.

            Examples

            There is a beam of length 30 meters. A moment of magnitude 120 Nm is @@ -2312,7 +2312,7 @@

            Documentation Version
            variable=x,
            -)[source] +)[source]

            This class handles loads applied in any direction of a 3D space along with unequal values of Second moment along different axes.

            @@ -2366,14 +2366,14 @@
            Documentation Version
            -angular_deflection()[source]
            +angular_deflection()[source]

            Returns a function in x depicting how the angular deflection, due to moments in the x-axis on the beam, varies with x.

            -apply_load(value, start, order, dir='y')[source]
            +apply_load(value, start, order, dir='y')[source]

            This method adds up the force load to a particular beam object.

            Parameters:
            @@ -2409,7 +2409,7 @@
            Documentation Version
            dir='y',
            -)[source] +)[source]

            This method adds up the moment loads to a particular beam object.

            Parameters:
            @@ -2442,19 +2442,19 @@
            Documentation Version
            -axial_force()[source]
            +axial_force()[source]

            Returns expression of Axial shear force present inside the Beam object.

            -axial_stress()[source]
            +axial_stress()[source]

            Returns expression of Axial stress present inside the Beam object.

            -bending_moment()[source]
            +bending_moment()[source]

            Returns a list of three expressions which represents the bending moment curve of the Beam object along all three axes.

            @@ -2489,7 +2489,7 @@
            Documentation Version
            -deflection()[source]
            +deflection()[source]

            Returns a three element list representing deflection curve along all the three axes.

            @@ -2502,7 +2502,7 @@
            Documentation Version
            -max_bending_moment()[source]
            +max_bending_moment()[source]

            Returns point of max bending moment and its corresponding bending moment value along all directions in a Beam object as a list. solve_for_reaction_loads() must be called before using this function.

            @@ -2532,7 +2532,7 @@
            Documentation Version
            -max_bmoment()[source]
            +max_bmoment()[source]

            Returns point of max bending moment and its corresponding bending moment value along all directions in a Beam object as a list. solve_for_reaction_loads() must be called before using this function.

            @@ -2562,7 +2562,7 @@
            Documentation Version
            -max_deflection()[source]
            +max_deflection()[source]

            Returns point of max deflection and its corresponding deflection value along all directions in a Beam object as a list. solve_for_reaction_loads() and solve_slope_deflection() must be called @@ -2594,7 +2594,7 @@

            Documentation Version
            -max_shear_force()[source]
            +max_shear_force()[source]

            Returns point of max shear force and its corresponding shear value along all directions in a Beam object as a list. solve_for_reaction_loads() must be called before using this function.

            @@ -2630,7 +2630,7 @@
            Documentation Version
            -plot_bending_moment(dir='all', subs=None)[source]
            +plot_bending_moment(dir='all', subs=None)[source]

            Returns a plot for bending moment along all three directions present in the Beam object.

            @@ -2683,7 +2683,7 @@
            Documentation Version
            -plot_deflection(dir='all', subs=None)[source]
            +plot_deflection(dir='all', subs=None)[source]

            Returns a plot for Deflection along all three directions present in the Beam object.

            @@ -2737,7 +2737,7 @@
            Documentation Version
            -plot_loading_results(dir='x', subs=None)[source]
            +plot_loading_results(dir='x', subs=None)[source]

            Returns a subplot of Shear Force, Bending Moment, Slope and Deflection of the Beam object along the direction specified.

            @@ -2794,7 +2794,7 @@
            Documentation Version
            -plot_shear_force(dir='all', subs=None)[source]
            +plot_shear_force(dir='all', subs=None)[source]

            Returns a plot for Shear force along all three directions present in the Beam object.

            @@ -2847,7 +2847,7 @@
            Documentation Version
            -plot_shear_stress(dir='all', subs=None)[source]
            +plot_shear_stress(dir='all', subs=None)[source]

            Returns a plot for Shear Stress along all three directions present in the Beam object.

            @@ -2900,7 +2900,7 @@
            Documentation Version
            -plot_slope(dir='all', subs=None)[source]
            +plot_slope(dir='all', subs=None)[source]

            Returns a plot for Slope along all three directions present in the Beam object.

            @@ -2954,7 +2954,7 @@
            Documentation Version
            -polar_moment()[source]
            +polar_moment()[source]

            Returns the polar moment of area of the beam about the X axis with respect to the centroid.

            Examples

            @@ -2980,7 +2980,7 @@
            Documentation Version
            -shear_force()[source]
            +shear_force()[source]

            Returns a list of three expressions which represents the shear force curve of the Beam object along all three axes.

            @@ -2993,21 +2993,21 @@
            Documentation Version
            -shear_stress()[source]
            +shear_stress()[source]

            Returns a list of three expressions which represents the shear stress curve of the Beam object along all three axes.

            -slope()[source]
            +slope()[source]

            Returns a three element list representing slope of deflection curve along all the three axes.

            -solve_for_reaction_loads(*reaction)[source]
            +solve_for_reaction_loads(*reaction)[source]

            Solves for the reaction forces.

            Examples

            There is a beam of length 30 meters. It it supported by rollers at @@ -3035,7 +3035,7 @@

            Documentation Version
            -solve_for_torsion()[source]
            +solve_for_torsion()[source]

            Solves for the angular deflection due to the torsional effects of moments being applied in the x-direction i.e. out of or into the beam.

            Here, a positive torque means the direction of the torque is positive @@ -3058,7 +3058,7 @@

            Documentation Version
            -torsional_moment()[source]
            +torsional_moment()[source]

            Returns expression of Torsional moment present inside the Beam object.

            diff --git a/dev/modules/physics/continuum_mechanics/cable.html b/dev/modules/physics/continuum_mechanics/cable.html index 97d611f9560..274124cfe9d 100644 --- a/dev/modules/physics/continuum_mechanics/cable.html +++ b/dev/modules/physics/continuum_mechanics/cable.html @@ -809,7 +809,7 @@

            Cable (Docstrings)
            -class sympy.physics.continuum_mechanics.cable.Cable(support_1, support_2)[source]
            +class sympy.physics.continuum_mechanics.cable.Cable(support_1, support_2)[source]

            Cables are structures in engineering that support the applied transverse loads through the tensile resistance developed in its members.

            @@ -834,7 +834,7 @@

            Cable (Docstrings)
            -apply_length(length)[source]
            +apply_length(length)[source]

            This method specifies the length of the cable

            Parameters:
            @@ -856,7 +856,7 @@

            Cable (Docstrings)
            -apply_load(order, load)[source]
            +apply_load(order, load)[source]

            This method adds load to the cable.

            Parameters:
            @@ -924,7 +924,7 @@

            Cable (Docstrings)
            -change_support(label, new_support)[source]
            +change_support(label, new_support)[source]

            This method changes the mentioned support with a new support.

            Parameters:
            @@ -959,7 +959,7 @@

            Cable (Docstrings)
            -draw()[source]
            +draw()[source]

            This method is used to obtain a plot for the specified cable with its supports, shape and loads.

            Examples

            @@ -1021,7 +1021,7 @@

            Cable (Docstrings)
            -plot_tension()[source]
            +plot_tension()[source]

            Returns the diagram/plot of the tension generated in the cable at various points.

            Examples

            For point loads,

            @@ -1060,7 +1060,7 @@

            Cable (Docstrings)
            -remove_loads(*args)[source]
            +remove_loads(*args)[source]

            This methods removes the specified loads.

            Parameters:
            @@ -1092,7 +1092,7 @@

            Cable (Docstrings)
            -solve(*args)[source]
            +solve(*args)[source]

            This method solves for the reaction forces at the supports, the tension developed in the cable, and updates the length of the cable.

            @@ -1156,7 +1156,7 @@

            Cable (Docstrings)
            -tension_at(x)[source]
            +tension_at(x)[source]

            Returns the tension at a given value of x developed due to distributed load.

            diff --git a/dev/modules/physics/continuum_mechanics/truss.html b/dev/modules/physics/continuum_mechanics/truss.html index 8fa63107385..8a829ed8567 100644 --- a/dev/modules/physics/continuum_mechanics/truss.html +++ b/dev/modules/physics/continuum_mechanics/truss.html @@ -807,7 +807,7 @@
            Documentation Version
            to 2D Trusses.

            -class sympy.physics.continuum_mechanics.truss.Truss[source]
            +class sympy.physics.continuum_mechanics.truss.Truss[source]

            A Truss is an assembly of members such as beams, connected by nodes, that create a rigid structure. In engineering, a truss is a structure that @@ -831,7 +831,7 @@

            Documentation Version

          -add_member(*args)[source]
          +add_member(*args)[source]

          This method adds a member between any two nodes in the given truss.

          Parameters:
          @@ -863,7 +863,7 @@
          Documentation Version
          -add_node(*args)[source]
          +add_node(*args)[source]

          This method adds a node to the truss along with its name/label and its location. Multiple nodes can be added at the same time.

          @@ -898,7 +898,7 @@
          Documentation Version
          -apply_load(*args)[source]
          +apply_load(*args)[source]

          This method applies external load(s) at the specified node(s).

          Parameters:
          @@ -935,7 +935,7 @@
          Documentation Version
          -apply_support(*args)[source]
          +apply_support(*args)[source]

          This method adds a pinned or roller support at specified node(s).

          Parameters:
          @@ -963,7 +963,7 @@
          Documentation Version
          -change_member_label(*args)[source]
          +change_member_label(*args)[source]

          This method changes the label(s) of the specified member(s).

          Parameters:
          @@ -1000,7 +1000,7 @@
          Documentation Version
          -change_node_label(*args)[source]
          +change_node_label(*args)[source]

          This method changes the label(s) of the specified node(s).

          Parameters:
          @@ -1031,7 +1031,7 @@
          Documentation Version
          -draw(subs_dict=None)[source]
          +draw(subs_dict=None)[source]

          Returns a plot object of the Truss with all its nodes, members, supports and loads.

          @@ -1127,7 +1127,7 @@
          Documentation Version
          -remove_load(*args)[source]
          +remove_load(*args)[source]

          This method removes already present external load(s) at specified node(s).

          @@ -1167,7 +1167,7 @@
          Documentation Version
          -remove_member(*args)[source]
          +remove_member(*args)[source]

          This method removes members from the given truss.

          Parameters:
          @@ -1193,7 +1193,7 @@
          Documentation Version
          -remove_node(*args)[source]
          +remove_node(*args)[source]

          This method removes a node from the truss. Multiple nodes can be removed at the same time.

          @@ -1220,7 +1220,7 @@
          Documentation Version
          -remove_support(*args)[source]
          +remove_support(*args)[source]

          This method removes support from specified node(s.)

          Parameters:
          @@ -1246,7 +1246,7 @@
          Documentation Version
          -solve()[source]
          +solve()[source]

          This method solves for all reaction forces of all supports and all internal forces of all the members in the truss, provided the Truss is solvable.

          A Truss is solvable if the following condition is met,

          diff --git a/dev/modules/physics/control/control_plots.html b/dev/modules/physics/control/control_plots.html index 9a6ea8d783e..9bd596e8efd 100644 --- a/dev/modules/physics/control/control_plots.html +++ b/dev/modules/physics/control/control_plots.html @@ -824,7 +824,7 @@

          Pole-Zero Plot**kwargs,

          -)[source] +)[source]

          Returns the Pole-Zero plot (also known as PZ Plot or PZ Map) of a system.

          A Pole-Zero plot is a graphical representation of a system’s poles and zeros. It is plotted on a complex plane, with circular markers representing @@ -900,7 +900,7 @@

          Pole-Zero Plot
          -control_plots.pole_zero_numerical_data()[source]
          +control_plots.pole_zero_numerical_data()[source]

          Returns the numerical data of poles and zeros of the system. It is internally used by pole_zero_plot to get the data for plotting poles and zeros. Users can use this data to further @@ -968,7 +968,7 @@

          Bode Plot**kwargs,

          -)[source] +)[source]

          Returns the Bode phase and magnitude plots of a continuous-time system.

          Parameters:
          @@ -1046,7 +1046,7 @@

          Bode Plot**kwargs,

          -)[source] +)[source]

          Returns the Bode magnitude plot of a continuous-time system.

          See bode_plot for all the parameters.

          @@ -1068,7 +1068,7 @@

          Bode Plot**kwargs,

          -)[source] +)[source]

          Returns the Bode phase plot of a continuous-time system.

          See bode_plot for all the parameters.

          @@ -1084,7 +1084,7 @@

          Bode Plot**kwargs,

          -)[source] +)[source]

          Returns the numerical data of the Bode magnitude plot of the system. It is internally used by bode_magnitude_plot to get the data for plotting Bode magnitude plot. Users can use this data to further @@ -1160,7 +1160,7 @@

          Bode Plot**kwargs,

          -)[source] +)[source]

          Returns the numerical data of the Bode phase plot of the system. It is internally used by bode_phase_plot to get the data for plotting Bode phase plot. Users can use this data to further @@ -1249,7 +1249,7 @@

          Impulse-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the unit impulse response (Input is the Dirac-Delta Function) of a continuous-time system.

          @@ -1327,7 +1327,7 @@

          Impulse-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the numerical values of the points in the impulse response plot of a SISO continuous-time system. By default, adaptive sampling is used. If the user wants to instead get an uniformly @@ -1416,7 +1416,7 @@

          Step-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the unit step response of a continuous-time system. It is the response of the system when the input signal is a step function.

          @@ -1494,7 +1494,7 @@

          Step-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the numerical values of the points in the step response plot of a SISO continuous-time system. By default, adaptive sampling is used. If the user wants to instead get an uniformly @@ -1584,7 +1584,7 @@

          Ramp-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the ramp response of a continuous-time system.

          Ramp function is defined as the straight line passing through origin (\(f(x) = mx\)). The slope of @@ -1670,7 +1670,7 @@

          Ramp-Response Plot**kwargs,

          -)[source] +)[source]

          Returns the numerical values of the points in the ramp response plot of a SISO continuous-time system. By default, adaptive sampling is used. If the user wants to instead get an uniformly @@ -1761,7 +1761,7 @@

          Nyquist Plot**kwargs,

          -)[source] +)[source]

          Generates the Nyquist plot for a continuous-time system.

          Parameters:
          @@ -1828,7 +1828,7 @@

          Nichols Plot**kwargs,

          -)[source] +)[source]

          Generates the Nichols plot for a LTI system.

          Parameters:
          diff --git a/dev/modules/physics/control/lti.html b/dev/modules/physics/control/lti.html index 8a7fc3a4964..c946105a24f 100644 --- a/dev/modules/physics/control/lti.html +++ b/dev/modules/physics/control/lti.html @@ -807,7 +807,7 @@

          Control API

          lti

          -class sympy.physics.control.lti.TransferFunction(num, den, var)[source]
          +class sympy.physics.control.lti.TransferFunction(num, den, var)[source]

          A class for representing LTI (Linear, time-invariant) systems that can be strictly described by ratio of polynomials in the Laplace transform complex variable. The arguments are num, den, and var, where num and den are numerator and @@ -998,7 +998,7 @@

          Control API
          -dc_gain()[source]
          +dc_gain()[source]

          Computes the gain of the response as the frequency approaches zero.

          The DC gain is infinite for systems with pure integrators.

          Examples

          @@ -1039,7 +1039,7 @@

          Control API
          -eval_frequency(other)[source]
          +eval_frequency(other)[source]

          Returns the system response at any point in the real or complex plane.

          Examples

          >>> from sympy.abc import s, p, a
          @@ -1060,7 +1060,7 @@ 

          Control API
          -expand()[source]
          +expand()[source]

          Returns the transfer function with numerator and denominator in expanded form.

          Examples

          @@ -1086,7 +1086,7 @@

          Control APIvar,

          -)[source] +)[source]

          Creates a new TransferFunction efficiently from a list of coefficients.

          Parameters:
          @@ -1136,7 +1136,7 @@

          Control APIvar=None,

          -)[source] +)[source]

          Creates a new TransferFunction efficiently from a rational expression.

          Parameters:
          @@ -1202,7 +1202,7 @@

          Control API
          -classmethod from_zpk(zeros, poles, gain, var)[source]
          +classmethod from_zpk(zeros, poles, gain, var)[source]

          Creates a new TransferFunction from given zeros, poles and gain.

          Parameters:
          @@ -1284,7 +1284,7 @@

          Control API
          -is_stable()[source]
          +is_stable()[source]

          Returns True if the transfer function is asymptotically stable; else False.

          This would not check the marginal or conditional stability of the system.

          Examples

          @@ -1345,7 +1345,7 @@

          Control API
          -poles()[source]
          +poles()[source]

          Returns the poles of a transfer function.

          Examples

          >>> from sympy.abc import s, p, a
          @@ -1365,7 +1365,7 @@ 

          Control API
          -to_expr()[source]
          +to_expr()[source]

          Converts a TransferFunction object to SymPy Expr.

          Examples

          >>> from sympy.abc import s, p, a, b
          @@ -1406,7 +1406,7 @@ 

          Control API
          -zeros()[source]
          +zeros()[source]

          Returns the zeros of a transfer function.

          Examples

          >>> from sympy.abc import s, p, a
          @@ -1428,7 +1428,7 @@ 

          Control API
          -class sympy.physics.control.lti.Series(*args, evaluate=False)[source]
          +class sympy.physics.control.lti.Series(*args, evaluate=False)[source]

          A class for representing a series configuration of SISO systems.

          Parameters:
          @@ -1521,7 +1521,7 @@

          Control API
          -doit(**hints)[source]
          +doit(**hints)[source]

          Returns the resultant transfer function or StateSpace obtained after evaluating the series interconnection.

          Examples

          @@ -1609,7 +1609,7 @@

          Control API
          -to_expr()[source]
          +to_expr()[source]

          Returns the equivalent Expr object.

          @@ -1635,7 +1635,7 @@

          Control API
          -class sympy.physics.control.lti.Parallel(*args, evaluate=False)[source]
          +class sympy.physics.control.lti.Parallel(*args, evaluate=False)[source]

          A class for representing a parallel configuration of SISO systems.

          Parameters:
          @@ -1731,7 +1731,7 @@

          Control API
          -doit(**hints)[source]
          +doit(**hints)[source]

          Returns the resultant transfer function or state space obtained by parallel connection of transfer functions or state space objects.

          Examples

          @@ -1815,7 +1815,7 @@

          Control API
          -to_expr()[source]
          +to_expr()[source]

          Returns the equivalent Expr object.

          @@ -1841,7 +1841,7 @@

          Control API
          -class sympy.physics.control.lti.Feedback(sys1, sys2=None, sign=-1)[source]
          +class sympy.physics.control.lti.Feedback(sys1, sys2=None, sign=-1)[source]

          A class for representing closed-loop feedback interconnection between two SISO input/output systems.

          The first argument, sys1, is the feedforward part of the closed-loop @@ -1966,7 +1966,7 @@

          Control API
          -doit(cancel=False, expand=False, **hints)[source]
          +doit(cancel=False, expand=False, **hints)[source]

          Returns the resultant transfer function or state space obtained by feedback connection of transfer functions or state space objects.

          Examples

          @@ -2101,7 +2101,7 @@

          Control API
          -to_expr()[source]
          +to_expr()[source]

          Converts a Feedback object to SymPy Expr.

          Examples

          >>> from sympy.abc import s, a, b
          @@ -2145,7 +2145,7 @@ 

          Control API
          -class sympy.physics.control.lti.TransferFunctionMatrix(arg)[source]
          +class sympy.physics.control.lti.TransferFunctionMatrix(arg)[source]

          A class for representing the MIMO (multiple-input and multiple-output) generalization of the SISO (single-input and single-output) transfer function.

          It is a matrix of transfer functions (TransferFunction, SISO-Series or SISO-Parallel). @@ -2499,7 +2499,7 @@

          Control API
          -elem_poles()[source]
          +elem_poles()[source]

          Returns the poles of each element of the TransferFunctionMatrix.

          Note

          @@ -2527,7 +2527,7 @@

          Control API
          -elem_zeros()[source]
          +elem_zeros()[source]

          Returns the zeros of each element of the TransferFunctionMatrix.

          Note

          @@ -2555,7 +2555,7 @@

          Control API
          -eval_frequency(other)[source]
          +eval_frequency(other)[source]

          Evaluates system response of each transfer function in the TransferFunctionMatrix at any point in the real or complex plane.

          Examples

          >>> from sympy.abc import s
          @@ -2582,13 +2582,13 @@ 

          Control API
          -expand(**hints)[source]
          +expand(**hints)[source]

          Expands the transfer function matrix

          -classmethod from_Matrix(matrix, var)[source]
          +classmethod from_Matrix(matrix, var)[source]

          Creates a new TransferFunctionMatrix efficiently from a SymPy Matrix of Expr objects.

          Parameters:
          @@ -2687,7 +2687,7 @@

          Control API
          -transpose()[source]
          +transpose()[source]

          Returns the transpose of the TransferFunctionMatrix (switched input and output layers).

          @@ -2722,7 +2722,7 @@

          Control API
          -class sympy.physics.control.lti.PIDController(kp=kp, ki=ki, kd=kd, tf=0, var=s)[source]
          +class sympy.physics.control.lti.PIDController(kp=kp, ki=ki, kd=kd, tf=0, var=s)[source]

          A class for representing PID (Proportional-Integral-Derivative) controllers in control systems. The PIDController class is a subclass of TransferFunction, representing the controller’s transfer function @@ -2796,7 +2796,7 @@

          Control API
          -doit()[source]
          +doit()[source]

          Convert the PIDController into TransferFunction.

          @@ -2828,7 +2828,7 @@

          Control API
          -class sympy.physics.control.lti.MIMOSeries(*args, evaluate=False)[source]
          +class sympy.physics.control.lti.MIMOSeries(*args, evaluate=False)[source]

          A class for representing a series configuration of MIMO systems.

          Parameters:
          @@ -2952,7 +2952,7 @@

          Control API
          -doit(cancel=False, **kwargs)[source]
          +doit(cancel=False, **kwargs)[source]

          Returns the resultant obtained after evaluating the MIMO systems arranged in a series configuration. For TransferFunction systems it returns a TransferFunctionMatrix and for StateSpace systems it returns the resultant StateSpace system.

          @@ -3009,7 +3009,7 @@

          Control API
          -class sympy.physics.control.lti.MIMOParallel(*args, evaluate=False)[source]
          +class sympy.physics.control.lti.MIMOParallel(*args, evaluate=False)[source]

          A class for representing a parallel configuration of MIMO systems.

          Parameters:
          @@ -3140,7 +3140,7 @@

          Control API
          -doit(**hints)[source]
          +doit(**hints)[source]

          Returns the resultant transfer function matrix or StateSpace obtained after evaluating the MIMO systems arranged in a parallel configuration.

          Examples

          @@ -3197,7 +3197,7 @@

          Control API
          -class sympy.physics.control.lti.MIMOFeedback(sys1, sys2, sign=-1)[source]
          +class sympy.physics.control.lti.MIMOFeedback(sys1, sys2, sign=-1)[source]

          A class for representing closed-loop feedback interconnection between two MIMO input/output systems.

          @@ -3344,7 +3344,7 @@

          Control API**hints,

          -)[source] +)[source]

          Returns the resultant transfer function matrix obtained by the feedback interconnection.

          Examples

          @@ -3562,7 +3562,7 @@

          Control API
          -class sympy.physics.control.lti.StateSpace(A=None, B=None, C=None, D=None)[source]
          +class sympy.physics.control.lti.StateSpace(A=None, B=None, C=None, D=None)[source]

          State space model (ssm) of a linear, time invariant control system.

          Represents the standard state-space model with A, B, C, D as state-space matrices. This makes the linear control system:

          @@ -3713,7 +3713,7 @@

          Control API
          -append(other)[source]
          +append(other)[source]

          Returns the first model appended with the second model. The order is preserved.

          Examples

          >>> from sympy import Matrix
          @@ -3744,7 +3744,7 @@ 

          Control API
          -controllability_matrix()[source]
          +controllability_matrix()[source]
          Returns the controllability matrix of the system:

          [B, A * B, A^2 * B, .. , A^(n-1) * B]; A in R^(n x n), B in R^(n x m)

          @@ -3774,7 +3774,7 @@

          Control API
          -controllable_subspace()[source]
          +controllable_subspace()[source]

          Returns the controllable subspace of the state space model.

          Examples

          >>> from sympy import Matrix
          @@ -3805,7 +3805,7 @@ 

          Control APIvar=t,

          -)[source] +)[source]
          Returns \(y(t)\) or output of StateSpace given by the solution of equations:

          x’(t) = A * x(t) + B * u(t) y(t) = C * x(t) + D * u(t)

          @@ -3898,7 +3898,7 @@

          Control API
          -is_controllable()[source]
          +is_controllable()[source]

          Returns if the state space model is controllable.

          Examples

          >>> from sympy import Matrix
          @@ -3916,7 +3916,7 @@ 

          Control API
          -is_observable()[source]
          +is_observable()[source]

          Returns if the state space model is observable.

          Examples

          >>> from sympy import Matrix
          @@ -3988,7 +3988,7 @@ 

          Control API
          -observability_matrix()[source]
          +observability_matrix()[source]
          Returns the observability matrix of the state space model:

          [C, C * A^1, C * A^2, .. , C * A^(n-1)]; A in R^(n x n), C in R^(m x k)

          @@ -4019,7 +4019,7 @@

          Control API
          -observable_subspace()[source]
          +observable_subspace()[source]

          Returns the observable subspace of the state space model.

          Examples

          >>> from sympy import Matrix
          @@ -4088,7 +4088,7 @@ 

          Control API
          -sympy.physics.control.lti.gbt(tf, sample_per, alpha)[source]
          +sympy.physics.control.lti.gbt(tf, sample_per, alpha)[source]

          Returns falling coefficients of H(z) from numerator and denominator.

          Explanation

          Where H(z) is the corresponding discretized transfer function, @@ -4143,7 +4143,7 @@

          Control API
          -sympy.physics.control.lti.bilinear(tf, sample_per)[source]
          +sympy.physics.control.lti.bilinear(tf, sample_per)[source]

          Returns falling coefficients of H(z) from numerator and denominator.

          Explanation

          Where H(z) is the corresponding discretized transfer function, @@ -4170,7 +4170,7 @@

          Control API
          -sympy.physics.control.lti.forward_diff(tf, sample_per)[source]
          +sympy.physics.control.lti.forward_diff(tf, sample_per)[source]

          Returns falling coefficients of H(z) from numerator and denominator.

          Explanation

          Where H(z) is the corresponding discretized transfer function, @@ -4197,7 +4197,7 @@

          Control API
          -sympy.physics.control.lti.backward_diff(tf, sample_per)[source]
          +sympy.physics.control.lti.backward_diff(tf, sample_per)[source]

          Returns falling coefficients of H(z) from numerator and denominator.

          Explanation

          Where H(z) is the corresponding discretized transfer function, diff --git a/dev/modules/physics/hep/index.html b/dev/modules/physics/hep/index.html index 926cf12ea26..9c04e4afb1c 100644 --- a/dev/modules/physics/hep/index.html +++ b/dev/modules/physics/hep/index.html @@ -836,7 +836,7 @@

          Examples
          -sympy.physics.hep.gamma_matrices.extract_type_tens(expression, component)[source]
          +sympy.physics.hep.gamma_matrices.extract_type_tens(expression, component)[source]

          Extract from a TensExpr all tensors with \(component\).

          Returns two tensor expressions:

            @@ -847,7 +847,7 @@

            Examples
            -sympy.physics.hep.gamma_matrices.gamma_trace(t)[source]
            +sympy.physics.hep.gamma_matrices.gamma_trace(t)[source]

            trace of a single line of gamma matrices

            Examples

            >>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G,         gamma_trace, LorentzIndex
            @@ -868,7 +868,7 @@ 

            Examples
            -sympy.physics.hep.gamma_matrices.kahane_simplify(expression)[source]
            +sympy.physics.hep.gamma_matrices.kahane_simplify(expression)[source]

            This function cancels contracted elements in a product of four dimensional gamma matrices, resulting in an expression equal to the given one, without the contracted gamma matrices.

            @@ -935,7 +935,7 @@

            Examples
            -sympy.physics.hep.gamma_matrices.simplify_gpgp(ex, sort=True)[source]
            +sympy.physics.hep.gamma_matrices.simplify_gpgp(ex, sort=True)[source]

            simplify products G(i)*p(-i)*G(j)*p(-j) -> p(i)*p(-i)

            Examples

            >>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G,         LorentzIndex, simplify_gpgp
            diff --git a/dev/modules/physics/hydrogen.html b/dev/modules/physics/hydrogen.html
            index 81d0b599d03..c9a47e1e2d4 100644
            --- a/dev/modules/physics/hydrogen.html
            +++ b/dev/modules/physics/hydrogen.html
            @@ -805,7 +805,7 @@ 
            Documentation Version

            Hydrogen Wavefunctions

            -sympy.physics.hydrogen.E_nl(n, Z=1)[source]
            +sympy.physics.hydrogen.E_nl(n, Z=1)[source]

            Returns the energy of the state (n, l) in Hartree atomic units.

            The energy does not depend on “l”.

            @@ -850,7 +850,7 @@
            Documentation Version
            c=137.035999037000,
            -)[source] +)[source]

            Returns the relativistic energy of the state (n, l, spin) in Hartree atomic units.

            The energy is calculated from the Dirac equation. The rest mass energy is @@ -912,7 +912,7 @@

            Documentation Version
            -sympy.physics.hydrogen.Psi_nlm(n, l, m, r, phi, theta, Z=1)[source]
            +sympy.physics.hydrogen.Psi_nlm(n, l, m, r, phi, theta, Z=1)[source]

            Returns the Hydrogen wave function psi_{nlm}. It’s the product of the radial wavefunction R_{nl} and the spherical harmonic Y_{l}^{m}.

            @@ -979,7 +979,7 @@
            Documentation Version
            -sympy.physics.hydrogen.R_nl(n, l, r, Z=1)[source]
            +sympy.physics.hydrogen.R_nl(n, l, r, Z=1)[source]

            Returns the Hydrogen radial wavefunction R_{nl}.

            Parameters:
            diff --git a/dev/modules/physics/matrices.html b/dev/modules/physics/matrices.html index cb0e03e271c..441f0406042 100644 --- a/dev/modules/physics/matrices.html +++ b/dev/modules/physics/matrices.html @@ -806,7 +806,7 @@
            Documentation Version

            Known matrices related to physics

            -sympy.physics.matrices.mdft(n)[source]
            +sympy.physics.matrices.mdft(n)[source]

            Deprecated since version 1.9: Use DFT from sympy.matrices.expressions.fourier instead.

            To get identical behavior to mdft(n), use DFT(n).as_explicit().

            @@ -815,7 +815,7 @@
            Documentation Version
            -sympy.physics.matrices.mgamma(mu, lower=False)[source]
            +sympy.physics.matrices.mgamma(mu, lower=False)[source]

            Returns a Dirac gamma matrix \(\gamma^\mu\) in the standard (Dirac) representation.

            Explanation

            @@ -844,7 +844,7 @@
            Documentation Version
            -sympy.physics.matrices.msigma(i)[source]
            +sympy.physics.matrices.msigma(i)[source]

            Returns a Pauli matrix \(\sigma_i\) with \(i=1,2,3\).

            Examples

            >>> from sympy.physics.matrices import msigma
            @@ -865,7 +865,7 @@ 
            Documentation Version
            -sympy.physics.matrices.pat_matrix(m, dx, dy, dz)[source]
            +sympy.physics.matrices.pat_matrix(m, dx, dy, dz)[source]

            Returns the Parallel Axis Theorem matrix to translate the inertia matrix a distance of \((dx, dy, dz)\) for a body of mass m.

            Examples

            diff --git a/dev/modules/physics/mechanics/api/actuator.html b/dev/modules/physics/mechanics/api/actuator.html index 07ec801de03..4a3691f0594 100644 --- a/dev/modules/physics/mechanics/api/actuator.html +++ b/dev/modules/physics/mechanics/api/actuator.html @@ -806,14 +806,14 @@
            Documentation Version

            Implementations of actuators for linked force and torque application.

            -class sympy.physics.mechanics.actuator.ActuatorBase[source]
            +class sympy.physics.mechanics.actuator.ActuatorBase[source]

            Abstract base class for all actuator classes to inherit from.

            Notes

            Instances of this class cannot be directly instantiated by users. However, it can be used to created custom actuator types through subclassing.

            -abstract to_loads()[source]
            +abstract to_loads()[source]

            Loads required by the equations of motion method classes.

            Explanation

            KanesMethod requires a list of Point-Vector tuples to be @@ -842,7 +842,7 @@

            Documentation Version
            mu_s=None,
            -)[source] +)[source]

            Coulomb kinetic friction with Stribeck and viscous effects.

            Parameters:
            @@ -1001,7 +1001,7 @@
            Documentation Version
            equilibrium_length=0,
            -)[source] +)[source]

            A nonlinear spring based on the Duffing equation.

            Parameters:
            @@ -1037,7 +1037,7 @@
            Documentation Version
            -class sympy.physics.mechanics.actuator.ForceActuator(force, pathway)[source]
            +class sympy.physics.mechanics.actuator.ForceActuator(force, pathway)[source]

            Force-producing actuator.

            Parameters:
            @@ -1115,7 +1115,7 @@
            Documentation Version
            -to_loads()[source]
            +to_loads()[source]

            Loads required by the equations of motion method classes.

            Explanation

            KanesMethod requires a list of Point-Vector tuples to be @@ -1186,7 +1186,7 @@

            Documentation Version
            -class sympy.physics.mechanics.actuator.LinearDamper(damping, pathway)[source]
            +class sympy.physics.mechanics.actuator.LinearDamper(damping, pathway)[source]

            A damper whose force is a linear function of its extension velocity.

            Parameters:
            @@ -1304,7 +1304,7 @@
            Documentation Version
            equilibrium_length=0,
            -)[source] +)[source]

            A spring with its spring force as a linear function of its length.

            Parameters:
            @@ -1441,7 +1441,7 @@
            Documentation Version
            reaction_frame=None,
            -)[source] +)[source]

            Torque-producing actuator.

            Parameters:
            @@ -1492,7 +1492,7 @@
            Documentation Version
            when one is passed instead of a ReferenceFrame.

            -classmethod at_pin_joint(torque, pin_joint)[source]
            +classmethod at_pin_joint(torque, pin_joint)[source]

            Alternate construtor to instantiate from a PinJoint instance.

            Parameters:
            @@ -1571,7 +1571,7 @@
            Documentation Version
            -to_loads()[source]
            +to_loads()[source]

            Loads required by the equations of motion method classes.

            Explanation

            KanesMethod requires a list of Point-Vector tuples to be diff --git a/dev/modules/physics/mechanics/api/deprecated_classes.html b/dev/modules/physics/mechanics/api/deprecated_classes.html index 462bb846374..ebaa5a27431 100644 --- a/dev/modules/physics/mechanics/api/deprecated_classes.html +++ b/dev/modules/physics/mechanics/api/deprecated_classes.html @@ -821,7 +821,7 @@

            Deprecated Classes (Docstrings)central_inertia=None,

            -)[source] +)[source]

            Body is a common representation of either a RigidBody or a Particle SymPy object depending on what is passed in during initialization. If a mass is passed in and central_inertia is left as None, the Particle object is @@ -932,7 +932,7 @@

            Deprecated Classes (Docstrings)
            -ang_vel_in(body)[source]
            +ang_vel_in(body)[source]

            Returns this body’s angular velocity with respect to the provided rigid body or reference frame.

            @@ -966,7 +966,7 @@

            Deprecated Classes (Docstrings)
            -angular_momentum(point, frame)[source]
            +angular_momentum(point, frame)[source]

            Returns the angular momentum of the rigid body about a point in the given frame.

            @@ -1019,7 +1019,7 @@

            Deprecated Classes (Docstrings)reaction_point=None,

            -)[source] +)[source]

            Add force to the body(s).

            Parameters:
            @@ -1113,7 +1113,7 @@

            Deprecated Classes (Docstrings)
            -apply_torque(torque, reaction_body=None)[source]
            +apply_torque(torque, reaction_body=None)[source]

            Add torque to the body(s).

            Parameters:
            @@ -1199,7 +1199,7 @@

            Deprecated Classes (Docstrings)
            -clear_loads()[source]
            +clear_loads()[source]

            Clears the Body’s loads list.

            Example

            As Body has been deprecated, the following examples are for illustrative @@ -1223,7 +1223,7 @@

            Deprecated Classes (Docstrings)
            -dcm(body)[source]
            +dcm(body)[source]

            Returns the direction cosine matrix of this body relative to the provided rigid body or reference frame.

            @@ -1273,7 +1273,7 @@

            Deprecated Classes (Docstrings)
            -kinetic_energy(frame)[source]
            +kinetic_energy(frame)[source]

            Kinetic energy of the body.

            Parameters:
            @@ -1325,7 +1325,7 @@

            Deprecated Classes (Docstrings)
            -linear_momentum(frame)[source]
            +linear_momentum(frame)[source]

            Linear momentum of the rigid body.

            Parameters:
            @@ -1373,7 +1373,7 @@

            Deprecated Classes (Docstrings)
            -masscenter_vel(body)[source]
            +masscenter_vel(body)[source]

            Returns the velocity of the mass center with respect to the provided rigid body or reference frame.

            @@ -1411,7 +1411,7 @@

            Deprecated Classes (Docstrings)
            -parallel_axis(point, frame=None)[source]
            +parallel_axis(point, frame=None)[source]

            Returns the inertia dyadic of the body with respect to another point.

            @@ -1477,7 +1477,7 @@

            Deprecated Classes (Docstrings)
            -remove_load(about=None)[source]
            +remove_load(about=None)[source]

            Remove load about a point or frame.

            Parameters:
            @@ -1537,7 +1537,7 @@

            Deprecated Classes (Docstrings)
            -class sympy.physics.mechanics.jointsmethod.JointsMethod(newtonion, *joints)[source]
            +class sympy.physics.mechanics.jointsmethod.JointsMethod(newtonion, *joints)[source]

            Method for formulating the equations of motion using a set of interconnected bodies with joints.

            Deprecated since version 1.13: The JointsMethod class is deprecated. Its functionality has been @@ -1653,7 +1653,7 @@

            Deprecated Classes (Docstrings)method=<class 'sympy.physics.mechanics.kane.KanesMethod'>,

            -)[source] +)[source]

            Method to form system’s equation of motions.

            Parameters:
            @@ -1746,7 +1746,7 @@

            Deprecated Classes (Docstrings)
            -rhs(inv_method=None)[source]
            +rhs(inv_method=None)[source]

            Returns equations that can be solved numerically.

            Parameters:
            diff --git a/dev/modules/physics/mechanics/api/expr_manip.html b/dev/modules/physics/mechanics/api/expr_manip.html index fa387679b91..d6799c90156 100644 --- a/dev/modules/physics/mechanics/api/expr_manip.html +++ b/dev/modules/physics/mechanics/api/expr_manip.html @@ -805,7 +805,7 @@
            Documentation Version

            Expression Manipulation (Docstrings)

            -sympy.physics.mechanics.msubs(expr, *sub_dicts, smart=False, **kwargs)[source]
            +sympy.physics.mechanics.msubs(expr, *sub_dicts, smart=False, **kwargs)[source]

            A custom subs for use on expressions derived in physics.mechanics.

            Traverses the expression tree once, performing the subs found in sub_dicts. Terms inside Derivative expressions are ignored:

            @@ -851,7 +851,7 @@

            Expression Manipulation (Docstrings)reference_frame=None,

            -)[source] +)[source]

            Find all dynamicsymbols in expression.

            Parameters:
            diff --git a/dev/modules/physics/mechanics/api/joint.html b/dev/modules/physics/mechanics/api/joint.html index ead096cb47c..03ce3d3b3b1 100644 --- a/dev/modules/physics/mechanics/api/joint.html +++ b/dev/modules/physics/mechanics/api/joint.html @@ -825,7 +825,7 @@

            Joints Framework (Docstrings)child_joint_pos=None,

            -)[source] +)[source]

            Abstract base class for all specific joints.

            Parameters:
            @@ -1059,7 +1059,7 @@

            Joints Framework (Docstrings)child_joint_pos=None,

            -)[source] +)[source]

            Pin (Revolute) Joint.

            @@ -1390,7 +1390,7 @@

            Joints Framework (Docstrings)child_joint_pos=None,

            -)[source] +)[source]

            Prismatic (Sliding) Joint.

            ../../../../_images/PrismaticJoint.svg
            @@ -1677,7 +1677,7 @@

            Joints Framework (Docstrings)joint_axis=None,

            -)[source] +)[source]

            Cylindrical Joint.

            ../../../../_images/CylindricalJoint.svg @@ -1983,7 +1983,7 @@

            Joints Framework (Docstrings)child_interframe=None,

            -)[source] +)[source]

            Planar Joint.

            Joints Framework (Docstrings)rot_order=123,

            -)[source] +)[source]

            Spherical (Ball-and-Socket) Joint.

            ../../../../_images/SphericalJoint.svg @@ -2750,7 +2750,7 @@

            Joints Framework (Docstrings)child_interframe=None,

            -)[source] +)[source]

            Weld Joint.

            diff --git a/dev/modules/physics/mechanics/api/kane_lagrange.html b/dev/modules/physics/mechanics/api/kane_lagrange.html index d86a84c8bd0..df412ed654c 100644 --- a/dev/modules/physics/mechanics/api/kane_lagrange.html +++ b/dev/modules/physics/mechanics/api/kane_lagrange.html @@ -825,7 +825,7 @@
            Documentation Version
            constraint_solver='LU',

            -)[source] +)[source]

            Kane’s method object.

            Parameters:
            @@ -1070,7 +1070,7 @@
            Documentation Version
            loads=None,
            -)[source] +)[source]

            Method to form Kane’s equations, Fr + Fr* = 0.

            Parameters:
            @@ -1099,7 +1099,7 @@
            Documentation Version
            -kindiffdict()[source]
            +kindiffdict()[source]

            Returns a dictionary mapping q’ to u.

            @@ -1114,7 +1114,7 @@
            Documentation Version
            **kwargs,
            -)[source] +)[source]

            Linearize the equations of motion about a symbolic operating point.

            Parameters:
            @@ -1182,7 +1182,7 @@
            Documentation Version
            -rhs(inv_method=None)[source]
            +rhs(inv_method=None)[source]

            Returns the system’s equations of motion in first order form. The output is the right hand side of:

            x' = |q'| =: f(q, u, r, p, t)
            @@ -1205,7 +1205,7 @@ 
            Documentation Version
            -to_linearizer(linear_solver='LU')[source]
            +to_linearizer(linear_solver='LU')[source]

            Returns an instance of the Linearizer class, initiated from the data in the KanesMethod class. This may be more desirable than using the linearize class method, as the Linearizer object will allow more @@ -1251,7 +1251,7 @@

            Documentation Version
            nonhol_coneqs=None,
            -)[source] +)[source]

            Lagrange’s method object.

            Explanation

            This object generates the equations of motion in a two step procedure. The @@ -1355,7 +1355,7 @@

            Documentation Version
            -form_lagranges_equations()[source]
            +form_lagranges_equations()[source]

            Method to form Lagrange’s equations of motion.

            Returns a vector of equations of motion using Lagrange’s equations of the second kind.

            @@ -1374,7 +1374,7 @@
            Documentation Version
            **kwargs,
            -)[source] +)[source]

            Linearize the equations of motion about a symbolic operating point.

            Parameters:
            @@ -1439,7 +1439,7 @@
            Documentation Version
            -rhs(inv_method=None, **kwargs)[source]
            +rhs(inv_method=None, **kwargs)[source]

            Returns equations that can be solved numerically.

            Parameters:
            @@ -1462,7 +1462,7 @@
            Documentation Version
            sol_type='dict',
            -)[source] +)[source]

            Solves for the values of the lagrange multipliers symbolically at the specified operating point.

            @@ -1495,7 +1495,7 @@
            Documentation Version
            linear_solver='LU',
            -)[source] +)[source]

            Returns an instance of the Linearizer class, initiated from the data in the LagrangesMethod class. This may be more desirable than using the linearize class method, as the Linearizer object will allow more diff --git a/dev/modules/physics/mechanics/api/linearize.html b/dev/modules/physics/mechanics/api/linearize.html index 84907b65bf0..9ffd37730c7 100644 --- a/dev/modules/physics/mechanics/api/linearize.html +++ b/dev/modules/physics/mechanics/api/linearize.html @@ -827,7 +827,7 @@

            Documentation Version
            linear_solver='LU',
            -)[source] +)[source]

            This object holds the general model form for a dynamic system. This model is used for computing the linearized form of the system, while properly dealing with constraints leading to dependent coordinates and @@ -889,7 +889,7 @@

            Documentation Version
            linear_solver='LU',
            -)[source] +)[source]
            Parameters:

            f_0, f_1, f_2, f_3, f_4, f_c, f_v, f_a : array_like

            @@ -948,7 +948,7 @@
            Documentation Version
            simplify=False,
            -)[source] +)[source]

            Linearize the system about the operating point. Note that q_op, u_op, qd_op, ud_op must satisfy the equations of motion. These may be either symbolic or numeric.

            diff --git a/dev/modules/physics/mechanics/api/part_bod.html b/dev/modules/physics/mechanics/api/part_bod.html index 36edfe6f1d6..a5c87d4a6b6 100644 --- a/dev/modules/physics/mechanics/api/part_bod.html +++ b/dev/modules/physics/mechanics/api/part_bod.html @@ -807,7 +807,7 @@
            Documentation Version

            Bodies

            -class sympy.physics.mechanics.particle.Particle(name, point=None, mass=None)[source]
            +class sympy.physics.mechanics.particle.Particle(name, point=None, mass=None)[source]

            A particle.

            Parameters:
            @@ -847,7 +847,7 @@

            Bodies
            -angular_momentum(point, frame)[source]
            +angular_momentum(point, frame)[source]

            Angular momentum of the particle about the point.

            Parameters:
            @@ -887,7 +887,7 @@

            Bodies
            -kinetic_energy(frame)[source]
            +kinetic_energy(frame)[source]

            Kinetic energy of the particle.

            Parameters:
            @@ -920,7 +920,7 @@

            Bodies
            -linear_momentum(frame)[source]
            +linear_momentum(frame)[source]

            Linear momentum of the particle.

            Parameters:
            @@ -972,7 +972,7 @@

            Bodies
            -parallel_axis(point, frame)[source]
            +parallel_axis(point, frame)[source]

            Returns an inertia dyadic of the particle with respect to another point and frame.

            @@ -1033,7 +1033,7 @@

            Bodiesinertia=None,

            -)[source] +)[source]

            An idealized rigid body.

            Explanation

            This is essentially a container which holds the various components which @@ -1083,7 +1083,7 @@

            Bodies
            -angular_momentum(point, frame)[source]
            +angular_momentum(point, frame)[source]

            Returns the angular momentum of the rigid body about a point in the given frame.

            @@ -1145,7 +1145,7 @@

            Bodies
            -kinetic_energy(frame)[source]
            +kinetic_energy(frame)[source]

            Kinetic energy of the rigid body.

            Parameters:
            @@ -1185,7 +1185,7 @@

            Bodies
            -linear_momentum(frame)[source]
            +linear_momentum(frame)[source]

            Linear momentum of the rigid body.

            Parameters:
            @@ -1239,7 +1239,7 @@

            Bodies
            -parallel_axis(point, frame=None)[source]
            +parallel_axis(point, frame=None)[source]

            Returns the inertia dyadic of the body with respect to another point.

            Parameters:
            @@ -1304,7 +1304,7 @@

            BodiesInertias

            -class sympy.physics.mechanics.inertia.Inertia(dyadic, point)[source]
            +class sympy.physics.mechanics.inertia.Inertia(dyadic, point)[source]

            Inertia object consisting of a Dyadic and a Point of reference.

            Explanation

            This is a simple class to store the Point and Dyadic, belonging to an @@ -1352,7 +1352,7 @@

            Inertias
            izx=0,

            -)[source] +)[source]

            Simple way to create an Inertia object based on the tensor values.

            Parameters:
            @@ -1417,7 +1417,7 @@

            Inertias
            -sympy.physics.mechanics.inertia.inertia(frame, ixx, iyy, izz, ixy=0, iyz=0, izx=0)[source]
            +sympy.physics.mechanics.inertia.inertia(frame, ixx, iyy, izz, ixy=0, iyz=0, izx=0)[source]

            Simple way to create inertia Dyadic object.

            Parameters:
            @@ -1465,7 +1465,7 @@

            Inertias
            -sympy.physics.mechanics.inertia.inertia_of_point_mass(mass, pos_vec, frame)[source]
            +sympy.physics.mechanics.inertia.inertia_of_point_mass(mass, pos_vec, frame)[source]

            Inertia dyadic of a point mass relative to point O.

            Parameters:
            @@ -1500,7 +1500,7 @@

            Inertias

            Loads

            -class sympy.physics.mechanics.loads.Force(point, force)[source]
            +class sympy.physics.mechanics.loads.Force(point, force)[source]

            Force acting upon a point.

            Explanation

            A force is a vector that is bound to a line of action. This class stores @@ -1528,7 +1528,7 @@

            Loads
            -class sympy.physics.mechanics.loads.Torque(frame, torque)[source]
            +class sympy.physics.mechanics.loads.Torque(frame, torque)[source]

            Torque acting upon a frame.

            Explanation

            A torque is a free vector that is acting on a reference frame, which is @@ -1558,7 +1558,7 @@

            Loads

            Other Functions

            -sympy.physics.mechanics.functions.center_of_mass(point, *bodies)[source]
            +sympy.physics.mechanics.functions.center_of_mass(point, *bodies)[source]

            Returns the position vector from the given point to the center of mass of the given bodies(particles or rigidbodies).

            Example

            @@ -1591,7 +1591,7 @@

            Other Functions
            -sympy.physics.mechanics.functions.linear_momentum(frame, *body)[source]
            +sympy.physics.mechanics.functions.linear_momentum(frame, *body)[source]

            Linear momentum of the system.

            Parameters:
            @@ -1632,7 +1632,7 @@

            Other Functions
            -sympy.physics.mechanics.functions.angular_momentum(point, frame, *body)[source]
            +sympy.physics.mechanics.functions.angular_momentum(point, frame, *body)[source]

            Angular momentum of a system.

            Parameters:
            @@ -1681,7 +1681,7 @@

            Other Functions
            -sympy.physics.mechanics.functions.kinetic_energy(frame, *body)[source]
            +sympy.physics.mechanics.functions.kinetic_energy(frame, *body)[source]

            Kinetic energy of a multibody system.

            Parameters:
            @@ -1728,7 +1728,7 @@

            Other Functions
            -sympy.physics.mechanics.functions.potential_energy(*body)[source]
            +sympy.physics.mechanics.functions.potential_energy(*body)[source]

            Potential energy of a multibody system.

            Parameters:
            @@ -1771,7 +1771,7 @@

            Other Functions
            -sympy.physics.mechanics.functions.Lagrangian(frame, *body)[source]
            +sympy.physics.mechanics.functions.Lagrangian(frame, *body)[source]

            Lagrangian of a multibody system.

            Parameters:
            @@ -1829,7 +1829,7 @@

            Other Functionsreference_frame=None,

            -)[source] +)[source]

            Find all dynamicsymbols in expression.

            Parameters:
            diff --git a/dev/modules/physics/mechanics/api/pathway.html b/dev/modules/physics/mechanics/api/pathway.html index e0ba000140b..7b2cd135d99 100644 --- a/dev/modules/physics/mechanics/api/pathway.html +++ b/dev/modules/physics/mechanics/api/pathway.html @@ -806,7 +806,7 @@
            Documentation Version

            Implementations of pathways for use by actuators.

            -class sympy.physics.mechanics.pathway.LinearPathway(*attachments)[source]
            +class sympy.physics.mechanics.pathway.LinearPathway(*attachments)[source]

            Linear pathway between a pair of attachment points.

            Parameters:
            @@ -896,7 +896,7 @@
            Documentation Version
            -to_loads(force)[source]
            +to_loads(force)[source]

            Loads required by the equations of motion method classes.

            Parameters:
            @@ -950,7 +950,7 @@
            Documentation Version
            -class sympy.physics.mechanics.pathway.ObstacleSetPathway(*attachments)[source]
            +class sympy.physics.mechanics.pathway.ObstacleSetPathway(*attachments)[source]

            Obstacle-set pathway between a set of attachment points.

            Parameters:
            @@ -1031,7 +1031,7 @@
            Documentation Version
            -to_loads(force)[source]
            +to_loads(force)[source]

            Loads required by the equations of motion method classes.

            Parameters:
            @@ -1098,7 +1098,7 @@
            Documentation Version
            -class sympy.physics.mechanics.pathway.PathwayBase(*attachments)[source]
            +class sympy.physics.mechanics.pathway.PathwayBase(*attachments)[source]

            Abstract base class for all pathway classes to inherit from.

            Notes

            Instances of this class cannot be directly instantiated by users. However, @@ -1123,7 +1123,7 @@

            Documentation Version
            -abstract to_loads(force)[source]
            +abstract to_loads(force)[source]

            Loads required by the equations of motion method classes.

            Explanation

            KanesMethod requires a list of Point-Vector tuples to be @@ -1148,7 +1148,7 @@

            Documentation Version
            geometry,
            -)[source] +)[source]

            Pathway that wraps a geometry object.

            Parameters:
            @@ -1235,7 +1235,7 @@
            Documentation Version
            -to_loads(force)[source]
            +to_loads(force)[source]

            Loads required by the equations of motion method classes.

            Parameters:
            diff --git a/dev/modules/physics/mechanics/api/system.html b/dev/modules/physics/mechanics/api/system.html index c8465fa2a61..6bc7bd2c31d 100644 --- a/dev/modules/physics/mechanics/api/system.html +++ b/dev/modules/physics/mechanics/api/system.html @@ -821,7 +821,7 @@

            System (Docstrings)loads=None,

            -)[source] +)[source]

            SymbolicSystem is a class that contains all the information about a system in a symbolic format such as the equations of motions and the bodies and loads in the system.

            @@ -1023,7 +1023,7 @@

            System (Docstrings)
            -compute_explicit_form()[source]
            +compute_explicit_form()[source]

            If the explicit right hand side of the combined equations of motion is to provided upon initialization, this method will calculate it. This calculation can potentially take awhile to compute.

            @@ -1031,7 +1031,7 @@

            System (Docstrings)
            -constant_symbols()[source]
            +constant_symbols()[source]

            Returns a column matrix containing all of the symbols in the system that do not depend on time

            @@ -1060,7 +1060,7 @@

            System (Docstrings)
            -dynamic_symbols()[source]
            +dynamic_symbols()[source]

            Returns a column matrix containing all of the symbols in the system that depend on time

            @@ -1094,7 +1094,7 @@

            System (Docstrings)
            -class sympy.physics.mechanics.system.System(frame=None, fixed_point=None)[source]
            +class sympy.physics.mechanics.system.System(frame=None, fixed_point=None)[source]

            Class to define a multibody system and form its equations of motion.

            Explanation

            A System instance stores the different objects associated with a model, @@ -1309,7 +1309,7 @@

            System (Docstrings)
            -add_actuators(*actuators)[source]
            +add_actuators(*actuators)[source]

            Add actuator(s) to the system.

            Parameters:
            @@ -1323,7 +1323,7 @@

            System (Docstrings)
            -add_auxiliary_speeds(*speeds)[source]
            +add_auxiliary_speeds(*speeds)[source]

            Add auxiliary speed(s) to the system.

            Parameters:
            @@ -1337,7 +1337,7 @@

            System (Docstrings)
            -add_bodies(*bodies)[source]
            +add_bodies(*bodies)[source]

            Add body(ies) to the system.

            Parameters:
            @@ -1358,7 +1358,7 @@

            System (Docstrings)independent=True,

            -)[source] +)[source]

            Add generalized coordinate(s) to the system.

            Parameters:
            @@ -1378,7 +1378,7 @@

            System (Docstrings)
            -add_holonomic_constraints(*constraints)[source]
            +add_holonomic_constraints(*constraints)[source]

            Add holonomic constraint(s) to the system.

            Parameters:
            @@ -1393,7 +1393,7 @@

            System (Docstrings)
            -add_joints(*joints)[source]
            +add_joints(*joints)[source]

            Add joint(s) to the system.

            Parameters:
            @@ -1417,7 +1417,7 @@

            System (Docstrings)
            -add_kdes(*kdes)[source]
            +add_kdes(*kdes)[source]

            Add kinematic differential equation(s) to the system.

            Parameters:
            @@ -1431,7 +1431,7 @@

            System (Docstrings)
            -add_loads(*loads)[source]
            +add_loads(*loads)[source]

            Add load(s) to the system.

            Parameters:
            @@ -1445,7 +1445,7 @@

            System (Docstrings)
            -add_nonholonomic_constraints(*constraints)[source]
            +add_nonholonomic_constraints(*constraints)[source]

            Add nonholonomic constraint(s) to the system.

            Parameters:
            @@ -1460,7 +1460,7 @@

            System (Docstrings)
            -add_speeds(*speeds, independent=True)[source]
            +add_speeds(*speeds, independent=True)[source]

            Add generalized speed(s) to the system.

            Parameters:
            @@ -1479,7 +1479,7 @@

            System (Docstrings)
            -apply_uniform_gravity(acceleration)[source]
            +apply_uniform_gravity(acceleration)[source]

            Apply uniform gravity to all bodies in the system by adding loads.

            Parameters:
            @@ -1531,7 +1531,7 @@

            System (Docstrings)**kwargs,

            -)[source] +)[source]

            Form the equations of motion of the system.

            Parameters:
            @@ -1585,13 +1585,13 @@

            System (Docstrings)
            -classmethod from_newtonian(newtonian)[source]
            +classmethod from_newtonian(newtonian)[source]

            Constructs the system with respect to a Newtonian body.

            -get_body(name)[source]
            +get_body(name)[source]

            Retrieve a body from the system by name.

            Parameters:
            @@ -1611,7 +1611,7 @@

            System (Docstrings)
            -get_joint(name)[source]
            +get_joint(name)[source]

            Retrieve a joint from the system by name.

            Parameters:
            @@ -1714,7 +1714,7 @@

            System (Docstrings)
            -rhs(inv_method=None)[source]
            +rhs(inv_method=None)[source]

            Compute the equations of motion in the explicit form.

            Parameters:
            @@ -1777,7 +1777,7 @@

            System (Docstrings)check_duplicates=False,

            -)[source] +)[source]

            Validates the system using some basic checks.

            Parameters:
            diff --git a/dev/modules/physics/mechanics/api/wrapping_geometry.html b/dev/modules/physics/mechanics/api/wrapping_geometry.html index ac4f4bd83c3..341bb0156f5 100644 --- a/dev/modules/physics/mechanics/api/wrapping_geometry.html +++ b/dev/modules/physics/mechanics/api/wrapping_geometry.html @@ -806,7 +806,7 @@
            Documentation Version

            Geometry objects for use by wrapping pathways.

            -class sympy.physics.mechanics.wrapping_geometry.WrappingCylinder(radius, point, axis)[source]
            +class sympy.physics.mechanics.wrapping_geometry.WrappingCylinder(radius, point, axis)[source]

            A solid (infinite) cylindrical object.

            Parameters:
            @@ -873,7 +873,7 @@
            Documentation Version
            point_2,
            -)[source] +)[source]

            The vectors parallel to the geodesic at the two end points.

            Parameters:
            @@ -891,7 +891,7 @@
            Documentation Version
            -geodesic_length(point_1, point_2)[source]
            +geodesic_length(point_1, point_2)[source]

            The shortest distance between two points on a geometry’s surface.

            Parameters:
            @@ -964,7 +964,7 @@
            Documentation Version
            -point_on_surface(point)[source]
            +point_on_surface(point)[source]

            Returns True if a point is on the cylinder’s surface.

            Parameters:
            @@ -989,7 +989,7 @@
            Documentation Version
            -class sympy.physics.mechanics.wrapping_geometry.WrappingGeometryBase[source]
            +class sympy.physics.mechanics.wrapping_geometry.WrappingGeometryBase[source]

            Abstract base class for all geometry classes to inherit from.

            Notes

            Instances of this class cannot be directly instantiated by users. However, @@ -1003,7 +1003,7 @@

            Documentation Version
            point_2,
            -)[source] +)[source]

            The vectors parallel to the geodesic at the two end points.

            Parameters:
            @@ -1028,7 +1028,7 @@
            Documentation Version
            point_2,
            -)[source] +)[source]

            Returns the shortest distance between two points on a geometry’s surface.

            @@ -1053,7 +1053,7 @@
            Documentation Version
            -abstract point_on_surface(point)[source]
            +abstract point_on_surface(point)[source]

            Returns True if a point is on the geometry’s surface.

            Parameters:
            @@ -1070,7 +1070,7 @@
            Documentation Version
            -class sympy.physics.mechanics.wrapping_geometry.WrappingSphere(radius, point)[source]
            +class sympy.physics.mechanics.wrapping_geometry.WrappingSphere(radius, point)[source]

            A solid spherical object.

            Parameters:
            @@ -1119,7 +1119,7 @@
            Documentation Version
            point_2,
            -)[source] +)[source]

            The vectors parallel to the geodesic at the two end points.

            Parameters:
            @@ -1137,7 +1137,7 @@
            Documentation Version
            -geodesic_length(point_1, point_2)[source]
            +geodesic_length(point_1, point_2)[source]

            Returns the shortest distance between two points on the sphere’s surface.

            @@ -1210,7 +1210,7 @@
            Documentation Version
            -point_on_surface(point)[source]
            +point_on_surface(point)[source]

            Returns True if a point is on the sphere’s surface.

            Parameters:
            diff --git a/dev/modules/physics/optics/gaussopt.html b/dev/modules/physics/optics/gaussopt.html index 22e2f0e268a..a04e83cd8f3 100644 --- a/dev/modules/physics/optics/gaussopt.html +++ b/dev/modules/physics/optics/gaussopt.html @@ -824,7 +824,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.BeamParameter(wavelen, z, z_r=None, w=None, n=1)[source]
            +class sympy.physics.optics.gaussopt.BeamParameter(wavelen, z, z_r=None, w=None, n=1)[source]

            Representation for a gaussian ray in the Ray Transfer Matrix formalism.

            Parameters:
            @@ -989,7 +989,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.CurvedMirror(R)[source]
            +class sympy.physics.optics.gaussopt.CurvedMirror(R)[source]

            Ray Transfer Matrix for reflection from curved surface.

            Parameters:
            @@ -1014,7 +1014,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.CurvedRefraction(R, n1, n2)[source]
            +class sympy.physics.optics.gaussopt.CurvedRefraction(R, n1, n2)[source]

            Ray Transfer Matrix for refraction on curved interface.

            Parameters:
            @@ -1050,7 +1050,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.FlatMirror[source]
            +class sympy.physics.optics.gaussopt.FlatMirror[source]

            Ray Transfer Matrix for reflection.

            Examples

            >>> from sympy.physics.optics import FlatMirror
            @@ -1068,7 +1068,7 @@ 
            Documentation Version
            -class sympy.physics.optics.gaussopt.FlatRefraction(n1, n2)[source]
            +class sympy.physics.optics.gaussopt.FlatRefraction(n1, n2)[source]

            Ray Transfer Matrix for refraction.

            Parameters:
            @@ -1100,7 +1100,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.FreeSpace(d)[source]
            +class sympy.physics.optics.gaussopt.FreeSpace(d)[source]

            Ray Transfer Matrix for free space.

            Parameters:
            @@ -1125,7 +1125,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.GeometricRay(*args)[source]
            +class sympy.physics.optics.gaussopt.GeometricRay(*args)[source]

            Representation for a geometric ray in the Ray Transfer Matrix formalism.

            Parameters:
            @@ -1196,7 +1196,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.RayTransferMatrix(*args)[source]
            +class sympy.physics.optics.gaussopt.RayTransferMatrix(*args)[source]

            Base class for a Ray Transfer Matrix.

            It should be used if there is not already a more specific subclass mentioned in See Also.

            @@ -1309,7 +1309,7 @@
            Documentation Version
            -class sympy.physics.optics.gaussopt.ThinLens(f)[source]
            +class sympy.physics.optics.gaussopt.ThinLens(f)[source]

            Ray Transfer Matrix for a thin lens.

            Parameters:
            @@ -1346,7 +1346,7 @@
            Documentation Version
            **kwargs,
            -)[source] +)[source]

            Find the optical setup conjugating the object/image waists.

            Parameters:
            @@ -1402,7 +1402,7 @@
            Documentation Version
            -sympy.physics.optics.gaussopt.gaussian_conj(s_in, z_r_in, f)[source]
            +sympy.physics.optics.gaussopt.gaussian_conj(s_in, z_r_in, f)[source]

            Conjugation relation for gaussian beams.

            Parameters:
            @@ -1457,7 +1457,7 @@
            Documentation Version
            -sympy.physics.optics.gaussopt.geometric_conj_ab(a, b)[source]
            +sympy.physics.optics.gaussopt.geometric_conj_ab(a, b)[source]

            Conjugation relation for geometrical beams under paraxial conditions.

            Explanation

            Takes the distances to the optical element and returns the needed @@ -1478,7 +1478,7 @@

            Documentation Version
            -sympy.physics.optics.gaussopt.geometric_conj_af(a, f)[source]
            +sympy.physics.optics.gaussopt.geometric_conj_af(a, f)[source]

            Conjugation relation for geometrical beams under paraxial conditions.

            Explanation

            Takes the object distance (for geometric_conj_af) or the image distance @@ -1502,7 +1502,7 @@

            Documentation Version
            -sympy.physics.optics.gaussopt.geometric_conj_bf(a, f)[source]
            +sympy.physics.optics.gaussopt.geometric_conj_bf(a, f)[source]

            Conjugation relation for geometrical beams under paraxial conditions.

            Explanation

            Takes the object distance (for geometric_conj_af) or the image distance @@ -1526,7 +1526,7 @@

            Documentation Version
            -sympy.physics.optics.gaussopt.rayleigh2waist(z_r, wavelen)[source]
            +sympy.physics.optics.gaussopt.rayleigh2waist(z_r, wavelen)[source]

            Calculate the waist from the rayleigh range of a gaussian beam.

            Examples

            >>> from sympy.physics.optics import rayleigh2waist
            @@ -1544,7 +1544,7 @@ 
            Documentation Version
            -sympy.physics.optics.gaussopt.waist2rayleigh(w, wavelen, n=1)[source]
            +sympy.physics.optics.gaussopt.waist2rayleigh(w, wavelen, n=1)[source]

            Calculate the rayleigh range from the waist of a gaussian beam.

            Examples

            >>> from sympy.physics.optics import waist2rayleigh
            diff --git a/dev/modules/physics/optics/medium.html b/dev/modules/physics/optics/medium.html
            index e7015363edc..b6e1fb15d4e 100644
            --- a/dev/modules/physics/optics/medium.html
            +++ b/dev/modules/physics/optics/medium.html
            @@ -818,7 +818,7 @@ 
            Documentation Version
            n=None,
            -)[source] +)[source]

            This class represents an optical medium. The prime reason to implement this is to facilitate refraction, Fermat’s principle, etc.

            diff --git a/dev/modules/physics/optics/polarization.html b/dev/modules/physics/optics/polarization.html index 994f19f182a..3dea865b288 100644 --- a/dev/modules/physics/optics/polarization.html +++ b/dev/modules/physics/optics/polarization.html @@ -893,7 +893,7 @@

            References
            -sympy.physics.optics.polarization.half_wave_retarder(theta)[source]
            +sympy.physics.optics.polarization.half_wave_retarder(theta)[source]

            A half-wave retarder Jones matrix at angle theta.

            Parameters:
            @@ -927,7 +927,7 @@

            References
            -sympy.physics.optics.polarization.jones_2_stokes(e)[source]
            +sympy.physics.optics.polarization.jones_2_stokes(e)[source]

            Return the Stokes vector for a Jones vector e.

            Parameters:
            @@ -969,7 +969,7 @@

            References
            -sympy.physics.optics.polarization.jones_vector(psi, chi)[source]
            +sympy.physics.optics.polarization.jones_vector(psi, chi)[source]

            A Jones vector corresponding to a polarization ellipse with \(psi\) tilt, and \(chi\) circularity.

            @@ -1066,7 +1066,7 @@

            References
            -sympy.physics.optics.polarization.linear_polarizer(theta=0)[source]
            +sympy.physics.optics.polarization.linear_polarizer(theta=0)[source]

            A linear polarizer Jones matrix with transmission axis at an angle theta.

            @@ -1101,7 +1101,7 @@

            References
            -sympy.physics.optics.polarization.mueller_matrix(J)[source]
            +sympy.physics.optics.polarization.mueller_matrix(J)[source]

            The Mueller matrix corresponding to Jones matrix \(J\).

            Parameters:
            @@ -1174,7 +1174,7 @@

            References
            -sympy.physics.optics.polarization.phase_retarder(theta=0, delta=0)[source]
            +sympy.physics.optics.polarization.phase_retarder(theta=0, delta=0)[source]

            A phase retarder Jones matrix with retardance delta at angle theta.

            Parameters:
            @@ -1228,7 +1228,7 @@

            Referencesphib=0,

            -)[source] +)[source]

            A polarizing beam splitter Jones matrix at angle \(theta\).

            Parameters:
            @@ -1297,7 +1297,7 @@

            References
            -sympy.physics.optics.polarization.quarter_wave_retarder(theta)[source]
            +sympy.physics.optics.polarization.quarter_wave_retarder(theta)[source]

            A quarter-wave retarder Jones matrix at angle theta.

            Parameters:
            @@ -1335,7 +1335,7 @@

            References
            -sympy.physics.optics.polarization.reflective_filter(R)[source]
            +sympy.physics.optics.polarization.reflective_filter(R)[source]

            A reflective filter Jones matrix with reflectance R.

            Parameters:
            @@ -1366,7 +1366,7 @@

            References
            -sympy.physics.optics.polarization.stokes_vector(psi, chi, p=1, I=1)[source]
            +sympy.physics.optics.polarization.stokes_vector(psi, chi, p=1, I=1)[source]

            A Stokes vector corresponding to a polarization ellipse with psi tilt, and chi circularity.

            @@ -1491,7 +1491,7 @@

            References
            -sympy.physics.optics.polarization.transmissive_filter(T)[source]
            +sympy.physics.optics.polarization.transmissive_filter(T)[source]

            An attenuator Jones matrix with transmittance T.

            Parameters:
            diff --git a/dev/modules/physics/optics/utils.html b/dev/modules/physics/optics/utils.html index f4a0b715cd1..23a8dddc3e2 100644 --- a/dev/modules/physics/optics/utils.html +++ b/dev/modules/physics/optics/utils.html @@ -818,7 +818,7 @@
            Documentation Version

          -sympy.physics.optics.utils.brewster_angle(medium1, medium2)[source]
          +sympy.physics.optics.utils.brewster_angle(medium1, medium2)[source]

          This function calculates the Brewster’s angle of incidence to Medium 2 from Medium 1 in radians.

          @@ -843,7 +843,7 @@
          Documentation Version
          -sympy.physics.optics.utils.critical_angle(medium1, medium2)[source]
          +sympy.physics.optics.utils.critical_angle(medium1, medium2)[source]

          This function calculates the critical angle of incidence (marking the onset of total internal) to Medium 2 from Medium 1 in radians.

          @@ -878,7 +878,7 @@
          Documentation Version
          plane=None,
          -)[source] +)[source]

          This function calculates the angle of deviation of a ray due to refraction at planar surface.

          @@ -935,7 +935,7 @@
          Documentation Version
          medium2,
          -)[source] +)[source]

          This function uses Fresnel equations to calculate reflection and transmission coefficients. Those are obtained for both polarisations when the electric field vector is in the plane of incidence (labelled ‘p’) @@ -987,7 +987,7 @@

          Documentation Version
          -sympy.physics.optics.utils.hyperfocal_distance(f, N, c)[source]
          +sympy.physics.optics.utils.hyperfocal_distance(f, N, c)[source]
          Parameters:

          f: sympifiable

          @@ -1014,7 +1014,7 @@
          Documentation Version
          -sympy.physics.optics.utils.lens_formula(focal_length=None, u=None, v=None)[source]
          +sympy.physics.optics.utils.lens_formula(focal_length=None, u=None, v=None)[source]

          This function provides one of the three parameters when two of them are supplied. This is valid only for paraxial rays.

          @@ -1051,7 +1051,7 @@
          Documentation Version
          -sympy.physics.optics.utils.lens_makers_formula(n_lens, n_surr, r1, r2, d=0)[source]
          +sympy.physics.optics.utils.lens_makers_formula(n_lens, n_surr, r1, r2, d=0)[source]

          This function calculates focal length of a lens. It follows cartesian sign convention.

          @@ -1093,7 +1093,7 @@
          Documentation Version
          -sympy.physics.optics.utils.mirror_formula(focal_length=None, u=None, v=None)[source]
          +sympy.physics.optics.utils.mirror_formula(focal_length=None, u=None, v=None)[source]

          This function provides one of the three parameters when two of them are supplied. This is valid only for paraxial rays.

          @@ -1140,7 +1140,7 @@
          Documentation Version
          plane=None,
          -)[source] +)[source]

          This function calculates transmitted vector after refraction at planar surface. medium1 and medium2 can be Medium or any sympifiable object. If incident is a number then treated as angle of incidence (in radians) @@ -1214,7 +1214,7 @@

          Documentation Version
          -sympy.physics.optics.utils.transverse_magnification(si, so)[source]
          +sympy.physics.optics.utils.transverse_magnification(si, so)[source]

          Calculates the transverse magnification upon reflection in a mirror, which is the ratio of the image size to the object size.

          diff --git a/dev/modules/physics/optics/waves.html b/dev/modules/physics/optics/waves.html index f824fcdea90..f05ca2a0883 100644 --- a/dev/modules/physics/optics/waves.html +++ b/dev/modules/physics/optics/waves.html @@ -820,7 +820,7 @@
          Documentation Version
          n=n,
          -)[source] +)[source]

          This is a simple transverse sine wave travelling in a one-dimensional space. Basic properties are required at the time of creation of the object, but they can be changed later with respective methods provided.

          diff --git a/dev/modules/physics/paulialgebra.html b/dev/modules/physics/paulialgebra.html index 5628d2f7cdd..10325d9a622 100644 --- a/dev/modules/physics/paulialgebra.html +++ b/dev/modules/physics/paulialgebra.html @@ -817,7 +817,7 @@

          References
          -sympy.physics.paulialgebra.evaluate_pauli_product(arg)[source]
          +sympy.physics.paulialgebra.evaluate_pauli_product(arg)[source]

          Help function to evaluate Pauli matrices product with symbolic objects.

          diff --git a/dev/modules/physics/qho_1d.html b/dev/modules/physics/qho_1d.html index c0e0e7f7200..197ece3bf0e 100644 --- a/dev/modules/physics/qho_1d.html +++ b/dev/modules/physics/qho_1d.html @@ -805,7 +805,7 @@
          Documentation Version

          Quantum Harmonic Oscillator in 1-D

          -sympy.physics.qho_1d.E_n(n, omega)[source]
          +sympy.physics.qho_1d.E_n(n, omega)[source]

          Returns the Energy of the One-dimensional harmonic oscillator.

          Parameters:
          @@ -836,7 +836,7 @@
          Documentation Version
          -sympy.physics.qho_1d.coherent_state(n, alpha)[source]
          +sympy.physics.qho_1d.coherent_state(n, alpha)[source]

          Returns <n|alpha> for the coherent states of 1D harmonic oscillator. See https://en.wikipedia.org/wiki/Coherent_states

          @@ -855,7 +855,7 @@
          Documentation Version
          -sympy.physics.qho_1d.psi_n(n, x, m, omega)[source]
          +sympy.physics.qho_1d.psi_n(n, x, m, omega)[source]

          Returns the wavefunction psi_{n} for the One-dimensional harmonic oscillator.

          Parameters:
          diff --git a/dev/modules/physics/quantum/anticommutator.html b/dev/modules/physics/quantum/anticommutator.html index 41823be9d94..f0b832b20bb 100644 --- a/dev/modules/physics/quantum/anticommutator.html +++ b/dev/modules/physics/quantum/anticommutator.html @@ -806,7 +806,7 @@
          Documentation Version

          The anti-commutator: {A,B} = A*B + B*A.

          -class sympy.physics.quantum.anticommutator.AntiCommutator(A, B)[source]
          +class sympy.physics.quantum.anticommutator.AntiCommutator(A, B)[source]

          The standard anticommutator, in an unevaluated state.

          Parameters:
          @@ -869,7 +869,7 @@
          Documentation Version

          -doit(**hints)[source]
          +doit(**hints)[source]

          Evaluate anticommutator

          diff --git a/dev/modules/physics/quantum/cartesian.html b/dev/modules/physics/quantum/cartesian.html index eca3a82e692..f11666ce2fd 100644 --- a/dev/modules/physics/quantum/cartesian.html +++ b/dev/modules/physics/quantum/cartesian.html @@ -810,19 +810,19 @@
          Documentation Version

      -class sympy.physics.quantum.cartesian.PositionBra3D(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PositionBra3D(*args, **kwargs)[source]

      3D cartesian position eigenbra

      -class sympy.physics.quantum.cartesian.PositionKet3D(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PositionKet3D(*args, **kwargs)[source]

      3D cartesian position eigenket

      -class sympy.physics.quantum.cartesian.PositionState3D(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PositionState3D(*args, **kwargs)[source]

      Base class for 3D cartesian position eigenstates

      @@ -846,7 +846,7 @@
      Documentation Version
      -class sympy.physics.quantum.cartesian.PxBra(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PxBra(*args, **kwargs)[source]

      1D cartesian momentum eigenbra.

      @@ -858,7 +858,7 @@
      Documentation Version
      -class sympy.physics.quantum.cartesian.PxKet(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PxKet(*args, **kwargs)[source]

      1D cartesian momentum eigenket.

      @@ -870,13 +870,13 @@
      Documentation Version
      -class sympy.physics.quantum.cartesian.PxOp(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.PxOp(*args, **kwargs)[source]

      1D cartesian momentum operator.

      -class sympy.physics.quantum.cartesian.XBra(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.XBra(*args, **kwargs)[source]

      1D cartesian position eigenbra.

      @@ -888,7 +888,7 @@
      Documentation Version
      -class sympy.physics.quantum.cartesian.XKet(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.XKet(*args, **kwargs)[source]

      1D cartesian position eigenket.

      @@ -900,19 +900,19 @@
      Documentation Version
      -class sympy.physics.quantum.cartesian.XOp(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.XOp(*args, **kwargs)[source]

      1D cartesian position operator.

      -class sympy.physics.quantum.cartesian.YOp(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.YOp(*args, **kwargs)[source]

      Y cartesian coordinate operator (for 2D or 3D systems)

      -class sympy.physics.quantum.cartesian.ZOp(*args, **kwargs)[source]
      +class sympy.physics.quantum.cartesian.ZOp(*args, **kwargs)[source]

      Z cartesian coordinate operator (for 3D systems)

      diff --git a/dev/modules/physics/quantum/cg.html b/dev/modules/physics/quantum/cg.html index c7121b3c02b..ce93f3460a1 100644 --- a/dev/modules/physics/quantum/cg.html +++ b/dev/modules/physics/quantum/cg.html @@ -806,7 +806,7 @@
      Documentation Version

      Clebsch-Gordon Coefficients.

      -class sympy.physics.quantum.cg.CG(j1, m1, j2, m2, j3, m3)[source]
      +class sympy.physics.quantum.cg.CG(j1, m1, j2, m2, j3, m3)[source]

      Class for Clebsch-Gordan coefficient.

      Parameters:
      @@ -869,7 +869,7 @@
      Documentation Version
      -class sympy.physics.quantum.cg.Wigner3j(j1, m1, j2, m2, j3, m3)[source]
      +class sympy.physics.quantum.cg.Wigner3j(j1, m1, j2, m2, j3, m3)[source]

      Class for the Wigner-3j symbols.

      Parameters:
      @@ -914,7 +914,7 @@
      Documentation Version
      -class sympy.physics.quantum.cg.Wigner6j(j1, j2, j12, j3, j, j23)[source]
      +class sympy.physics.quantum.cg.Wigner6j(j1, j2, j12, j3, j, j23)[source]

      Class for the Wigner-6j symbols

      See also

      @@ -927,7 +927,7 @@
      Documentation Version
      -class sympy.physics.quantum.cg.Wigner9j(j1, j2, j12, j3, j4, j34, j13, j24, j)[source]
      +class sympy.physics.quantum.cg.Wigner9j(j1, j2, j12, j3, j4, j34, j13, j24, j)[source]

      Class for the Wigner-9j symbols

      See also

      @@ -940,7 +940,7 @@
      Documentation Version
      -sympy.physics.quantum.cg.cg_simp(e)[source]
      +sympy.physics.quantum.cg.cg_simp(e)[source]

      Simplify and combine CG coefficients.

      Explanation

      This function uses various symmetry and properties of sums and diff --git a/dev/modules/physics/quantum/circuitplot.html b/dev/modules/physics/quantum/circuitplot.html index ef93c4c0ad1..2c1bbecf08e 100644 --- a/dev/modules/physics/quantum/circuitplot.html +++ b/dev/modules/physics/quantum/circuitplot.html @@ -819,7 +819,7 @@

      Documentation Version

    -class sympy.physics.quantum.circuitplot.CircuitPlot(c, nqubits, **kwargs)[source]
    +class sympy.physics.quantum.circuitplot.CircuitPlot(c, nqubits, **kwargs)[source]

    A class for managing a circuit plot.

    @@ -831,43 +831,43 @@
    Documentation Version
    max_wire,
    -)[source] +)[source]

    Draw a vertical control line.

    -control_point(gate_idx, wire_idx)[source]
    +control_point(gate_idx, wire_idx)[source]

    Draw a control point.

    -not_point(gate_idx, wire_idx)[source]
    +not_point(gate_idx, wire_idx)[source]

    Draw a NOT gates as the circle with plus in the middle.

    -one_qubit_box(t, gate_idx, wire_idx)[source]
    +one_qubit_box(t, gate_idx, wire_idx)[source]

    Draw a box for a single qubit gate.

    -swap_point(gate_idx, wire_idx)[source]
    +swap_point(gate_idx, wire_idx)[source]

    Draw a swap point as a cross.

    -two_qubit_box(t, gate_idx, wire_idx)[source]
    +two_qubit_box(t, gate_idx, wire_idx)[source]

    Draw a box for a two qubit gate. Does not work yet.

    -update(kwargs)[source]
    +update(kwargs)[source]

    Load the kwargs into the instance dict.

    @@ -875,13 +875,13 @@
    Documentation Version
    -sympy.physics.quantum.circuitplot.CreateCGate(name, latexname=None)[source]
    +sympy.physics.quantum.circuitplot.CreateCGate(name, latexname=None)[source]

    Use a lexical closure to make a controlled gate.

    -class sympy.physics.quantum.circuitplot.Mx(*args, **kwargs)[source]
    +class sympy.physics.quantum.circuitplot.Mx(*args, **kwargs)[source]

    Mock-up of an x measurement gate.

    This is in circuitplot rather than gate.py because it’s not a real gate, it just draws one.

    @@ -889,7 +889,7 @@
    Documentation Version
    -class sympy.physics.quantum.circuitplot.Mz(*args, **kwargs)[source]
    +class sympy.physics.quantum.circuitplot.Mz(*args, **kwargs)[source]

    Mock-up of a z measurement gate.

    This is in circuitplot rather than gate.py because it’s not a real gate, it just draws one.

    @@ -897,7 +897,7 @@
    Documentation Version
    -sympy.physics.quantum.circuitplot.circuit_plot(c, nqubits, **kwargs)[source]
    +sympy.physics.quantum.circuitplot.circuit_plot(c, nqubits, **kwargs)[source]

    Draw the circuit diagram for the circuit with nqubits.

    Parameters:
    @@ -916,7 +916,7 @@
    Documentation Version
    -sympy.physics.quantum.circuitplot.labeller(n, symbol='q')[source]
    +sympy.physics.quantum.circuitplot.labeller(n, symbol='q')[source]

    Autogenerate labels for wires of quantum circuits.

    Parameters:
    diff --git a/dev/modules/physics/quantum/commutator.html b/dev/modules/physics/quantum/commutator.html index eeafaf5b897..e3bf4f427f9 100644 --- a/dev/modules/physics/quantum/commutator.html +++ b/dev/modules/physics/quantum/commutator.html @@ -806,7 +806,7 @@
    Documentation Version

    The commutator: [A,B] = A*B - B*A.

    -class sympy.physics.quantum.commutator.Commutator(A, B)[source]
    +class sympy.physics.quantum.commutator.Commutator(A, B)[source]

    The standard commutator, in an unevaluated state.

    Parameters:
    @@ -881,7 +881,7 @@
    Documentation Version

    -doit(**hints)[source]
    +doit(**hints)[source]

    Evaluate commutator

    diff --git a/dev/modules/physics/quantum/constants.html b/dev/modules/physics/quantum/constants.html index f862d270d84..1cf5e0c332d 100644 --- a/dev/modules/physics/quantum/constants.html +++ b/dev/modules/physics/quantum/constants.html @@ -806,7 +806,7 @@
    Documentation Version

    Constants (like hbar) related to quantum mechanics.

    -class sympy.physics.quantum.constants.HBar[source]
    +class sympy.physics.quantum.constants.HBar[source]

    Reduced Plank’s constant in numerical and symbolic form [R763].

    Examples

    >>> from sympy.physics.quantum.constants import hbar
    diff --git a/dev/modules/physics/quantum/dagger.html b/dev/modules/physics/quantum/dagger.html
    index 187563fd0ed..cef4a30e74b 100644
    --- a/dev/modules/physics/quantum/dagger.html
    +++ b/dev/modules/physics/quantum/dagger.html
    @@ -806,7 +806,7 @@ 
    Documentation Version

    Hermitian conjugation.

    -class sympy.physics.quantum.dagger.Dagger(arg)[source]
    +class sympy.physics.quantum.dagger.Dagger(arg)[source]

    General Hermitian conjugate operation.

    Parameters:
    diff --git a/dev/modules/physics/quantum/gate.html b/dev/modules/physics/quantum/gate.html index bf4f9a658c3..c1c07794b89 100644 --- a/dev/modules/physics/quantum/gate.html +++ b/dev/modules/physics/quantum/gate.html @@ -817,7 +817,7 @@
    Documentation Version
    -class sympy.physics.quantum.gate.CGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.CGate(*args, **kwargs)[source]

    A general unitary gate with control qubits.

    A general control gate applies a target gate to a set of targets if all of the control qubits have a particular values (set by @@ -840,13 +840,13 @@

    Documentation Version
    -decompose(**options)[source]
    +decompose(**options)[source]

    Decompose the controlled gate into CNOT and single qubits gates.

    -eval_controls(qubit)[source]
    +eval_controls(qubit)[source]

    Return True/False to indicate if the controls are satisfied.

    @@ -872,7 +872,7 @@
    Documentation Version
    -plot_gate(circ_plot, gate_idx)[source]
    +plot_gate(circ_plot, gate_idx)[source]

    Plot the controlled gate. If simplify_cgate is true, simplify C-X and C-Z gates into their more familiar forms.

    @@ -887,20 +887,20 @@
    Documentation Version
    -class sympy.physics.quantum.gate.CGateS(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.CGateS(*args, **kwargs)[source]

    Version of CGate that allows gate simplifications. I.e. cnot looks like an oplus, cphase has dots, etc.

    -sympy.physics.quantum.gate.CNOT[source]
    +sympy.physics.quantum.gate.CNOT[source]

    alias of CNotGate

    -class sympy.physics.quantum.gate.CNotGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.CNotGate(*args, **kwargs)[source]

    Two qubit controlled-NOT.

    This gate performs the NOT or X gate on the target qubit if the control qubits all have the value 1.

    @@ -949,7 +949,7 @@
    Documentation Version
    -class sympy.physics.quantum.gate.Gate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.Gate(*args, **kwargs)[source]

    Non-controlled unitary gate operator that acts on qubits.

    This is a general abstract gate that needs to be subclassed to do anything useful.

    @@ -963,7 +963,7 @@
    Documentation Version
    -get_target_matrix(format='sympy')[source]
    +get_target_matrix(format='sympy')[source]

    The matrix representation of the target part of the gate.

    Parameters:
    @@ -999,13 +999,13 @@
    Documentation Version
    -sympy.physics.quantum.gate.H[source]
    +sympy.physics.quantum.gate.H[source]

    alias of HadamardGate

    -class sympy.physics.quantum.gate.HadamardGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.HadamardGate(*args, **kwargs)[source]

    The single qubit Hadamard gate.

    Parameters:
    @@ -1032,7 +1032,7 @@
    Documentation Version
    -class sympy.physics.quantum.gate.IdentityGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.IdentityGate(*args, **kwargs)[source]

    The single qubit identity gate.

    Parameters:
    @@ -1046,19 +1046,19 @@
    Documentation Version
    -class sympy.physics.quantum.gate.OneQubitGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.OneQubitGate(*args, **kwargs)[source]

    A single qubit unitary gate base class.

    -sympy.physics.quantum.gate.Phase[source]
    +sympy.physics.quantum.gate.Phase[source]

    alias of PhaseGate

    -class sympy.physics.quantum.gate.PhaseGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.PhaseGate(*args, **kwargs)[source]

    The single qubit phase, or S, gate.

    This gate rotates the phase of the state by pi/2 if the state is |1> and does nothing if the state is |0>.

    @@ -1074,19 +1074,19 @@
    Documentation Version
    -sympy.physics.quantum.gate.S[source]
    +sympy.physics.quantum.gate.S[source]

    alias of PhaseGate

    -sympy.physics.quantum.gate.SWAP[source]
    +sympy.physics.quantum.gate.SWAP[source]

    alias of SwapGate

    -class sympy.physics.quantum.gate.SwapGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.SwapGate(*args, **kwargs)[source]

    Two qubit SWAP gate.

    This gate swap the values of the two qubits.

    @@ -1099,7 +1099,7 @@
    Documentation Version
    -decompose(**options)[source]
    +decompose(**options)[source]

    Decompose the SWAP gate into CNOT gates.

    @@ -1107,13 +1107,13 @@
    Documentation Version
    -sympy.physics.quantum.gate.T[source]
    +sympy.physics.quantum.gate.T[source]

    alias of TGate

    -class sympy.physics.quantum.gate.TGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.TGate(*args, **kwargs)[source]

    The single qubit pi/8 gate.

    This gate rotates the phase of the state by pi/4 if the state is |1> and does nothing if the state is |0>.

    @@ -1129,13 +1129,13 @@
    Documentation Version
    -class sympy.physics.quantum.gate.TwoQubitGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.TwoQubitGate(*args, **kwargs)[source]

    A two qubit unitary gate base class.

    -class sympy.physics.quantum.gate.UGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.UGate(*args, **kwargs)[source]

    General gate specified by a set of targets and a target matrix.

    Parameters:
    @@ -1149,7 +1149,7 @@
    Documentation Version
    -get_target_matrix(format='sympy')[source]
    +get_target_matrix(format='sympy')[source]

    The matrix rep. of the target part of the gate.

    Parameters:
    @@ -1171,13 +1171,13 @@
    Documentation Version
    -sympy.physics.quantum.gate.X[source]
    +sympy.physics.quantum.gate.X[source]

    alias of XGate

    -class sympy.physics.quantum.gate.XGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.XGate(*args, **kwargs)[source]

    The single qubit X, or NOT, gate.

    Parameters:
    @@ -1191,13 +1191,13 @@
    Documentation Version
    -sympy.physics.quantum.gate.Y[source]
    +sympy.physics.quantum.gate.Y[source]

    alias of YGate

    -class sympy.physics.quantum.gate.YGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.YGate(*args, **kwargs)[source]

    The single qubit Y gate.

    Parameters:
    @@ -1211,13 +1211,13 @@
    Documentation Version
    -sympy.physics.quantum.gate.Z[source]
    +sympy.physics.quantum.gate.Z[source]

    alias of ZGate

    -class sympy.physics.quantum.gate.ZGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.gate.ZGate(*args, **kwargs)[source]

    The single qubit Z gate.

    Parameters:
    @@ -1231,7 +1231,7 @@
    Documentation Version
    -sympy.physics.quantum.gate.gate_simp(circuit)[source]
    +sympy.physics.quantum.gate.gate_simp(circuit)[source]

    Simplifies gates symbolically

    It first sorts gates using gate_sort. It then applies basic simplification rules to the circuit, e.g., XGate**2 = Identity

    @@ -1239,7 +1239,7 @@
    Documentation Version
    -sympy.physics.quantum.gate.gate_sort(circuit)[source]
    +sympy.physics.quantum.gate.gate_sort(circuit)[source]

    Sorts the gates while keeping track of commutation relations

    This function uses a bubble sort to rearrange the order of gate application. Keeps track of Quantum computations special commutation @@ -1250,7 +1250,7 @@

    Documentation Version
    -sympy.physics.quantum.gate.normalized(normalize)[source]
    +sympy.physics.quantum.gate.normalized(normalize)[source]

    Set flag controlling normalization of Hadamard gates by \(1/\sqrt{2}\).

    This is a global setting that can be used to simplify the look of various expressions, by leaving off the leading \(1/\sqrt{2}\) of the Hadamard gate.

    @@ -1283,7 +1283,7 @@
    Documentation Version
    <class 'sympy.physics.quantum.gate.SwapGate'>),
    -)[source] +)[source]

    Return a random circuit of ngates and nqubits.

    This uses an equally weighted sample of (X, Y, Z, S, T, H, CNOT, SWAP) gates.

    diff --git a/dev/modules/physics/quantum/grover.html b/dev/modules/physics/quantum/grover.html index 92eab5824b8..e5511019d11 100644 --- a/dev/modules/physics/quantum/grover.html +++ b/dev/modules/physics/quantum/grover.html @@ -813,7 +813,7 @@
    Documentation Version
    -class sympy.physics.quantum.grover.OracleGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.grover.OracleGate(*args, **kwargs)[source]

    A black box gate.

    The gate marks the desired qubits of an unknown function by flipping the sign of the qubits. The unknown function returns true when it @@ -859,7 +859,7 @@

    Documentation Version
    -class sympy.physics.quantum.grover.WGate(*args, **kwargs)[source]
    +class sympy.physics.quantum.grover.WGate(*args, **kwargs)[source]

    General n qubit W Gate in Grover’s algorithm.

    The gate performs the operation 2|phi><phi| - 1 on some qubits. |phi> = (tensor product of n Hadamards)*(|0> with n qubits)

    @@ -875,7 +875,7 @@
    Documentation Version
    -sympy.physics.quantum.grover.apply_grover(oracle, nqubits, iterations=None)[source]
    +sympy.physics.quantum.grover.apply_grover(oracle, nqubits, iterations=None)[source]

    Applies grover’s algorithm.

    Parameters:
    @@ -906,7 +906,7 @@
    Documentation Version
    -sympy.physics.quantum.grover.grover_iteration(qstate, oracle)[source]
    +sympy.physics.quantum.grover.grover_iteration(qstate, oracle)[source]

    Applies one application of the Oracle and W Gate, WV.

    Parameters:
    @@ -942,7 +942,7 @@
    Documentation Version
    -sympy.physics.quantum.grover.superposition_basis(nqubits)[source]
    +sympy.physics.quantum.grover.superposition_basis(nqubits)[source]

    Creates an equal superposition of the computational basis.

    Parameters:
    diff --git a/dev/modules/physics/quantum/hilbert.html b/dev/modules/physics/quantum/hilbert.html index 65e03820748..0b2fa36276a 100644 --- a/dev/modules/physics/quantum/hilbert.html +++ b/dev/modules/physics/quantum/hilbert.html @@ -809,7 +809,7 @@
    Documentation Version
    * Matt Curry

    -class sympy.physics.quantum.hilbert.ComplexSpace(dimension)[source]
    +class sympy.physics.quantum.hilbert.ComplexSpace(dimension)[source]

    Finite dimensional Hilbert space of complex vectors.

    The elements of this Hilbert space are n-dimensional complex valued vectors with the usual inner product that takes the complex conjugate @@ -840,7 +840,7 @@

    Documentation Version
    -class sympy.physics.quantum.hilbert.DirectSumHilbertSpace(*args)[source]
    +class sympy.physics.quantum.hilbert.DirectSumHilbertSpace(*args)[source]

    A direct sum of Hilbert spaces [R766].

    This class uses the + operator to represent direct sums between different Hilbert spaces.

    @@ -872,7 +872,7 @@
    Documentation Version
    -classmethod eval(args)[source]
    +classmethod eval(args)[source]

    Evaluates the direct product.

    @@ -886,7 +886,7 @@
    Documentation Version
    -class sympy.physics.quantum.hilbert.FockSpace[source]
    +class sympy.physics.quantum.hilbert.FockSpace[source]

    The Hilbert space for second quantization.

    Technically, this Hilbert space is a infinite direct sum of direct products of single particle Hilbert spaces [R767]. This is a mess, so we have @@ -912,7 +912,7 @@

    Documentation Version
    -class sympy.physics.quantum.hilbert.HilbertSpace[source]
    +class sympy.physics.quantum.hilbert.HilbertSpace[source]

    An abstract Hilbert space for quantum mechanics.

    In short, a Hilbert space is an abstract vector space that is complete with inner products defined [R768].

    @@ -941,7 +941,7 @@
    Documentation Version
    -class sympy.physics.quantum.hilbert.L2(interval)[source]
    +class sympy.physics.quantum.hilbert.L2(interval)[source]

    The Hilbert space of square integrable functions on an interval.

    An L2 object takes in a single SymPy Interval argument which represents the interval its functions (vectors) are defined on.

    @@ -961,7 +961,7 @@
    Documentation Version
    -class sympy.physics.quantum.hilbert.TensorPowerHilbertSpace(*args)[source]
    +class sympy.physics.quantum.hilbert.TensorPowerHilbertSpace(*args)[source]

    An exponentiated Hilbert space [R769].

    Tensor powers (repeated tensor products) are represented by the operator ** Identical Hilbert spaces that are multiplied together @@ -1003,7 +1003,7 @@

    Documentation Version
    -class sympy.physics.quantum.hilbert.TensorProductHilbertSpace(*args)[source]
    +class sympy.physics.quantum.hilbert.TensorProductHilbertSpace(*args)[source]

    A tensor product of Hilbert spaces [R770].

    The tensor product between Hilbert spaces is represented by the operator * Products of the same Hilbert space will be combined into @@ -1048,7 +1048,7 @@

    Documentation Version
    -classmethod eval(args)[source]
    +classmethod eval(args)[source]

    Evaluates the direct product.

    diff --git a/dev/modules/physics/quantum/innerproduct.html b/dev/modules/physics/quantum/innerproduct.html index be0ab23bbff..0008285c189 100644 --- a/dev/modules/physics/quantum/innerproduct.html +++ b/dev/modules/physics/quantum/innerproduct.html @@ -806,7 +806,7 @@
    Documentation Version

    Symbolic inner product.

    -class sympy.physics.quantum.innerproduct.InnerProduct(bra, ket)[source]
    +class sympy.physics.quantum.innerproduct.InnerProduct(bra, ket)[source]

    An unevaluated inner product between a Bra and a Ket [1].

    Parameters:
    diff --git a/dev/modules/physics/quantum/operator.html b/dev/modules/physics/quantum/operator.html index ab37fe8bba4..5a7ca3df314 100644 --- a/dev/modules/physics/quantum/operator.html +++ b/dev/modules/physics/quantum/operator.html @@ -814,7 +814,7 @@
    Documentation Version
    -class sympy.physics.quantum.operator.DifferentialOperator(*args, **kwargs)[source]
    +class sympy.physics.quantum.operator.DifferentialOperator(*args, **kwargs)[source]

    An operator for representing the differential operator, i.e. d/dx

    It is initialized by passing two arguments. The first is an arbitrary expression that involves a function, such as Derivative(f(x), x). The @@ -928,7 +928,7 @@

    Documentation Version
    -class sympy.physics.quantum.operator.HermitianOperator(*args, **kwargs)[source]
    +class sympy.physics.quantum.operator.HermitianOperator(*args, **kwargs)[source]

    A Hermitian operator that satisfies H == Dagger(H).

    Parameters:
    @@ -950,7 +950,7 @@
    Documentation Version
    -class sympy.physics.quantum.operator.IdentityOperator(*args, **kwargs)[source]
    +class sympy.physics.quantum.operator.IdentityOperator(*args, **kwargs)[source]

    An identity operator I that satisfies op * I == I * op == op for any operator op.

    @@ -976,7 +976,7 @@
    Documentation Version
    -class sympy.physics.quantum.operator.Operator(*args, **kwargs)[source]
    +class sympy.physics.quantum.operator.Operator(*args, **kwargs)[source]

    Base class for non-commuting quantum operators.

    An operator maps between quantum states [R772]. In quantum mechanics, observables (including, but not limited to, measured physical values) are @@ -1051,7 +1051,7 @@

    Documentation Version
    -class sympy.physics.quantum.operator.OuterProduct(*args, **old_assumptions)[source]
    +class sympy.physics.quantum.operator.OuterProduct(*args, **old_assumptions)[source]

    An unevaluated outer product between a ket and bra.

    This constructs an outer product between any subclass of KetBase and BraBase as |a><b|. An OuterProduct inherits from Operator as they act as @@ -1123,7 +1123,7 @@

    Documentation Version
    -class sympy.physics.quantum.operator.UnitaryOperator(*args, **kwargs)[source]
    +class sympy.physics.quantum.operator.UnitaryOperator(*args, **kwargs)[source]

    A unitary operator that satisfies U*Dagger(U) == 1.

    Parameters:
    diff --git a/dev/modules/physics/quantum/operatorset.html b/dev/modules/physics/quantum/operatorset.html index 17d2f43d832..8cb726d6126 100644 --- a/dev/modules/physics/quantum/operatorset.html +++ b/dev/modules/physics/quantum/operatorset.html @@ -816,7 +816,7 @@
    Documentation Version
    - Update the dictionary with a complete list of state-operator pairs

    -sympy.physics.quantum.operatorset.operators_to_state(operators, **options)[source]
    +sympy.physics.quantum.operatorset.operators_to_state(operators, **options)[source]

    Returns the eigenstate of the given operator or set of operators

    A global function for mapping operator classes to their associated states. It takes either an Operator or a set of operators and @@ -867,7 +867,7 @@

    Documentation Version
    -sympy.physics.quantum.operatorset.state_to_operators(state, **options)[source]
    +sympy.physics.quantum.operatorset.state_to_operators(state, **options)[source]

    Returns the operator or set of operators corresponding to the given eigenstate

    A global function for mapping state classes to their associated diff --git a/dev/modules/physics/quantum/piab.html b/dev/modules/physics/quantum/piab.html index 4b7498a1a63..7bead2c0e28 100644 --- a/dev/modules/physics/quantum/piab.html +++ b/dev/modules/physics/quantum/piab.html @@ -806,19 +806,19 @@

    Documentation Version

    1D quantum particle in a box.

    -class sympy.physics.quantum.piab.PIABBra(*args, **kwargs)[source]
    +class sympy.physics.quantum.piab.PIABBra(*args, **kwargs)[source]

    Particle in a box eigenbra.

    -class sympy.physics.quantum.piab.PIABHamiltonian(*args, **kwargs)[source]
    +class sympy.physics.quantum.piab.PIABHamiltonian(*args, **kwargs)[source]

    Particle in a box Hamiltonian operator.

    -class sympy.physics.quantum.piab.PIABKet(*args, **kwargs)[source]
    +class sympy.physics.quantum.piab.PIABKet(*args, **kwargs)[source]

    Particle in a box eigenket.

    diff --git a/dev/modules/physics/quantum/qapply.html b/dev/modules/physics/quantum/qapply.html index 62cb6e19be5..80e3fc93e68 100644 --- a/dev/modules/physics/quantum/qapply.html +++ b/dev/modules/physics/quantum/qapply.html @@ -808,7 +808,7 @@
    Documentation Version
    * Sometimes the final result needs to be expanded, we should do this by hand.

    -sympy.physics.quantum.qapply.qapply(e, **options)[source]
    +sympy.physics.quantum.qapply.qapply(e, **options)[source]

    Apply operators to states in a quantum expression.

    Parameters:
    diff --git a/dev/modules/physics/quantum/qft.html b/dev/modules/physics/quantum/qft.html index 26275855366..433c0ab2e95 100644 --- a/dev/modules/physics/quantum/qft.html +++ b/dev/modules/physics/quantum/qft.html @@ -816,11 +816,11 @@
    Documentation Version
    -class sympy.physics.quantum.qft.IQFT(*args, **kwargs)[source]
    +class sympy.physics.quantum.qft.IQFT(*args, **kwargs)[source]

    The inverse quantum Fourier transform.

    -decompose()[source]
    +decompose()[source]

    Decomposes IQFT into elementary gates.

    @@ -828,11 +828,11 @@
    Documentation Version
    -class sympy.physics.quantum.qft.QFT(*args, **kwargs)[source]
    +class sympy.physics.quantum.qft.QFT(*args, **kwargs)[source]

    The forward quantum Fourier transform.

    -decompose()[source]
    +decompose()[source]

    Decomposes QFT into elementary gates.

    @@ -840,13 +840,13 @@
    Documentation Version
    -sympy.physics.quantum.qft.Rk[source]
    +sympy.physics.quantum.qft.Rk[source]

    alias of RkGate

    -class sympy.physics.quantum.qft.RkGate(*args)[source]
    +class sympy.physics.quantum.qft.RkGate(*args)[source]

    This is the R_k gate of the QTF.

    diff --git a/dev/modules/physics/quantum/qubit.html b/dev/modules/physics/quantum/qubit.html index 900fe5b17d1..5097dce4cea 100644 --- a/dev/modules/physics/quantum/qubit.html +++ b/dev/modules/physics/quantum/qubit.html @@ -810,7 +810,7 @@
    Documentation Version
    * Update tests.

    -class sympy.physics.quantum.qubit.IntQubit(*args, **kwargs)[source]
    +class sympy.physics.quantum.qubit.IntQubit(*args, **kwargs)[source]

    A qubit ket that store integers as binary numbers in qubit values.

    The differences between this class and Qubit are:

      @@ -885,13 +885,13 @@
      Documentation Version
      -class sympy.physics.quantum.qubit.IntQubitBra(*args, **kwargs)[source]
      +class sympy.physics.quantum.qubit.IntQubitBra(*args, **kwargs)[source]

      A qubit bra that store integers as binary numbers in qubit values.

      -class sympy.physics.quantum.qubit.Qubit(*args, **kwargs)[source]
      +class sympy.physics.quantum.qubit.Qubit(*args, **kwargs)[source]

      A multi-qubit ket in the computational (z) basis.

      We use the normal convention that the least significant qubit is on the right, so |00001> has a 1 in the least significant qubit.

      @@ -948,7 +948,7 @@
      Documentation Version
      -class sympy.physics.quantum.qubit.QubitBra(*args, **kwargs)[source]
      +class sympy.physics.quantum.qubit.QubitBra(*args, **kwargs)[source]

      A multi-qubit bra in the computational (z) basis.

      We use the normal convention that the least significant qubit is on the right, so |00001> has a 1 in the least significant qubit.

      @@ -971,7 +971,7 @@
      Documentation Version
      -sympy.physics.quantum.qubit.matrix_to_density(mat)[source]
      +sympy.physics.quantum.qubit.matrix_to_density(mat)[source]

      Works by finding the eigenvectors and eigenvalues of the matrix. We know we can decompose rho by doing: sum(EigenVal*|Eigenvect><Eigenvect|)

      @@ -979,7 +979,7 @@
      Documentation Version
      -sympy.physics.quantum.qubit.matrix_to_qubit(matrix)[source]
      +sympy.physics.quantum.qubit.matrix_to_qubit(matrix)[source]

      Convert from the matrix repr. to a sum of Qubit objects.

      Parameters:
      @@ -1003,7 +1003,7 @@
      Documentation Version
      -sympy.physics.quantum.qubit.measure_all(qubit, format='sympy', normalize=True)[source]
      +sympy.physics.quantum.qubit.measure_all(qubit, format='sympy', normalize=True)[source]

      Perform an ensemble measurement of all qubits.

      Parameters:
      @@ -1044,7 +1044,7 @@
      Documentation Version
      -sympy.physics.quantum.qubit.measure_all_oneshot(qubit, format='sympy')[source]
      +sympy.physics.quantum.qubit.measure_all_oneshot(qubit, format='sympy')[source]

      Perform a oneshot ensemble measurement on all qubits.

      A oneshot measurement is equivalent to performing a measurement on a quantum system. This type of measurement does not return the probabilities @@ -1085,7 +1085,7 @@

      Documentation Version
      normalize=True,
      -)[source] +)[source]

      Perform a partial ensemble measure on the specified qubits.

      Parameters:
      @@ -1138,7 +1138,7 @@
      Documentation Version
      format='sympy',
      -)[source] +)[source]

      Perform a partial oneshot measurement on the specified qubits.

      A oneshot measurement is equivalent to performing a measurement on a quantum system. This type of measurement does not return the probabilities @@ -1174,7 +1174,7 @@

      Documentation Version
      -sympy.physics.quantum.qubit.qubit_to_matrix(qubit, format='sympy')[source]
      +sympy.physics.quantum.qubit.qubit_to_matrix(qubit, format='sympy')[source]

      Converts an Add/Mul of Qubit objects into it’s matrix representation

      This function is the inverse of matrix_to_qubit and is a shorthand for represent(qubit).

      diff --git a/dev/modules/physics/quantum/represent.html b/dev/modules/physics/quantum/represent.html index 9138d1f6588..5252c80f3fa 100644 --- a/dev/modules/physics/quantum/represent.html +++ b/dev/modules/physics/quantum/represent.html @@ -811,7 +811,7 @@
      Documentation Version
    -sympy.physics.quantum.represent.enumerate_states(*args, **options)[source]
    +sympy.physics.quantum.represent.enumerate_states(*args, **options)[source]

    Returns instances of the given state with dummy indices appended

    Operates in two different modes:

      @@ -855,7 +855,7 @@
      Documentation Version
      **options,
    -)[source] +)[source]

    Returns a basis state instance corresponding to the basis specified in options=s. If no basis is specified, the function tries to form a default basis state of the given expression.

    @@ -902,7 +902,7 @@
    Documentation Version
    -sympy.physics.quantum.represent.integrate_result(orig_expr, result, **options)[source]
    +sympy.physics.quantum.represent.integrate_result(orig_expr, result, **options)[source]

    Returns the result of integrating over any unities (|x><x|) in the given expression. Intended for integrating over the result of representations in continuous bases.

    @@ -944,7 +944,7 @@
    Documentation Version
    -sympy.physics.quantum.represent.rep_expectation(expr, **options)[source]
    +sympy.physics.quantum.represent.rep_expectation(expr, **options)[source]

    Returns an <x'|A|x> type representation for the given operator.

    Parameters:
    @@ -969,7 +969,7 @@
    Documentation Version
    -sympy.physics.quantum.represent.rep_innerproduct(expr, **options)[source]
    +sympy.physics.quantum.represent.rep_innerproduct(expr, **options)[source]

    Returns an innerproduct like representation (e.g. <x'|x>) for the given state.

    Attempts to calculate inner product with a bra from the specified @@ -997,7 +997,7 @@

    Documentation Version
    -sympy.physics.quantum.represent.represent(expr, **options)[source]
    +sympy.physics.quantum.represent.represent(expr, **options)[source]

    Represent the quantum expression in the given basis.

    In quantum mechanics abstract states and operators can be represented in various basis sets. Under this operation the follow transforms happen:

    diff --git a/dev/modules/physics/quantum/shor.html b/dev/modules/physics/quantum/shor.html index 8bea65170ba..1194afeb1a3 100644 --- a/dev/modules/physics/quantum/shor.html +++ b/dev/modules/physics/quantum/shor.html @@ -812,7 +812,7 @@
    Documentation Version
    -class sympy.physics.quantum.shor.CMod(*args, **kwargs)[source]
    +class sympy.physics.quantum.shor.CMod(*args, **kwargs)[source]

    A controlled mod gate.

    This is black box controlled Mod function for use by shor’s algorithm. TODO: implement a decompose property that returns how to do this in terms @@ -839,7 +839,7 @@

    Documentation Version
    -sympy.physics.quantum.shor.period_find(a, N)[source]
    +sympy.physics.quantum.shor.period_find(a, N)[source]

    Finds the period of a in modulo N arithmetic

    This is quantum part of Shor’s algorithm. It takes two registers, puts first in superposition of states with Hadamards so: |k>|0> @@ -849,7 +849,7 @@

    Documentation Version
    -sympy.physics.quantum.shor.shor(N)[source]
    +sympy.physics.quantum.shor.shor(N)[source]

    This function implements Shor’s factoring algorithm on the Integer N

    The algorithm starts by picking a random number (a) and seeing if it is coprime with N. If it is not, then the gcd of the two numbers is a factor diff --git a/dev/modules/physics/quantum/spin.html b/dev/modules/physics/quantum/spin.html index c3fc794bb9a..667a8432b7d 100644 --- a/dev/modules/physics/quantum/spin.html +++ b/dev/modules/physics/quantum/spin.html @@ -806,13 +806,13 @@

    Documentation Version

    Quantum mechanical angular momemtum.

    -class sympy.physics.quantum.spin.J2Op(*args, **kwargs)[source]
    +class sympy.physics.quantum.spin.J2Op(*args, **kwargs)[source]

    The J^2 operator.

    -class sympy.physics.quantum.spin.JxBra(j, m)[source]
    +class sympy.physics.quantum.spin.JxBra(j, m)[source]

    Eigenbra of Jx.

    See JzKet for the usage of spin eigenstates.

    @@ -826,7 +826,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JxBraCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JxBraCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenbra of Jx.

    See JzKetCoupled for the usage of coupled spin eigenstates.

    @@ -840,7 +840,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JxKet(j, m)[source]
    +class sympy.physics.quantum.spin.JxKet(j, m)[source]

    Eigenket of Jx.

    See JzKet for the usage of spin eigenstates.

    @@ -854,7 +854,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JxKetCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JxKetCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenket of Jx.

    See JzKetCoupled for the usage of coupled spin eigenstates.

    @@ -868,7 +868,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JyBra(j, m)[source]
    +class sympy.physics.quantum.spin.JyBra(j, m)[source]

    Eigenbra of Jy.

    See JzKet for the usage of spin eigenstates.

    @@ -882,7 +882,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JyBraCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JyBraCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenbra of Jy.

    See JzKetCoupled for the usage of coupled spin eigenstates.

    @@ -896,7 +896,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JyKet(j, m)[source]
    +class sympy.physics.quantum.spin.JyKet(j, m)[source]

    Eigenket of Jy.

    See JzKet for the usage of spin eigenstates.

    @@ -910,7 +910,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JyKetCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JyKetCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenket of Jy.

    See JzKetCoupled for the usage of coupled spin eigenstates.

    @@ -924,7 +924,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JzBra(j, m)[source]
    +class sympy.physics.quantum.spin.JzBra(j, m)[source]

    Eigenbra of Jz.

    See the JzKet for the usage of spin eigenstates.

    @@ -938,7 +938,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JzBraCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JzBraCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenbra of Jz.

    See the JzKetCoupled for the usage of coupled spin eigenstates.

    @@ -952,7 +952,7 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JzKet(j, m)[source]
    +class sympy.physics.quantum.spin.JzKet(j, m)[source]

    Eigenket of Jz.

    Spin state which is an eigenstate of the Jz operator. Uncoupled states, that is states representing the interaction of multiple separate spin @@ -1068,7 +1068,7 @@

    Documentation Version
    -class sympy.physics.quantum.spin.JzKetCoupled(j, m, jn, *jcoupling)[source]
    +class sympy.physics.quantum.spin.JzKetCoupled(j, m, jn, *jcoupling)[source]

    Coupled eigenket of Jz

    Spin state that is an eigenket of Jz which represents the coupling of separate spin spaces.

    @@ -1186,13 +1186,13 @@
    Documentation Version
    -class sympy.physics.quantum.spin.JzOp(*args, **kwargs)[source]
    +class sympy.physics.quantum.spin.JzOp(*args, **kwargs)[source]

    The Jz operator.

    -class sympy.physics.quantum.spin.Rotation(*args, **kwargs)[source]
    +class sympy.physics.quantum.spin.Rotation(*args, **kwargs)[source]

    Wigner D operator in terms of Euler angles.

    Defines the rotation operator in terms of the Euler angles defined by the z-y-z convention for a passive transformation. That is the coordinate @@ -1254,7 +1254,7 @@

    Documentation Version
    -classmethod D(j, m, mp, alpha, beta, gamma)[source]
    +classmethod D(j, m, mp, alpha, beta, gamma)[source]

    Wigner D-function.

    Returns an instance of the WignerD class corresponding to the Wigner-D function specified by the parameters.

    @@ -1307,7 +1307,7 @@
    Documentation Version
    -classmethod d(j, m, mp, beta)[source]
    +classmethod d(j, m, mp, beta)[source]

    Wigner small-d function.

    Returns an instance of the WignerD class corresponding to the Wigner-D function specified by the parameters with the alpha and gamma angles @@ -1355,7 +1355,7 @@

    Documentation Version
    -class sympy.physics.quantum.spin.WignerD(*args, **hints)[source]
    +class sympy.physics.quantum.spin.WignerD(*args, **hints)[source]

    Wigner-D function

    The Wigner D-function gives the matrix elements of the rotation operator in the jm-representation. For the Euler angles \(\alpha\), @@ -1448,7 +1448,7 @@

    Documentation Version
    -sympy.physics.quantum.spin.couple(expr, jcoupling_list=None)[source]
    +sympy.physics.quantum.spin.couple(expr, jcoupling_list=None)[source]

    Couple a tensor product of spin states

    This function can be used to couple an uncoupled tensor product of spin states. All of the eigenstates to be coupled must be of the same class. It @@ -1507,7 +1507,7 @@

    Documentation Version
    -sympy.physics.quantum.spin.uncouple(expr, jn=None, jcoupling_list=None)[source]
    +sympy.physics.quantum.spin.uncouple(expr, jn=None, jcoupling_list=None)[source]

    Uncouple a coupled spin state

    Gives the uncoupled representation of a coupled spin state. Arguments must be either a spin state that is a subclass of CoupledSpinState or a spin diff --git a/dev/modules/physics/quantum/state.html b/dev/modules/physics/quantum/state.html index 92f7ecaf0b2..ddaf43cb174 100644 --- a/dev/modules/physics/quantum/state.html +++ b/dev/modules/physics/quantum/state.html @@ -806,7 +806,7 @@

    Documentation Version

    Dirac notation for states.

    -class sympy.physics.quantum.state.Bra(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.Bra(*args, **kwargs)[source]

    A general time-independent Bra in quantum mechanics.

    Inherits from State and BraBase. A Bra is the dual of a Ket [R777]. This class and its subclasses will be the main classes that users will use for @@ -866,7 +866,7 @@

    Documentation Version
    -class sympy.physics.quantum.state.BraBase(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.BraBase(*args, **kwargs)[source]

    Base class for Bras.

    This class defines the dual property and the brackets for printing. This is an abstract base class and you should not instantiate it directly, @@ -875,7 +875,7 @@

    Documentation Version
    -class sympy.physics.quantum.state.Ket(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.Ket(*args, **kwargs)[source]

    A general time-independent Ket in quantum mechanics.

    Inherits from State and KetBase. This class should be used as the base class for all physical, time-independent Kets in a system. This class @@ -939,7 +939,7 @@

    Documentation Version
    -class sympy.physics.quantum.state.KetBase(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.KetBase(*args, **kwargs)[source]

    Base class for Kets.

    This class defines the dual property and the brackets for printing. This is an abstract base class and you should not instantiate it directly, instead @@ -948,13 +948,13 @@

    Documentation Version
    -class sympy.physics.quantum.state.OrthogonalBra(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.OrthogonalBra(*args, **kwargs)[source]

    Orthogonal Bra in quantum mechanics.

    -class sympy.physics.quantum.state.OrthogonalKet(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.OrthogonalKet(*args, **kwargs)[source]

    Orthogonal Ket in quantum mechanics.

    The inner product of two states with different labels will give zero, states with the same label will give one.

    @@ -972,19 +972,19 @@
    Documentation Version
    -class sympy.physics.quantum.state.OrthogonalState(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.OrthogonalState(*args, **kwargs)[source]

    General abstract quantum state used as a base class for Ket and Bra.

    -class sympy.physics.quantum.state.State(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.State(*args, **kwargs)[source]

    General abstract quantum state used as a base class for Ket and Bra.

    -class sympy.physics.quantum.state.StateBase(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.StateBase(*args, **kwargs)[source]

    Abstract base class for general abstract states in quantum mechanics.

    All other state classes defined will need to inherit from this class. It carries the basic structure for all other states such as dual, _eval_adjoint @@ -999,7 +999,7 @@

    Documentation Version
    -classmethod dual_class()[source]
    +classmethod dual_class()[source]

    Return the class used to construct the dual.

    @@ -1013,7 +1013,7 @@
    Documentation Version
    -class sympy.physics.quantum.state.TimeDepBra(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.TimeDepBra(*args, **kwargs)[source]

    General time-dependent Bra in quantum mechanics.

    This inherits from TimeDepState and BraBase and is the main class that should be used for Bras that vary with time. Its dual is a TimeDepBra.

    @@ -1046,7 +1046,7 @@
    Documentation Version
    -class sympy.physics.quantum.state.TimeDepKet(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.TimeDepKet(*args, **kwargs)[source]

    General time-dependent Ket in quantum mechanics.

    This inherits from TimeDepState and KetBase and is the main class that should be used for Kets that vary with time. Its dual is a @@ -1086,7 +1086,7 @@

    Documentation Version
    -class sympy.physics.quantum.state.TimeDepState(*args, **kwargs)[source]
    +class sympy.physics.quantum.state.TimeDepState(*args, **kwargs)[source]

    Base class for a general time-dependent quantum state.

    This class is used as a base class for any time-dependent state. The main difference between this class and the time-independent state is that this @@ -1118,7 +1118,7 @@

    Documentation Version
    -class sympy.physics.quantum.state.Wavefunction(*args)[source]
    +class sympy.physics.quantum.state.Wavefunction(*args)[source]

    Class for representations in continuous bases

    This class takes an expression and coordinates in its constructor. It can be used to easily calculate normalizations and probabilities.

    @@ -1288,7 +1288,7 @@
    Documentation Version
    -normalize()[source]
    +normalize()[source]

    Return a normalized version of the Wavefunction

    Examples

    >>> from sympy import symbols, pi
    @@ -1307,7 +1307,7 @@ 
    Documentation Version
    -prob()[source]
    +prob()[source]

    Return the absolute magnitude of the w.f., \(|\psi(x)|^2\)

    Examples

    >>> from sympy import symbols, pi
    diff --git a/dev/modules/physics/quantum/tensorproduct.html b/dev/modules/physics/quantum/tensorproduct.html
    index cb6722de3a5..a9c7c776e08 100644
    --- a/dev/modules/physics/quantum/tensorproduct.html
    +++ b/dev/modules/physics/quantum/tensorproduct.html
    @@ -806,7 +806,7 @@ 
    Documentation Version

    Abstract tensor product.

    -class sympy.physics.quantum.tensorproduct.TensorProduct(*args)[source]
    +class sympy.physics.quantum.tensorproduct.TensorProduct(*args)[source]

    The tensor product of two or more arguments.

    For matrices, this uses matrix_tensor_product to compute the Kronecker or tensor product matrix. For other objects a symbolic TensorProduct @@ -881,7 +881,7 @@

    Documentation Version
    -sympy.physics.quantum.tensorproduct.tensor_product_simp(e, **hints)[source]
    +sympy.physics.quantum.tensorproduct.tensor_product_simp(e, **hints)[source]

    Try to simplify and combine tensor products.

    Deprecated since version 1.14.: The transformations applied by this function are not done automatically diff --git a/dev/modules/physics/secondquant.html b/dev/modules/physics/secondquant.html index 7633bd97cc8..d87a4e32bd9 100644 --- a/dev/modules/physics/secondquant.html +++ b/dev/modules/physics/secondquant.html @@ -808,7 +808,7 @@

    Documentation Version
    of Many-Particle Systems.”

    -class sympy.physics.secondquant.AnnihilateBoson(k)[source]
    +class sympy.physics.secondquant.AnnihilateBoson(k)[source]

    Bosonic annihilation operator.

    Examples

    >>> from sympy.physics.secondquant import B
    @@ -819,7 +819,7 @@ 
    Documentation Version
    -apply_operator(state)[source]
    +apply_operator(state)[source]

    Apply state to self if self is not symbolic and state is a FockStateKet, else multiply self by state.

    Examples

    @@ -837,11 +837,11 @@
    Documentation Version
    -class sympy.physics.secondquant.AnnihilateFermion(k)[source]
    +class sympy.physics.secondquant.AnnihilateFermion(k)[source]

    Fermionic annihilation operator.

    -apply_operator(state)[source]
    +apply_operator(state)[source]

    Apply state to self if self is not symbolic and state is a FockStateKet, else multiply self by state.

    Examples

    @@ -949,7 +949,7 @@
    Documentation Version
    -class sympy.physics.secondquant.AntiSymmetricTensor(symbol, upper, lower)[source]
    +class sympy.physics.secondquant.AntiSymmetricTensor(symbol, upper, lower)[source]

    Stores upper and lower indices in separate Tuple’s.

    Each group of indices is assumed to be antisymmetric.

    Examples

    @@ -1019,37 +1019,37 @@
    Documentation Version
    -sympy.physics.secondquant.B[source]
    +sympy.physics.secondquant.B[source]

    alias of AnnihilateBoson

    -sympy.physics.secondquant.BBra[source]
    +sympy.physics.secondquant.BBra[source]

    alias of FockStateBosonBra

    -sympy.physics.secondquant.BKet[source]
    +sympy.physics.secondquant.BKet[source]

    alias of FockStateBosonKet

    -sympy.physics.secondquant.Bd[source]
    +sympy.physics.secondquant.Bd[source]

    alias of CreateBoson

    -class sympy.physics.secondquant.BosonicBasis[source]
    +class sympy.physics.secondquant.BosonicBasis[source]

    Base class for a basis set of bosonic Fock states.

    -class sympy.physics.secondquant.Commutator(a, b)[source]
    +class sympy.physics.secondquant.Commutator(a, b)[source]

    The Commutator: [A, B] = A*B - B*A

    The arguments are ordered according to .__cmp__()

    Examples

    @@ -1090,7 +1090,7 @@
    Documentation Version
    -doit(**hints)[source]
    +doit(**hints)[source]

    Enables the computation of complex expressions.

    Examples

    >>> from sympy.physics.secondquant import Commutator, F, Fd
    @@ -1106,7 +1106,7 @@ 
    Documentation Version
    -classmethod eval(a, b)[source]
    +classmethod eval(a, b)[source]

    The Commutator [A,B] is on canonical form if A < B.

    Examples

    >>> from sympy.physics.secondquant import Commutator, F, Fd
    @@ -1123,11 +1123,11 @@ 
    Documentation Version
    -class sympy.physics.secondquant.CreateBoson(k)[source]
    +class sympy.physics.secondquant.CreateBoson(k)[source]

    Bosonic creation operator.

    -apply_operator(state)[source]
    +apply_operator(state)[source]

    Apply state to self if self is not symbolic and state is a FockStateKet, else multiply self by state.

    Examples

    @@ -1145,11 +1145,11 @@
    Documentation Version
    -class sympy.physics.secondquant.CreateFermion(k)[source]
    +class sympy.physics.secondquant.CreateFermion(k)[source]

    Fermionic creation operator.

    -apply_operator(state)[source]
    +apply_operator(state)[source]

    Apply state to self if self is not symbolic and state is a FockStateKet, else multiply self by state.

    Examples

    @@ -1257,7 +1257,7 @@
    Documentation Version
    -class sympy.physics.secondquant.Dagger(arg)[source]
    +class sympy.physics.secondquant.Dagger(arg)[source]

    Hermitian conjugate of creation/annihilation operators.

    Examples

    >>> from sympy import I
    @@ -1272,7 +1272,7 @@ 
    Documentation Version
    -classmethod eval(arg)[source]
    +classmethod eval(arg)[source]

    Evaluates the Dagger instance.

    Examples

    >>> from sympy import I
    @@ -1292,31 +1292,31 @@ 
    Documentation Version
    -sympy.physics.secondquant.F[source]
    +sympy.physics.secondquant.F[source]

    alias of AnnihilateFermion

    -sympy.physics.secondquant.FBra[source]
    +sympy.physics.secondquant.FBra[source]

    alias of FockStateFermionBra

    -sympy.physics.secondquant.FKet[source]
    +sympy.physics.secondquant.FKet[source]

    alias of FockStateFermionKet

    -sympy.physics.secondquant.Fd[source]
    +sympy.physics.secondquant.Fd[source]

    alias of CreateFermion

    -class sympy.physics.secondquant.FixedBosonicBasis(n_particles, n_levels)[source]
    +class sympy.physics.secondquant.FixedBosonicBasis(n_particles, n_levels)[source]

    Fixed particle number basis set.

    Examples

    >>> from sympy.physics.secondquant import FixedBosonicBasis
    @@ -1332,7 +1332,7 @@ 
    Documentation Version
    -index(state)[source]
    +index(state)[source]

    Returns the index of state in basis.

    Examples

    >>> from sympy.physics.secondquant import FixedBosonicBasis
    @@ -1345,7 +1345,7 @@ 
    Documentation Version
    -state(i)[source]
    +state(i)[source]

    Returns the state that lies at index i of the basis

    Examples

    >>> from sympy.physics.secondquant import FixedBosonicBasis
    @@ -1360,7 +1360,7 @@ 
    Documentation Version
    -class sympy.physics.secondquant.FockState(occupations)[source]
    +class sympy.physics.secondquant.FockState(occupations)[source]

    Many particle Fock state with a sequence of occupation numbers.

    Anywhere you can have a FockState, you can also have S.Zero. All code must check for this!

    @@ -1369,7 +1369,7 @@
    Documentation Version
    -class sympy.physics.secondquant.FockStateBosonBra(occupations)[source]
    +class sympy.physics.secondquant.FockStateBosonBra(occupations)[source]

    Describes a collection of BosonBra particles.

    Examples

    >>> from sympy.physics.secondquant import BBra
    @@ -1381,7 +1381,7 @@ 
    Documentation Version
    -class sympy.physics.secondquant.FockStateBosonKet(occupations)[source]
    +class sympy.physics.secondquant.FockStateBosonKet(occupations)[source]

    Many particle Fock state with a sequence of occupation numbers.

    Occupation numbers can be any integer >= 0.

    Examples

    @@ -1394,13 +1394,13 @@
    Documentation Version
    -class sympy.physics.secondquant.FockStateBra(occupations)[source]
    +class sympy.physics.secondquant.FockStateBra(occupations)[source]

    Representation of a bra.

    -class sympy.physics.secondquant.FockStateFermionBra(occupations, fermi_level=0)[source]
    +class sympy.physics.secondquant.FockStateFermionBra(occupations, fermi_level=0)[source]

    Examples

    >>> from sympy.physics.secondquant import FBra
     >>> FBra([1, 2])
    @@ -1415,7 +1415,7 @@ 
    Documentation Version
    -class sympy.physics.secondquant.FockStateFermionKet(occupations, fermi_level=0)[source]
    +class sympy.physics.secondquant.FockStateFermionKet(occupations, fermi_level=0)[source]

    Many-particle Fock state with a sequence of occupied orbits.

    Explanation

    Each state can only have one particle, so we choose to store a list of @@ -1434,13 +1434,13 @@

    Documentation Version
    -class sympy.physics.secondquant.FockStateKet(occupations)[source]
    +class sympy.physics.secondquant.FockStateKet(occupations)[source]

    Representation of a ket.

    -class sympy.physics.secondquant.InnerProduct(bra, ket)[source]
    +class sympy.physics.secondquant.InnerProduct(bra, ket)[source]

    An unevaluated inner product between a bra and ket.

    Explanation

    Currently this class just reduces things to a product of @@ -1463,7 +1463,7 @@

    Documentation Version
    -class sympy.physics.secondquant.KroneckerDelta(i, j, delta_range=None)[source]
    +class sympy.physics.secondquant.KroneckerDelta(i, j, delta_range=None)[source]

    The discrete, or Kronecker, delta function.

    Parameters:
    @@ -1514,7 +1514,7 @@
    Documentation Version
    -classmethod eval(i, j, delta_range=None)[source]
    +classmethod eval(i, j, delta_range=None)[source]

    Evaluates the discrete delta function.

    Examples

    >>> from sympy import KroneckerDelta
    @@ -1711,7 +1711,7 @@ 
    Documentation Version
    -class sympy.physics.secondquant.NO(arg)[source]
    +class sympy.physics.secondquant.NO(arg)[source]

    This Object is used to represent normal ordering brackets.

    i.e. {abcd} sometimes written :abcd:

    Explanation

    @@ -1736,7 +1736,7 @@
    Documentation Version
    Nothing more, nothing less.

    -doit(**hints)[source]
    +doit(**hints)[source]

    Either removes the brackets or enables complex computations in its arguments.

    Examples

    @@ -1757,7 +1757,7 @@
    Documentation Version
    -get_subNO(i)[source]
    +get_subNO(i)[source]

    Returns a NO() without FermionicOperator at index i.

    Examples

    >>> from sympy import symbols
    @@ -1817,7 +1817,7 @@ 
    Documentation Version
    -iter_q_annihilators()[source]
    +iter_q_annihilators()[source]

    Iterates over the annihilation operators.

    Examples

    >>> from sympy import symbols
    @@ -1839,7 +1839,7 @@ 
    Documentation Version
    -iter_q_creators()[source]
    +iter_q_creators()[source]

    Iterates over the creation operators.

    Examples

    >>> from sympy import symbols
    @@ -1863,12 +1863,12 @@ 
    Documentation Version
    -class sympy.physics.secondquant.PermutationOperator(i, j)[source]
    +class sympy.physics.secondquant.PermutationOperator(i, j)[source]

    Represents the index permutation operator P(ij).

    P(ij)*f(i)*g(j) = f(i)*g(j) - f(j)*g(i)

    -get_permuted(expr)[source]
    +get_permuted(expr)[source]

    Returns -expr with permuted indices.

    Explanation

    >>> from sympy import symbols, Function
    @@ -1885,7 +1885,7 @@ 
    Documentation Version
    -class sympy.physics.secondquant.VarBosonicBasis(n_max)[source]
    +class sympy.physics.secondquant.VarBosonicBasis(n_max)[source]

    A single state, variable particle number basis set.

    Examples

    >>> from sympy.physics.secondquant import VarBosonicBasis
    @@ -1897,7 +1897,7 @@ 
    Documentation Version
    -index(state)[source]
    +index(state)[source]

    Returns the index of state in basis.

    Examples

    >>> from sympy.physics.secondquant import VarBosonicBasis
    @@ -1915,7 +1915,7 @@ 
    Documentation Version
    -state(i)[source]
    +state(i)[source]

    The state of a single basis.

    Examples

    >>> from sympy.physics.secondquant import VarBosonicBasis
    @@ -1930,7 +1930,7 @@ 
    Documentation Version
    -sympy.physics.secondquant.apply_operators(e)[source]
    +sympy.physics.secondquant.apply_operators(e)[source]

    Take a SymPy expression with operators and states and apply the operators.

    Examples

    >>> from sympy.physics.secondquant import apply_operators
    @@ -1943,7 +1943,7 @@ 
    Documentation Version
    -sympy.physics.secondquant.contraction(a, b)[source]
    +sympy.physics.secondquant.contraction(a, b)[source]

    Calculates contraction of Fermionic operators a and b.

    Examples

    >>> from sympy import symbols
    @@ -1980,7 +1980,7 @@ 
    Documentation Version
    -sympy.physics.secondquant.evaluate_deltas(e)[source]
    +sympy.physics.secondquant.evaluate_deltas(e)[source]

    We evaluate KroneckerDelta symbols in the expression assuming Einstein summation.

    Explanation

    If one index is repeated it is summed over and in effect substituted with @@ -2040,7 +2040,7 @@

    Documentation Version
    -sympy.physics.secondquant.matrix_rep(op, basis)[source]
    +sympy.physics.secondquant.matrix_rep(op, basis)[source]

    Find the representation of an operator in a basis.

    Examples

    >>> from sympy.physics.secondquant import VarBosonicBasis, B, matrix_rep
    @@ -2066,7 +2066,7 @@ 
    Documentation Version
    permutation_operators,
    -)[source] +)[source]

    Performs simplification by introducing PermutationOperators where appropriate.

    Explanation

    @@ -2109,7 +2109,7 @@
    Documentation Version
    pretty_indices={},
    -)[source] +)[source]

    Collect terms by substitution of dummy variables.

    Explanation

    This routine allows simplification of Add expressions containing terms @@ -2168,7 +2168,7 @@

    Documentation Version
    -sympy.physics.secondquant.wicks(e, **kw_args)[source]
    +sympy.physics.secondquant.wicks(e, **kw_args)[source]

    Returns the normal ordered equivalent of an expression using Wicks Theorem.

    Examples

    >>> from sympy import symbols, Dummy
    diff --git a/dev/modules/physics/sho.html b/dev/modules/physics/sho.html
    index c0082ce813a..2b6fc51743f 100644
    --- a/dev/modules/physics/sho.html
    +++ b/dev/modules/physics/sho.html
    @@ -805,7 +805,7 @@ 
    Documentation Version

    Quantum Harmonic Oscillator in 3-D

    -sympy.physics.sho.E_nl(n, l, hw)[source]
    +sympy.physics.sho.E_nl(n, l, hw)[source]

    Returns the Energy of an isotropic harmonic oscillator.

    Parameters:
    @@ -841,7 +841,7 @@
    Documentation Version
    -sympy.physics.sho.R_nl(n, l, nu, r)[source]
    +sympy.physics.sho.R_nl(n, l, nu, r)[source]

    Returns the radial wavefunction R_{nl} for a 3d isotropic harmonic oscillator.

    diff --git a/dev/modules/physics/units/dimensions.html b/dev/modules/physics/units/dimensions.html index ab5aa95cbf5..76cef42342f 100644 --- a/dev/modules/physics/units/dimensions.html +++ b/dev/modules/physics/units/dimensions.html @@ -812,7 +812,7 @@
    Documentation Version
    question of adding time to length has no meaning.

    -class sympy.physics.units.dimensions.Dimension(name, symbol=None)[source]
    +class sympy.physics.units.dimensions.Dimension(name, symbol=None)[source]

    This class represent the dimension of a physical quantities.

    The Dimension constructor takes as parameters a name and an optional symbol.

    @@ -853,7 +853,7 @@
    Documentation Version
    -has_integer_powers(dim_sys)[source]
    +has_integer_powers(dim_sys)[source]

    Check if the dimension object has only integer powers.

    All the dimension powers should be integers, but rational powers may appear in intermediate steps. This method may be used to check that the @@ -872,7 +872,7 @@

    Documentation Version
    dimensional_dependencies={},
    -)[source] +)[source]

    DimensionSystem represents a coherent set of dimensions.

    The constructor takes three parameters:

      @@ -905,7 +905,7 @@
      Documentation Version
      -dim_can_vector(dim)[source]
      +dim_can_vector(dim)[source]

      Useless method, kept for compatibility with previous versions.

      DO NOT USE.

      Dimensional representation in terms of the canonical base dimensions.

      @@ -913,7 +913,7 @@
      Documentation Version
      -dim_vector(dim)[source]
      +dim_vector(dim)[source]

      Useless method, kept for compatibility with previous versions.

      DO NOT USE.

      Vector representation in terms of the base dimensions.

      @@ -944,7 +944,7 @@
      Documentation Version
      -is_dimensionless(dimension)[source]
      +is_dimensionless(dimension)[source]

      Check if the dimension object really has a dimension.

      A dimension should have at least one component with non-zero power.

      @@ -959,7 +959,7 @@
      Documentation Version
      -print_dim_base(dim)[source]
      +print_dim_base(dim)[source]

      Give the string expression of a dimension in term of the basis symbols.

      diff --git a/dev/modules/physics/units/prefixes.html b/dev/modules/physics/units/prefixes.html index 4a6e5598bf2..5e8bc802339 100644 --- a/dev/modules/physics/units/prefixes.html +++ b/dev/modules/physics/units/prefixes.html @@ -818,7 +818,7 @@
      Documentation Version
      latex_repr=None,
      -)[source] +)[source]

      This class represent prefixes, with their name, symbol and factor.

      Prefixes are used to create derived units from a given unit. They should always be encapsulated into units.

      diff --git a/dev/modules/physics/units/quantities.html b/dev/modules/physics/units/quantities.html index 927cad83288..1b8a4c7e3a8 100644 --- a/dev/modules/physics/units/quantities.html +++ b/dev/modules/physics/units/quantities.html @@ -819,7 +819,7 @@
      Documentation Version
      **assumptions,
      -)[source] +)[source]

      Physical quantity: can be a unit of measure, a constant or a generic quantity.

      @@ -830,7 +830,7 @@
      Documentation Version
      -convert_to(other, unit_system='SI')[source]
      +convert_to(other, unit_system='SI')[source]

      Convert the quantity to another quantity of same dimensions.

      Examples

      >>> from sympy.physics.units import speed_of_light, meter, second
      @@ -874,7 +874,7 @@ 
      Documentation Version
      reference_quantity,
      -)[source] +)[source]

      Setting a scale factor that is valid across all unit system.

    @@ -885,7 +885,7 @@
    Documentation Version

    Several methods to simplify expressions involving unit objects.

    -sympy.physics.units.util.convert_to(expr, target_units, unit_system='SI')[source]
    +sympy.physics.units.util.convert_to(expr, target_units, unit_system='SI')[source]

    Convert expr to the same expression with all of its units and quantities represented as factors of target_units, whenever the dimension is compatible.

    target_units may be a single unit/quantity, or a collection of diff --git a/dev/modules/physics/units/unitsystem.html b/dev/modules/physics/units/unitsystem.html index 184e189a439..42b11c0bf0c 100644 --- a/dev/modules/physics/units/unitsystem.html +++ b/dev/modules/physics/units/unitsystem.html @@ -817,7 +817,7 @@

    Documentation Version
    derived_units: Dict[Dimension, Quantity] = {},
    -)[source] +)[source]

    UnitSystem represents a coherent set of units.

    A unit system is basically a dimension system with notions of scales. Many of the methods are defined in the same way.

    @@ -842,7 +842,7 @@
    Documentation Version
    derived_units: Dict[Dimension, Quantity] = {},
    -)[source] +)[source]

    Extend the current system into a new one.

    Take the base and normal units of the current system to merge them to the base and normal units given in argument. @@ -851,7 +851,7 @@

    Documentation Version
    -get_units_non_prefixed() Set[Quantity][source]
    +get_units_non_prefixed() Set[Quantity][source]

    Return the units of the system that do not have a prefix.

    diff --git a/dev/modules/physics/vector/api/classes.html b/dev/modules/physics/vector/api/classes.html index d59433af01f..c1d29ef6d8c 100644 --- a/dev/modules/physics/vector/api/classes.html +++ b/dev/modules/physics/vector/api/classes.html @@ -805,7 +805,7 @@
    Documentation Version

    Essential Classes

    -class sympy.physics.vector.frame.CoordinateSym(name, frame, index)[source]
    +class sympy.physics.vector.frame.CoordinateSym(name, frame, index)[source]

    A coordinate symbol/base scalar associated wrt a Reference Frame.

    Ideally, users should not instantiate this class. Instances of this class must only be accessed through the corresponding frame @@ -853,7 +853,7 @@

    Essential Classesvariables=None,

    -)[source] +)[source]

    A reference frame in classical mechanics.

    ReferenceFrame is a class used to represent a reference frame in classical mechanics. It has a standard basis of three unit vectors in the frame’s @@ -864,7 +864,7 @@

    Essential Classes
    -ang_acc_in(otherframe)[source]
    +ang_acc_in(otherframe)[source]

    Returns the angular acceleration Vector of the ReferenceFrame.

    Effectively returns the Vector:

    N_alpha_B

    @@ -892,7 +892,7 @@

    Essential Classes
    -ang_vel_in(otherframe)[source]
    +ang_vel_in(otherframe)[source]

    Returns the angular velocity Vector of the ReferenceFrame.

    Effectively returns the Vector:

    ^N omega ^B

    @@ -920,7 +920,7 @@

    Essential Classes
    -dcm(otherframe)[source]
    +dcm(otherframe)[source]

    Returns the direction cosine matrix of this reference frame relative to the provided reference frame.

    The returned matrix can be used to express the orthogonal unit vectors @@ -997,7 +997,7 @@

    Essential Classesrot_order='',

    -)[source] +)[source]

    Sets the orientation of this reference frame relative to another (parent) reference frame.

    @@ -1060,7 +1060,7 @@

    Essential Classes
    -orient_axis(parent, axis, angle)[source]
    +orient_axis(parent, axis, angle)[source]

    Sets the orientation of this reference frame with respect to a parent reference frame by rotating through an angle about an axis fixed in the parent reference frame.

    @@ -1134,7 +1134,7 @@

    Essential Classesrotation_order,

    -)[source] +)[source]

    Rotates this reference frame relative to the parent reference frame by right hand rotating through three successive body fixed simple axis rotations. Each subsequent axis of rotation is about the “body fixed” @@ -1219,7 +1219,7 @@

    Essential Classes
    -orient_dcm(parent, dcm)[source]
    +orient_dcm(parent, dcm)[source]

    Sets the orientation of this reference frame relative to another (parent) reference frame using a direction cosine matrix that describes the rotation from the child to the parent.

    @@ -1278,7 +1278,7 @@

    Essential Classes
    -orient_quaternion(parent, numbers)[source]
    +orient_quaternion(parent, numbers)[source]

    Sets the orientation of this reference frame relative to a parent reference frame via an orientation quaternion. An orientation quaternion is defined as a finite rotation a unit vector, (lambda_x, @@ -1342,7 +1342,7 @@

    Essential Classesrotation_order,

    -)[source] +)[source]

    Rotates this reference frame relative to the parent reference frame by right hand rotating through three successive space fixed simple axis rotations. Each subsequent axis of rotation is about the “space fixed” @@ -1442,7 +1442,7 @@

    Essential Classeslatexs=None,

    -)[source] +)[source]

    Returns a new reference frame oriented with respect to this reference frame.

    See ReferenceFrame.orient() for detailed examples of how to orient @@ -1541,7 +1541,7 @@

    Essential Classes*gen_speeds,

    -)[source] +)[source]

    Returns the partial angular velocities of this frame in the given frame with respect to one or more provided generalized speeds.

    @@ -1579,7 +1579,7 @@

    Essential Classes
    -set_ang_acc(otherframe, value)[source]
    +set_ang_acc(otherframe, value)[source]

    Define the angular acceleration Vector in a ReferenceFrame.

    Defines the angular acceleration of this ReferenceFrame, in another. Angular acceleration can be defined with respect to multiple different @@ -1611,7 +1611,7 @@

    Essential Classes
    -set_ang_vel(otherframe, value)[source]
    +set_ang_vel(otherframe, value)[source]

    Define the angular velocity vector in a ReferenceFrame.

    Defines the angular velocity of this ReferenceFrame, in another. Angular velocity can be defined with respect to multiple different @@ -1649,7 +1649,7 @@

    Essential Classes
    -variable_map(otherframe)[source]
    +variable_map(otherframe)[source]

    Returns a dictionary which expresses the coordinate variables of this frame in terms of the variables of otherframe.

    If Vector.simp is True, returns a simplified version of the mapped @@ -1750,7 +1750,7 @@

    Essential Classes
    -class sympy.physics.vector.vector.Vector(inlist)[source]
    +class sympy.physics.vector.vector.Vector(inlist)[source]

    The class used to define vectors.

    It along with ReferenceFrame are the building blocks of describing a classical mechanics system in PyDy and sympy.physics.vector.

    @@ -1766,7 +1766,7 @@

    Essential Classes
    -angle_between(vec)[source]
    +angle_between(vec)[source]

    Returns the smallest angle between Vector ‘vec’ and self.

    Warning

    @@ -1797,13 +1797,13 @@

    Essential Classes
    -applyfunc(f)[source]
    +applyfunc(f)[source]

    Apply a function to each component of a vector.

    -cross(other)[source]
    +cross(other)[source]

    The cross product operator for two Vectors.

    Returns a Vector, expressed in the same ReferenceFrames as self.

    @@ -1833,7 +1833,7 @@

    Essential Classes
    -diff(var, frame, var_in_dcm=True)[source]
    +diff(var, frame, var_in_dcm=True)[source]

    Returns the partial derivative of the vector with respect to a variable in the provided reference frame.

    @@ -1881,13 +1881,13 @@

    Essential Classes
    -doit(**hints)[source]
    +doit(**hints)[source]

    Calls .doit() on each term in the Vector

    -dot(other)[source]
    +dot(other)[source]

    Dot product of two vectors.

    Returns a scalar, the dot product of the two Vectors

    @@ -1916,7 +1916,7 @@

    Essential Classes
    -dt(otherframe)[source]
    +dt(otherframe)[source]

    Returns a Vector which is the time derivative of the self Vector, taken in frame otherframe.

    Calls the global time_derivative method

    @@ -1932,7 +1932,7 @@

    Essential Classes
    -express(otherframe, variables=False)[source]
    +express(otherframe, variables=False)[source]

    Returns a Vector equivalent to this one, expressed in otherframe. Uses the global express method.

    @@ -1963,7 +1963,7 @@

    Essential Classes
    -free_dynamicsymbols(reference_frame)[source]
    +free_dynamicsymbols(reference_frame)[source]

    Returns the free dynamic symbols (functions of time t) in the measure numbers of the vector expressed in the given reference frame.

    @@ -1986,7 +1986,7 @@

    Essential Classes
    -free_symbols(reference_frame)[source]
    +free_symbols(reference_frame)[source]

    Returns the free symbols in the measure numbers of the vector expressed in the given reference frame.

    @@ -2015,7 +2015,7 @@

    Essential Classes
    -magnitude()[source]
    +magnitude()[source]

    Returns the magnitude (Euclidean norm) of self.

    Warning

    @@ -2028,13 +2028,13 @@

    Essential Classes
    -normalize()[source]
    +normalize()[source]

    Returns a Vector of magnitude 1, codirectional with self.

    -outer(other)[source]
    +outer(other)[source]

    Outer product between two Vectors.

    A rank increasing operation, which returns a Dyadic from two Vectors

    @@ -2056,7 +2056,7 @@

    Essential Classes
    -separate()[source]
    +separate()[source]

    The constituents of this vector in different reference frames, as per its definition.

    Returns a dict mapping each ReferenceFrame to the corresponding @@ -2074,13 +2074,13 @@

    Essential Classes
    -simplify()[source]
    +simplify()[source]

    Returns a simplified Vector.

    -subs(*args, **kwargs)[source]
    +subs(*args, **kwargs)[source]

    Substitution on the Vector.

    Examples

    >>> from sympy.physics.vector import ReferenceFrame
    @@ -2096,7 +2096,7 @@ 

    Essential Classes
    -to_matrix(reference_frame)[source]
    +to_matrix(reference_frame)[source]

    Returns the matrix form of the vector with respect to the given frame.

    @@ -2137,7 +2137,7 @@

    Essential Classes
    -xreplace(rule)[source]
    +xreplace(rule)[source]

    Replace occurrences of objects within the measure numbers of the vector.

    @@ -2179,7 +2179,7 @@

    Essential Classes
    -class sympy.physics.vector.dyadic.Dyadic(inlist)[source]
    +class sympy.physics.vector.dyadic.Dyadic(inlist)[source]

    A Dyadic object.

    See: https://en.wikipedia.org/wiki/Dyadic_tensor @@ -2189,13 +2189,13 @@

    Essential Classes
    -applyfunc(f)[source]
    +applyfunc(f)[source]

    Apply a function to each component of a Dyadic.

    -cross(other)[source]
    +cross(other)[source]

    Returns the dyadic resulting from the dyadic vector cross product: Dyadic x Vector.

    @@ -2218,13 +2218,13 @@

    Essential Classes
    -doit(**hints)[source]
    +doit(**hints)[source]

    Calls .doit() on each term in the Dyadic

    -dot(other)[source]
    +dot(other)[source]

    The inner product operator for a Dyadic and a Dyadic or Vector.

    Parameters:
    @@ -2249,7 +2249,7 @@

    Essential Classes
    -dt(frame)[source]
    +dt(frame)[source]

    Take the time derivative of this Dyadic in a frame.

    This function calls the global time_derivative method

    @@ -2276,7 +2276,7 @@

    Essential Classes
    -express(frame1, frame2=None)[source]
    +express(frame1, frame2=None)[source]

    Expresses this Dyadic in alternate frame(s)

    The first frame is the list side expression, the second frame is the right side; if Dyadic is in form A.x|B.y, you can express it in two @@ -2317,13 +2317,13 @@

    Essential Classes
    -simplify()[source]
    +simplify()[source]

    Returns a simplified Dyadic.

    -subs(*args, **kwargs)[source]
    +subs(*args, **kwargs)[source]

    Substitution on the Dyadic.

    Examples

    >>> from sympy.physics.vector import ReferenceFrame
    @@ -2346,7 +2346,7 @@ 

    Essential Classessecond_reference_frame=None,

    -)[source] +)[source]

    Returns the matrix form of the dyadic with respect to one or two reference frames.

    @@ -2395,7 +2395,7 @@

    Essential Classes
    -xreplace(rule)[source]
    +xreplace(rule)[source]

    Replace occurrences of objects within the measure numbers of the Dyadic.

    diff --git a/dev/modules/physics/vector/api/fieldfunctions.html b/dev/modules/physics/vector/api/fieldfunctions.html index a62be46fa70..a211a40c672 100644 --- a/dev/modules/physics/vector/api/fieldfunctions.html +++ b/dev/modules/physics/vector/api/fieldfunctions.html @@ -809,7 +809,7 @@

    Field operation functions
    -sympy.physics.vector.fieldfunctions.curl(vect, frame)[source]
    +sympy.physics.vector.fieldfunctions.curl(vect, frame)[source]

    Returns the curl of a vector field computed wrt the coordinate symbols of the given frame.

    @@ -840,7 +840,7 @@

    Field operation functions
    -sympy.physics.vector.fieldfunctions.divergence(vect, frame)[source]
    +sympy.physics.vector.fieldfunctions.divergence(vect, frame)[source]

    Returns the divergence of a vector field computed wrt the coordinate symbols of the given frame.

    @@ -871,7 +871,7 @@

    Field operation functions
    -sympy.physics.vector.fieldfunctions.gradient(scalar, frame)[source]
    +sympy.physics.vector.fieldfunctions.gradient(scalar, frame)[source]

    Returns the vector gradient of a scalar field computed wrt the coordinate symbols of the given frame.

    @@ -902,7 +902,7 @@

    Field operation functions
    -sympy.physics.vector.fieldfunctions.scalar_potential(field, frame)[source]
    +sympy.physics.vector.fieldfunctions.scalar_potential(field, frame)[source]

    Returns the scalar potential function of a field in a given frame (without the added integration constant).

    @@ -944,7 +944,7 @@

    Field operation functionsorigin,

    -)[source] +)[source]

    Returns the scalar potential difference between two points in a certain frame, wrt a given field.

    If a scalar field is provided, its values at the two points are @@ -997,7 +997,7 @@

    Field operation functions

    -sympy.physics.vector.fieldfunctions.is_conservative(field)[source]
    +sympy.physics.vector.fieldfunctions.is_conservative(field)[source]

    Checks if a field is conservative.

    Parameters:
    @@ -1021,7 +1021,7 @@

    Checking the type of vector field
    -sympy.physics.vector.fieldfunctions.is_solenoidal(field)[source]
    +sympy.physics.vector.fieldfunctions.is_solenoidal(field)[source]

    Checks if a field is solenoidal.

    Parameters:
    diff --git a/dev/modules/physics/vector/api/functions.html b/dev/modules/physics/vector/api/functions.html index 710659d24d5..1022b4aa88e 100644 --- a/dev/modules/physics/vector/api/functions.html +++ b/dev/modules/physics/vector/api/functions.html @@ -805,7 +805,7 @@
    Documentation Version

    Essential Functions (Docstrings)

    -sympy.physics.vector.dynamicsymbols(names, level=0, **assumptions)[source]
    +sympy.physics.vector.dynamicsymbols(names, level=0, **assumptions)[source]

    Uses symbols and Function for functions of time.

    Creates a SymPy UndefinedFunction, which is then initialized as a function of a variable, the default being Symbol(‘t’).

    @@ -874,7 +874,7 @@

    Essential Functions (Docstrings)
    -sympy.physics.vector.functions.dot(vec1, vec2)[source]
    +sympy.physics.vector.functions.dot(vec1, vec2)[source]

    Dot product convenience wrapper for Vector.dot(): Dot product of two vectors.

    @@ -906,7 +906,7 @@

    Essential Functions (Docstrings)
    -sympy.physics.vector.functions.cross(vec1, vec2)[source]
    +sympy.physics.vector.functions.cross(vec1, vec2)[source]

    Cross product convenience wrapper for Vector.cross(): The cross product operator for two Vectors.

    @@ -939,7 +939,7 @@

    Essential Functions (Docstrings)
    -sympy.physics.vector.functions.outer(vec1, vec2)[source]
    +sympy.physics.vector.functions.outer(vec1, vec2)[source]

    Outer product convenience wrapper for Vector.outer(): Outer product between two Vectors.

    @@ -964,7 +964,7 @@

    Essential Functions (Docstrings)
    -sympy.physics.vector.functions.express(expr, frame, frame2=None, variables=False)[source]
    +sympy.physics.vector.functions.express(expr, frame, frame2=None, variables=False)[source]

    Global function for ‘express’ functionality.

    Re-expresses a Vector, scalar(sympyfiable) or Dyadic in given frame.

    Refer to the local methods of Vector and Dyadic for details. @@ -1014,7 +1014,7 @@

    Essential Functions (Docstrings)
    -sympy.physics.vector.functions.time_derivative(expr, frame, order=1)[source]
    +sympy.physics.vector.functions.time_derivative(expr, frame, order=1)[source]

    Calculate the time derivative of a vector/scalar field function or dyadic expression in given frame.

    diff --git a/dev/modules/physics/vector/api/kinematics.html b/dev/modules/physics/vector/api/kinematics.html index 03512c2b256..bd6ed38b13f 100644 --- a/dev/modules/physics/vector/api/kinematics.html +++ b/dev/modules/physics/vector/api/kinematics.html @@ -805,7 +805,7 @@
    Documentation Version

    Kinematics (Docstrings)

    -class sympy.physics.vector.point.Point(name)[source]
    +class sympy.physics.vector.point.Point(name)[source]

    This object represents a point in a dynamic system.

    It stores the: position, velocity, and acceleration of a point. The position is a vector defined as the vector distance from a parent @@ -858,7 +858,7 @@

    Documentation Version
    interframe,
    -)[source] +)[source]

    Sets the acceleration of this point with the 1-point theory.

    The 1-point theory for point acceleration looks like this:

    ^N a^P = ^B a^P + ^N a^O + ^N alpha^B x r^OP + ^N omega^B x (^N omega^B @@ -913,7 +913,7 @@

    Documentation Version
    fixedframe,
    -)[source] +)[source]

    Sets the acceleration of this point with the 2-point theory.

    The 2-point theory for point acceleration looks like this:

    ^N a^P = ^N a^O + ^N alpha^B x r^OP + ^N omega^B x (^N omega^B x r^OP)

    @@ -954,7 +954,7 @@
    Documentation Version
    -acc(frame)[source]
    +acc(frame)[source]

    The acceleration Vector of this Point in a ReferenceFrame.

    Parameters:
    @@ -978,7 +978,7 @@
    Documentation Version
    -locatenew(name, value)[source]
    +locatenew(name, value)[source]

    Creates a new point with a position defined from this point.

    Parameters:
    @@ -1003,7 +1003,7 @@
    Documentation Version
    -partial_velocity(frame, *gen_speeds)[source]
    +partial_velocity(frame, *gen_speeds)[source]

    Returns the partial velocities of the linear velocity vector of this point in the given frame with respect to one or more provided generalized speeds.

    @@ -1044,7 +1044,7 @@
    Documentation Version
    -pos_from(otherpoint)[source]
    +pos_from(otherpoint)[source]

    Returns a Vector distance between this Point and the other Point.

    Parameters:
    @@ -1068,7 +1068,7 @@
    Documentation Version
    -set_acc(frame, value)[source]
    +set_acc(frame, value)[source]

    Used to set the acceleration of this Point in a ReferenceFrame.

    Parameters:
    @@ -1095,7 +1095,7 @@
    Documentation Version
    -set_pos(otherpoint, value)[source]
    +set_pos(otherpoint, value)[source]

    Used to set the position of this point w.r.t. another point.

    Parameters:
    @@ -1123,7 +1123,7 @@
    Documentation Version
    -set_vel(frame, value)[source]
    +set_vel(frame, value)[source]

    Sets the velocity Vector of this Point in a ReferenceFrame.

    Parameters:
    @@ -1158,7 +1158,7 @@
    Documentation Version
    interframe,
    -)[source] +)[source]

    Sets the velocity of this point with the 1-point theory.

    The 1-point theory for point velocity looks like this:

    ^N v^P = ^B v^P + ^N v^O + ^N omega^B x r^OP

    @@ -1212,7 +1212,7 @@
    Documentation Version
    fixedframe,
    -)[source] +)[source]

    Sets the velocity of this point with the 2-point theory.

    The 2-point theory for point velocity looks like this:

    ^N v^P = ^N v^O + ^N omega^B x r^OP

    @@ -1253,7 +1253,7 @@
    Documentation Version
    -vel(frame)[source]
    +vel(frame)[source]

    The velocity Vector of this Point in the ReferenceFrame.

    Parameters:
    @@ -1296,7 +1296,7 @@
    Documentation Version

    kinematic_equations

    -sympy.physics.vector.functions.get_motion_params(frame, **kwargs)[source]
    +sympy.physics.vector.functions.get_motion_params(frame, **kwargs)[source]

    Returns the three motion parameters - (acceleration, velocity, and position) as vectorial functions of time in the given frame.

    If a higher order differential function is provided, the lower order @@ -1377,7 +1377,7 @@

    Documentation Version
    rot_order='',
    -)[source] +)[source]

    Gives equations relating the qdot’s to u’s for a rotation type.

    Supply rotation type and order as in orient. Speeds are assumed to be body-fixed; if we are defining the orientation of B in A using by rot_type, @@ -1418,7 +1418,7 @@

    Documentation Version
    -sympy.physics.vector.functions.partial_velocity(vel_vecs, gen_speeds, frame)[source]
    +sympy.physics.vector.functions.partial_velocity(vel_vecs, gen_speeds, frame)[source]

    Returns a list of partial velocities with respect to the provided generalized speeds in the given reference frame for each of the supplied velocity vectors.

    diff --git a/dev/modules/physics/vector/api/printing.html b/dev/modules/physics/vector/api/printing.html index 95c587034a3..b0b56c3c08e 100644 --- a/dev/modules/physics/vector/api/printing.html +++ b/dev/modules/physics/vector/api/printing.html @@ -805,7 +805,7 @@
    Documentation Version

    Printing (Docstrings)

    -sympy.physics.vector.printing.init_vprinting(**kwargs)[source]
    +sympy.physics.vector.printing.init_vprinting(**kwargs)[source]

    Initializes time derivative printing for all SymPy objects, i.e. any functions of time will be displayed in a more compact notation. The main benefit of this is for printing of time derivatives; instead of @@ -953,7 +953,7 @@

    Printing (Docstrings)
    -sympy.physics.vector.printing.vprint(expr, **settings)[source]
    +sympy.physics.vector.printing.vprint(expr, **settings)[source]

    Function for printing of expressions generated in the sympy.physics vector package.

    Extends SymPy’s StrPrinter, takes the same setting accepted by SymPy’s @@ -983,7 +983,7 @@

    Printing (Docstrings)
    -sympy.physics.vector.printing.vpprint(expr, **settings)[source]
    +sympy.physics.vector.printing.vpprint(expr, **settings)[source]

    Function for pretty printing of expressions generated in the sympy.physics vector package.

    Mainly used for expressions not inside a vector; the output of running @@ -1005,7 +1005,7 @@

    Printing (Docstrings)
    -sympy.physics.vector.printing.vlatex(expr, **settings)[source]
    +sympy.physics.vector.printing.vlatex(expr, **settings)[source]

    Function for printing latex representation of sympy.physics.vector objects.

    For latex representation of Vectors, Dyadics, and dynamicsymbols. Takes the diff --git a/dev/modules/physics/wigner.html b/dev/modules/physics/wigner.html index 379b7a40de4..776ae559ef4 100644 --- a/dev/modules/physics/wigner.html +++ b/dev/modules/physics/wigner.html @@ -871,7 +871,7 @@

    Authors
    -sympy.physics.wigner.clebsch_gordan(j_1, j_2, j_3, m_1, m_2, m_3)[source]
    +sympy.physics.wigner.clebsch_gordan(j_1, j_2, j_3, m_1, m_2, m_3)[source]

    Calculates the Clebsch-Gordan coefficient. \(\left\langle j_1 m_1 \; j_2 m_2 | j_3 m_3 \right\rangle\).

    The reference for this function is [Edmonds74].

    @@ -916,7 +916,7 @@

    Authors
    -sympy.physics.wigner.dot_rot_grad_Ynm(j, p, l, m, theta, phi)[source]
    +sympy.physics.wigner.dot_rot_grad_Ynm(j, p, l, m, theta, phi)[source]

    Returns dot product of rotational gradients of spherical harmonics.

    Explanation

    This function returns the right hand side of the following expression:

    @@ -941,7 +941,7 @@

    Authors
    -sympy.physics.wigner.gaunt(l_1, l_2, l_3, m_1, m_2, m_3, prec=None)[source]
    +sympy.physics.wigner.gaunt(l_1, l_2, l_3, m_1, m_2, m_3, prec=None)[source]

    Calculate the Gaunt coefficient.

    Parameters:
    @@ -1036,7 +1036,7 @@

    Authors
    -sympy.physics.wigner.racah(aa, bb, cc, dd, ee, ff, prec=None)[source]
    +sympy.physics.wigner.racah(aa, bb, cc, dd, ee, ff, prec=None)[source]

    Calculate the Racah symbol \(W(a,b,c,d;e,f)\).

    Parameters:
    @@ -1096,7 +1096,7 @@

    Authors
    prec=None,

    -)[source] +)[source]

    Calculate the real Gaunt coefficient.

    Parameters:
    @@ -1211,7 +1211,7 @@

    Authors
    -sympy.physics.wigner.wigner_3j(j_1, j_2, j_3, m_1, m_2, m_3)[source]
    +sympy.physics.wigner.wigner_3j(j_1, j_2, j_3, m_1, m_2, m_3)[source]

    Calculate the Wigner 3j symbol \(\operatorname{Wigner3j}(j_1,j_2,j_3,m_1,m_2,m_3)\).

    Parameters:
    @@ -1294,7 +1294,7 @@

    Authors
    -sympy.physics.wigner.wigner_6j(j_1, j_2, j_3, j_4, j_5, j_6, prec=None)[source]
    +sympy.physics.wigner.wigner_6j(j_1, j_2, j_3, j_4, j_5, j_6, prec=None)[source]

    Calculate the Wigner 6j symbol \(\operatorname{Wigner6j}(j_1,j_2,j_3,j_4,j_5,j_6)\).

    Parameters:
    @@ -1398,7 +1398,7 @@

    Authors
    prec=None,

    -)[source] +)[source]

    Calculate the Wigner 9j symbol \(\operatorname{Wigner9j}(j_1,j_2,j_3,j_4,j_5,j_6,j_7,j_8,j_9)\).

    @@ -1450,7 +1450,7 @@

    Authors
    -sympy.physics.wigner.wigner_d(J, alpha, beta, gamma)[source]
    +sympy.physics.wigner.wigner_d(J, alpha, beta, gamma)[source]

    Return the Wigner D matrix for angular momentum J.

    Returns:
    @@ -1500,7 +1500,7 @@

    Authors
    -sympy.physics.wigner.wigner_d_small(J, beta)[source]
    +sympy.physics.wigner.wigner_d_small(J, beta)[source]

    Return the small Wigner d matrix for angular momentum J.

    Returns:
    diff --git a/dev/modules/plotting.html b/dev/modules/plotting.html index 8868080cf16..170effe9681 100644 --- a/dev/modules/plotting.html +++ b/dev/modules/plotting.html @@ -853,7 +853,7 @@

    Plot Class**kwargs,

    -)[source] +)[source]

    Base class for all backends. A backend represents the plotting library, which implements the necessary functionalities in order to use SymPy plotting functions.

    @@ -1010,7 +1010,7 @@

    Plot Class
    -append(arg)[source]
    +append(arg)[source]

    Adds an element from a plot’s series to an existing plot.

    Examples

    Consider two Plot objects, p1 and p2. To add the @@ -1041,7 +1041,7 @@

    Plot Class
    -extend(arg)[source]
    +extend(arg)[source]

    Adds all series from another plot.

    Examples

    Consider two Plot objects, p1 and p2. To add the @@ -1097,7 +1097,7 @@

    Plot Class

    -sympy.plotting.plot.plot(*args, show=True, **kwargs)[source]
    +sympy.plotting.plot.plot(*args, show=True, **kwargs)[source]

    Plots a function of a single variable as a curve.

    Parameters:
    @@ -1306,7 +1306,7 @@

    Plotting Function Reference
    -sympy.plotting.plot.plot_parametric(*args, show=True, **kwargs)[source]
    +sympy.plotting.plot.plot_parametric(*args, show=True, **kwargs)[source]

    Plots a 2D parametric curve.

    Parameters:
    @@ -1491,7 +1491,7 @@

    Plotting Function Reference
    -sympy.plotting.plot.plot3d(*args, show=True, **kwargs)[source]
    +sympy.plotting.plot.plot3d(*args, show=True, **kwargs)[source]

    Plots a 3D surface plot.

    Usage

    Single plot

    @@ -1590,7 +1590,7 @@

    Plotting Function Reference
    -sympy.plotting.plot.plot3d_parametric_line(*args, show=True, **kwargs)[source]
    +sympy.plotting.plot.plot3d_parametric_line(*args, show=True, **kwargs)[source]

    Plots a 3D parametric line plot.

    Usage

    Single plot:

    @@ -1684,7 +1684,7 @@

    Plotting Function Reference**kwargs,

    -)[source] +)[source]

    Plots a 3D parametric surface plot.

    Explanation

    Single plot.

    @@ -1774,7 +1774,7 @@

    Plotting Function Reference**kwargs,

    -)[source] +)[source]

    A plot function to plot implicit equations / inequalities.

    Arguments

      @@ -1933,7 +1933,7 @@

      PlotGrid Class**kwargs,

    -)[source] +)[source]

    This class helps to plot subplots from already created SymPy plots in a single figure.

    Examples

    @@ -2029,7 +2029,7 @@

    PlotGrid Class

    -class sympy.plotting.series.BaseSeries(*args, **kwargs)[source]
    +class sympy.plotting.series.BaseSeries(*args, **kwargs)[source]

    Base class for the data objects containing stuff to be plotted.

    Notes

    The backend should check if it supports the data series that is given. @@ -2044,7 +2044,7 @@

    Series Classes
    -eval_color_func(*args)[source]
    +eval_color_func(*args)[source]

    Evaluate the color function.

    Parameters:
    @@ -2070,7 +2070,7 @@

    Series Classes
    -get_data()[source]
    +get_data()[source]

    Compute and returns the numerical data.

    The number of parameters returned by this method depends on the specific instance. If s is the series, make sure to read @@ -2086,7 +2086,7 @@

    Series Classeswrapper='$%s$',

    -)[source] +)[source]

    Return the label to be used to display the expression.

    Parameters:
    @@ -2134,7 +2134,7 @@

    Series Classes
    -class sympy.plotting.series.Line2DBaseSeries(**kwargs)[source]
    +class sympy.plotting.series.Line2DBaseSeries(**kwargs)[source]

    A base class for 2D lines.

    • adding the label, steps and only_integers options

    • @@ -2143,7 +2143,7 @@

      Series Classes
      -get_data()[source]
      +get_data()[source]

      Return coordinates for plotting the line.

      Returns:
      @@ -2183,11 +2183,11 @@

      Series Classes**kwargs,

    -)[source] +)[source]

    Representation for a line consisting of a SymPy expression over a range.

    -get_points()[source]
    +get_points()[source]

    Return lists of coordinates for plotting. Depending on the adaptive option, this function will either use an adaptive algorithm or it will uniformly sample the expression over the provided range.

    @@ -2223,14 +2223,14 @@

    Series Classes**kwargs,

    -)[source] +)[source]

    Representation for a line consisting of two parametric SymPy expressions over a range.

    -class sympy.plotting.series.Line3DBaseSeries[source]
    +class sympy.plotting.series.Line3DBaseSeries[source]

    A base class for 3D lines.

    Most of the stuff is derived from Line2DBaseSeries.

    @@ -2248,14 +2248,14 @@

    Series Classes**kwargs,

    -)[source] +)[source]

    Representation for a 3D line consisting of three parametric SymPy expressions and a range.

    -class sympy.plotting.series.SurfaceBaseSeries(*args, **kwargs)[source]
    +class sympy.plotting.series.SurfaceBaseSeries(*args, **kwargs)[source]

    A base class for 3D surfaces.

    @@ -2271,12 +2271,12 @@

    Series Classes**kwargs,

    -)[source] +)[source]

    Representation for a 3D surface consisting of a SymPy expression and 2D range.

    -get_data()[source]
    +get_data()[source]

    Return arrays of coordinates for plotting.

    Returns:
    @@ -2298,7 +2298,7 @@

    Series Classes
    -get_meshes()[source]
    +get_meshes()[source]

    Return the x,y,z coordinates for plotting the surface. This function is available for back-compatibility purposes. Consider using get_data() instead.

    @@ -2320,12 +2320,12 @@

    Series Classes**kwargs,

    -)[source] +)[source]

    Representation for a 3D surface consisting of three parametric SymPy expressions and a range.

    -get_data()[source]
    +get_data()[source]

    Return arrays of coordinates for plotting.

    Returns:
    @@ -2355,7 +2355,7 @@

    Series Classes
    -get_meshes()[source]
    +get_meshes()[source]

    Return the x,y,z coordinates for plotting the surface. This function is available for back-compatibility purposes. Consider using get_data() instead.

    @@ -2365,7 +2365,7 @@

    Series Classes
    -class sympy.plotting.series.GenericDataSeries(tp, *args, **kwargs)[source]
    +class sympy.plotting.series.GenericDataSeries(tp, *args, **kwargs)[source]

    Represents generic numerical data.

    Notes

    This class serves the purpose of back-compatibility with the “markers, @@ -2421,11 +2421,11 @@

    Series Classes**kwargs,

    -)[source] +)[source]

    Representation for 2D Implicit plot.

    -get_data()[source]
    +get_data()[source]

    Returns numerical data.

    Returns:
    @@ -2462,7 +2462,7 @@

    Series Classeswrapper='$%s$',

    -)[source] +)[source]

    Return the label to be used to display the expression.

    Parameters:
    @@ -2490,12 +2490,12 @@

    Series Classes

    -class sympy.plotting.plot.MatplotlibBackend(*series, **kwargs)[source]
    +class sympy.plotting.plot.MatplotlibBackend(*series, **kwargs)[source]

    This class implements the functionalities to use Matplotlib with SymPy plotting functions.

    -static get_segments(x, y, z=None)[source]
    +static get_segments(x, y, z=None)[source]

    Convert two list of coordinates to a list of segments to be used with Matplotlib’s LineCollection.

    @@ -2518,7 +2518,7 @@

    Backends
    -process_series()[source]
    +process_series()[source]

    Iterates over every Plot object and further calls _process_series()

    @@ -2527,7 +2527,7 @@

    Backends
    -class sympy.plotting.plot.TextBackend(*args, **kwargs)[source]
    +class sympy.plotting.plot.TextBackend(*args, **kwargs)[source]
    @@ -2761,7 +2761,7 @@

    Using Custom Color Functions

    -sympy.plotting.textplot.textplot(expr, a, b, W=55, H=21)[source]
    +sympy.plotting.textplot.textplot(expr, a, b, W=55, H=21)[source]

    Print a crude ASCII art plot of the SymPy expression ‘expr’ (which should contain a single symbol, e.g. x or something else) over the interval [a, b].

    diff --git a/dev/modules/polys/agca.html b/dev/modules/polys/agca.html index cf398edfe6c..76bdb8c7d3f 100644 --- a/dev/modules/polys/agca.html +++ b/dev/modules/polys/agca.html @@ -903,11 +903,11 @@

    Base Rings
    -class sympy.polys.domains.ring.Ring[source]
    +class sympy.polys.domains.ring.Ring[source]

    Represents a ring domain.

    -free_module(rank)[source]
    +free_module(rank)[source]

    Generate a free module of rank rank over self.

    >>> from sympy.abc import x
     >>> from sympy import QQ
    @@ -919,7 +919,7 @@ 

    Base Rings
    -ideal(*gens)[source]
    +ideal(*gens)[source]

    Generate an ideal of self.

    >>> from sympy.abc import x
     >>> from sympy import QQ
    @@ -931,7 +931,7 @@ 

    Base Rings
    -quotient_ring(e)[source]
    +quotient_ring(e)[source]

    Form a quotient ring of self.

    Here e can be an ideal or an iterable.

    >>> from sympy.abc import x
    @@ -961,13 +961,13 @@ 

    Base Ringsorder=None,

    -)[source] +)[source]

    A class for representing multivariate polynomial rings.

    -class sympy.polys.domains.quotientring.QuotientRing(ring, ideal)[source]
    +class sympy.polys.domains.quotientring.QuotientRing(ring, ideal)[source]

    Class representing (commutative) quotient rings.

    You should not usually instantiate this by hand, instead use the constructor from the base ring in the construction.

    @@ -1047,7 +1047,7 @@

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.Module(ring)[source]
    +class sympy.polys.agca.modules.Module(ring)[source]

    Abstract base class for modules.

    Do not instantiate - use ring explicit constructors instead:

    >>> from sympy import QQ
    @@ -1072,56 +1072,56 @@ 

    Modules, Ideals and their Elementary Properties
    -contains(elem)[source]
    +contains(elem)[source]

    Return True if elem is an element of this module.

    -convert(elem, M=None)[source]
    +convert(elem, M=None)[source]

    Convert elem into internal representation of this module.

    If M is not None, it should be a module containing it.

    -identity_hom()[source]
    +identity_hom()[source]

    Return the identity homomorphism on self.

    -is_submodule(other)[source]
    +is_submodule(other)[source]

    Returns True if other is a submodule of self.

    -is_zero()[source]
    +is_zero()[source]

    Returns True if self is a zero module.

    -multiply_ideal(other)[source]
    +multiply_ideal(other)[source]

    Multiply self by the ideal other.

    -quotient_module(other)[source]
    +quotient_module(other)[source]

    Generate a quotient module.

    -submodule(*gens)[source]
    +submodule(*gens)[source]

    Generate a submodule.

    -subset(other)[source]
    +subset(other)[source]

    Returns True if other is is a subset of self.

    Examples

    >>> from sympy.abc import x
    @@ -1139,7 +1139,7 @@ 

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.FreeModule(ring, rank)[source]
    +class sympy.polys.agca.modules.FreeModule(ring, rank)[source]

    Abstract base class for free modules.

    Additional attributes:

      @@ -1151,7 +1151,7 @@

      Modules, Ideals and their Elementary Properties
      -basis()[source]
      +basis()[source]

      Return a set of basis elements.

      Examples

      >>> from sympy.abc import x
      @@ -1164,7 +1164,7 @@ 

      Modules, Ideals and their Elementary Properties
      -convert(elem, M=None)[source]
      +convert(elem, M=None)[source]

      Convert elem into the internal representation.

      This method is called implicitly whenever computations involve elements not in the internal representation.

      @@ -1180,13 +1180,13 @@

      Modules, Ideals and their Elementary Properties
      -dtype[source]
      +dtype[source]

      alias of FreeModuleElement

    -identity_hom()[source]
    +identity_hom()[source]

    Return the identity homomorphism on self.

    Examples

    >>> from sympy.abc import x
    @@ -1201,7 +1201,7 @@ 

    Modules, Ideals and their Elementary Properties
    -is_submodule(other)[source]
    +is_submodule(other)[source]

    Returns True if other is a submodule of self.

    Examples

    >>> from sympy.abc import x
    @@ -1220,7 +1220,7 @@ 

    Modules, Ideals and their Elementary Properties
    -is_zero()[source]
    +is_zero()[source]

    Returns True if self is a zero module.

    (If, as this implementation assumes, the coefficient ring is not the zero ring, then this is equivalent to the rank being zero.)

    @@ -1237,7 +1237,7 @@

    Modules, Ideals and their Elementary Properties
    -multiply_ideal(other)[source]
    +multiply_ideal(other)[source]

    Multiply self by the ideal other.

    Examples

    >>> from sympy.abc import x
    @@ -1252,7 +1252,7 @@ 

    Modules, Ideals and their Elementary Properties
    -quotient_module(submodule)[source]
    +quotient_module(submodule)[source]

    Return a quotient module.

    Examples

    >>> from sympy.abc import x
    @@ -1273,13 +1273,13 @@ 

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.FreeModuleElement(module, data)[source]
    +class sympy.polys.agca.modules.FreeModuleElement(module, data)[source]

    Element of a free module. Data stored as a tuple.

    -class sympy.polys.agca.modules.SubModule(gens, container)[source]
    +class sympy.polys.agca.modules.SubModule(gens, container)[source]

    Base class for submodules.

    Attributes:

      @@ -1301,7 +1301,7 @@

      Modules, Ideals and their Elementary Properties
      -convert(elem, M=None)[source]
      +convert(elem, M=None)[source]

      Convert elem into the internal represantition.

      Mostly called implicitly.

      Examples

      @@ -1316,7 +1316,7 @@

      Modules, Ideals and their Elementary Properties
      -identity_hom()[source]
      +identity_hom()[source]

      Return the identity homomorphism on self.

      Examples

      >>> from sympy.abc import x
      @@ -1331,7 +1331,7 @@ 

      Modules, Ideals and their Elementary Properties
      -in_terms_of_generators(e)[source]
      +in_terms_of_generators(e)[source]

      Express element e of self in terms of the generators.

      Examples

      >>> from sympy.abc import x
      @@ -1346,7 +1346,7 @@ 

      Modules, Ideals and their Elementary Properties
      -inclusion_hom()[source]
      +inclusion_hom()[source]

      Return a homomorphism representing the inclusion map of self.

      That is, the natural map from self to self.container.

      Examples

      @@ -1362,7 +1362,7 @@

      Modules, Ideals and their Elementary Properties
      -intersect(other, **options)[source]
      +intersect(other, **options)[source]

      Returns the intersection of self with submodule other.

      Examples

      >>> from sympy.abc import x, y
      @@ -1390,7 +1390,7 @@ 

      Modules, Ideals and their Elementary Properties
      -is_full_module()[source]
      +is_full_module()[source]

      Return True if self is the entire free module.

      Examples

      >>> from sympy.abc import x
      @@ -1406,7 +1406,7 @@ 

      Modules, Ideals and their Elementary Properties
      -is_submodule(other)[source]
      +is_submodule(other)[source]

      Returns True if other is a submodule of self.

      >>> from sympy.abc import x
       >>> from sympy import QQ
      @@ -1425,7 +1425,7 @@ 

      Modules, Ideals and their Elementary Properties
      -is_zero()[source]
      +is_zero()[source]

      Return True if self is a zero module.

      Examples

      >>> from sympy.abc import x
      @@ -1441,7 +1441,7 @@ 

      Modules, Ideals and their Elementary Properties
      -module_quotient(other, **options)[source]
      +module_quotient(other, **options)[source]

      Returns the module quotient of self by submodule other.

      That is, if self is the module \(M\) and other is \(N\), then return the ideal \(\{f \in R | fN \subset M\}\).

      @@ -1473,7 +1473,7 @@

      Modules, Ideals and their Elementary Properties
      -multiply_ideal(I)[source]
      +multiply_ideal(I)[source]

      Multiply self by the ideal I.

      Examples

      >>> from sympy.abc import x
      @@ -1488,7 +1488,7 @@ 

      Modules, Ideals and their Elementary Properties
      -quotient_module(other, **opts)[source]
      +quotient_module(other, **opts)[source]

      Return a quotient module.

      This is the same as taking a submodule of a quotient of the containing module.

      @@ -1511,7 +1511,7 @@

      Modules, Ideals and their Elementary Properties
      -reduce_element(x)[source]
      +reduce_element(x)[source]

      Reduce the element x of our ring modulo the ideal self.

      Here “reduce” has no specific meaning, it could return a unique normal form, simplify the expression a bit, or just do nothing.

      @@ -1519,7 +1519,7 @@

      Modules, Ideals and their Elementary Properties
      -submodule(*gens)[source]
      +submodule(*gens)[source]

      Generate a submodule.

      Examples

      >>> from sympy.abc import x
      @@ -1533,7 +1533,7 @@ 

      Modules, Ideals and their Elementary Properties
      -syzygy_module(**opts)[source]
      +syzygy_module(**opts)[source]

      Compute the syzygy module of the generators of self.

      Suppose \(M\) is generated by \(f_1, \ldots, f_n\) over the ring \(R\). Consider the homomorphism \(\phi: R^n \to M\), given by @@ -1559,7 +1559,7 @@

      Modules, Ideals and their Elementary Properties
      -union(other)[source]
      +union(other)[source]

      Returns the module generated by the union of self and other.

      Examples

      >>> from sympy.abc import x
      @@ -1593,7 +1593,7 @@ 

      Modules, Ideals and their Elementary Properties
      -class sympy.polys.agca.ideals.Ideal(ring)[source]
      +class sympy.polys.agca.ideals.Ideal(ring)[source]

      Abstract base class for ideals.

      Do not instantiate - use explicit constructors in the ring class instead:

      >>> from sympy import QQ
      @@ -1627,7 +1627,7 @@ 

      Modules, Ideals and their Elementary Properties
      -contains(elem)[source]
      +contains(elem)[source]

      Return True if elem is an element of this ideal.

      Examples

      >>> from sympy.abc import x
      @@ -1642,19 +1642,19 @@ 

      Modules, Ideals and their Elementary Properties
      -depth()[source]
      +depth()[source]

      Compute the depth of self.

    -height()[source]
    +height()[source]

    Compute the height of self.

    -intersect(J)[source]
    +intersect(J)[source]

    Compute the intersection of self with ideal J.

    Examples

    >>> from sympy.abc import x, y
    @@ -1668,49 +1668,49 @@ 

    Modules, Ideals and their Elementary Properties
    -is_maximal()[source]
    +is_maximal()[source]

    Return True if self is a maximal ideal.

    -is_primary()[source]
    +is_primary()[source]

    Return True if self is a primary ideal.

    -is_prime()[source]
    +is_prime()[source]

    Return True if self is a prime ideal.

    -is_principal()[source]
    +is_principal()[source]

    Return True if self is a principal ideal.

    -is_radical()[source]
    +is_radical()[source]

    Return True if self is a radical ideal.

    -is_whole_ring()[source]
    +is_whole_ring()[source]

    Return True if self is the whole ring.

    -is_zero()[source]
    +is_zero()[source]

    Return True if self is the zero ideal.

    -product(J)[source]
    +product(J)[source]

    Compute the ideal product of self and J.

    That is, compute the ideal generated by products \(xy\), for \(x\) an element of self and \(y \in J\).

    @@ -1725,7 +1725,7 @@

    Modules, Ideals and their Elementary Properties
    -quotient(J, **opts)[source]
    +quotient(J, **opts)[source]

    Compute the ideal quotient of self by J.

    That is, if self is the ideal \(I\), compute the set \(I : J = \{x \in R | xJ \subset I \}\).

    @@ -1741,13 +1741,13 @@

    Modules, Ideals and their Elementary Properties
    -radical()[source]
    +radical()[source]

    Compute the radical of self.

    -reduce_element(x)[source]
    +reduce_element(x)[source]

    Reduce the element x of our ring modulo the ideal self.

    Here “reduce” has no specific meaning: it could return a unique normal form, simplify the expression a bit, or just do nothing.

    @@ -1755,7 +1755,7 @@

    Modules, Ideals and their Elementary Properties
    -saturate(J)[source]
    +saturate(J)[source]

    Compute the ideal saturation of self by J.

    That is, if self is the ideal \(I\), compute the set \(I : J^\infty = \{x \in R | xJ^n \subset I \text{ for some } n\}\).

    @@ -1763,7 +1763,7 @@

    Modules, Ideals and their Elementary Properties
    -subset(other)[source]
    +subset(other)[source]

    Returns True if other is is a subset of self.

    Here other may be an ideal.

    Examples

    @@ -1782,7 +1782,7 @@

    Modules, Ideals and their Elementary Properties
    -union(J)[source]
    +union(J)[source]

    Compute the ideal generated by the union of self and J.

    Examples

    >>> from sympy.abc import x
    @@ -1804,7 +1804,7 @@ 

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.QuotientModule(ring, base, submodule)[source]
    +class sympy.polys.agca.modules.QuotientModule(ring, base, submodule)[source]

    Class for quotient modules.

    Do not instantiate this directly. For subquotients, see the SubQuotientModule class.

    @@ -1816,7 +1816,7 @@

    Modules, Ideals and their Elementary Properties
    -convert(elem, M=None)[source]
    +convert(elem, M=None)[source]

    Convert elem into the internal representation.

    This method is called implicitly whenever computations involve elements not in the internal representation.

    @@ -1832,13 +1832,13 @@

    Modules, Ideals and their Elementary Properties
    -dtype[source]
    +dtype[source]

    alias of QuotientModuleElement

    -identity_hom()[source]
    +identity_hom()[source]

    Return the identity homomorphism on self.

    Examples

    >>> from sympy.abc import x
    @@ -1854,7 +1854,7 @@ 

    Modules, Ideals and their Elementary Properties
    -is_submodule(other)[source]
    +is_submodule(other)[source]

    Return True if other is a submodule of self.

    Examples

    >>> from sympy.abc import x
    @@ -1871,7 +1871,7 @@ 

    Modules, Ideals and their Elementary Properties
    -is_zero()[source]
    +is_zero()[source]

    Return True if self is a zero module.

    This happens if and only if the base module is the same as the submodule being killed.

    @@ -1889,7 +1889,7 @@

    Modules, Ideals and their Elementary Properties
    -quotient_hom()[source]
    +quotient_hom()[source]

    Return the quotient homomorphism to self.

    That is, return a homomorphism representing the natural map from self.base to self.

    @@ -1907,7 +1907,7 @@

    Modules, Ideals and their Elementary Properties
    -submodule(*gens, **opts)[source]
    +submodule(*gens, **opts)[source]

    Generate a submodule.

    This is the same as taking a quotient of a submodule of the base module.

    @@ -1925,11 +1925,11 @@

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.QuotientModuleElement(module, data)[source]
    +class sympy.polys.agca.modules.QuotientModuleElement(module, data)[source]

    Element of a quotient module.

    -eq(d1, d2)[source]
    +eq(d1, d2)[source]

    Equality comparison.

    @@ -1937,7 +1937,7 @@

    Modules, Ideals and their Elementary Properties
    -class sympy.polys.agca.modules.SubQuotientModule(gens, container, **opts)[source]
    +class sympy.polys.agca.modules.SubQuotientModule(gens, container, **opts)[source]

    Submodule of a quotient module.

    Equivalently, quotient module of a submodule.

    Do not instantiate this, instead use the submodule or quotient_module @@ -1958,7 +1958,7 @@

    Modules, Ideals and their Elementary Properties
    -is_full_module()[source]
    +is_full_module()[source]

    Return True if self is the entire free module.

    Examples

    >>> from sympy.abc import x
    @@ -1974,7 +1974,7 @@ 

    Modules, Ideals and their Elementary Properties
    -quotient_hom()[source]
    +quotient_hom()[source]

    Return the quotient homomorphism to self.

    That is, return the natural map from self.base to self.

    Examples

    @@ -2053,7 +2053,7 @@

    Module Homomorphisms and Syzygies
    -sympy.polys.agca.homomorphisms.homomorphism(domain, codomain, matrix)[source]
    +sympy.polys.agca.homomorphisms.homomorphism(domain, codomain, matrix)[source]

    Create a homomorphism object.

    This function tries to build a homomorphism from domain to codomain via the matrix matrix.

    @@ -2114,7 +2114,7 @@

    Module Homomorphisms and Syzygies
    -class sympy.polys.agca.homomorphisms.ModuleHomomorphism(domain, codomain)[source]
    +class sympy.polys.agca.homomorphisms.ModuleHomomorphism(domain, codomain)[source]

    Abstract base class for module homomoprhisms. Do not instantiate.

    Instead, use the homomorphism function:

    >>> from sympy import QQ
    @@ -2152,7 +2152,7 @@ 

    Module Homomorphisms and Syzygies
    -image()[source]
    +image()[source]

    Compute the image of self.

    That is, if self is the homomorphism \(\phi: M \to N\), then compute \(im(\phi) = \{\phi(x) | x \in M \}\). This is a submodule of \(N\).

    @@ -2171,7 +2171,7 @@

    Module Homomorphisms and Syzygies
    -is_injective()[source]
    +is_injective()[source]

    Return True if self is injective.

    That is, check if the elements of the domain are mapped to the same codomain element.

    @@ -2193,7 +2193,7 @@

    Module Homomorphisms and Syzygies
    -is_isomorphism()[source]
    +is_isomorphism()[source]

    Return True if self is an isomorphism.

    That is, check if every element of the codomain has precisely one preimage. Equivalently, self is both injective and surjective.

    @@ -2216,7 +2216,7 @@

    Module Homomorphisms and Syzygies
    -is_surjective()[source]
    +is_surjective()[source]

    Return True if self is surjective.

    That is, check if every element of the codomain has at least one preimage.

    @@ -2238,7 +2238,7 @@

    Module Homomorphisms and Syzygies
    -is_zero()[source]
    +is_zero()[source]

    Return True if self is a zero morphism.

    That is, check if every element of the domain is mapped to zero under self.

    @@ -2262,7 +2262,7 @@

    Module Homomorphisms and Syzygies
    -kernel()[source]
    +kernel()[source]

    Compute the kernel of self.

    That is, if self is the homomorphism \(\phi: M \to N\), then compute \(ker(\phi) = \{x \in M | \phi(x) = 0\}\). This is a submodule of \(M\).

    @@ -2281,7 +2281,7 @@

    Module Homomorphisms and Syzygies
    -quotient_codomain(sm)[source]
    +quotient_codomain(sm)[source]

    Return self with codomain replaced by codomain/sm.

    Here sm must be a submodule of self.codomain.

    Examples

    @@ -2313,7 +2313,7 @@

    Module Homomorphisms and Syzygies
    -quotient_domain(sm)[source]
    +quotient_domain(sm)[source]

    Return self with domain replaced by domain/sm.

    Here sm must be a submodule of self.kernel().

    Examples

    @@ -2338,7 +2338,7 @@

    Module Homomorphisms and Syzygies
    -restrict_codomain(sm)[source]
    +restrict_codomain(sm)[source]

    Return self, with codomain restricted to to sm.

    Here sm has to be a submodule of self.codomain containing the image.

    @@ -2364,7 +2364,7 @@

    Module Homomorphisms and Syzygies
    -restrict_domain(sm)[source]
    +restrict_domain(sm)[source]

    Return self, with the domain restricted to sm.

    Here sm has to be a submodule of self.domain.

    Examples

    @@ -2417,7 +2417,7 @@

    Finite Extensions\(t\).

    -class sympy.polys.agca.extensions.MonogenicFiniteExtension(mod)[source]
    +class sympy.polys.agca.extensions.MonogenicFiniteExtension(mod)[source]

    Finite extension generated by an integral element.

    The generator is defined by a monic univariate polynomial derived from the argument mod.

    @@ -2453,7 +2453,7 @@

    Finite Extensions
    -dtype[source]
    +dtype[source]

    alias of ExtensionElement

    @@ -2461,7 +2461,7 @@

    Finite Extensions
    -class sympy.polys.agca.extensions.ExtensionElement(rep, ext)[source]
    +class sympy.polys.agca.extensions.ExtensionElement(rep, ext)[source]

    Element of a finite extension.

    A class of univariate polynomials modulo the modulus of the extension ext. It is represented by the @@ -2470,7 +2470,7 @@

    Finite Extensions
    -inverse()[source]
    +inverse()[source]

    Multiplicative inverse.

    Raises:
    diff --git a/dev/modules/polys/domainmatrix.html b/dev/modules/polys/domainmatrix.html index ab21b7c29bf..c08a99a3a70 100644 --- a/dev/modules/polys/domainmatrix.html +++ b/dev/modules/polys/domainmatrix.html @@ -836,7 +836,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.domainmatrix.DM(rows, domain)[source]
    +sympy.polys.matrices.domainmatrix.DM(rows, domain)[source]

    Convenient alias for DomainMatrix.from_list

    Examples

    >>> from sympy import ZZ
    @@ -853,7 +853,7 @@ 

    What is domainmatrix?
    -class sympy.polys.matrices.domainmatrix.DomainMatrix(rows, shape, domain, *, fmt=None)[source]
    +class sympy.polys.matrices.domainmatrix.DomainMatrix(rows, shape, domain, *, fmt=None)[source]

    Associate Matrix with Domain

    Explanation

    DomainMatrix uses Domain for its internal representation @@ -890,7 +890,7 @@

    What is domainmatrix?
    -add(B)[source]
    +add(B)[source]

    Adds two DomainMatrix matrices of the same Domain

    Parameters:
    @@ -939,7 +939,7 @@

    What is domainmatrix?
    -adj_det()[source]
    +adj_det()[source]

    Adjugate and determinant of a square DomainMatrix.

    Returns:
    @@ -977,7 +977,7 @@

    What is domainmatrix?
    -adj_poly_det(cp=None)[source]
    +adj_poly_det(cp=None)[source]

    Return the polynomial \(p\) such that \(p(A) = adj(A)\) and also the determinant of \(A\).

    Examples

    @@ -1006,7 +1006,7 @@

    What is domainmatrix?
    -adjugate()[source]
    +adjugate()[source]

    Adjugate of a square DomainMatrix.

    The adjugate matrix is the transpose of the cofactor matrix and is related to the inverse by:

    @@ -1039,7 +1039,7 @@

    What is domainmatrix?
    -cancel_denom(denom)[source]
    +cancel_denom(denom)[source]

    Cancel factors between a matrix and a denominator.

    Returns a matrix and denominator on lowest terms.

    Requires gcd in the ground domain.

    @@ -1107,7 +1107,7 @@

    What is domainmatrix?
    -cancel_denom_elementwise(denom)[source]
    +cancel_denom_elementwise(denom)[source]

    Cancel factors between the elements of a matrix and a denominator.

    Returns a matrix of numerators and matrix of denominators.

    Requires gcd in the ground domain.

    @@ -1146,7 +1146,7 @@

    What is domainmatrix?
    -charpoly()[source]
    +charpoly()[source]

    Characteristic polynomial of a square matrix.

    Computes the characteristic polynomial in a fully expanded form using division free arithmetic. If a factorization of the characteristic @@ -1186,7 +1186,7 @@

    What is domainmatrix?
    -charpoly_base()[source]
    +charpoly_base()[source]

    Base case for charpoly_factor_blocks() after block decomposition.

    This method is used internally by charpoly_factor_blocks() as the base case for computing the characteristic polynomial of a block. It is @@ -1204,7 +1204,7 @@

    What is domainmatrix?
    -charpoly_berk()[source]
    +charpoly_berk()[source]

    Compute the characteristic polynomial using the Berkowitz algorithm.

    This method directly calls the underlying implementation of the Berkowitz algorithm (sympy.polys.matrices.dense.ddm_berk() or @@ -1235,7 +1235,7 @@

    What is domainmatrix?
    -charpoly_factor_blocks()[source]
    +charpoly_factor_blocks()[source]

    Partial factorisation of the characteristic polynomial.

    This factorisation arises from a block structure of the matrix (if any) and so the factors are not guaranteed to be irreducible. The @@ -1296,7 +1296,7 @@

    What is domainmatrix?
    -charpoly_factor_list()[source]
    +charpoly_factor_list()[source]

    Full factorization of the characteristic polynomial.

    Returns:
    @@ -1345,7 +1345,7 @@

    What is domainmatrix?
    -choose_domain(**opts)[source]
    +choose_domain(**opts)[source]

    Convert to a domain found by construct_domain().

    Examples

    >>> from sympy import ZZ
    @@ -1372,7 +1372,7 @@ 

    What is domainmatrix?
    -clear_denoms(convert=False)[source]
    +clear_denoms(convert=False)[source]

    Clear denominators, but keep the domain unchanged.

    Examples

    >>> from sympy import QQ
    @@ -1412,7 +1412,7 @@ 

    What is domainmatrix?
    -clear_denoms_rowwise(convert=False)[source]
    +clear_denoms_rowwise(convert=False)[source]

    Clear denominators from each row of the matrix.

    Examples

    >>> from sympy import QQ
    @@ -1458,7 +1458,7 @@ 

    What is domainmatrix?
    -columnspace()[source]
    +columnspace()[source]

    Returns the columnspace for the DomainMatrix

    Returns:
    @@ -1482,7 +1482,7 @@

    What is domainmatrix?
    -content()[source]
    +content()[source]

    Return the gcd of the elements of the matrix.

    Requires gcd in the ground domain.

    Examples

    @@ -1501,7 +1501,7 @@

    What is domainmatrix?
    -convert_to(K)[source]
    +convert_to(K)[source]

    Change the domain of DomainMatrix to desired domain or field

    Parameters:
    @@ -1534,7 +1534,7 @@

    What is domainmatrix?
    -det()[source]
    +det()[source]

    Returns the determinant of a square DomainMatrix.

    Returns:
    @@ -1566,7 +1566,7 @@

    What is domainmatrix?
    -classmethod diag(diagonal, domain, shape=None)[source]
    +classmethod diag(diagonal, domain, shape=None)[source]

    Return diagonal matrix with entries from diagonal.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -1579,7 +1579,7 @@ 

    What is domainmatrix?
    -diagonal()[source]
    +diagonal()[source]

    Get the diagonal entries of the matrix as a list.

    Examples

    >>> from sympy import ZZ
    @@ -1597,7 +1597,7 @@ 

    What is domainmatrix?
    -eval_poly(p)[source]
    +eval_poly(p)[source]

    Evaluate polynomial function of a matrix \(p(A)\).

    Examples

    >>> from sympy import QQ
    @@ -1619,7 +1619,7 @@ 

    What is domainmatrix?
    -eval_poly_mul(p, B)[source]
    +eval_poly_mul(p, B)[source]

    Evaluate polynomial matrix product \(p(A) \times B\).

    Evaluate the polynomial matrix product \(p(A) \times B\) using Horner’s method without creating the matrix \(p(A)\) explicitly. If \(B\) is a @@ -1651,7 +1651,7 @@

    What is domainmatrix?
    -classmethod eye(shape, domain)[source]
    +classmethod eye(shape, domain)[source]

    Return identity matrix of size n or shape (m, n).

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -1672,7 +1672,7 @@ 

    What is domainmatrix?**kwargs,

    -)[source] +)[source]

    Convert Matrix to DomainMatrix

    Parameters:
    @@ -1716,7 +1716,7 @@

    What is domainmatrix?**kwargs,

    -)[source] +)[source]
    Parameters:

    nrows: number of rows

    @@ -1744,7 +1744,7 @@

    What is domainmatrix?
    -classmethod from_dod(dod, shape, domain)[source]
    +classmethod from_dod(dod, shape, domain)[source]

    Create sparse DomainMatrix from dict of dict (dod) format.

    See to_dod() for explanation.

    @@ -1755,7 +1755,7 @@

    What is domainmatrix?
    -from_dod_like(dod, domain=None)[source]
    +from_dod_like(dod, domain=None)[source]

    Create DomainMatrix like self from dict of dict (dod) format.

    See to_dod() for explanation.

    @@ -1766,7 +1766,7 @@

    What is domainmatrix?
    -classmethod from_dok(dok, shape, domain)[source]
    +classmethod from_dok(dok, shape, domain)[source]

    Create DomainMatrix from dictionary of keys (dok) format.

    See to_dok() for explanation.

    @@ -1777,7 +1777,7 @@

    What is domainmatrix?
    -from_flat_nz(elements, data, domain)[source]
    +from_flat_nz(elements, data, domain)[source]

    Reconstruct DomainMatrix after calling to_flat_nz().

    See to_flat_nz() for explanation.

    @@ -1788,7 +1788,7 @@

    What is domainmatrix?
    -classmethod from_list(rows, domain)[source]
    +classmethod from_list(rows, domain)[source]

    Convert a list of lists into a DomainMatrix

    Parameters:
    @@ -1833,7 +1833,7 @@

    What is domainmatrix?domain,

    -)[source] +)[source]

    Create DomainMatrix from flat list.

    Examples

    >>> from sympy import ZZ
    @@ -1863,7 +1863,7 @@ 

    What is domainmatrix?**kwargs,

    -)[source] +)[source]

    Convert a list of lists of Expr into a DomainMatrix using construct_domain

    Parameters:
    @@ -1891,7 +1891,7 @@

    What is domainmatrix?
    -classmethod from_rep(rep)[source]
    +classmethod from_rep(rep)[source]

    Create a new DomainMatrix efficiently from DDM/SDM.

    Parameters:
    @@ -1939,7 +1939,7 @@

    What is domainmatrix?
    -hstack(*B)[source]
    +hstack(*B)[source]

    Horizontally stack the given matrices.

    Parameters:
    @@ -1979,7 +1979,7 @@

    What is domainmatrix?
    -inv()[source]
    +inv()[source]

    Finds the inverse of the DomainMatrix if exists

    Returns:
    @@ -2018,7 +2018,7 @@

    What is domainmatrix?
    -inv_den(method=None)[source]
    +inv_den(method=None)[source]

    Return the inverse as a DomainMatrix with denominator.

    Parameters:
    @@ -2112,7 +2112,7 @@

    What is domainmatrix?
    -iter_items()[source]
    +iter_items()[source]

    Iterate over indices and values of nonzero elements of the matrix.

    Examples

    >>> from sympy import ZZ
    @@ -2130,7 +2130,7 @@ 

    What is domainmatrix?
    -iter_values()[source]
    +iter_values()[source]

    Iterate over nonzero elements of the matrix.

    Examples

    >>> from sympy import ZZ
    @@ -2148,7 +2148,7 @@ 

    What is domainmatrix?
    -lll(delta=MPQ(3, 4))[source]
    +lll(delta=MPQ(3, 4))[source]

    Performs the Lenstra–Lenstra–Lovász (LLL) basis reduction algorithm. See [R780] and [R781].

    @@ -2213,7 +2213,7 @@

    What is domainmatrix?
    -lll_transform(delta=MPQ(3, 4))[source]
    +lll_transform(delta=MPQ(3, 4))[source]

    Performs the Lenstra–Lenstra–Lovász (LLL) basis reduction algorithm and returns the reduced basis and transformation matrix.

    Explanation

    @@ -2242,7 +2242,7 @@

    What is domainmatrix?
    -lu()[source]
    +lu()[source]

    Returns Lower and Upper decomposition of the DomainMatrix

    Returns:
    @@ -2283,7 +2283,7 @@

    What is domainmatrix?
    -lu_solve(rhs)[source]
    +lu_solve(rhs)[source]

    Solver for DomainMatrix x in the A*x = B

    Parameters:
    @@ -2329,7 +2329,7 @@

    What is domainmatrix?
    -matmul(B)[source]
    +matmul(B)[source]

    Performs matrix multiplication of two DomainMatrix matrices

    Parameters:
    @@ -2368,7 +2368,7 @@

    What is domainmatrix?
    -mul(b)[source]
    +mul(b)[source]

    Performs term by term multiplication for the second DomainMatrix w.r.t first DomainMatrix. Returns a DomainMatrix whose rows are list of DomainMatrix matrices created after term by term multiplication.

    @@ -2407,7 +2407,7 @@

    What is domainmatrix?
    -neg()[source]
    +neg()[source]

    Returns the negative of DomainMatrix

    Parameters:
    @@ -2436,7 +2436,7 @@

    What is domainmatrix?
    -nnz()[source]
    +nnz()[source]

    Number of nonzero elements in the matrix.

    Examples

    >>> from sympy import ZZ
    @@ -2450,7 +2450,7 @@ 

    What is domainmatrix?
    -nullspace(divide_last=False)[source]
    +nullspace(divide_last=False)[source]

    Returns the nullspace for the DomainMatrix

    Parameters:
    @@ -2542,7 +2542,7 @@

    What is domainmatrix?
    -nullspace_from_rref(pivots=None)[source]
    +nullspace_from_rref(pivots=None)[source]

    Compute nullspace from rref and pivots.

    The domain of the matrix can be any domain.

    The matrix must be in reduced row echelon form already. Otherwise the @@ -2556,7 +2556,7 @@

    What is domainmatrix?
    -classmethod ones(shape, domain)[source]
    +classmethod ones(shape, domain)[source]

    Returns a DomainMatrix of 1s, of size shape, belonging to the specified domain

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -2569,7 +2569,7 @@ 

    What is domainmatrix?
    -pow(n)[source]
    +pow(n)[source]

    Computes A**n

    Parameters:
    @@ -2609,7 +2609,7 @@

    What is domainmatrix?
    -primitive()[source]
    +primitive()[source]

    Factor out gcd of the elements of a matrix.

    Requires gcd in the ground domain.

    Examples

    @@ -2635,7 +2635,7 @@

    What is domainmatrix?
    -qr()[source]
    +qr()[source]

    QR decomposition of the DomainMatrix.

    Returns:
    @@ -2687,7 +2687,7 @@

    What is domainmatrix?
    -rowspace()[source]
    +rowspace()[source]

    Returns the rowspace for the DomainMatrix

    Returns:
    @@ -2711,7 +2711,7 @@

    What is domainmatrix?
    -rref(*, method='auto')[source]
    +rref(*, method='auto')[source]

    Returns reduced-row echelon form (RREF) and list of pivots.

    If the domain is not a field then it will be converted to a field. See rref_den() for the fraction-free version of this routine that @@ -2806,7 +2806,7 @@

    What is domainmatrix?keep_domain=True,

    -)[source] +)[source]

    Returns reduced-row echelon form with denominator and list of pivots.

    Requires exact division in the ground domain (exquo).

    @@ -2911,7 +2911,7 @@

    What is domainmatrix?
    -scc()[source]
    +scc()[source]

    Compute the strongly connected components of a DomainMatrix

    Returns:
    @@ -2979,7 +2979,7 @@

    What is domainmatrix?
    -solve_den(b, method=None)[source]
    +solve_den(b, method=None)[source]

    Solve matrix equation \(Ax = b\) without fractions in the ground domain.

    Parameters:
    @@ -3113,7 +3113,7 @@

    What is domainmatrix?check=True,

    -)[source] +)[source]

    Solve matrix equation \(Ax = b\) using the characteristic polynomial.

    This method solves the square matrix equation \(Ax = b\) for \(x\) using the characteristic polynomial without any division or fractions in the @@ -3184,7 +3184,7 @@

    What is domainmatrix?
    -solve_den_rref(b)[source]
    +solve_den_rref(b)[source]

    Solve matrix equation \(Ax = b\) using fraction-free RREF

    Solves the matrix equation \(Ax = b\) for \(x\) and returns the solution as a numerator/denominator pair.

    @@ -3210,7 +3210,7 @@

    What is domainmatrix?
    -sub(B)[source]
    +sub(B)[source]

    Subtracts two DomainMatrix matrices of the same Domain

    Parameters:
    @@ -3259,7 +3259,7 @@

    What is domainmatrix?
    -to_Matrix()[source]
    +to_Matrix()[source]

    Convert DomainMatrix to Matrix

    Returns:
    @@ -3291,7 +3291,7 @@

    What is domainmatrix?
    -to_ddm()[source]
    +to_ddm()[source]

    Return a DDM representation of self.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3312,7 +3312,7 @@ 

    What is domainmatrix?
    -to_dense()[source]
    +to_dense()[source]

    Return a dense DomainMatrix representation of self.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3329,7 +3329,7 @@ 

    What is domainmatrix?
    -to_dfm()[source]
    +to_dfm()[source]

    Return a DFM representation of self.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3350,7 +3350,7 @@ 

    What is domainmatrix?
    -to_dfm_or_ddm()[source]
    +to_dfm_or_ddm()[source]

    Return a DFM or DDM representation of self.

    Explanation

    The DFM representation can only be used if the ground types @@ -3387,7 +3387,7 @@

    What is domainmatrix?
    -to_dod()[source]
    +to_dod()[source]

    Convert DomainMatrix to dictionary of dictionaries (dod) format.

    Explanation

    Returns a dictionary of dictionaries representing the matrix.

    @@ -3411,7 +3411,7 @@

    What is domainmatrix?
    -to_dok()[source]
    +to_dok()[source]

    Convert DomainMatrix to dictionary of keys (dok) format.

    Examples

    >>> from sympy import ZZ
    @@ -3437,7 +3437,7 @@ 

    What is domainmatrix?
    -to_field()[source]
    +to_field()[source]

    Returns a DomainMatrix with the appropriate field

    Returns:
    @@ -3463,7 +3463,7 @@

    What is domainmatrix?
    -to_flat_nz()[source]
    +to_flat_nz()[source]

    Convert DomainMatrix to list of nonzero elements and data.

    Explanation

    Returns a tuple (elements, data) where elements is a list of @@ -3506,7 +3506,7 @@

    What is domainmatrix?
    -to_list()[source]
    +to_list()[source]

    Convert DomainMatrix to list of lists.

    See also

    @@ -3516,7 +3516,7 @@

    What is domainmatrix?
    -to_list_flat()[source]
    +to_list_flat()[source]

    Convert DomainMatrix to flat list.

    Examples

    >>> from sympy import ZZ
    @@ -3534,7 +3534,7 @@ 

    What is domainmatrix?
    -to_sdm()[source]
    +to_sdm()[source]

    Return a SDM representation of self.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3555,7 +3555,7 @@ 

    What is domainmatrix?
    -to_sparse()[source]
    +to_sparse()[source]

    Return a sparse DomainMatrix representation of self.

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3572,13 +3572,13 @@ 

    What is domainmatrix?
    -transpose()[source]
    +transpose()[source]

    Matrix transpose of self

    -unify(*others, fmt=None)[source]
    +unify(*others, fmt=None)[source]

    Unifies the domains and the format of self and other matrices.

    @@ -3631,7 +3631,7 @@

    What is domainmatrix?
    -vstack(*B)[source]
    +vstack(*B)[source]

    Vertically stack the given matrices.

    Parameters:
    @@ -3671,7 +3671,7 @@

    What is domainmatrix?
    -classmethod zeros(shape, domain, *, fmt='sparse')[source]
    +classmethod zeros(shape, domain, *, fmt='sparse')[source]

    Returns a zero DomainMatrix of size shape, belonging to the specified domain

    Examples

    >>> from sympy.polys.matrices import DomainMatrix
    @@ -3741,31 +3741,31 @@ 

    What is domainmatrix?
    -class sympy.polys.matrices.ddm.DDM(rowslist, shape, domain)[source]
    +class sympy.polys.matrices.ddm.DDM(rowslist, shape, domain)[source]

    Dense matrix based on polys domain elements

    This is a list subclass and is a wrapper for a list of lists that supports basic matrix arithmetic +, -, , *.

    -add(b)[source]
    +add(b)[source]

    a + b

    -charpoly()[source]
    +charpoly()[source]

    Coefficients of characteristic polynomial of a

    -det()[source]
    +det()[source]

    Determinant of a

    -classmethod diag(values, domain)[source]
    +classmethod diag(values, domain)[source]

    Returns a square diagonal matrix with values on the diagonal.

    Examples

    >>> from sympy import ZZ
    @@ -3782,13 +3782,13 @@ 

    What is domainmatrix?
    -diagonal()[source]
    +diagonal()[source]

    Returns a list of the elements from the diagonal of the matrix.

    -classmethod from_dod(dod, shape, domain)[source]
    +classmethod from_dod(dod, shape, domain)[source]

    Create a DDM from a dictionary of dictionaries (dod) format.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -3807,7 +3807,7 @@ 

    What is domainmatrix?
    -classmethod from_dok(dok, shape, domain)[source]
    +classmethod from_dok(dok, shape, domain)[source]

    Create a DDM from a dictionary of keys (dok) format.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -3826,7 +3826,7 @@ 

    What is domainmatrix?
    -classmethod from_flat_nz(elements, data, domain)[source]
    +classmethod from_flat_nz(elements, data, domain)[source]

    Reconstruct a DDM after calling to_flat_nz().

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -3847,7 +3847,7 @@ 

    What is domainmatrix?
    -classmethod from_list(rowslist, shape, domain)[source]
    +classmethod from_list(rowslist, shape, domain)[source]

    Create a DDM from a list of lists.

    Examples

    >>> from sympy import ZZ
    @@ -3867,7 +3867,7 @@ 

    What is domainmatrix?
    -classmethod from_list_flat(flat, shape, domain)[source]
    +classmethod from_list_flat(flat, shape, domain)[source]

    Create a DDM from a flat list of elements.

    Examples

    >>> from sympy import QQ
    @@ -3887,7 +3887,7 @@ 

    What is domainmatrix?
    -hstack(*B)[source]
    +hstack(*B)[source]

    Horizontally stacks DDM matrices.

    Examples

    >>> from sympy import ZZ
    @@ -3909,40 +3909,40 @@ 

    What is domainmatrix?
    -inv()[source]
    +inv()[source]

    Inverse of a

    -is_diagonal()[source]
    +is_diagonal()[source]

    Says whether this matrix is diagonal. True can be returned even if the matrix is not square.

    -is_lower()[source]
    +is_lower()[source]

    Says whether this matrix is lower-triangular. True can be returned even if the matrix is not square.

    -is_upper()[source]
    +is_upper()[source]

    Says whether this matrix is upper-triangular. True can be returned even if the matrix is not square.

    -is_zero_matrix()[source]
    +is_zero_matrix()[source]

    Says whether this matrix has all zero entries.

    -iter_items()[source]
    +iter_items()[source]

    Iterate over indices and values of nonzero elements of the matrix.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -3960,7 +3960,7 @@ 

    What is domainmatrix?
    -iter_values()[source]
    +iter_values()[source]

    Iterater over the non-zero values of the matrix.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -3978,31 +3978,31 @@ 

    What is domainmatrix?
    -lu()[source]
    +lu()[source]

    L, U decomposition of a

    -lu_solve(b)[source]
    +lu_solve(b)[source]

    x where a*x = b

    -matmul(b)[source]
    +matmul(b)[source]

    a @ b (matrix product)

    -neg()[source]
    +neg()[source]

    -a

    -nnz()[source]
    +nnz()[source]

    Number of non-zero entries in DDM matrix.

    See also

    @@ -4012,7 +4012,7 @@

    What is domainmatrix?
    -nullspace()[source]
    +nullspace()[source]

    Returns a basis for the nullspace of a.

    The domain of the matrix must be a field.

    @@ -4023,7 +4023,7 @@

    What is domainmatrix?
    -nullspace_from_rref(pivots=None)[source]
    +nullspace_from_rref(pivots=None)[source]

    Compute the nullspace of a matrix from its rref.

    The domain of the matrix can be any domain.

    Returns a tuple (basis, nonpivots).

    @@ -4038,7 +4038,7 @@

    What is domainmatrix?
    -qr()[source]
    +qr()[source]

    QR decomposition for DDM.

    Returns:
    -to_ddm()[source]
    +to_ddm()[source]

    Convert to a DDM.

    This just returns self but exists to parallel the corresponding method in other matrix types like SDM.

    @@ -4124,7 +4124,7 @@

    What is domainmatrix?
    -to_dfm()[source]
    +to_dfm()[source]

    Convert to DDM to DFM.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4144,7 +4144,7 @@ 

    What is domainmatrix?
    -to_dfm_or_ddm()[source]
    +to_dfm_or_ddm()[source]

    Convert to DFM if possible or otherwise return self.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4164,7 +4164,7 @@ 

    What is domainmatrix?
    -to_dod()[source]
    +to_dod()[source]

    Convert to a dictionary of dictionaries (dod) format.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4182,7 +4182,7 @@ 

    What is domainmatrix?
    -to_dok()[source]
    +to_dok()[source]

    Convert DDM to dictionary of keys (dok) format.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4200,7 +4200,7 @@ 

    What is domainmatrix?
    -to_flat_nz()[source]
    +to_flat_nz()[source]

    Convert to a flat list of nonzero elements and data.

    Explanation

    This is used to operate on a list of the elements of a matrix and then @@ -4225,7 +4225,7 @@

    What is domainmatrix?
    -to_list()[source]
    +to_list()[source]

    Convert to a list of lists.

    Examples

    >>> from sympy import QQ
    @@ -4243,7 +4243,7 @@ 

    What is domainmatrix?
    -to_list_flat()[source]
    +to_list_flat()[source]

    Convert to a flat list of elements.

    Examples

    >>> from sympy import QQ
    @@ -4263,7 +4263,7 @@ 

    What is domainmatrix?
    -to_sdm()[source]
    +to_sdm()[source]

    Convert to a SDM.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4283,7 +4283,7 @@ 

    What is domainmatrix?
    -vstack(*B)[source]
    +vstack(*B)[source]

    Vertically stacks DDM matrices.

    Examples

    >>> from sympy import ZZ
    @@ -4352,7 +4352,7 @@ 

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_berk(M, K)[source]
    +sympy.polys.matrices.dense.ddm_berk(M, K)[source]

    Berkowitz algorithm for computing the characteristic polynomial.

    Explanation

    The Berkowitz algorithm is a division-free algorithm for computing the @@ -4394,13 +4394,13 @@

    What is domainmatrix?b: Sequence[Sequence[R]],

    -) None[source] +) None[source]

    a += b

    -sympy.polys.matrices.dense.ddm_idet(a, K)[source]
    +sympy.polys.matrices.dense.ddm_idet(a, K)[source]

    a <– echelon(a); return det

    Explanation

    Compute the determinant of \(a\) using the Bareiss fraction-free algorithm. @@ -4443,7 +4443,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_iinv(ainv, a, K)[source]
    +sympy.polys.matrices.dense.ddm_iinv(ainv, a, K)[source]

    ainv <– inv(a)

    Compute the inverse of a matrix \(a\) over a field \(K\) using Gauss-Jordan elimination. The result is stored in \(ainv\).

    @@ -4473,7 +4473,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_ilu(a)[source]
    +sympy.polys.matrices.dense.ddm_ilu(a)[source]

    a <– LU(a)

    Computes the LU decomposition of a matrix in place. Returns a list of row swaps that were performed.

    @@ -4518,7 +4518,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_ilu_solve(x, L, U, swaps, b)[source]
    +sympy.polys.matrices.dense.ddm_ilu_solve(x, L, U, swaps, b)[source]

    x <– solve(L*U*x = swaps(b))

    Solve a linear system, \(A*x = b\), given an LU factorization of \(A\).

    Uses division in the ground domain which must be a field.

    @@ -4557,7 +4557,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_ilu_split(L, U, K)[source]
    +sympy.polys.matrices.dense.ddm_ilu_split(L, U, K)[source]

    L, U <– LU(U)

    Compute the LU decomposition of a matrix \(L\) in place and store the lower and upper triangular matrices in \(L\) and \(U\), respectively. Returns a list @@ -4593,7 +4593,7 @@

    What is domainmatrix?c: Sequence[Sequence[R]],

    -) None[source] +) None[source]

    a += b @ c

    @@ -4606,7 +4606,7 @@

    What is domainmatrix?b: R,

    -) None[source] +) None[source]

    a <– a*b

    @@ -4618,7 +4618,7 @@

    What is domainmatrix?a: list[list[R]],

    -) None[source] +) None[source]

    a <– -a

    @@ -4631,13 +4631,13 @@

    What is domainmatrix?b: R,

    -) None[source] +) None[source]

    a <– b*a

    -sympy.polys.matrices.dense.ddm_irref(a, _partial_pivot=False)[source]
    +sympy.polys.matrices.dense.ddm_irref(a, _partial_pivot=False)[source]

    In-place reduced row echelon form of a matrix.

    Compute the reduced row echelon form of \(a\). Modifies \(a\) in place and returns a list of the pivot columns.

    @@ -4686,7 +4686,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.dense.ddm_irref_den(a, K)[source]
    +sympy.polys.matrices.dense.ddm_irref_den(a, K)[source]

    a <– rref(a); return (den, pivots)

    Compute the fraction-free reduced row echelon form (RREF) of \(a\). Modifies \(a\) in place and returns a tuple containing the denominator of the RREF and @@ -4752,7 +4752,7 @@

    What is domainmatrix?b: Sequence[Sequence[R]],

    -) None[source] +) None[source]

    a -= b

    @@ -4764,13 +4764,13 @@

    What is domainmatrix?matrix: Sequence[Sequence[T]],

    -) list[list[T]][source] +) list[list[T]][source]

    matrix transpose

    -class sympy.polys.matrices._typing.RingElement(*args, **kwargs)[source]
    +class sympy.polys.matrices._typing.RingElement(*args, **kwargs)[source]

    A ring element.

    Must support +, -, *, ** and -.

    @@ -4778,7 +4778,7 @@

    What is domainmatrix?Module for the SDM class.

    -class sympy.polys.matrices.sdm.SDM(elemsdict, shape, domain)[source]
    +class sympy.polys.matrices.sdm.SDM(elemsdict, shape, domain)[source]

    Sparse matrix based on polys domain elements

    This is a dict subclass and is a wrapper for a dict of dicts that supports basic matrix arithmetic +, -, , *.

    @@ -4822,7 +4822,7 @@

    What is domainmatrix?
    -add(B)[source]
    +add(B)[source]

    Adds two SDM matrices

    Examples

    >>> from sympy import ZZ
    @@ -4837,7 +4837,7 @@ 

    What is domainmatrix?
    -charpoly()[source]
    +charpoly()[source]

    Returns the coefficients of the characteristic polynomial of the SDM matrix. These elements will be domain elements. The domain of the elements will be same as domain of the SDM.

    @@ -4862,7 +4862,7 @@

    What is domainmatrix?
    -convert_to(K)[source]
    +convert_to(K)[source]

    Converts the Domain of a SDM matrix to K

    Examples

    >>> from sympy import ZZ, QQ
    @@ -4876,7 +4876,7 @@ 

    What is domainmatrix?
    -copy()[source]
    +copy()[source]

    Returns the copy of a SDM object

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -4892,7 +4892,7 @@ 

    What is domainmatrix?
    -det()[source]
    +det()[source]

    Returns determinant of A

    Examples

    >>> from sympy import QQ
    @@ -4906,13 +4906,13 @@ 

    What is domainmatrix?
    -diagonal()[source]
    +diagonal()[source]

    Returns the diagonal of the matrix as a list.

    -classmethod eye(shape, domain)[source]
    +classmethod eye(shape, domain)[source]

    Returns a identity SDM matrix of dimensions size x size, belonging to the specified domain

    Examples

    @@ -4927,7 +4927,7 @@

    What is domainmatrix?
    -classmethod from_ddm(ddm)[source]
    +classmethod from_ddm(ddm)[source]

    Create SDM from a DDM.

    Examples

    >>> from sympy.polys.matrices.ddm import DDM
    @@ -4949,7 +4949,7 @@ 

    What is domainmatrix?
    -classmethod from_dod(dod, shape, domain)[source]
    +classmethod from_dod(dod, shape, domain)[source]

    Create SDM from dictionary of dictionaries (dod) format.

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -4970,7 +4970,7 @@ 

    What is domainmatrix?
    -classmethod from_dok(dok, shape, domain)[source]
    +classmethod from_dok(dok, shape, domain)[source]

    Create SDM from dictionary of keys (dok) format.

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -4991,7 +4991,7 @@ 

    What is domainmatrix?
    -classmethod from_flat_nz(elements, data, domain)[source]
    +classmethod from_flat_nz(elements, data, domain)[source]

    Reconstruct a SDM after calling to_flat_nz().

    See to_flat_nz() for explanation.

    @@ -5002,7 +5002,7 @@

    What is domainmatrix?
    -classmethod from_list(ddm, shape, domain)[source]
    +classmethod from_list(ddm, shape, domain)[source]

    Create SDM object from a list of lists.

    Parameters:
    @@ -5040,7 +5040,7 @@

    What is domainmatrix?
    -classmethod from_list_flat(elements, shape, domain)[source]
    +classmethod from_list_flat(elements, shape, domain)[source]

    Create SDM from a flat list of elements.

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -5060,7 +5060,7 @@ 

    What is domainmatrix?
    -hstack(*B)[source]
    +hstack(*B)[source]

    Horizontally stacks SDM matrices.

    Examples

    >>> from sympy import ZZ
    @@ -5082,7 +5082,7 @@ 

    What is domainmatrix?
    -inv()[source]
    +inv()[source]

    Returns inverse of a matrix A

    Examples

    >>> from sympy import QQ
    @@ -5096,34 +5096,34 @@ 

    What is domainmatrix?
    -is_diagonal()[source]
    +is_diagonal()[source]

    Says whether this matrix is diagonal. True can be returned even if the matrix is not square.

    -is_lower()[source]
    +is_lower()[source]

    Says whether this matrix is lower-triangular. True can be returned even if the matrix is not square.

    -is_upper()[source]
    +is_upper()[source]

    Says whether this matrix is upper-triangular. True can be returned even if the matrix is not square.

    -is_zero_matrix()[source]
    +is_zero_matrix()[source]

    Says whether this matrix has all zero entries.

    -iter_items()[source]
    +iter_items()[source]

    Iterate over indices and values of the nonzero elements.

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -5141,7 +5141,7 @@ 

    What is domainmatrix?
    -iter_values()[source]
    +iter_values()[source]

    Iterate over the nonzero values of a SDM matrix.

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -5155,19 +5155,19 @@ 

    What is domainmatrix?
    -lll(delta=MPQ(3, 4))[source]
    +lll(delta=MPQ(3, 4))[source]

    Returns the LLL-reduced basis for the SDM matrix.

    -lll_transform(delta=MPQ(3, 4))[source]
    +lll_transform(delta=MPQ(3, 4))[source]

    Returns the LLL-reduced basis and transformation matrix.

    -lu()[source]
    +lu()[source]

    Returns LU decomposition for a matrix A

    Examples

    >>> from sympy import QQ
    @@ -5181,7 +5181,7 @@ 

    What is domainmatrix?
    -lu_solve(b)[source]
    +lu_solve(b)[source]

    Uses LU decomposition to solve Ax = b,

    Examples

    >>> from sympy import QQ
    @@ -5196,7 +5196,7 @@ 

    What is domainmatrix?
    -matmul(B)[source]
    +matmul(B)[source]

    Performs matrix multiplication of two SDM matrices

    Parameters:
    @@ -5229,7 +5229,7 @@

    What is domainmatrix?
    -mul(b)[source]
    +mul(b)[source]

    Multiplies each element of A with a scalar b

    Examples

    >>> from sympy import ZZ
    @@ -5243,7 +5243,7 @@ 

    What is domainmatrix?
    -neg()[source]
    +neg()[source]

    Returns the negative of a SDM matrix

    Examples

    >>> from sympy import ZZ
    @@ -5257,7 +5257,7 @@ 

    What is domainmatrix?
    -classmethod new(sdm, shape, domain)[source]
    +classmethod new(sdm, shape, domain)[source]
    Parameters:

    sdm: A dict of dicts for non-zero elements in SDM

    @@ -5281,7 +5281,7 @@

    What is domainmatrix?
    -nnz()[source]
    +nnz()[source]

    Number of non-zero elements in the SDM matrix.

    Examples

    >>> from sympy import ZZ
    @@ -5299,7 +5299,7 @@ 

    What is domainmatrix?
    -nullspace()[source]
    +nullspace()[source]

    Nullspace of a SDM matrix A.

    The domain of the matrix must be a field.

    It is better to use the nullspace() method rather @@ -5323,7 +5323,7 @@

    What is domainmatrix?
    -nullspace_from_rref(pivots=None)[source]
    +nullspace_from_rref(pivots=None)[source]

    Returns nullspace for a SDM matrix A in RREF.

    The domain of the matrix can be any domain.

    The matrix must already be in reduced row echelon form (RREF).

    @@ -5356,7 +5356,7 @@

    What is domainmatrix?
    -qr()[source]
    +qr()[source]

    QR decomposition for SDM (Sparse Domain Matrix).

    Returns:
      @@ -5369,7 +5369,7 @@

      What is domainmatrix?
      -rref()[source]
      +rref()[source]

      Returns reduced-row echelon form and list of pivots for the SDM

      Examples

      >>> from sympy import QQ
      @@ -5383,7 +5383,7 @@ 

      What is domainmatrix?
      -rref_den()[source]
      +rref_den()[source]

      Returns reduced-row echelon form (RREF) with denominator and pivots.

      Examples

      >>> from sympy import QQ
      @@ -5397,7 +5397,7 @@ 

      What is domainmatrix?
      -scc()[source]
      +scc()[source]

      Strongly connected components of a square matrix A.

      Examples

      >>> from sympy import ZZ
      @@ -5415,7 +5415,7 @@ 

      What is domainmatrix?
      -sub(B)[source]
      +sub(B)[source]

      Subtracts two SDM matrices

      Examples

      >>> from sympy import ZZ
      @@ -5430,7 +5430,7 @@ 

      What is domainmatrix?
      -to_ddm()[source]
      +to_ddm()[source]

      Convert a SDM object to a DDM object

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5444,7 +5444,7 @@ 

      What is domainmatrix?
      -to_dfm()[source]
      +to_dfm()[source]

      Convert a SDM object to a DFM object

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5462,7 +5462,7 @@ 

      What is domainmatrix?
      -to_dfm_or_ddm()[source]
      +to_dfm_or_ddm()[source]

      Convert to DFM if possible, else DDM.

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5482,7 +5482,7 @@ 

      What is domainmatrix?
      -to_dod()[source]
      +to_dod()[source]

      Convert to dictionary of dictionaries (dod) format.

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5500,7 +5500,7 @@ 

      What is domainmatrix?
      -to_dok()[source]
      +to_dok()[source]

      Convert to dictionary of keys (dok) format.

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5518,7 +5518,7 @@ 

      What is domainmatrix?
      -to_flat_nz()[source]
      +to_flat_nz()[source]

      Convert SDM to a flat list of nonzero elements and data.

      Explanation

      This is used to operate on a list of the elements of a matrix and then @@ -5543,7 +5543,7 @@

      What is domainmatrix?
      -to_list()[source]
      +to_list()[source]

      Convert a SDM object to a list of lists.

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5558,7 +5558,7 @@ 

      What is domainmatrix?
      -to_list_flat()[source]
      +to_list_flat()[source]

      Convert SDM to a flat list.

      Examples

      >>> from sympy.polys.matrices.sdm import SDM
      @@ -5578,13 +5578,13 @@ 

      What is domainmatrix?
      -to_sdm()[source]
      +to_sdm()[source]

      Convert to SDM format (returns self).

    -transpose()[source]
    +transpose()[source]

    Returns the transpose of a SDM matrix

    Examples

    >>> from sympy.polys.matrices.sdm import SDM
    @@ -5598,7 +5598,7 @@ 

    What is domainmatrix?
    -vstack(*B)[source]
    +vstack(*B)[source]

    Vertically stacks SDM matrices.

    Examples

    >>> from sympy import ZZ
    @@ -5620,7 +5620,7 @@ 

    What is domainmatrix?
    -classmethod zeros(shape, domain)[source]
    +classmethod zeros(shape, domain)[source]

    Returns a SDM of size shape, belonging to the specified domain

    In the example below we declare a matrix A where,

    @@ -5643,7 +5643,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.sdm.sdm_berk(M, n, K)[source]
    +sympy.polys.matrices.sdm.sdm_berk(M, n, K)[source]

    Berkowitz algorithm for computing the characteristic polynomial.

    Explanation

    The Berkowitz algorithm is a division-free algorithm for computing the @@ -5681,7 +5681,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.sdm.sdm_irref(A)[source]
    +sympy.polys.matrices.sdm.sdm_irref(A)[source]

    RREF and pivots of a sparse matrix A.

    Compute the reduced row echelon form (RREF) of the matrix A and return a list of the pivot columns. This routine does not work in place and leaves @@ -5748,19 +5748,19 @@

    What is domainmatrix?nonzero_cols,

    -)[source] +)[source]

    Get nullspace from A which is in RREF

    -sympy.polys.matrices.sdm.sdm_particular_from_rref(A, ncols, pivots)[source]
    +sympy.polys.matrices.sdm.sdm_particular_from_rref(A, ncols, pivots)[source]

    Get a particular solution from A which is in RREF

    -sympy.polys.matrices.sdm.sdm_rref_den(A, K)[source]
    +sympy.polys.matrices.sdm.sdm_rref_den(A, K)[source]

    Return the reduced row echelon form (RREF) of A with denominator.

    The RREF is computed using fraction-free Gauss-Jordan elimination.

    Explanation

    @@ -5814,7 +5814,7 @@

    What is domainmatrix?
    -class sympy.polys.matrices._dfm.DFM(rowslist, shape, domain)[source]
    +class sympy.polys.matrices._dfm.DFM(rowslist, shape, domain)[source]

    Dense FLINT matrix. This class is a wrapper for matrices from python-flint.

    >>> from sympy.polys.domains import ZZ
     >>> from sympy.polys.matrices.dfm import DFM
    @@ -5848,19 +5848,19 @@ 

    What is domainmatrix?
    -add(other)[source]
    +add(other)[source]

    Add two DFM matrices.

    -applyfunc(func, domain)[source]
    +applyfunc(func, domain)[source]

    Apply a function to each entry of a DFM matrix.

    -charpoly()[source]
    +charpoly()[source]

    Compute the characteristic polynomial of the matrix using FLINT.

    Examples

    >>> from sympy import Matrix
    @@ -5895,19 +5895,19 @@ 

    What is domainmatrix?
    -convert_to(domain)[source]
    +convert_to(domain)[source]

    Convert to a new domain.

    -copy()[source]
    +copy()[source]

    Return a copy of self.

    -det()[source]
    +det()[source]

    Compute the determinant of the matrix using FLINT.

    Examples

    >>> from sympy import Matrix
    @@ -5948,85 +5948,85 @@ 

    What is domainmatrix?
    -classmethod diag(elements, domain)[source]
    +classmethod diag(elements, domain)[source]

    Return a diagonal matrix.

    -diagonal()[source]
    +diagonal()[source]

    Return the diagonal of a DFM matrix.

    -extract(rowslist, colslist)[source]
    +extract(rowslist, colslist)[source]

    Extract a submatrix.

    -extract_slice(rowslice, colslice)[source]
    +extract_slice(rowslice, colslice)[source]

    Slice a DFM.

    -classmethod eye(n, domain)[source]
    +classmethod eye(n, domain)[source]

    Return the identity matrix of size n.

    -classmethod from_ddm(ddm)[source]
    +classmethod from_ddm(ddm)[source]

    Convert from a DDM.

    -classmethod from_dod(dod, shape, domain)[source]
    +classmethod from_dod(dod, shape, domain)[source]

    Inverse of to_dod().

    -classmethod from_dok(dok, shape, domain)[source]
    +classmethod from_dok(dok, shape, domain)[source]

    Inverse of \(to_dod\).

    -classmethod from_flat_nz(elements, data, domain)[source]
    +classmethod from_flat_nz(elements, data, domain)[source]

    Inverse of to_flat_nz().

    -classmethod from_list(rowslist, shape, domain)[source]
    +classmethod from_list(rowslist, shape, domain)[source]

    Construct from a nested list.

    -classmethod from_list_flat(elements, shape, domain)[source]
    +classmethod from_list_flat(elements, shape, domain)[source]

    Inverse of to_list_flat().

    -getitem(i, j)[source]
    +getitem(i, j)[source]

    Get the (i, j)-th entry.

    -hstack(*others)[source]
    +hstack(*others)[source]

    Horizontally stack matrices.

    -inv()[source]
    +inv()[source]

    Compute the inverse of a matrix using FLINT.

    Examples

    >>> from sympy import Matrix, QQ
    @@ -6062,43 +6062,43 @@ 

    What is domainmatrix?
    -is_diagonal()[source]
    +is_diagonal()[source]

    Return True if the matrix is diagonal.

    -is_lower()[source]
    +is_lower()[source]

    Return True if the matrix is lower triangular.

    -is_upper()[source]
    +is_upper()[source]

    Return True if the matrix is upper triangular.

    -is_zero_matrix()[source]
    +is_zero_matrix()[source]

    Return True if the matrix is the zero matrix.

    -iter_items()[source]
    +iter_items()[source]

    Iterate over indices and values of nonzero elements of the matrix.

    -iter_values()[source]
    +iter_values()[source]

    Iterater over the non-zero values of the matrix.

    -lll(delta=0.75)[source]
    +lll(delta=0.75)[source]

    Compute LLL-reduced basis using FLINT.

    See lll_transform() for more information.

    Examples

    @@ -6121,7 +6121,7 @@

    What is domainmatrix?
    -lll_transform(delta=0.75)[source]
    +lll_transform(delta=0.75)[source]

    Compute LLL-reduced basis and transform using FLINT.

    Examples

    >>> from sympy import Matrix
    @@ -6148,13 +6148,13 @@ 

    What is domainmatrix?
    -lu()[source]
    +lu()[source]

    Return the LU decomposition of the matrix.

    -lu_solve(rhs)[source]
    +lu_solve(rhs)[source]

    Solve a matrix equation using FLINT.

    Examples

    >>> from sympy import Matrix, QQ
    @@ -6197,103 +6197,103 @@ 

    What is domainmatrix?
    -matmul(other)[source]
    +matmul(other)[source]

    Multiply two DFM matrices.

    -mul(other)[source]
    +mul(other)[source]

    Multiply a DFM matrix from the right by a scalar.

    -mul_elementwise(other)[source]
    +mul_elementwise(other)[source]

    Elementwise multiplication of two DFM matrices.

    -neg()[source]
    +neg()[source]

    Negate a DFM matrix.

    -nnz()[source]
    +nnz()[source]

    Return the number of non-zero elements in the matrix.

    -nullspace()[source]
    +nullspace()[source]

    Return a basis for the nullspace of the matrix.

    -nullspace_from_rref(pivots=None)[source]
    +nullspace_from_rref(pivots=None)[source]

    Return a basis for the nullspace of the matrix.

    -classmethod ones(shape, domain)[source]
    +classmethod ones(shape, domain)[source]

    Return a one DFM matrix.

    -particular()[source]
    +particular()[source]

    Return a particular solution to the system.

    -qr()[source]
    +qr()[source]

    Return the QR decomposition of the matrix.

    -rmul(other)[source]
    +rmul(other)[source]

    Multiply a DFM matrix from the left by a scalar.

    -scc()[source]
    +scc()[source]

    Return the strongly connected components of the matrix.

    -setitem(i, j, value)[source]
    +setitem(i, j, value)[source]

    Set the (i, j)-th entry.

    -sub(other)[source]
    +sub(other)[source]

    Subtract two DFM matrices.

    -to_ddm()[source]
    +to_ddm()[source]

    Convert to a DDM.

    -to_dfm()[source]
    +to_dfm()[source]

    Return self.

    -to_dfm_or_ddm()[source]
    +to_dfm_or_ddm()[source]

    Convert to a DFM.

    This DFM method exists to parallel the DDM and SDM methods. For DFM it will always return self.

    @@ -6305,55 +6305,55 @@

    What is domainmatrix?
    -to_dod()[source]
    +to_dod()[source]

    Convert to a DOD.

    -to_dok()[source]
    +to_dok()[source]

    Convert to a DOK.

    -to_flat_nz()[source]
    +to_flat_nz()[source]

    Convert to a flat list of non-zeros.

    -to_list()[source]
    +to_list()[source]

    Convert to a nested list.

    -to_list_flat()[source]
    +to_list_flat()[source]

    Convert to a flat list.

    -to_sdm()[source]
    +to_sdm()[source]

    Convert to a SDM.

    -transpose()[source]
    +transpose()[source]

    Transpose a DFM matrix.

    -vstack(*others)[source]
    +vstack(*others)[source]

    Vertically stack matrices.

    -classmethod zeros(shape, domain)[source]
    +classmethod zeros(shape, domain)[source]

    Return a zero DFM matrix.

    @@ -6361,7 +6361,7 @@

    What is domainmatrix?
    -sympy.polys.matrices.normalforms.smith_normal_form(m)[source]
    +sympy.polys.matrices.normalforms.smith_normal_form(m)[source]

    Return the Smith Normal Form of a matrix \(m\) over the ring \(domain\). This will only work if the ring is a principal ideal domain.

    Examples

    @@ -6388,7 +6388,7 @@

    What is domainmatrix?check_rank=False,

    -)[source] +)[source]

    Compute the Hermite Normal Form of DomainMatrix A over ZZ.

    diff --git a/dev/modules/polys/domainsref.html b/dev/modules/polys/domainsref.html index a106dea57a7..9a05a331a58 100644 --- a/dev/modules/polys/domainsref.html +++ b/dev/modules/polys/domainsref.html @@ -830,7 +830,7 @@

    Domains

    Abstract Domains

    -class sympy.polys.domains.domain.Domain[source]
    +class sympy.polys.domains.domain.Domain[source]

    Superclass for all domains in the polys domains system.

    See Introducing the Domains of the poly module for an introductory explanation of the domains system.

    @@ -1001,13 +1001,13 @@

    Abstract Domains
    -abs(a)[source]
    +abs(a)[source]

    Absolute value of a, implies __abs__.

    -add(a, b)[source]
    +add(a, b)[source]

    Sum of a and b, implies __add__.

    @@ -1021,7 +1021,7 @@

    Abstract Domainsroot_index=-1,

    -)[source] +)[source]

    Convenience method to construct an algebraic extension on a root of a polynomial, chosen by root index.

    @@ -1064,37 +1064,37 @@

    Abstract Domains
    -algebraic_field(*extension, alias=None)[source]
    +algebraic_field(*extension, alias=None)[source]

    Returns an algebraic field, i.e. \(K(\alpha, \ldots)\).

    -almosteq(a, b, tolerance=None)[source]
    +almosteq(a, b, tolerance=None)[source]

    Check if a and b are almost equal.

    -characteristic()[source]
    +characteristic()[source]

    Return the characteristic of this domain.

    -cofactors(a, b)[source]
    +cofactors(a, b)[source]

    Returns GCD and cofactors of a and b.

    -convert(element, base=None)[source]
    +convert(element, base=None)[source]

    Convert element to self.dtype.

    -convert_from(element, base)[source]
    +convert_from(element, base)[source]

    Convert element to self.dtype given the base domain.

    @@ -1110,7 +1110,7 @@

    Abstract Domainsroot_index=-1,

    -)[source] +)[source]

    Convenience method to construct a cyclotomic field.

    Parameters:
    @@ -1156,13 +1156,13 @@

    Abstract Domains
    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -div(a, b)[source]
    +div(a, b)[source]

    Quotient and remainder for a and b. Analogue of divmod(a, b)

    Parameters:
    @@ -1244,7 +1244,7 @@

    Abstract Domains
    -drop(*symbols)[source]
    +drop(*symbols)[source]

    Drop generators from this domain.

    @@ -1274,13 +1274,13 @@

    Abstract Domains
    -evalf(a, prec=None, **options)[source]
    +evalf(a, prec=None, **options)[source]

    Returns numerical approximation of a.

    -exquo(a, b)[source]
    +exquo(a, b)[source]

    Exact quotient of a and b. Analogue of a / b.

    Parameters:
    @@ -1368,7 +1368,7 @@

    Abstract Domains
    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Principal square root of a within the domain if a is square.

    Explanation

    The implementation of this method should return an element b in the @@ -1384,109 +1384,109 @@

    Abstract Domains
    -frac_field(*symbols, order=LexOrder())[source]
    +frac_field(*symbols, order=LexOrder())[source]

    Returns a fraction field, i.e. \(K(X)\).

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert an algebraic number to dtype.

    -from_ComplexField(a, K0)[source]
    +from_ComplexField(a, K0)[source]

    Convert a complex element to dtype.

    -from_ExpressionDomain(a, K0)[source]
    +from_ExpressionDomain(a, K0)[source]

    Convert a EX object to dtype.

    -from_ExpressionRawDomain(a, K0)[source]
    +from_ExpressionRawDomain(a, K0)[source]

    Convert a EX object to dtype.

    -from_FF(a, K0)[source]
    +from_FF(a, K0)[source]

    Convert ModularInteger(int) to dtype.

    -from_FF_gmpy(a, K0)[source]
    +from_FF_gmpy(a, K0)[source]

    Convert ModularInteger(mpz) to dtype.

    -from_FF_python(a, K0)[source]
    +from_FF_python(a, K0)[source]

    Convert ModularInteger(int) to dtype.

    -from_FractionField(a, K0)[source]
    +from_FractionField(a, K0)[source]

    Convert a rational function to dtype.

    -from_GlobalPolynomialRing(a, K0)[source]
    +from_GlobalPolynomialRing(a, K0)[source]

    Convert a polynomial to dtype.

    -from_MonogenicFiniteExtension(a, K0)[source]
    +from_MonogenicFiniteExtension(a, K0)[source]

    Convert an ExtensionElement to dtype.

    -from_PolynomialRing(a, K0)[source]
    +from_PolynomialRing(a, K0)[source]

    Convert a polynomial to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a real element object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert a SymPy expression to an element of this domain.

    Parameters:
    @@ -1512,37 +1512,37 @@

    Abstract Domains
    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Returns GCD of a and b.

    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Extended GCD of a and b.

    -get_exact()[source]
    +get_exact()[source]

    Returns an exact domain associated with self.

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -half_gcdex(a, b)[source]
    +half_gcdex(a, b)[source]

    Half extended GCD of a and b.

    @@ -1584,13 +1584,13 @@

    Abstract Domains
    -inject(*symbols)[source]
    +inject(*symbols)[source]

    Inject generators into this domain.

    -invert(a, b)[source]
    +invert(a, b)[source]

    Returns inversion of a mod b, implies something.

    @@ -1647,37 +1647,37 @@

    Abstract Domains
    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if a is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if a is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if a is non-positive.

    -is_one(a)[source]
    +is_one(a)[source]

    Returns True if a is one.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if a is positive.

    -is_square(a)[source]
    +is_square(a)[source]

    Returns whether a is a square in the domain.

    Explanation

    Returns True if there is an element b in the domain such that @@ -1692,67 +1692,67 @@

    Abstract Domains
    -is_zero(a)[source]
    +is_zero(a)[source]

    Returns True if a is zero.

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Returns LCM of a and b.

    -log(a, b)[source]
    +log(a, b)[source]

    Returns b-base logarithm of a.

    -map(seq)[source]
    +map(seq)[source]

    Rersively apply self to all elements of seq.

    -mul(a, b)[source]
    +mul(a, b)[source]

    Product of a and b, implies __mul__.

    -n(a, prec=None, **options)[source]
    +n(a, prec=None, **options)[source]

    Returns numerical approximation of a.

    -neg(a)[source]
    +neg(a)[source]

    Returns a negated, implies __neg__.

    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -of_type(element)[source]
    +of_type(element)[source]

    Check if a is of type dtype.

    -old_frac_field(*symbols, **kwargs)[source]
    +old_frac_field(*symbols, **kwargs)[source]

    Returns a fraction field, i.e. \(K(X)\).

    -old_poly_ring(*symbols, **kwargs)[source]
    +old_poly_ring(*symbols, **kwargs)[source]

    Returns a polynomial ring, i.e. \(K[X]\).

    @@ -1775,25 +1775,25 @@

    Abstract Domains
    -poly_ring(*symbols, order=LexOrder())[source]
    +poly_ring(*symbols, order=LexOrder())[source]

    Returns a polynomial ring, i.e. \(K[X]\).

    -pos(a)[source]
    +pos(a)[source]

    Returns a positive, implies __pos__.

    -pow(a, b)[source]
    +pow(a, b)[source]

    Raise a to power b, implies __pow__.

    -quo(a, b)[source]
    +quo(a, b)[source]

    Quotient of a and b. Analogue of a // b.

    K.quo(a, b) is equivalent to K.div(a, b)[0]. See div() for more explanation.

    @@ -1812,7 +1812,7 @@

    Abstract Domains
    -rem(a, b)[source]
    +rem(a, b)[source]

    Modulo division of a and b. Analogue of a % b.

    K.rem(a, b) is equivalent to K.div(a, b)[1]. See div() for more explanation.

    @@ -1831,13 +1831,13 @@

    Abstract Domains
    -revert(a)[source]
    +revert(a)[source]

    Returns a**(-1) if possible.

    -sqrt(a)[source]
    +sqrt(a)[source]

    Returns a (possibly inexact) square root of a.

    Explanation

    There is no universal definition of “inexact square root” for all @@ -1851,13 +1851,13 @@

    Abstract Domains
    -sub(a, b)[source]
    +sub(a, b)[source]

    Difference of a and b, implies __sub__.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert domain element a to a SymPy expression (Expr).

    Parameters:
    @@ -1952,7 +1952,7 @@

    Abstract Domains
    -unify(K1, symbols=None)[source]
    +unify(K1, symbols=None)[source]

    Construct a minimal domain that contains elements of K0 and K1.

    Known domains (from smallest to largest):

    @@ -1995,13 +1995,13 @@

    Abstract Domains
    -class sympy.polys.domains.domainelement.DomainElement[source]
    +class sympy.polys.domains.domainelement.DomainElement[source]

    Represents an element of a domain.

    Mix in this trait into a class whose instances should be recognized as elements of a domain. Method parent() gives that domain.

    -parent()[source]
    +parent()[source]

    Get the domain associated with self

    Examples

    >>> from sympy import ZZ, symbols
    @@ -2023,23 +2023,23 @@ 

    Abstract Domains
    -class sympy.polys.domains.field.Field[source]
    +class sympy.polys.domains.field.Field[source]

    Represents a field domain.

    -div(a, b)[source]
    +div(a, b)[source]

    Division of a and b, implies __truediv__.

    -exquo(a, b)[source]
    +exquo(a, b)[source]

    Exact quotient of a and b, implies __truediv__.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Returns GCD of a and b.

    This definition of GCD over fields allows to clear denominators in \(primitive()\).

    @@ -2061,31 +2061,31 @@

    Abstract Domains
    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Returns x, y, g such that a * x + b * y == g == gcd(a, b)

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -is_unit(a)[source]
    +is_unit(a)[source]

    Return true if a is a invertible

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Returns LCM of a and b.

    >>> from sympy.polys.domains import QQ
     >>> from sympy import S, lcm
    @@ -2101,19 +2101,19 @@ 

    Abstract Domains
    -quo(a, b)[source]
    +quo(a, b)[source]

    Quotient of a and b, implies __truediv__.

    -rem(a, b)[source]
    +rem(a, b)[source]

    Remainder of a and b, implies nothing.

    -revert(a)[source]
    +revert(a)[source]

    Returns a**(-1) if possible.

    @@ -2121,29 +2121,29 @@

    Abstract Domains
    -class sympy.polys.domains.ring.Ring[source]
    +class sympy.polys.domains.ring.Ring[source]

    Represents a ring domain.

    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of \(a\).

    -div(a, b)[source]
    +div(a, b)[source]

    Division of a and b, implies __divmod__.

    -exquo(a, b)[source]
    +exquo(a, b)[source]

    Exact quotient of a and b, implies __floordiv__.

    -free_module(rank)[source]
    +free_module(rank)[source]

    Generate a free module of rank rank over self.

    >>> from sympy.abc import x
     >>> from sympy import QQ
    @@ -2155,13 +2155,13 @@ 

    Abstract Domains
    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -ideal(*gens)[source]
    +ideal(*gens)[source]

    Generate an ideal of self.

    >>> from sympy.abc import x
     >>> from sympy import QQ
    @@ -2173,25 +2173,25 @@ 

    Abstract Domains
    -invert(a, b)[source]
    +invert(a, b)[source]

    Returns inversion of a mod b.

    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -quo(a, b)[source]
    +quo(a, b)[source]

    Quotient of a and b, implies __floordiv__.

    -quotient_ring(e)[source]
    +quotient_ring(e)[source]

    Form a quotient ring of self.

    Here e can be an ideal or an iterable.

    >>> from sympy.abc import x
    @@ -2211,13 +2211,13 @@ 

    Abstract Domains
    -rem(a, b)[source]
    +rem(a, b)[source]

    Remainder of a and b, implies __mod__.

    -revert(a)[source]
    +revert(a)[source]

    Returns a**(-1) if possible.

    @@ -2225,11 +2225,11 @@

    Abstract Domains
    -class sympy.polys.domains.simpledomain.SimpleDomain[source]
    +class sympy.polys.domains.simpledomain.SimpleDomain[source]

    Base class for simple domains, e.g. ZZ, QQ.

    -inject(*gens)[source]
    +inject(*gens)[source]

    Inject generators into this domain.

    @@ -2237,23 +2237,23 @@

    Abstract Domains
    -class sympy.polys.domains.compositedomain.CompositeDomain[source]
    +class sympy.polys.domains.compositedomain.CompositeDomain[source]

    Base class for composite domains, e.g. ZZ[x], ZZ(X).

    -drop(*symbols)[source]
    +drop(*symbols)[source]

    Drop generators from this domain.

    -get_exact()[source]
    +get_exact()[source]

    Returns an exact version of this domain.

    -inject(*symbols)[source]
    +inject(*symbols)[source]

    Inject generators into this domain.

    @@ -2265,7 +2265,7 @@

    Abstract Domains
    -set_domain(domain)[source]
    +set_domain(domain)[source]

    Set the ground domain of this domain.

    @@ -2276,7 +2276,7 @@

    Abstract Domains

    GF(p)

    -class sympy.polys.domains.FiniteField(mod, symmetric=True)[source]
    +class sympy.polys.domains.FiniteField(mod, symmetric=True)[source]

    Finite field of prime order GF(p)

    A GF(p) domain represents a finite field \(\mathbb{F}_p\) of prime order as Domain in the domain system (see @@ -2359,13 +2359,13 @@

    Abstract DomainsGF(p**n)) but these are not yet implemented in SymPY.

    -characteristic()[source]
    +characteristic()[source]

    Return the characteristic of this domain.

    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Square root modulo p of a if it is a quadratic residue.

    Explanation

    Always returns the square root that is no larger than p // 2.

    @@ -2373,115 +2373,115 @@

    Abstract Domains
    -from_FF(a, K0=None)[source]
    +from_FF(a, K0=None)[source]

    Convert ModularInteger(int) to dtype.

    -from_FF_gmpy(a, K0=None)[source]
    +from_FF_gmpy(a, K0=None)[source]

    Convert ModularInteger(mpz) to dtype.

    -from_FF_python(a, K0=None)[source]
    +from_FF_python(a, K0=None)[source]

    Convert ModularInteger(int) to dtype.

    -from_QQ(a, K0=None)[source]
    +from_QQ(a, K0=None)[source]

    Convert Python’s Fraction to dtype.

    -from_QQ_gmpy(a, K0=None)[source]
    +from_QQ_gmpy(a, K0=None)[source]

    Convert GMPY’s mpq to dtype.

    -from_QQ_python(a, K0=None)[source]
    +from_QQ_python(a, K0=None)[source]

    Convert Python’s Fraction to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert mpmath’s mpf to dtype.

    -from_ZZ(a, K0=None)[source]
    +from_ZZ(a, K0=None)[source]

    Convert Python’s int to dtype.

    -from_ZZ_gmpy(a, K0=None)[source]
    +from_ZZ_gmpy(a, K0=None)[source]

    Convert GMPY’s mpz to dtype.

    -from_ZZ_python(a, K0=None)[source]
    +from_ZZ_python(a, K0=None)[source]

    Convert Python’s int to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s Integer to SymPy’s Integer.

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if a is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if a is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if a is non-positive.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if a is positive.

    -is_square(a)[source]
    +is_square(a)[source]

    Returns True if a is a quadratic residue modulo p.

    -to_int(a)[source]
    +to_int(a)[source]

    Convert val to a Python int object.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -2489,13 +2489,13 @@

    Abstract Domains
    -class sympy.polys.domains.PythonFiniteField(mod, symmetric=True)[source]
    +class sympy.polys.domains.PythonFiniteField(mod, symmetric=True)[source]

    Finite field based on Python’s integers.

    -class sympy.polys.domains.GMPYFiniteField(mod, symmetric=True)[source]
    +class sympy.polys.domains.GMPYFiniteField(mod, symmetric=True)[source]

    Finite field based on GMPY integers.

    @@ -2551,7 +2551,7 @@

    Abstract Domains
    -class sympy.polys.domains.IntegerRing[source]
    +class sympy.polys.domains.IntegerRing[source]

    The domain ZZ representing the integers \(\mathbb{Z}\).

    The IntegerRing class represents the ring of integers as a Domain in the domain system. IntegerRing is a @@ -2571,7 +2571,7 @@

    Abstract Domainsalias=None,

    -)[source] +)[source]

    Returns an algebraic field, i.e. \(\mathbb{Q}(\alpha, \ldots)\).

    Parameters:
    @@ -2603,7 +2603,7 @@

    Abstract Domains
    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Non-negative square root of a if a is a square.

    See also

    @@ -2613,104 +2613,104 @@

    Abstract Domains
    -factorial(a)[source]
    +factorial(a)[source]

    Compute factorial of a.

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert a ANP object to ZZ.

    See convert().

    -from_EX(a, K0)[source]
    +from_EX(a, K0)[source]

    Convert Expression to GMPY’s mpz.

    -from_FF(a, K0)[source]
    +from_FF(a, K0)[source]

    Convert ModularInteger(int) to GMPY’s mpz.

    -from_FF_gmpy(a, K0)[source]
    +from_FF_gmpy(a, K0)[source]

    Convert ModularInteger(mpz) to GMPY’s mpz.

    -from_FF_python(a, K0)[source]
    +from_FF_python(a, K0)[source]

    Convert ModularInteger(int) to GMPY’s mpz.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert Python’s Fraction to GMPY’s mpz.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert GMPY mpq to GMPY’s mpz.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert Python’s Fraction to GMPY’s mpz.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert mpmath’s mpf to GMPY’s mpz.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert Python’s int to GMPY’s mpz.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert GMPY’s mpz to GMPY’s mpz.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert Python’s int to GMPY’s mpz.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s Integer to dtype.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Compute GCD of a and b.

    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Compute extended GCD of a and b.

    -get_field()[source]
    +get_field()[source]

    Return the associated field of fractions QQ

    Returns:
    @@ -2732,7 +2732,7 @@

    Abstract Domains
    -is_square(a)[source]
    +is_square(a)[source]

    Return True if a is a square.

    Explanation

    An integer is a square if and only if there exists an integer @@ -2741,13 +2741,13 @@

    Abstract Domains
    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Compute LCM of a and b.

    -log(a, b)[source]
    +log(a, b)[source]

    Logarithm of a to the base b.

    Parameters:
    @@ -2776,13 +2776,13 @@

    Abstract Domains
    -sqrt(a)[source]
    +sqrt(a)[source]

    Compute square root of a.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -2790,7 +2790,7 @@

    Abstract Domains
    -class sympy.polys.domains.PythonIntegerRing[source]
    +class sympy.polys.domains.PythonIntegerRing[source]

    Integer ring based on Python’s int type.

    This will be used as ZZ if gmpy and gmpy2 are not installed. Elements are instances of the standard Python int type.

    @@ -2798,97 +2798,97 @@

    Abstract Domains
    -class sympy.polys.domains.GMPYIntegerRing[source]
    +class sympy.polys.domains.GMPYIntegerRing[source]

    Integer ring based on GMPY’s mpz type.

    This will be the implementation of ZZ if gmpy or gmpy2 is installed. Elements will be of type gmpy.mpz.

    -factorial(a)[source]
    +factorial(a)[source]

    Compute factorial of a.

    -from_FF_gmpy(a, K0)[source]
    +from_FF_gmpy(a, K0)[source]

    Convert ModularInteger(mpz) to GMPY’s mpz.

    -from_FF_python(a, K0)[source]
    +from_FF_python(a, K0)[source]

    Convert ModularInteger(int) to GMPY’s mpz.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert Python’s Fraction to GMPY’s mpz.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert GMPY mpq to GMPY’s mpz.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert Python’s Fraction to GMPY’s mpz.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert mpmath’s mpf to GMPY’s mpz.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert GMPY’s mpz to GMPY’s mpz.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert Python’s int to GMPY’s mpz.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s Integer to dtype.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Compute GCD of a and b.

    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Compute extended GCD of a and b.

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Compute LCM of a and b.

    -sqrt(a)[source]
    +sqrt(a)[source]

    Compute square root of a.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -2938,7 +2938,7 @@

    Abstract Domains
    -class sympy.polys.domains.RationalField[source]
    +class sympy.polys.domains.RationalField[source]

    Abstract base class for the domain QQ.

    The RationalField class represents the field of rational numbers \(\mathbb{Q}\) as a Domain in the domain system. @@ -2959,7 +2959,7 @@

    Abstract Domainsalias=None,

    -)[source] +)[source]

    Returns an algebraic field, i.e. \(\mathbb{Q}(\alpha, \ldots)\).

    Parameters:
    @@ -2991,25 +2991,25 @@

    Abstract Domains
    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -div(a, b)[source]
    +div(a, b)[source]

    Division of a and b, implies __truediv__.

    -exquo(a, b)[source]
    +exquo(a, b)[source]

    Exact quotient of a and b, implies __truediv__.

    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Non-negative square root of a if a is a square.

    See also

    @@ -3019,74 +3019,74 @@

    Abstract Domains
    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert a ANP object to QQ.

    See convert()

    -from_GaussianRationalField(a, K0)[source]
    +from_GaussianRationalField(a, K0)[source]

    Convert a GaussianElement object to dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a Python int object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s Integer to dtype.

    -get_ring()[source]
    +get_ring()[source]

    Returns ring associated with self.

    -is_square(a)[source]
    +is_square(a)[source]

    Return True if a is a square.

    Explanation

    A rational number is a square if and only if there exists @@ -3095,25 +3095,25 @@

    Abstract Domains
    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -quo(a, b)[source]
    +quo(a, b)[source]

    Quotient of a and b, implies __truediv__.

    -rem(a, b)[source]
    +rem(a, b)[source]

    Remainder of a and b, implies nothing.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -3121,7 +3121,7 @@

    Abstract Domains
    -class sympy.polys.domains.PythonRationalField[source]
    +class sympy.polys.domains.PythonRationalField[source]

    Rational field based on MPQ.

    This will be used as QQ if gmpy and gmpy2 are not installed. Elements are instances of MPQ.

    @@ -3129,31 +3129,31 @@

    Abstract Domains
    -class sympy.polys.domains.GMPYRationalField[source]
    +class sympy.polys.domains.GMPYRationalField[source]

    Rational field based on GMPY’s mpq type.

    This will be the implementation of QQ if gmpy or gmpy2 is installed. Elements will be of type gmpy.mpq.

    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -div(a, b)[source]
    +div(a, b)[source]

    Division of a and b, implies __truediv__.

    -exquo(a, b)[source]
    +exquo(a, b)[source]

    Exact quotient of a and b, implies __truediv__.

    -factorial(a)[source]
    +factorial(a)[source]

    Returns factorial of a.

    @@ -3166,73 +3166,73 @@

    Abstract DomainsK0,

    -)[source] +)[source]

    Convert a GaussianElement object to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s Integer to dtype.

    -get_ring()[source]
    +get_ring()[source]

    Returns ring associated with self.

    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -quo(a, b)[source]
    +quo(a, b)[source]

    Quotient of a and b, implies __truediv__.

    -rem(a, b)[source]
    +rem(a, b)[source]

    Remainder of a and b, implies nothing.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -3240,7 +3240,7 @@

    Abstract Domains
    -class sympy.external.pythonmpq.PythonMPQ(numerator, denominator=None)[source]
    +class sympy.external.pythonmpq.PythonMPQ(numerator, denominator=None)[source]

    Rational number implementation that is intended to be compatible with gmpy2’s mpq.

    Also slightly faster than fractions.Fraction.

    @@ -3261,89 +3261,89 @@

    Gaussian domainsGaussianDomain for the domains themselves.

    -class sympy.polys.domains.gaussiandomains.GaussianDomain[source]
    +class sympy.polys.domains.gaussiandomains.GaussianDomain[source]

    Base class for Gaussian domains.

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert an element from ZZ<I> or QQ<I> to self.dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a GMPY mpq to self.dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq to self.dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a QQ_python element to self.dtype.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a ZZ_python element to self.dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz to self.dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a ZZ_python element to self.dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert a SymPy object to self.dtype.

    -inject(*gens)[source]
    +inject(*gens)[source]

    Inject generators into this domain.

    -is_negative(element)[source]
    +is_negative(element)[source]

    Returns False for any GaussianElement.

    -is_nonnegative(element)[source]
    +is_nonnegative(element)[source]

    Returns False for any GaussianElement.

    -is_nonpositive(element)[source]
    +is_nonpositive(element)[source]

    Returns False for any GaussianElement.

    -is_positive(element)[source]
    +is_positive(element)[source]

    Returns False for any GaussianElement.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -3351,23 +3351,23 @@

    Gaussian domains
    -class sympy.polys.domains.gaussiandomains.GaussianElement(x, y=0)[source]
    +class sympy.polys.domains.gaussiandomains.GaussianElement(x, y=0)[source]

    Base class for elements of Gaussian type domains.

    -classmethod new(x, y)[source]
    +classmethod new(x, y)[source]

    Create a new GaussianElement of the same domain.

    -parent()[source]
    +parent()[source]

    The domain that this is an element of (ZZ_I or QQ_I)

    -quadrant()[source]
    +quadrant()[source]

    Return quadrant index 0-3.

    0 is included in quadrant 0.

    @@ -3379,7 +3379,7 @@

    Gaussian domains

    ZZ_I

    -class sympy.polys.domains.gaussiandomains.GaussianIntegerRing[source]
    +class sympy.polys.domains.gaussiandomains.GaussianIntegerRing[source]

    Ring of Gaussian integers ZZ_I

    The ZZ_I domain represents the Gaussian integers \(\mathbb{Z}[i]\) as a Domain in the domain system (see @@ -3475,7 +3475,7 @@

    Gaussian domains
    -dtype[source]
    +dtype[source]

    alias of GaussianInteger

    @@ -3488,7 +3488,7 @@

    Gaussian domainsK0,

    -)[source] +)[source]

    Convert a ZZ_I element to ZZ_I.

    @@ -3501,43 +3501,43 @@

    Gaussian domainsK0,

    -)[source] +)[source]

    Convert a QQ_I element to ZZ_I.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Greatest common divisor of a and b over ZZ_I.

    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Return x, y, g such that x * a + y * b = g = gcd(a, b)

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Least common multiple of a and b over ZZ_I.

    -normalize(d, *args)[source]
    +normalize(d, *args)[source]

    Return first quadrant element associated with d.

    Also multiply the other arguments by the same power of i.

    @@ -3546,7 +3546,7 @@

    Gaussian domains
    -class sympy.polys.domains.gaussiandomains.GaussianInteger(x, y=0)[source]
    +class sympy.polys.domains.gaussiandomains.GaussianInteger(x, y=0)[source]

    Gaussian integer: domain element for ZZ_I

    >>> from sympy import ZZ_I
     >>> z = ZZ_I(2, 3)
    @@ -3563,7 +3563,7 @@ 

    Gaussian domains

    QQ_I

    -class sympy.polys.domains.gaussiandomains.GaussianRationalField[source]
    +class sympy.polys.domains.gaussiandomains.GaussianRationalField[source]

    Field of Gaussian rationals QQ_I

    The QQ_I domain represents the Gaussian rationals \(\mathbb{Q}(i)\) as a Domain in the domain system (see @@ -3678,25 +3678,25 @@

    Gaussian domains
    -as_AlgebraicField()[source]
    +as_AlgebraicField()[source]

    Get equivalent domain as an AlgebraicField.

    -denom(a)[source]
    +denom(a)[source]

    Get the denominator of a.

    -dtype[source]
    +dtype[source]

    alias of GaussianRational

    -from_ComplexField(a, K0)[source]
    +from_ComplexField(a, K0)[source]

    Convert a ComplexField element to QQ_I.

    @@ -3709,7 +3709,7 @@

    Gaussian domainsK0,

    -)[source] +)[source]

    Convert a ZZ_I element to QQ_I.

    @@ -3722,25 +3722,25 @@

    Gaussian domainsK0,

    -)[source] +)[source]

    Convert a QQ_I element to QQ_I.

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -numer(a)[source]
    +numer(a)[source]

    Get the numerator of a.

    @@ -3748,7 +3748,7 @@

    Gaussian domains
    -class sympy.polys.domains.gaussiandomains.GaussianRational(x, y=0)[source]
    +class sympy.polys.domains.gaussiandomains.GaussianRational(x, y=0)[source]

    Gaussian rational: domain element for QQ_I

    >>> from sympy import QQ_I, QQ
     >>> z = QQ_I(QQ(2, 3), QQ(4, 5))
    @@ -3765,7 +3765,7 @@ 

    Gaussian domains

    QQ<a>

    -class sympy.polys.domains.AlgebraicField(dom, *ext, alias=None)[source]
    +class sympy.polys.domains.AlgebraicField(dom, *ext, alias=None)[source]

    Algebraic number field QQ<a>

    A QQ<a> domain represents an algebraic number field \(\mathbb{Q}(a)\) as a Domain in the domain system (see @@ -3990,25 +3990,25 @@

    Gaussian domainsalias=None,

    -)[source] +)[source]

    Returns an algebraic field, i.e. \(\mathbb{Q}(\alpha, \ldots)\).

    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -discriminant()[source]
    +discriminant()[source]

    Get the discriminant of the field.

    -dtype[source]
    +dtype[source]

    alias of ANP

    @@ -4026,67 +4026,67 @@

    Gaussian domains
    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert AlgebraicField element ‘a’ to another AlgebraicField

    -from_GaussianIntegerRing(a, K0)[source]
    +from_GaussianIntegerRing(a, K0)[source]

    Convert a GaussianInteger element ‘a’ to dtype.

    -from_GaussianRationalField(a, K0)[source]
    +from_GaussianRationalField(a, K0)[source]

    Convert a GaussianRational element ‘a’ to dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a Python int object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s expression to dtype.

    @@ -4100,7 +4100,7 @@

    Gaussian domainsrandomize=False,

    -)[source] +)[source]

    Compute the Galois group of the Galois closure of this field.

    Examples

    If the field is Galois, the order of the group will equal the degree @@ -4130,13 +4130,13 @@

    Gaussian domains
    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -integral_basis(fmt=None)[source]
    +integral_basis(fmt=None)[source]

    Get an integral basis for the field.

    Parameters:
    @@ -4181,31 +4181,31 @@

    Gaussian domains
    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if a is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if a is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if a is non-positive.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if a is positive.

    -maximal_order()[source]
    +maximal_order()[source]

    Compute the maximal order, or ring of integers, of the field.

    Returns:
    @@ -4232,7 +4232,7 @@

    Gaussian domains
    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    @@ -4250,19 +4250,19 @@

    Gaussian domains
    -primes_above(p)[source]
    +primes_above(p)[source]

    Compute the prime ideals lying above a given rational prime p.

    -to_alg_num(a)[source]
    +to_alg_num(a)[source]

    Convert a of dtype to an AlgebraicNumber.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a of dtype to a SymPy object.

    @@ -4273,17 +4273,17 @@

    Gaussian domains

    RR

    -class sympy.polys.domains.RealField(prec=None, dps=None, tol=None)[source]
    +class sympy.polys.domains.RealField(prec=None, dps=None, tol=None)[source]

    Real numbers up to the given precision.

    -almosteq(a, b, tolerance=None)[source]
    +almosteq(a, b, tolerance=None)[source]

    Check if a and b are almost equal.

    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Non-negative square root for a >= 0 and None otherwise.

    Explanation

    The square root may be slightly inaccurate due to floating point @@ -4292,49 +4292,49 @@

    Gaussian domains
    -from_sympy(expr)[source]
    +from_sympy(expr)[source]

    Convert SymPy’s number to dtype.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Returns GCD of a and b.

    -get_exact()[source]
    +get_exact()[source]

    Returns an exact domain associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -is_square(a)[source]
    +is_square(a)[source]

    Returns True if a >= 0 and False otherwise.

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Returns LCM of a and b.

    -to_rational(element, limit=True)[source]
    +to_rational(element, limit=True)[source]

    Convert a real number to rational number.

    -to_sympy(element)[source]
    +to_sympy(element)[source]

    Convert element to SymPy number.

    @@ -4345,17 +4345,17 @@

    Gaussian domains

    CC

    -class sympy.polys.domains.ComplexField(prec=None, dps=None, tol=None)[source]
    +class sympy.polys.domains.ComplexField(prec=None, dps=None, tol=None)[source]

    Complex numbers up to the given precision.

    -almosteq(a, b, tolerance=None)[source]
    +almosteq(a, b, tolerance=None)[source]

    Check if a and b are almost equal.

    -exsqrt(a)[source]
    +exsqrt(a)[source]

    Returns the principal complex square root of a.

    Explanation

    The argument of the principal square root is always within @@ -4365,67 +4365,67 @@

    Gaussian domains
    -from_sympy(expr)[source]
    +from_sympy(expr)[source]

    Convert SymPy’s number to dtype.

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Returns GCD of a and b.

    -get_exact()[source]
    +get_exact()[source]

    Returns an exact domain associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -is_negative(element)[source]
    +is_negative(element)[source]

    Returns False for any ComplexElement.

    -is_nonnegative(element)[source]
    +is_nonnegative(element)[source]

    Returns False for any ComplexElement.

    -is_nonpositive(element)[source]
    +is_nonpositive(element)[source]

    Returns False for any ComplexElement.

    -is_positive(element)[source]
    +is_positive(element)[source]

    Returns False for any ComplexElement.

    -is_square(a)[source]
    +is_square(a)[source]

    Returns True. Every complex number has a complex square root.

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Returns LCM of a and b.

    -to_sympy(element)[source]
    +to_sympy(element)[source]

    Convert element to SymPy number.

    @@ -4444,161 +4444,161 @@

    Gaussian domainsorder=None,

    -)[source] +)[source]

    A class for representing multivariate polynomial rings.

    -factorial(a)[source]
    +factorial(a)[source]

    Returns factorial of \(a\).

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert an algebraic number to dtype.

    -from_ComplexField(a, K0)[source]
    +from_ComplexField(a, K0)[source]

    Convert a mpmath \(mpf\) object to \(dtype\).

    -from_FractionField(a, K0)[source]
    +from_FractionField(a, K0)[source]

    Convert a rational function to dtype.

    -from_GaussianIntegerRing(a, K0)[source]
    +from_GaussianIntegerRing(a, K0)[source]

    Convert a \(GaussianInteger\) object to \(dtype\).

    -from_GaussianRationalField(a, K0)[source]
    +from_GaussianRationalField(a, K0)[source]

    Convert a \(GaussianRational\) object to \(dtype\).

    -from_GlobalPolynomialRing(a, K0)[source]
    +from_GlobalPolynomialRing(a, K0)[source]

    Convert from old poly ring to dtype.

    -from_PolynomialRing(a, K0)[source]
    +from_PolynomialRing(a, K0)[source]

    Convert a polynomial to dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a Python \(Fraction\) object to \(dtype\).

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY \(mpq\) object to \(dtype\).

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python \(Fraction\) object to \(dtype\).

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath \(mpf\) object to \(dtype\).

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a Python \(int\) object to \(dtype\).

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY \(mpz\) object to \(dtype\).

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python \(int\) object to \(dtype\).

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s expression to \(dtype\).

    -gcd(a, b)[source]
    +gcd(a, b)[source]

    Returns GCD of \(a\) and \(b\).

    -gcdex(a, b)[source]
    +gcdex(a, b)[source]

    Extended GCD of \(a\) and \(b\).

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with \(self\).

    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if \(LC(a)\) is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if \(LC(a)\) is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if \(LC(a)\) is non-positive.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if \(LC(a)\) is positive.

    -is_unit(a)[source]
    +is_unit(a)[source]

    Returns True if a is a unit of self

    -lcm(a, b)[source]
    +lcm(a, b)[source]

    Returns LCM of \(a\) and \(b\).

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert \(a\) to a SymPy object.

    @@ -4617,143 +4617,143 @@

    Gaussian domainsorder=None,

    -)[source] +)[source]

    A class for representing multivariate rational function fields.

    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -factorial(a)[source]
    +factorial(a)[source]

    Returns factorial of a.

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert an algebraic number to dtype.

    -from_ComplexField(a, K0)[source]
    +from_ComplexField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_FractionField(a, K0)[source]
    +from_FractionField(a, K0)[source]

    Convert a rational function to dtype.

    -from_GaussianIntegerRing(a, K0)[source]
    +from_GaussianIntegerRing(a, K0)[source]

    Convert a GaussianInteger object to dtype.

    -from_GaussianRationalField(a, K0)[source]
    +from_GaussianRationalField(a, K0)[source]

    Convert a GaussianRational object to dtype.

    -from_PolynomialRing(a, K0)[source]
    +from_PolynomialRing(a, K0)[source]

    Convert a polynomial to dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a Python int object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s expression to dtype.

    -get_ring()[source]
    +get_ring()[source]

    Returns a field associated with self.

    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if LC(a) is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if LC(a) is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if LC(a) is non-positive.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if LC(a) is positive.

    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -4764,161 +4764,161 @@

    Gaussian domains

    EX

    -class sympy.polys.domains.ExpressionDomain[source]
    +class sympy.polys.domains.ExpressionDomain[source]

    A class for arbitrary expressions.

    -class Expression(ex)[source]
    +class Expression(ex)[source]

    An arbitrary expression.

    -denom(a)[source]
    +denom(a)[source]

    Returns denominator of a.

    -dtype[source]
    +dtype[source]

    alias of Expression

    -from_AlgebraicField(a, K0)[source]
    +from_AlgebraicField(a, K0)[source]

    Convert an ANP object to dtype.

    -from_ComplexField(a, K0)[source]
    +from_ComplexField(a, K0)[source]

    Convert a mpmath mpc object to dtype.

    -from_ExpressionDomain(a, K0)[source]
    +from_ExpressionDomain(a, K0)[source]

    Convert a EX object to dtype.

    -from_FractionField(a, K0)[source]
    +from_FractionField(a, K0)[source]

    Convert a DMF object to dtype.

    -from_GaussianIntegerRing(a, K0)[source]
    +from_GaussianIntegerRing(a, K0)[source]

    Convert a GaussianRational object to dtype.

    -from_GaussianRationalField(a, K0)[source]
    +from_GaussianRationalField(a, K0)[source]

    Convert a GaussianRational object to dtype.

    -from_PolynomialRing(a, K0)[source]
    +from_PolynomialRing(a, K0)[source]

    Convert a DMP object to dtype.

    -from_QQ(a, K0)[source]
    +from_QQ(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_QQ_gmpy(a, K0)[source]
    +from_QQ_gmpy(a, K0)[source]

    Convert a GMPY mpq object to dtype.

    -from_QQ_python(a, K0)[source]
    +from_QQ_python(a, K0)[source]

    Convert a Python Fraction object to dtype.

    -from_RealField(a, K0)[source]
    +from_RealField(a, K0)[source]

    Convert a mpmath mpf object to dtype.

    -from_ZZ(a, K0)[source]
    +from_ZZ(a, K0)[source]

    Convert a Python int object to dtype.

    -from_ZZ_gmpy(a, K0)[source]
    +from_ZZ_gmpy(a, K0)[source]

    Convert a GMPY mpz object to dtype.

    -from_ZZ_python(a, K0)[source]
    +from_ZZ_python(a, K0)[source]

    Convert a Python int object to dtype.

    -from_sympy(a)[source]
    +from_sympy(a)[source]

    Convert SymPy’s expression to dtype.

    -get_field()[source]
    +get_field()[source]

    Returns a field associated with self.

    -get_ring()[source]
    +get_ring()[source]

    Returns a ring associated with self.

    -is_negative(a)[source]
    +is_negative(a)[source]

    Returns True if a is negative.

    -is_nonnegative(a)[source]
    +is_nonnegative(a)[source]

    Returns True if a is non-negative.

    -is_nonpositive(a)[source]
    +is_nonpositive(a)[source]

    Returns True if a is non-positive.

    -is_positive(a)[source]
    +is_positive(a)[source]

    Returns True if a is positive.

    -numer(a)[source]
    +numer(a)[source]

    Returns numerator of a.

    -to_sympy(a)[source]
    +to_sympy(a)[source]

    Convert a to a SymPy object.

    @@ -4926,7 +4926,7 @@

    Gaussian domains
    -class ExpressionDomain.Expression(ex)[source]
    +class ExpressionDomain.Expression(ex)[source]

    An arbitrary expression.

    @@ -4935,7 +4935,7 @@

    Gaussian domains

    -class sympy.polys.domains.quotientring.QuotientRing(ring, ideal)[source]
    +class sympy.polys.domains.quotientring.QuotientRing(ring, ideal)[source]

    Class representing (commutative) quotient rings.

    You should not usually instantiate this by hand, instead use the constructor from the base ring in the construction.

    @@ -4976,7 +4976,7 @@

    Sparse polynomialsorder: MonomialOrder | str = LexOrder(),

    -)[source] +)[source]

    Construct a polynomial ring returning (ring, x_1, ..., x_n).

    Parameters:
    @@ -5007,7 +5007,7 @@

    Sparse polynomials
    -sympy.polys.rings.xring(symbols, domain, order=LexOrder())[source]
    +sympy.polys.rings.xring(symbols, domain, order=LexOrder())[source]

    Construct a polynomial ring returning (ring, (x_1, ..., x_n)).

    Parameters:
    @@ -5038,7 +5038,7 @@

    Sparse polynomials
    -sympy.polys.rings.vring(symbols, domain, order=LexOrder())[source]
    +sympy.polys.rings.vring(symbols, domain, order=LexOrder())[source]

    Construct a polynomial ring and inject x_1, ..., x_n into the global namespace.

    Parameters:
    @@ -5068,7 +5068,7 @@

    Sparse polynomials
    -sympy.polys.rings.sring(exprs, *symbols, **options)[source]
    +sympy.polys.rings.sring(exprs, *symbols, **options)[source]

    Construct a ring deriving generators and domain from options and input expressions.

    Parameters:
    @@ -5095,11 +5095,11 @@

    Sparse polynomials
    -class sympy.polys.rings.PolyRing(symbols, domain, order=LexOrder())[source]
    +class sympy.polys.rings.PolyRing(symbols, domain, order=LexOrder())[source]

    Multivariate distributed polynomial ring.

    -add(*objs)[source]
    +add(*objs)[source]

    Add a sequence of polynomials or containers of polynomials.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5117,44 +5117,44 @@ 

    Sparse polynomials
    -add_gens(symbols)[source]
    +add_gens(symbols)[source]

    Add the elements of symbols as generators to self

    -compose(other)[source]
    +compose(other)[source]

    Add the generators of other to self

    -drop(*gens)[source]
    +drop(*gens)[source]

    Remove specified generators from this ring.

    -drop_to_ground(*gens)[source]
    +drop_to_ground(*gens)[source]

    Remove specified generators from the ring and inject them into its domain.

    -index(gen)[source]
    +index(gen)[source]

    Compute index of gen in self.gens.

    -monomial_basis(i)[source]
    +monomial_basis(i)[source]

    Return the ith-basis element.

    -mul(*objs)[source]
    +mul(*objs)[source]

    Multiply a sequence of polynomials or containers of polynomials.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5172,7 +5172,7 @@ 

    Sparse polynomials
    -symmetric_poly(n)[source]
    +symmetric_poly(n)[source]

    Return the elementary symmetric polynomial of degree n over this ring’s generators.

    @@ -5181,17 +5181,17 @@

    Sparse polynomials
    -class sympy.polys.rings.PolyElement[source]
    +class sympy.polys.rings.PolyElement[source]

    Element of multivariate distributed polynomial ring.

    -almosteq(p2, tolerance=None)[source]
    +almosteq(p2, tolerance=None)[source]

    Approximate equality test for polynomials.

    -cancel(g)[source]
    +cancel(g)[source]

    Cancel common factors in a rational function f/g.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5206,7 +5206,7 @@ 

    Sparse polynomials
    -coeff(element)[source]
    +coeff(element)[source]

    Returns the coefficient that stands next to the given monomial.

    Parameters:
    @@ -5234,7 +5234,7 @@

    Sparse polynomials
    -coeff_wrt(x, deg)[source]
    +coeff_wrt(x, deg)[source]

    Coefficient of self with respect to x**deg.

    Treating self as a univariate polynomial in x this finds the coefficient of x**deg as a polynomial in the other generators.

    @@ -5279,7 +5279,7 @@

    Sparse polynomials
    -coeffs(order=None)[source]
    +coeffs(order=None)[source]

    Ordered list of polynomial coefficients.

    Parameters:
    @@ -5306,19 +5306,19 @@

    Sparse polynomials
    -const()[source]
    +const()[source]

    Returns the constant coefficient.

    -content()[source]
    +content()[source]

    Returns GCD of polynomial’s coefficients.

    -copy()[source]
    +copy()[source]

    Return a copy of polynomial self.

    Polynomials are mutable; if one is interested in preserving a polynomial, and one plans to use inplace operations, one @@ -5345,21 +5345,21 @@

    Sparse polynomials
    -degree(x=None)[source]
    +degree(x=None)[source]

    The leading degree in x or the main variable.

    Note that the degree of 0 is negative infinity (float('-inf'))

    -degrees()[source]
    +degrees()[source]

    A tuple containing leading degrees in all variables.

    Note that the degree of 0 is negative infinity (float('-inf'))

    -diff(x)[source]
    +diff(x)[source]

    Computes partial derivative in x.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5376,7 +5376,7 @@ 

    Sparse polynomials
    -div(fv)[source]
    +div(fv)[source]

    Division algorithm, see [CLO] p64.

    fv array of polynomials

    return qv, r such that @@ -5406,7 +5406,7 @@

    Sparse polynomials
    -imul_num(c)[source]
    +imul_num(c)[source]

    multiply inplace the polynomial p by an element in the coefficient ring, provided p is not one of the generators; else multiply not inplace

    @@ -5434,25 +5434,25 @@

    Sparse polynomials
    -itercoeffs()[source]
    +itercoeffs()[source]

    Iterator over coefficients of a polynomial.

    -itermonoms()[source]
    +itermonoms()[source]

    Iterator over monomials of a polynomial.

    -iterterms()[source]
    +iterterms()[source]

    Iterator over terms of a polynomial.

    -leading_expv()[source]
    +leading_expv()[source]

    Leading monomial tuple according to the monomial ordering.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5469,7 +5469,7 @@ 

    Sparse polynomials
    -leading_monom()[source]
    +leading_monom()[source]

    Leading monomial as a polynomial element.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5485,7 +5485,7 @@ 

    Sparse polynomials
    -leading_term()[source]
    +leading_term()[source]

    Leading term as a polynomial element.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5501,31 +5501,31 @@ 

    Sparse polynomials
    -listcoeffs()[source]
    +listcoeffs()[source]

    Unordered list of polynomial coefficients.

    -listmonoms()[source]
    +listmonoms()[source]

    Unordered list of polynomial monomials.

    -listterms()[source]
    +listterms()[source]

    Unordered list of polynomial terms.

    -monic()[source]
    +monic()[source]

    Divides all coefficients by the leading coefficient.

    -monoms(order=None)[source]
    +monoms(order=None)[source]

    Ordered list of polynomial monomials.

    Parameters:
    @@ -5552,7 +5552,7 @@

    Sparse polynomials
    -pdiv(g, x=None)[source]
    +pdiv(g, x=None)[source]

    Computes the pseudo-division of the polynomial self with respect to g.

    The pseudo-division algorithm is used to find the pseudo-quotient q and pseudo-remainder r such that m*f = g*q + r, where m @@ -5629,7 +5629,7 @@

    Sparse polynomials
    -pexquo(g, x=None)[source]
    +pexquo(g, x=None)[source]

    Polynomial exact pseudo-quotient in multivariate polynomial ring.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5659,7 +5659,7 @@ 

    Sparse polynomials
    -pquo(g, x=None)[source]
    +pquo(g, x=None)[source]

    Polynomial pseudo-quotient in multivariate polynomial ring.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5687,7 +5687,7 @@ 

    Sparse polynomials
    -prem(g, x=None)[source]
    +prem(g, x=None)[source]

    Pseudo-remainder of the polynomial self with respect to g.

    The pseudo-quotient q and pseudo-remainder r with respect to z when dividing f by g satisfy m*f = g*q + r, @@ -5740,13 +5740,13 @@

    Sparse polynomials
    -primitive()[source]
    +primitive()[source]

    Returns content and a primitive polynomial.

    -square()[source]
    +square()[source]

    square of a polynomial

    Examples

    >>> from sympy.polys.rings import ring
    @@ -5763,13 +5763,13 @@ 

    Sparse polynomials
    -strip_zero()[source]
    +strip_zero()[source]

    Eliminate monomials with zero coefficient.

    -subresultants(g, x=None)[source]
    +subresultants(g, x=None)[source]

    Computes the subresultant PRS of two polynomials self and g.

    Parameters:
    @@ -5808,7 +5808,7 @@

    Sparse polynomials
    -symmetrize()[source]
    +symmetrize()[source]

    Rewrite self in terms of elementary symmetric polynomials.

    Returns:
    @@ -5866,21 +5866,21 @@

    Sparse polynomials
    -tail_degree(x=None)[source]
    +tail_degree(x=None)[source]

    The tail degree in x or the main variable.

    Note that the degree of 0 is negative infinity (float('-inf'))

    -tail_degrees()[source]
    +tail_degrees()[source]

    A tuple containing tail degrees in all variables.

    Note that the degree of 0 is negative infinity (float('-inf'))

    -terms(order=None)[source]
    +terms(order=None)[source]

    Ordered list of polynomial terms.

    Parameters:
    @@ -5913,25 +5913,25 @@

    Sparse rational functions
    -sympy.polys.fields.field(symbols, domain, order=LexOrder())[source]
    +sympy.polys.fields.field(symbols, domain, order=LexOrder())[source]

    Construct new rational function field returning (field, x1, …, xn).

    -sympy.polys.fields.xfield(symbols, domain, order=LexOrder())[source]
    +sympy.polys.fields.xfield(symbols, domain, order=LexOrder())[source]

    Construct new rational function field returning (field, (x1, …, xn)).

    -sympy.polys.fields.vfield(symbols, domain, order=LexOrder())[source]
    +sympy.polys.fields.vfield(symbols, domain, order=LexOrder())[source]

    Construct new rational function field and inject generators into global namespace.

    -sympy.polys.fields.sfield(exprs, *symbols, **options)[source]
    +sympy.polys.fields.sfield(exprs, *symbols, **options)[source]

    Construct a field deriving generators and domain from options and input expressions.

    @@ -5957,17 +5957,17 @@

    Sparse rational functions
    -class sympy.polys.fields.FracField(symbols, domain, order=LexOrder())[source]
    +class sympy.polys.fields.FracField(symbols, domain, order=LexOrder())[source]

    Multivariate distributed rational function field.

    -class sympy.polys.fields.FracElement(numer, denom=None)[source]
    +class sympy.polys.fields.FracElement(numer, denom=None)[source]

    Element of multivariate distributed rational function field.

    -diff(x)[source]
    +diff(x)[source]

    Computes partial derivative in x.

    Examples

    >>> from sympy.polys.fields import field
    @@ -5988,179 +5988,179 @@ 

    Sparse rational functions

    -class sympy.polys.polyclasses.DMP(rep, dom, lev=None)[source]
    +class sympy.polys.polyclasses.DMP(rep, dom, lev=None)[source]

    Dense Multivariate Polynomials over \(K\).

    -LC()[source]
    +LC()[source]

    Returns the leading coefficient of f.

    -TC()[source]
    +TC()[source]

    Returns the trailing coefficient of f.

    -abs()[source]
    +abs()[source]

    Make all coefficients in f positive.

    -add(g)[source]
    +add(g)[source]

    Add two multivariate polynomials f and g.

    -add_ground(c)[source]
    +add_ground(c)[source]

    Add an element of the ground domain to f.

    -all_coeffs()[source]
    +all_coeffs()[source]

    Returns all coefficients from f.

    -all_monoms()[source]
    +all_monoms()[source]

    Returns all monomials from f.

    -all_terms()[source]
    +all_terms()[source]

    Returns all terms from a f.

    -cancel(g, include=True)[source]
    +cancel(g, include=True)[source]

    Cancel common factors in a rational function f/g.

    -cauchy_lower_bound()[source]
    +cauchy_lower_bound()[source]

    Computes the Cauchy lower bound on the nonzero roots of f.

    -cauchy_upper_bound()[source]
    +cauchy_upper_bound()[source]

    Computes the Cauchy upper bound on the roots of f.

    -clear_denoms()[source]
    +clear_denoms()[source]

    Clear denominators, but keep the ground domain.

    -coeffs(order=None)[source]
    +coeffs(order=None)[source]

    Returns all non-zero coefficients from f in lex order.

    -cofactors(g)[source]
    +cofactors(g)[source]

    Returns GCD of f and g and their cofactors.

    -compose(g)[source]
    +compose(g)[source]

    Computes functional composition of f and g.

    -content()[source]
    +content()[source]

    Returns GCD of polynomial coefficients.

    -convert(dom)[source]
    +convert(dom)[source]

    Convert f to a DMP over the new domain.

    -count_complex_roots(inf=None, sup=None)[source]
    +count_complex_roots(inf=None, sup=None)[source]

    Return the number of complex roots of f in [inf, sup].

    -count_real_roots(inf=None, sup=None)[source]
    +count_real_roots(inf=None, sup=None)[source]

    Return the number of real roots of f in [inf, sup].

    -decompose()[source]
    +decompose()[source]

    Computes functional decomposition of f.

    -deflate()[source]
    +deflate()[source]

    Reduce degree of \(f\) by mapping \(x_i^m\) to \(y_i\).

    -degree(j=0)[source]
    +degree(j=0)[source]

    Returns the leading degree of f in x_j.

    -degree_list()[source]
    +degree_list()[source]

    Returns a list of degrees of f.

    -diff(m=1, j=0)[source]
    +diff(m=1, j=0)[source]

    Computes the m-th order derivative of f in x_j.

    -discriminant()[source]
    +discriminant()[source]

    Computes discriminant of f.

    -div(g)[source]
    +div(g)[source]

    Polynomial division with remainder of f and g.

    -eject(dom, front=False)[source]
    +eject(dom, front=False)[source]

    Eject selected generators into the ground domain.

    -eval(a, j=0)[source]
    +eval(a, j=0)[source]

    Evaluates f at the given point a in x_j.

    -exclude()[source]
    +exclude()[source]

    Remove useless generators from f.

    Returns the removed generators and the new excluded f.

    Examples

    @@ -6176,91 +6176,91 @@

    Dense polynomials
    -exquo(g)[source]
    +exquo(g)[source]

    Computes polynomial exact quotient of f and g.

    -exquo_ground(c)[source]
    +exquo_ground(c)[source]

    Exact quotient of f by a an element of the ground domain.

    -factor_list()[source]
    +factor_list()[source]

    Returns a list of irreducible factors of f.

    -factor_list_include()[source]
    +factor_list_include()[source]

    Returns a list of irreducible factors of f.

    -classmethod from_list(rep, lev, dom)[source]
    +classmethod from_list(rep, lev, dom)[source]

    Create an instance of cls given a list of native coefficients.

    -classmethod from_sympy_list(rep, lev, dom)[source]
    +classmethod from_sympy_list(rep, lev, dom)[source]

    Create an instance of cls given a list of SymPy coefficients.

    -gcd(g)[source]
    +gcd(g)[source]

    Returns polynomial GCD of f and g.

    -gcdex(g)[source]
    +gcdex(g)[source]

    Extended Euclidean algorithm, if univariate.

    -gff_list()[source]
    +gff_list()[source]

    Computes greatest factorial factorization of f.

    -ground_new(coeff)[source]
    +ground_new(coeff)[source]

    Construct a new ground instance of f.

    -half_gcdex(g)[source]
    +half_gcdex(g)[source]

    Half extended Euclidean algorithm, if univariate.

    -homogeneous_order()[source]
    +homogeneous_order()[source]

    Returns the homogeneous order of f.

    -homogenize(s)[source]
    +homogenize(s)[source]

    Return homogeneous polynomial of f

    -inject(front=False)[source]
    +inject(front=False)[source]

    Inject ground domain generators into f.

    -integrate(m=1, j=0)[source]
    +integrate(m=1, j=0)[source]

    Computes the m-th order indefinite integral of f in x_j.

    @@ -6277,13 +6277,13 @@

    Dense polynomialssqf=False,

    -)[source] +)[source]

    Compute isolating intervals for roots of f.

    -invert(g)[source]
    +invert(g)[source]

    Invert f modulo g, if possible.

    @@ -6361,91 +6361,91 @@

    Dense polynomials
    -l1_norm()[source]
    +l1_norm()[source]

    Returns l1 norm of f.

    -l2_norm_squared()[source]
    +l2_norm_squared()[source]

    Return squared l2 norm of f.

    -lcm(g)[source]
    +lcm(g)[source]

    Returns polynomial LCM of f and g.

    -lift()[source]
    +lift()[source]

    Convert algebraic coefficients to rationals.

    -max_norm()[source]
    +max_norm()[source]

    Returns maximum norm of f.

    -mignotte_sep_bound_squared()[source]
    +mignotte_sep_bound_squared()[source]

    Computes the squared Mignotte bound on root separations of f.

    -monic()[source]
    +monic()[source]

    Divides all coefficients by LC(f).

    -monoms(order=None)[source]
    +monoms(order=None)[source]

    Returns all non-zero monomials from f in lex order.

    -mul(g)[source]
    +mul(g)[source]

    Multiply two multivariate polynomials f and g.

    -mul_ground(c)[source]
    +mul_ground(c)[source]

    Multiply f by a an element of the ground domain.

    -neg()[source]
    +neg()[source]

    Negate all coefficients in f.

    -norm()[source]
    +norm()[source]

    Computes Norm(f).

    -nth(*N)[source]
    +nth(*N)[source]

    Returns the n-th coefficient of f.

    -pdiv(g)[source]
    +pdiv(g)[source]

    Polynomial pseudo-division of f and g.

    -permute(P)[source]
    +permute(P)[source]

    Returns a polynomial in \(K[x_{P(1)}, ..., x_{P(n)}]\).

    Examples

    >>> from sympy.polys.polyclasses import DMP
    @@ -6464,43 +6464,43 @@ 

    Dense polynomials
    -pexquo(g)[source]
    +pexquo(g)[source]

    Polynomial exact pseudo-quotient of f and g.

    -pow(n)[source]
    +pow(n)[source]

    Raise f to a non-negative power n.

    -pquo(g)[source]
    +pquo(g)[source]

    Polynomial pseudo-quotient of f and g.

    -prem(g)[source]
    +prem(g)[source]

    Polynomial pseudo-remainder of f and g.

    -primitive()[source]
    +primitive()[source]

    Returns content and a primitive form of f.

    -quo(g)[source]
    +quo(g)[source]

    Computes polynomial quotient of f and g.

    -quo_ground(c)[source]
    +quo_ground(c)[source]

    Quotient of f by a an element of the ground domain.

    @@ -6516,14 +6516,14 @@

    Dense polynomialsfast=False,

    -)[source] +)[source]

    Refine an isolating interval to the given precision.

    eps should be a rational number.

    -rem(g)[source]
    +rem(g)[source]

    Computes polynomial remainder of f and g.

    @@ -6535,103 +6535,103 @@

    Dense polynomials
    -resultant(g, includePRS=False)[source]
    +resultant(g, includePRS=False)[source]

    Computes resultant of f and g via PRS.

    -revert(n)[source]
    +revert(n)[source]

    Compute f**(-1) mod x**n.

    -shift(a)[source]
    +shift(a)[source]

    Efficiently compute Taylor shift f(x + a).

    -shift_list(a)[source]
    +shift_list(a)[source]

    Efficiently compute Taylor shift f(X + A).

    -slice(m, n, j=0)[source]
    +slice(m, n, j=0)[source]

    Take a continuous subsequence of terms of f.

    -sqf_list(all=False)[source]
    +sqf_list(all=False)[source]

    Returns a list of square-free factors of f.

    -sqf_list_include(all=False)[source]
    +sqf_list_include(all=False)[source]

    Returns a list of square-free factors of f.

    -sqf_norm()[source]
    +sqf_norm()[source]

    Computes square-free norm of f.

    -sqf_part()[source]
    +sqf_part()[source]

    Computes square-free part of f.

    -sqr()[source]
    +sqr()[source]

    Square a multivariate polynomial f.

    -sturm()[source]
    +sturm()[source]

    Computes the Sturm sequence of f.

    -sub(g)[source]
    +sub(g)[source]

    Subtract two multivariate polynomials f and g.

    -sub_ground(c)[source]
    +sub_ground(c)[source]

    Subtract an element of the ground domain from f.

    -subresultants(g)[source]
    +subresultants(g)[source]

    Computes subresultant PRS sequence of f and g.

    -terms(order=None)[source]
    +terms(order=None)[source]

    Returns all non-zero terms from f in lex order.

    -terms_gcd()[source]
    +terms_gcd()[source]

    Remove GCD of terms from the polynomial f.

    -to_best()[source]
    +to_best()[source]

    Convert to DUP_Flint if possible.

    This method should be used when the domain or level is changed and it potentially becomes possible to convert from DMP_Python to DUP_Flint.

    @@ -6639,74 +6639,74 @@

    Dense polynomials
    -to_dict(zero=False)[source]
    +to_dict(zero=False)[source]

    Convert f to a dict representation with native coefficients.

    -to_exact()[source]
    +to_exact()[source]

    Make the ground domain exact.

    -to_field()[source]
    +to_field()[source]

    Make the ground domain a field.

    -to_list()[source]
    +to_list()[source]

    Convert f to a list representation with native coefficients.

    -to_ring()[source]
    +to_ring()[source]

    Make the ground domain a ring.

    -to_sympy_dict(zero=False)[source]
    +to_sympy_dict(zero=False)[source]

    Convert f to a dict representation with SymPy coefficients.

    -to_sympy_list()[source]
    +to_sympy_list()[source]

    Convert f to a list representation with SymPy coefficients.

    -to_tuple()[source]
    +to_tuple()[source]

    Convert f to a tuple representation with native coefficients.

    This is needed for hashing.

    -total_degree()[source]
    +total_degree()[source]

    Returns the total degree of f.

    -transform(p, q)[source]
    +transform(p, q)[source]

    Evaluate functional transformation q**n * f(p/q).

    -trunc(p)[source]
    +trunc(p)[source]

    Reduce f modulo a constant p.

    -unify_DMP(g)[source]
    +unify_DMP(g)[source]

    Unify and return DMP instances of f and g.

    @@ -6714,53 +6714,53 @@

    Dense polynomials
    -class sympy.polys.polyclasses.DMF(rep, dom, lev=None)[source]
    +class sympy.polys.polyclasses.DMF(rep, dom, lev=None)[source]

    Dense Multivariate Fractions over \(K\).

    -add(g)[source]
    +add(g)[source]

    Add two multivariate fractions f and g.

    -add_ground(c)[source]
    +add_ground(c)[source]

    Add an element of the ground domain to f.

    -cancel()[source]
    +cancel()[source]

    Remove common factors from f.num and f.den.

    -denom()[source]
    +denom()[source]

    Returns the denominator of f.

    -exquo(g)[source]
    +exquo(g)[source]

    Computes quotient of fractions f and g.

    -frac_unify(g)[source]
    +frac_unify(g)[source]

    Unify representations of two multivariate fractions.

    -half_per(rep, kill=False)[source]
    +half_per(rep, kill=False)[source]

    Create a DMP out of the given representation.

    -invert(check=True)[source]
    +invert(check=True)[source]

    Computes inverse of a fraction f.

    @@ -6778,49 +6778,49 @@

    Dense polynomials
    -mul(g)[source]
    +mul(g)[source]

    Multiply two multivariate fractions f and g.

    -neg()[source]
    +neg()[source]

    Negate all coefficients in f.

    -numer()[source]
    +numer()[source]

    Returns the numerator of f.

    -per(num, den, cancel=True, kill=False)[source]
    +per(num, den, cancel=True, kill=False)[source]

    Create a DMF out of the given representation.

    -poly_unify(g)[source]
    +poly_unify(g)[source]

    Unify a multivariate fraction and a polynomial.

    -pow(n)[source]
    +pow(n)[source]

    Raise f to a non-negative power n.

    -quo(g)[source]
    +quo(g)[source]

    Computes quotient of fractions f and g.

    -sub(g)[source]
    +sub(g)[source]

    Subtract two multivariate fractions f and g.

    @@ -6828,29 +6828,29 @@

    Dense polynomials
    -class sympy.polys.polyclasses.ANP(rep, mod, dom)[source]
    +class sympy.polys.polyclasses.ANP(rep, mod, dom)[source]

    Dense Algebraic Number Polynomials over a field.

    -LC()[source]
    +LC()[source]

    Returns the leading coefficient of f.

    -TC()[source]
    +TC()[source]

    Returns the trailing coefficient of f.

    -add_ground(c)[source]
    +add_ground(c)[source]

    Add an element of the ground domain to f.

    -convert(dom)[source]
    +convert(dom)[source]

    Convert f to a ANP over a new domain.

    @@ -6874,74 +6874,74 @@

    Dense polynomials
    -mod_to_list()[source]
    +mod_to_list()[source]

    Return f.mod as a list with native coefficients.

    -mul_ground(c)[source]
    +mul_ground(c)[source]

    Multiply f by an element of the ground domain.

    -pow(n)[source]
    +pow(n)[source]

    Raise f to a non-negative power n.

    -quo_ground(c)[source]
    +quo_ground(c)[source]

    Quotient of f by an element of the ground domain.

    -sub_ground(c)[source]
    +sub_ground(c)[source]

    Subtract an element of the ground domain from f.

    -to_dict()[source]
    +to_dict()[source]

    Convert f to a dict representation with native coefficients.

    -to_list()[source]
    +to_list()[source]

    Convert f to a list representation with native coefficients.

    -to_sympy_dict()[source]
    +to_sympy_dict()[source]

    Convert f to a dict representation with SymPy coefficients.

    -to_sympy_list()[source]
    +to_sympy_list()[source]

    Convert f to a list representation with SymPy coefficients.

    -to_tuple()[source]
    +to_tuple()[source]

    Convert f to a tuple representation with native coefficients.

    This is needed for hashing.

    -unify(g)[source]
    +unify(g)[source]

    Unify representations of two algebraic numbers.

    -unify_ANP(g)[source]
    +unify_ANP(g)[source]

    Unify and return DMP instances of f and g.

    diff --git a/dev/modules/polys/internals.html b/dev/modules/polys/internals.html index da69aae20a1..e00d838ac75 100644 --- a/dev/modules/polys/internals.html +++ b/dev/modules/polys/internals.html @@ -853,7 +853,7 @@

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_LC(f, K)[source]
    +sympy.polys.densebasic.dmp_LC(f, K)[source]

    Return leading coefficient of f.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -870,7 +870,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_TC(f, K)[source]
    +sympy.polys.densebasic.dmp_TC(f, K)[source]

    Return trailing coefficient of f.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -887,7 +887,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_ground_LC(f, u, K)[source]
    +sympy.polys.densebasic.dmp_ground_LC(f, u, K)[source]

    Return the ground leading coefficient.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -905,7 +905,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_ground_TC(f, u, K)[source]
    +sympy.polys.densebasic.dmp_ground_TC(f, u, K)[source]

    Return the ground trailing coefficient.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -923,7 +923,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_true_LT(f, u, K)[source]
    +sympy.polys.densebasic.dmp_true_LT(f, u, K)[source]

    Return the leading term c * x_1**n_1 ... x_k**n_k.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -941,7 +941,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_degree(f, u)[source]
    +sympy.polys.densebasic.dmp_degree(f, u)[source]

    Return the leading degree of f in x_0 in K[X].

    Note that the degree of 0 is negative infinity (float('-inf')).

    Examples

    @@ -964,7 +964,7 @@

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_degree_in(f, j, u)[source]
    +sympy.polys.densebasic.dmp_degree_in(f, j, u)[source]

    Return the leading degree of f in x_j in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -984,7 +984,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_degree_list(f, u)[source]
    +sympy.polys.densebasic.dmp_degree_list(f, u)[source]

    Return a list of degrees of f in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1002,7 +1002,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_strip(f, u)[source]
    +sympy.polys.densebasic.dmp_strip(f, u)[source]

    Remove leading zeros from f in K[X].

    Examples

    >>> from sympy.polys.densebasic import dmp_strip
    @@ -1016,7 +1016,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_validate(f, K=None)[source]
    +sympy.polys.densebasic.dmp_validate(f, K=None)[source]

    Return the number of levels in f and recursively strip it.

    Examples

    >>> from sympy.polys.densebasic import dmp_validate
    @@ -1036,7 +1036,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dup_reverse(f)[source]
    +sympy.polys.densebasic.dup_reverse(f)[source]

    Compute x**n * f(1/x), i.e.: reverse f in K[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1054,7 +1054,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_copy(f, u)[source]
    +sympy.polys.densebasic.dmp_copy(f, u)[source]

    Create a new copy of a polynomial f in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1072,7 +1072,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_to_tuple(f, u)[source]
    +sympy.polys.densebasic.dmp_to_tuple(f, u)[source]

    Convert \(f\) into a nested tuple of tuples.

    This is needed for hashing. This is similar to dmp_copy().

    Examples

    @@ -1091,7 +1091,7 @@

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_normal(f, u, K)[source]
    +sympy.polys.densebasic.dmp_normal(f, u, K)[source]

    Normalize a multivariate polynomial in the given domain.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1106,7 +1106,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_convert(f, u, K0, K1)[source]
    +sympy.polys.densebasic.dmp_convert(f, u, K0, K1)[source]

    Convert the ground domain of f from K0 to K1.

    Examples

    >>> from sympy.polys.rings import ring
    @@ -1127,7 +1127,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_from_sympy(f, u, K)[source]
    +sympy.polys.densebasic.dmp_from_sympy(f, u, K)[source]

    Convert the ground domain of f from SymPy to K.

    Examples

    >>> from sympy import S
    @@ -1143,7 +1143,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_nth(f, n, u, K)[source]
    +sympy.polys.densebasic.dmp_nth(f, n, u, K)[source]

    Return the n-th coefficient of f in K[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1163,7 +1163,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_ground_nth(f, N, u, K)[source]
    +sympy.polys.densebasic.dmp_ground_nth(f, N, u, K)[source]

    Return the ground n-th coefficient of f in K[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1181,7 +1181,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_zero_p(f, u)[source]
    +sympy.polys.densebasic.dmp_zero_p(f, u)[source]

    Return True if f is zero in K[X].

    Examples

    >>> from sympy.polys.densebasic import dmp_zero_p
    @@ -1197,7 +1197,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_zero(u)[source]
    +sympy.polys.densebasic.dmp_zero(u)[source]

    Return a multivariate zero.

    Examples

    >>> from sympy.polys.densebasic import dmp_zero
    @@ -1211,7 +1211,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_one_p(f, u, K)[source]
    +sympy.polys.densebasic.dmp_one_p(f, u, K)[source]

    Return True if f is one in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1226,7 +1226,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_one(u, K)[source]
    +sympy.polys.densebasic.dmp_one(u, K)[source]

    Return a multivariate one over K.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1241,7 +1241,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_ground_p(f, c, u)[source]
    +sympy.polys.densebasic.dmp_ground_p(f, c, u)[source]

    Return True if f is constant in K[X].

    Examples

    >>> from sympy.polys.densebasic import dmp_ground_p
    @@ -1257,7 +1257,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_ground(c, u)[source]
    +sympy.polys.densebasic.dmp_ground(c, u)[source]

    Return a multivariate constant.

    Examples

    >>> from sympy.polys.densebasic import dmp_ground
    @@ -1273,7 +1273,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_zeros(n, u, K)[source]
    +sympy.polys.densebasic.dmp_zeros(n, u, K)[source]

    Return a list of multivariate zeros.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1290,7 +1290,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_grounds(c, n, u)[source]
    +sympy.polys.densebasic.dmp_grounds(c, n, u)[source]

    Return a list of multivariate constants.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1307,7 +1307,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_negative_p(f, u, K)[source]
    +sympy.polys.densebasic.dmp_negative_p(f, u, K)[source]

    Return True if LC(f) is negative.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1324,7 +1324,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_positive_p(f, u, K)[source]
    +sympy.polys.densebasic.dmp_positive_p(f, u, K)[source]

    Return True if LC(f) is positive.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1341,7 +1341,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_from_dict(f, u, K)[source]
    +sympy.polys.densebasic.dmp_from_dict(f, u, K)[source]

    Create a K[X] polynomial from a dict.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1358,7 +1358,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_to_dict(f, u, K=None, zero=False)[source]
    +sympy.polys.densebasic.dmp_to_dict(f, u, K=None, zero=False)[source]

    Convert a K[X] polynomial to a dict``.

    Examples

    >>> from sympy.polys.densebasic import dmp_to_dict
    @@ -1374,7 +1374,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_swap(f, i, j, u, K)[source]
    +sympy.polys.densebasic.dmp_swap(f, i, j, u, K)[source]

    Transform K[..x_i..x_j..] to K[..x_j..x_i..].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1396,7 +1396,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_permute(f, P, u, K)[source]
    +sympy.polys.densebasic.dmp_permute(f, P, u, K)[source]

    Return a polynomial in K[x_{P(1)},..,x_{P(n)}].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1416,7 +1416,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_nest(f, l, K)[source]
    +sympy.polys.densebasic.dmp_nest(f, l, K)[source]

    Return a multivariate value nested l-levels.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1431,7 +1431,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_raise(f, l, u, K)[source]
    +sympy.polys.densebasic.dmp_raise(f, l, u, K)[source]

    Return a multivariate polynomial raised l-levels.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1449,7 +1449,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_deflate(f, u, K)[source]
    +sympy.polys.densebasic.dmp_deflate(f, u, K)[source]

    Map x_i**m_i to y_i in a polynomial in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1467,7 +1467,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_multi_deflate(polys, u, K)[source]
    +sympy.polys.densebasic.dmp_multi_deflate(polys, u, K)[source]

    Map x_i**m_i to y_i in a set of polynomials in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1486,7 +1486,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_inflate(f, M, u, K)[source]
    +sympy.polys.densebasic.dmp_inflate(f, M, u, K)[source]

    Map y_i to x_i**k_i in a polynomial in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1504,7 +1504,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_exclude(f, u, K)[source]
    +sympy.polys.densebasic.dmp_exclude(f, u, K)[source]

    Exclude useless levels from f.

    Return the levels excluded, the new excluded f, and the new u.

    Examples

    @@ -1523,7 +1523,7 @@

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_include(f, J, u, K)[source]
    +sympy.polys.densebasic.dmp_include(f, J, u, K)[source]

    Include useless levels in f.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1541,7 +1541,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_inject(f, u, K, front=False)[source]
    +sympy.polys.densebasic.dmp_inject(f, u, K, front=False)[source]

    Convert f from K[X][Y] to K[X,Y].

    Examples

    >>> from sympy.polys.rings import ring
    @@ -1562,7 +1562,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_eject(f, u, K, front=False)[source]
    +sympy.polys.densebasic.dmp_eject(f, u, K, front=False)[source]

    Convert f from K[X,Y] to K[X][Y].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1577,7 +1577,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_terms_gcd(f, u, K)[source]
    +sympy.polys.densebasic.dmp_terms_gcd(f, u, K)[source]

    Remove GCD of terms from f in K[X].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1595,7 +1595,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_list_terms(f, u, K, order=None)[source]
    +sympy.polys.densebasic.dmp_list_terms(f, u, K, order=None)[source]

    List all non-zero terms from f in the given order order.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1615,7 +1615,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_apply_pairs(f, g, h, args, u, K)[source]
    +sympy.polys.densebasic.dmp_apply_pairs(f, g, h, args, u, K)[source]

    Apply h to pairs of coefficients of f and g.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1633,13 +1633,13 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densebasic.dmp_slice(f, m, n, u, K)[source]
    +sympy.polys.densebasic.dmp_slice(f, m, n, u, K)[source]

    Take a continuous subsequence of terms of f in K[X].

    -sympy.polys.densebasic.dup_random(n, a, b, K)[source]
    +sympy.polys.densebasic.dup_random(n, a, b, K)[source]

    Return a polynomial of degree n with coefficients in [a, b].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -1655,7 +1655,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_add_term(f, c, i, u, K)[source]
    +sympy.polys.densearith.dmp_add_term(f, c, i, u, K)[source]

    Add c(x_2..x_u)*x_0**i to f in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1670,7 +1670,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_sub_term(f, c, i, u, K)[source]
    +sympy.polys.densearith.dmp_sub_term(f, c, i, u, K)[source]

    Subtract c(x_2..x_u)*x_0**i from f in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1685,7 +1685,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_mul_term(f, c, i, u, K)[source]
    +sympy.polys.densearith.dmp_mul_term(f, c, i, u, K)[source]

    Multiply f by c(x_2..x_u)*x_0**i in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1700,7 +1700,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_add_ground(f, c, u, K)[source]
    +sympy.polys.densearith.dmp_add_ground(f, c, u, K)[source]

    Add an element of the ground domain to f.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1715,7 +1715,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_sub_ground(f, c, u, K)[source]
    +sympy.polys.densearith.dmp_sub_ground(f, c, u, K)[source]

    Subtract an element of the ground domain from f.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1730,7 +1730,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_mul_ground(f, c, u, K)[source]
    +sympy.polys.densearith.dmp_mul_ground(f, c, u, K)[source]

    Multiply f by a constant value in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1745,7 +1745,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_quo_ground(f, c, u, K)[source]
    +sympy.polys.densearith.dmp_quo_ground(f, c, u, K)[source]

    Quotient by a constant in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -1765,7 +1765,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_exquo_ground(f, c, u, K)[source]
    +sympy.polys.densearith.dmp_exquo_ground(f, c, u, K)[source]

    Exact quotient by a constant in K[X].

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -1780,7 +1780,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dup_lshift(f, n, K)[source]
    +sympy.polys.densearith.dup_lshift(f, n, K)[source]

    Efficiently multiply f by x**n in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1795,7 +1795,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dup_rshift(f, n, K)[source]
    +sympy.polys.densearith.dup_rshift(f, n, K)[source]

    Efficiently divide f by x**n in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1812,7 +1812,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_abs(f, u, K)[source]
    +sympy.polys.densearith.dmp_abs(f, u, K)[source]

    Make all coefficients positive in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1827,7 +1827,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_neg(f, u, K)[source]
    +sympy.polys.densearith.dmp_neg(f, u, K)[source]

    Negate a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1842,7 +1842,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_add(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_add(f, g, u, K)[source]

    Add dense polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1857,7 +1857,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_sub(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_sub(f, g, u, K)[source]

    Subtract dense polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1872,7 +1872,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_add_mul(f, g, h, u, K)[source]
    +sympy.polys.densearith.dmp_add_mul(f, g, h, u, K)[source]

    Returns f + g*h where f, g, h are in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1887,7 +1887,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_sub_mul(f, g, h, u, K)[source]
    +sympy.polys.densearith.dmp_sub_mul(f, g, h, u, K)[source]

    Returns f - g*h where f, g, h are in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1902,7 +1902,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_mul(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_mul(f, g, u, K)[source]

    Multiply dense polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1917,7 +1917,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_sqr(f, u, K)[source]
    +sympy.polys.densearith.dmp_sqr(f, u, K)[source]

    Square dense polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1932,7 +1932,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_pow(f, n, u, K)[source]
    +sympy.polys.densearith.dmp_pow(f, n, u, K)[source]

    Raise f to the n-th power in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1947,7 +1947,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_pdiv(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_pdiv(f, g, u, K)[source]

    Polynomial pseudo-division in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1962,7 +1962,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_prem(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_prem(f, g, u, K)[source]

    Polynomial pseudo-remainder in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -1977,7 +1977,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_pquo(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_pquo(f, g, u, K)[source]

    Polynomial exact pseudo-quotient in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2001,7 +2001,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_pexquo(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_pexquo(f, g, u, K)[source]

    Polynomial pseudo-quotient in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2027,7 +2027,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_rr_div(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_rr_div(f, g, u, K)[source]

    Multivariate division with remainder over a ring.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2042,7 +2042,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_ff_div(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_ff_div(f, g, u, K)[source]

    Polynomial division with remainder over a field.

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2057,7 +2057,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_div(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_div(f, g, u, K)[source]

    Polynomial division with remainder in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2077,7 +2077,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_rem(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_rem(f, g, u, K)[source]

    Returns polynomial remainder in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2097,7 +2097,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_quo(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_quo(f, g, u, K)[source]

    Returns exact polynomial quotient in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2117,7 +2117,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_exquo(f, g, u, K)[source]
    +sympy.polys.densearith.dmp_exquo(f, g, u, K)[source]

    Returns polynomial quotient in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2143,7 +2143,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_max_norm(f, u, K)[source]
    +sympy.polys.densearith.dmp_max_norm(f, u, K)[source]

    Returns maximum norm of a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2158,7 +2158,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_l1_norm(f, u, K)[source]
    +sympy.polys.densearith.dmp_l1_norm(f, u, K)[source]

    Returns l1 norm of a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2173,7 +2173,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densearith.dmp_expand(polys, u, K)[source]
    +sympy.polys.densearith.dmp_expand(polys, u, K)[source]

    Multiply together several polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2189,7 +2189,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_integrate(f, m, u, K)[source]
    +sympy.polys.densetools.dmp_integrate(f, m, u, K)[source]

    Computes the indefinite integral of f in x_0 in K[X].

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2206,7 +2206,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_integrate_in(f, m, j, u, K)[source]
    +sympy.polys.densetools.dmp_integrate_in(f, m, j, u, K)[source]

    Computes the indefinite integral of f in x_j in K[X].

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2223,7 +2223,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_diff(f, m, u, K)[source]
    +sympy.polys.densetools.dmp_diff(f, m, u, K)[source]

    m-th order derivative in x_0 of a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2243,7 +2243,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_diff_in(f, m, j, u, K)[source]
    +sympy.polys.densetools.dmp_diff_in(f, m, j, u, K)[source]

    m-th order derivative in x_j of a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2263,7 +2263,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_eval(f, a, u, K)[source]
    +sympy.polys.densetools.dmp_eval(f, a, u, K)[source]

    Evaluate a polynomial at x_0 = a in K[X] using the Horner scheme.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2278,7 +2278,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_eval_in(f, a, j, u, K)[source]
    +sympy.polys.densetools.dmp_eval_in(f, a, j, u, K)[source]

    Evaluate a polynomial at x_j = a in K[X] using the Horner scheme.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2298,7 +2298,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_eval_tail(f, A, u, K)[source]
    +sympy.polys.densetools.dmp_eval_tail(f, A, u, K)[source]

    Evaluate a polynomial at x_j = a_j, ... in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2318,7 +2318,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_diff_eval_in(f, m, a, j, u, K)[source]
    +sympy.polys.densetools.dmp_diff_eval_in(f, m, a, j, u, K)[source]

    Differentiate and evaluate a polynomial in x_j at a in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2338,7 +2338,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_trunc(f, p, u, K)[source]
    +sympy.polys.densetools.dmp_trunc(f, p, u, K)[source]

    Reduce a K[X] polynomial modulo a polynomial p in K[Y].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2357,7 +2357,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_ground_trunc(f, p, u, K)[source]
    +sympy.polys.densetools.dmp_ground_trunc(f, p, u, K)[source]

    Reduce a K[X] polynomial modulo a constant p in K.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2375,7 +2375,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_monic(f, K)[source]
    +sympy.polys.densetools.dup_monic(f, K)[source]

    Divide all coefficients by LC(f) in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2395,7 +2395,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_ground_monic(f, u, K)[source]
    +sympy.polys.densetools.dmp_ground_monic(f, u, K)[source]

    Divide all coefficients by LC(f) in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2421,7 +2421,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_content(f, K)[source]
    +sympy.polys.densetools.dup_content(f, K)[source]

    Compute the GCD of coefficients of f in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2447,7 +2447,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_ground_content(f, u, K)[source]
    +sympy.polys.densetools.dmp_ground_content(f, u, K)[source]

    Compute the GCD of coefficients of f in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2473,7 +2473,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_primitive(f, K)[source]
    +sympy.polys.densetools.dup_primitive(f, K)[source]

    Compute content and the primitive form of f in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2499,7 +2499,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_ground_primitive(f, u, K)[source]
    +sympy.polys.densetools.dmp_ground_primitive(f, u, K)[source]

    Compute content and the primitive form of f in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ, QQ
    @@ -2525,7 +2525,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_extract(f, g, K)[source]
    +sympy.polys.densetools.dup_extract(f, g, K)[source]

    Extract common content from a pair of polynomials in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2540,7 +2540,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_ground_extract(f, g, u, K)[source]
    +sympy.polys.densetools.dmp_ground_extract(f, g, u, K)[source]

    Extract common content from a pair of polynomials in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2555,7 +2555,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_real_imag(f, K)[source]
    +sympy.polys.densetools.dup_real_imag(f, K)[source]

    Find f1 and f2, such that f(x+I*y) = f1(x,y) + f2(x,y)*I.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2576,7 +2576,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_mirror(f, K)[source]
    +sympy.polys.densetools.dup_mirror(f, K)[source]

    Evaluate efficiently the composition f(-x) in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2591,7 +2591,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_scale(f, a, K)[source]
    +sympy.polys.densetools.dup_scale(f, a, K)[source]

    Evaluate efficiently composition f(a*x) in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2606,7 +2606,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_shift(f, a, K)[source]
    +sympy.polys.densetools.dup_shift(f, a, K)[source]

    Evaluate efficiently Taylor shift f(x + a) in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2621,7 +2621,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_transform(f, p, q, K)[source]
    +sympy.polys.densetools.dup_transform(f, p, q, K)[source]

    Evaluate functional transformation q**n * f(p/q) in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2636,7 +2636,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_compose(f, g, u, K)[source]
    +sympy.polys.densetools.dmp_compose(f, g, u, K)[source]

    Evaluate functional composition f(g) in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2651,7 +2651,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_decompose(f, K)[source]
    +sympy.polys.densetools.dup_decompose(f, K)[source]

    Computes functional decomposition of f in K[x].

    Given a univariate polynomial f with coefficients in a field of characteristic zero, returns list [f_1, f_2, ..., f_n], where:

    @@ -2688,7 +2688,7 @@

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_lift(f, u, K)[source]
    +sympy.polys.densetools.dmp_lift(f, u, K)[source]

    Convert algebraic coefficients to integers in K[X].

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2710,7 +2710,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dup_sign_variations(f, K)[source]
    +sympy.polys.densetools.dup_sign_variations(f, K)[source]

    Compute the number of sign variations of f in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -2725,7 +2725,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_clear_denoms(f, u, K0, K1=None, convert=False)[source]
    +sympy.polys.densetools.dmp_clear_denoms(f, u, K0, K1=None, convert=False)[source]

    Clear denominators, i.e. transform K_0 to K_1.

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2745,7 +2745,7 @@ 

    Manipulation of dense, multivariate polynomials
    -sympy.polys.densetools.dmp_revert(f, g, u, K)[source]
    +sympy.polys.densetools.dmp_revert(f, g, u, K)[source]

    Compute f**(-1) mod x**n using Newton iteration.

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -2765,7 +2765,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients fields.

    -sympy.polys.galoistools.gf_crt(U, M, K=None)[source]
    +sympy.polys.galoistools.gf_crt(U, M, K=None)[source]

    Chinese Remainder Theorem.

    Given a set of integer residues u_0,...,u_n and a set of co-prime integer moduli m_0,...,m_n, returns an integer @@ -2798,7 +2798,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_crt1(M, K)[source]
    +sympy.polys.galoistools.gf_crt1(M, K)[source]

    First part of the Chinese Remainder Theorem.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -2839,7 +2839,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_crt2(U, M, p, E, S, K)[source]
    +sympy.polys.galoistools.gf_crt2(U, M, p, E, S, K)[source]

    Second part of the Chinese Remainder Theorem.

    See gf_crt1 for usage.

    Examples

    @@ -2870,7 +2870,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_int(a, p)[source]
    +sympy.polys.galoistools.gf_int(a, p)[source]

    Coerce a mod p to an integer in the range [-p/2, p/2].

    Examples

    >>> from sympy.polys.galoistools import gf_int
    @@ -2886,7 +2886,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_degree(f)[source]
    +sympy.polys.galoistools.gf_degree(f)[source]

    Return the leading degree of f.

    Examples

    >>> from sympy.polys.galoistools import gf_degree
    @@ -2902,7 +2902,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_LC(f, K)[source]
    +sympy.polys.galoistools.gf_LC(f, K)[source]

    Return the leading coefficient of f.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -2917,7 +2917,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_TC(f, K)[source]
    +sympy.polys.galoistools.gf_TC(f, K)[source]

    Return the trailing coefficient of f.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -2932,7 +2932,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_strip(f)[source]
    +sympy.polys.galoistools.gf_strip(f)[source]

    Remove leading zeros from f.

    Examples

    >>> from sympy.polys.galoistools import gf_strip
    @@ -2946,7 +2946,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_trunc(f, p)[source]
    +sympy.polys.galoistools.gf_trunc(f, p)[source]

    Reduce all coefficients modulo p.

    Examples

    >>> from sympy.polys.galoistools import gf_trunc
    @@ -2960,7 +2960,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_normal(f, p, K)[source]
    +sympy.polys.galoistools.gf_normal(f, p, K)[source]

    Normalize all coefficients in K.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -2975,7 +2975,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_from_dict(f, p, K)[source]
    +sympy.polys.galoistools.gf_from_dict(f, p, K)[source]

    Create a GF(p)[x] polynomial from a dict.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -2990,7 +2990,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_to_dict(f, p, symmetric=True)[source]
    +sympy.polys.galoistools.gf_to_dict(f, p, symmetric=True)[source]

    Convert a GF(p)[x] polynomial to a dict.

    Examples

    >>> from sympy.polys.galoistools import gf_to_dict
    @@ -3006,7 +3006,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_from_int_poly(f, p)[source]
    +sympy.polys.galoistools.gf_from_int_poly(f, p)[source]

    Create a GF(p)[x] polynomial from Z[x].

    Examples

    >>> from sympy.polys.galoistools import gf_from_int_poly
    @@ -3020,7 +3020,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_to_int_poly(f, p, symmetric=True)[source]
    +sympy.polys.galoistools.gf_to_int_poly(f, p, symmetric=True)[source]

    Convert a GF(p)[x] polynomial to Z[x].

    Examples

    >>> from sympy.polys.galoistools import gf_to_int_poly
    @@ -3036,7 +3036,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_neg(f, p, K)[source]
    +sympy.polys.galoistools.gf_neg(f, p, K)[source]

    Negate a polynomial in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3051,7 +3051,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_add_ground(f, a, p, K)[source]
    +sympy.polys.galoistools.gf_add_ground(f, a, p, K)[source]

    Compute f + a where f in GF(p)[x] and a in GF(p).

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3066,7 +3066,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sub_ground(f, a, p, K)[source]
    +sympy.polys.galoistools.gf_sub_ground(f, a, p, K)[source]

    Compute f - a where f in GF(p)[x] and a in GF(p).

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3081,7 +3081,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_mul_ground(f, a, p, K)[source]
    +sympy.polys.galoistools.gf_mul_ground(f, a, p, K)[source]

    Compute f * a where f in GF(p)[x] and a in GF(p).

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3096,7 +3096,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_quo_ground(f, a, p, K)[source]
    +sympy.polys.galoistools.gf_quo_ground(f, a, p, K)[source]

    Compute f/a where f in GF(p)[x] and a in GF(p).

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3111,7 +3111,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_add(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_add(f, g, p, K)[source]

    Add polynomials in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3126,7 +3126,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sub(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_sub(f, g, p, K)[source]

    Subtract polynomials in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3141,7 +3141,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_mul(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_mul(f, g, p, K)[source]

    Multiply polynomials in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3156,7 +3156,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sqr(f, p, K)[source]
    +sympy.polys.galoistools.gf_sqr(f, p, K)[source]

    Square polynomials in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3171,7 +3171,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_add_mul(f, g, h, p, K)[source]
    +sympy.polys.galoistools.gf_add_mul(f, g, h, p, K)[source]

    Returns f + g*h where f, g, h in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3184,7 +3184,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sub_mul(f, g, h, p, K)[source]
    +sympy.polys.galoistools.gf_sub_mul(f, g, h, p, K)[source]

    Compute f - g*h where f, g, h in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3199,7 +3199,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_expand(F, p, K)[source]
    +sympy.polys.galoistools.gf_expand(F, p, K)[source]

    Expand results of factor() in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3214,7 +3214,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_div(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_div(f, g, p, K)[source]

    Division with remainder in GF(p)[x].

    Given univariate polynomials f and g with coefficients in a finite field with p elements, returns polynomials q and r @@ -3247,7 +3247,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_rem(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_rem(f, g, p, K)[source]

    Compute polynomial remainder in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3262,7 +3262,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_quo(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_quo(f, g, p, K)[source]

    Compute exact quotient in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3279,7 +3279,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_exquo(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_exquo(f, g, p, K)[source]

    Compute polynomial quotient in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3300,7 +3300,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_lshift(f, n, K)[source]
    +sympy.polys.galoistools.gf_lshift(f, n, K)[source]

    Efficiently multiply f by x**n.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3315,7 +3315,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_rshift(f, n, K)[source]
    +sympy.polys.galoistools.gf_rshift(f, n, K)[source]

    Efficiently divide f by x**n.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3330,7 +3330,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_pow(f, n, p, K)[source]
    +sympy.polys.galoistools.gf_pow(f, n, p, K)[source]

    Compute f**n in GF(p)[x] using repeated squaring.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3345,7 +3345,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_pow_mod(f, n, g, p, K)[source]
    +sympy.polys.galoistools.gf_pow_mod(f, n, g, p, K)[source]

    Compute f**n in GF(p)[x]/(g) using repeated squaring.

    Given polynomials f and g in GF(p)[x] and a non-negative integer n, efficiently computes f**n (mod g) i.e. the remainder @@ -3370,7 +3370,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_gcd(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_gcd(f, g, p, K)[source]

    Euclidean Algorithm in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3385,7 +3385,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_lcm(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_lcm(f, g, p, K)[source]

    Compute polynomial LCM in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3400,7 +3400,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_cofactors(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_cofactors(f, g, p, K)[source]

    Compute polynomial GCD and cofactors in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3415,7 +3415,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_gcdex(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_gcdex(f, g, p, K)[source]

    Extended Euclidean Algorithm in GF(p)[x].

    Given polynomials f and g in GF(p)[x], computes polynomials s, t and h, such that h = gcd(f, g) and s*f + t*g = h. @@ -3450,7 +3450,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_monic(f, p, K)[source]
    +sympy.polys.galoistools.gf_monic(f, p, K)[source]

    Compute LC and a monic polynomial in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3465,7 +3465,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_diff(f, p, K)[source]
    +sympy.polys.galoistools.gf_diff(f, p, K)[source]

    Differentiate polynomial in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3480,7 +3480,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_eval(f, a, p, K)[source]
    +sympy.polys.galoistools.gf_eval(f, a, p, K)[source]

    Evaluate f(a) in GF(p) using Horner scheme.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3495,7 +3495,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_multi_eval(f, A, p, K)[source]
    +sympy.polys.galoistools.gf_multi_eval(f, A, p, K)[source]

    Evaluate f(a) for a in [a_1, ..., a_n].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3510,7 +3510,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_compose(f, g, p, K)[source]
    +sympy.polys.galoistools.gf_compose(f, g, p, K)[source]

    Compute polynomial composition f(g) in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3525,7 +3525,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_compose_mod(g, h, f, p, K)[source]
    +sympy.polys.galoistools.gf_compose_mod(g, h, f, p, K)[source]

    Compute polynomial composition g(h) in GF(p)[x]/(f).

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3540,7 +3540,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_trace_map(a, b, c, n, f, p, K)[source]
    +sympy.polys.galoistools.gf_trace_map(a, b, c, n, f, p, K)[source]

    Compute polynomial trace map in GF(p)[x]/(f).

    Given a polynomial f in GF(p)[x], polynomials a, b, c in the quotient ring GF(p)[x]/(f) such that b = c**t @@ -3573,7 +3573,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_random(n, p, K)[source]
    +sympy.polys.galoistools.gf_random(n, p, K)[source]

    Generate a random polynomial in GF(p)[x] of degree n.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3586,7 +3586,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_irreducible(n, p, K)[source]
    +sympy.polys.galoistools.gf_irreducible(n, p, K)[source]

    Generate random irreducible polynomial of degree n in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3599,7 +3599,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_irreducible_p(f, p, K)[source]
    +sympy.polys.galoistools.gf_irreducible_p(f, p, K)[source]

    Test irreducibility of a polynomial f in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3616,7 +3616,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sqf_p(f, p, K)[source]
    +sympy.polys.galoistools.gf_sqf_p(f, p, K)[source]

    Return True if f is square-free in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3633,7 +3633,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sqf_part(f, p, K)[source]
    +sympy.polys.galoistools.gf_sqf_part(f, p, K)[source]

    Return square-free part of a GF(p)[x] polynomial.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3648,7 +3648,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_sqf_list(f, p, K, all=False)[source]
    +sympy.polys.galoistools.gf_sqf_list(f, p, K, all=False)[source]

    Return the square-free decomposition of a GF(p)[x] polynomial.

    Given a polynomial f in GF(p)[x], returns the leading coefficient of f and a square-free decomposition f_1**e_1 f_2**e_2 ... f_k**e_k @@ -3693,7 +3693,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_Qmatrix(f, p, K)[source]
    +sympy.polys.galoistools.gf_Qmatrix(f, p, K)[source]

    Calculate Berlekamp’s Q matrix.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3716,7 +3716,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_Qbasis(Q, p, K)[source]
    +sympy.polys.galoistools.gf_Qbasis(Q, p, K)[source]

    Compute a basis of the kernel of Q.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3735,7 +3735,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_berlekamp(f, p, K)[source]
    +sympy.polys.galoistools.gf_berlekamp(f, p, K)[source]

    Factor a square-free f in GF(p)[x] for small p.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3750,7 +3750,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_zassenhaus(f, p, K)[source]
    +sympy.polys.galoistools.gf_zassenhaus(f, p, K)[source]

    Factor a square-free f in GF(p)[x] for medium p.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3765,7 +3765,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_shoup(f, p, K)[source]
    +sympy.polys.galoistools.gf_shoup(f, p, K)[source]

    Factor a square-free f in GF(p)[x] for large p.

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3780,7 +3780,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_factor_sqf(f, p, K, method=None)[source]
    +sympy.polys.galoistools.gf_factor_sqf(f, p, K, method=None)[source]

    Factor a square-free polynomial f in GF(p)[x].

    Examples

    >>> from sympy.polys.domains import ZZ
    @@ -3795,7 +3795,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_factor(f, p, K)[source]
    +sympy.polys.galoistools.gf_factor(f, p, K)[source]

    Factor (non square-free) polynomials in GF(p)[x].

    Given a possibly non square-free polynomial f in GF(p)[x], returns its complete factorization into irreducibles:

    @@ -3844,7 +3844,7 @@

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_value(f, a)[source]
    +sympy.polys.galoistools.gf_value(f, a)[source]

    Value of polynomial ‘f’ at ‘a’ in field R.

    Examples

    >>> from sympy.polys.galoistools import gf_value
    @@ -3858,7 +3858,7 @@ 

    Manipulation of dense, univariate polynomials with finite field coefficients
    -sympy.polys.galoistools.gf_csolve(f, n)[source]
    +sympy.polys.galoistools.gf_csolve(f, n)[source]

    To solve f(x) congruent 0 mod(n).

    n is divided into canonical factors and f(x) cong 0 mod(p**e) will be solved for each factor. Applying the Chinese Remainder Theorem to the @@ -3904,7 +3904,7 @@

    Manipulation of sparse, distributed polynomials and vectors\(f_1, f_2, \ldots\).

    -sympy.polys.distributedmodules.sdm_monomial_mul(M, X)[source]
    +sympy.polys.distributedmodules.sdm_monomial_mul(M, X)[source]

    Multiply tuple X representing a monomial of \(K[X]\) into the tuple M representing a monomial of \(F\).

    Examples

    @@ -3918,7 +3918,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_monomial_deg(M)[source]
    +sympy.polys.distributedmodules.sdm_monomial_deg(M)[source]

    Return the total degree of M.

    Examples

    For example, the total degree of \(x^2 y f_5\) is 3:

    @@ -3931,7 +3931,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_monomial_divides(A, B)[source]
    +sympy.polys.distributedmodules.sdm_monomial_divides(A, B)[source]

    Does there exist a (polynomial) monomial X such that XA = B?

    Examples

    Positive examples:

    @@ -3977,19 +3977,19 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_LC(f, K)[source]
    +sympy.polys.distributedmodules.sdm_LC(f, K)[source]

    Returns the leading coefficient of f.

    -sympy.polys.distributedmodules.sdm_to_dict(f)[source]
    +sympy.polys.distributedmodules.sdm_to_dict(f)[source]

    Make a dictionary from a distributed polynomial.

    -sympy.polys.distributedmodules.sdm_from_dict(d, O)[source]
    +sympy.polys.distributedmodules.sdm_from_dict(d, O)[source]

    Create an sdm from a dictionary.

    Here O is the monomial order to use.

    Examples

    @@ -4004,7 +4004,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_add(f, g, O, K)[source]
    +sympy.polys.distributedmodules.sdm_add(f, g, O, K)[source]

    Add two module elements f, g.

    Addition is done over the ground field K, monomials are ordered according to O.

    @@ -4036,7 +4036,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_LM(f)[source]
    +sympy.polys.distributedmodules.sdm_LM(f)[source]

    Returns the leading monomial of f.

    Only valid if \(f \ne 0\).

    Examples

    @@ -4051,7 +4051,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_LT(f)[source]
    +sympy.polys.distributedmodules.sdm_LT(f)[source]

    Returns the leading term of f.

    Only valid if \(f \ne 0\).

    Examples

    @@ -4066,7 +4066,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_mul_term(f, term, O, K)[source]
    +sympy.polys.distributedmodules.sdm_mul_term(f, term, O, K)[source]

    Multiply a distributed module element f by a (polynomial) term term.

    Multiplication of coefficients is done over the ground field K, and monomials are ordered according to O.

    @@ -4098,13 +4098,13 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_zero()[source]
    +sympy.polys.distributedmodules.sdm_zero()[source]

    Return the zero module element.

    -sympy.polys.distributedmodules.sdm_deg(f)[source]
    +sympy.polys.distributedmodules.sdm_deg(f)[source]

    Degree of f.

    This is the maximum of the degrees of all its monomials. Invalid if f is zero.

    @@ -4118,7 +4118,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_from_vector(vec, O, K, **opts)[source]
    +sympy.polys.distributedmodules.sdm_from_vector(vec, O, K, **opts)[source]

    Create an sdm from an iterable of expressions.

    Coefficients are created in the ground field K, and terms are ordered according to monomial order O. Named arguments are passed on to the @@ -4135,7 +4135,7 @@

    Manipulation of sparse, distributed polynomials and vectors
    -sympy.polys.distributedmodules.sdm_to_vector(f, gens, K, n=None)[source]
    +sympy.polys.distributedmodules.sdm_to_vector(f, gens, K, n=None)[source]

    Convert sdm f into a list of polynomial expressions.

    The generators for the polynomial ring are specified via gens. The rank of the module is guessed, or passed via n. The ground field is assumed @@ -4209,7 +4209,7 @@

    Classical remainder sequence
    -sympy.polys.euclidtools.dmp_half_gcdex(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_half_gcdex(f, g, u, K)[source]

    Half extended Euclidean algorithm in \(F[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4220,7 +4220,7 @@ 

    Classical remainder sequence
    -sympy.polys.euclidtools.dmp_gcdex(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_gcdex(f, g, u, K)[source]

    Extended Euclidean algorithm in \(F[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4231,7 +4231,7 @@ 

    Classical remainder sequence
    -sympy.polys.euclidtools.dmp_invert(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_invert(f, g, u, K)[source]

    Compute multiplicative inverse of \(f\) modulo \(g\) in \(F[X]\).

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -4242,7 +4242,7 @@ 

    Classical remainder sequence
    -sympy.polys.euclidtools.dmp_euclidean_prs(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_euclidean_prs(f, g, u, K)[source]

    Euclidean polynomial remainder sequence (PRS) in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4282,7 +4282,7 @@ 

    Simplified remainder sequences
    -sympy.polys.euclidtools.dmp_primitive_prs(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_primitive_prs(f, g, u, K)[source]

    Primitive polynomial remainder sequence (PRS) in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4400,7 +4400,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_inner_subresultants(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_inner_subresultants(f, g, u, K)[source]

    Subresultant PRS algorithm in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4427,7 +4427,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_subresultants(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_subresultants(f, g, u, K)[source]

    Computes subresultant PRS of two polynomials in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4450,7 +4450,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_prs_resultant(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_prs_resultant(f, g, u, K)[source]

    Resultant algorithm in \(K[X]\) using subresultant PRS.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4480,7 +4480,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_zz_modular_resultant(f, g, p, u, K)[source]
    +sympy.polys.euclidtools.dmp_zz_modular_resultant(f, g, p, u, K)[source]

    Compute resultant of \(f\) and \(g\) modulo a prime \(p\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4499,7 +4499,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_zz_collins_resultant(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_zz_collins_resultant(f, g, u, K)[source]

    Collins’s modular resultant algorithm in \(Z[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4518,7 +4518,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_qq_collins_resultant(f, g, u, K0)[source]
    +sympy.polys.euclidtools.dmp_qq_collins_resultant(f, g, u, K0)[source]

    Collins’s modular resultant algorithm in \(Q[X]\).

    Examples

    >>> from sympy.polys import ring, QQ
    @@ -4537,7 +4537,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_resultant(f, g, u, K, includePRS=False)[source]
    +sympy.polys.euclidtools.dmp_resultant(f, g, u, K, includePRS=False)[source]

    Computes resultant of two polynomials in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4556,7 +4556,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_discriminant(f, u, K)[source]
    +sympy.polys.euclidtools.dmp_discriminant(f, u, K)[source]

    Computes discriminant of a polynomial in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4571,7 +4571,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_rr_prs_gcd(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_rr_prs_gcd(f, g, u, K)[source]

    Computes polynomial GCD using subresultants over a ring.

    Returns (h, cff, cfg) such that a = gcd(f, g), cff = quo(f, h), and cfg = quo(g, h).

    @@ -4592,7 +4592,7 @@

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_ff_prs_gcd(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_ff_prs_gcd(f, g, u, K)[source]

    Computes polynomial GCD using subresultants over a field.

    Returns (h, cff, cfg) such that a = gcd(f, g), cff = quo(f, h), and cfg = quo(g, h).

    @@ -4613,7 +4613,7 @@

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_zz_heu_gcd(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_zz_heu_gcd(f, g, u, K)[source]

    Heuristic polynomial GCD in \(Z[X]\).

    Given univariate polynomials \(f\) and \(g\) in \(Z[X]\), returns their GCD and cofactors, i.e. polynomials h, cff and cfg @@ -4655,7 +4655,7 @@

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_qq_heu_gcd(f, g, u, K0)[source]
    +sympy.polys.euclidtools.dmp_qq_heu_gcd(f, g, u, K0)[source]

    Heuristic polynomial GCD in \(Q[X]\).

    Returns (h, cff, cfg) such that a = gcd(f, g), cff = quo(f, h), and cfg = quo(g, h).

    @@ -4676,7 +4676,7 @@

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_inner_gcd(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_inner_gcd(f, g, u, K)[source]

    Computes polynomial GCD and cofactors of \(f\) and \(g\) in \(K[X]\).

    Returns (h, cff, cfg) such that a = gcd(f, g), cff = quo(f, h), and cfg = quo(g, h).

    @@ -4697,7 +4697,7 @@

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_gcd(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_gcd(f, g, u, K)[source]

    Computes polynomial GCD of \(f\) and \(g\) in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4716,7 +4716,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_lcm(f, g, u, K)[source]
    +sympy.polys.euclidtools.dmp_lcm(f, g, u, K)[source]

    Computes polynomial LCM of \(f\) and \(g\) in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4735,7 +4735,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_content(f, u, K)[source]
    +sympy.polys.euclidtools.dmp_content(f, u, K)[source]

    Returns GCD of multivariate coefficients.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4750,7 +4750,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_primitive(f, u, K)[source]
    +sympy.polys.euclidtools.dmp_primitive(f, u, K)[source]

    Returns multivariate content and a primitive polynomial.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4765,7 +4765,7 @@ 

    Subresultant sequence
    -sympy.polys.euclidtools.dmp_cancel(f, g, u, K, include=True)[source]
    +sympy.polys.euclidtools.dmp_cancel(f, g, u, K, include=True)[source]

    Cancel common factors in a rational function \(f/g\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4781,7 +4781,7 @@ 

    Subresultant sequencePolynomial factorization in characteristic zero:

    -sympy.polys.factortools.dup_trial_division(f, factors, K)[source]
    +sympy.polys.factortools.dup_trial_division(f, factors, K)[source]

    Determine multiplicities of factors for a univariate polynomial using trial division.

    An error will be raised if any factor does not divide f.

    @@ -4789,7 +4789,7 @@

    Subresultant sequence
    -sympy.polys.factortools.dmp_trial_division(f, factors, u, K)[source]
    +sympy.polys.factortools.dmp_trial_division(f, factors, u, K)[source]

    Determine multiplicities of factors for a multivariate polynomial using trial division.

    An error will be raised if any factor does not divide f.

    @@ -4797,7 +4797,7 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_zz_mignotte_bound(f, K)[source]
    +sympy.polys.factortools.dup_zz_mignotte_bound(f, K)[source]

    The Knuth-Cohen variant of Mignotte bound for univariate polynomials in K[x].

    Examples

    @@ -4833,13 +4833,13 @@

    Subresultant sequence
    -sympy.polys.factortools.dmp_zz_mignotte_bound(f, u, K)[source]
    +sympy.polys.factortools.dmp_zz_mignotte_bound(f, u, K)[source]

    Mignotte bound for multivariate polynomials in \(K[X]\).

    -sympy.polys.factortools.dup_zz_hensel_step(m, f, g, h, s, t, K)[source]
    +sympy.polys.factortools.dup_zz_hensel_step(m, f, g, h, s, t, K)[source]

    One step in Hensel lifting in \(Z[x]\).

    Given positive integer \(m\) and \(Z[x]\) polynomials \(f\), \(g\), \(h\), \(s\) and \(t\) such that:

    @@ -4870,7 +4870,7 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_zz_hensel_lift(p, f, f_list, l, K)[source]
    +sympy.polys.factortools.dup_zz_hensel_lift(p, f, f_list, l, K)[source]

    Multifactor Hensel lifting in \(Z[x]\).

    Given a prime \(p\), polynomial \(f\) over \(Z[x]\) such that \(lc(f)\) is a unit modulo \(p\), monic pair-wise coprime polynomials \(f_i\) @@ -4896,19 +4896,19 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_zz_zassenhaus(f, K)[source]
    +sympy.polys.factortools.dup_zz_zassenhaus(f, K)[source]

    Factor primitive square-free polynomials in \(Z[x]\).

    -sympy.polys.factortools.dup_zz_irreducible_p(f, K)[source]
    +sympy.polys.factortools.dup_zz_irreducible_p(f, K)[source]

    Test irreducibility using Eisenstein’s criterion.

    -sympy.polys.factortools.dup_cyclotomic_p(f, K, irreducible=False)[source]
    +sympy.polys.factortools.dup_cyclotomic_p(f, K, irreducible=False)[source]

    Efficiently test if f is a cyclotomic polynomial.

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -4933,13 +4933,13 @@ 

    Subresultant sequence
    -sympy.polys.factortools.dup_zz_cyclotomic_poly(n, K)[source]
    +sympy.polys.factortools.dup_zz_cyclotomic_poly(n, K)[source]

    Efficiently generate n-th cyclotomic polynomial.

    -sympy.polys.factortools.dup_zz_cyclotomic_factor(f, K)[source]
    +sympy.polys.factortools.dup_zz_cyclotomic_factor(f, K)[source]

    Efficiently factor polynomials \(x**n - 1\) and \(x**n + 1\) in \(Z[x]\).

    Given a univariate polynomial \(f\) in \(Z[x]\) returns a list of factors of \(f\), provided that \(f\) is in the form \(x**n - 1\) or \(x**n + 1\) for @@ -4958,13 +4958,13 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_zz_factor_sqf(f, K)[source]
    +sympy.polys.factortools.dup_zz_factor_sqf(f, K)[source]

    Factor square-free (non-primitive) polynomials in \(Z[x]\).

    -sympy.polys.factortools.dup_zz_factor(f, K)[source]
    +sympy.polys.factortools.dup_zz_factor(f, K)[source]

    Factor (non square-free) polynomials in \(Z[x]\).

    Given a univariate polynomial \(f\) in \(Z[x]\) computes its complete factorization \(f_1, ..., f_n\) into irreducibles over integers:

    @@ -5008,43 +5008,43 @@

    Subresultant sequence
    -sympy.polys.factortools.dmp_zz_wang_non_divisors(E, cs, ct, K)[source]
    +sympy.polys.factortools.dmp_zz_wang_non_divisors(E, cs, ct, K)[source]

    Wang/EEZ: Compute a set of valid divisors.

    -sympy.polys.factortools.dmp_zz_wang_test_points(f, T, ct, A, u, K)[source]
    +sympy.polys.factortools.dmp_zz_wang_test_points(f, T, ct, A, u, K)[source]

    Wang/EEZ: Test evaluation points for suitability.

    -sympy.polys.factortools.dmp_zz_wang_lead_coeffs(f, T, cs, E, H, A, u, K)[source]
    +sympy.polys.factortools.dmp_zz_wang_lead_coeffs(f, T, cs, E, H, A, u, K)[source]

    Wang/EEZ: Compute correct leading coefficients.

    -sympy.polys.factortools.dup_zz_diophantine(F, m, p, K)[source]
    +sympy.polys.factortools.dup_zz_diophantine(F, m, p, K)[source]

    Wang/EEZ: Solve univariate Diophantine equations.

    -sympy.polys.factortools.dmp_zz_diophantine(F, c, A, d, p, u, K)[source]
    +sympy.polys.factortools.dmp_zz_diophantine(F, c, A, d, p, u, K)[source]

    Wang/EEZ: Solve multivariate Diophantine equations.

    -sympy.polys.factortools.dmp_zz_wang_hensel_lifting(f, H, LC, A, p, u, K)[source]
    +sympy.polys.factortools.dmp_zz_wang_hensel_lifting(f, H, LC, A, p, u, K)[source]

    Wang/EEZ: Parallel Hensel lifting algorithm.

    -sympy.polys.factortools.dmp_zz_wang(f, u, K, mod=None, seed=None)[source]
    +sympy.polys.factortools.dmp_zz_wang(f, u, K, mod=None, seed=None)[source]

    Factor primitive square-free polynomials in \(Z[X]\).

    Given a multivariate polynomial \(f\) in \(Z[x_1,...,x_n]\), which is primitive and square-free in \(x_1\), computes factorization of \(f\) into @@ -5077,7 +5077,7 @@

    Subresultant sequence
    -sympy.polys.factortools.dmp_zz_factor(f, u, K)[source]
    +sympy.polys.factortools.dmp_zz_factor(f, u, K)[source]

    Factor (non square-free) polynomials in \(Z[X]\).

    Given a multivariate polynomial \(f\) in \(Z[x]\) computes its complete factorization \(f_1, \dots, f_n\) into irreducibles over integers:

    @@ -5115,31 +5115,31 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_qq_i_factor(f, K0)[source]
    +sympy.polys.factortools.dup_qq_i_factor(f, K0)[source]

    Factor univariate polynomials into irreducibles in \(QQ_I[x]\).

    -sympy.polys.factortools.dup_zz_i_factor(f, K0)[source]
    +sympy.polys.factortools.dup_zz_i_factor(f, K0)[source]

    Factor univariate polynomials into irreducibles in \(ZZ_I[x]\).

    -sympy.polys.factortools.dmp_qq_i_factor(f, u, K0)[source]
    +sympy.polys.factortools.dmp_qq_i_factor(f, u, K0)[source]

    Factor multivariate polynomials into irreducibles in \(QQ_I[X]\).

    -sympy.polys.factortools.dmp_zz_i_factor(f, u, K0)[source]
    +sympy.polys.factortools.dmp_zz_i_factor(f, u, K0)[source]

    Factor multivariate polynomials into irreducibles in \(ZZ_I[X]\).

    -sympy.polys.factortools.dup_ext_factor(f, K)[source]
    +sympy.polys.factortools.dup_ext_factor(f, K)[source]

    Factor univariate polynomials over algebraic number fields.

    The domain \(K\) must be an algebraic number field \(k(a)\) (see QQ<a>).

    Examples

    @@ -5199,7 +5199,7 @@

    Subresultant sequence
    -sympy.polys.factortools.dmp_ext_factor(f, u, K)[source]
    +sympy.polys.factortools.dmp_ext_factor(f, u, K)[source]

    Factor multivariate polynomials over algebraic number fields.

    The domain \(K\) must be an algebraic number field \(k(a)\) (see QQ<a>).

    Examples

    @@ -5243,50 +5243,50 @@

    Subresultant sequence
    -sympy.polys.factortools.dup_gf_factor(f, K)[source]
    +sympy.polys.factortools.dup_gf_factor(f, K)[source]

    Factor univariate polynomials over finite fields.

    -sympy.polys.factortools.dmp_gf_factor(f, u, K)[source]
    +sympy.polys.factortools.dmp_gf_factor(f, u, K)[source]

    Factor multivariate polynomials over finite fields.

    -sympy.polys.factortools.dup_factor_list(f, K0)[source]
    +sympy.polys.factortools.dup_factor_list(f, K0)[source]

    Factor univariate polynomials into irreducibles in \(K[x]\).

    -sympy.polys.factortools.dup_factor_list_include(f, K)[source]
    +sympy.polys.factortools.dup_factor_list_include(f, K)[source]

    Factor univariate polynomials into irreducibles in \(K[x]\).

    -sympy.polys.factortools.dmp_factor_list(f, u, K0)[source]
    +sympy.polys.factortools.dmp_factor_list(f, u, K0)[source]

    Factor multivariate polynomials into irreducibles in \(K[X]\).

    -sympy.polys.factortools.dmp_factor_list_include(f, u, K)[source]
    +sympy.polys.factortools.dmp_factor_list_include(f, u, K)[source]

    Factor multivariate polynomials into irreducibles in \(K[X]\).

    -sympy.polys.factortools.dup_irreducible_p(f, K)[source]
    +sympy.polys.factortools.dup_irreducible_p(f, K)[source]

    Returns True if a univariate polynomial f has no factors over its domain.

    -sympy.polys.factortools.dmp_irreducible_p(f, u, K)[source]
    +sympy.polys.factortools.dmp_irreducible_p(f, u, K)[source]

    Returns True if a multivariate polynomial f has no factors over its domain.

    @@ -5294,7 +5294,7 @@

    Subresultant sequenceSquare-free factorization:

    -sympy.polys.sqfreetools.dup_sqf_p(f, K)[source]
    +sympy.polys.sqfreetools.dup_sqf_p(f, K)[source]

    Return True if f is a square-free polynomial in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5311,7 +5311,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_sqf_p(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_sqf_p(f, u, K)[source]

    Return True if f is a square-free polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5328,7 +5328,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dup_sqf_norm(f, K)[source]
    +sympy.polys.sqfreetools.dup_sqf_norm(f, K)[source]

    Find a shift of \(f\) in \(K[x]\) that has square-free norm.

    The domain \(K\) must be an algebraic number field \(k(a)\) (see QQ<a>).

    Returns \((s,g,r)\), such that \(g(x)=f(x-sa)\), \(r(x)=\text{Norm}(g(x))\) and @@ -5390,7 +5390,7 @@

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_sqf_norm(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_sqf_norm(f, u, K)[source]

    Find a shift of f in K[X] that has square-free norm.

    The domain \(K\) must be an algebraic number field \(k(a)\) (see QQ<a>).

    Returns \((s,g,r)\), such that \(g(x_1,x_2,\cdots)=f(x_1-s_1 a, x_2 - s_2 a, @@ -5453,7 +5453,7 @@

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_norm(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_norm(f, u, K)[source]

    Norm of f in K[X], often not square-free.

    The domain \(K\) must be an algebraic number field \(k(a)\) (see QQ<a>).

    Examples

    @@ -5521,19 +5521,19 @@

    Subresultant sequence
    -sympy.polys.sqfreetools.dup_gf_sqf_part(f, K)[source]
    +sympy.polys.sqfreetools.dup_gf_sqf_part(f, K)[source]

    Compute square-free part of f in GF(p)[x].

    -sympy.polys.sqfreetools.dmp_gf_sqf_part(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_gf_sqf_part(f, u, K)[source]

    Compute square-free part of f in GF(p)[X].

    -sympy.polys.sqfreetools.dup_sqf_part(f, K)[source]
    +sympy.polys.sqfreetools.dup_sqf_part(f, K)[source]

    Returns square-free part of a polynomial in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5552,7 +5552,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_sqf_part(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_sqf_part(f, u, K)[source]

    Returns square-free part of a polynomial in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5567,19 +5567,19 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dup_gf_sqf_list(f, K, all=False)[source]
    +sympy.polys.sqfreetools.dup_gf_sqf_list(f, K, all=False)[source]

    Compute square-free decomposition of f in GF(p)[x].

    -sympy.polys.sqfreetools.dmp_gf_sqf_list(f, u, K, all=False)[source]
    +sympy.polys.sqfreetools.dmp_gf_sqf_list(f, u, K, all=False)[source]

    Compute square-free decomposition of f in GF(p)[X].

    -sympy.polys.sqfreetools.dup_sqf_list(f, K, all=False)[source]
    +sympy.polys.sqfreetools.dup_sqf_list(f, K, all=False)[source]

    Return square-free decomposition of a polynomial in K[x].

    Uses Yun’s algorithm from [Yun76].

    Examples

    @@ -5613,7 +5613,7 @@

    Subresultant sequence
    -sympy.polys.sqfreetools.dup_sqf_list_include(f, K, all=False)[source]
    +sympy.polys.sqfreetools.dup_sqf_list_include(f, K, all=False)[source]

    Return square-free decomposition of a polynomial in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5633,7 +5633,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_sqf_list(f, u, K, all=False)[source]
    +sympy.polys.sqfreetools.dmp_sqf_list(f, u, K, all=False)[source]

    Return square-free decomposition of a polynomial in \(K[X]\).

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5671,7 +5671,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_sqf_list_include(f, u, K, all=False)[source]
    +sympy.polys.sqfreetools.dmp_sqf_list_include(f, u, K, all=False)[source]

    Return square-free decomposition of a polynomial in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5691,7 +5691,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dup_gff_list(f, K)[source]
    +sympy.polys.sqfreetools.dup_gff_list(f, K)[source]

    Compute greatest factorial factorization of f in K[x].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5706,7 +5706,7 @@ 

    Subresultant sequence
    -sympy.polys.sqfreetools.dmp_gff_list(f, u, K)[source]
    +sympy.polys.sqfreetools.dmp_gff_list(f, u, K)[source]

    Compute greatest factorial factorization of f in K[X].

    Examples

    >>> from sympy.polys import ring, ZZ
    @@ -5726,7 +5726,7 @@ 

    Groebner basis algorithms
    -sympy.polys.groebnertools.groebner(seq, ring, method=None)[source]
    +sympy.polys.groebnertools.groebner(seq, ring, method=None)[source]

    Computes Groebner basis for a set of polynomials in \(K[X]\).

    Wrapper around the (default) improved Buchberger and the other algorithms for computing Groebner bases. The choice of algorithm can be changed via @@ -5736,14 +5736,14 @@

    Groebner basis algorithms
    -sympy.polys.groebnertools.spoly(p1, p2, ring)[source]
    +sympy.polys.groebnertools.spoly(p1, p2, ring)[source]

    Compute LCM(LM(p1), LM(p2))/LM(p1)*p1 - LCM(LM(p1), LM(p2))/LM(p2)*p2 This is the S-poly provided p1 and p2 are monic

    -sympy.polys.groebnertools.red_groebner(G, ring)[source]
    +sympy.polys.groebnertools.red_groebner(G, ring)[source]

    Compute reduced Groebner basis, from BeckerWeispfenning93, p. 216

    Selects a subset of generators, that already generate the ideal and computes a reduced Groebner basis for them.

    @@ -5751,25 +5751,25 @@

    Groebner basis algorithms
    -sympy.polys.groebnertools.is_groebner(G, ring)[source]
    +sympy.polys.groebnertools.is_groebner(G, ring)[source]

    Check if G is a Groebner basis.

    -sympy.polys.groebnertools.is_minimal(G, ring)[source]
    +sympy.polys.groebnertools.is_minimal(G, ring)[source]

    Checks if G is a minimal Groebner basis.

    -sympy.polys.groebnertools.is_reduced(G, ring)[source]
    +sympy.polys.groebnertools.is_reduced(G, ring)[source]

    Checks if G is a reduced Groebner basis.

    -sympy.polys.fglmtools.matrix_fglm(F, ring, O_to)[source]
    +sympy.polys.fglmtools.matrix_fglm(F, ring, O_to)[source]

    Converts the reduced Groebner basis F of a zero-dimensional ideal w.r.t. O_from to a reduced Groebner basis w.r.t. O_to.

    @@ -5787,7 +5787,7 @@

    Groebner basis algorithms
    -sympy.polys.distributedmodules.sdm_spoly(f, g, O, K, phantom=None)[source]
    +sympy.polys.distributedmodules.sdm_spoly(f, g, O, K, phantom=None)[source]

    Compute the generalized s-polynomial of f and g.

    The ground field is assumed to be K, and monomials ordered according to O.

    @@ -5815,7 +5815,7 @@

    Groebner basis algorithms
    -sympy.polys.distributedmodules.sdm_ecart(f)[source]
    +sympy.polys.distributedmodules.sdm_ecart(f)[source]

    Compute the ecart of f.

    This is defined to be the difference of the total degree of \(f\) and the total degree of the leading monomial of \(f\) [SCA, defn 2.3.7].

    @@ -5832,7 +5832,7 @@

    Groebner basis algorithms
    -sympy.polys.distributedmodules.sdm_nf_mora(f, G, O, K, phantom=None)[source]
    +sympy.polys.distributedmodules.sdm_nf_mora(f, G, O, K, phantom=None)[source]

    Compute a weak normal form of f with respect to G and order O.

    The ground field is assumed to be K, and monomials ordered according to O.

    @@ -5854,7 +5854,7 @@

    Groebner basis algorithms
    -sympy.polys.distributedmodules.sdm_groebner(G, NF, O, K, extended=False)[source]
    +sympy.polys.distributedmodules.sdm_groebner(G, NF, O, K, extended=False)[source]

    Compute a minimal standard basis of G with respect to order O.

    The algorithm uses a normal form NF, for example sdm_nf_mora. The ground field is assumed to be K, and monomials ordered according @@ -5883,7 +5883,7 @@

    Groebner basis algorithmsPoly and public API functions.

    -class sympy.polys.polyoptions.Options(gens, args, flags=None, strict=False)[source]
    +class sympy.polys.polyoptions.Options(gens, args, flags=None, strict=False)[source]

    Options manager for polynomial manipulation module.

    Examples

    >>> from sympy.polys.polyoptions import Options
    @@ -5931,7 +5931,7 @@ 

    Groebner basis algorithms
    -clone(updates={})[source]
    +clone(updates={})[source]

    Clone self and update specified options.

    @@ -5939,7 +5939,7 @@

    Groebner basis algorithms
    -sympy.polys.polyoptions.build_options(gens, args=None)[source]
    +sympy.polys.polyoptions.build_options(gens, args=None)[source]

    Construct options from keyword arguments or … options.

    @@ -5949,7 +5949,7 @@

    Groebner basis algorithms
    -sympy.polys.polyconfig.setup(key, value=None)[source]
    +sympy.polys.polyconfig.setup(key, value=None)[source]

    Assign a value to (or reset) a configuration item.

    @@ -5960,123 +5960,123 @@

    Exceptions
    -class sympy.polys.polyerrors.BasePolynomialError[source]
    +class sympy.polys.polyerrors.BasePolynomialError[source]

    Base class for polynomial related exceptions.

    -class sympy.polys.polyerrors.ExactQuotientFailed(f, g, dom=None)[source]
    +class sympy.polys.polyerrors.ExactQuotientFailed(f, g, dom=None)[source]
    -class sympy.polys.polyerrors.OperationNotSupported(poly, func)[source]
    +class sympy.polys.polyerrors.OperationNotSupported(poly, func)[source]
    -class sympy.polys.polyerrors.HeuristicGCDFailed[source]
    +class sympy.polys.polyerrors.HeuristicGCDFailed[source]
    -class sympy.polys.polyerrors.HomomorphismFailed[source]
    +class sympy.polys.polyerrors.HomomorphismFailed[source]
    -class sympy.polys.polyerrors.IsomorphismFailed[source]
    +class sympy.polys.polyerrors.IsomorphismFailed[source]
    -class sympy.polys.polyerrors.ExtraneousFactors[source]
    +class sympy.polys.polyerrors.ExtraneousFactors[source]
    -class sympy.polys.polyerrors.EvaluationFailed[source]
    +class sympy.polys.polyerrors.EvaluationFailed[source]
    -class sympy.polys.polyerrors.RefinementFailed[source]
    +class sympy.polys.polyerrors.RefinementFailed[source]
    -class sympy.polys.polyerrors.CoercionFailed[source]
    +class sympy.polys.polyerrors.CoercionFailed[source]
    -class sympy.polys.polyerrors.NotInvertible[source]
    +class sympy.polys.polyerrors.NotInvertible[source]
    -class sympy.polys.polyerrors.NotReversible[source]
    +class sympy.polys.polyerrors.NotReversible[source]
    -class sympy.polys.polyerrors.NotAlgebraic[source]
    +class sympy.polys.polyerrors.NotAlgebraic[source]
    -class sympy.polys.polyerrors.DomainError[source]
    +class sympy.polys.polyerrors.DomainError[source]
    -class sympy.polys.polyerrors.PolynomialError[source]
    +class sympy.polys.polyerrors.PolynomialError[source]
    -class sympy.polys.polyerrors.UnificationFailed[source]
    +class sympy.polys.polyerrors.UnificationFailed[source]
    -class sympy.polys.polyerrors.GeneratorsNeeded[source]
    +class sympy.polys.polyerrors.GeneratorsNeeded[source]
    -class sympy.polys.polyerrors.ComputationFailed(func, nargs, exc)[source]
    +class sympy.polys.polyerrors.ComputationFailed(func, nargs, exc)[source]
    -class sympy.polys.polyerrors.GeneratorsError[source]
    +class sympy.polys.polyerrors.GeneratorsError[source]
    -class sympy.polys.polyerrors.UnivariatePolynomialError[source]
    +class sympy.polys.polyerrors.UnivariatePolynomialError[source]
    -class sympy.polys.polyerrors.MultivariatePolynomialError[source]
    +class sympy.polys.polyerrors.MultivariatePolynomialError[source]
    -class sympy.polys.polyerrors.PolificationFailed(opt, origs, exprs, seq=False)[source]
    +class sympy.polys.polyerrors.PolificationFailed(opt, origs, exprs, seq=False)[source]
    -class sympy.polys.polyerrors.OptionError[source]
    +class sympy.polys.polyerrors.OptionError[source]
    -class sympy.polys.polyerrors.FlagError[source]
    +class sympy.polys.polyerrors.FlagError[source]
    @@ -6086,7 +6086,7 @@

    Reference

    -sympy.polys.modulargcd.modgcd_univariate(f, g)[source]
    +sympy.polys.modulargcd.modgcd_univariate(f, g)[source]

    Computes the GCD of two polynomials in \(\mathbb{Z}[x]\) using a modular algorithm.

    The algorithm computes the GCD of two univariate integer polynomials @@ -6166,7 +6166,7 @@

    Modular GCD
    -sympy.polys.modulargcd.modgcd_bivariate(f, g)[source]
    +sympy.polys.modulargcd.modgcd_bivariate(f, g)[source]

    Computes the GCD of two polynomials in \(\mathbb{Z}[x, y]\) using a modular algorithm.

    The algorithm computes the GCD of two bivariate integer polynomials @@ -6252,7 +6252,7 @@

    Modular GCD
    -sympy.polys.modulargcd.modgcd_multivariate(f, g)[source]
    +sympy.polys.modulargcd.modgcd_multivariate(f, g)[source]

    Compute the GCD of two polynomials in \(\mathbb{Z}[x_0, \ldots, x_{k-1}]\) using a modular algorithm.

    The algorithm computes the GCD of two multivariate integer polynomials @@ -6353,7 +6353,7 @@

    Modular GCDcontbound,

    -)[source] +)[source]

    Compute the GCD of two polynomials in \(\mathbb{Z}_p[x_0, \ldots, x_{k-1}]\).

    The algorithm reduces the problem step by step by evaluating the @@ -6410,7 +6410,7 @@

    Modular GCD
    -sympy.polys.modulargcd.func_field_modgcd(f, g)[source]
    +sympy.polys.modulargcd.func_field_modgcd(f, g)[source]

    Compute the GCD of two polynomials \(f\) and \(g\) in \(\mathbb Q(\alpha)[x_0, \ldots, x_{n-1}]\) using a modular algorithm.

    The algorithm first computes the primitive associate diff --git a/dev/modules/polys/numberfields.html b/dev/modules/polys/numberfields.html index 8ec54b12280..bb106076e8a 100644 --- a/dev/modules/polys/numberfields.html +++ b/dev/modules/polys/numberfields.html @@ -926,7 +926,7 @@

    Solving the Main Problems

    -sympy.polys.numberfields.basis.round_two(T, radicals=None)[source]
    +sympy.polys.numberfields.basis.round_two(T, radicals=None)[source]

    Zassenhaus’s “Round 2” algorithm.

    Parameters:
    @@ -1028,7 +1028,7 @@

    Prime Decompositionradical=None,

    -)[source] +)[source]

    Compute the decomposition of rational prime p in a number field.

    Parameters:
    @@ -1085,11 +1085,11 @@

    Prime Decomposition
    -class sympy.polys.numberfields.primes.PrimeIdeal(ZK, p, alpha, f, e=None)[source]
    +class sympy.polys.numberfields.primes.PrimeIdeal(ZK, p, alpha, f, e=None)[source]

    A prime ideal in a ring of algebraic integers.

    -__init__(ZK, p, alpha, f, e=None)[source]
    +__init__(ZK, p, alpha, f, e=None)[source]
    Parameters:

    ZK : Submodule

    @@ -1119,7 +1119,7 @@

    Prime Decomposition
    -__add__(other)[source]
    +__add__(other)[source]

    Convert to a Submodule and add to another Submodule.

    @@ -1130,7 +1130,7 @@

    Prime Decomposition
    -__mul__(other)[source]
    +__mul__(other)[source]

    Convert to a Submodule and multiply by another Submodule or a rational number.

    @@ -1141,7 +1141,7 @@

    Prime Decomposition
    -as_submodule()[source]
    +as_submodule()[source]

    Represent this prime ideal as a Submodule.

    Returns:
    @@ -1197,7 +1197,7 @@

    Prime Decomposition
    -reduce_ANP(a)[source]
    +reduce_ANP(a)[source]

    Reduce an ANP to a “small representative” modulo this prime ideal.

    @@ -1222,7 +1222,7 @@

    Prime Decomposition
    -reduce_alg_num(a)[source]
    +reduce_alg_num(a)[source]

    Reduce an AlgebraicNumber to a “small representative” modulo this prime ideal.

    @@ -1247,7 +1247,7 @@

    Prime Decomposition
    -reduce_element(elt)[source]
    +reduce_element(elt)[source]

    Reduce a PowerBasisElement to a “small representative” modulo this prime ideal.

    @@ -1272,7 +1272,7 @@

    Prime Decomposition
    -repr(field_gen=None, just_gens=False)[source]
    +repr(field_gen=None, just_gens=False)[source]

    Print a representation of this prime ideal.

    Parameters:
    @@ -1309,7 +1309,7 @@

    Prime Decomposition
    -test_factor()[source]
    +test_factor()[source]

    Compute a test factor for this prime ideal.

    Explanation

    Write \(\mathfrak{p}\) for this prime ideal, \(p\) for the rational prime @@ -1323,7 +1323,7 @@

    Prime Decomposition
    -valuation(I)[source]
    +valuation(I)[source]

    Compute the \(\mathfrak{p}\)-adic valuation of integral ideal I at this prime ideal.

    @@ -1344,7 +1344,7 @@

    Prime Decomposition

    -sympy.polys.numberfields.primes.prime_valuation(I, P)[source]
    +sympy.polys.numberfields.primes.prime_valuation(I, P)[source]

    Compute the P-adic valuation for an integral ideal I.

    Parameters:
    @@ -1401,7 +1401,7 @@

    Galois Groups**args,

    -)[source] +)[source]

    Compute the Galois group for polynomials f up to degree 6.

    Parameters:
    @@ -1521,7 +1521,7 @@

    Finding Minimal Polynomialsdomain=None,

    -)[source] +)[source]

    Computes the minimal polynomial of an algebraic element.

    Parameters:
    @@ -1587,7 +1587,7 @@

    Finding Minimal Polynomialsdomain=None,

    -)[source] +)[source]

    This is a synonym for minimal_polynomial().

    @@ -1625,7 +1625,7 @@

    The Subfield Problem
    -sympy.polys.numberfields.subfield.field_isomorphism(a, b, *, fast=True)[source]
    +sympy.polys.numberfields.subfield.field_isomorphism(a, b, *, fast=True)[source]

    Find an embedding of one number field into another.

    Parameters:
    @@ -1682,7 +1682,7 @@

    The Subfield Problempolys=False,

    -)[source] +)[source]

    Find a single generator for a number field given by several generators.

    Parameters:
    @@ -1777,7 +1777,7 @@

    The Subfield Problemalias=None,

    -)[source] +)[source]

    Express one algebraic number in the field generated by another.

    Parameters:
    @@ -2062,7 +2062,7 @@

    Module HomomorphismsClass Reference

    -class sympy.polys.numberfields.modules.Module[source]
    +class sympy.polys.numberfields.modules.Module[source]

    Generic finitely-generated module.

    This is an abstract base class, and should not be instantiated directly. The two concrete subclasses are PowerBasis and @@ -2075,7 +2075,7 @@

    Class ReferencePowerBasis.

    -__call__(spec, denom=1)[source]
    +__call__(spec, denom=1)[source]

    Generate a ModuleElement belonging to this module.

    Parameters:
    @@ -2119,7 +2119,7 @@

    Class Reference
    -ancestors(include_self=False)[source]
    +ancestors(include_self=False)[source]

    Return the list of ancestor modules of this module, from the foundational PowerBasis downward, optionally including self.

    @@ -2131,14 +2131,14 @@

    Class Reference
    -basis_elements()[source]
    +basis_elements()[source]

    Get list of ModuleElement being the generators of this module.

    -element_from_rational(a)[source]
    +element_from_rational(a)[source]

    Return a ModuleElement representing a rational number.

    Parameters:
    @@ -2166,19 +2166,19 @@

    Class Reference
    -endomorphism_ring()[source]
    +endomorphism_ring()[source]

    Form the EndomorphismRing for this module.

    -is_compat_col(col)[source]
    +is_compat_col(col)[source]

    Say whether col is a suitable column vector for this module.

    -mult_tab()[source]
    +mult_tab()[source]

    Get the multiplication table for this module (if closed under mult).

    Returns:
    @@ -2221,7 +2221,7 @@

    Class Reference
    -nearest_common_ancestor(other)[source]
    +nearest_common_ancestor(other)[source]

    Locate the nearest common ancestor of this module and another.

    Returns:
    @@ -2253,7 +2253,7 @@

    Class Reference
    -one()[source]
    +one()[source]

    Return a ModuleElement representing unity, and belonging to the first ancestor of this module (including itself) that starts with unity.

    @@ -2279,7 +2279,7 @@

    Class Reference
    -power_basis_ancestor()[source]
    +power_basis_ancestor()[source]

    Return the PowerBasis that is an ancestor of this module.

    See also

    @@ -2289,7 +2289,7 @@

    Class Reference
    -represent(elt)[source]
    +represent(elt)[source]

    Represent a module element as an integer-linear combination over the generators of this module.

    @@ -2370,7 +2370,7 @@

    Class Reference
    -starts_with_unity()[source]
    +starts_with_unity()[source]

    Say whether the module’s first generator equals unity.

    @@ -2384,7 +2384,7 @@

    Class Referencehnf_modulus=None,

    -)[source] +)[source]

    Form the submodule generated by a list of ModuleElement belonging to this module.

    @@ -2424,7 +2424,7 @@

    Class Reference
    -submodule_from_matrix(B, denom=1)[source]
    +submodule_from_matrix(B, denom=1)[source]

    Form the submodule generated by the elements of this module indicated by the columns of a matrix, with an optional denominator.

    @@ -2473,7 +2473,7 @@

    Class Reference
    -whole_submodule()[source]
    +whole_submodule()[source]

    Return a submodule equal to this entire module.

    Explanation

    This is useful when you have a PowerBasis and want to @@ -2483,7 +2483,7 @@

    Class Reference
    -zero()[source]
    +zero()[source]

    Return a ModuleElement representing zero.

    @@ -2491,11 +2491,11 @@

    Class Reference
    -class sympy.polys.numberfields.modules.PowerBasis(T)[source]
    +class sympy.polys.numberfields.modules.PowerBasis(T)[source]

    The module generated by the powers of an algebraic integer.

    -__init__(T)[source]
    +__init__(T)[source]
    Parameters:

    T : Poly, AlgebraicField

    @@ -2511,19 +2511,19 @@

    Class Reference
    -element_from_ANP(a)[source]
    +element_from_ANP(a)[source]

    Convert an ANP into a PowerBasisElement.

    -element_from_alg_num(a)[source]
    +element_from_alg_num(a)[source]

    Convert an AlgebraicNumber into a PowerBasisElement.

    -element_from_poly(f)[source]
    +element_from_poly(f)[source]

    Produce an element of this module, representing f after reduction mod our defining minimal polynomial.

    @@ -2538,7 +2538,7 @@

    Class Reference
    -represent(elt)[source]
    +represent(elt)[source]

    Represent a module element as an integer-linear combination over the generators of this module.

    @@ -2551,7 +2551,7 @@

    Class Reference
    -class sympy.polys.numberfields.modules.Submodule(parent, matrix, denom=1, mult_tab=None)[source]
    +class sympy.polys.numberfields.modules.Submodule(parent, matrix, denom=1, mult_tab=None)[source]

    A submodule of another module.

    @@ -2564,7 +2564,7 @@

    Class Referencemult_tab=None,

    -)[source] +)[source]
    Parameters:

    parent : Module

    @@ -2621,7 +2621,7 @@

    Class Reference
    -add(other, hnf=True, hnf_modulus=None)[source]
    +add(other, hnf=True, hnf_modulus=None)[source]

    Add this Submodule to another.

    Parameters:
    @@ -2649,21 +2649,21 @@

    Class Reference
    -basis_element_pullbacks()[source]
    +basis_element_pullbacks()[source]

    Return list of this submodule’s basis elements as elements of the submodule’s parent module.

    -discard_before(r)[source]
    +discard_before(r)[source]

    Produce a new module by discarding all generators before a given index r.

    -mul(other, hnf=True, hnf_modulus=None)[source]
    +mul(other, hnf=True, hnf_modulus=None)[source]

    Multiply this Submodule by a rational number, a ModuleElement, or another Submodule.

    @@ -2696,7 +2696,7 @@

    Class Reference
    -reduce_element(elt)[source]
    +reduce_element(elt)[source]

    If this submodule \(B\) has defining matrix \(W\) in square, maximal-rank Hermite normal form, then, given an element \(x\) of the parent module \(A\), we produce an element \(y \in A\) such that \(x - y \in B\), and the @@ -2759,7 +2759,7 @@

    Class Reference
    -reduced()[source]
    +reduced()[source]

    Produce a reduced version of this submodule.

    Returns:
    @@ -2774,7 +2774,7 @@

    Class Reference
    -represent(elt)[source]
    +represent(elt)[source]

    Represent a module element as an integer-linear combination over the generators of this module.

    @@ -2787,14 +2787,14 @@

    Class Reference
    -class sympy.polys.numberfields.modules.ModuleElement(module, col, denom=1)[source]
    +class sympy.polys.numberfields.modules.ModuleElement(module, col, denom=1)[source]

    Represents an element of a Module.

    NOTE: Should not be constructed directly. Use the __call__() method or the make_mod_elt() factory function instead.

    -__init__(module, col, denom=1)[source]
    +__init__(module, col, denom=1)[source]
    Parameters:

    module : Module

    @@ -2816,7 +2816,7 @@

    Class Reference
    -__add__(other)[source]
    +__add__(other)[source]

    A ModuleElement can be added to a rational number, or to another ModuleElement.

    Explanation

    @@ -2830,7 +2830,7 @@

    Class Reference
    -__mul__(other)[source]
    +__mul__(other)[source]

    A ModuleElement can be multiplied by a rational number, or by another ModuleElement.

    Explanation

    @@ -2846,7 +2846,7 @@

    Class Reference
    -__mod__(m)[source]
    +__mod__(m)[source]

    Reduce this ModuleElement mod a Submodule.

    Parameters:
    @@ -2877,13 +2877,13 @@

    Class Reference
    -column(domain=None)[source]
    +column(domain=None)[source]

    Get a copy of this element’s column, optionally converting to a domain.

    -equiv(other)[source]
    +equiv(other)[source]

    A ModuleElement may test as equivalent to a rational number or another ModuleElement, if they represent the same algebraic number.

    @@ -2921,14 +2921,14 @@

    Class Referencedenom=1,

    -)[source] +)[source]

    Make a ModuleElement from a list of ints (instead of a column vector).

    -is_compat(other)[source]
    +is_compat(other)[source]

    Test whether other is another ModuleElement with same module.

    @@ -2941,28 +2941,28 @@

    Class Reference
    -over_power_basis()[source]
    +over_power_basis()[source]

    Transform into a PowerBasisElement over our PowerBasis ancestor.

    -reduced()[source]
    +reduced()[source]

    Produce a reduced version of this ModuleElement, i.e. one in which the gcd of the denominator together with all numerator coefficients is 1.

    -reduced_mod_p(p)[source]
    +reduced_mod_p(p)[source]

    Produce a version of this ModuleElement in which all numerator coefficients have been reduced mod p.

    -to_ancestor(anc)[source]
    +to_ancestor(anc)[source]

    Transform into a ModuleElement belonging to a given ancestor of this element’s module.

    @@ -2974,14 +2974,14 @@

    Class Reference
    -to_parent()[source]
    +to_parent()[source]

    Transform into a ModuleElement belonging to the parent of this element’s module.

    -unify(other)[source]
    +unify(other)[source]

    Try to make a compatible pair of ModuleElement, one equivalent to this one, and one equivalent to the other.

    @@ -3009,7 +3009,7 @@

    Class Reference
    -class sympy.polys.numberfields.modules.PowerBasisElement(module, col, denom=1)[source]
    +class sympy.polys.numberfields.modules.PowerBasisElement(module, col, denom=1)[source]

    Subclass for ModuleElement instances whose module is a PowerBasis.

    @@ -3020,7 +3020,7 @@

    Class Reference
    -as_expr(x=None)[source]
    +as_expr(x=None)[source]

    Create a Basic expression from self.

    @@ -3042,31 +3042,31 @@

    Class Reference
    -norm(T=None)[source]
    +norm(T=None)[source]

    Compute the norm of this number.

    -numerator(x=None)[source]
    +numerator(x=None)[source]

    Obtain the numerator as a polynomial over ZZ.

    -poly(x=None)[source]
    +poly(x=None)[source]

    Obtain the number as a polynomial over QQ.

    -to_ANP()[source]
    +to_ANP()[source]

    Convert to an equivalent ANP.

    -to_alg_num()[source]
    +to_alg_num()[source]

    Try to convert to an equivalent AlgebraicNumber.

    Returns:
    @@ -3095,7 +3095,7 @@

    Class Reference
    -sympy.polys.numberfields.modules.make_mod_elt(module, col, denom=1)[source]
    +sympy.polys.numberfields.modules.make_mod_elt(module, col, denom=1)[source]

    Factory function which builds a ModuleElement, but ensures that it is a PowerBasisElement if the module is a PowerBasis.

    @@ -3103,7 +3103,7 @@

    Class Reference
    -class sympy.polys.numberfields.modules.ModuleHomomorphism(domain, codomain, mapping)[source]
    +class sympy.polys.numberfields.modules.ModuleHomomorphism(domain, codomain, mapping)[source]

    A homomorphism from one module to another.

    @@ -3115,7 +3115,7 @@

    Class Referencemapping,

    -)[source] +)[source]
    Parameters:

    domain : Module

    @@ -3149,7 +3149,7 @@

    Class Reference
    -kernel(modulus=None)[source]
    +kernel(modulus=None)[source]

    Compute a Submodule representing the kernel of this homomorphism.

    Parameters:
    @@ -3172,7 +3172,7 @@

    Class Reference
    -matrix(modulus=None)[source]
    +matrix(modulus=None)[source]

    Compute the matrix of this homomorphism.

    Parameters:
    @@ -3196,11 +3196,11 @@

    Class Reference
    -class sympy.polys.numberfields.modules.ModuleEndomorphism(domain, mapping)[source]
    +class sympy.polys.numberfields.modules.ModuleEndomorphism(domain, mapping)[source]

    A homomorphism from one module to itself.

    -__init__(domain, mapping)[source]
    +__init__(domain, mapping)[source]
    Parameters:

    domain : Module

    @@ -3221,12 +3221,12 @@

    Class Reference
    -class sympy.polys.numberfields.modules.InnerEndomorphism(domain, multiplier)[source]
    +class sympy.polys.numberfields.modules.InnerEndomorphism(domain, multiplier)[source]

    An inner endomorphism on a module, i.e. the endomorphism corresponding to multiplication by a fixed element.

    -__init__(domain, multiplier)[source]
    +__init__(domain, multiplier)[source]
    Parameters:

    domain : Module

    @@ -3245,11 +3245,11 @@

    Class Reference
    -class sympy.polys.numberfields.modules.EndomorphismRing(domain)[source]
    +class sympy.polys.numberfields.modules.EndomorphismRing(domain)[source]

    The ring of endomorphisms on a module.

    -__init__(domain)[source]
    +__init__(domain)[source]
    Parameters:

    domain : Module

    @@ -3262,7 +3262,7 @@

    Class Reference
    -inner_endomorphism(multiplier)[source]
    +inner_endomorphism(multiplier)[source]

    Form an inner endomorphism belonging to this endomorphism ring.

    Parameters:
    @@ -3279,7 +3279,7 @@

    Class Reference
    -represent(element)[source]
    +represent(element)[source]

    Represent an element of this endomorphism ring, as a single column vector.

    @@ -3361,7 +3361,7 @@

    Class Reference
    -sympy.polys.numberfields.modules.find_min_poly(alpha, domain, x=None, powers=None)[source]
    +sympy.polys.numberfields.modules.find_min_poly(alpha, domain, x=None, powers=None)[source]

    Find a polynomial of least degree (not necessarily irreducible) satisfied by an element of a finitely-generated ring with unity.

    @@ -3437,7 +3437,7 @@

    Class Reference

    -sympy.polys.numberfields.utilities.is_rat(c)[source]
    +sympy.polys.numberfields.utilities.is_rat(c)[source]

    Test whether an argument is of an acceptable type to be used as a rational number.

    Explanation

    @@ -3450,7 +3450,7 @@

    Utilities
    -sympy.polys.numberfields.utilities.is_int(c)[source]
    +sympy.polys.numberfields.utilities.is_int(c)[source]

    Test whether an argument is of an acceptable type to be used as an integer.

    Explanation

    Returns True on any argument of type int or ZZ.

    @@ -3462,7 +3462,7 @@

    Utilities
    -sympy.polys.numberfields.utilities.get_num_denom(c)[source]
    +sympy.polys.numberfields.utilities.get_num_denom(c)[source]

    Given any argument on which is_rat() is True, return the numerator and denominator of this number.

    @@ -3473,7 +3473,7 @@

    Utilities
    -sympy.polys.numberfields.utilities.extract_fundamental_discriminant(a)[source]
    +sympy.polys.numberfields.utilities.extract_fundamental_discriminant(a)[source]

    Extract a fundamental discriminant from an integer a.

    Parameters:
    @@ -3522,7 +3522,7 @@

    Utilities
    -class sympy.polys.numberfields.utilities.AlgIntPowers(T, modulus=None)[source]
    +class sympy.polys.numberfields.utilities.AlgIntPowers(T, modulus=None)[source]

    Compute the powers of an algebraic integer.

    Explanation

    Given an algebraic integer \(\theta\) by its monic irreducible polynomial @@ -3556,7 +3556,7 @@

    Utilities
    -__init__(T, modulus=None)[source]
    +__init__(T, modulus=None)[source]
    Parameters:

    T : Poly

    @@ -3576,7 +3576,7 @@

    Utilities +sympy.polys.numberfields.utilities.coeff_search(m, R)[source]

    Generate coefficients for searching through polynomials.

    Parameters:
    @@ -3613,7 +3613,7 @@

    Utilities
    -sympy.polys.numberfields.utilities.supplement_a_subspace(M)[source]
    +sympy.polys.numberfields.utilities.supplement_a_subspace(M)[source]

    Extend a basis for a subspace to a basis for the whole space.

    Parameters:
    @@ -3679,7 +3679,7 @@

    Utilities
    -sympy.polys.numberfields.utilities.isolate(alg, eps=None, fast=False)[source]
    +sympy.polys.numberfields.utilities.isolate(alg, eps=None, fast=False)[source]

    Find a rational isolating interval for a real algebraic number.

    Parameters:
    diff --git a/dev/modules/polys/reference.html b/dev/modules/polys/reference.html index bb9d15c5942..71f6d8f09d9 100644 --- a/dev/modules/polys/reference.html +++ b/dev/modules/polys/reference.html @@ -810,7 +810,7 @@
    Documentation Version

    Basic polynomial manipulation functions

    -sympy.polys.polytools.poly(expr, *gens, **args)[source]
    +sympy.polys.polytools.poly(expr, *gens, **args)[source]

    Efficiently transform an expression into a polynomial.

    Examples

    >>> from sympy import poly
    @@ -825,19 +825,19 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.poly_from_expr(expr, *gens, **args)[source]
    +sympy.polys.polytools.poly_from_expr(expr, *gens, **args)[source]

    Construct a polynomial from an expression.

    -sympy.polys.polytools.parallel_poly_from_expr(exprs, *gens, **args)[source]
    +sympy.polys.polytools.parallel_poly_from_expr(exprs, *gens, **args)[source]

    Construct polynomials from expressions.

    -sympy.polys.polytools.degree(f, gen=0)[source]
    +sympy.polys.polytools.degree(f, gen=0)[source]

    Return the degree of f in the given variable.

    The degree of 0 is negative infinity.

    Examples

    @@ -861,7 +861,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.degree_list(f, *gens, **args)[source]
    +sympy.polys.polytools.degree_list(f, *gens, **args)[source]

    Return a list of degrees of f in all variables.

    Examples

    >>> from sympy import degree_list
    @@ -876,7 +876,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.LC(f, *gens, **args)[source]
    +sympy.polys.polytools.LC(f, *gens, **args)[source]

    Return the leading coefficient of f.

    Examples

    >>> from sympy import LC
    @@ -891,7 +891,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.LM(f, *gens, **args)[source]
    +sympy.polys.polytools.LM(f, *gens, **args)[source]

    Return the leading monomial of f.

    Examples

    >>> from sympy import LM
    @@ -906,7 +906,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.LT(f, *gens, **args)[source]
    +sympy.polys.polytools.LT(f, *gens, **args)[source]

    Return the leading term of f.

    Examples

    >>> from sympy import LT
    @@ -921,7 +921,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.pdiv(f, g, *gens, **args)[source]
    +sympy.polys.polytools.pdiv(f, g, *gens, **args)[source]

    Compute polynomial pseudo-division of f and g.

    Examples

    >>> from sympy import pdiv
    @@ -936,7 +936,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.prem(f, g, *gens, **args)[source]
    +sympy.polys.polytools.prem(f, g, *gens, **args)[source]

    Compute polynomial pseudo-remainder of f and g.

    Examples

    >>> from sympy import prem
    @@ -951,7 +951,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.pquo(f, g, *gens, **args)[source]
    +sympy.polys.polytools.pquo(f, g, *gens, **args)[source]

    Compute polynomial pseudo-quotient of f and g.

    Examples

    >>> from sympy import pquo
    @@ -968,7 +968,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.pexquo(f, g, *gens, **args)[source]
    +sympy.polys.polytools.pexquo(f, g, *gens, **args)[source]

    Compute polynomial exact pseudo-quotient of f and g.

    Examples

    >>> from sympy import pexquo
    @@ -989,7 +989,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.div(f, g, *gens, **args)[source]
    +sympy.polys.polytools.div(f, g, *gens, **args)[source]

    Compute polynomial division of f and g.

    Examples

    >>> from sympy import div, ZZ, QQ
    @@ -1006,7 +1006,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.rem(f, g, *gens, **args)[source]
    +sympy.polys.polytools.rem(f, g, *gens, **args)[source]

    Compute polynomial remainder of f and g.

    Examples

    >>> from sympy import rem, ZZ, QQ
    @@ -1023,7 +1023,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.quo(f, g, *gens, **args)[source]
    +sympy.polys.polytools.quo(f, g, *gens, **args)[source]

    Compute polynomial quotient of f and g.

    Examples

    >>> from sympy import quo
    @@ -1040,7 +1040,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.exquo(f, g, *gens, **args)[source]
    +sympy.polys.polytools.exquo(f, g, *gens, **args)[source]

    Compute polynomial exact quotient of f and g.

    Examples

    >>> from sympy import exquo
    @@ -1061,7 +1061,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.half_gcdex(f, g, *gens, **args)[source]
    +sympy.polys.polytools.half_gcdex(f, g, *gens, **args)[source]

    Half extended Euclidean algorithm of f and g.

    Returns (s, h) such that h = gcd(f, g) and s*f = h (mod g).

    Examples

    @@ -1077,7 +1077,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.gcdex(f, g, *gens, **args)[source]
    +sympy.polys.polytools.gcdex(f, g, *gens, **args)[source]

    Extended Euclidean algorithm of f and g.

    Returns (s, t, h) such that h = gcd(f, g) and s*f + t*g = h.

    Examples

    @@ -1093,7 +1093,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.invert(f, g, *gens, **args)[source]
    +sympy.polys.polytools.invert(f, g, *gens, **args)[source]

    Invert f modulo g when possible.

    Examples

    >>> from sympy import invert, S, mod_inverse
    @@ -1126,7 +1126,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.subresultants(f, g, *gens, **args)[source]
    +sympy.polys.polytools.subresultants(f, g, *gens, **args)[source]

    Compute subresultant PRS of f and g.

    Examples

    >>> from sympy import subresultants
    @@ -1141,7 +1141,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.resultant(f, g, *gens, includePRS=False, **args)[source]
    +sympy.polys.polytools.resultant(f, g, *gens, includePRS=False, **args)[source]

    Compute resultant of f and g.

    Examples

    >>> from sympy import resultant
    @@ -1156,7 +1156,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.discriminant(f, *gens, **args)[source]
    +sympy.polys.polytools.discriminant(f, *gens, **args)[source]

    Compute discriminant of f.

    Examples

    >>> from sympy import discriminant
    @@ -1171,7 +1171,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.terms_gcd(f, *gens, **args)[source]
    +sympy.polys.polytools.terms_gcd(f, *gens, **args)[source]

    Remove GCD of terms from f.

    If the deep flag is True, then the arguments of f will have terms_gcd applied to them.

    @@ -1234,7 +1234,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.cofactors(f, g, *gens, **args)[source]
    +sympy.polys.polytools.cofactors(f, g, *gens, **args)[source]

    Compute GCD and cofactors of f and g.

    Returns polynomials (h, cff, cfg) such that h = gcd(f, g), and cff = quo(f, h) and cfg = quo(g, h) are, so called, cofactors @@ -1252,7 +1252,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.gcd(f, g=None, *gens, **args)[source]
    +sympy.polys.polytools.gcd(f, g=None, *gens, **args)[source]

    Compute GCD of f and g.

    Examples

    >>> from sympy import gcd
    @@ -1267,7 +1267,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.gcd_list(seq, *gens, **args)[source]
    +sympy.polys.polytools.gcd_list(seq, *gens, **args)[source]

    Compute GCD of a list of polynomials.

    Examples

    >>> from sympy import gcd_list
    @@ -1282,7 +1282,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.lcm(f, g=None, *gens, **args)[source]
    +sympy.polys.polytools.lcm(f, g=None, *gens, **args)[source]

    Compute LCM of f and g.

    Examples

    >>> from sympy import lcm
    @@ -1297,7 +1297,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.lcm_list(seq, *gens, **args)[source]
    +sympy.polys.polytools.lcm_list(seq, *gens, **args)[source]

    Compute LCM of a list of polynomials.

    Examples

    >>> from sympy import lcm_list
    @@ -1312,7 +1312,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.trunc(f, p, *gens, **args)[source]
    +sympy.polys.polytools.trunc(f, p, *gens, **args)[source]

    Reduce f modulo a constant p.

    Examples

    >>> from sympy import trunc
    @@ -1327,7 +1327,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.monic(f, *gens, **args)[source]
    +sympy.polys.polytools.monic(f, *gens, **args)[source]

    Divide all coefficients of f by LC(f).

    Examples

    >>> from sympy import monic
    @@ -1342,7 +1342,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.content(f, *gens, **args)[source]
    +sympy.polys.polytools.content(f, *gens, **args)[source]

    Compute GCD of coefficients of f.

    Examples

    >>> from sympy import content
    @@ -1357,7 +1357,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.primitive(f, *gens, **args)[source]
    +sympy.polys.polytools.primitive(f, *gens, **args)[source]

    Compute content and the primitive form of f.

    Examples

    >>> from sympy.polys.polytools import primitive
    @@ -1391,7 +1391,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.compose(f, g, *gens, **args)[source]
    +sympy.polys.polytools.compose(f, g, *gens, **args)[source]

    Compute functional composition f(g).

    Examples

    >>> from sympy import compose
    @@ -1406,7 +1406,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.decompose(f, *gens, **args)[source]
    +sympy.polys.polytools.decompose(f, *gens, **args)[source]

    Compute functional decomposition of f.

    Examples

    >>> from sympy import decompose
    @@ -1421,7 +1421,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.sturm(f, *gens, **args)[source]
    +sympy.polys.polytools.sturm(f, *gens, **args)[source]

    Compute Sturm sequence of f.

    Examples

    >>> from sympy import sturm
    @@ -1436,7 +1436,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.gff_list(f, *gens, **args)[source]
    +sympy.polys.polytools.gff_list(f, *gens, **args)[source]

    Compute a list of greatest factorial factors of f.

    Note that the input to ff() and rf() should be Poly instances to use the definitions here.

    @@ -1471,13 +1471,13 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.gff(f, *gens, **args)[source]
    +sympy.polys.polytools.gff(f, *gens, **args)[source]

    Compute greatest factorial factorization of f.

    -sympy.polys.polytools.sqf_norm(f, *gens, **args)[source]
    +sympy.polys.polytools.sqf_norm(f, *gens, **args)[source]

    Compute square-free norm of f.

    Returns s, f, r, such that g(x) = f(x-sa) and r(x) = Norm(g(x)) is a square-free polynomial over K, @@ -1495,7 +1495,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.sqf_part(f, *gens, **args)[source]
    +sympy.polys.polytools.sqf_part(f, *gens, **args)[source]

    Compute square-free part of f.

    Examples

    >>> from sympy import sqf_part
    @@ -1510,7 +1510,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.sqf_list(f, *gens, **args)[source]
    +sympy.polys.polytools.sqf_list(f, *gens, **args)[source]

    Compute a list of square-free factors of f.

    Examples

    >>> from sympy import sqf_list
    @@ -1525,7 +1525,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.sqf(f, *gens, **args)[source]
    +sympy.polys.polytools.sqf(f, *gens, **args)[source]

    Compute square-free factorization of f.

    Examples

    >>> from sympy import sqf
    @@ -1540,7 +1540,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.factor_list(f, *gens, **args)[source]
    +sympy.polys.polytools.factor_list(f, *gens, **args)[source]

    Compute a list of irreducible factors of f.

    Examples

    >>> from sympy import factor_list
    @@ -1555,7 +1555,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.factor(f, *gens, deep=False, **args)[source]
    +sympy.polys.polytools.factor(f, *gens, deep=False, **args)[source]

    Compute the factorization of expression, f, into irreducibles. (To factor an integer into primes, use factorint.)

    There two modes implemented: symbolic and formal. If f is not an @@ -1636,7 +1636,7 @@

    Basic polynomial manipulation functionssqf=False,

    -)[source] +)[source]

    Compute isolating intervals for roots of f.

    Examples

    >>> from sympy import intervals
    @@ -1665,7 +1665,7 @@ 

    Basic polynomial manipulation functionscheck_sqf=False,

    -)[source] +)[source]

    Refine an isolating interval of a root to the given precision.

    Examples

    >>> from sympy import refine_root
    @@ -1680,7 +1680,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.count_roots(f, inf=None, sup=None)[source]
    +sympy.polys.polytools.count_roots(f, inf=None, sup=None)[source]

    Return the number of roots of f in [inf, sup] interval.

    If one of inf or sup is complex, it will return the number of roots in the complex rectangle with corners at inf and sup.

    @@ -1708,7 +1708,7 @@

    Basic polynomial manipulation functionsextension=False,

    -)[source] +)[source]

    Returns the real and complex roots of f with multiplicities.

    Parameters:
    @@ -1866,7 +1866,7 @@

    Basic polynomial manipulation functionsextension=False,

    -)[source] +)[source]

    Returns the real roots of f with multiplicities.

    Parameters:
    @@ -2037,7 +2037,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.nroots(f, n=15, maxsteps=50, cleanup=True)[source]
    +sympy.polys.polytools.nroots(f, n=15, maxsteps=50, cleanup=True)[source]

    Compute numerical approximations of roots of f.

    Examples

    >>> from sympy import nroots
    @@ -2054,7 +2054,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.ground_roots(f, *gens, **args)[source]
    +sympy.polys.polytools.ground_roots(f, *gens, **args)[source]

    Compute roots of f by factorization in the ground domain.

    Examples

    >>> from sympy import ground_roots
    @@ -2069,7 +2069,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.nth_power_roots_poly(f, n, *gens, **args)[source]
    +sympy.polys.polytools.nth_power_roots_poly(f, n, *gens, **args)[source]

    Construct a polynomial with n-th powers of roots of f.

    Examples

    >>> from sympy import nth_power_roots_poly, factor, roots
    @@ -2096,7 +2096,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.cancel(f, *gens, _signsimp=True, **args)[source]
    +sympy.polys.polytools.cancel(f, *gens, _signsimp=True, **args)[source]

    Cancel common factors in a rational function f.

    Examples

    >>> from sympy import cancel, sqrt, Symbol, together
    @@ -2122,7 +2122,7 @@ 

    Basic polynomial manipulation functions
    -sympy.polys.polytools.reduced(f, G, *gens, **args)[source]
    +sympy.polys.polytools.reduced(f, G, *gens, **args)[source]

    Reduces a polynomial f modulo a set of polynomials G.

    Given a polynomial f and a set of polynomials G = (g_1, ..., g_n), computes a set of quotients q = (q_1, ..., q_n) and the remainder r @@ -2141,7 +2141,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.groebner(F, *gens, **args)[source]
    +sympy.polys.polytools.groebner(F, *gens, **args)[source]

    Computes the reduced Groebner basis for a set of polynomials.

    Use the order argument to set the monomial ordering that will be used to compute the basis. Allowed orders are lex, grlex and @@ -2190,7 +2190,7 @@

    Basic polynomial manipulation functions
    -sympy.polys.polytools.is_zero_dimensional(F, *gens, **args)[source]
    +sympy.polys.polytools.is_zero_dimensional(F, *gens, **args)[source]

    Checks if the ideal generated by a Groebner basis is zero-dimensional.

    The algorithm checks if the set of monomials not divisible by the leading monomial of any element of F is bounded.

    @@ -2201,7 +2201,7 @@

    Basic polynomial manipulation functions
    -class sympy.polys.polytools.Poly(rep, *gens, **args)[source]
    +class sympy.polys.polytools.Poly(rep, *gens, **args)[source]

    Generic class for representing and operating on polynomial expressions.

    See Polynomial Manipulation for general documentation.

    Poly is a subclass of Basic rather than Expr but instances can be @@ -2248,7 +2248,7 @@

    Basic polynomial manipulation functions
    -EC(order=None)[source]
    +EC(order=None)[source]

    Returns the last non-zero coefficient of f.

    Examples

    >>> from sympy import Poly
    @@ -2263,7 +2263,7 @@ 

    Basic polynomial manipulation functions
    -EM(order=None)[source]
    +EM(order=None)[source]

    Returns the last non-zero monomial of f.

    Examples

    >>> from sympy import Poly
    @@ -2278,7 +2278,7 @@ 

    Basic polynomial manipulation functions
    -ET(order=None)[source]
    +ET(order=None)[source]

    Returns the last non-zero term of f.

    Examples

    >>> from sympy import Poly
    @@ -2293,7 +2293,7 @@ 

    Basic polynomial manipulation functions
    -LC(order=None)[source]
    +LC(order=None)[source]

    Returns the leading coefficient of f.

    Examples

    >>> from sympy import Poly
    @@ -2308,7 +2308,7 @@ 

    Basic polynomial manipulation functions
    -LM(order=None)[source]
    +LM(order=None)[source]

    Returns the leading monomial of f.

    The Leading monomial signifies the monomial having the highest power of the principal generator in the @@ -2326,7 +2326,7 @@

    Basic polynomial manipulation functions
    -LT(order=None)[source]
    +LT(order=None)[source]

    Returns the leading term of f.

    The Leading term signifies the term having the highest power of the principal generator in the @@ -2344,7 +2344,7 @@

    Basic polynomial manipulation functions
    -TC()[source]
    +TC()[source]

    Returns the trailing coefficient of f.

    Examples

    >>> from sympy import Poly
    @@ -2359,7 +2359,7 @@ 

    Basic polynomial manipulation functions
    -abs()[source]
    +abs()[source]

    Make all coefficients in f positive.

    Examples

    >>> from sympy import Poly
    @@ -2374,7 +2374,7 @@ 

    Basic polynomial manipulation functions
    -add(g)[source]
    +add(g)[source]

    Add two polynomials f and g.

    Examples

    >>> from sympy import Poly
    @@ -2393,7 +2393,7 @@ 

    Basic polynomial manipulation functions
    -add_ground(coeff)[source]
    +add_ground(coeff)[source]

    Add an element of the ground domain to f.

    Examples

    >>> from sympy import Poly
    @@ -2408,7 +2408,7 @@ 

    Basic polynomial manipulation functions
    -all_coeffs()[source]
    +all_coeffs()[source]

    Returns all coefficients from a univariate polynomial f.

    Examples

    >>> from sympy import Poly
    @@ -2423,7 +2423,7 @@ 

    Basic polynomial manipulation functions
    -all_monoms()[source]
    +all_monoms()[source]

    Returns all monomials from a univariate polynomial f.

    Examples

    >>> from sympy import Poly
    @@ -2442,7 +2442,7 @@ 

    Basic polynomial manipulation functions
    -all_roots(multiple=True, radicals=True)[source]
    +all_roots(multiple=True, radicals=True)[source]

    Return a list of real and complex roots with multiplicities.

    See all_roots() for more explanation.

    Examples

    @@ -2462,7 +2462,7 @@

    Basic polynomial manipulation functions
    -all_terms()[source]
    +all_terms()[source]

    Returns all terms from a univariate polynomial f.

    Examples

    >>> from sympy import Poly
    @@ -2477,7 +2477,7 @@ 

    Basic polynomial manipulation functions
    -as_dict(native=False, zero=False)[source]
    +as_dict(native=False, zero=False)[source]

    Switch to a dict representation.

    Examples

    >>> from sympy import Poly
    @@ -2492,7 +2492,7 @@ 

    Basic polynomial manipulation functions
    -as_expr(*gens)[source]
    +as_expr(*gens)[source]

    Convert a Poly instance to an Expr instance.

    Examples

    >>> from sympy import Poly
    @@ -2514,13 +2514,13 @@ 

    Basic polynomial manipulation functions
    -as_list(native=False)[source]
    +as_list(native=False)[source]

    Switch to a list representation.

    -as_poly(*gens, **args)[source]
    +as_poly(*gens, **args)[source]

    Converts self to a polynomial or returns None.

    >>> from sympy import sin
     >>> from sympy.abc import x, y
    @@ -2542,7 +2542,7 @@ 

    Basic polynomial manipulation functions
    -cancel(g, include=False)[source]
    +cancel(g, include=False)[source]

    Cancel common factors in a rational function f/g.

    Examples

    >>> from sympy import Poly
    @@ -2561,7 +2561,7 @@ 

    Basic polynomial manipulation functions
    -clear_denoms(convert=False)[source]
    +clear_denoms(convert=False)[source]

    Clear denominators, but keep the ground domain.

    Examples

    >>> from sympy import Poly, S, QQ
    @@ -2581,7 +2581,7 @@ 

    Basic polynomial manipulation functions
    -coeff_monomial(monom)[source]
    +coeff_monomial(monom)[source]

    Returns the coefficient of monom in f if there, else None.

    Examples

    >>> from sympy import Poly, exp
    @@ -2621,7 +2621,7 @@ 

    Basic polynomial manipulation functions
    -coeffs(order=None)[source]
    +coeffs(order=None)[source]

    Returns all non-zero coefficients from f in lex order.

    Examples

    >>> from sympy import Poly
    @@ -2640,7 +2640,7 @@ 

    Basic polynomial manipulation functions
    -cofactors(g)[source]
    +cofactors(g)[source]

    Returns the GCD of f and g and their cofactors.

    Returns polynomials (h, cff, cfg) such that h = gcd(f, g), and cff = quo(f, h) and cfg = quo(g, h) are, so called, cofactors @@ -2660,7 +2660,7 @@

    Basic polynomial manipulation functions
    -compose(g)[source]
    +compose(g)[source]

    Computes the functional composition of f and g.

    Examples

    >>> from sympy import Poly
    @@ -2675,7 +2675,7 @@ 

    Basic polynomial manipulation functions
    -content()[source]
    +content()[source]

    Returns the GCD of polynomial coefficients.

    Examples

    >>> from sympy import Poly
    @@ -2690,7 +2690,7 @@ 

    Basic polynomial manipulation functions
    -count_roots(inf=None, sup=None)[source]
    +count_roots(inf=None, sup=None)[source]

    Return the number of roots of f in [inf, sup] interval.

    Examples

    >>> from sympy import Poly, I
    @@ -2707,7 +2707,7 @@ 

    Basic polynomial manipulation functions
    -decompose()[source]
    +decompose()[source]

    Computes a functional decomposition of f.

    Examples

    >>> from sympy import Poly
    @@ -2722,7 +2722,7 @@ 

    Basic polynomial manipulation functions
    -deflate()[source]
    +deflate()[source]

    Reduce degree of f by mapping x_i**m to y_i.

    Examples

    >>> from sympy import Poly
    @@ -2737,7 +2737,7 @@ 

    Basic polynomial manipulation functions
    -degree(gen=0)[source]
    +degree(gen=0)[source]

    Returns degree of f in x_j.

    The degree of 0 is negative infinity.

    Examples

    @@ -2757,7 +2757,7 @@

    Basic polynomial manipulation functions
    -degree_list()[source]
    +degree_list()[source]

    Returns a list of degrees of f.

    Examples

    >>> from sympy import Poly
    @@ -2772,7 +2772,7 @@ 

    Basic polynomial manipulation functions
    -diff(*specs, **kwargs)[source]
    +diff(*specs, **kwargs)[source]

    Computes partial derivative of f.

    Examples

    >>> from sympy import Poly
    @@ -2791,7 +2791,7 @@ 

    Basic polynomial manipulation functions
    -discriminant()[source]
    +discriminant()[source]

    Computes the discriminant of f.

    Examples

    >>> from sympy import Poly
    @@ -2806,7 +2806,7 @@ 

    Basic polynomial manipulation functions
    -dispersion(g=None)[source]
    +dispersion(g=None)[source]

    Compute the dispersion of polynomials.

    For two polynomials \(f(x)\) and \(g(x)\) with \(\deg f > 0\) and \(\deg g > 0\) the dispersion \(\operatorname{dis}(f, g)\) is defined as:

    @@ -2877,7 +2877,7 @@

    Basic polynomial manipulation functions
    -dispersionset(g=None)[source]
    +dispersionset(g=None)[source]

    Compute the dispersion set of two polynomials.

    For two polynomials \(f(x)\) and \(g(x)\) with \(\deg f > 0\) and \(\deg g > 0\) the dispersion set \(\operatorname{J}(f, g)\) is defined as:

    @@ -2948,7 +2948,7 @@

    Basic polynomial manipulation functions
    -div(g, auto=True)[source]
    +div(g, auto=True)[source]

    Polynomial division with remainder of f by g.

    Examples

    >>> from sympy import Poly
    @@ -2991,7 +2991,7 @@ 

    Basic polynomial manipulation functions
    -eject(*gens)[source]
    +eject(*gens)[source]

    Eject selected generators into the ground domain.

    Examples

    >>> from sympy import Poly
    @@ -3011,7 +3011,7 @@ 

    Basic polynomial manipulation functions
    -eval(x, a=None, auto=True)[source]
    +eval(x, a=None, auto=True)[source]

    Evaluate f at a in the given variable.

    Examples

    >>> from sympy import Poly
    @@ -3047,7 +3047,7 @@ 

    Basic polynomial manipulation functions
    -exclude()[source]
    +exclude()[source]

    Remove unnecessary generators from f.

    Examples

    >>> from sympy import Poly
    @@ -3062,7 +3062,7 @@ 

    Basic polynomial manipulation functions
    -exquo(g, auto=True)[source]
    +exquo(g, auto=True)[source]

    Computes polynomial exact quotient of f by g.

    Examples

    >>> from sympy import Poly
    @@ -3083,7 +3083,7 @@ 

    Basic polynomial manipulation functions
    -exquo_ground(coeff)[source]
    +exquo_ground(coeff)[source]

    Exact quotient of f by a an element of the ground domain.

    Examples

    >>> from sympy import Poly
    @@ -3104,7 +3104,7 @@ 

    Basic polynomial manipulation functions
    -factor_list() tuple[Expr, list[tuple[Poly, int]]][source]
    +factor_list() tuple[Expr, list[tuple[Poly, int]]][source]

    Returns a list of irreducible factors of f.

    Examples

    >>> from sympy import Poly
    @@ -3123,7 +3123,7 @@ 

    Basic polynomial manipulation functions
    -factor_list_include()[source]
    +factor_list_include()[source]

    Returns a list of irreducible factors of f.

    Examples

    >>> from sympy import Poly
    @@ -3182,25 +3182,25 @@ 

    Basic polynomial manipulation functions
    -classmethod from_dict(rep, *gens, **args)[source]
    +classmethod from_dict(rep, *gens, **args)[source]

    Construct a polynomial from a dict.

    -classmethod from_expr(rep, *gens, **args)[source]
    +classmethod from_expr(rep, *gens, **args)[source]

    Construct a polynomial from an expression.

    -classmethod from_list(rep, *gens, **args)[source]
    +classmethod from_list(rep, *gens, **args)[source]

    Construct a polynomial from a list.

    -classmethod from_poly(rep, *gens, **args)[source]
    +classmethod from_poly(rep, *gens, **args)[source]

    Construct a polynomial from a polynomial.

    @@ -3214,7 +3214,7 @@

    Basic polynomial manipulation functionsrandomize=False,

    -)[source] +)[source]

    Compute the Galois group of this polynomial.

    Examples

    >>> from sympy import Poly
    @@ -3233,7 +3233,7 @@ 

    Basic polynomial manipulation functions
    -gcd(g)[source]
    +gcd(g)[source]

    Returns the polynomial GCD of f and g.

    Examples

    >>> from sympy import Poly
    @@ -3248,7 +3248,7 @@ 

    Basic polynomial manipulation functions
    -gcdex(g, auto=True)[source]
    +gcdex(g, auto=True)[source]

    Extended Euclidean algorithm of f and g.

    Returns (s, t, h) such that h = gcd(f, g) and s*f + t*g = h.

    Examples

    @@ -3285,13 +3285,13 @@

    Basic polynomial manipulation functions
    -get_domain()[source]
    +get_domain()[source]

    Get the ground domain of f.

    -get_modulus()[source]
    +get_modulus()[source]

    Get the modulus of f.

    Examples

    >>> from sympy import Poly
    @@ -3306,7 +3306,7 @@ 

    Basic polynomial manipulation functions
    -gff_list()[source]
    +gff_list()[source]

    Computes greatest factorial factorization of f.

    Examples

    >>> from sympy import Poly
    @@ -3324,7 +3324,7 @@ 

    Basic polynomial manipulation functions
    -ground_roots()[source]
    +ground_roots()[source]

    Compute roots of f by factorization in the ground domain.

    Examples

    >>> from sympy import Poly
    @@ -3339,7 +3339,7 @@ 

    Basic polynomial manipulation functions
    -half_gcdex(g, auto=True)[source]
    +half_gcdex(g, auto=True)[source]

    Half extended Euclidean algorithm of f and g.

    Returns (s, h) such that h = gcd(f, g) and s*f = h (mod g).

    Examples

    @@ -3359,7 +3359,7 @@

    Basic polynomial manipulation functions
    -has_only_gens(*gens)[source]
    +has_only_gens(*gens)[source]

    Return True if Poly(f, *gens) retains ground domain.

    Examples

    >>> from sympy import Poly
    @@ -3376,7 +3376,7 @@ 

    Basic polynomial manipulation functions
    -homogeneous_order()[source]
    +homogeneous_order()[source]

    Returns the homogeneous order of f.

    A homogeneous polynomial is a polynomial whose all monomials with non-zero coefficients have the same total degree. This degree is @@ -3396,7 +3396,7 @@

    Basic polynomial manipulation functions
    -homogenize(s)[source]
    +homogenize(s)[source]

    Returns the homogeneous polynomial of f.

    A homogeneous polynomial is a polynomial whose all monomials with non-zero coefficients have the same total degree. If you only @@ -3418,7 +3418,7 @@

    Basic polynomial manipulation functions
    -inject(front=False)[source]
    +inject(front=False)[source]

    Inject ground domain generators into f.

    Examples

    >>> from sympy import Poly
    @@ -3438,7 +3438,7 @@ 

    Basic polynomial manipulation functions
    -integrate(*specs, **args)[source]
    +integrate(*specs, **args)[source]

    Computes indefinite integral of f.

    Examples

    >>> from sympy import Poly
    @@ -3468,7 +3468,7 @@ 

    Basic polynomial manipulation functionssqf=False,

    -)[source] +)[source]

    Compute isolating intervals for roots of f.

    For real roots the Vincent-Akritas-Strzebonski (VAS) continued fractions method is used.

    Examples

    @@ -3500,7 +3500,7 @@

    Basic polynomial manipulation functions
    -invert(g, auto=True)[source]
    +invert(g, auto=True)[source]

    Invert f modulo g when possible.

    Examples

    >>> from sympy import Poly
    @@ -3781,7 +3781,7 @@ 

    Basic polynomial manipulation functions
    -l1_norm()[source]
    +l1_norm()[source]

    Returns l1 norm of f.

    Examples

    >>> from sympy import Poly
    @@ -3796,7 +3796,7 @@ 

    Basic polynomial manipulation functions
    -lcm(g)[source]
    +lcm(g)[source]

    Returns polynomial LCM of f and g.

    Examples

    >>> from sympy import Poly
    @@ -3811,7 +3811,7 @@ 

    Basic polynomial manipulation functions
    -length()[source]
    +length()[source]

    Returns the number of non-zero terms in f.

    Examples

    >>> from sympy import Poly
    @@ -3826,7 +3826,7 @@ 

    Basic polynomial manipulation functions
    -lift()[source]
    +lift()[source]

    Convert algebraic coefficients to rationals.

    Examples

    >>> from sympy import Poly, I
    @@ -3841,7 +3841,7 @@ 

    Basic polynomial manipulation functions
    -ltrim(gen)[source]
    +ltrim(gen)[source]

    Remove dummy generators from f that are to the left of specified gen in the generators as ordered. When gen is an integer, it refers to the generator located at that @@ -3861,7 +3861,7 @@

    Basic polynomial manipulation functions
    -make_monic_over_integers_by_scaling_roots()[source]
    +make_monic_over_integers_by_scaling_roots()[source]

    Turn any univariate polynomial over QQ or ZZ into a monic polynomial over ZZ, by scaling the roots as necessary.

    @@ -3889,13 +3889,13 @@

    Basic polynomial manipulation functions
    -match(*args, **kwargs)[source]
    +match(*args, **kwargs)[source]

    Match expression from Poly. See Basic.match()

    -max_norm()[source]
    +max_norm()[source]

    Returns maximum norm of f.

    Examples

    >>> from sympy import Poly
    @@ -3910,7 +3910,7 @@ 

    Basic polynomial manipulation functions
    -monic(auto=True)[source]
    +monic(auto=True)[source]

    Divides all coefficients by LC(f).

    Examples

    >>> from sympy import Poly, ZZ
    @@ -3929,7 +3929,7 @@ 

    Basic polynomial manipulation functions
    -monoms(order=None)[source]
    +monoms(order=None)[source]

    Returns all non-zero monomials from f in lex order.

    Examples

    >>> from sympy import Poly
    @@ -3948,7 +3948,7 @@ 

    Basic polynomial manipulation functions
    -mul(g)[source]
    +mul(g)[source]

    Multiply two polynomials f and g.

    Examples

    >>> from sympy import Poly
    @@ -3967,7 +3967,7 @@ 

    Basic polynomial manipulation functions
    -mul_ground(coeff)[source]
    +mul_ground(coeff)[source]

    Multiply f by a an element of the ground domain.

    Examples

    >>> from sympy import Poly
    @@ -3982,7 +3982,7 @@ 

    Basic polynomial manipulation functions
    -neg()[source]
    +neg()[source]

    Negate all coefficients in f.

    Examples

    >>> from sympy import Poly
    @@ -4001,13 +4001,13 @@ 

    Basic polynomial manipulation functions
    -classmethod new(rep, *gens)[source]
    +classmethod new(rep, *gens)[source]

    Construct Poly instance from raw representation.

    -norm()[source]
    +norm()[source]

    Computes the product, Norm(f), of the conjugates of a polynomial f defined over a number field K.

    Examples

    @@ -4036,7 +4036,7 @@

    Basic polynomial manipulation functions
    -nroots(n=15, maxsteps=50, cleanup=True)[source]
    +nroots(n=15, maxsteps=50, cleanup=True)[source]

    Compute numerical approximations of roots of f.

    Parameters:
    @@ -4061,7 +4061,7 @@

    Basic polynomial manipulation functions
    -nth(*N)[source]
    +nth(*N)[source]

    Returns the n-th coefficient of f where N are the exponents of the generators in the term of interest.

    Examples

    @@ -4087,7 +4087,7 @@

    Basic polynomial manipulation functions
    -nth_power_roots_poly(n)[source]
    +nth_power_roots_poly(n)[source]

    Construct a polynomial with n-th powers of roots of f.

    Examples

    >>> from sympy import Poly
    @@ -4117,7 +4117,7 @@ 

    Basic polynomial manipulation functions
    -pdiv(g)[source]
    +pdiv(g)[source]

    Polynomial pseudo-division of f by g.

    Examples

    >>> from sympy import Poly
    @@ -4132,7 +4132,7 @@ 

    Basic polynomial manipulation functions
    -per(rep, gens=None, remove=None)[source]
    +per(rep, gens=None, remove=None)[source]

    Create a Poly out of the given representation.

    Examples

    >>> from sympy import Poly, ZZ
    @@ -4153,7 +4153,7 @@ 

    Basic polynomial manipulation functions
    -pexquo(g)[source]
    +pexquo(g)[source]

    Polynomial exact pseudo-quotient of f by g.

    Examples

    >>> from sympy import Poly
    @@ -4174,7 +4174,7 @@ 

    Basic polynomial manipulation functions
    -pow(n)[source]
    +pow(n)[source]

    Raise f to a non-negative power n.

    Examples

    >>> from sympy import Poly
    @@ -4193,7 +4193,7 @@ 

    Basic polynomial manipulation functions
    -pquo(g)[source]
    +pquo(g)[source]

    Polynomial pseudo-quotient of f by g.

    See the Caveat note in the function prem(f, g).

    Examples

    @@ -4213,7 +4213,7 @@

    Basic polynomial manipulation functions
    -prem(g)[source]
    +prem(g)[source]

    Polynomial pseudo-remainder of f by g.

    Caveat: The function prem(f, g, x) can be safely used to compute

    in Z[x] _only_ subresultant polynomial remainder sequences (prs’s).

    @@ -4242,7 +4242,7 @@

    Basic polynomial manipulation functions
    -primitive()[source]
    +primitive()[source]

    Returns the content and a primitive form of f.

    Examples

    >>> from sympy import Poly
    @@ -4257,7 +4257,7 @@ 

    Basic polynomial manipulation functions
    -quo(g, auto=True)[source]
    +quo(g, auto=True)[source]

    Computes polynomial quotient of f by g.

    Examples

    >>> from sympy import Poly
    @@ -4276,7 +4276,7 @@ 

    Basic polynomial manipulation functions
    -quo_ground(coeff)[source]
    +quo_ground(coeff)[source]

    Quotient of f by a an element of the ground domain.

    Examples

    >>> from sympy import Poly
    @@ -4295,7 +4295,7 @@ 

    Basic polynomial manipulation functions
    -rat_clear_denoms(g)[source]
    +rat_clear_denoms(g)[source]

    Clear denominators in a rational function f/g.

    Examples

    >>> from sympy import Poly
    @@ -4319,7 +4319,7 @@ 

    Basic polynomial manipulation functions
    -real_roots(multiple=True, radicals=True)[source]
    +real_roots(multiple=True, radicals=True)[source]

    Return a list of real roots with multiplicities.

    See real_roots() for more explanation.

    Examples

    @@ -4348,7 +4348,7 @@

    Basic polynomial manipulation functionscheck_sqf=False,

    -)[source] +)[source]

    Refine an isolating interval of a root to the given precision.

    Examples

    >>> from sympy import Poly
    @@ -4363,7 +4363,7 @@ 

    Basic polynomial manipulation functions
    -rem(g, auto=True)[source]
    +rem(g, auto=True)[source]

    Computes the polynomial remainder of f by g.

    Examples

    >>> from sympy import Poly
    @@ -4382,7 +4382,7 @@ 

    Basic polynomial manipulation functions
    -reorder(*gens, **args)[source]
    +reorder(*gens, **args)[source]

    Efficiently apply new order of generators.

    Examples

    >>> from sympy import Poly
    @@ -4397,7 +4397,7 @@ 

    Basic polynomial manipulation functions
    -replace(x, y=None, **_ignore)[source]
    +replace(x, y=None, **_ignore)[source]

    Replace x with y in generators list.

    Examples

    >>> from sympy import Poly
    @@ -4412,7 +4412,7 @@ 

    Basic polynomial manipulation functions
    -resultant(g, includePRS=False)[source]
    +resultant(g, includePRS=False)[source]

    Computes the resultant of f and g via PRS.

    If includePRS=True, it includes the subresultant PRS in the result. Because the PRS is used to calculate the resultant, this is more @@ -4436,7 +4436,7 @@

    Basic polynomial manipulation functions
    -retract(field=None)[source]
    +retract(field=None)[source]

    Recalculate the ground domain of a polynomial.

    Examples

    >>> from sympy import Poly
    @@ -4458,7 +4458,7 @@ 

    Basic polynomial manipulation functions
    -revert(n)[source]
    +revert(n)[source]

    Compute f**(-1) mod x**n.

    Examples

    >>> from sympy import Poly
    @@ -4489,7 +4489,7 @@ 

    Basic polynomial manipulation functions
    -root(index, radicals=True)[source]
    +root(index, radicals=True)[source]

    Get an indexed root of a polynomial.

    Examples

    >>> from sympy import Poly
    @@ -4519,7 +4519,7 @@ 

    Basic polynomial manipulation functions
    -same_root(a, b)[source]
    +same_root(a, b)[source]

    Decide whether two roots of this polynomial are equal.

    Raises:
    @@ -4555,13 +4555,13 @@

    Basic polynomial manipulation functions
    -set_domain(domain)[source]
    +set_domain(domain)[source]

    Set the ground domain of f.

    -set_modulus(modulus)[source]
    +set_modulus(modulus)[source]

    Set the modulus of f.

    Examples

    >>> from sympy import Poly
    @@ -4576,7 +4576,7 @@ 

    Basic polynomial manipulation functions
    -shift(a)[source]
    +shift(a)[source]

    Efficiently compute Taylor shift f(x + a).

    Examples

    >>> from sympy import Poly
    @@ -4598,7 +4598,7 @@ 

    Basic polynomial manipulation functions
    -shift_list(a)[source]
    +shift_list(a)[source]

    Efficiently compute Taylor shift f(X + A).

    Examples

    >>> from sympy import Poly
    @@ -4620,13 +4620,13 @@ 

    Basic polynomial manipulation functions
    -slice(x, m, n=None)[source]
    +slice(x, m, n=None)[source]

    Take a continuous subsequence of terms of f.

    -sqf_list(all=False)[source]
    +sqf_list(all=False)[source]

    Returns a list of square-free factors of f.

    Examples

    >>> from sympy import Poly
    @@ -4651,7 +4651,7 @@ 

    Basic polynomial manipulation functions
    -sqf_list_include(all=False)[source]
    +sqf_list_include(all=False)[source]

    Returns a list of square-free factors of f.

    Examples

    >>> from sympy import Poly, expand
    @@ -4680,7 +4680,7 @@ 

    Basic polynomial manipulation functions
    -sqf_norm()[source]
    +sqf_norm()[source]

    Computes square-free norm of f.

    Returns s, f, r, such that g(x) = f(x-sa) and r(x) = Norm(g(x)) is a square-free polynomial over K, @@ -4705,7 +4705,7 @@

    Basic polynomial manipulation functions
    -sqf_part()[source]
    +sqf_part()[source]

    Computes square-free part of f.

    Examples

    >>> from sympy import Poly
    @@ -4720,7 +4720,7 @@ 

    Basic polynomial manipulation functions
    -sqr()[source]
    +sqr()[source]

    Square a polynomial f.

    Examples

    >>> from sympy import Poly
    @@ -4739,7 +4739,7 @@ 

    Basic polynomial manipulation functions
    -sturm(auto=True)[source]
    +sturm(auto=True)[source]

    Computes the Sturm sequence of f.

    Examples

    >>> from sympy import Poly
    @@ -4757,7 +4757,7 @@ 

    Basic polynomial manipulation functions
    -sub(g)[source]
    +sub(g)[source]

    Subtract two polynomials f and g.

    Examples

    >>> from sympy import Poly
    @@ -4776,7 +4776,7 @@ 

    Basic polynomial manipulation functions
    -sub_ground(coeff)[source]
    +sub_ground(coeff)[source]

    Subtract an element of the ground domain from f.

    Examples

    >>> from sympy import Poly
    @@ -4791,7 +4791,7 @@ 

    Basic polynomial manipulation functions
    -subresultants(g)[source]
    +subresultants(g)[source]

    Computes the subresultant PRS of f and g.

    Examples

    >>> from sympy import Poly
    @@ -4808,7 +4808,7 @@ 

    Basic polynomial manipulation functions
    -terms(order=None)[source]
    +terms(order=None)[source]

    Returns all non-zero terms from f in lex order.

    Examples

    >>> from sympy import Poly
    @@ -4827,7 +4827,7 @@ 

    Basic polynomial manipulation functions
    -terms_gcd()[source]
    +terms_gcd()[source]

    Remove GCD of terms from the polynomial f.

    Examples

    >>> from sympy import Poly
    @@ -4842,7 +4842,7 @@ 

    Basic polynomial manipulation functions
    -termwise(func, *gens, **args)[source]
    +termwise(func, *gens, **args)[source]

    Apply a function to all terms of f.

    Examples

    >>> from sympy import Poly
    @@ -4862,7 +4862,7 @@ 

    Basic polynomial manipulation functions
    -to_exact()[source]
    +to_exact()[source]

    Make the ground domain exact.

    Examples

    >>> from sympy import Poly, RR
    @@ -4877,7 +4877,7 @@ 

    Basic polynomial manipulation functions
    -to_field()[source]
    +to_field()[source]

    Make the ground domain a field.

    Examples

    >>> from sympy import Poly, ZZ
    @@ -4892,7 +4892,7 @@ 

    Basic polynomial manipulation functions
    -to_ring()[source]
    +to_ring()[source]

    Make the ground domain a ring.

    Examples

    >>> from sympy import Poly, QQ
    @@ -4907,7 +4907,7 @@ 

    Basic polynomial manipulation functions
    -total_degree()[source]
    +total_degree()[source]

    Returns the total degree of f.

    Examples

    >>> from sympy import Poly
    @@ -4924,7 +4924,7 @@ 

    Basic polynomial manipulation functions
    -transform(p, q)[source]
    +transform(p, q)[source]

    Efficiently evaluate the functional transformation q**n * f(p/q).

    Examples

    >>> from sympy import Poly
    @@ -4939,7 +4939,7 @@ 

    Basic polynomial manipulation functions
    -trunc(p)[source]
    +trunc(p)[source]

    Reduce f modulo a constant p.

    Examples

    >>> from sympy import Poly
    @@ -4954,7 +4954,7 @@ 

    Basic polynomial manipulation functions
    -unify(g)[source]
    +unify(g)[source]

    Make f and g belong to the same domain.

    Examples

    >>> from sympy import Poly
    @@ -4989,7 +4989,7 @@ 

    Basic polynomial manipulation functions
    -which_all_roots(candidates)[source]
    +which_all_roots(candidates)[source]

    Find roots of a square-free polynomial f from candidates.

    Explanation

    If f is a square-free polynomial and candidates is a superset @@ -5042,7 +5042,7 @@

    Basic polynomial manipulation functions
    -which_real_roots(candidates)[source]
    +which_real_roots(candidates)[source]

    Find roots of a square-free polynomial f from candidates.

    Explanation

    If f is a square-free polynomial and candidates is a superset @@ -5099,7 +5099,7 @@

    Basic polynomial manipulation functions
    -class sympy.polys.polytools.PurePoly(rep, *gens, **args)[source]
    +class sympy.polys.polytools.PurePoly(rep, *gens, **args)[source]

    Class for representing pure polynomials.

    @@ -5124,11 +5124,11 @@

    Basic polynomial manipulation functions
    -class sympy.polys.polytools.GroebnerBasis(F, *gens, **args)[source]
    +class sympy.polys.polytools.GroebnerBasis(F, *gens, **args)[source]

    Represents a reduced Groebner basis.

    -contains(poly)[source]
    +contains(poly)[source]

    Check if poly belongs the ideal generated by self.

    Examples

    >>> from sympy import groebner
    @@ -5149,7 +5149,7 @@ 

    Basic polynomial manipulation functions
    -fglm(order)[source]
    +fglm(order)[source]

    Convert a Groebner basis from one ordering to another.

    The FGLM algorithm converts reduced Groebner bases of zero-dimensional ideals from one ordering to another. This method is often used when it @@ -5194,7 +5194,7 @@

    Basic polynomial manipulation functions
    -reduce(expr, auto=True)[source]
    +reduce(expr, auto=True)[source]

    Reduces a polynomial modulo a Groebner basis.

    Given a polynomial f and a set of polynomials G = (g_1, ..., g_n), computes a set of quotients q = (q_1, ..., q_n) and the remainder r @@ -5229,7 +5229,7 @@

    Basic polynomial manipulation functions

    -sympy.polys.polyfuncs.symmetrize(F, *gens, **args)[source]
    +sympy.polys.polyfuncs.symmetrize(F, *gens, **args)[source]

    Rewrite a polynomial in terms of elementary symmetric polynomials.

    A symmetric polynomial is a multivariate polynomial that remains invariant under any variable permutation, i.e., if \(f = f(x_1, x_2, \dots, x_n)\), @@ -5263,7 +5263,7 @@

    Extra polynomial manipulation functions
    -sympy.polys.polyfuncs.horner(f, *gens, **args)[source]
    +sympy.polys.polyfuncs.horner(f, *gens, **args)[source]

    Rewrite a polynomial in Horner form.

    Among other applications, evaluation of a polynomial at a point is optimal when it is applied using the Horner scheme ([1]).

    @@ -5297,7 +5297,7 @@

    Extra polynomial manipulation functions
    -sympy.polys.polyfuncs.interpolate(data, x)[source]
    +sympy.polys.polyfuncs.interpolate(data, x)[source]

    Construct an interpolating polynomial for the data points evaluated at point x (which can be symbolic or numeric).

    Examples

    @@ -5339,7 +5339,7 @@

    Extra polynomial manipulation functions
    -sympy.polys.polyfuncs.viete(f, roots=None, *gens, **args)[source]
    +sympy.polys.polyfuncs.viete(f, roots=None, *gens, **args)[source]

    Generate Viete’s formulas for f.

    Examples

    >>> from sympy.polys.polyfuncs import viete
    @@ -5360,7 +5360,7 @@ 

    Extra polynomial manipulation functions

    -sympy.polys.constructor.construct_domain(obj, **args)[source]
    +sympy.polys.constructor.construct_domain(obj, **args)[source]

    Construct a minimal domain for a list of expressions.

    Parameters:
    @@ -5444,23 +5444,23 @@

    Domain constructors

    -class sympy.polys.monomials.Monomial(monom, gens=None)[source]
    +class sympy.polys.monomials.Monomial(monom, gens=None)[source]

    Class representing a monomial, i.e. a product of powers.

    -as_expr(*gens)[source]
    +as_expr(*gens)[source]

    Convert a monomial instance to a SymPy expression.

    -gcd(other)[source]
    +gcd(other)[source]

    Greatest common divisor of monomials.

    -lcm(other)[source]
    +lcm(other)[source]

    Least common multiple of monomials.

    @@ -5476,7 +5476,7 @@

    Monomials encoded as tuplesmin_degrees=None,

    -)[source] +)[source]

    max_degrees and min_degrees are either both integers or both lists. Unless otherwise specified, min_degrees is either 0 or [0, ..., 0].

    @@ -5547,7 +5547,7 @@

    Monomials encoded as tuples
    -sympy.polys.monomials.monomial_count(V, N)[source]
    +sympy.polys.monomials.monomial_count(V, N)[source]

    Computes the number of monomials.

    The number of monomials is given by the following formula:

    @@ -5581,25 +5581,25 @@

    Monomials encoded as tuples

    -class sympy.polys.orderings.MonomialOrder[source]
    +class sympy.polys.orderings.MonomialOrder[source]

    Base class for monomial orderings.

    -class sympy.polys.orderings.LexOrder[source]
    +class sympy.polys.orderings.LexOrder[source]

    Lexicographic order of monomials.

    -class sympy.polys.orderings.GradedLexOrder[source]
    +class sympy.polys.orderings.GradedLexOrder[source]

    Graded lexicographic order of monomials.

    -class sympy.polys.orderings.ReversedGradedLexOrder[source]
    +class sympy.polys.orderings.ReversedGradedLexOrder[source]

    Reversed graded lexicographic order of monomials.

    @@ -5618,7 +5618,7 @@

    Formal manipulation of roots of polynomialsexpand=True,

    -)[source] +)[source]

    An indexed root of a univariate polynomial.

    Returns either a ComplexRootOf object or an explicit expression involving radicals.

    @@ -5657,7 +5657,7 @@

    Formal manipulation of roots of polynomialsexpand=True,

    -)[source] +)[source]

    Represents a root of a univariate polynomial.

    Base class for roots of different kinds of polynomials. Only complex roots are currently supported.

    @@ -5675,7 +5675,7 @@

    Formal manipulation of roots of polynomialsexpand=True,

    -)[source] +)[source]

    Represents an indexed complex root of a polynomial.

    Roots of a univariate polynomial separated into disjoint real or complex intervals and indexed in a fixed order:

    @@ -5798,56 +5798,56 @@

    Formal manipulation of roots of polynomials
    -classmethod _all_roots(poly, use_cache=True)[source]
    +classmethod _all_roots(poly, use_cache=True)[source]

    Get real and complex roots of a composite polynomial.

    -classmethod _complexes_index(complexes, index)[source]
    +classmethod _complexes_index(complexes, index)[source]

    Map initial complex root index to an index in a factor where the root belongs.

    -classmethod _complexes_sorted(complexes)[source]
    +classmethod _complexes_sorted(complexes)[source]

    Make complex isolating intervals disjoint and sort roots.

    -classmethod _count_roots(roots)[source]
    +classmethod _count_roots(roots)[source]

    Count the number of real or complex roots with multiplicities.

    -_ensure_complexes_init()[source]
    +_ensure_complexes_init()[source]

    Ensure that our poly has entries in the complexes cache.

    -_ensure_reals_init()[source]
    +_ensure_reals_init()[source]

    Ensure that our poly has entries in the reals cache.

    -_eval_evalf(prec, **kwargs)[source]
    +_eval_evalf(prec, **kwargs)[source]

    Evaluate this complex root to the given precision.

    -_eval_is_imaginary()[source]
    +_eval_is_imaginary()[source]

    Return True if the root is imaginary.

    -_eval_is_real()[source]
    +_eval_is_real()[source]

    Return True if the root is real.

    @@ -5860,7 +5860,7 @@

    Formal manipulation of roots of polynomialsuse_cache=True,

    -)[source] +)[source]

    Compute complex root isolating intervals for a list of factors.

    @@ -5873,19 +5873,19 @@

    Formal manipulation of roots of polynomialsuse_cache=True,

    -)[source] +)[source]

    Get complex root isolating intervals for a square-free factor.

    -_get_interval()[source]
    +_get_interval()[source]

    Internal function for retrieving isolation interval from cache.

    -classmethod _get_reals(factors, use_cache=True)[source]
    +classmethod _get_reals(factors, use_cache=True)[source]

    Compute real root isolating intervals for a list of factors.

    @@ -5898,13 +5898,13 @@

    Formal manipulation of roots of polynomialsuse_cache=True,

    -)[source] +)[source]

    Get real root isolating intervals for a square-free factor.

    -classmethod _get_roots(method, poly, radicals)[source]
    +classmethod _get_roots(method, poly, radicals)[source]

    Return postprocessed roots of specified kind.

    @@ -5918,7 +5918,7 @@

    Formal manipulation of roots of polynomialsradicals,

    -)[source] +)[source]

    Return postprocessed roots of specified kind for polynomials with algebraic coefficients. It assumes the domain is already an algebraic field. First it @@ -5937,7 +5937,7 @@

    Formal manipulation of roots of polynomialsradicals,

    -)[source] +)[source]

    Return postprocessed roots of specified kind for polynomials with rational coefficients.

    @@ -5952,50 +5952,50 @@

    Formal manipulation of roots of polynomialslazy=False,

    -)[source] +)[source]

    Get a root of a composite polynomial by index.

    -classmethod _new(poly, index)[source]
    +classmethod _new(poly, index)[source]

    Construct new CRootOf object from raw data.

    -classmethod _postprocess_root(root, radicals)[source]
    +classmethod _postprocess_root(root, radicals)[source]

    Return the root if it is trivial or a CRootOf object.

    -classmethod _preprocess_roots(poly)[source]
    +classmethod _preprocess_roots(poly)[source]

    Take heroic measures to make poly compatible with CRootOf.

    -classmethod _real_roots(poly)[source]
    +classmethod _real_roots(poly)[source]

    Get real roots of a composite polynomial.

    -classmethod _reals_index(reals, index)[source]
    +classmethod _reals_index(reals, index)[source]

    Map initial real root index to an index in a factor where the root belongs.

    -classmethod _reals_sorted(reals)[source]
    +classmethod _reals_sorted(reals)[source]

    Make real isolating intervals disjoint and sort roots.

    -classmethod _refine_complexes(complexes)[source]
    +classmethod _refine_complexes(complexes)[source]

    return complexes such that no bounding rectangles of non-conjugate roots would intersect. In addition, assure that neither ay nor by is 0 to guarantee that non-real roots are distinct from real roots in @@ -6004,31 +6004,31 @@

    Formal manipulation of roots of polynomials
    -_reset()[source]
    +_reset()[source]

    Reset all intervals

    -classmethod _roots_trivial(poly, radicals)[source]
    +classmethod _roots_trivial(poly, radicals)[source]

    Compute roots in linear, quadratic and binomial cases.

    -_set_interval(interval)[source]
    +_set_interval(interval)[source]

    Internal function for updating isolation interval in cache.

    -classmethod all_roots(poly, radicals=True)[source]
    +classmethod all_roots(poly, radicals=True)[source]

    Get real and complex roots of a polynomial.

    -classmethod clear_cache()[source]
    +classmethod clear_cache()[source]

    Reset cache for reals and complexes.

    The intervals used to approximate a root instance are updated as needed. When a request is made to see the intervals, the @@ -6042,7 +6042,7 @@

    Formal manipulation of roots of polynomials
    -eval_approx(n, return_mpmath=False)[source]
    +eval_approx(n, return_mpmath=False)[source]

    Evaluate this complex root to the given precision.

    This uses secant method and root bounds are used to both generate an initial guess and to check that the root @@ -6060,7 +6060,7 @@

    Formal manipulation of roots of polynomialsn=15,

    -)[source] +)[source]

    Return a Rational approximation of self that has real and imaginary component approximations that are within dx and dy of the true values, respectively. Alternatively, @@ -6093,7 +6093,7 @@

    Formal manipulation of roots of polynomials
    -classmethod real_roots(poly, radicals=True)[source]
    +classmethod real_roots(poly, radicals=True)[source]

    Get real roots of a polynomial.

    @@ -6111,11 +6111,11 @@

    Formal manipulation of roots of polynomialsquadratic=False,

    -)[source] +)[source]

    Represents a sum of all roots of a univariate polynomial.

    -classmethod new(poly, func, auto=True)[source]
    +classmethod new(poly, func, auto=True)[source]

    Construct new RootSum instance.

    @@ -6143,7 +6143,7 @@

    Symbolic root-finding algorithms**flags,

    -)[source] +)[source]

    Computes symbolic roots of a univariate polynomial.

    Given a univariate polynomial f with symbolic coefficients (or a list of the polynomial’s coefficients), returns a dictionary @@ -6245,7 +6245,7 @@

    Symbolic root-finding algorithms

    -sympy.polys.specialpolys.swinnerton_dyer_poly(n, x=None, polys=False)[source]
    +sympy.polys.specialpolys.swinnerton_dyer_poly(n, x=None, polys=False)[source]

    Generates n-th Swinnerton-Dyer polynomial in \(x\).

    Parameters:
    @@ -6265,7 +6265,7 @@

    Special polynomials
    -sympy.polys.specialpolys.interpolating_poly(n, x, X='x', Y='y')[source]
    +sympy.polys.specialpolys.interpolating_poly(n, x, X='x', Y='y')[source]

    Construct Lagrange interpolating polynomial for n data points. If a sequence of values are given for X and Y then the first n values will be used.

    @@ -6273,7 +6273,7 @@

    Special polynomials
    -sympy.polys.specialpolys.cyclotomic_poly(n, x=None, polys=False)[source]
    +sympy.polys.specialpolys.cyclotomic_poly(n, x=None, polys=False)[source]

    Generates cyclotomic polynomial of order \(n\) in \(x\).

    Parameters:
    @@ -6293,7 +6293,7 @@

    Special polynomials
    -sympy.polys.specialpolys.symmetric_poly(n, *gens, polys=False)[source]
    +sympy.polys.specialpolys.symmetric_poly(n, *gens, polys=False)[source]

    Generates symmetric polynomial of order \(n\).

    Parameters:
    @@ -6319,7 +6319,7 @@

    Special polynomialspolys=False,

    -)[source] +)[source]

    Generates a polynomial of degree n with coefficients in [inf, sup].

    @@ -6359,7 +6359,7 @@

    Special polynomials

    -sympy.polys.orthopolys.chebyshevt_poly(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.chebyshevt_poly(n, x=None, polys=False)[source]

    Generates the Chebyshev polynomial of the first kind \(T_n(x)\).

    Parameters:
    @@ -6378,7 +6378,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.chebyshevu_poly(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.chebyshevu_poly(n, x=None, polys=False)[source]

    Generates the Chebyshev polynomial of the second kind \(U_n(x)\).

    Parameters:
    @@ -6397,7 +6397,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.gegenbauer_poly(n, a, x=None, polys=False)[source]
    +sympy.polys.orthopolys.gegenbauer_poly(n, a, x=None, polys=False)[source]

    Generates the Gegenbauer polynomial \(C_n^{(a)}(x)\).

    Parameters:
    @@ -6420,7 +6420,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.hermite_poly(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.hermite_poly(n, x=None, polys=False)[source]

    Generates the Hermite polynomial \(H_n(x)\).

    Parameters:
    @@ -6439,7 +6439,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.hermite_prob_poly(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.hermite_prob_poly(n, x=None, polys=False)[source]

    Generates the probabilist’s Hermite polynomial \(He_n(x)\).

    Parameters:
    @@ -6458,7 +6458,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.jacobi_poly(n, a, b, x=None, polys=False)[source]
    +sympy.polys.orthopolys.jacobi_poly(n, a, b, x=None, polys=False)[source]

    Generates the Jacobi polynomial \(P_n^{(a,b)}(x)\).

    Parameters:
    @@ -6485,7 +6485,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.legendre_poly(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.legendre_poly(n, x=None, polys=False)[source]

    Generates the Legendre polynomial \(P_n(x)\).

    Parameters:
    @@ -6504,7 +6504,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.laguerre_poly(n, x=None, alpha=0, polys=False)[source]
    +sympy.polys.orthopolys.laguerre_poly(n, x=None, alpha=0, polys=False)[source]

    Generates the Laguerre polynomial \(L_n^{(\alpha)}(x)\).

    Parameters:
    @@ -6527,7 +6527,7 @@

    Orthogonal polynomials
    -sympy.polys.orthopolys.spherical_bessel_fn(n, x=None, polys=False)[source]
    +sympy.polys.orthopolys.spherical_bessel_fn(n, x=None, polys=False)[source]

    Coefficients for the spherical Bessel functions.

    These are only needed in the jn() function.

    The coefficients are calculated from:

    @@ -6568,7 +6568,7 @@

    Orthogonal polynomialsAppell sequences

    -sympy.polys.appellseqs.bernoulli_poly(n, x=None, polys=False)[source]
    +sympy.polys.appellseqs.bernoulli_poly(n, x=None, polys=False)[source]

    Generates the Bernoulli polynomial \(\operatorname{B}_n(x)\).

    \(\operatorname{B}_n(x)\) is the unique polynomial satisfying

    @@ -6636,7 +6636,7 @@

    Appell sequences
    -sympy.polys.appellseqs.bernoulli_c_poly(n, x=None, polys=False)[source]
    +sympy.polys.appellseqs.bernoulli_c_poly(n, x=None, polys=False)[source]

    Generates the central Bernoulli polynomial \(\operatorname{B}_n^c(x)\).

    These are scaled and shifted versions of the plain Bernoulli polynomials, done in such a way that \(\operatorname{B}_n^c(x)\) is an even or odd function @@ -6663,7 +6663,7 @@

    Appell sequences
    -sympy.polys.appellseqs.genocchi_poly(n, x=None, polys=False)[source]
    +sympy.polys.appellseqs.genocchi_poly(n, x=None, polys=False)[source]

    Generates the Genocchi polynomial \(\operatorname{G}_n(x)\).

    \(\operatorname{G}_n(x)\) is twice the difference between the plain and central Bernoulli polynomials, so has degree \(n-1\):

    @@ -6695,7 +6695,7 @@

    Appell sequences
    -sympy.polys.appellseqs.euler_poly(n, x=None, polys=False)[source]
    +sympy.polys.appellseqs.euler_poly(n, x=None, polys=False)[source]

    Generates the Euler polynomial \(\operatorname{E}_n(x)\).

    These are scaled and reindexed versions of the Genocchi polynomials:

    @@ -6723,7 +6723,7 @@

    Appell sequences
    -sympy.polys.appellseqs.andre_poly(n, x=None, polys=False)[source]
    +sympy.polys.appellseqs.andre_poly(n, x=None, polys=False)[source]

    Generates the Andre polynomial \(\mathcal{A}_n(x)\).

    This is the Appell sequence where the constant coefficients form the sequence of Euler numbers euler(n). As such they have integer coefficients @@ -6791,7 +6791,7 @@

    Appell sequences

    -sympy.polys.rationaltools.together(expr, deep=False, fraction=True)[source]
    +sympy.polys.rationaltools.together(expr, deep=False, fraction=True)[source]

    Denest and combine rational expressions using symbolic methods.

    This function takes an expression or a container of expressions and puts it (them) together by denesting and combining rational @@ -6849,7 +6849,7 @@

    Manipulation of rational functions

    -sympy.polys.partfrac.apart(f, x=None, full=False, **options)[source]
    +sympy.polys.partfrac.apart(f, x=None, full=False, **options)[source]

    Compute partial fraction decomposition of a rational function.

    Given a rational function f, computes the partial fraction decomposition of f. Two algorithms are available: One is based on the @@ -6899,7 +6899,7 @@

    Partial fraction decomposition
    -sympy.polys.partfrac.apart_list(f, x=None, dummies=None, **options)[source]
    +sympy.polys.partfrac.apart_list(f, x=None, dummies=None, **options)[source]

    Compute partial fraction decomposition of a rational function and return the result in structured form.

    Given a rational function f compute the partial fraction decomposition @@ -7004,7 +7004,7 @@

    Partial fraction decomposition
    -sympy.polys.partfrac.assemble_partfrac_list(partial_list)[source]
    +sympy.polys.partfrac.assemble_partfrac_list(partial_list)[source]

    Reassemble a full partial fraction decomposition from a structured result obtained by the function apart_list.

    Examples

    @@ -7067,7 +7067,7 @@

    Partial fraction decomposition

    -sympy.polys.dispersion.dispersionset(p, q=None, *gens, **args)[source]
    +sympy.polys.dispersion.dispersionset(p, q=None, *gens, **args)[source]

    Compute the dispersion set of two polynomials.

    For two polynomials \(f(x)\) and \(g(x)\) with \(\deg f > 0\) and \(\deg g > 0\) the dispersion set \(\operatorname{J}(f, g)\) is defined as:

    @@ -7150,7 +7150,7 @@

    Dispersion of Polynomials
    -sympy.polys.dispersion.dispersion(p, q=None, *gens, **args)[source]
    +sympy.polys.dispersion.dispersion(p, q=None, *gens, **args)[source]

    Compute the dispersion of polynomials.

    For two polynomials \(f(x)\) and \(g(x)\) with \(\deg f > 0\) and \(\deg g > 0\) the dispersion \(\operatorname{dis}(f, g)\) is defined as:

    diff --git a/dev/modules/polys/ringseries.html b/dev/modules/polys/ringseries.html index d943fe41f64..4769b81baad 100644 --- a/dev/modules/polys/ringseries.html +++ b/dev/modules/polys/ringseries.html @@ -966,7 +966,7 @@

    Reference
    -sympy.polys.ring_series.rs_log(p, x, prec)[source]
    +sympy.polys.ring_series.rs_log(p, x, prec)[source]

    The Logarithm of p modulo O(x**prec).

    Notes

    Truncation of integral dx p**-1*d p/dx is used.

    @@ -985,7 +985,7 @@

    Reference
    -sympy.polys.ring_series.rs_LambertW(p, x, prec)[source]
    +sympy.polys.ring_series.rs_LambertW(p, x, prec)[source]

    Calculate the series expansion of the principal branch of the Lambert W function.

    Examples

    @@ -1005,7 +1005,7 @@

    Reference
    -sympy.polys.ring_series.rs_exp(p, x, prec)[source]
    +sympy.polys.ring_series.rs_exp(p, x, prec)[source]

    Exponentiation of a series modulo O(x**prec)

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1020,7 +1020,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_atan(p, x, prec)[source]
    +sympy.polys.ring_series.rs_atan(p, x, prec)[source]

    The arctangent of a series

    Return the series expansion of the atan of p, about 0.

    Examples

    @@ -1040,7 +1040,7 @@

    Reference
    -sympy.polys.ring_series.rs_asin(p, x, prec)[source]
    +sympy.polys.ring_series.rs_asin(p, x, prec)[source]

    Arcsine of a series

    Return the series expansion of the asin of p, about 0.

    Examples

    @@ -1060,7 +1060,7 @@

    Reference
    -sympy.polys.ring_series.rs_tan(p, x, prec)[source]
    +sympy.polys.ring_series.rs_tan(p, x, prec)[source]

    Tangent of a series.

    Return the series expansion of the tan of p, about 0.

    @@ -1082,7 +1082,7 @@

    Reference
    -sympy.polys.ring_series._tan1(p, x, prec)[source]
    +sympy.polys.ring_series._tan1(p, x, prec)[source]

    Helper function of rs_tan().

    Return the series expansion of tan of a univariate series using Newton’s method. It takes advantage of the fact that series expansion of atan is @@ -1095,7 +1095,7 @@

    Reference
    -sympy.polys.ring_series.rs_cot(p, x, prec)[source]
    +sympy.polys.ring_series.rs_cot(p, x, prec)[source]

    Cotangent of a series

    Return the series expansion of the cot of p, about 0.

    Examples

    @@ -1115,7 +1115,7 @@

    Reference
    -sympy.polys.ring_series.rs_sin(p, x, prec)[source]
    +sympy.polys.ring_series.rs_sin(p, x, prec)[source]

    Sine of a series

    Return the series expansion of the sin of p, about 0.

    Examples

    @@ -1137,7 +1137,7 @@

    Reference
    -sympy.polys.ring_series.rs_cos(p, x, prec)[source]
    +sympy.polys.ring_series.rs_cos(p, x, prec)[source]

    Cosine of a series

    Return the series expansion of the cos of p, about 0.

    Examples

    @@ -1159,14 +1159,14 @@

    Reference
    -sympy.polys.ring_series.rs_cos_sin(p, x, prec)[source]
    +sympy.polys.ring_series.rs_cos_sin(p, x, prec)[source]

    Return the tuple (rs_cos(p, x, prec)`, `rs_sin(p, x, prec)).

    Is faster than calling rs_cos and rs_sin separately

    -sympy.polys.ring_series.rs_atanh(p, x, prec)[source]
    +sympy.polys.ring_series.rs_atanh(p, x, prec)[source]

    Hyperbolic arctangent of a series

    Return the series expansion of the atanh of p, about 0.

    Examples

    @@ -1186,7 +1186,7 @@

    Reference
    -sympy.polys.ring_series.rs_sinh(p, x, prec)[source]
    +sympy.polys.ring_series.rs_sinh(p, x, prec)[source]

    Hyperbolic sine of a series

    Return the series expansion of the sinh of p, about 0.

    Examples

    @@ -1206,7 +1206,7 @@

    Reference
    -sympy.polys.ring_series.rs_cosh(p, x, prec)[source]
    +sympy.polys.ring_series.rs_cosh(p, x, prec)[source]

    Hyperbolic cosine of a series

    Return the series expansion of the cosh of p, about 0.

    Examples

    @@ -1226,7 +1226,7 @@

    Reference
    -sympy.polys.ring_series.rs_tanh(p, x, prec)[source]
    +sympy.polys.ring_series.rs_tanh(p, x, prec)[source]

    Hyperbolic tangent of a series

    Return the series expansion of the tanh of p, about 0.

    Examples

    @@ -1246,7 +1246,7 @@

    Reference
    -sympy.polys.ring_series.rs_hadamard_exp(p1, inverse=False)[source]
    +sympy.polys.ring_series.rs_hadamard_exp(p1, inverse=False)[source]

    Return sum f_i/i!*x**i from sum f_i*x**i, where x is the first variable.

    If invers=True return sum f_i*i!*x**i

    @@ -1265,7 +1265,7 @@

    Reference
    -sympy.polys.ring_series.rs_mul(p1, p2, x, prec)[source]
    +sympy.polys.ring_series.rs_mul(p1, p2, x, prec)[source]

    Return the product of the given two series, modulo O(x**prec).

    x is the series variable or its position in the generators.

    Examples

    @@ -1283,7 +1283,7 @@

    Reference
    -sympy.polys.ring_series.rs_square(p1, x, prec)[source]
    +sympy.polys.ring_series.rs_square(p1, x, prec)[source]

    Square the series modulo O(x**prec)

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1299,7 +1299,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_pow(p1, n, x, prec)[source]
    +sympy.polys.ring_series.rs_pow(p1, n, x, prec)[source]

    Return p1**n modulo O(x**prec)

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1315,7 +1315,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_series_inversion(p, x, prec)[source]
    +sympy.polys.ring_series.rs_series_inversion(p, x, prec)[source]

    Multivariate series inversion 1/p modulo O(x**prec).

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1334,7 +1334,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_series_reversion(p, x, n, y)[source]
    +sympy.polys.ring_series.rs_series_reversion(p, x, n, y)[source]

    Reversion of a series.

    p is a series with O(x**n) of the form \(p = ax + f(x)\) where \(a\) is a number different from 0.

    @@ -1379,7 +1379,7 @@

    Reference
    -sympy.polys.ring_series.rs_nth_root(p, n, x, prec)[source]
    +sympy.polys.ring_series.rs_nth_root(p, n, x, prec)[source]

    Multivariate series expansion of the nth root of p.

    Parameters:
    @@ -1419,7 +1419,7 @@

    Reference
    -sympy.polys.ring_series.rs_trunc(p1, x, prec)[source]
    +sympy.polys.ring_series.rs_trunc(p1, x, prec)[source]

    Truncate the series in the x variable with precision prec, that is, modulo O(x**prec)

    Examples

    @@ -1438,7 +1438,7 @@

    Reference
    -sympy.polys.ring_series.rs_subs(p, rules, x, prec)[source]
    +sympy.polys.ring_series.rs_subs(p, rules, x, prec)[source]

    Substitution with truncation according to the mapping in rules.

    Return a series with precision prec in the generator x

    Note that substitutions are not done one after the other

    @@ -1479,7 +1479,7 @@

    Reference
    -sympy.polys.ring_series.rs_diff(p, x)[source]
    +sympy.polys.ring_series.rs_diff(p, x)[source]

    Return partial derivative of p with respect to x.

    Parameters:
    @@ -1500,7 +1500,7 @@

    Reference
    -sympy.polys.ring_series.rs_integrate(p, x)[source]
    +sympy.polys.ring_series.rs_integrate(p, x)[source]

    Integrate p with respect to x.

    Parameters:
    @@ -1521,7 +1521,7 @@

    Reference
    -sympy.polys.ring_series.rs_newton(p, x, prec)[source]
    +sympy.polys.ring_series.rs_newton(p, x, prec)[source]

    Compute the truncated Newton sum of the polynomial p

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1537,7 +1537,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_compose_add(p1, p2)[source]
    +sympy.polys.ring_series.rs_compose_add(p1, p2)[source]

    compute the composed sum prod(p2(x - beta) for beta root of p1)

    Examples

    >>> from sympy.polys.domains import QQ
    @@ -1565,7 +1565,7 @@ 

    Reference
    -sympy.polys.ring_series.rs_is_puiseux(p, x)[source]
    +sympy.polys.ring_series.rs_is_puiseux(p, x)[source]

    Test if p is Puiseux series in x.

    Raise an exception if it has a negative power in x.

    Examples

    @@ -1582,7 +1582,7 @@

    Reference
    -sympy.polys.ring_series.rs_puiseux(f, p, x, prec)[source]
    +sympy.polys.ring_series.rs_puiseux(f, p, x, prec)[source]

    Return the puiseux series for \(f(p, x, prec)\).

    To be used when function f is implemented only for regular series.

    Examples

    @@ -1599,14 +1599,14 @@

    Reference
    -sympy.polys.ring_series.rs_puiseux2(f, p, q, x, prec)[source]
    +sympy.polys.ring_series.rs_puiseux2(f, p, q, x, prec)[source]

    Return the puiseux series for \(f(p, q, x, prec)\).

    To be used when function f is implemented only for regular series.

    -sympy.polys.ring_series.rs_series_from_list(p, c, x, prec, concur=1)[source]
    +sympy.polys.ring_series.rs_series_from_list(p, c, x, prec, concur=1)[source]

    Return a series \(sum c[n]*p**n\) modulo \(O(x**prec)\).

    It reduces the number of multiplications by summing concurrently.

    \(ax = [1, p, p**2, .., p**(J - 1)]\) @@ -1632,7 +1632,7 @@

    Reference
    -sympy.polys.ring_series.rs_fun(p, f, *args)[source]
    +sympy.polys.ring_series.rs_fun(p, f, *args)[source]

    Function of a multivariate series computed by substitution.

    The case with f method name is used to compute \(rs\_tan\) and \(rs\_nth\_root\) of a multivariate series:

    @@ -1664,14 +1664,14 @@

    Reference
    -sympy.polys.ring_series.mul_xin(p, i, n)[source]
    +sympy.polys.ring_series.mul_xin(p, i, n)[source]

    Return \(p*x_i**n\).

    \(x\_i\) is the ith variable in p.

    -sympy.polys.ring_series.pow_xin(p, i, n)[source]
    +sympy.polys.ring_series.pow_xin(p, i, n)[source]
    >>> from sympy.polys.domains import QQ
     >>> from sympy.polys.rings import ring
     >>> from sympy.polys.ring_series import pow_xin
    diff --git a/dev/modules/polys/solvers.html b/dev/modules/polys/solvers.html
    index 7283b8f2812..fad2214f81e 100644
    --- a/dev/modules/polys/solvers.html
    +++ b/dev/modules/polys/solvers.html
    @@ -808,7 +808,7 @@ 
    Documentation Version

    Low-level linear systems solver.

    -sympy.polys.solvers.solve_lin_sys(eqs, ring, _raw=True)[source]
    +sympy.polys.solvers.solve_lin_sys(eqs, ring, _raw=True)[source]

    Solve a system of linear equations from a PolynomialRing

    Parameters:
    @@ -877,7 +877,7 @@
    Documentation Version
    -sympy.polys.solvers.eqs_to_matrix(eqs_coeffs, eqs_rhs, gens, domain)[source]
    +sympy.polys.solvers.eqs_to_matrix(eqs_coeffs, eqs_rhs, gens, domain)[source]

    Get matrix from linear equations in dict format.

    Parameters:
    @@ -930,7 +930,7 @@
    Documentation Version
    -sympy.polys.solvers.sympy_eqs_to_ring(eqs, symbols)[source]
    +sympy.polys.solvers.sympy_eqs_to_ring(eqs, symbols)[source]

    Convert a system of equations from Expr to a PolyRing

    Parameters:
    @@ -978,7 +978,7 @@
    Documentation Version
    -sympy.polys.solvers._solve_lin_sys(eqs_coeffs, eqs_rhs, ring)[source]
    +sympy.polys.solvers._solve_lin_sys(eqs_coeffs, eqs_rhs, ring)[source]

    Solve a linear system from dict of PolynomialRing coefficients

    Explanation

    This is an internal function used by solve_lin_sys() after the @@ -1016,7 +1016,7 @@

    Documentation Version
    ring,
    -)[source] +)[source]

    Solve a linear system from dict of PolynomialRing coefficients

    Explanation

    This is an internal function used by solve_lin_sys() after the diff --git a/dev/modules/printing.html b/dev/modules/printing.html index c77f8127b45..cf28ec45baf 100644 --- a/dev/modules/printing.html +++ b/dev/modules/printing.html @@ -1015,7 +1015,7 @@

    Common mistakessource code):

    -class sympy.printing.printer.Printer(settings=None)[source]
    +class sympy.printing.printer.Printer(settings=None)[source]

    Generic printer

    Its job is to provide infrastructure for implementing new printers easily.

    If you want to define your custom Printer or your custom printing method @@ -1027,7 +1027,7 @@

    Common mistakes
    -_print(expr, **kwargs) str[source]
    +_print(expr, **kwargs) str[source]

    Internal dispatcher

    Tries the following concepts to print an expression:
      @@ -1041,13 +1041,13 @@

      Common mistakes
      -doprint(expr)[source]
      +doprint(expr)[source]

      Returns printer’s representation for expr (as a string)

    -classmethod set_global_settings(**settings)[source]
    +classmethod set_global_settings(**settings)[source]

    Set system-wide printing settings.

    @@ -1069,7 +1069,7 @@

    PrettyPrinter Class
    -class sympy.printing.pretty.pretty.PrettyPrinter(settings=None)[source]
    +class sympy.printing.pretty.pretty.PrettyPrinter(settings=None)[source]

    Printer, which converts an expression into 2D ASCII-art figure.

    @@ -1104,7 +1104,7 @@

    PrettyPrinter Class
    -sympy.printing.pretty.pretty.pretty_print(expr, **kwargs)[source]
    +sympy.printing.pretty.pretty.pretty_print(expr, **kwargs)[source]

    Prints expr in pretty form.

    pprint is just a shortcut for this function.

    @@ -1189,7 +1189,7 @@

    PrettyPrinter Class
    -class sympy.printing.c.C89CodePrinter(settings=None)[source]
    +class sympy.printing.c.C89CodePrinter(settings=None)[source]

    A printer to convert Python expressions to strings of C code

    @@ -1198,7 +1198,7 @@

    PrettyPrinter Class
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -1206,7 +1206,7 @@

    PrettyPrinter Class
    -class sympy.printing.c.C99CodePrinter(settings=None)[source]
    +class sympy.printing.c.C99CodePrinter(settings=None)[source]
    printmethod: str = '_ccode'
    @@ -1225,7 +1225,7 @@

    PrettyPrinter Class**settings,

    -)[source] +)[source]

    Converts an expr to a string of c code

    Parameters:
    @@ -1373,7 +1373,7 @@

    PrettyPrinter Class
    -sympy.printing.c.print_ccode(expr, **settings)[source]
    +sympy.printing.c.print_ccode(expr, **settings)[source]

    Prints C representation of the given expression.

    @@ -1392,7 +1392,7 @@

    PrettyPrinter Class
    -class sympy.printing.cxx.CXX98CodePrinter(settings=None)[source]
    +class sympy.printing.cxx.CXX98CodePrinter(settings=None)[source]
    printmethod: str = '_cxxcode'
    @@ -1402,7 +1402,7 @@

    PrettyPrinter Class
    -class sympy.printing.cxx.CXX11CodePrinter(settings=None)[source]
    +class sympy.printing.cxx.CXX11CodePrinter(settings=None)[source]
    printmethod: str = '_cxxcode'
    @@ -1421,7 +1421,7 @@

    PrettyPrinter Class**settings,

    -)[source] +)[source]

    C++ equivalent of ccode().

    @@ -1449,7 +1449,7 @@

    PrettyPrinter Class
    -class sympy.printing.rcode.RCodePrinter(settings={})[source]
    +class sympy.printing.rcode.RCodePrinter(settings={})[source]

    A printer to convert SymPy expressions to strings of R code

    @@ -1458,7 +1458,7 @@

    PrettyPrinter Class
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -1466,7 +1466,7 @@

    PrettyPrinter Class
    -sympy.printing.rcode.rcode(expr, assign_to=None, **settings)[source]
    +sympy.printing.rcode.rcode(expr, assign_to=None, **settings)[source]

    Converts an expr to a string of r code

    Parameters:
    @@ -1585,7 +1585,7 @@

    PrettyPrinter Class
    -sympy.printing.rcode.print_rcode(expr, **settings)[source]
    +sympy.printing.rcode.print_rcode(expr, **settings)[source]

    Prints R representation of the given expression.

    @@ -1600,7 +1600,7 @@

    Fortran Printing
    -sympy.printing.fortran.fcode(expr, assign_to=None, **settings)[source]
    +sympy.printing.fortran.fcode(expr, assign_to=None, **settings)[source]

    Converts an expr to a string of fortran code

    Parameters:
    @@ -1736,14 +1736,14 @@

    Fortran Printing
    -sympy.printing.fortran.print_fcode(expr, **settings)[source]
    +sympy.printing.fortran.print_fcode(expr, **settings)[source]

    Prints the Fortran representation of the given expression.

    See fcode for the meaning of the optional arguments.

    -class sympy.printing.fortran.FCodePrinter(settings=None)[source]
    +class sympy.printing.fortran.FCodePrinter(settings=None)[source]

    A printer to convert SymPy expressions to strings of Fortran code

    @@ -1752,7 +1752,7 @@

    Fortran Printing
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -1886,7 +1886,7 @@

    Fortran Printingsymbol_table=None,

    -)[source] +)[source]
    printmethod: str = '_smtlib'
    @@ -1917,7 +1917,7 @@

    Fortran Printinglog_warn=None,

    -)[source] +)[source]

    Converts expr to a string of smtlib code.

    Parameters:
    @@ -2032,7 +2032,7 @@

    Fortran Printing
    -class sympy.printing.mathematica.MCodePrinter(settings={})[source]
    +class sympy.printing.mathematica.MCodePrinter(settings={})[source]

    A printer to convert Python expressions to strings of the Wolfram’s Mathematica code

    @@ -2044,7 +2044,7 @@

    Fortran Printing
    -sympy.printing.mathematica.mathematica_code(expr, **settings)[source]
    +sympy.printing.mathematica.mathematica_code(expr, **settings)[source]

    Converts an expr to a string of the Wolfram Mathematica code

    Examples

    >>> from sympy import mathematica_code as mcode, symbols, sin
    @@ -2060,7 +2060,7 @@ 

    Fortran Printing

    Maple code printing

    -class sympy.printing.maple.MapleCodePrinter(settings=None)[source]
    +class sympy.printing.maple.MapleCodePrinter(settings=None)[source]

    Printer which converts a SymPy expression into a maple code.

    @@ -2071,7 +2071,7 @@

    Fortran Printing
    -sympy.printing.maple.maple_code(expr, assign_to=None, **settings)[source]
    +sympy.printing.maple.maple_code(expr, assign_to=None, **settings)[source]

    Converts expr to a string of Maple code.

    Parameters:
    @@ -2123,7 +2123,7 @@

    Fortran Printing
    -sympy.printing.maple.print_maple_code(expr, **settings)[source]
    +sympy.printing.maple.print_maple_code(expr, **settings)[source]

    Prints the Maple representation of the given expression.

    See maple_code() for the meaning of the optional arguments.

    Examples

    @@ -2145,7 +2145,7 @@

    Fortran Printing
    -class sympy.printing.jscode.JavascriptCodePrinter(settings={})[source]
    +class sympy.printing.jscode.JavascriptCodePrinter(settings={})[source]

    “A Printer to convert Python expressions to strings of JavaScript code

    @@ -2154,7 +2154,7 @@

    Fortran Printing
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -2162,7 +2162,7 @@

    Fortran Printing
    -sympy.printing.jscode.jscode(expr, assign_to=None, **settings)[source]
    +sympy.printing.jscode.jscode(expr, assign_to=None, **settings)[source]

    Converts an expr to a string of javascript code

    Parameters:
    @@ -2296,7 +2296,7 @@

    Fortran Printing
    -class sympy.printing.julia.JuliaCodePrinter(settings={})[source]
    +class sympy.printing.julia.JuliaCodePrinter(settings={})[source]

    A printer to convert expressions to strings of Julia code.

    @@ -2305,7 +2305,7 @@

    Fortran Printing
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -2313,7 +2313,7 @@

    Fortran Printing
    -sympy.printing.julia.julia_code(expr, assign_to=None, **settings)[source]
    +sympy.printing.julia.julia_code(expr, assign_to=None, **settings)[source]

    Converts \(expr\) to a string of Julia code.

    Parameters:
    @@ -2480,7 +2480,7 @@

    Fortran Printing
    -class sympy.printing.octave.OctaveCodePrinter(settings={})[source]
    +class sympy.printing.octave.OctaveCodePrinter(settings={})[source]

    A printer to convert expressions to strings of Octave/Matlab code.

    @@ -2489,7 +2489,7 @@

    Fortran Printing
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -2497,7 +2497,7 @@

    Fortran Printing
    -sympy.printing.octave.octave_code(expr, assign_to=None, **settings)[source]
    +sympy.printing.octave.octave_code(expr, assign_to=None, **settings)[source]

    Converts \(expr\) to a string of Octave (or Matlab) code.

    The string uses a subset of the Octave language for Matlab compatibility.

    @@ -2657,7 +2657,7 @@

    Fortran Printing
    -class sympy.printing.rust.RustCodePrinter(settings={})[source]
    +class sympy.printing.rust.RustCodePrinter(settings={})[source]

    A printer to convert SymPy expressions to strings of Rust code

    @@ -2666,7 +2666,7 @@

    Fortran Printing
    -indent_code(code)[source]
    +indent_code(code)[source]

    Accepts a string of code or a list of code lines

    @@ -2674,7 +2674,7 @@

    Fortran Printing
    -sympy.printing.codeprinter.rust_code(expr, assign_to=None, **settings)[source]
    +sympy.printing.codeprinter.rust_code(expr, assign_to=None, **settings)[source]

    Converts an expr to a string of Rust code

    Parameters:
    @@ -2801,7 +2801,7 @@

    Fortran Printing

    Aesara Code printing

    -class sympy.printing.aesaracode.AesaraPrinter(*args, **kwargs)[source]
    +class sympy.printing.aesaracode.AesaraPrinter(*args, **kwargs)[source]

    Code printer which creates Aesara symbolic expression graphs.

    Parameters:
    @@ -2842,7 +2842,7 @@

    Fortran Printingbroadcastables=None,

    -)[source] +)[source]

    Convert a SymPy expression to a Aesara graph variable.

    The dtypes and broadcastables arguments are used to specify the data type, dimension, and broadcasting behavior of the Aesara variables @@ -2886,7 +2886,7 @@

    Fortran Printing
    -sympy.printing.aesaracode.aesara_code(expr, cache=None, **kwargs)[source]
    +sympy.printing.aesaracode.aesara_code(expr, cache=None, **kwargs)[source]

    Convert a SymPy expression into a Aesara graph variable.

    Parameters:
    @@ -2932,7 +2932,7 @@

    Fortran Printing**kwargs,

    -)[source] +)[source]

    Create a Aesara function from SymPy expressions.

    The inputs and outputs are converted to Aesara variables using aesara_code() and then passed to aesara.function.

    @@ -3036,7 +3036,7 @@

    Fortran Printingbroadcastables=None,

    -)[source] +)[source]

    Get value of broadcastables argument to aesara_code() from keyword arguments to aesara_function().

    Included for backwards compatibility.

    @@ -3087,7 +3087,7 @@

    Fortran Printing
    -sympy.printing.gtk.print_gtk(x, start_viewer=True)[source]
    +sympy.printing.gtk.print_gtk(x, start_viewer=True)[source]

    Print to Gtkmathview, a gtk widget capable of rendering MathML.

    Needs libgtkmathview-bin

    @@ -3099,7 +3099,7 @@

    Fortran Printingsympy.utilities.lambdify.lambdify() function.

    -class sympy.printing.lambdarepr.LambdaPrinter(settings=None)[source]
    +class sympy.printing.lambdarepr.LambdaPrinter(settings=None)[source]

    This printer converts expressions into strings that can be used by lambdify.

    @@ -3111,7 +3111,7 @@

    Fortran Printing
    -sympy.printing.lambdarepr.lambdarepr(expr, **settings)[source]
    +sympy.printing.lambdarepr.lambdarepr(expr, **settings)[source]

    Returns a string usable for lambdifying.

    @@ -3129,7 +3129,7 @@

    Fortran Printing
    -class sympy.printing.latex.LatexPrinter(settings=None)[source]
    +class sympy.printing.latex.LatexPrinter(settings=None)[source]
    printmethod: str = '_latex'
    @@ -3137,7 +3137,7 @@

    Fortran Printing
    -parenthesize_super(s)[source]
    +parenthesize_super(s)[source]

    Protect superscripts in s

    If the parenthesize_super option is set, protect with parentheses, else wrap in braces.

    @@ -3440,7 +3440,7 @@

    Fortran Printing
    -sympy.printing.latex.print_latex(expr, **settings)[source]
    +sympy.printing.latex.print_latex(expr, **settings)[source]

    Prints LaTeX representation of the given expression. Takes the same settings as latex().

    @@ -3452,12 +3452,12 @@

    Fortran Printinghttps://www.w3.org/TR/MathML2

    -class sympy.printing.mathml.MathMLPrinterBase(settings=None)[source]
    +class sympy.printing.mathml.MathMLPrinterBase(settings=None)[source]

    Contains common code required for MathMLContentPrinter and MathMLPresentationPrinter.

    -doprint(expr)[source]
    +doprint(expr)[source]

    Prints the expression as MathML.

    @@ -3465,7 +3465,7 @@

    Fortran Printing
    -class sympy.printing.mathml.MathMLContentPrinter(settings=None)[source]
    +class sympy.printing.mathml.MathMLContentPrinter(settings=None)[source]

    Prints an expression to the Content MathML markup language.

    References: https://www.w3.org/TR/MathML2/chapter4.html

    @@ -3475,7 +3475,7 @@

    Fortran Printing
    -mathml_tag(e)[source]
    +mathml_tag(e)[source]

    Returns the MathML tag for an expression.

    @@ -3483,7 +3483,7 @@

    Fortran Printing
    -class sympy.printing.mathml.MathMLPresentationPrinter(settings=None)[source]
    +class sympy.printing.mathml.MathMLPresentationPrinter(settings=None)[source]

    Prints an expression to the Presentation MathML markup language.

    References: https://www.w3.org/TR/MathML2/chapter3.html

    @@ -3493,7 +3493,7 @@

    Fortran Printing
    -mathml_tag(e)[source]
    +mathml_tag(e)[source]

    Returns the MathML tag for an expression.

    @@ -3530,7 +3530,7 @@

    Fortran Printing
    -sympy.printing.mathml.print_mathml(expr, printer='content', **settings)[source]
    +sympy.printing.mathml.print_mathml(expr, printer='content', **settings)[source]

    Prints a pretty representation of the MathML code for expr. If printer is presentation then prints Presentation MathML else prints content MathML.

    Examples

    @@ -3560,13 +3560,13 @@

    Fortran Printing
    -class sympy.printing.pycode.MpmathPrinter(settings=None)[source]
    +class sympy.printing.pycode.MpmathPrinter(settings=None)[source]

    Lambda printer for mpmath which maintains precision for floats

    -sympy.printing.pycode.pycode(expr, **settings)[source]
    +sympy.printing.pycode.pycode(expr, **settings)[source]

    Converts an expr to a string of Python code

    Parameters:
    @@ -3628,7 +3628,7 @@

    Fortran Printingstr() or print().

    -class sympy.printing.repr.ReprPrinter(settings=None)[source]
    +class sympy.printing.repr.ReprPrinter(settings=None)[source]
    printmethod: str = '_sympyrepr'
    @@ -3636,13 +3636,13 @@

    Fortran Printing
    -emptyPrinter(expr)[source]
    +emptyPrinter(expr)[source]

    The fallback printer.

    -reprify(args, sep)[source]
    +reprify(args, sep)[source]

    Prints each item in \(args\) and joins them with \(sep\).

    @@ -3660,7 +3660,7 @@

    Fortran Printing
    -class sympy.printing.str.StrPrinter(settings=None)[source]
    +class sympy.printing.str.StrPrinter(settings=None)[source]
    printmethod: str = '_sympystr'
    @@ -3730,7 +3730,7 @@

    Fortran Printing
    -sympy.printing.tree.pprint_nodes(subtrees)[source]
    +sympy.printing.tree.pprint_nodes(subtrees)[source]

    Prettyprints systems of nodes.

    Examples

    >>> from sympy.printing.tree import pprint_nodes
    @@ -3745,7 +3745,7 @@ 

    Fortran Printing
    -sympy.printing.tree.print_node(node, assumptions=True)[source]
    +sympy.printing.tree.print_node(node, assumptions=True)[source]

    Returns information about the “node”.

    This includes class name, string representation and assumptions.

    @@ -3760,7 +3760,7 @@

    Fortran Printing
    -sympy.printing.tree.tree(node, assumptions=True)[source]
    +sympy.printing.tree.tree(node, assumptions=True)[source]

    Returns a tree representation of “node” as a string.

    It uses print_node() together with pprint_nodes() on node.args recursively.

    @@ -3784,7 +3784,7 @@

    Fortran Printing
    -sympy.printing.tree.print_tree(node, assumptions=True)[source]
    +sympy.printing.tree.print_tree(node, assumptions=True)[source]

    Prints a tree representation of “node”.

    Parameters:
    @@ -3885,7 +3885,7 @@

    Preview
    **latex_settings,

    -)[source] +)[source]

    View expression or LaTeX markup in PNG, DVI, PostScript or PDF form.

    If the expr argument is an expression, it will be exported to LaTeX and then compiled using the available TeX distribution. The first argument, @@ -3984,7 +3984,7 @@

    Preview

    Implementation - Helper Classes/Functions

    -sympy.printing.conventions.split_super_sub(text)[source]
    +sympy.printing.conventions.split_super_sub(text)[source]

    Split a symbol name into a name, superscripts and subscripts

    The first part of the symbol name is considered to be its actual ‘name’, followed by super- and subscripts. Each superscript is @@ -4008,7 +4008,7 @@

    Preview¶ easily translated to C or Fortran.

    -class sympy.printing.codeprinter.CodePrinter(settings=None)[source]
    +class sympy.printing.codeprinter.CodePrinter(settings=None)[source]

    The base class for code-printing subclasses.

    @@ -4017,7 +4017,7 @@

    Preview
    -doprint(expr, assign_to=None)[source]
    +doprint(expr, assign_to=None)[source]

    Print the expression as code.

    Parameters:
    @@ -4038,7 +4038,7 @@

    Preview
    -exception sympy.printing.codeprinter.AssignmentError[source]
    +exception sympy.printing.codeprinter.AssignmentError[source]

    Raised if an assignment variable for a loop is missing.

    @@ -4070,7 +4070,7 @@

    Preview
    -sympy.printing.precedence.precedence(item)[source]
    +sympy.printing.precedence.precedence(item)[source]

    Returns the precedence of a given object.

    This is the precedence for StrPrinter.

    @@ -4081,38 +4081,38 @@

    Preview

    Pretty-Printing Implementation Helpers

    -sympy.printing.pretty.pretty_symbology.U(name)[source]
    +sympy.printing.pretty.pretty_symbology.U(name)[source]

    Get a unicode character by name or, None if not found.

    This exists because older versions of Python use older unicode databases.

    -sympy.printing.pretty.pretty_symbology.pretty_use_unicode(flag=None)[source]
    +sympy.printing.pretty.pretty_symbology.pretty_use_unicode(flag=None)[source]

    Set whether pretty-printer should use unicode by default

    -sympy.printing.pretty.pretty_symbology.pretty_try_use_unicode()[source]
    +sympy.printing.pretty.pretty_symbology.pretty_try_use_unicode()[source]

    See if unicode output is available and leverage it if possible

    -sympy.printing.pretty.pretty_symbology.xstr(*args)[source]
    +sympy.printing.pretty.pretty_symbology.xstr(*args)[source]

    The following two functions return the Unicode version of the inputted Greek letter.

    -sympy.printing.pretty.pretty_symbology.g(l)[source]
    +sympy.printing.pretty.pretty_symbology.g(l)[source]
    -sympy.printing.pretty.pretty_symbology.G(l)[source]
    +sympy.printing.pretty.pretty_symbology.G(l)[source]
    @@ -4148,21 +4148,21 @@

    Preview

    The following functions return Unicode vertical objects.

    -sympy.printing.pretty.pretty_symbology.xobj(symb, length)[source]
    +sympy.printing.pretty.pretty_symbology.xobj(symb, length)[source]

    Construct spatial object of given length.

    return: [] of equal-length strings

    -sympy.printing.pretty.pretty_symbology.vobj(symb, height)[source]
    +sympy.printing.pretty.pretty_symbology.vobj(symb, height)[source]

    Construct vertical object of a given height

    see: xobj

    -sympy.printing.pretty.pretty_symbology.hobj(symb, width)[source]
    +sympy.printing.pretty.pretty_symbology.hobj(symb, width)[source]

    Construct horizontal object of a given width

    see: xobj

    @@ -4175,7 +4175,7 @@

    Preview
    -sympy.printing.pretty.pretty_symbology.VF(txt)[source]
    +sympy.printing.pretty.pretty_symbology.VF(txt)[source]
    @@ -4186,7 +4186,7 @@

    Preview

    The following constants/functions are for rendering atoms and symbols.

    -sympy.printing.pretty.pretty_symbology.xsym(sym)[source]
    +sympy.printing.pretty.pretty_symbology.xsym(sym)[source]

    get symbology for a ‘character’

    @@ -4197,19 +4197,19 @@

    Preview
    -sympy.printing.pretty.pretty_symbology.pretty_atom(atom_name, default=None, printer=None)[source]
    +sympy.printing.pretty.pretty_symbology.pretty_atom(atom_name, default=None, printer=None)[source]

    return pretty representation of an atom

    -sympy.printing.pretty.pretty_symbology.pretty_symbol(symb_name, bold_name=False)[source]
    +sympy.printing.pretty.pretty_symbology.pretty_symbol(symb_name, bold_name=False)[source]

    return pretty representation of a symbol

    -sympy.printing.pretty.pretty_symbology.annotated(letter)[source]
    +sympy.printing.pretty.pretty_symbology.annotated(letter)[source]

    Return a stylised drawing of the letter letter, together with information on how to put annotations (super- and subscripts to the left and to the right) on it.

    @@ -4235,12 +4235,12 @@

    Preview

    -class sympy.printing.pretty.stringpict.stringPict(s, baseline=0)[source]
    +class sympy.printing.pretty.stringpict.stringPict(s, baseline=0)[source]

    An ASCII picture. The pictures are represented as a list of equal length strings.

    -above(*args)[source]
    +above(*args)[source]

    Put pictures above this picture. Returns string, baseline arguments for stringPict. Baseline is baseline of bottom picture.

    @@ -4248,7 +4248,7 @@

    Preview
    -below(*args)[source]
    +below(*args)[source]

    Put pictures under this picture. Returns string, baseline arguments for stringPict. Baseline is baseline of top picture

    @@ -4265,26 +4265,26 @@

    Preview
    -height()[source]
    +height()[source]

    The height of the picture in characters.

    -left(*args)[source]
    +left(*args)[source]

    Put pictures (left to right) at left. Returns string, baseline arguments for stringPict.

    -leftslash()[source]
    +leftslash()[source]

    Precede object by a slash of the proper size.

    -static next(*args)[source]
    +static next(*args)[source]

    Put a string of stringPicts next to each other. Returns string, baseline arguments for stringPict.

    @@ -4299,7 +4299,7 @@

    Preview
    ifascii_nougly=False,

    -)[source] +)[source]

    Put parentheses around self. Returns string, baseline arguments for stringPict.

    left or right can be None or empty string which means ‘no paren from @@ -4308,7 +4308,7 @@

    Preview
    -render(*args, **kwargs)[source]
    +render(*args, **kwargs)[source]

    Return the string form of self.

    Unless the argument line_break is set to False, it will break the expression in a form that can be printed @@ -4317,7 +4317,7 @@

    Preview
    -right(*args)[source]
    +right(*args)[source]

    Put pictures next to this one. Returns string, baseline arguments for stringPict. (Multiline) strings are allowed, and are given a baseline of 0.

    @@ -4333,14 +4333,14 @@

    Preview
    -root(n=None)[source]
    +root(n=None)[source]

    Produce a nice root symbol. Produces ugly results for big n inserts.

    -static stack(*args)[source]
    +static stack(*args)[source]

    Put pictures on top of each other, from top to bottom. Returns string, baseline arguments for stringPict. @@ -4353,13 +4353,13 @@

    Preview
    -terminal_width()[source]
    +terminal_width()[source]

    Return the terminal width if possible, otherwise return 0.

    -width()[source]
    +width()[source]

    The width of the picture in characters.

    @@ -4367,7 +4367,7 @@

    Preview
    -class sympy.printing.pretty.stringpict.prettyForm(s, baseline=0, binding=0, unicode=None)[source]
    +class sympy.printing.pretty.stringpict.prettyForm(s, baseline=0, binding=0, unicode=None)[source]

    Extension of the stringPict class that knows about basic math applications, optimizing double minus signs.

    “Binding” is interpreted as follows:

    @@ -4385,7 +4385,7 @@

    Preview

    -static apply(function, *args)[source]
    +static apply(function, *args)[source]

    Functions of one or more variables.

    @@ -4412,7 +4412,7 @@

    dotprint
    **kwargs,

    -)[source] +)[source]

    DOT description of a SymPy expression tree

    Parameters:
    diff --git a/dev/modules/rewriting.html b/dev/modules/rewriting.html index 1f5dfc41d63..a51e1cfa72d 100644 --- a/dev/modules/rewriting.html +++ b/dev/modules/rewriting.html @@ -917,7 +917,7 @@

    Common Subexpression Detection and Collectionlist=True,

    -)[source] +)[source]

    Perform common subexpression elimination on an expression.

    Parameters:
    diff --git a/dev/modules/series/formal.html b/dev/modules/series/formal.html index e7be7c4b7ac..b7490d5ac4f 100644 --- a/dev/modules/series/formal.html +++ b/dev/modules/series/formal.html @@ -806,7 +806,7 @@

    Formal Power Series
    -class sympy.series.formal.FormalPowerSeries(*args)[source]
    +class sympy.series.formal.FormalPowerSeries(*args)[source]

    Represents Formal Power Series of a function.

    Explanation

    No computation is performed. This class should only to be used to represent @@ -818,7 +818,7 @@

    Formal Power Series
    -coeff_bell(n)[source]
    +coeff_bell(n)[source]

    self.coeff_bell(n) returns a sequence of Bell polynomials of the second kind. Note that n should be a integer.

    The second kind of Bell polynomials (are sometimes called “partial” Bell @@ -844,7 +844,7 @@

    Formal Power Series
    -compose(other, x=None, n=6)[source]
    +compose(other, x=None, n=6)[source]

    Returns the truncated terms of the formal power series of the composed function, up to specified n.

    @@ -900,7 +900,7 @@

    Formal Power Series
    -integrate(x=None, **kwargs)[source]
    +integrate(x=None, **kwargs)[source]

    Integrate Formal Power Series.

    Examples

    >>> from sympy import fps, sin, integrate
    @@ -916,7 +916,7 @@ 

    Formal Power Series
    -inverse(x=None, n=6)[source]
    +inverse(x=None, n=6)[source]

    Returns the truncated terms of the inverse of the formal power series, up to specified n.

    @@ -966,7 +966,7 @@

    Formal Power Series
    -polynomial(n=6)[source]
    +polynomial(n=6)[source]

    Truncated series as polynomial.

    Explanation

    Returns series expansion of f upto order O(x**n) @@ -975,7 +975,7 @@

    Formal Power Series
    -product(other, x=None, n=6)[source]
    +product(other, x=None, n=6)[source]

    Multiplies two Formal Power Series, using discrete convolution and return the truncated terms upto specified order.

    @@ -1006,7 +1006,7 @@

    Formal Power Series
    -truncate(n=6)[source]
    +truncate(n=6)[source]

    Truncated series.

    Explanation

    Returns truncated series expansion of f upto @@ -1031,7 +1031,7 @@

    Formal Power Seriesfull=False,

    -)[source] +)[source]

    Generates Formal Power Series of f.

    Parameters:
    @@ -1119,7 +1119,7 @@

    Formal Power Seriesfull=False,

    -)[source] +)[source]

    Computes the formula for Formal Power Series of a function.

    Parameters:
    @@ -1189,7 +1189,7 @@

    Formal Power Series
    -class sympy.series.formal.FormalPowerSeriesCompose(*args)[source]
    +class sympy.series.formal.FormalPowerSeriesCompose(*args)[source]

    Represents the composed formal power series of two functions.

    Explanation

    No computation is performed. Terms are calculated using a term by term logic, @@ -1214,7 +1214,7 @@

    Formal Power Series
    -class sympy.series.formal.FormalPowerSeriesInverse(*args)[source]
    +class sympy.series.formal.FormalPowerSeriesInverse(*args)[source]

    Represents the Inverse of a formal power series.

    Explanation

    No computation is performed. Terms are calculated using a term by term logic, @@ -1237,7 +1237,7 @@

    Formal Power Series
    -class sympy.series.formal.FormalPowerSeriesProduct(*args)[source]
    +class sympy.series.formal.FormalPowerSeriesProduct(*args)[source]

    Represents the product of two formal power series of two functions.

    Explanation

    No computation is performed. Terms are calculated using a term by term logic, @@ -1260,7 +1260,7 @@

    Formal Power Series
    -class sympy.series.formal.FiniteFormalPowerSeries(*args)[source]
    +class sympy.series.formal.FiniteFormalPowerSeries(*args)[source]

    Base Class for Product, Compose and Inverse classes

    @@ -1268,7 +1268,7 @@

    Formal Power Series

    -sympy.series.formal.rational_independent(terms, x)[source]
    +sympy.series.formal.rational_independent(terms, x)[source]

    Returns a list of all the rationally independent terms.

    Examples

    >>> from sympy import sin, cos
    @@ -1286,7 +1286,7 @@ 

    Rational Algorithm
    -sympy.series.formal.rational_algorithm(f, x, k, order=4, full=False)[source]
    +sympy.series.formal.rational_algorithm(f, x, k, order=4, full=False)[source]

    Rational algorithm for computing formula of coefficients of Formal Power Series of a function.

    @@ -1362,7 +1362,7 @@

    Rational Algorithm

    -sympy.series.formal.simpleDE(f, x, g, order=4)[source]
    +sympy.series.formal.simpleDE(f, x, g, order=4)[source]

    Generates simple DE.

    Explanation

    DE is of the form

    @@ -1378,7 +1378,7 @@

    Hypergeometric Algorithm
    -sympy.series.formal.exp_re(DE, r, k)[source]
    +sympy.series.formal.exp_re(DE, r, k)[source]

    Converts a DE with constant coefficients (explike) into a RE.

    Explanation

    Performs the substitution:

    @@ -1408,7 +1408,7 @@

    Hypergeometric Algorithm
    -sympy.series.formal.hyper_re(DE, r, k)[source]
    +sympy.series.formal.hyper_re(DE, r, k)[source]

    Converts a DE into a RE.

    Explanation

    Performs the substitution:

    @@ -1438,7 +1438,7 @@

    Hypergeometric Algorithm
    -sympy.series.formal.rsolve_hypergeometric(f, x, P, Q, k, m)[source]
    +sympy.series.formal.rsolve_hypergeometric(f, x, P, Q, k, m)[source]

    Solves RE of hypergeometric type.

    Returns:
    @@ -1494,7 +1494,7 @@

    Hypergeometric Algorithm
    -sympy.series.formal.solve_de(f, x, DE, order, g, k)[source]
    +sympy.series.formal.solve_de(f, x, DE, order, g, k)[source]

    Solves the DE.

    Returns:
    @@ -1530,7 +1530,7 @@

    Hypergeometric Algorithm
    -sympy.series.formal.hyper_algorithm(f, x, k, order=4)[source]
    +sympy.series.formal.hyper_algorithm(f, x, k, order=4)[source]

    Hypergeometric algorithm for computing Formal Power Series.

    Explanation

    diff --git a/dev/modules/series/fourier.html b/dev/modules/series/fourier.html index f9f55e8b229..7cbb8bfadfe 100644 --- a/dev/modules/series/fourier.html +++ b/dev/modules/series/fourier.html @@ -806,7 +806,7 @@

    Fourier Series
    -class sympy.series.fourier.FourierSeries(*args)[source]
    +class sympy.series.fourier.FourierSeries(*args)[source]

    Represents Fourier sine/cosine series.

    Explanation

    This class only represents a fourier series. @@ -819,7 +819,7 @@

    Fourier Series
    -scale(s)[source]
    +scale(s)[source]

    Scale the function by a term independent of x.

    Explanation

    f(x) -> s * f(x)

    @@ -837,7 +837,7 @@

    Fourier Series
    -scalex(s)[source]
    +scalex(s)[source]

    Scale x by a term independent of x.

    Explanation

    f(x) -> f(s*x)

    @@ -855,7 +855,7 @@

    Fourier Series
    -shift(s)[source]
    +shift(s)[source]

    Shift the function by a term independent of x.

    Explanation

    f(x) -> f(x) + s

    @@ -873,7 +873,7 @@

    Fourier Series
    -shiftx(s)[source]
    +shiftx(s)[source]

    Shift x by a term independent of x.

    Explanation

    f(x) -> f(x + s)

    @@ -891,7 +891,7 @@

    Fourier Series
    -sigma_approximation(n=3)[source]
    +sigma_approximation(n=3)[source]

    Return \(\sigma\)-approximation of Fourier series with respect to order n.

    @@ -958,7 +958,7 @@

    Fourier Series
    -truncate(n=3)[source]
    +truncate(n=3)[source]

    Return the first n nonzero terms of the series.

    If n is None return an iterator.

    @@ -993,7 +993,7 @@

    Fourier Series
    -sympy.series.fourier.fourier_series(f, limits=None, finite=True)[source]
    +sympy.series.fourier.fourier_series(f, limits=None, finite=True)[source]

    Computes the Fourier trigonometric series expansion.

    Parameters:
    diff --git a/dev/modules/series/limitseq.html b/dev/modules/series/limitseq.html index 25a9d1e7c2d..345c043a185 100644 --- a/dev/modules/series/limitseq.html +++ b/dev/modules/series/limitseq.html @@ -806,7 +806,7 @@

    Limits of Sequences
    -sympy.series.limitseq.difference_delta(expr, n=None, step=1)[source]
    +sympy.series.limitseq.difference_delta(expr, n=None, step=1)[source]

    Difference Operator.

    Explanation

    Discrete analog of differential operator. Given a sequence x[n], @@ -831,7 +831,7 @@

    Limits of Sequences
    -sympy.series.limitseq.dominant(expr, n)[source]
    +sympy.series.limitseq.dominant(expr, n)[source]

    Finds the dominant term in a sum, that is a term that dominates every other term.

    Explanation

    @@ -857,7 +857,7 @@

    Limits of Sequences
    -sympy.series.limitseq.limit_seq(expr, n=None, trials=5)[source]
    +sympy.series.limitseq.limit_seq(expr, n=None, trials=5)[source]

    Finds the limit of a sequence as index n tends to infinity.

    Parameters:
    diff --git a/dev/modules/series/sequences.html b/dev/modules/series/sequences.html index a8b6bd520f0..1f50f6c73c5 100644 --- a/dev/modules/series/sequences.html +++ b/dev/modules/series/sequences.html @@ -806,7 +806,7 @@

    Sequences
    -sympy.series.sequences.sequence(seq, limits=None)[source]
    +sympy.series.sequences.sequence(seq, limits=None)[source]

    Returns appropriate sequence object.

    Explanation

    If seq is a SymPy sequence, returns SeqPer object @@ -830,17 +830,17 @@

    Sequences

    -class sympy.series.sequences.SeqBase(*args)[source]
    +class sympy.series.sequences.SeqBase(*args)[source]

    Base class for sequences

    -coeff(pt)[source]
    +coeff(pt)[source]

    Returns the coefficient at point pt

    -coeff_mul(other)[source]
    +coeff_mul(other)[source]

    Should be used when other is not a sequence. Should be defined to define custom behaviour.

    Examples

    @@ -864,7 +864,7 @@

    Sequences Basegfvar=None,

    -)[source] +)[source]

    Finds the shortest linear recurrence that satisfies the first n terms of sequence of order \(\leq\) n/2 if possible. If d is specified, find shortest linear recurrence of order @@ -954,7 +954,7 @@

    Sequences Base

    -class sympy.series.sequences.SeqFormula(formula, limits=None)[source]
    +class sympy.series.sequences.SeqFormula(formula, limits=None)[source]

    Represents sequence based on a formula.

    Elements are generated using a formula.

    Examples

    @@ -991,7 +991,7 @@

    Elementary Sequences
    -coeff_mul(coeff)[source]
    +coeff_mul(coeff)[source]

    See docstring of SeqBase.coeff_mul

    @@ -999,7 +999,7 @@

    Elementary Sequences
    -class sympy.series.sequences.SeqPer(periodical, limits=None)[source]
    +class sympy.series.sequences.SeqPer(periodical, limits=None)[source]

    Represents a periodic sequence.

    The elements are repeated after a given period.

    Examples

    @@ -1045,7 +1045,7 @@

    Elementary Sequences
    -coeff_mul(coeff)[source]
    +coeff_mul(coeff)[source]

    See docstring of SeqBase.coeff_mul

    @@ -1056,7 +1056,7 @@

    Elementary SequencesSingleton Sequences

    -class sympy.series.sequences.EmptySequence[source]
    +class sympy.series.sequences.EmptySequence[source]

    Represents an empty sequence.

    The empty sequence is also available as a singleton as S.EmptySequence.

    @@ -1075,7 +1075,7 @@

    Singleton Sequences
    -coeff_mul(coeff)[source]
    +coeff_mul(coeff)[source]

    See docstring of SeqBase.coeff_mul

    @@ -1086,7 +1086,7 @@

    Singleton Sequences

    -class sympy.series.sequences.SeqAdd(*args, **kwargs)[source]
    +class sympy.series.sequences.SeqAdd(*args, **kwargs)[source]

    Represents term-wise addition of sequences.

    Rules:
    -)[source] +)[source]

    A finite degree recursive sequence.

    Parameters:
    diff --git a/dev/modules/series/series.html b/dev/modules/series/series.html index cd349c348a6..ca2d8806639 100644 --- a/dev/modules/series/series.html +++ b/dev/modules/series/series.html @@ -808,7 +808,7 @@

    LimitsThe main purpose of this module is the computation of limits.

    -sympy.series.limits.limit(e, z, z0, dir='+')[source]
    +sympy.series.limits.limit(e, z, z0, dir='+')[source]

    Computes the limit of e(z) at the point z0.

    Parameters:
    @@ -862,7 +862,7 @@

    Limits
    -class sympy.series.limits.Limit(e, z, z0, dir='+')[source]
    +class sympy.series.limits.Limit(e, z, z0, dir='+')[source]

    Represents an unevaluated limit.

    Examples

    >>> from sympy import Limit, sin
    @@ -875,7 +875,7 @@ 

    Limits
    -doit(**hints)[source]
    +doit(**hints)[source]

    Evaluates the limit.

    Parameters:
    @@ -971,7 +971,7 @@

    Notes

    Reference

    -sympy.series.gruntz.gruntz(e, z, z0, dir='+')[source]
    +sympy.series.gruntz.gruntz(e, z, z0, dir='+')[source]

    Compute the limit of e(z) at the point z0 using the Gruntz algorithm.

    Explanation

    z0 can be any expression, including oo and -oo.

    @@ -985,13 +985,13 @@

    Reference
    -sympy.series.gruntz.compare(a, b, x)[source]
    +sympy.series.gruntz.compare(a, b, x)[source]

    Returns “<” if a<b, “=” for a == b, “>” for a>b

    -sympy.series.gruntz.rewrite(e, Omega, x, wsym)[source]
    +sympy.series.gruntz.rewrite(e, Omega, x, wsym)[source]

    e(x) … the function Omega … the mrv set wsym … the symbol which is going to be used for w

    @@ -1001,7 +1001,7 @@

    Reference
    -sympy.series.gruntz.build_expression_tree(Omega, rewrites)[source]
    +sympy.series.gruntz.build_expression_tree(Omega, rewrites)[source]

    Helper function for rewrite.

    We need to sort Omega (mrv set) so that we replace an expression before we replace any expression in terms of which it has to be rewritten:

    @@ -1017,26 +1017,26 @@

    Reference
    -sympy.series.gruntz.mrv_leadterm(e, x)[source]
    +sympy.series.gruntz.mrv_leadterm(e, x)[source]

    Returns (c0, e0) for e.

    -sympy.series.gruntz.calculate_series(e, x, logx=None)[source]
    +sympy.series.gruntz.calculate_series(e, x, logx=None)[source]

    Calculates at least one term of the series of e in x.

    This is a place that fails most often, so it is in its own function.

    -sympy.series.gruntz.limitinf(e, x)[source]
    +sympy.series.gruntz.limitinf(e, x)[source]

    Limit e(x) for x-> oo.

    -sympy.series.gruntz.sign(e, x)[source]
    +sympy.series.gruntz.sign(e, x)[source]

    Returns a sign of an expression e(x) for x->oo.

    e >  0 for x sufficiently large ...  1
     e == 0 for x sufficiently large ...  0
    @@ -1052,14 +1052,14 @@ 

    Reference
    -sympy.series.gruntz.mrv(e, x)[source]
    +sympy.series.gruntz.mrv(e, x)[source]

    Returns a SubsSet of most rapidly varying (mrv) subexpressions of ‘e’, and e rewritten in terms of these

    -sympy.series.gruntz.mrv_max1(f, g, exps, x)[source]
    +sympy.series.gruntz.mrv_max1(f, g, exps, x)[source]

    Computes the maximum of two sets of expressions f and g, which are in the same comparability class, i.e. mrv_max1() compares (two elements of) f and g and returns the set, which is in the higher comparability class @@ -1069,7 +1069,7 @@

    Reference
    -sympy.series.gruntz.mrv_max3(f, expsf, g, expsg, union, expsboth, x)[source]
    +sympy.series.gruntz.mrv_max3(f, expsf, g, expsg, union, expsboth, x)[source]

    Computes the maximum of two sets of expressions f and g, which are in the same comparability class, i.e. max() compares (two elements of) f and g and returns either (f, expsf) [if f is larger], (g, expsg) @@ -1078,7 +1078,7 @@

    Reference
    -class sympy.series.gruntz.SubsSet[source]
    +class sympy.series.gruntz.SubsSet[source]

    Stores (expr, dummy) pairs, and how to rewrite expr-s.

    Explanation

    The gruntz algorithm needs to rewrite certain expressions in term of a new @@ -1122,25 +1122,25 @@

    Reference
    -copy()[source]
    +copy()[source]

    Create a shallow copy of SubsSet

    -do_subs(e)[source]
    +do_subs(e)[source]

    Substitute the variables with expressions

    -meets(s2)[source]
    +meets(s2)[source]

    Tell whether or not self and s2 have non-empty intersection

    -union(s2, exps=None)[source]
    +union(s2, exps=None)[source]

    Compute the union of self and s2, adjusting exps

    @@ -1167,7 +1167,7 @@

    Examples

    Reference

    -sympy.series.series.series(expr, x=None, x0=0, n=6, dir='+')[source]
    +sympy.series.series.series(expr, x=None, x0=0, n=6, dir='+')[source]

    Series expansion of expr around point \(x = x0\).

    Parameters:
    @@ -1256,7 +1256,7 @@

    ExamplesReference

    -class sympy.series.order.Order(expr, *args, **kwargs)[source]
    +class sympy.series.order.Order(expr, *args, **kwargs)[source]

    Represents the limiting behavior of some function.

    Explanation

    The order of a function characterizes the function based on the limiting @@ -1364,7 +1364,7 @@

    Reference
    -contains(expr)[source]
    +contains(expr)[source]

    Return True if expr belongs to Order(self.expr, *self.variables). Return False if self belongs to expr. Return None if the inclusion relation cannot be determined @@ -1382,7 +1382,7 @@

    Series Acceleration

    -sympy.series.acceleration.richardson(A, k, n, N)[source]
    +sympy.series.acceleration.richardson(A, k, n, N)[source]

    Calculate an approximation for lim k->oo A(k) using Richardson extrapolation with the terms A(n), A(n+1), …, A(n+N+1). Choosing N ~= 2*n often gives good results.

    @@ -1428,7 +1428,7 @@

    Reference
    -sympy.series.acceleration.shanks(A, k, n, m=1)[source]
    +sympy.series.acceleration.shanks(A, k, n, m=1)[source]

    Calculate an approximation for lim k->oo A(k) using the n-term Shanks transformation S(A)(n). With m > 1, calculate the m-fold recursive Shanks transformation S(S(…S(A)…))(n).

    @@ -1458,7 +1458,7 @@

    Residues

    Reference

    -sympy.series.residues.residue(expr, x, x0)[source]
    +sympy.series.residues.residue(expr, x, x0)[source]

    Finds the residue of expr at the point x=x0.

    The residue is defined as the coefficient of 1/(x-x0) in the power series expansion about x=x0.

    diff --git a/dev/modules/sets.html b/dev/modules/sets.html index 32d21d8dcdb..d00a76f233d 100644 --- a/dev/modules/sets.html +++ b/dev/modules/sets.html @@ -807,7 +807,7 @@
    Documentation Version

    Basic Sets

    -class sympy.sets.sets.Set(*args)[source]
    +class sympy.sets.sets.Set(*args)[source]

    The base class for any kind of set.

    Explanation

    This is not meant to be used directly as a container of items. It does not @@ -860,7 +860,7 @@

    Documentation Version
    -complement(universe)[source]
    +complement(universe)[source]

    The complement of ‘self’ w.r.t the given universe.

    Examples

    >>> from sympy import Interval, S
    @@ -876,7 +876,7 @@ 
    Documentation Version
    -contains(other)[source]
    +contains(other)[source]

    Returns a SymPy value indicating whether other is contained in self: true if it is, false if it is not, else an unevaluated Contains expression (or, as in the case of @@ -943,7 +943,7 @@

    Documentation Version
    -intersect(other)[source]
    +intersect(other)[source]

    Returns the intersection of ‘self’ and ‘other’.

    Examples

    >>> from sympy import Interval
    @@ -964,7 +964,7 @@ 
    Documentation Version
    -intersection(other)[source]
    +intersection(other)[source]

    Alias for intersect()

    @@ -986,7 +986,7 @@
    Documentation Version
    -is_disjoint(other)[source]
    +is_disjoint(other)[source]

    Returns True if self and other are disjoint.

    Examples

    >>> from sympy import Interval
    @@ -1026,7 +1026,7 @@ 
    Documentation Version
    -is_proper_subset(other)[source]
    +is_proper_subset(other)[source]

    Returns True if self is a proper subset of other.

    Examples

    >>> from sympy import Interval
    @@ -1040,7 +1040,7 @@ 
    Documentation Version
    -is_proper_superset(other)[source]
    +is_proper_superset(other)[source]

    Returns True if self is a proper superset of other.

    Examples

    >>> from sympy import Interval
    @@ -1054,7 +1054,7 @@ 
    Documentation Version
    -is_subset(other)[source]
    +is_subset(other)[source]

    Returns True if self is a subset of other.

    Examples

    >>> from sympy import Interval
    @@ -1068,7 +1068,7 @@ 
    Documentation Version
    -is_superset(other)[source]
    +is_superset(other)[source]

    Returns True if self is a superset of other.

    Examples

    >>> from sympy import Interval
    @@ -1082,19 +1082,19 @@ 
    Documentation Version
    -isdisjoint(other)[source]
    +isdisjoint(other)[source]

    Alias for is_disjoint()

    -issubset(other)[source]
    +issubset(other)[source]

    Alias for is_subset()

    -issuperset(other)[source]
    +issuperset(other)[source]

    Alias for is_superset()

    @@ -1174,7 +1174,7 @@
    Documentation Version
    -powerset()[source]
    +powerset()[source]

    Find the Power set of self.

    Examples

    >>> from sympy import EmptySet, FiniteSet, Interval
    @@ -1223,7 +1223,7 @@ 
    Documentation Version
    -symmetric_difference(other)[source]
    +symmetric_difference(other)[source]

    Returns symmetric difference of self and other.

    Examples

    >>> from sympy import Interval, S
    @@ -1249,7 +1249,7 @@ 
    Documentation Version
    -union(other)[source]
    +union(other)[source]

    Returns the union of self and other.

    Examples

    As a shortcut it is possible to use the + operator:

    @@ -1275,7 +1275,7 @@
    Documentation Version
    -sympy.sets.sets.imageset(*args)[source]
    +sympy.sets.sets.imageset(*args)[source]

    Return an image of the set under transformation f.

    Explanation

    If this function cannot compute the image, it returns an @@ -1335,7 +1335,7 @@

    Elementary Setsright_open=False,

    -)[source] +)[source]

    Represents a real interval as a Set.

    Usage:

    Returns an interval with end points start and end.

    @@ -1379,19 +1379,19 @@

    Elementary Sets
    -classmethod Lopen(a, b)[source]
    +classmethod Lopen(a, b)[source]

    Return an interval not including the left boundary.

    -classmethod Ropen(a, b)[source]
    +classmethod Ropen(a, b)[source]

    Return an interval not including the right boundary.

    -as_relational(x)[source]
    +as_relational(x)[source]

    Rewrite an interval in terms of inequalities and logic operators.

    @@ -1436,7 +1436,7 @@

    Elementary Sets
    -classmethod open(a, b)[source]
    +classmethod open(a, b)[source]

    Return an interval including neither boundary.

    @@ -1471,7 +1471,7 @@

    Elementary Sets
    -class sympy.sets.sets.FiniteSet(*args, **kwargs)[source]
    +class sympy.sets.sets.FiniteSet(*args, **kwargs)[source]

    Represents a finite set of Sympy expressions.

    Examples

    >>> from sympy import FiniteSet, Symbol, Interval, Naturals0
    @@ -1502,7 +1502,7 @@ 

    Elementary Sets
    -as_relational(symbol)[source]
    +as_relational(symbol)[source]

    Rewrite a FiniteSet in terms of equalities and logic operators.

    @@ -1513,7 +1513,7 @@

    Elementary Sets

    -class sympy.sets.sets.Union(*args, **kwargs)[source]
    +class sympy.sets.sets.Union(*args, **kwargs)[source]

    Represents a union of sets as a Set.

    Examples

    >>> from sympy import Union, Interval
    @@ -1540,7 +1540,7 @@ 

    Compound Sets
    -as_relational(symbol)[source]
    +as_relational(symbol)[source]

    Rewrite a Union in terms of equalities and logic operators.

    @@ -1548,7 +1548,7 @@

    Compound Sets
    -class sympy.sets.sets.Intersection(*args, evaluate=None)[source]
    +class sympy.sets.sets.Intersection(*args, evaluate=None)[source]

    Represents an intersection of sets as a Set.

    Examples

    >>> from sympy import Intersection, Interval
    @@ -1574,7 +1574,7 @@ 

    Compound Sets
    -as_relational(symbol)[source]
    +as_relational(symbol)[source]

    Rewrite an Intersection in terms of equalities and logic operators

    @@ -1582,7 +1582,7 @@

    Compound Sets
    -class sympy.sets.sets.ProductSet(*sets, **assumptions)[source]
    +class sympy.sets.sets.ProductSet(*sets, **assumptions)[source]

    Represents a Cartesian Product of Sets.

    Explanation

    Returns a Cartesian product given several sets as either an iterable @@ -1647,7 +1647,7 @@

    Compound Sets
    -class sympy.sets.sets.Complement(a, b, evaluate=True)[source]
    +class sympy.sets.sets.Complement(a, b, evaluate=True)[source]

    Represents the set difference or relative complement of a set with another set.

    @@ -1674,14 +1674,14 @@

    Compound Sets
    -as_relational(symbol)[source]
    +as_relational(symbol)[source]

    Rewrite a complement in terms of equalities and logic operators

    -static reduce(A, B)[source]
    +static reduce(A, B)[source]

    Simplify a Complement.

    @@ -1689,7 +1689,7 @@

    Compound Sets
    -class sympy.sets.sets.SymmetricDifference(a, b, evaluate=True)[source]
    +class sympy.sets.sets.SymmetricDifference(a, b, evaluate=True)[source]

    Represents the set of elements which are in either of the sets and not in their intersection.

    Examples

    @@ -1711,7 +1711,7 @@

    Compound Sets
    -as_relational(symbol)[source]
    +as_relational(symbol)[source]

    Rewrite a symmetric_difference in terms of equalities and logic operators

    @@ -1720,7 +1720,7 @@

    Compound Sets
    -class sympy.sets.sets.DisjointUnion(*sets)[source]
    +class sympy.sets.sets.DisjointUnion(*sets)[source]

    Represents the disjoint union (also known as the external disjoint union) of a finite number of sets.

    Examples

    @@ -1747,7 +1747,7 @@

    Compound Sets

    -class sympy.sets.sets.EmptySet[source]
    +class sympy.sets.sets.EmptySet[source]

    Represents the empty set. The empty set is available as a singleton as S.EmptySet.

    Examples

    @@ -1775,7 +1775,7 @@

    Singleton Sets
    -class sympy.sets.sets.UniversalSet[source]
    +class sympy.sets.sets.UniversalSet[source]

    Represents the set of all things. The universal set is available as a singleton as S.UniversalSet.

    Examples

    @@ -1806,7 +1806,7 @@

    Singleton Sets

    Special Sets

    -class sympy.sets.fancysets.Rationals[source]
    +class sympy.sets.fancysets.Rationals[source]

    Represents the rational numbers. This set is also available as the singleton S.Rationals.

    Examples

    @@ -1822,7 +1822,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Naturals[source]
    +class sympy.sets.fancysets.Naturals[source]

    Represents the natural numbers (or counting numbers) which are all positive integers starting from 1. This set is also available as the singleton S.Naturals.

    @@ -1854,7 +1854,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Naturals0[source]
    +class sympy.sets.fancysets.Naturals0[source]

    Represents the whole numbers which are all the non-negative integers, inclusive of zero.

    @@ -1870,7 +1870,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Integers[source]
    +class sympy.sets.fancysets.Integers[source]

    Represents all integers: positive, negative and zero. This set is also available as the singleton S.Integers.

    Examples

    @@ -1905,7 +1905,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Reals[source]
    +class sympy.sets.fancysets.Reals[source]

    Represents all real numbers from negative infinity to positive infinity, including all integer, rational and irrational numbers. @@ -1932,7 +1932,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Complexes[source]
    +class sympy.sets.fancysets.Complexes[source]

    The Set of all complex numbers

    Examples

    >>> from sympy import S, I
    @@ -1950,7 +1950,7 @@ 

    Singleton Sets
    -class sympy.sets.fancysets.ImageSet(flambda, *sets)[source]
    +class sympy.sets.fancysets.ImageSet(flambda, *sets)[source]

    Image of a set under a mathematical function. The transformation must be given as a Lambda function which has as many arguments as the elements of the set upon which it operates, e.g. 1 argument @@ -2008,7 +2008,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.Range(*args)[source]
    +class sympy.sets.fancysets.Range(*args)[source]

    Represents a range of integers. Can be called as Range(stop), Range(start, stop), or Range(start, stop, step); when step is not given it defaults to 1.

    @@ -2090,7 +2090,7 @@

    Singleton Sets
    -as_relational(x)[source]
    +as_relational(x)[source]

    Rewrite a Range in terms of equalities and logic operators.

    @@ -2110,7 +2110,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.ComplexRegion(sets, polar=False)[source]
    +class sympy.sets.fancysets.ComplexRegion(sets, polar=False)[source]

    Represents the Set of all Complex Numbers. It can represent a region of Complex Plane in both the standard forms Polar and Rectangular coordinates.

    @@ -2238,7 +2238,7 @@

    Singleton Sets
    -classmethod from_real(sets)[source]
    +classmethod from_real(sets)[source]

    Converts given subset of real numbers to a complex region.

    Examples

    >>> from sympy import Interval, ComplexRegion
    @@ -2291,7 +2291,7 @@ 

    Singleton Sets
    -class sympy.sets.fancysets.CartesianComplexRegion(sets)[source]
    +class sympy.sets.fancysets.CartesianComplexRegion(sets)[source]

    Set representing a square region of the complex plane.

    @@ -2314,7 +2314,7 @@

    Singleton Sets
    -class sympy.sets.fancysets.PolarComplexRegion(sets)[source]
    +class sympy.sets.fancysets.PolarComplexRegion(sets)[source]

    Set representing a polar region of the complex plane.

    @@ -2339,7 +2339,7 @@

    Singleton Sets
    -sympy.sets.fancysets.normalize_theta_set(theta)[source]
    +sympy.sets.fancysets.normalize_theta_set(theta)[source]

    Normalize a Real Set \(theta\) in the interval \([0, 2\pi)\). It returns a normalized value of theta in the Set. For Interval, a maximum of one cycle \([0, 2\pi]\), is returned i.e. for theta equal to \([0, 10\pi]\), @@ -2386,7 +2386,7 @@

    Singleton Sets

    Power sets

    -class sympy.sets.powerset.PowerSet(arg, evaluate=None)[source]
    +class sympy.sets.powerset.PowerSet(arg, evaluate=None)[source]

    A symbolic object representing a power set.

    Parameters:
    @@ -2460,7 +2460,7 @@

    Singleton Setsbase_set=UniversalSet,

    -)[source] +)[source]

    Set of elements which satisfies a given condition.

    @@ -2530,7 +2530,7 @@

    Singleton Sets
    -class sympy.sets.conditionset.Contains(x, s, evaluate=None)[source]
    +class sympy.sets.conditionset.Contains(x, s, evaluate=None)[source]

    Asserts that x is an element of the set S.

    Examples

    >>> from sympy import Symbol, Integer, S, Contains
    @@ -2557,7 +2557,7 @@ 

    Singleton Sets

    -class sympy.sets.conditionset.SetKind(element_kind=None)[source]
    +class sympy.sets.conditionset.SetKind(element_kind=None)[source]

    SetKind is kind for all Sets

    Every instance of Set will have kind SetKind parametrised by the kind of the elements of the Set. The kind of the elements might be diff --git a/dev/modules/simplify/fu.html b/dev/modules/simplify/fu.html index 96284cb96af..dd576d92925 100644 --- a/dev/modules/simplify/fu.html +++ b/dev/modules/simplify/fu.html @@ -972,14 +972,14 @@

    Documentation Version

    Rules

    -sympy.simplify.fu.TR0(rv)[source]
    +sympy.simplify.fu.TR0(rv)[source]

    Simplification of rational polynomials, trying to simplify the expression, e.g. combine things like 3*x + 2*x, etc….

    -sympy.simplify.fu.TR1(rv)[source]
    +sympy.simplify.fu.TR1(rv)[source]

    Replace sec, csc with 1/cos, 1/sin

    Examples

    >>> from sympy.simplify.fu import TR1, sec, csc
    @@ -992,7 +992,7 @@ 

    Rules
    -sympy.simplify.fu.TR2(rv)[source]
    +sympy.simplify.fu.TR2(rv)[source]

    Replace tan and cot with sin/cos and cos/sin

    Examples

    >>> from sympy.simplify.fu import TR2
    @@ -1010,7 +1010,7 @@ 

    Rules
    -sympy.simplify.fu.TR2i(rv, half=False)[source]
    +sympy.simplify.fu.TR2i(rv, half=False)[source]
    Converts ratios involving sin and cos as follows::

    sin(x)/cos(x) -> tan(x) sin(x)/(cos(x) + 1) -> tan(x/2) if half=True

    @@ -1040,7 +1040,7 @@

    Rules
    -sympy.simplify.fu.TR3(rv)[source]
    +sympy.simplify.fu.TR3(rv)[source]

    Induced formula: example sin(-a) = -sin(a)

    Examples

    >>> from sympy.simplify.fu import TR3
    @@ -1059,7 +1059,7 @@ 

    Rules
    -sympy.simplify.fu.TR4(rv)[source]
    +sympy.simplify.fu.TR4(rv)[source]

    Identify values of special angles.

    A= 0 Pi/6 Pi/4 Pi/3 Pi/2

    sin(a) 0 1/2 sqrt(2)/2 sqrt(3)/2 1 @@ -1082,7 +1082,7 @@

    Rules
    -sympy.simplify.fu.TR5(rv, max=4, pow=False)[source]
    +sympy.simplify.fu.TR5(rv, max=4, pow=False)[source]

    Replacement of sin**2 with 1 - cos(x)**2.

    See _TR56 docstring for advanced use of max and pow.

    Examples

    @@ -1101,7 +1101,7 @@

    Rules
    -sympy.simplify.fu.TR6(rv, max=4, pow=False)[source]
    +sympy.simplify.fu.TR6(rv, max=4, pow=False)[source]

    Replacement of cos**2 with 1 - sin(x)**2.

    See _TR56 docstring for advanced use of max and pow.

    Examples

    @@ -1120,7 +1120,7 @@

    Rules
    -sympy.simplify.fu.TR7(rv)[source]
    +sympy.simplify.fu.TR7(rv)[source]

    Lowering the degree of cos(x)**2.

    Examples

    >>> from sympy.simplify.fu import TR7
    @@ -1136,7 +1136,7 @@ 

    Rules
    -sympy.simplify.fu.TR8(rv, first=True)[source]
    +sympy.simplify.fu.TR8(rv, first=True)[source]

    Converting products of cos and/or sin to a sum or difference of cos and or sin terms.

    Examples

    @@ -1154,7 +1154,7 @@

    Rules
    -sympy.simplify.fu.TR9(rv)[source]
    +sympy.simplify.fu.TR9(rv)[source]

    Sum of cos or sin terms as a product of cos or sin.

    Examples

    >>> from sympy.simplify.fu import TR9
    @@ -1177,7 +1177,7 @@ 

    Rules
    -sympy.simplify.fu.TR10(rv, first=True)[source]
    +sympy.simplify.fu.TR10(rv, first=True)[source]

    Separate sums in cos and sin.

    Examples

    >>> from sympy.simplify.fu import TR10
    @@ -1195,7 +1195,7 @@ 

    Rules
    -sympy.simplify.fu.TR10i(rv)[source]
    +sympy.simplify.fu.TR10i(rv)[source]

    Sum of products to function of sum.

    Examples

    >>> from sympy.simplify.fu import TR10i
    @@ -1215,7 +1215,7 @@ 

    Rules
    -sympy.simplify.fu.TR11(rv, base=None)[source]
    +sympy.simplify.fu.TR11(rv, base=None)[source]

    Function of double angle to product. The base argument can be used to indicate what is the un-doubled argument, e.g. if 3*pi/7 is the base then cosine and sine functions with argument 6*pi/7 will be replaced.

    @@ -1257,7 +1257,7 @@

    Rules
    -sympy.simplify.fu.TR12(rv, first=True)[source]
    +sympy.simplify.fu.TR12(rv, first=True)[source]

    Separate sums in tan.

    Examples

    >>> from sympy.abc import x, y
    @@ -1271,7 +1271,7 @@ 

    Rules
    -sympy.simplify.fu.TR12i(rv)[source]
    +sympy.simplify.fu.TR12i(rv)[source]

    Combine tan arguments as (tan(y) + tan(x))/(tan(x)*tan(y) - 1) -> -tan(x + y).

    Examples

    @@ -1294,7 +1294,7 @@

    Rules
    -sympy.simplify.fu.TR13(rv)[source]
    +sympy.simplify.fu.TR13(rv)[source]

    Change products of tan or cot.

    Examples

    >>> from sympy.simplify.fu import TR13
    @@ -1309,7 +1309,7 @@ 

    Rules
    -sympy.simplify.fu.TRmorrie(rv)[source]
    +sympy.simplify.fu.TRmorrie(rv)[source]

    Returns cos(x)*cos(2*x)*…*cos(2**(k-1)*x) -> sin(2**k*x)/(2**k*sin(x))

    Examples

    >>> from sympy.simplify.fu import TRmorrie, TR8, TR3
    @@ -1370,7 +1370,7 @@ 

    Rules
    -sympy.simplify.fu.TR14(rv, first=True)[source]
    +sympy.simplify.fu.TR14(rv, first=True)[source]

    Convert factored powers of sin and cos identities into simpler expressions.

    Examples

    @@ -1392,7 +1392,7 @@

    Rules
    -sympy.simplify.fu.TR15(rv, max=4, pow=False)[source]
    +sympy.simplify.fu.TR15(rv, max=4, pow=False)[source]

    Convert sin(x)**-2 to 1 + cot(x)**2.

    See _TR56 docstring for advanced use of max and pow.

    Examples

    @@ -1407,7 +1407,7 @@

    Rules
    -sympy.simplify.fu.TR16(rv, max=4, pow=False)[source]
    +sympy.simplify.fu.TR16(rv, max=4, pow=False)[source]

    Convert cos(x)**-2 to 1 + tan(x)**2.

    See _TR56 docstring for advanced use of max and pow.

    Examples

    @@ -1422,7 +1422,7 @@

    Rules
    -sympy.simplify.fu.TR111(rv)[source]
    +sympy.simplify.fu.TR111(rv)[source]

    Convert f(x)**-i to g(x)**i where either i is an integer or the base is positive and f, g are: tan, cot; sin, csc; or cos, sec.

    Examples

    @@ -1437,7 +1437,7 @@

    Rules
    -sympy.simplify.fu.TR22(rv, max=4, pow=False)[source]
    +sympy.simplify.fu.TR22(rv, max=4, pow=False)[source]

    Convert tan(x)**2 to sec(x)**2 - 1 and cot(x)**2 to csc(x)**2 - 1.

    See _TR56 docstring for advanced use of max and pow.

    Examples

    @@ -1454,7 +1454,7 @@

    Rules
    -sympy.simplify.fu.TRpower(rv)[source]
    +sympy.simplify.fu.TRpower(rv)[source]

    Convert sin(x)**n and cos(x)**n with positive n to sums.

    Examples

    >>> from sympy.simplify.fu import TRpower
    @@ -1477,7 +1477,7 @@ 

    Rules
    -sympy.simplify.fu.fu(rv, measure=<function <lambda>>)[source]
    +sympy.simplify.fu.fu(rv, measure=<function <lambda>>)[source]

    Attempt to simplify expression by using transformation rules given in the algorithm by Fu et al.

    fu() will try to minimize the objective function measure. diff --git a/dev/modules/simplify/simplify.html b/dev/modules/simplify/simplify.html index 5b5593f642a..4688223b6a8 100644 --- a/dev/modules/simplify/simplify.html +++ b/dev/modules/simplify/simplify.html @@ -812,7 +812,7 @@

    Documentation Version
    **kwargs,
    -) Expr[source] +) Expr[source]
    sympy.simplify.simplify.simplify( @@ -996,7 +996,7 @@
    Documentation Version
    force=False,

    -)[source] +)[source]

    Separates variables in an expression, if possible. By default, it separates with respect to all symbols in an expression and collects constant coefficients that are @@ -1056,7 +1056,7 @@

    Documentation Version
    -sympy.simplify.simplify.nthroot(expr, n, max_len=4, prec=15)[source]
    +sympy.simplify.simplify.nthroot(expr, n, max_len=4, prec=15)[source]

    Compute a real nth-root of a sum of surds.

    Parameters:
    @@ -1080,7 +1080,7 @@
    Documentation Version
    -sympy.simplify.simplify.kroneckersimp(expr)[source]
    +sympy.simplify.simplify.kroneckersimp(expr)[source]

    Simplify expressions with KroneckerDelta.

    The only simplification currently attempted is to identify multiplicative cancellation:

    Examples

    @@ -1094,7 +1094,7 @@
    Documentation Version
    -sympy.simplify.simplify.besselsimp(expr)[source]
    +sympy.simplify.simplify.besselsimp(expr)[source]

    Simplify bessel-type functions.

    Explanation

    This routine tries to simplify bessel-type functions. Currently it only @@ -1121,7 +1121,7 @@

    Documentation Version
    -sympy.simplify.simplify.hypersimp(f, k)[source]
    +sympy.simplify.simplify.hypersimp(f, k)[source]

    Given combinatorial term f(k) simplify its consecutive term ratio i.e. f(k+1)/f(k). The input term can be composed of functions and integer sequences which have equivalent representation in terms @@ -1149,7 +1149,7 @@

    Documentation Version
    -sympy.simplify.simplify.hypersimilar(f, g, k)[source]
    +sympy.simplify.simplify.hypersimilar(f, g, k)[source]

    Returns True if f and g are hyper-similar.

    Explanation

    Similarity in hypergeometric sense means that a quotient of @@ -1171,7 +1171,7 @@

    Documentation Version
    rational_conversion='base10',
    -)[source] +)[source]

    Find a simple representation for a number or, if there are free symbols or if rational=True, then replace Floats with their Rational equivalents. If no change is made and rational is not False then Floats will at least be @@ -1217,7 +1217,7 @@

    Documentation Version
    -sympy.simplify.simplify.posify(eq)[source]
    +sympy.simplify.simplify.posify(eq)[source]

    Return eq (with generic symbols made positive) and a dictionary containing the mapping between the old and new symbols.

    @@ -1259,7 +1259,7 @@
    Documentation Version
    -sympy.simplify.simplify.logcombine(expr, force=False)[source]
    +sympy.simplify.simplify.logcombine(expr, force=False)[source]

    Takes logarithms and combines them using the following rules:

    • log(x) + log(y) == log(x*y) if both are positive

    • @@ -1306,7 +1306,7 @@
      Documentation Version
      -sympy.simplify.radsimp.radsimp(expr, symbolic=True, max_terms=4)[source]
      +sympy.simplify.radsimp.radsimp(expr, symbolic=True, max_terms=4)[source]

      Rationalize the denominator by removing square roots.

      Explanation

      The expression returned from radsimp must be used with caution @@ -1380,7 +1380,7 @@

      Documentation Version
      -sympy.simplify.radsimp.rad_rationalize(num, den)[source]
      +sympy.simplify.radsimp.rad_rationalize(num, den)[source]

      Rationalize num/den by removing square roots in the denominator; num and den are sum of terms whose squares are positive rationals.

      Examples

      @@ -1405,7 +1405,7 @@
      Documentation Version
      distribute_order_term=True,
      -)[source] +)[source]

      Collect additive terms of an expression.

      Explanation

      This function collects additive terms of an expression with respect @@ -1552,7 +1552,7 @@

      Documentation Version
      -sympy.simplify.radsimp.rcollect(expr, *vars)[source]
      +sympy.simplify.radsimp.rcollect(expr, *vars)[source]

      Recursively collect sums in an expression.

      Examples

      >>> from sympy.simplify import rcollect
      @@ -1574,7 +1574,7 @@ 
      Documentation Version
      -sympy.simplify.radsimp.collect_sqrt(expr, evaluate=None)[source]
      +sympy.simplify.radsimp.collect_sqrt(expr, evaluate=None)[source]

      Return expr with terms having common square roots collected together. If evaluate is False a count indicating the number of sqrt-containing terms will be returned and, if non-zero, the terms of the Add will be @@ -1616,7 +1616,7 @@

      Documentation Version
      -sympy.simplify.radsimp.collect_const(expr, *vars, Numbers=True)[source]
      +sympy.simplify.radsimp.collect_const(expr, *vars, Numbers=True)[source]

      A non-greedy collection of terms with similar number coefficients in an Add expr. If vars is given then only those constants will be targeted. Although any Number can also be targeted, if this is not @@ -1683,7 +1683,7 @@

      Documentation Version
      -sympy.simplify.radsimp.fraction(expr, exact=False)[source]
      +sympy.simplify.radsimp.fraction(expr, exact=False)[source]

      Returns a pair with expression’s numerator and denominator. If the given expression is not a fraction then this function will return the tuple (expr, 1).

      @@ -1746,7 +1746,7 @@
      Documentation Version
      -sympy.simplify.ratsimp.ratsimp(expr)[source]
      +sympy.simplify.ratsimp.ratsimp(expr)[source]

      Put an expression over a common denominator, cancel and reduce.

      Examples

      >>> from sympy import ratsimp
      @@ -1770,7 +1770,7 @@ 
      Documentation Version
      **args,
      -)[source] +)[source]

      Simplifies a rational expression expr modulo the prime ideal generated by G. G should be a Groebner basis of the ideal.

      @@ -1801,7 +1801,7 @@
      Documentation Version
      -sympy.simplify.trigsimp.trigsimp(expr, inverse=False, **opts)[source]
      +sympy.simplify.trigsimp.trigsimp(expr, inverse=False, **opts)[source]

      Returns a reduced expression by using known trig identities.

      Parameters:
      @@ -1879,7 +1879,7 @@
      Documentation Version
      measure=<function count_ops>,
      -)[source] +)[source]

      Reduce expression by combining powers with similar bases and exponents.

      Explanation

      If deep is True then powsimp() will also simplify arguments of @@ -1959,7 +1959,7 @@

      Documentation Version
      -sympy.simplify.powsimp.powdenest(eq, force=False, polar=False)[source]
      +sympy.simplify.powsimp.powdenest(eq, force=False, polar=False)[source]

      Collect exponents on powers as assumptions allow.

      Explanation

      @@ -2053,7 +2053,7 @@
      Documentation Version
      -sympy.simplify.combsimp.combsimp(expr)[source]
      +sympy.simplify.combsimp.combsimp(expr)[source]

      Simplify combinatorial expressions.

      Explanation

      This function takes as input an expression containing factorials, @@ -2085,7 +2085,7 @@

      Documentation Version
      -sympy.simplify.sqrtdenest.sqrtdenest(expr, max_iter=3)[source]
      +sympy.simplify.sqrtdenest.sqrtdenest(expr, max_iter=3)[source]

      Denests sqrts in an expression that contain other square roots if possible, otherwise returns the expr unchanged. This is based on the algorithms of [1].

      @@ -2128,7 +2128,7 @@
      Documentation Version
      list=True,
      -)[source] +)[source]

      Perform common subexpression elimination on an expression.

      Parameters:
      @@ -2224,7 +2224,7 @@
      Documentation Version
      -sympy.simplify.cse_main.opt_cse(exprs, order='canonical')[source]
      +sympy.simplify.cse_main.opt_cse(exprs, order='canonical')[source]

      Find optimization opportunities in Adds, Muls, Pows and negative coefficient Muls.

      @@ -2269,7 +2269,7 @@
      Documentation Version
      ignore=(),
      -)[source] +)[source]

      Perform raw CSE on expression tree, taking opt_subs into account.

      Parameters:
      @@ -2310,7 +2310,7 @@
      Documentation Version
      place=None,
      -)[source] +)[source]

      Expand hypergeometric functions. If allow_hyper is True, allow partial simplification (that is a result different from input, but still containing hypergeometric functions).

      @@ -2335,7 +2335,7 @@
      Documentation Version
      -class sympy.simplify.epathtools.EPath(path)[source]
      +class sympy.simplify.epathtools.EPath(path)[source]

      Manipulate expressions using paths.

      EPath grammar in EBNF notation:

      literal   ::= /[A-Za-z_][A-Za-z_0-9]*/
      @@ -2353,7 +2353,7 @@ 
      Documentation Version

      See the docstring of the epath() function.

      -apply(expr, func, args=None, kwargs=None)[source]
      +apply(expr, func, args=None, kwargs=None)[source]

      Modify parts of an expression selected by a path.

      Examples

      >>> from sympy.simplify.epathtools import EPath
      @@ -2381,7 +2381,7 @@ 
      Documentation Version
      -select(expr)[source]
      +select(expr)[source]

      Retrieve parts of an expression selected by a path.

      Examples

      >>> from sympy.simplify.epathtools import EPath
      @@ -2421,7 +2421,7 @@ 
      Documentation Version
      kwargs=None,
      -)[source] +)[source]

      Manipulate parts of an expression selected by a path.

      Parameters:
      diff --git a/dev/modules/solvers/diophantine.html b/dev/modules/solvers/diophantine.html index 1b99f716725..36cda04782f 100644 --- a/dev/modules/solvers/diophantine.html +++ b/dev/modules/solvers/diophantine.html @@ -1135,7 +1135,7 @@

      User Functionsfrom sympy import *:

      -sympy.solvers.diophantine.diophantine.diophantine(eq, param=t, syms=None, permute=False)[source]
      +sympy.solvers.diophantine.diophantine.diophantine(eq, param=t, syms=None, permute=False)[source]

      Simplify the solution procedure of diophantine equation eq by converting it into a product of terms which should equal zero.

      Explanation

      @@ -1193,7 +1193,7 @@

      User Functionsfrom sympy.solvers.diophantine import *:

      -sympy.solvers.diophantine.diophantine.classify_diop(eq, _dict=True)[source]
      +sympy.solvers.diophantine.diophantine.classify_diop(eq, _dict=True)[source]
      @@ -1202,7 +1202,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_solve(eq, param=t)[source]
      +sympy.solvers.diophantine.diophantine.diop_solve(eq, param=t)[source]

      Solves the diophantine equation eq.

      Explanation

      Unlike diophantine(), factoring of eq is not attempted. Uses @@ -1239,7 +1239,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_linear(eq, param=t)[source]
      +sympy.solvers.diophantine.diophantine.diop_linear(eq, param=t)[source]

      Solves linear diophantine equations.

      A linear diophantine equation is an equation of the form \(a_{1}x_{1} + a_{2}x_{2} + .. + a_{n}x_{n} = 0\) where \(a_{1}, a_{2}, ..a_{n}\) are @@ -1271,7 +1271,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.base_solution_linear(c, a, b, t=None)[source]
      +sympy.solvers.diophantine.diophantine.base_solution_linear(c, a, b, t=None)[source]

      Return the base solution for the linear equation, \(ax + by = c\).

      Explanation

      Used by diop_linear() to find the base solution of a linear @@ -1297,7 +1297,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_quadratic(eq, param=t)[source]
      +sympy.solvers.diophantine.diophantine.diop_quadratic(eq, param=t)[source]

      Solves quadratic diophantine equations.

      i.e. equations of the form \(Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0\). Returns a set containing the tuples \((x, y)\) which contains the solutions. If there @@ -1337,7 +1337,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_DN(D, N, t=t)[source]
      +sympy.solvers.diophantine.diophantine.diop_DN(D, N, t=t)[source]

      Solves the equation \(x^2 - Dy^2 = N\).

      Explanation

      Mainly concerned with the case \(D > 0, D\) is not a perfect square, @@ -1392,7 +1392,7 @@

      Internal Functionsm: int,

      -) set[tuple[int, int]][source] +) set[tuple[int, int]][source]

      Solves \(ax^2 + by^2 = m\) where \(\gcd(a, b) = 1 = gcd(a, m)\) and \(a, b > 0\).

      Explanation

      Uses the algorithm due to Cornacchia. The method only finds primitive @@ -1431,7 +1431,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_bf_DN(D, N, t=t)[source]
      +sympy.solvers.diophantine.diophantine.diop_bf_DN(D, N, t=t)[source]

      Uses brute force to solve the equation, \(x^2 - Dy^2 = N\).

      Explanation

      Mainly concerned with the generalized Pell equation which is the case when @@ -1470,7 +1470,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.transformation_to_DN(eq)[source]
      +sympy.solvers.diophantine.diophantine.transformation_to_DN(eq)[source]

      This function transforms general quadratic, \(ax^2 + bxy + cy^2 + dx + ey + f = 0\) to more easy to deal with \(X^2 - DY^2 = N\) form.

      @@ -1542,7 +1542,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.transformation_to_normal(eq)[source]
      +sympy.solvers.diophantine.diophantine.transformation_to_normal(eq)[source]

      Returns the transformation Matrix that converts a general ternary quadratic equation eq (\(ax^2 + by^2 + cz^2 + dxy + eyz + fxz\)) to a form without cross terms: \(ax^2 + by^2 + cz^2 = 0\). This is @@ -1552,7 +1552,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.find_DN(eq)[source]
      +sympy.solvers.diophantine.diophantine.find_DN(eq)[source]

      This function returns a tuple, \((D, N)\) of the simplified form, \(x^2 - Dy^2 = N\), corresponding to the general quadratic, \(ax^2 + bxy + cy^2 + dx + ey + f = 0\).

      @@ -1588,7 +1588,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_ternary_quadratic(eq, parameterize=False)[source]
      +sympy.solvers.diophantine.diophantine.diop_ternary_quadratic(eq, parameterize=False)[source]

      Solves the general quadratic ternary form, \(ax^2 + by^2 + cz^2 + fxy + gyz + hxz = 0\).

      Returns a tuple \((x, y, z)\) which is a base solution for the above @@ -1616,7 +1616,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.square_factor(a)[source]
      +sympy.solvers.diophantine.diophantine.square_factor(a)[source]

      Returns an integer \(c\) s.t. \(a = c^2k, \ c,k \in Z\). Here \(k\) is square free. \(a\) can be given as an integer or a dictionary of factors.

      Examples

      @@ -1639,7 +1639,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.descent(A, B)[source]
      +sympy.solvers.diophantine.diophantine.descent(A, B)[source]

      Returns a non-trivial solution, (x, y, z), to \(x^2 = Ay^2 + Bz^2\) using Lagrange’s descent method with lattice-reduction. \(A\) and \(B\) are assumed to be valid for such a solution to exist.

      @@ -1669,7 +1669,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_general_pythagorean(eq, param=m)[source]
      +sympy.solvers.diophantine.diophantine.diop_general_pythagorean(eq, param=m)[source]

      Solves the general pythagorean equation, \(a_{1}^2x_{1}^2 + a_{2}^2x_{2}^2 + . . . + a_{n}^2x_{n}^2 - a_{n + 1}^2x_{n + 1}^2 = 0\).

      Returns a tuple which contains a parametrized solution to the equation, @@ -1691,7 +1691,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_general_sum_of_squares(eq, limit=1)[source]
      +sympy.solvers.diophantine.diophantine.diop_general_sum_of_squares(eq, limit=1)[source]

      Solves the equation \(x_{1}^2 + x_{2}^2 + . . . + x_{n}^2 - k = 0\).

      Returns at most limit number of solutions.

      Usage

      @@ -1721,7 +1721,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.diop_general_sum_of_even_powers(eq, limit=1)[source]
      +sympy.solvers.diophantine.diophantine.diop_general_sum_of_even_powers(eq, limit=1)[source]

      Solves the equation \(x_{1}^e + x_{2}^e + . . . + x_{n}^e - k = 0\) where \(e\) is an even, integer power.

      Returns at most limit number of solutions.

      @@ -1744,7 +1744,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.power_representation(n, p, k, zeros=False)[source]
      +sympy.solvers.diophantine.diophantine.power_representation(n, p, k, zeros=False)[source]

      Returns a generator for finding k-tuples of integers, \((n_{1}, n_{2}, . . . n_{k})\), such that \(n = n_{1}^p + n_{2}^p + . . . n_{k}^p\).

      @@ -1788,7 +1788,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.partition(n, k=None, zeros=False)[source]
      +sympy.solvers.diophantine.diophantine.partition(n, k=None, zeros=False)[source]

      Returns a generator that can be used to generate partitions of an integer \(n\).

      Explanation

      @@ -1827,7 +1827,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.sum_of_three_squares(n)[source]
      +sympy.solvers.diophantine.diophantine.sum_of_three_squares(n)[source]

      Returns a 3-tuple \((a, b, c)\) such that \(a^2 + b^2 + c^2 = n\) and \(a, b, c \geq 0\).

      Returns None if \(n = 4^a(8m + 7)\) for some \(a, m \in \mathbb{Z}\). See @@ -1878,7 +1878,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.sum_of_four_squares(n)[source]
      +sympy.solvers.diophantine.diophantine.sum_of_four_squares(n)[source]

      Returns a 4-tuple \((a, b, c, d)\) such that \(a^2 + b^2 + c^2 + d^2 = n\). Here \(a, b, c, d \geq 0\).

      @@ -1928,7 +1928,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.sum_of_powers(n, p, k, zeros=False)[source]
      +sympy.solvers.diophantine.diophantine.sum_of_powers(n, p, k, zeros=False)[source]

      Returns a generator for finding k-tuples of integers, \((n_{1}, n_{2}, . . . n_{k})\), such that \(n = n_{1}^p + n_{2}^p + . . . n_{k}^p\).

      @@ -1972,7 +1972,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.sum_of_squares(n, k, zeros=False)[source]
      +sympy.solvers.diophantine.diophantine.sum_of_squares(n, k, zeros=False)[source]

      Return a generator that yields the k-tuples of nonnegative values, the squares of which sum to n. If zeros is False (default) then the solution will not contain zeros. The nonnegative @@ -2015,7 +2015,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.merge_solution(var, var_t, solution)[source]
      +sympy.solvers.diophantine.diophantine.merge_solution(var, var_t, solution)[source]

      This is used to construct the full solution from the solutions of sub equations.

      Explanation

      @@ -2029,13 +2029,13 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.divisible(a, b)[source]
      +sympy.solvers.diophantine.diophantine.divisible(a, b)[source]

      Returns \(True\) if a is divisible by b and \(False\) otherwise.

      -sympy.solvers.diophantine.diophantine.PQa(P_0, Q_0, D)[source]
      +sympy.solvers.diophantine.diophantine.PQa(P_0, Q_0, D)[source]

      Returns useful information needed to solve the Pell equation.

      Explanation

      There are six sequences of integers defined related to the continued @@ -2070,7 +2070,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.equivalent(u, v, r, s, D, N)[source]
      +sympy.solvers.diophantine.diophantine.equivalent(u, v, r, s, D, N)[source]

      Returns True if two solutions \((u, v)\) and \((r, s)\) of \(x^2 - Dy^2 = N\) belongs to the same equivalence class and False otherwise.

      Explanation

      @@ -2103,7 +2103,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.parametrize_ternary_quadratic(eq)[source]
      +sympy.solvers.diophantine.diophantine.parametrize_ternary_quadratic(eq)[source]

      Returns the parametrized general solution for the ternary quadratic equation eq which has the form \(ax^2 + by^2 + cz^2 + fxy + gyz + hxz = 0\).

      @@ -2164,7 +2164,7 @@

      Internal Functionsparameterize=False,

      -)[source] +)[source]

      Solves the quadratic ternary diophantine equation, \(ax^2 + by^2 + cz^2 = 0\).

      Explanation

      @@ -2190,7 +2190,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.ldescent(A, B)[source]
      +sympy.solvers.diophantine.diophantine.ldescent(A, B)[source]

      Return a non-trivial solution to \(w^2 = Ax^2 + By^2\) using Lagrange’s method; return None if there is no such solution.

      @@ -2246,7 +2246,7 @@

      Internal Functionsb: int,

      -) tuple[int, int][source] +) tuple[int, int][source]

      Returns a reduced solution \((x, z)\) to the congruence \(X^2 - aZ^2 \equiv 0 \pmod{b}\) so that \(x^2 + |a|z^2\) is as small as possible. Here w is a solution of the congruence \(x^2 \equiv a \pmod{b}\).

      @@ -2321,7 +2321,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.holzer(x, y, z, a, b, c)[source]
      +sympy.solvers.diophantine.diophantine.holzer(x, y, z, a, b, c)[source]

      Simplify the solution \((x, y, z)\) of the equation \(ax^2 + by^2 = cz^2\) with \(a, b, c > 0\) and \(z^2 \geq \mid ab \mid\) to a new reduced solution \((x', y', z')\) such that \(z'^2 \leq \mid ab \mid\).

      @@ -2347,7 +2347,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.prime_as_sum_of_two_squares(p)[source]
      +sympy.solvers.diophantine.diophantine.prime_as_sum_of_two_squares(p)[source]

      Represent a prime \(p\) as a unique sum of two squares; this can only be done if the prime is congruent to 1 mod 4.

      @@ -2393,7 +2393,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.sqf_normal(a, b, c, steps=False)[source]
      +sympy.solvers.diophantine.diophantine.sqf_normal(a, b, c, steps=False)[source]

      Return \(a', b', c'\), the coefficients of the square-free normal form of \(ax^2 + by^2 + cz^2 = 0\), where \(a', b', c'\) are pairwise prime. If \(steps\) is True then also return three tuples: @@ -2427,7 +2427,7 @@

      Internal Functions
      -sympy.solvers.diophantine.diophantine.reconstruct(A, B, z)[source]
      +sympy.solvers.diophantine.diophantine.reconstruct(A, B, z)[source]

      Reconstruct the \(z\) value of an equivalent solution of \(ax^2 + by^2 + cz^2\) from the \(z\) value of a solution of the square-free normal form of the equation, \(a'*x^2 + b'*y^2 + c'*z^2\), where \(a'\), \(b'\) and \(c'\) are square @@ -2440,7 +2440,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.DiophantineSolutionSet(symbols_seq, parameters)[source]
      +class sympy.solvers.diophantine.diophantine.DiophantineSolutionSet(symbols_seq, parameters)[source]

      Container for a set of solutions to a particular diophantine equation.

      The base representation is a set of tuples representing each of the solutions.

      @@ -2511,7 +2511,7 @@

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Internal representation of a particular diophantine equation type.

      Parameters:
      @@ -2546,7 +2546,7 @@

      Internal Classes
      -matches()[source]
      +matches()[source]

      Determine whether the given equation can be matched to the particular equation type.

      @@ -2554,7 +2554,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.Univariate(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.Univariate(equation, free_symbols=None)[source]

      Representation of a univariate diophantine equation.

      A univariate diophantine equation is an equation of the form \(a_{0} + a_{1}x + a_{2}x^2 + .. + a_{n}x^n = 0\) where \(a_{1}, a_{2}, ..a_{n}\) are @@ -2570,7 +2570,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.Linear(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.Linear(equation, free_symbols=None)[source]

      Representation of a linear diophantine equation.

      A linear diophantine equation is an equation of the form \(a_{1}x_{1} + a_{2}x_{2} + .. + a_{n}x_{n} = 0\) where \(a_{1}, a_{2}, ..a_{n}\) are @@ -2594,7 +2594,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.BinaryQuadratic(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.BinaryQuadratic(equation, free_symbols=None)[source]

      Representation of a binary quadratic diophantine equation.

      A binary quadratic diophantine equation is an equation of the form \(Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0\), where \(A, B, C, D, E, @@ -2636,7 +2636,7 @@

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of an inhomogeneous ternary quadratic.

      No solver is currently implemented for this equation type.

      @@ -2650,7 +2650,7 @@

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of a homogeneous ternary quadratic normal diophantine equation.

      Examples

      >>> from sympy.abc import x, y, z
      @@ -2670,7 +2670,7 @@ 

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of a homogeneous ternary quadratic diophantine equation.

      Examples

      >>> from sympy.abc import x, y, z
      @@ -2692,7 +2692,7 @@ 

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of an inhomogeneous general quadratic.

      No solver is currently implemented for this equation type.

      @@ -2706,14 +2706,14 @@

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of a homogeneous general quadratic.

      No solver is currently implemented for this equation type.

      -class sympy.solvers.diophantine.diophantine.GeneralSumOfSquares(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.GeneralSumOfSquares(equation, free_symbols=None)[source]

      Representation of the diophantine equation

      \(x_{1}^2 + x_{2}^2 + . . . + x_{n}^2 - k = 0\).

      Details

      @@ -2745,7 +2745,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.GeneralPythagorean(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.GeneralPythagorean(equation, free_symbols=None)[source]

      Representation of the general pythagorean equation, \(a_{1}^2x_{1}^2 + a_{2}^2x_{2}^2 + . . . + a_{n}^2x_{n}^2 - a_{n + 1}^2x_{n + 1}^2 = 0\).

      Examples

      @@ -2761,7 +2761,7 @@

      Internal Classes
      -class sympy.solvers.diophantine.diophantine.CubicThue(equation, free_symbols=None)[source]
      +class sympy.solvers.diophantine.diophantine.CubicThue(equation, free_symbols=None)[source]

      Representation of a cubic Thue diophantine equation.

      A cubic Thue diophantine equation is a polynomial of the form \(f(x, y) = r\) of degree 3, where \(x\) and \(y\) are integers @@ -2786,7 +2786,7 @@

      Internal Classesfree_symbols=None,

      -)[source] +)[source]

      Representation of the diophantine equation

      \(x_{1}^e + x_{2}^e + . . . + x_{n}^e - k = 0\)

      where \(e\) is an even, integer power.

      diff --git a/dev/modules/solvers/inequalities.html b/dev/modules/solvers/inequalities.html index 29bcf59ca0f..23833baa47e 100644 --- a/dev/modules/solvers/inequalities.html +++ b/dev/modules/solvers/inequalities.html @@ -819,7 +819,7 @@
      Documentation Version
      -sympy.solvers.inequalities.solve_rational_inequalities(eqs)[source]
      +sympy.solvers.inequalities.solve_rational_inequalities(eqs)[source]

      Solve a system of rational inequalities with rational coefficients.

      Examples

      >>> from sympy.abc import x
      @@ -846,7 +846,7 @@ 
      Documentation Version
      -sympy.solvers.inequalities.solve_poly_inequality(poly, rel)[source]
      +sympy.solvers.inequalities.solve_poly_inequality(poly, rel)[source]

      Solve a polynomial inequality with rational coefficients.

      Examples

      >>> from sympy import solve_poly_inequality, Poly
      @@ -873,7 +873,7 @@ 
      Documentation Version
      -sympy.solvers.inequalities.solve_poly_inequalities(polys)[source]
      +sympy.solvers.inequalities.solve_poly_inequalities(polys)[source]

      Solve polynomial inequalities with rational coefficients.

      Examples

      >>> from sympy import Poly
      @@ -897,7 +897,7 @@ 
      Documentation Version
      relational=True,
      -)[source] +)[source]

      Reduce a system of rational inequalities with rational coefficients.

      Examples

      >>> from sympy import Symbol
      @@ -931,7 +931,7 @@ 
      Documentation Version
      -sympy.solvers.inequalities.reduce_abs_inequality(expr, rel, gen)[source]
      +sympy.solvers.inequalities.reduce_abs_inequality(expr, rel, gen)[source]

      Reduce an inequality with nested absolute values.

      Examples

      >>> from sympy import reduce_abs_inequality, Abs, Symbol
      @@ -954,7 +954,7 @@ 
      Documentation Version
      -sympy.solvers.inequalities.reduce_abs_inequalities(exprs, gen)[source]
      +sympy.solvers.inequalities.reduce_abs_inequalities(exprs, gen)[source]

      Reduce a system of inequalities with nested absolute values.

      Examples

      >>> from sympy import reduce_abs_inequalities, Abs, Symbol
      @@ -978,7 +978,7 @@ 
      Documentation Version
      -sympy.solvers.inequalities.reduce_inequalities(inequalities, symbols=[])[source]
      +sympy.solvers.inequalities.reduce_inequalities(inequalities, symbols=[])[source]

      Reduce a system of inequalities with rational coefficients.

      Examples

      >>> from sympy.abc import x, y
      @@ -1007,7 +1007,7 @@ 
      Documentation Version
      continuous=False,
      -)[source] +)[source]

      Solves a real univariate inequality.

      Parameters:
      diff --git a/dev/modules/solvers/ode.html b/dev/modules/solvers/ode.html index 5cf2738b3d8..8364ba9eac7 100644 --- a/dev/modules/solvers/ode.html +++ b/dev/modules/solvers/ode.html @@ -830,7 +830,7 @@
      Documentation Version
      **kwargs,
      -)[source] +)[source]

      Solves any (supported) kind of ordinary differential equation and system of ordinary differential equations.

      For Single Ordinary Differential Equation

      @@ -1028,7 +1028,7 @@
      Documentation Version
      simplify=True,
      -)[source] +)[source]

      Solves any(supported) system of Ordinary Differential Equations

      Parameters:
      @@ -1142,7 +1142,7 @@
      Documentation Version
      **kwargs,
      -)[source] +)[source]

      Returns a tuple of possible dsolve() classifications for an ODE.

      The tuple is ordered so that first item is the classification that @@ -1270,7 +1270,7 @@

      Documentation Version
      solve_for_func=True,
      -)[source] +)[source]

      Substitutes sol into ode and checks that the result is 0.

      This works when func is one function, like \(f(x)\) or a list of functions like \([f(x), g(x)]\) when \(ode\) is a system of ODEs. sol can @@ -1331,7 +1331,7 @@

      Documentation Version
      -sympy.solvers.ode.homogeneous_order(eq, *symbols)[source]
      +sympy.solvers.ode.homogeneous_order(eq, *symbols)[source]

      Returns the order \(n\) if \(g\) is homogeneous and None if it is not homogeneous.

      Determines if a function is homogeneous and if so of what order. A @@ -1379,7 +1379,7 @@

      Documentation Version
      match=None,
      -)[source] +)[source]

      The infinitesimal functions of an ordinary differential equation, \(\xi(x,y)\) and \(\eta(x,y)\), are the infinitesimals of the Lie group of point transformations for which the differential equation is invariant. So, the ODE \(y'=f(x,y)\) @@ -1448,7 +1448,7 @@

      Documentation Version
      order=None,
      -)[source] +)[source]

      This function is used to check if the given infinitesimals are the actual infinitesimals of the given first order differential equation. This method is specific to the Lie Group Solver of ODEs.

      @@ -1472,7 +1472,7 @@
      Documentation Version
      -sympy.solvers.ode.constantsimp(expr, constants)[source]
      +sympy.solvers.ode.constantsimp(expr, constants)[source]

      Simplifies an expression with arbitrary constants in it.

      This function is written specifically to work with dsolve(), and is not intended for general use.

      @@ -1546,7 +1546,7 @@
      Documentation Version
      -sympy.solvers.ode.ode.odesimp(ode, eq, func, hint)[source]
      +sympy.solvers.ode.ode.odesimp(ode, eq, func, hint)[source]

      Simplifies solutions of ODEs, including trying to solve for func and running constantsimp().

      It may use knowledge of the type of solution that the hint returns to @@ -1610,7 +1610,7 @@

      Documentation Version
      newconstants=None,
      -)[source] +)[source]

      Renumber arbitrary constants in expr to use the symbol names as given in newconstants. In the process, this reorders expression terms in a standard way.

      @@ -1654,7 +1654,7 @@
      Documentation Version
      -sympy.solvers.ode.ode.ode_sol_simplicity(sol, func, trysolving=True)[source]
      +sympy.solvers.ode.ode.ode_sol_simplicity(sol, func, trysolving=True)[source]

      Returns an extended integer representing how simple a solution to an ODE is.

      The following things are considered, in order from most simple to least:

      @@ -1735,7 +1735,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.Factorable(ode_problem)[source]
      +class sympy.solvers.ode.single.Factorable(ode_problem)[source]

      Solves equations having a solvable factor.

      This function is used to solve the equation having factors. Factors may be of type algebraic or ode. It will try to solve each factor independently. Factors will be solved by calling dsolve. We will return the @@ -1754,7 +1754,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.FirstExact(ode_problem)[source]
      +class sympy.solvers.ode.single.FirstExact(ode_problem)[source]

      Solves 1st order exact ordinary differential equations.

      A 1st order differential equation is called exact if it is the total differential of a function. That is, the differential equation

      @@ -1807,7 +1807,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.HomogeneousCoeffBest(ode_problem)[source]
      +class sympy.solvers.ode.single.HomogeneousCoeffBest(ode_problem)[source]

      Returns the best solution to an ODE from the two hints 1st_homogeneous_coeff_subs_dep_div_indep and 1st_homogeneous_coeff_subs_indep_div_dep.

      @@ -1844,7 +1844,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.HomogeneousCoeffSubsDepDivIndep(ode_problem)[source]
      +class sympy.solvers.ode.single.HomogeneousCoeffSubsDepDivIndep(ode_problem)[source]

      Solves a 1st order differential equation with homogeneous coefficients using the substitution \(u_1 = \frac{\text{<dependent variable>}}{\text{<independent variable>}}\).

      @@ -1917,7 +1917,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.HomogeneousCoeffSubsIndepDivDep(ode_problem)[source]
      +class sympy.solvers.ode.single.HomogeneousCoeffSubsIndepDivDep(ode_problem)[source]

      Solves a 1st order differential equation with homogeneous coefficients using the substitution \(u_2 = \frac{\text{<independent variable>}}{\text{<dependent variable>}}\).

      @@ -1993,7 +1993,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.FirstLinear(ode_problem)[source]
      +class sympy.solvers.ode.single.FirstLinear(ode_problem)[source]

      Solves 1st order linear differential equations.

      These are differential equations of the form

      @@ -2042,7 +2042,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.RationalRiccati(ode_problem)[source]
      +class sympy.solvers.ode.single.RationalRiccati(ode_problem)[source]

      Gives general solutions to the first order Riccati differential equations that have atleast one rational particular solution.

      @@ -2075,7 +2075,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.SecondLinearAiry(ode_problem)[source]
      +class sympy.solvers.ode.single.SecondLinearAiry(ode_problem)[source]

      Gives solution of the Airy differential equation

      @@ -2095,7 +2095,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.SecondLinearBessel(ode_problem)[source]
      +class sympy.solvers.ode.single.SecondLinearBessel(ode_problem)[source]

      Gives solution of the Bessel differential equation

      @@ -2124,7 +2124,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.Bernoulli(ode_problem)[source]
      +class sympy.solvers.ode.single.Bernoulli(ode_problem)[source]

      Solves Bernoulli differential equations.

      These are equations of the form

      @@ -2196,7 +2196,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.Liouville(ode_problem)[source]
      +class sympy.solvers.ode.single.Liouville(ode_problem)[source]

      Solves 2nd order Liouville differential equations.

      The general form of a Liouville ODE is

      @@ -2252,7 +2252,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.RiccatiSpecial(ode_problem)[source]
      +class sympy.solvers.ode.single.RiccatiSpecial(ode_problem)[source]

      The general Riccati equation has the form

      @@ -2294,7 +2294,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.NthLinearConstantCoeffHomogeneous(ode_problem)[source]
      +class sympy.solvers.ode.single.NthLinearConstantCoeffHomogeneous(ode_problem)[source]

      Solves an \(n\)th order linear homogeneous differential equation with constant coefficients.

      This is an equation of the form

      @@ -2361,7 +2361,7 @@
      Documentation Version
      ode_problem,
      -)[source] +)[source]

      Solves an \(n\)th order linear differential equation with constant coefficients using the method of undetermined coefficients.

      This method works on differential equations of the form

      @@ -2420,7 +2420,7 @@
      Documentation Version
      ode_problem,
      -)[source] +)[source]

      Solves an \(n\)th order linear differential equation with constant coefficients using the method of variation of parameters.

      This method works on any differential equations of the form

      @@ -2487,7 +2487,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.NthLinearEulerEqHomogeneous(ode_problem)[source]
      +class sympy.solvers.ode.single.NthLinearEulerEqHomogeneous(ode_problem)[source]

      Solves an \(n\)th order linear homogeneous variable-coefficient Cauchy-Euler equidimensional ordinary differential equation.

      This is an equation with form \(0 = a_0 f(x) + a_1 x f'(x) + a_2 x^2 f''(x) @@ -2556,7 +2556,7 @@

      Documentation Version
      ode_problem,
      -)[source] +)[source]

      Solves an \(n\)th order linear non homogeneous Cauchy-Euler equidimensional ordinary differential equation using variation of parameters.

      This is an equation with form \(g(x) = a_0 f(x) + a_1 x f'(x) + a_2 x^2 f''(x) @@ -2614,7 +2614,7 @@

      Documentation Version
      ode_problem,
      -)[source] +)[source]

      Solves an \(n\)th order linear non homogeneous Cauchy-Euler equidimensional ordinary differential equation using undetermined coefficients.

      This is an equation with form \(g(x) = a_0 f(x) + a_1 x f'(x) + a_2 x^2 f''(x) @@ -2656,7 +2656,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.NthAlgebraic(ode_problem)[source]
      +class sympy.solvers.ode.single.NthAlgebraic(ode_problem)[source]

      Solves an \(n\)th order ordinary differential equation using algebra and integrals.

      There is no general form for the kind of equation that this can solve. The @@ -2677,7 +2677,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.NthOrderReducible(ode_problem)[source]
      +class sympy.solvers.ode.single.NthOrderReducible(ode_problem)[source]

      Solves ODEs that only involve derivatives of the dependent variable using a substitution of the form \(f^n(x) = g(x)\).

      For example any second order ODE of the form \(f''(x) = h(f'(x), x)\) can be @@ -2699,7 +2699,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.Separable(ode_problem)[source]
      +class sympy.solvers.ode.single.Separable(ode_problem)[source]

      Solves separable 1st order differential equations.

      This is any differential equation that can be written as \(P(y) \tfrac{dy}{dx} = Q(x)\). The solution can then just be found by @@ -2752,7 +2752,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.AlmostLinear(ode_problem)[source]
      +class sympy.solvers.ode.single.AlmostLinear(ode_problem)[source]

      Solves an almost-linear differential equation.

      The general form of an almost linear differential equation is

      @@ -2798,7 +2798,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.LinearCoefficients(ode_problem)[source]
      +class sympy.solvers.ode.single.LinearCoefficients(ode_problem)[source]

      Solves a differential equation with linear coefficients.

      The general form of a differential equation with linear coefficients is

      @@ -2843,7 +2843,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.SeparableReduced(ode_problem)[source]
      +class sympy.solvers.ode.single.SeparableReduced(ode_problem)[source]

      Solves a differential equation that can be reduced to the separable form.

      The general form of this equation is

      @@ -2904,7 +2904,7 @@
      Documentation Version
      -class sympy.solvers.ode.single.LieGroup(ode_problem)[source]
      +class sympy.solvers.ode.single.LieGroup(ode_problem)[source]

      This hint implements the Lie group method of solving first order differential equations. The aim is to convert the given differential equation from the given coordinate system into another coordinate system where it becomes @@ -2954,7 +2954,7 @@

      Documentation Version
      -class sympy.solvers.ode.single.SecondHypergeometric(ode_problem)[source]
      +class sympy.solvers.ode.single.SecondHypergeometric(ode_problem)[source]

      Solves 2nd order linear differential equations.

      It computes special function solutions which can be expressed using the 2F1, 1F1 or 0F1 hypergeometric functions.

      @@ -3003,7 +3003,7 @@
      Documentation Version
      -sympy.solvers.ode.ode.ode_1st_power_series(eq, func, order, match)[source]
      +sympy.solvers.ode.ode.ode_1st_power_series(eq, func, order, match)[source]

      The power series solution is a method which gives the Taylor series expansion to the solution of a differential equation.

      For a first order differential equation \(\frac{dy}{dx} = h(x, y)\), a power @@ -3050,7 +3050,7 @@

      Documentation Version
      match,
      -)[source] +)[source]

      Gives a power series solution to a second order homogeneous differential equation with polynomial coefficients at an ordinary point. A homogeneous differential equation is of the form

      @@ -3094,7 +3094,7 @@
      Documentation Version
      match,
      -)[source] +)[source]

      Gives a power series solution to a second order homogeneous differential equation with polynomial coefficients at a regular point. A second order homogeneous differential equation is of the form

      @@ -3153,7 +3153,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_abaco1_simple(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_abaco1_simple(match, comp=False)[source]

      The first heuristic uses the following four sets of assumptions on \(\xi\) and \(\eta\)

      @@ -3193,7 +3193,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_abaco1_product(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_abaco1_product(match, comp=False)[source]

      The second heuristic uses the following two assumptions on \(\xi\) and \(\eta\)

      @@ -3226,7 +3226,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_bivariate(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_bivariate(match, comp=False)[source]

      The third heuristic assumes the infinitesimals \(\xi\) and \(\eta\) to be bi-variate polynomials in \(x\) and \(y\). The assumption made here for the logic below is that \(h\) is a rational function in \(x\) and \(y\) @@ -3245,7 +3245,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_chi(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_chi(match, comp=False)[source]

      The aim of the fourth heuristic is to find the function \(\chi(x, y)\) that satisfies the PDE \(\frac{d\chi}{dx} + h\frac{d\chi}{dx} - \frac{\partial h}{\partial y}\chi = 0\).

      @@ -3266,7 +3266,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_abaco2_similar(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_abaco2_similar(match, comp=False)[source]

      This heuristic uses the following two assumptions on \(\xi\) and \(\eta\)

      @@ -3304,7 +3304,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_function_sum(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_function_sum(match, comp=False)[source]

      This heuristic uses the following two assumptions on \(\xi\) and \(\eta\)

      @@ -3351,7 +3351,7 @@

      Lie heuristicscomp=False,

      -)[source] +)[source]

      This heuristic assumes the presence of unknown functions or known functions with non-integer powers.

        @@ -3387,7 +3387,7 @@

        Lie heuristicscomp=False,

      -)[source] +)[source]

      This heuristic finds if infinitesimals of the form \(\eta = f(x)\), \(\xi = g(y)\) without making any assumptions on \(h\).

      The complete sequence of steps is given in the paper mentioned below.

      @@ -3400,7 +3400,7 @@

      Lie heuristics
      -sympy.solvers.ode.lie_group.lie_heuristic_linear(match, comp=False)[source]
      +sympy.solvers.ode.lie_group.lie_heuristic_linear(match, comp=False)[source]

      This heuristic assumes

      1. \(\xi = ax + by + c\) and

      2. @@ -3431,7 +3431,7 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.riccati_normal(w, x, b1, b2)[source]
        +sympy.solvers.ode.riccati.riccati_normal(w, x, b1, b2)[source]

        Given a solution \(w(x)\) to the equation

        @@ -3454,28 +3454,28 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.riccati_inverse_normal(y, x, b1, b2, bp=None)[source]
        +sympy.solvers.ode.riccati.riccati_inverse_normal(y, x, b1, b2, bp=None)[source]

        Inverse transforming the solution to the normal Riccati ODE to get the solution to the Riccati ODE.

        -sympy.solvers.ode.riccati.riccati_reduced(eq, f, x)[source]
        +sympy.solvers.ode.riccati.riccati_reduced(eq, f, x)[source]

        Convert a Riccati ODE into its corresponding normal Riccati ODE.

        -sympy.solvers.ode.riccati.construct_c(num, den, x, poles, muls)[source]
        +sympy.solvers.ode.riccati.construct_c(num, den, x, poles, muls)[source]

        Helper function to calculate the coefficients in the c-vector for each pole.

        -sympy.solvers.ode.riccati.construct_d(num, den, x, val_inf)[source]
        +sympy.solvers.ode.riccati.construct_d(num, den, x, val_inf)[source]

        Helper function to calculate the coefficients in the d-vector based on the valuation of the function at oo.

        @@ -3483,7 +3483,7 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.rational_laurent_series(num, den, x, r, m, n)[source]
        +sympy.solvers.ode.riccati.rational_laurent_series(num, den, x, r, m, n)[source]

        The function computes the Laurent series coefficients of a rational function.

        @@ -3528,7 +3528,7 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.compute_m_ybar(x, poles, choice, N)[source]
        +sympy.solvers.ode.riccati.compute_m_ybar(x, poles, choice, N)[source]

        Helper function to calculate -

        1. m - The degree bound for the polynomial solution that must be found for the auxiliary @@ -3539,7 +3539,7 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.solve_aux_eq(numa, dena, numy, deny, x, m)[source]
        +sympy.solvers.ode.riccati.solve_aux_eq(numa, dena, numy, deny, x, m)[source]

        Helper function to find a polynomial solution of degree m for the auxiliary differential equation.

        @@ -3547,14 +3547,14 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.remove_redundant_sols(sol1, sol2, x)[source]
        +sympy.solvers.ode.riccati.remove_redundant_sols(sol1, sol2, x)[source]

        Helper function to remove redundant solutions to the differential equation.

        -sympy.solvers.ode.riccati.get_gen_sol_from_part_sol(part_sols, a, x)[source]
        +sympy.solvers.ode.riccati.get_gen_sol_from_part_sol(part_sols, a, x)[source]

        ” Helper function which computes the general solution for a Riccati ODE from its particular @@ -3570,7 +3570,7 @@

        Rational Riccati Solver
        -sympy.solvers.ode.riccati.solve_riccati(fx, x, b0, b1, b2, gensol=False)[source]
        +sympy.solvers.ode.riccati.solve_riccati(fx, x, b0, b1, b2, gensol=False)[source]

        The main function that gives particular/general solutions to Riccati ODEs that have atleast 1 rational particular solution.

        @@ -3583,7 +3583,7 @@

        System of ODEsdsolve() for system of differential equations.

        -sympy.solvers.ode.ode._linear_2eq_order1_type6(x, y, t, r, eq)[source]
        +sympy.solvers.ode.ode._linear_2eq_order1_type6(x, y, t, r, eq)[source]

        The equations of this type of ode are .

        @@ -3610,7 +3610,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._linear_2eq_order1_type7(x, y, t, r, eq)[source]
        +sympy.solvers.ode.ode._linear_2eq_order1_type7(x, y, t, r, eq)[source]

        The equations of this type of ode are .

        @@ -3653,7 +3653,7 @@

        System of ODEs
        -sympy.solvers.ode.systems.linear_ode_to_matrix(eqs, funcs, t, order)[source]
        +sympy.solvers.ode.systems.linear_ode_to_matrix(eqs, funcs, t, order)[source]

        Convert a linear system of ODEs to matrix form

        Parameters:
        @@ -3782,7 +3782,7 @@

        System of ODEs
        -sympy.solvers.ode.systems.canonical_odes(eqs, funcs, t)[source]
        +sympy.solvers.ode.systems.canonical_odes(eqs, funcs, t)[source]

        Function that solves for highest order derivatives in a system

        Parameters:
        @@ -3843,7 +3843,7 @@

        System of ODEs
        -sympy.solvers.ode.systems.linodesolve_type(A, t, b=None)[source]
        +sympy.solvers.ode.systems.linodesolve_type(A, t, b=None)[source]

        Helper function that determines the type of the system of ODEs for solving with sympy.solvers.ode.systems.linodesolve()

        Parameters:
        @@ -3932,7 +3932,7 @@

        System of ODEs
        -sympy.solvers.ode.systems.matrix_exp_jordan_form(A, t)[source]
        +sympy.solvers.ode.systems.matrix_exp_jordan_form(A, t)[source]

        Matrix exponential \(\exp(A*t)\) for the matrix A and scalar t.

        Parameters:
        @@ -3993,7 +3993,7 @@

        System of ODEs
        -sympy.solvers.ode.systems.matrix_exp(A, t)[source]
        +sympy.solvers.ode.systems.matrix_exp(A, t)[source]

        Matrix exponential \(\exp(A*t)\) for the matrix A and scalar t.

        Parameters:
        @@ -4089,7 +4089,7 @@

        System of ODEstau=None,

        -)[source] +)[source]

        System of n equations linear first-order differential equations

        Parameters:
        @@ -4308,7 +4308,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_2eq_order1_type1(x, y, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_2eq_order1_type1(x, y, t, eq)[source]

        Equations:

        @@ -4339,7 +4339,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_2eq_order1_type2(x, y, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_2eq_order1_type2(x, y, t, eq)[source]

        Equations:

        @@ -4370,7 +4370,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_2eq_order1_type3(x, y, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_2eq_order1_type3(x, y, t, eq)[source]

        Autonomous system of general form

        @@ -4395,7 +4395,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_2eq_order1_type4(x, y, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_2eq_order1_type4(x, y, t, eq)[source]

        Equation:

        @@ -4418,7 +4418,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_2eq_order1_type5(func, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_2eq_order1_type5(func, t, eq)[source]

        Clairaut system of ODEs

        @@ -4442,7 +4442,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_3eq_order1_type1(x, y, z, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_3eq_order1_type1(x, y, z, t, eq)[source]

        Equations:

        @@ -4467,7 +4467,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_3eq_order1_type2(x, y, z, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_3eq_order1_type2(x, y, z, t, eq)[source]

        Equations:

        @@ -4500,7 +4500,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_3eq_order1_type3(x, y, z, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_3eq_order1_type3(x, y, z, t, eq)[source]

        Equations:

        @@ -4530,7 +4530,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_3eq_order1_type4(x, y, z, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_3eq_order1_type4(x, y, z, t, eq)[source]

        Equations:

        @@ -4560,7 +4560,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._nonlinear_3eq_order1_type5(x, y, z, t, eq)[source]
        +sympy.solvers.ode.ode._nonlinear_3eq_order1_type5(x, y, z, t, eq)[source]
        \[x' = x (c F_2 - b F_3), \enspace y' = y (a F_3 - c F_1), \enspace z' = z (b F_1 - a F_2)\]
        @@ -4798,7 +4798,7 @@

        System of ODEs
        -sympy.solvers.ode.ode._handle_Integral(expr, func, hint)[source]
        +sympy.solvers.ode.ode._handle_Integral(expr, func, hint)[source]

        Converts a solution with Integrals in it into an actual solution.

        For most hints, this simply runs expr.doit().

        diff --git a/dev/modules/solvers/pde.html b/dev/modules/solvers/pde.html index aa3a6145811..eaa2f7997a7 100644 --- a/dev/modules/solvers/pde.html +++ b/dev/modules/solvers/pde.html @@ -808,7 +808,7 @@

        User Functionsfrom sympy import *. They are intended for user use.

        -sympy.solvers.pde.pde_separate(eq, fun, sep, strategy='mul')[source]
        +sympy.solvers.pde.pde_separate(eq, fun, sep, strategy='mul')[source]

        Separate variables in partial differential equation either by additive or multiplicative separation approach. It tries to rewrite an equation so that one of the specified variables occurs on a different side of the @@ -849,7 +849,7 @@

        User Functions
        -sympy.solvers.pde.pde_separate_add(eq, fun, sep)[source]
        +sympy.solvers.pde.pde_separate_add(eq, fun, sep)[source]

        Helper function for searching additive separable solutions.

        Consider an equation of two independent variables x, y and a dependent variable w, we look for the product of two functions depending on different @@ -870,7 +870,7 @@

        User Functions
        -sympy.solvers.pde.pde_separate_mul(eq, fun, sep)[source]
        +sympy.solvers.pde.pde_separate_mul(eq, fun, sep)[source]

        Helper function for searching multiplicative separable solutions.

        Consider an equation of two independent variables x, y and a dependent variable w, we look for the product of two functions depending on different @@ -902,7 +902,7 @@

        User Functions**kwargs,

        -)[source] +)[source]

        Solves any (supported) kind of partial differential equation.

        Usage

        @@ -1015,7 +1015,7 @@

        User Functions**kwargs,

        -)[source] +)[source]

        Returns a tuple of possible pdsolve() classifications for a PDE.

        The tuple is ordered so that first item is the classification that pdsolve() uses to solve the PDE by default. In general, @@ -1058,7 +1058,7 @@

        User Functionssolve_for_func=True,

        -)[source] +)[source]

        Checks if the given solution satisfies the partial differential equation.

        pde is the partial differential equation which can be given in the @@ -1112,7 +1112,7 @@

        Hint Methodssolvefun,

        -)[source] +)[source]

        Solves a first order linear homogeneous partial differential equation with constant coefficients.

        The general form of this partial differential equation is

        @@ -1182,7 +1182,7 @@

        Hint Methodssolvefun,

        -)[source] +)[source]

        Solves a first order linear partial differential equation with constant coefficients.

        The general form of this partial differential equation is

        @@ -1267,7 +1267,7 @@

        Hint Methodssolvefun,

        -)[source] +)[source]

        Solves a first order linear partial differential equation with variable coefficients. The general form of this partial differential equation is

        diff --git a/dev/modules/solvers/solvers.html b/dev/modules/solvers/solvers.html index 50ed898f736..384252c4276 100644 --- a/dev/modules/solvers/solvers.html +++ b/dev/modules/solvers/solvers.html @@ -835,7 +835,7 @@
        Documentation Version
        is the symbol that we want to solve the equation for.

        -sympy.solvers.solvers.solve(f, *symbols, **flags)[source]
        +sympy.solvers.solvers.solve(f, *symbols, **flags)[source]

        Algebraically solves equations and systems of equations.

        Parameters:
        @@ -1325,7 +1325,7 @@
        Documentation Version
        -sympy.solvers.solvers.solve_linear(lhs, rhs=0, symbols=[], exclude=[])[source]
        +sympy.solvers.solvers.solve_linear(lhs, rhs=0, symbols=[], exclude=[])[source]

        Return a tuple derived from f = lhs - rhs that is one of the following: (0, 1), (0, 0), (symbol, solution), (n, d).

        Explanation

        @@ -1425,7 +1425,7 @@
        Documentation Version
        -sympy.solvers.solvers.solve_linear_system(system, *symbols, **flags)[source]
        +sympy.solvers.solvers.solve_linear_system(system, *symbols, **flags)[source]

        Solve system of \(N\) linear equations with \(M\) variables, which means both under- and overdetermined systems are supported.

        Explanation

        @@ -1468,7 +1468,7 @@
        Documentation Version
        -sympy.solvers.solvers.solve_linear_system_LU(matrix, syms)[source]
        +sympy.solvers.solvers.solve_linear_system_LU(matrix, syms)[source]

        Solves the augmented matrix system using LUsolve and returns a dictionary in which solutions are keyed to the symbols of syms as ordered.

        Explanation

        @@ -1502,7 +1502,7 @@
        Documentation Version
        **flags,
        -)[source] +)[source]

        Solve a system of equations in \(k\) parameters that is formed by matching coefficients in variables coeffs that are on factors dependent on the remaining variables (or those given @@ -1565,7 +1565,7 @@

        Documentation Version
        -sympy.solvers.solvers.nsolve(*args, dict=False, **kwargs)[source]
        +sympy.solvers.solvers.nsolve(*args, dict=False, **kwargs)[source]

        Solve a nonlinear equation system numerically: nsolve(f, [args,] x0, modules=['mpmath'], **kwargs).

        Explanation

        @@ -1667,7 +1667,7 @@
        Documentation Version
        -sympy.solvers.solvers.checksol(f, symbol, sol=None, **flags)[source]
        +sympy.solvers.solvers.checksol(f, symbol, sol=None, **flags)[source]

        Checks whether sol is a solution of equation f == 0.

        Explanation

        Input can be either a single symbol and corresponding value @@ -1715,7 +1715,7 @@

        Documentation Version
        -sympy.solvers.solvers.unrad(eq, *syms, **flags)[source]
        +sympy.solvers.solvers.unrad(eq, *syms, **flags)[source]

        Remove radicals with symbolic arguments and return (eq, cov), None, or raise an error.

        Explanation

        @@ -1794,7 +1794,7 @@

        Partial Differential Equations (PDEs)

        -sympy.solvers.deutils.ode_order(expr, func)[source]
        +sympy.solvers.deutils.ode_order(expr, func)[source]

        Returns the order of a given differential equation with respect to func.

        This function is implemented recursively.

        @@ -1819,7 +1819,7 @@

        Deutils (Utilities for solving ODE’s and PDE’s)

        Recurrence Equations

        -sympy.solvers.recurr.rsolve(f, y, init=None)[source]
        +sympy.solvers.recurr.rsolve(f, y, init=None)[source]

        Solve univariate recurrence with rational coefficients.

        Given \(k\)-th order linear recurrence \(\operatorname{L} y = f\), or equivalently:

        @@ -1875,7 +1875,7 @@

        Deutils (Utilities for solving ODE’s and PDE’s)
        -sympy.solvers.recurr.rsolve_poly(coeffs, f, n, shift=0, **hints)[source]
        +sympy.solvers.recurr.rsolve_poly(coeffs, f, n, shift=0, **hints)[source]

        Given linear recurrence operator \(\operatorname{L}\) of order \(k\) with polynomial coefficients and inhomogeneous equation \(\operatorname{L} y = f\), where \(f\) is a polynomial, we seek for @@ -1936,7 +1936,7 @@

        Deutils (Utilities for solving ODE’s and PDE’s)
        -sympy.solvers.recurr.rsolve_ratio(coeffs, f, n, **hints)[source]
        +sympy.solvers.recurr.rsolve_ratio(coeffs, f, n, **hints)[source]

        Given linear recurrence operator \(\operatorname{L}\) of order \(k\) with polynomial coefficients and inhomogeneous equation \(\operatorname{L} y = f\), where \(f\) is a polynomial, we seek @@ -1989,7 +1989,7 @@

        Deutils (Utilities for solving ODE’s and PDE’s)
        -sympy.solvers.recurr.rsolve_hyper(coeffs, f, n, **hints)[source]
        +sympy.solvers.recurr.rsolve_hyper(coeffs, f, n, **hints)[source]

        Given linear recurrence operator \(\operatorname{L}\) of order \(k\) with polynomial coefficients and inhomogeneous equation \(\operatorname{L} y = f\) we seek for all hypergeometric solutions @@ -2061,7 +2061,7 @@

        Systems of Polynomial Equations**args,

        -)[source] +)[source]

        Return a list of solutions for the system of polynomial equations or else None.

        @@ -2117,7 +2117,7 @@

        Systems of Polynomial Equations
        -sympy.solvers.polysys.solve_triangulated(polys, *gens, **args)[source]
        +sympy.solvers.polysys.solve_triangulated(polys, *gens, **args)[source]

        Solve a polynomial system using Gianni-Kalkbrenner algorithm.

        The algorithm proceeds by computing one Groebner basis in the ground domain and then by iteratively computing polynomial factorizations in @@ -2174,7 +2174,7 @@

        Systems of Polynomial Equations**kwargs: Any,

        -) list[list[Expr]][source] +) list[list[Expr]][source]

        Factorizes a system of polynomial equations into irreducible subsystems.

        @@ -2270,7 +2270,7 @@

        Systems of Polynomial Equations**kwargs: Any,

        -) Boolean[source] +) Boolean[source]

        Factorizes a system of polynomial equations into irreducible DNF.

        The system of expressions(eqs) is taken and a Boolean combination of equations is returned that represents the same solution set. @@ -2350,7 +2350,7 @@

        Systems of Polynomial Equations**kwargs: Any,

        -) list[list[Expr]][source] +) list[list[Expr]][source]

        Factorizes a polynomial system into irreducible components and returns both generic and degenerate solutions.

        @@ -2416,7 +2416,7 @@

        Systems of Polynomial Equationspolys: list[Poly],

        -) list[list[Poly]][source] +) list[list[Poly]][source]

        Factors a system of polynomial equations into irreducible subsystems

        Core implementation that works directly with Poly instances.

        @@ -2489,7 +2489,7 @@

        Inequalities

        Linear Programming (Optimization)

        -sympy.solvers.simplex.lpmax(f, constr)[source]
        +sympy.solvers.simplex.lpmax(f, constr)[source]

        return maximum of linear equation f under linear constraints expressed using Ge, Le or Eq.

        All variables are unbounded unless constrained.

        @@ -2523,7 +2523,7 @@

        Inequalities
        -sympy.solvers.simplex.lpmin(f, constr)[source]
        +sympy.solvers.simplex.lpmin(f, constr)[source]

        return minimum of linear equation f under linear constraints expressed using Ge, Le or Eq.

        All variables are unbounded unless constrained.

        @@ -2570,7 +2570,7 @@

        Inequalitiesbounds=None,

        -)[source] +)[source]

        Return the minimization of c*x with the given constraints A*x <= b and A_eq*x = b_eq. Unless bounds are given, variables will have nonnegative values in the solution.

        diff --git a/dev/modules/solvers/solveset.html b/dev/modules/solvers/solveset.html index b9cdd3e45f9..2c4550cefd8 100644 --- a/dev/modules/solvers/solveset.html +++ b/dev/modules/solvers/solveset.html @@ -1341,7 +1341,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.solveset(f, symbol=None, domain=Complexes)[source]
        +sympy.solvers.solveset.solveset(f, symbol=None, domain=Complexes)[source]

        Solves a given inequality or equation with set as output

        Parameters:
        @@ -1457,24 +1457,24 @@

        Solveset Module Reference
        -sympy.solvers.solveset.solveset_real(f, symbol)[source]
        +sympy.solvers.solveset.solveset_real(f, symbol)[source]

        -sympy.solvers.solveset.solveset_complex(f, symbol)[source]
        +sympy.solvers.solveset.solveset_complex(f, symbol)[source]
        -sympy.solvers.solveset.invert_real(f_x, y, x)[source]
        +sympy.solvers.solveset.invert_real(f_x, y, x)[source]

        Inverts a real-valued function. Same as invert_complex(), but sets the domain to S.Reals before inverting.

        -sympy.solvers.solveset.invert_complex(f_x, y, x, domain=Complexes)[source]
        +sympy.solvers.solveset.invert_complex(f_x, y, x, domain=Complexes)[source]

        Reduce the complex valued equation \(f(x) = y\) to a set of equations

        @@ -1530,7 +1530,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.domain_check(f, symbol, p)[source]
        +sympy.solvers.solveset.domain_check(f, symbol, p)[source]

        Returns False if point p is infinite or any subexpression of f is infinite or becomes so after replacing symbol with p. If none of these conditions is met then True will be returned.

        @@ -1566,7 +1566,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.solvify(f, symbol, domain)[source]
        +sympy.solvers.solveset.solvify(f, symbol, domain)[source]

        Solves an equation using solveset and returns the solution in accordance with the \(solve\) output API.

        @@ -1608,7 +1608,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.linear_eq_to_matrix(equations, *symbols)[source]
        +sympy.solvers.solveset.linear_eq_to_matrix(equations, *symbols)[source]

        Converts a given System of Equations into Matrix form. Here equations must be a linear system of equations in symbols. Element M[i, j] corresponds to the coefficient of the jth symbol in the ith equation.

        @@ -1693,7 +1693,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.linsolve(system, *symbols)[source]
        +sympy.solvers.solveset.linsolve(system, *symbols)[source]

        Solve system of \(N\) linear equations with \(M\) variables; both underdetermined and overdetermined systems are supported. The possible number of solutions is zero, one or infinite. @@ -1889,7 +1889,7 @@

        Solveset Module Reference
        -sympy.solvers.solveset.nonlinsolve(system, *symbols)[source]
        +sympy.solvers.solveset.nonlinsolve(system, *symbols)[source]

        Solve system of \(N\) nonlinear equations with \(M\) variables, which means both under and overdetermined systems are supported. Positive dimensional system is also supported (A system with infinitely many solutions is said @@ -2047,7 +2047,7 @@

        Solveset Module Reference

        -sympy.solvers.solveset._transolve(f, symbol, domain)[source]
        +sympy.solvers.solveset._transolve(f, symbol, domain)[source]

        Function to solve transcendental equations. It is a helper to solveset and should be used internally. _transolve currently supports the following class of equations:

        @@ -2220,7 +2220,7 @@

        transolve
        -sympy.solvers.solveset._is_exponential(f, symbol)[source]
        +sympy.solvers.solveset._is_exponential(f, symbol)[source]

        Return True if one or more terms contain symbol only in exponents, else False.

        @@ -2260,7 +2260,7 @@

        transolve
        -sympy.solvers.solveset._solve_exponential(lhs, rhs, symbol, domain)[source]
        +sympy.solvers.solveset._solve_exponential(lhs, rhs, symbol, domain)[source]

        Helper function for solving (supported) exponential equations.

        Exponential equations are the sum of (currently) at most two terms with one or both of them having a power with a @@ -2340,7 +2340,7 @@

        transolve
        -sympy.solvers.solveset._solve_logarithm(lhs, rhs, symbol, domain)[source]
        +sympy.solvers.solveset._solve_logarithm(lhs, rhs, symbol, domain)[source]

        Helper to solve logarithmic equations which are reducible to a single instance of \(\log\).

        Logarithmic equations are (currently) the equations that contains @@ -2431,7 +2431,7 @@

        transolve
        -sympy.solvers.solveset._is_logarithmic(f, symbol)[source]
        +sympy.solvers.solveset._is_logarithmic(f, symbol)[source]

        Return True if the equation is in the form \(a\log(f(x)) + b\log(g(x)) + ... + c\) else False.

        diff --git a/dev/modules/stats.html b/dev/modules/stats.html index 179d150e534..843963c8774 100644 --- a/dev/modules/stats.html +++ b/dev/modules/stats.html @@ -928,7 +928,7 @@

        Random Variable TypesFinite Types

        -sympy.stats.DiscreteUniform(name, items)[source]
        +sympy.stats.DiscreteUniform(name, items)[source]

        Create a Finite Random Variable representing a uniform distribution over the input set.

        @@ -972,7 +972,7 @@

        Finite Types
        -sympy.stats.Die(name, sides=6)[source]
        +sympy.stats.Die(name, sides=6)[source]

        Create a Finite Random Variable representing a fair die.

        Parameters:
        @@ -1012,7 +1012,7 @@

        Finite Types
        -sympy.stats.Bernoulli(name, p, succ=1, fail=0)[source]
        +sympy.stats.Bernoulli(name, p, succ=1, fail=0)[source]

        Create a Finite Random Variable representing a Bernoulli process.

        Parameters:
        @@ -1063,7 +1063,7 @@

        Finite Types
        -sympy.stats.Coin(name, p=1 / 2)[source]
        +sympy.stats.Coin(name, p=1 / 2)[source]

        Create a Finite Random Variable representing a Coin toss.

        This is an equivalent of a Bernoulli random variable with “H” and “T” as success and failure events respectively.

        @@ -1108,7 +1108,7 @@

        Finite Types
        -sympy.stats.Binomial(name, n, p, succ=1, fail=0)[source]
        +sympy.stats.Binomial(name, n, p, succ=1, fail=0)[source]

        Create a Finite Random Variable representing a binomial distribution.

        Parameters:
        @@ -1167,7 +1167,7 @@

        Finite Types
        -sympy.stats.BetaBinomial(name, n, alpha, beta)[source]
        +sympy.stats.BetaBinomial(name, n, alpha, beta)[source]

        Create a Finite Random Variable representing a Beta-binomial distribution.

        Parameters:
        @@ -1206,7 +1206,7 @@

        Finite Types
        -sympy.stats.Hypergeometric(name, N, m, n)[source]
        +sympy.stats.Hypergeometric(name, N, m, n)[source]

        Create a Finite Random Variable representing a hypergeometric distribution.

        Parameters:
        @@ -1251,7 +1251,7 @@

        Finite Types
        -sympy.stats.FiniteRV(name, density, **kwargs)[source]
        +sympy.stats.FiniteRV(name, density, **kwargs)[source]

        Create a Finite Random Variable given a dict representing the density.

        Parameters:
        @@ -1292,7 +1292,7 @@

        Finite Types
        -sympy.stats.Rademacher(name)[source]
        +sympy.stats.Rademacher(name)[source]

        Create a Finite Random Variable representing a Rademacher distribution.

        Returns:
        @@ -1326,7 +1326,7 @@

        Finite Types

        -sympy.stats.Geometric(name, p)[source]
        +sympy.stats.Geometric(name, p)[source]

        Create a discrete random variable with a Geometric distribution.

        Parameters:
        @@ -1381,7 +1381,7 @@

        Discrete Types
        -sympy.stats.Hermite(name, a1, a2)[source]
        +sympy.stats.Hermite(name, a1, a2)[source]

        Create a discrete random variable with a Hermite distribution.

        Parameters:
        @@ -1435,7 +1435,7 @@

        Discrete Types
        -sympy.stats.Poisson(name, lamda)[source]
        +sympy.stats.Poisson(name, lamda)[source]

        Create a discrete random variable with a Poisson distribution.

        Parameters:
        @@ -1490,7 +1490,7 @@

        Discrete Types
        -sympy.stats.Logarithmic(name, p)[source]
        +sympy.stats.Logarithmic(name, p)[source]

        Create a discrete random variable with a Logarithmic distribution.

        Parameters:
        @@ -1545,7 +1545,7 @@

        Discrete Types
        -sympy.stats.NegativeBinomial(name, r, p)[source]
        +sympy.stats.NegativeBinomial(name, r, p)[source]

        Create a discrete random variable with a Negative Binomial distribution.

        Parameters:
        @@ -1602,7 +1602,7 @@

        Discrete Types
        -sympy.stats.Skellam(name, mu1, mu2)[source]
        +sympy.stats.Skellam(name, mu1, mu2)[source]

        Create a discrete random variable with a Skellam distribution.

        Parameters:
        @@ -1657,7 +1657,7 @@

        Discrete Types
        -sympy.stats.YuleSimon(name, rho)[source]
        +sympy.stats.YuleSimon(name, rho)[source]

        Create a discrete random variable with a Yule-Simon distribution.

        Parameters:
        @@ -1708,7 +1708,7 @@

        Discrete Types
        -sympy.stats.Zeta(name, s)[source]
        +sympy.stats.Zeta(name, s)[source]

        Create a discrete random variable with a Zeta distribution.

        Parameters:
        @@ -1762,7 +1762,7 @@

        Discrete Types

        -sympy.stats.Arcsin(name, a=0, b=1)[source]
        +sympy.stats.Arcsin(name, a=0, b=1)[source]

        Create a Continuous Random Variable with an arcsin distribution.

        The density of the arcsin distribution is given by

        @@ -1813,7 +1813,7 @@

        Continuous Types
        -sympy.stats.Benini(name, alpha, beta, sigma)[source]
        +sympy.stats.Benini(name, alpha, beta, sigma)[source]

        Create a Continuous Random Variable with a Benini distribution.

        The density of the Benini distribution is given by

        @@ -1877,7 +1877,7 @@

        Continuous Types
        -sympy.stats.Beta(name, alpha, beta)[source]
        +sympy.stats.Beta(name, alpha, beta)[source]

        Create a Continuous Random Variable with a Beta distribution.

        The density of the Beta distribution is given by

        @@ -1938,7 +1938,7 @@

        Continuous Types
        -sympy.stats.BetaNoncentral(name, alpha, beta, lamda)[source]
        +sympy.stats.BetaNoncentral(name, alpha, beta, lamda)[source]

        Create a Continuous Random Variable with a Type I Noncentral Beta distribution.

        The density of the Noncentral Beta distribution is given by

        @@ -2009,7 +2009,7 @@

        Continuous Types
        -sympy.stats.BetaPrime(name, alpha, beta)[source]
        +sympy.stats.BetaPrime(name, alpha, beta)[source]

        Create a continuous random variable with a Beta prime distribution.

        The density of the Beta prime distribution is given by

        @@ -2062,7 +2062,7 @@

        Continuous Types
        -sympy.stats.BoundedPareto(name, alpha, left, right)[source]
        +sympy.stats.BoundedPareto(name, alpha, left, right)[source]

        Create a continuous random variable with a Bounded Pareto distribution.

        The density of the Bounded Pareto distribution is given by

        @@ -2113,7 +2113,7 @@

        Continuous Types
        -sympy.stats.Cauchy(name, x0, gamma)[source]
        +sympy.stats.Cauchy(name, x0, gamma)[source]

        Create a continuous random variable with a Cauchy distribution.

        The density of the Cauchy distribution is given by

        @@ -2161,7 +2161,7 @@

        Continuous Types
        -sympy.stats.Chi(name, k)[source]
        +sympy.stats.Chi(name, k)[source]

        Create a continuous random variable with a Chi distribution.

        The density of the Chi distribution is given by

        @@ -2212,7 +2212,7 @@

        Continuous Types
        -sympy.stats.ChiNoncentral(name, k, l)[source]
        +sympy.stats.ChiNoncentral(name, k, l)[source]

        Create a continuous random variable with a non-central Chi distribution.

        Parameters:
        @@ -2266,7 +2266,7 @@

        Continuous Types
        -sympy.stats.ChiSquared(name, k)[source]
        +sympy.stats.ChiSquared(name, k)[source]

        Create a continuous random variable with a Chi-squared distribution.

        Parameters:
        @@ -2330,7 +2330,7 @@

        Continuous Types
        -sympy.stats.Dagum(name, p, a, b)[source]
        +sympy.stats.Dagum(name, p, a, b)[source]

        Create a continuous random variable with a Dagum distribution.

        Parameters:
        @@ -2392,7 +2392,7 @@

        Continuous Types
        -sympy.stats.Davis(name, b, n, mu)[source]
        +sympy.stats.Davis(name, b, n, mu)[source]

        Create a continuous random variable with Davis distribution.

        Parameters:
        @@ -2448,7 +2448,7 @@

        Continuous Types
        -sympy.stats.Erlang(name, k, l)[source]
        +sympy.stats.Erlang(name, k, l)[source]

        Create a continuous random variable with an Erlang distribution.

        Parameters:
        @@ -2519,7 +2519,7 @@

        Continuous Types
        -sympy.stats.ExGaussian(name, mean, std, rate)[source]
        +sympy.stats.ExGaussian(name, mean, std, rate)[source]

        Create a continuous random variable with an Exponentially modified Gaussian (EMG) distribution.

        @@ -2606,7 +2606,7 @@

        Continuous Types
        -sympy.stats.Exponential(name, rate)[source]
        +sympy.stats.Exponential(name, rate)[source]

        Create a continuous random variable with an Exponential distribution.

        Parameters:
        @@ -2689,7 +2689,7 @@

        Continuous Types
        -sympy.stats.FDistribution(name, d1, d2)[source]
        +sympy.stats.FDistribution(name, d1, d2)[source]

        Create a continuous random variable with a F distribution.

        Parameters:
        @@ -2749,7 +2749,7 @@

        Continuous Types
        -sympy.stats.FisherZ(name, d1, d2)[source]
        +sympy.stats.FisherZ(name, d1, d2)[source]

        Create a Continuous Random Variable with an Fisher’s Z distribution.

        Parameters:
        @@ -2814,7 +2814,7 @@

        Continuous Types
        -sympy.stats.Frechet(name, a, s=1, m=0)[source]
        +sympy.stats.Frechet(name, a, s=1, m=0)[source]

        Create a continuous random variable with a Frechet distribution.

        Parameters:
        @@ -2867,7 +2867,7 @@

        Continuous Types
        -sympy.stats.Gamma(name, k, theta)[source]
        +sympy.stats.Gamma(name, k, theta)[source]

        Create a continuous random variable with a Gamma distribution.

        Parameters:
        @@ -2944,7 +2944,7 @@

        Continuous Types
        -sympy.stats.GammaInverse(name, a, b)[source]
        +sympy.stats.GammaInverse(name, a, b)[source]

        Create a continuous random variable with an inverse Gamma distribution.

        Parameters:
        @@ -3001,7 +3001,7 @@

        Continuous Types
        -sympy.stats.Gompertz(name, b, eta)[source]
        +sympy.stats.Gompertz(name, b, eta)[source]

        Create a Continuous Random Variable with Gompertz distribution.

        Parameters:
        @@ -3047,7 +3047,7 @@

        Continuous Types
        -sympy.stats.Gumbel(name, beta, mu, minimum=False)[source]
        +sympy.stats.Gumbel(name, beta, mu, minimum=False)[source]

        Create a Continuous Random Variable with Gumbel distribution.

        Parameters:
        @@ -3110,7 +3110,7 @@

        Continuous Types
        -sympy.stats.Kumaraswamy(name, a, b)[source]
        +sympy.stats.Kumaraswamy(name, a, b)[source]

        Create a Continuous Random Variable with a Kumaraswamy distribution.

        Parameters:
        @@ -3163,7 +3163,7 @@

        Continuous Types
        -sympy.stats.Laplace(name, mu, b)[source]
        +sympy.stats.Laplace(name, mu, b)[source]

        Create a continuous random variable with a Laplace distribution.

        Parameters:
        @@ -3230,7 +3230,7 @@

        Continuous Types
        -sympy.stats.Levy(name, mu, c)[source]
        +sympy.stats.Levy(name, mu, c)[source]

        Create a continuous random variable with a Levy distribution.

        The density of the Levy distribution is given by

        @@ -3288,7 +3288,7 @@

        Continuous Types
        -sympy.stats.Logistic(name, mu, s)[source]
        +sympy.stats.Logistic(name, mu, s)[source]

        Create a continuous random variable with a logistic distribution.

        Parameters:
        @@ -3341,7 +3341,7 @@

        Continuous Types
        -sympy.stats.LogLogistic(name, alpha, beta)[source]
        +sympy.stats.LogLogistic(name, alpha, beta)[source]

        Create a continuous random variable with a log-logistic distribution. The distribution is unimodal when beta > 1.

        @@ -3407,7 +3407,7 @@

        Continuous Types
        -sympy.stats.LogNormal(name, mean, std)[source]
        +sympy.stats.LogNormal(name, mean, std)[source]

        Create a continuous random variable with a log-normal distribution.

        Parameters:
        @@ -3480,7 +3480,7 @@

        Continuous Types
        -sympy.stats.Lomax(name, alpha, lamda)[source]
        +sympy.stats.Lomax(name, alpha, lamda)[source]

        Create a continuous random variable with a Lomax distribution.

        Parameters:
        @@ -3530,7 +3530,7 @@

        Continuous Types
        -sympy.stats.Maxwell(name, a)[source]
        +sympy.stats.Maxwell(name, a)[source]

        Create a continuous random variable with a Maxwell distribution.

        Parameters:
        @@ -3586,7 +3586,7 @@

        Continuous Types
        -sympy.stats.Moyal(name, mu, sigma)[source]
        +sympy.stats.Moyal(name, mu, sigma)[source]

        Create a continuous random variable with a Moyal distribution.

        Parameters:
        @@ -3638,7 +3638,7 @@

        Continuous Types
        -sympy.stats.Nakagami(name, mu, omega)[source]
        +sympy.stats.Nakagami(name, mu, omega)[source]

        Create a continuous random variable with a Nakagami distribution.

        Parameters:
        @@ -3709,7 +3709,7 @@

        Continuous Types
        -sympy.stats.Normal(name, mean, std)[source]
        +sympy.stats.Normal(name, mean, std)[source]

        Create a continuous random variable with a Normal distribution.

        Parameters:
        @@ -3807,7 +3807,7 @@

        Continuous Types
        -sympy.stats.Pareto(name, xm, alpha)[source]
        +sympy.stats.Pareto(name, xm, alpha)[source]

        Create a continuous random variable with the Pareto distribution.

        Parameters:
        @@ -3857,7 +3857,7 @@

        Continuous Types
        -sympy.stats.PowerFunction(name, alpha, a, b)[source]
        +sympy.stats.PowerFunction(name, alpha, a, b)[source]

        Creates a continuous random variable with a Power Function Distribution.

        Parameters:
        @@ -3922,7 +3922,7 @@

        Continuous Types
        -sympy.stats.QuadraticU(name, a, b)[source]
        +sympy.stats.QuadraticU(name, a, b)[source]

        Create a Continuous Random Variable with a U-quadratic distribution.

        Parameters:
        @@ -3977,7 +3977,7 @@

        Continuous Types
        -sympy.stats.RaisedCosine(name, mu, s)[source]
        +sympy.stats.RaisedCosine(name, mu, s)[source]

        Create a Continuous Random Variable with a raised cosine distribution.

        Parameters:
        @@ -4030,7 +4030,7 @@

        Continuous Types
        -sympy.stats.Rayleigh(name, sigma)[source]
        +sympy.stats.Rayleigh(name, sigma)[source]

        Create a continuous random variable with a Rayleigh distribution.

        Parameters:
        @@ -4086,7 +4086,7 @@

        Continuous Types
        -sympy.stats.Reciprocal(name, a, b)[source]
        +sympy.stats.Reciprocal(name, a, b)[source]

        Creates a continuous random variable with a reciprocal distribution.

        Parameters:
        @@ -4121,7 +4121,7 @@

        Continuous Types
        -sympy.stats.StudentT(name, nu)[source]
        +sympy.stats.StudentT(name, nu)[source]

        Create a continuous random variable with a student’s t distribution.

        Parameters:
        @@ -4186,7 +4186,7 @@

        Continuous Types
        -sympy.stats.ShiftedGompertz(name, b, eta)[source]
        +sympy.stats.ShiftedGompertz(name, b, eta)[source]

        Create a continuous random variable with a Shifted Gompertz distribution.

        Parameters:
        @@ -4232,7 +4232,7 @@

        Continuous Types
        -sympy.stats.Trapezoidal(name, a, b, c, d)[source]
        +sympy.stats.Trapezoidal(name, a, b, c, d)[source]

        Create a continuous random variable with a trapezoidal distribution.

        Parameters:
        @@ -4299,7 +4299,7 @@

        Continuous Types
        -sympy.stats.Triangular(name, a, b, c)[source]
        +sympy.stats.Triangular(name, a, b, c)[source]

        Create a continuous random variable with a triangular distribution.

        Parameters:
        @@ -4368,7 +4368,7 @@

        Continuous Types
        -sympy.stats.Uniform(name, left, right)[source]
        +sympy.stats.Uniform(name, left, right)[source]

        Create a continuous random variable with a uniform distribution.

        Parameters:
        @@ -4433,7 +4433,7 @@

        Continuous Types
        -sympy.stats.UniformSum(name, n)[source]
        +sympy.stats.UniformSum(name, n)[source]

        Create a continuous random variable with an Irwin-Hall distribution.

        Parameters:
        @@ -4503,7 +4503,7 @@

        Continuous Types
        -sympy.stats.VonMises(name, mu, k)[source]
        +sympy.stats.VonMises(name, mu, k)[source]

        Create a Continuous Random Variable with a von Mises distribution.

        Parameters:
        @@ -4563,7 +4563,7 @@

        Continuous Types
        -sympy.stats.Wald(name, mean, shape)[source]
        +sympy.stats.Wald(name, mean, shape)[source]

        Create a continuous random variable with an Inverse Gaussian distribution. Inverse Gaussian distribution is also known as Wald distribution.

        @@ -4638,7 +4638,7 @@

        Continuous Types
        -sympy.stats.Weibull(name, alpha, beta)[source]
        +sympy.stats.Weibull(name, alpha, beta)[source]

        Create a continuous random variable with a Weibull distribution.

        Parameters:
        @@ -4699,7 +4699,7 @@

        Continuous Types
        -sympy.stats.WignerSemicircle(name, R)[source]
        +sympy.stats.WignerSemicircle(name, R)[source]

        Create a continuous random variable with a Wigner semicircle distribution.

        Parameters:
        @@ -4760,7 +4760,7 @@

        Continuous Types**kwargs,

        -)[source] +)[source]

        Create a Continuous Random Variable given the following:

        Parameters:
        @@ -4814,7 +4814,7 @@

        Continuous Types

        -sympy.stats.JointRV(symbol, pdf, _set=None)[source]
        +sympy.stats.JointRV(symbol, pdf, _set=None)[source]

        Create a Joint Random Variable where each of its component is continuous, given the following:

        @@ -4849,7 +4849,7 @@

        Joint Types
        -sympy.stats.marginal_distribution(rv, *indices)[source]
        +sympy.stats.marginal_distribution(rv, *indices)[source]

        Marginal distribution function of a joint random variable.

        Parameters:
        @@ -4874,7 +4874,7 @@

        Joint Types
        -sympy.stats.MultivariateNormal(name, mu, sigma)[source]
        +sympy.stats.MultivariateNormal(name, mu, sigma)[source]

        Creates a continuous random variable with Multivariate Normal Distribution.

        The density of the multivariate normal distribution can be found at [1].

        @@ -4932,7 +4932,7 @@

        Joint Types
        -sympy.stats.MultivariateLaplace(name, mu, sigma)[source]
        +sympy.stats.MultivariateLaplace(name, mu, sigma)[source]

        Creates a continuous random variable with Multivariate Laplace Distribution.

        The density of the multivariate Laplace distribution can be found at [1].

        @@ -4980,7 +4980,7 @@

        Joint Typesmu,

        -)[source] +)[source]

        Creates a joint random variable with generalized multivariate log gamma distribution.

        The joint pdf can be found at [1].

        @@ -5043,7 +5043,7 @@

        Joint Typesmu,

        -)[source] +)[source]

        Extends GeneralizedMultivariateLogGamma.

        Parameters:
        @@ -5099,7 +5099,7 @@

        Joint Types
        -sympy.stats.Multinomial(syms, n, *p)[source]
        +sympy.stats.Multinomial(syms, n, *p)[source]

        Creates a discrete random variable with Multinomial Distribution.

        The density of the said distribution can be found at [1].

        @@ -5145,7 +5145,7 @@

        Joint Types
        -sympy.stats.MultivariateBeta(syms, *alpha)[source]
        +sympy.stats.MultivariateBeta(syms, *alpha)[source]

        Creates a continuous random variable with Dirichlet/Multivariate Beta Distribution.

        The density of the Dirichlet distribution can be found at [1].

        @@ -5190,7 +5190,7 @@

        Joint Types
        -sympy.stats.MultivariateEwens(syms, n, theta)[source]
        +sympy.stats.MultivariateEwens(syms, n, theta)[source]

        Creates a discrete random variable with Multivariate Ewens Distribution.

        The density of the said distribution can be found at [1].

        @@ -5236,7 +5236,7 @@

        Joint Types
        -sympy.stats.MultivariateT(syms, mu, sigma, v)[source]
        +sympy.stats.MultivariateT(syms, mu, sigma, v)[source]

        Creates a joint random variable with multivariate T-distribution.

        Parameters:
        @@ -5271,7 +5271,7 @@

        Joint Types
        -sympy.stats.NegativeMultinomial(syms, k0, *p)[source]
        +sympy.stats.NegativeMultinomial(syms, k0, *p)[source]

        Creates a discrete random variable with Negative Multinomial Distribution.

        The density of the said distribution can be found at [1].

        @@ -5318,7 +5318,7 @@

        Joint Types
        -sympy.stats.NormalGamma(sym, mu, lamda, alpha, beta)[source]
        +sympy.stats.NormalGamma(sym, mu, lamda, alpha, beta)[source]

        Creates a bivariate joint random variable with multivariate Normal gamma distribution.

        @@ -5383,7 +5383,7 @@

        Joint Typestrans_probs=None,

        -)[source] +)[source]

        Represents a finite discrete time-homogeneous Markov chain.

        This type of Markov Chain can be uniquely characterised by its (ordered) state space and its one-step transition probability @@ -5510,7 +5510,7 @@

        Joint Types
        -absorbing_probabilities()[source]
        +absorbing_probabilities()[source]

        Computes the absorbing probabilities, i.e. the ij-th entry of the matrix denotes the probability of Markov chain being absorbed @@ -5519,7 +5519,7 @@

        Joint Types
        -canonical_form() Tuple[List[Basic], ImmutableDenseMatrix][source]
        +canonical_form() Tuple[List[Basic], ImmutableDenseMatrix][source]

        Reorders the one-step transition matrix so that recurrent states appear first and transient states appear last. Other representations include inserting @@ -5621,7 +5621,7 @@

        Joint Types
        -communication_classes() List[Tuple[List[Basic], Boolean, Integer]][source]
        +communication_classes() List[Tuple[List[Basic], Boolean, Integer]][source]

        Returns the list of communication classes that partition the states of the markov chain.

        A communication class is defined to be a set of states @@ -5693,7 +5693,7 @@

        Joint Types
        -decompose() Tuple[List[Basic], ImmutableDenseMatrix, ImmutableDenseMatrix, ImmutableDenseMatrix][source]
        +decompose() Tuple[List[Basic], ImmutableDenseMatrix, ImmutableDenseMatrix, ImmutableDenseMatrix][source]

        Decomposes the transition matrix into submatrices with special properties.

        The transition matrix can be decomposed into 4 submatrices: @@ -5776,13 +5776,13 @@

        Joint Types
        -fixed_row_vector()[source]
        +fixed_row_vector()[source]

        A wrapper for stationary_distribution().

        -fundamental_matrix()[source]
        +fundamental_matrix()[source]

        Each entry fundamental matrix can be interpreted as the expected number of times the chains is in state j if it started in state i.

        @@ -5804,7 +5804,7 @@

        Joint Types
        -sample()[source]
        +sample()[source]
        Returns:

        sample: iterator object

        @@ -5823,7 +5823,7 @@

        Joint Typescondition_set=False,

        -) ImmutableDenseMatrix | ConditionSet | Lambda[source] +) ImmutableDenseMatrix | ConditionSet | Lambda[source]

        The stationary distribution is any row vector, p, that solves p = pP, is row stochastic and each element in p must be nonnegative. That means in matrix form: \((P-I)^T p^T = 0\) and @@ -5911,7 +5911,7 @@

        Joint Typesgen_mat=None,

        -)[source] +)[source]

        Represents continuous time Markov chain.

        Parameters:
        @@ -5996,7 +5996,7 @@

        Joint Types
        -class sympy.stats.BernoulliProcess(sym, p, success=1, failure=0)[source]
        +class sympy.stats.BernoulliProcess(sym, p, success=1, failure=0)[source]

        The Bernoulli process consists of repeated independent Bernoulli process trials with the same parameter \(p\). It’s assumed that the probability \(p\) applies to every @@ -6075,7 +6075,7 @@

        Joint Types**kwargs,

        -)[source] +)[source]

        Computes expectation.

        Parameters:
        @@ -6106,7 +6106,7 @@

        Joint Types**kwargs,

        -)[source] +)[source]

        Computes probability.

        Parameters:
        @@ -6130,7 +6130,7 @@

        Joint Types
        -class sympy.stats.PoissonProcess(sym, lamda)[source]
        +class sympy.stats.PoissonProcess(sym, lamda)[source]

        The Poisson process is a counting process. It is usually used in scenarios where we are counting the occurrences of certain events that appear to happen at a certain rate, but completely at random.

        @@ -6200,7 +6200,7 @@

        Joint Types
        -class sympy.stats.WienerProcess(sym)[source]
        +class sympy.stats.WienerProcess(sym)[source]

        The Wiener process is a real valued continuous-time stochastic process. In physics it is used to study Brownian motion and it is often also called Brownian motion due to its historical connection with physical process of the @@ -6243,7 +6243,7 @@

        Joint Types
        -class sympy.stats.GammaProcess(sym, lamda, gamma)[source]
        +class sympy.stats.GammaProcess(sym, lamda, gamma)[source]

        A Gamma process is a random process with independent gamma distributed increments. It is a pure-jump increasing Levy process.

        @@ -6292,7 +6292,7 @@

        Joint Types

        -sympy.stats.MatrixGamma(symbol, alpha, beta, scale_matrix)[source]
        +sympy.stats.MatrixGamma(symbol, alpha, beta, scale_matrix)[source]

        Creates a random variable with Matrix Gamma Distribution.

        The density of the said distribution can be found at [1].

        @@ -6339,7 +6339,7 @@

        Matrix Distributions
        -sympy.stats.Wishart(symbol, n, scale_matrix)[source]
        +sympy.stats.Wishart(symbol, n, scale_matrix)[source]

        Creates a random variable with Wishart Distribution.

        The density of the said distribution can be found at [1].

        @@ -6391,7 +6391,7 @@

        Matrix Distributionsscale_matrix_2,

        -)[source] +)[source]

        Creates a random variable with Matrix Normal Distribution.

        The density of the said distribution can be found at [1].

        @@ -6440,7 +6440,7 @@

        Matrix DistributionsCompound Distribution

        -class sympy.stats.compound_rv.CompoundDistribution(dist)[source]
        +class sympy.stats.compound_rv.CompoundDistribution(dist)[source]

        Class for Compound Distributions.

        Parameters:
        @@ -6489,7 +6489,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        Probability that a condition is true, optionally given a second condition.

        Parameters:
        @@ -6528,7 +6528,7 @@

        Interface
        -class sympy.stats.Probability(prob, condition=None, **kwargs)[source]
        +class sympy.stats.Probability(prob, condition=None, **kwargs)[source]

        Symbolic expression for the probability.

        Examples

        >>> from sympy.stats import Probability, Normal
        @@ -6563,7 +6563,7 @@ 

        Interface**kwargs,

        -)[source] +)[source]

        Returns the expected value of a random expression.

        Parameters:
        @@ -6606,7 +6606,7 @@

        Interface
        -class sympy.stats.Expectation(expr, condition=None, **kwargs)[source]
        +class sympy.stats.Expectation(expr, condition=None, **kwargs)[source]

        Symbolic expression for the expectation.

        Examples

        >>> from sympy.stats import Expectation, Normal, Probability, Poisson
        @@ -6685,7 +6685,7 @@ 

        Interface**kwargs,

        -)[source] +)[source]

        Probability density of a random expression, optionally given a second condition.

        @@ -6731,7 +6731,7 @@

        Interface
        -sympy.stats.entropy(expr, condition=None, **kwargs)[source]
        +sympy.stats.entropy(expr, condition=None, **kwargs)[source]

        Calculuates entropy of a probability distribution.

        Parameters:
        @@ -6777,7 +6777,7 @@

        Interface
        -sympy.stats.given(expr, condition=None, **kwargs)[source]
        +sympy.stats.given(expr, condition=None, **kwargs)[source]

        Conditional Random Expression.

        Explanation

        From a random expression and a condition on that expression creates a new @@ -6815,7 +6815,7 @@

        Interface
        -sympy.stats.where(condition, given_condition=None, **kwargs)[source]
        +sympy.stats.where(condition, given_condition=None, **kwargs)[source]

        Returns the domain where a condition is True.

        Examples

        >>> from sympy.stats import where, Die, Normal
        @@ -6843,7 +6843,7 @@ 

        Interface
        -sympy.stats.variance(X, condition=None, **kwargs)[source]
        +sympy.stats.variance(X, condition=None, **kwargs)[source]

        Variance of a random expression.

        @@ -6871,7 +6871,7 @@

        Interface
        -class sympy.stats.Variance(arg, condition=None, **kwargs)[source]
        +class sympy.stats.Variance(arg, condition=None, **kwargs)[source]

        Symbolic expression for the variance.

        Examples

        >>> from sympy import symbols, Integral
        @@ -6920,7 +6920,7 @@ 

        Interface
        -sympy.stats.covariance(X, Y, condition=None, **kwargs)[source]
        +sympy.stats.covariance(X, Y, condition=None, **kwargs)[source]

        Covariance of two random expressions.

        Explanation

        The expectation that the two variables will rise and fall together

        @@ -6950,7 +6950,7 @@

        Interface
        -class sympy.stats.Covariance(arg1, arg2, condition=None, **kwargs)[source]
        +class sympy.stats.Covariance(arg1, arg2, condition=None, **kwargs)[source]

        Symbolic expression for the covariance.

        Examples

        >>> from sympy.stats import Covariance
        @@ -6995,7 +6995,7 @@ 

        Interface
        -sympy.stats.coskewness(X, Y, Z, condition=None, **kwargs)[source]
        +sympy.stats.coskewness(X, Y, Z, condition=None, **kwargs)[source]

        Calculates the co-skewness of three random variables.

        Parameters:
        @@ -7055,7 +7055,7 @@

        Interface
        -sympy.stats.median(X, evaluate=True, **kwargs)[source]
        +sympy.stats.median(X, evaluate=True, **kwargs)[source]

        Calculuates the median of the probability distribution.

        Parameters:
        @@ -7094,7 +7094,7 @@

        Interface
        -sympy.stats.std(X, condition=None, **kwargs)[source]
        +sympy.stats.std(X, condition=None, **kwargs)[source]

        Standard Deviation of a random expression

        @@ -7117,7 +7117,7 @@

        Interface
        -sympy.stats.quantile(expr, evaluate=True, **kwargs)[source]
        +sympy.stats.quantile(expr, evaluate=True, **kwargs)[source]

        Return the \(p^{th}\) order quantile of a probability distribution.

        Explanation

        Quantile is defined as the value at which the probability of the random @@ -7171,7 +7171,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        A realization of the random expression.

        Parameters:
        @@ -7292,7 +7292,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        Returns an iterator of realizations from the expression given a condition.

        Parameters:
        @@ -7351,7 +7351,7 @@

        Interface
        -sympy.stats.factorial_moment(X, n, condition=None, **kwargs)[source]
        +sympy.stats.factorial_moment(X, n, condition=None, **kwargs)[source]

        The factorial moment is a mathematical quantity defined as the expectation or average of the falling factorial of a random variable.

        @@ -7396,7 +7396,7 @@

        Interface
        -sympy.stats.kurtosis(X, condition=None, **kwargs)[source]
        +sympy.stats.kurtosis(X, condition=None, **kwargs)[source]

        Characterizes the tails/outliers of a probability distribution.

        Parameters:
        @@ -7445,7 +7445,7 @@

        Interface
        -sympy.stats.skewness(X, condition=None, **kwargs)[source]
        +sympy.stats.skewness(X, condition=None, **kwargs)[source]

        Measure of the asymmetry of the probability distribution.

        Parameters:
        @@ -7482,7 +7482,7 @@

        Interface
        -sympy.stats.correlation(X, Y, condition=None, **kwargs)[source]
        +sympy.stats.correlation(X, Y, condition=None, **kwargs)[source]

        Correlation of two random expressions, also known as correlation coefficient or Pearson’s correlation.

        Explanation

        @@ -7525,7 +7525,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        Sampling version of density.

        See also

        @@ -7547,7 +7547,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        Sampling version of P.

        See also

        @@ -7569,7 +7569,7 @@

        Interface**kwargs,

        -)[source] +)[source]

        Sampling version of E.

        See also

        @@ -7579,7 +7579,7 @@

        Interface
        -class sympy.stats.Moment(X, n, c=0, condition=None, **kwargs)[source]
        +class sympy.stats.Moment(X, n, c=0, condition=None, **kwargs)[source]

        Symbolic class for Moment

        Examples

        >>> from sympy import Symbol, Integral
        @@ -7626,7 +7626,7 @@ 

        Interface**kwargs,

        -)[source] +)[source]

        Return the nth moment of a random expression about c.

        @@ -7648,7 +7648,7 @@

        Interface
        -class sympy.stats.CentralMoment(X, n, condition=None, **kwargs)[source]
        +class sympy.stats.CentralMoment(X, n, condition=None, **kwargs)[source]

        Symbolic class Central Moment

        Examples

        >>> from sympy import Symbol, Integral
        @@ -7694,7 +7694,7 @@ 

        Interface**kwargs,

        -)[source] +)[source]

        Return the nth central moment of a random expression about its mean.

        @@ -7715,7 +7715,7 @@

        Interface
        -class sympy.stats.ExpectationMatrix(expr, condition=None)[source]
        +class sympy.stats.ExpectationMatrix(expr, condition=None)[source]

        Expectation of a random matrix expression.

        Examples

        >>> from sympy.stats import ExpectationMatrix, Normal
        @@ -7754,7 +7754,7 @@ 

        Interface
        -class sympy.stats.VarianceMatrix(arg, condition=None)[source]
        +class sympy.stats.VarianceMatrix(arg, condition=None)[source]

        Variance of a random matrix probability expression. Also known as Covariance matrix, auto-covariance matrix, dispersion matrix, or variance-covariance matrix.

        @@ -7782,7 +7782,7 @@

        Interface
        -class sympy.stats.CrossCovarianceMatrix(arg1, arg2, condition=None)[source]
        +class sympy.stats.CrossCovarianceMatrix(arg1, arg2, condition=None)[source]

        Covariance of a random matrix probability expression.

        Examples

        >>> from sympy.stats import CrossCovarianceMatrix
        @@ -7821,7 +7821,7 @@ 

        Interface\(\{1,2,3,4,5,6\}\).

        -class sympy.stats.rv.RandomDomain[source]
        +class sympy.stats.rv.RandomDomain[source]

        A PSpace, or Probability Space, combines a RandomDomain @@ -7831,13 +7831,13 @@

        Interfacex.

        -class sympy.stats.rv.PSpace[source]
        +class sympy.stats.rv.PSpace[source]

        A RandomSymbol represents the PSpace’s symbol ‘x’ inside of SymPy expressions.

        -class sympy.stats.rv.RandomSymbol[source]
        +class sympy.stats.rv.RandomSymbol[source]

        The RandomDomain and PSpace classes are almost never directly instantiated. @@ -7849,12 +7849,12 @@

        Interface
        -class sympy.stats.rv.SinglePSpace[source]
        +class sympy.stats.rv.SinglePSpace[source]

        -class sympy.stats.rv.SingleDomain[source]
        +class sympy.stats.rv.SingleDomain[source]

        Another common case is to collect together a set of such univariate random @@ -7863,12 +7863,12 @@

        Interface
        -class sympy.stats.rv.ProductDomain[source]
        +class sympy.stats.rv.ProductDomain[source]

        -class sympy.stats.rv.ProductPSpace[source]
        +class sympy.stats.rv.ProductPSpace[source]

        The Conditional adjective is added whenever we add a global condition to a @@ -7876,7 +7876,7 @@

        Interface
        -class sympy.stats.rv.ConditionalDomain[source]
        +class sympy.stats.rv.ConditionalDomain[source]

        We specialize further into Finite and Continuous versions of these classes to @@ -7884,22 +7884,22 @@

        Interface
        -class sympy.stats.frv.FiniteDomain[source]
        +class sympy.stats.frv.FiniteDomain[source]

        -class sympy.stats.frv.FinitePSpace[source]
        +class sympy.stats.frv.FinitePSpace[source]
        -class sympy.stats.crv.ContinuousDomain[source]
        +class sympy.stats.crv.ContinuousDomain[source]
        -class sympy.stats.crv.ContinuousPSpace[source]
        +class sympy.stats.crv.ContinuousPSpace[source]

        Additionally there are a few specialized classes that implement certain common @@ -7943,13 +7943,13 @@

        Interface
        -sympy.stats.rv.random_symbols(expr)[source]
        +sympy.stats.rv.random_symbols(expr)[source]

        Returns all RandomSymbols within a SymPy Expression.

        -sympy.stats.rv.pspace(expr)[source]
        +sympy.stats.rv.pspace(expr)[source]

        Returns the underlying Probability Space of a random expression.

        For internal use.

        Examples

        @@ -7963,7 +7963,7 @@

        Interface
        -sympy.stats.rv.rs_swap(a, b)[source]
        +sympy.stats.rv.rs_swap(a, b)[source]

        Build a dictionary to swap RandomSymbols based on their underlying symbol.

        i.e. if X = ('x', pspace1) diff --git a/dev/modules/tensor/array.html b/dev/modules/tensor/array.html index bda764bf81e..c27355d9bfe 100644 --- a/dev/modules/tensor/array.html +++ b/dev/modules/tensor/array.html @@ -1045,7 +1045,7 @@

        Classes
        **kwargs,

        -)[source] +)[source]
        @@ -1058,7 +1058,7 @@

        Classes
        **kwargs,

        -)[source] +)[source]
        @@ -1071,7 +1071,7 @@

        Classes
        **kwargs,

        -)[source] +)[source]

        @@ -1084,7 +1084,7 @@

        Classes
        **kwargs,

        -)[source] +)[source]

        @@ -1092,7 +1092,7 @@

        Classes

        Functions

        -sympy.tensor.array.derive_by_array(expr, dx)[source]
        +sympy.tensor.array.derive_by_array(expr, dx)[source]

        Derivative by arrays. Supports both arrays and scalars.

        The equivalent operator for array expressions is array_derive.

        Explanation

        @@ -1124,7 +1124,7 @@

        Functionsindex_order_new=None,

        -)[source] +)[source]

        Permutes the indices of an array.

        Parameter specifies the permutation of the indices.

        The equivalent operator for array expressions is PermuteDims, which can @@ -1177,7 +1177,7 @@

        Functions
        -sympy.tensor.array.tensorcontraction(array, *contraction_axes)[source]
        +sympy.tensor.array.tensorcontraction(array, *contraction_axes)[source]

        Contraction of an array-like object on the specified axes.

        The equivalent operator for array expressions is ArrayContraction, which can be used to keep the expression unevaluated.

        @@ -1218,7 +1218,7 @@

        Functions
        -sympy.tensor.array.tensorproduct(*args)[source]
        +sympy.tensor.array.tensorproduct(*args)[source]

        Tensor product among scalars or array-like objects.

        The equivalent operator for array expressions is ArrayTensorProduct, which can be used to keep the expression unevaluated.

        @@ -1251,7 +1251,7 @@

        Functions
        -sympy.tensor.array.tensordiagonal(array, *diagonal_axes)[source]
        +sympy.tensor.array.tensordiagonal(array, *diagonal_axes)[source]

        Diagonalization of an array-like object on the specified axes.

        This is equivalent to multiplying the expression by Kronecker deltas uniting the axes.

        diff --git a/dev/modules/tensor/array_expressions.html b/dev/modules/tensor/array_expressions.html index dd63682dd1b..f590fc91ff1 100644 --- a/dev/modules/tensor/array_expressions.html +++ b/dev/modules/tensor/array_expressions.html @@ -968,7 +968,7 @@

        Compatibility with matrices
        -class sympy.tensor.array.expressions.ArrayTensorProduct(*args, **kwargs)[source]
        +class sympy.tensor.array.expressions.ArrayTensorProduct(*args, **kwargs)[source]

        Class to represent the tensor product of array-like objects.

        @@ -982,14 +982,14 @@

        Compatibility with matrices**kwargs,

        -)[source] +)[source]

        This class is meant to represent contractions of arrays in a form easily processable by the code printers.

        -class sympy.tensor.array.expressions.ArrayDiagonal(expr, *diagonal_indices, **kwargs)[source]
        +class sympy.tensor.array.expressions.ArrayDiagonal(expr, *diagonal_indices, **kwargs)[source]

        Class to represent the diagonal operator.

        Explanation

        In a 2-dimensional array it returns the diagonal, this looks like the @@ -1018,7 +1018,7 @@

        Compatibility with matrices**kwargs,

        -)[source] +)[source]

        Class to represent permutation of axes of arrays.

        Examples

        >>> from sympy.tensor.array import permutedims
        diff --git a/dev/modules/tensor/index_methods.html b/dev/modules/tensor/index_methods.html
        index 389f8f8fb86..7c0d58bb720 100644
        --- a/dev/modules/tensor/index_methods.html
        +++ b/dev/modules/tensor/index_methods.html
        @@ -814,7 +814,7 @@ 
        Documentation Version
        refactoring.

        -sympy.tensor.index_methods.get_contraction_structure(expr)[source]
        +sympy.tensor.index_methods.get_contraction_structure(expr)[source]

        Determine dummy indices of expr and describe its structure

        By dummy we mean indices that are summation indices.

        The structure of the expression is determined and described as follows:

        @@ -914,7 +914,7 @@
        Documentation Version
        -sympy.tensor.index_methods.get_indices(expr)[source]
        +sympy.tensor.index_methods.get_indices(expr)[source]

        Determine the outer indices of expression expr

        By outer we mean indices that are not summation indices. Returns a set and a dict. The set contains outer indices and the dict contains diff --git a/dev/modules/tensor/indexed.html b/dev/modules/tensor/indexed.html index a3c7e51cf43..f6f814dd7aa 100644 --- a/dev/modules/tensor/indexed.html +++ b/dev/modules/tensor/indexed.html @@ -888,7 +888,7 @@

        Examples
        -class sympy.tensor.indexed.Idx(label, range=None, **kw_args)[source]
        +class sympy.tensor.indexed.Idx(label, range=None, **kw_args)[source]

        Represents an integer index as an Integer or integer expression.

        There are a number of ways to create an Idx object. The constructor takes two arguments:

        @@ -994,7 +994,7 @@

        Examples
        -class sympy.tensor.indexed.Indexed(base, *args, **kw_args)[source]
        +class sympy.tensor.indexed.Indexed(base, *args, **kw_args)[source]

        Represents a mathematical object with indices.

        >>> from sympy import Indexed, IndexedBase, Idx, symbols
         >>> i, j = symbols('i j', cls=Idx)
        @@ -1113,7 +1113,7 @@ 

        Examples
        **kw_args,

        -)[source] +)[source]

        Represent the base or stem of an indexed object

        The IndexedBase class represent an array that contains elements. The main purpose of this class is to allow the convenient creation of objects of the Indexed diff --git a/dev/modules/tensor/tensor.html b/dev/modules/tensor/tensor.html index ee8a1f489dc..37c7ef97258 100644 --- a/dev/modules/tensor/tensor.html +++ b/dev/modules/tensor/tensor.html @@ -817,7 +817,7 @@

        Documentation Version
        **kwargs,

        -)[source] +)[source]

        A TensorIndexType is characterized by its name and its metric.

        Parameters:
        @@ -886,7 +886,7 @@
        Documentation Version
        -class sympy.tensor.tensor.TensorIndex(name, tensor_index_type, is_up=True)[source]
        +class sympy.tensor.tensor.TensorIndex(name, tensor_index_type, is_up=True)[source]

        Represents a tensor index

        Parameters:
        @@ -948,7 +948,7 @@
        Documentation Version
        comm=0,
        -)[source] +)[source]

        Tensor head of the tensor.

        Parameters:
        @@ -1067,7 +1067,7 @@
        Documentation Version

        -commutes_with(other)[source]
        +commutes_with(other)[source]

        Returns 0 if self and other commute, 1 if they anticommute.

        Returns None if self and other neither commute nor anticommute.

        @@ -1085,13 +1085,13 @@
        Documentation Version
        comm=0,

        -)[source] +)[source]

        Returns a sequence of TensorHeads from a string \(s\)

        -class sympy.tensor.tensor.TensExpr(*args)[source]
        +class sympy.tensor.tensor.TensExpr(*args)[source]

        Abstract base class for tensor expressions

        Notes

        A tensor expression is an expression formed by tensors; @@ -1106,7 +1106,7 @@

        Documentation Version

        Contracted indices are therefore nameless in the internal representation.

        -get_matrix()[source]
        +get_matrix()[source]

        DEPRECATED: do not use.

        Returns ndarray components data as a matrix, if components data are available and ndarray dimension does not exceed 2.

        @@ -1121,7 +1121,7 @@
        Documentation Version
        indices=None,
        -)[source] +)[source]

        Replace the tensorial expressions with arrays. The final array will correspond to the N-dimensional array with indices arranged according to indices.

        @@ -1196,7 +1196,7 @@
        Documentation Version
        -class sympy.tensor.tensor.TensAdd(*args, **kw_args)[source]
        +class sympy.tensor.tensor.TensAdd(*args, **kw_args)[source]

        Sum of tensors.

        Parameters:
        @@ -1245,14 +1245,14 @@
        Documentation Version

        -canon_bp()[source]
        +canon_bp()[source]

        Canonicalize using the Butler-Portugal algorithm for canonicalization under monoterm symmetries.

        -contract_metric(g)[source]
        +contract_metric(g)[source]

        Raise or lower indices with the metric g.

        Parameters:
        @@ -1268,7 +1268,7 @@
        Documentation Version
        -class sympy.tensor.tensor.TensMul(*args, **kw_args)[source]
        +class sympy.tensor.tensor.TensMul(*args, **kw_args)[source]

        Product of tensors.

        Parameters:
        @@ -1322,7 +1322,7 @@
        Documentation Version

        -canon_bp()[source]
        +canon_bp()[source]

        Canonicalize using the Butler-Portugal algorithm for canonicalization under monoterm symmetries.

        Examples

        @@ -1342,7 +1342,7 @@
        Documentation Version
        -contract_metric(g)[source]
        +contract_metric(g)[source]

        Raise or lower indices with the metric g.

        Parameters:
        @@ -1368,7 +1368,7 @@
        Documentation Version
        -get_free_indices() list[TensorIndex][source]
        +get_free_indices() list[TensorIndex][source]

        Returns the list of free indices of the tensor.

        Explanation

        The indices are listed in the order in which they appear in the @@ -1391,7 +1391,7 @@

        Documentation Version
        -get_indices()[source]
        +get_indices()[source]

        Returns the list of indices of the tensor.

        Explanation

        The indices are listed in the order in which they appear in the @@ -1416,20 +1416,20 @@

        Documentation Version
        -perm2tensor(g, is_canon_bp=False)[source]
        +perm2tensor(g, is_canon_bp=False)[source]

        Returns the tensor corresponding to the permutation g

        For further details, see the method in TIDS with the same name.

        -sorted_components()[source]
        +sorted_components()[source]

        Returns a tensor product with sorted components.

        -split()[source]
        +split()[source]

        Returns a list of tensors, whose product is self.

        Explanation

        Dummy indices contracted among different tensor components @@ -1453,21 +1453,21 @@

        Documentation Version
        -sympy.tensor.tensor.canon_bp(p)[source]
        +sympy.tensor.tensor.canon_bp(p)[source]

        Butler-Portugal canonicalization. See tensor_can.py from the combinatorics module for the details.

        -sympy.tensor.tensor.riemann_cyclic_replace(t_r)[source]
        +sympy.tensor.tensor.riemann_cyclic_replace(t_r)[source]

        replace Riemann tensor with an equivalent expression

        R(m,n,p,q) -> 2/3*R(m,n,p,q) - 1/3*R(m,q,n,p) + 1/3*R(m,p,n,q)

        -sympy.tensor.tensor.riemann_cyclic(t2)[source]
        +sympy.tensor.tensor.riemann_cyclic(t2)[source]

        Replace each Riemann tensor with an equivalent expression satisfying the cyclic identity.

        This trick is discussed in the reference guide to Cadabra.

        @@ -1485,7 +1485,7 @@
        Documentation Version
        -class sympy.tensor.tensor.TensorSymmetry(*args, **kw_args)[source]
        +class sympy.tensor.tensor.TensorSymmetry(*args, **kw_args)[source]

        Monoterm symmetry of a tensor (i.e. any symmetric or anti-symmetric index permutation). For the relevant terminology see tensor_can.py section of the combinatorics module.

        @@ -1536,7 +1536,7 @@
        Documentation Version

        -classmethod direct_product(*args)[source]
        +classmethod direct_product(*args)[source]

        Returns a TensorSymmetry object that is being a direct product of fully (anti-)symmetric index permutation groups.

        Notes

        @@ -1550,20 +1550,20 @@
        Documentation Version
        -classmethod fully_symmetric(rank)[source]
        +classmethod fully_symmetric(rank)[source]

        Returns a fully symmetric (antisymmetric if rank``<0) TensorSymmetry object for ``abs(rank) indices.

        -classmethod no_symmetry(rank)[source]
        +classmethod no_symmetry(rank)[source]

        TensorSymmetry object for rank indices with no symmetry

        -classmethod riemann()[source]
        +classmethod riemann()[source]

        Returns a monotorem symmetry of the Riemann tensor

        @@ -1571,7 +1571,7 @@
        Documentation Version
        -sympy.tensor.tensor.tensorsymmetry(*args)[source]
        +sympy.tensor.tensor.tensorsymmetry(*args)[source]

        Returns a TensorSymmetry object. This method is deprecated, use TensorSymmetry.direct_product() or .riemann() instead.

        Explanation

        @@ -1600,7 +1600,7 @@
        Documentation Version
        -class sympy.tensor.tensor.TensorType(*args, **kwargs)[source]
        +class sympy.tensor.tensor.TensorType(*args, **kwargs)[source]

        Class of tensor types. Deprecated, use tensor_heads() instead.

        Parameters:
        @@ -1628,7 +1628,7 @@
        Documentation Version
        -class sympy.tensor.tensor._TensorManager[source]
        +class sympy.tensor.tensor._TensorManager[source]

        Class to manage tensor properties.

        Notes

        Tensors belong to tensor commutation groups; each group has a label @@ -1641,19 +1641,19 @@

        Documentation Version
        do not commute with any other group.

        -clear()[source]
        +clear()[source]

        Clear the TensorManager.

        -comm_i2symbol(i)[source]
        +comm_i2symbol(i)[source]

        Returns the symbol corresponding to the commutation group number.

        -comm_symbols2i(i)[source]
        +comm_symbols2i(i)[source]

        Get the commutation group number corresponding to i.

        i can be a symbol or a number or a string.

        If i is not already defined its commutation group number @@ -1662,14 +1662,14 @@

        Documentation Version
        -get_comm(i, j)[source]
        +get_comm(i, j)[source]

        Return the commutation parameter for commutation group numbers i, j

        see _TensorManager.set_comm

        -set_comm(i, j, c)[source]
        +set_comm(i, j, c)[source]

        Set the commutation parameter c for commutation groups i, j.

        Parameters:
        @@ -1711,7 +1711,7 @@
        Documentation Version
        -set_comms(*args)[source]
        +set_comms(*args)[source]

        Set the commutation group numbers c for symbols i, j.

        Parameters:
        diff --git a/dev/modules/tensor/toperators.html b/dev/modules/tensor/toperators.html index f4790dd2b86..faac3a7aebb 100644 --- a/dev/modules/tensor/toperators.html +++ b/dev/modules/tensor/toperators.html @@ -805,7 +805,7 @@
        Documentation Version

        Tensor Operators

        -class sympy.tensor.toperators.PartialDerivative(expr, *variables)[source]
        +class sympy.tensor.toperators.PartialDerivative(expr, *variables)[source]

        Partial derivative for tensor expressions.

        Examples

        >>> from sympy.tensor.tensor import TensorIndexType, TensorHead
        diff --git a/dev/modules/testing/pytest.html b/dev/modules/testing/pytest.html
        index d570cbc0984..a815ffb2e4c 100644
        --- a/dev/modules/testing/pytest.html
        +++ b/dev/modules/testing/pytest.html
        @@ -806,19 +806,19 @@ 
        Documentation Version

        py.test hacks to support XFAIL/XPASS

        -sympy.testing.pytest.SKIP(reason)[source]
        +sympy.testing.pytest.SKIP(reason)[source]

        Similar to skip(), but this is a decorator.

        -sympy.testing.pytest.nocache_fail(func)[source]
        +sympy.testing.pytest.nocache_fail(func)[source]

        Dummy decorator for marking tests that fail when cache is disabled

        -sympy.testing.pytest.raises(expectedException, code=None)[source]
        +sympy.testing.pytest.raises(expectedException, code=None)[source]

        Tests that code raises the exception expectedException.

        code may be a callable, such as a lambda expression or function name.

        @@ -870,7 +870,7 @@
        Documentation Version
        -sympy.testing.pytest.skip_under_pyodide(message)[source]
        +sympy.testing.pytest.skip_under_pyodide(message)[source]

        Decorator to skip a test if running under Pyodide/WASM.

        @@ -885,7 +885,7 @@
        Documentation Version
        test_stacklevel=True,
        -)[source] +)[source]

        Like raises but tests that warnings are emitted.

        >>> from sympy.testing.pytest import warns
         >>> import warnings
        @@ -914,7 +914,7 @@ 
        Documentation Version
        -sympy.testing.pytest.warns_deprecated_sympy()[source]
        +sympy.testing.pytest.warns_deprecated_sympy()[source]

        Shorthand for warns(SymPyDeprecationWarning)

        This is the recommended way to test that SymPyDeprecationWarning is emitted for deprecated features in SymPy. To test for other warnings use diff --git a/dev/modules/testing/runtests.html b/dev/modules/testing/runtests.html index 203f023e5fa..d6b2c1c81a8 100644 --- a/dev/modules/testing/runtests.html +++ b/dev/modules/testing/runtests.html @@ -825,7 +825,7 @@

        Documentation Version
        split=None,
        -)[source] +)[source]

        Py.test like reporter. Should produce output identical to py.test.

        @@ -839,7 +839,7 @@
        Documentation Version
        force_colors=False,
        -)[source] +)[source]

        Prints a text on the screen.

        It uses sys.stdout.write(), so no readline library is necessary.

        @@ -859,7 +859,7 @@
        Documentation Version
        -class sympy.testing.runtests.Reporter[source]
        +class sympy.testing.runtests.Reporter[source]

        Parent class for all reporters.

        @@ -874,7 +874,7 @@
        Documentation Version
        exclude_empty=True,
        -)[source] +)[source]

        A class used to extract the DocTests that are relevant to a given object, from its docstring and the docstrings of its contained objects. Doctests can currently be extracted from the following @@ -896,7 +896,7 @@

        Documentation Version
        optionflags=0,
        -)[source] +)[source]

        A class used to run DocTest test cases, and accumulate statistics. The run method is used to process a single DocTest case. It returns a tuple (f, t), where t is the number of test cases @@ -915,7 +915,7 @@

        Documentation Version
        clear_globs=True,
        -)[source] +)[source]

        Run the examples in test, and display the results using the writer function out.

        The examples are run in the namespace test.globs. If @@ -936,7 +936,7 @@

        Documentation Version
        -class sympy.testing.runtests.SymPyOutputChecker[source]
        +class sympy.testing.runtests.SymPyOutputChecker[source]

        Compared to the OutputChecker from the stdlib our OutputChecker class supports numerical comparison of floats occurring in the output of the doctest examples

        @@ -950,7 +950,7 @@
        Documentation Version
        optionflags,
        -)[source] +)[source]

        Return True iff the actual output from an example (\(got\)) matches the expected output (\(want\)). These strings are always considered to match if they are identical; but @@ -964,7 +964,7 @@

        Documentation Version
        -class sympy.testing.runtests.SymPyTestResults(failed, attempted)[source]
        +class sympy.testing.runtests.SymPyTestResults(failed, attempted)[source]
        attempted
        @@ -981,7 +981,7 @@
        Documentation Version
        -sympy.testing.runtests.convert_to_native_paths(lst)[source]
        +sympy.testing.runtests.convert_to_native_paths(lst)[source]

        Converts a list of ‘/’ separated paths into a list of native (os.sep separated) paths and converts to lowercase if the system is case insensitive.

        @@ -998,7 +998,7 @@
        Documentation Version
        **kwargs,
        -)[source] +)[source]

        Runs doctests in all *.py files in the SymPy directory which match any of the given strings in paths or all tests if paths=[].

        Notes:

        @@ -1047,14 +1047,14 @@
        Documentation Version
        -sympy.testing.runtests.get_sympy_dir()[source]
        +sympy.testing.runtests.get_sympy_dir()[source]

        Returns the root SymPy directory and set the global value indicating whether the system is case sensitive or not.

        -sympy.testing.runtests.raise_on_deprecated()[source]
        +sympy.testing.runtests.raise_on_deprecated()[source]

        Context manager to make DeprecationWarning raise an error

        This is to catch SymPyDeprecationWarning from library code while running tests and doctests. It is important to use this context manager around @@ -1075,7 +1075,7 @@

        Documentation Version
        examples_kwargs=None,
        -)[source] +)[source]

        Run all tests.

        Right now, this runs the regular tests (bin/test), the doctests (bin/doctest), and the examples (examples/all.py).

        @@ -1104,7 +1104,7 @@
        Documentation Version
        force=False,
        -)[source] +)[source]

        Run a function in a Python subprocess with hash randomization enabled.

        If hash randomization is not supported by the version of Python given, it returns False. Otherwise, it returns the exit value of the command. The @@ -1147,7 +1147,7 @@

        Documentation Version
        -sympy.testing.runtests.split_list(l, split, density=None)[source]
        +sympy.testing.runtests.split_list(l, split, density=None)[source]

        Splits a list into part a of b

        split should be a string of the form ‘a/b’. For instance, ‘1/3’ would give the split one of three.

        @@ -1187,7 +1187,7 @@
        Documentation Version
        encoding=None,
        -)[source] +)[source]

        Test examples in the given file. Return (#failures, #tests).

        Optional keyword arg module_relative specifies how filenames should be interpreted:

        @@ -1255,7 +1255,7 @@
        Documentation Version
        -sympy.testing.runtests.test(*paths, subprocess=True, rerun=0, **kwargs)[source]
        +sympy.testing.runtests.test(*paths, subprocess=True, rerun=0, **kwargs)[source]

        Run tests in the specified test_*.py files.

        Tests in a particular test_*.py file are run if any of the given strings in paths matches a part of the test file’s path. If paths=[], diff --git a/dev/modules/utilities/autowrap.html b/dev/modules/utilities/autowrap.html index 3a527ff370d..33de2b00515 100644 --- a/dev/modules/utilities/autowrap.html +++ b/dev/modules/utilities/autowrap.html @@ -940,17 +940,17 @@

        Implementation detailsverbose=False,

        -)[source] +)[source]

        Base Class for code wrappers

        -class sympy.utilities.autowrap.CythonCodeWrapper(*args, **kwargs)[source]
        +class sympy.utilities.autowrap.CythonCodeWrapper(*args, **kwargs)[source]

        Wrapper that uses Cython

        -dump_pyx(routines, f, prefix)[source]
        +dump_pyx(routines, f, prefix)[source]

        Write a Cython file with Python wrappers

        This file contains all the definitions of the routines in c code and refers to the header file.

        @@ -979,19 +979,19 @@

        Implementation detailsverbose=False,

        -)[source] +)[source]

        Class used for testing independent of backends

        -class sympy.utilities.autowrap.F2PyCodeWrapper(*args, **kwargs)[source]
        +class sympy.utilities.autowrap.F2PyCodeWrapper(*args, **kwargs)[source]

        Wrapper that uses f2py

        -class sympy.utilities.autowrap.UfuncifyCodeWrapper(*args, **kwargs)[source]
        +class sympy.utilities.autowrap.UfuncifyCodeWrapper(*args, **kwargs)[source]

        Wrapper for Ufuncify

        @@ -1004,7 +1004,7 @@

        Implementation detailsfuncname=None,

        -)[source] +)[source]

        Write a C file with Python wrappers

        This file contains all the definitions of the routines in c code.

        Arguments

        @@ -1039,7 +1039,7 @@

        Implementation details**kwargs,

        -)[source] +)[source]

        Generates Python callable binaries based on the math expression.

        Parameters:
        @@ -1134,7 +1134,7 @@

        Implementation details
        -sympy.utilities.autowrap.binary_function(symfunc, expr, **kwargs)[source]
        +sympy.utilities.autowrap.binary_function(symfunc, expr, **kwargs)[source]

        Returns a SymPy function with expr as binary implementation

        This is a convenience function that automates the steps needed to autowrap the SymPy expression and attaching it to a Function object @@ -1186,7 +1186,7 @@

        Implementation details**kwargs,

        -)[source] +)[source]

        Generates a binary function that supports broadcasting on numpy arrays.

        Parameters:
        diff --git a/dev/modules/utilities/codegen.html b/dev/modules/utilities/codegen.html index 67491d3e7fb..161a69dc2c2 100644 --- a/dev/modules/utilities/codegen.html +++ b/dev/modules/utilities/codegen.html @@ -927,7 +927,7 @@

        Routine
        precision=None,

        -)[source] +)[source]

        An abstract Argument data structure: a name and a data type.

        This structure is refined in the descendants below.

        @@ -943,7 +943,7 @@

        Routine
        cse=False,

        -)[source] +)[source]

        Generator for C code.

        The .write() method inherited from CodeGen will output a code file and an interface file, <prefix>.c and <prefix>.h respectively.

        @@ -959,7 +959,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1004,7 +1004,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Writes the C header file.

        This file contains all the function declarations.

        @@ -1038,7 +1038,7 @@

        Routine
        -get_prototype(routine)[source]
        +get_prototype(routine)[source]

        Returns a string for the function prototype of the routine.

        If the routine has multiple result objects, an CodeGenError is raised.

        @@ -1049,7 +1049,7 @@

        Routine
        -class sympy.utilities.codegen.CodeGen(project='project', cse=False)[source]
        +class sympy.utilities.codegen.CodeGen(project='project', cse=False)[source]

        Abstract class for the code generators.

        @@ -1063,7 +1063,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1107,7 +1107,7 @@

        Routine
        global_vars=None,

        -)[source] +)[source]

        Creates an Routine object that is appropriate for this language.

        This implementation is appropriate for at least C/Fortran. Subclasses can override this if necessary.

        @@ -1131,7 +1131,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Writes all the source code files for the given routines.

        The generated source is returned as a list of (filename, contents) tuples, or is written to files (see below). Each filename consists @@ -1180,13 +1180,13 @@

        Routine
        rsname,

        -)[source] +)[source]

        Holds strings for a certain datatype in different languages.

        -class sympy.utilities.codegen.FCodeGen(project='project', printer=None)[source]
        +class sympy.utilities.codegen.FCodeGen(project='project', printer=None)[source]

        Generator for Fortran 95 code

        The .write() method inherited from CodeGen will output a code file and an interface file, <prefix>.f90 and <prefix>.h respectively.

        @@ -1202,7 +1202,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1247,7 +1247,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Writes the interface to a header file.

        This file contains all the function declarations.

        @@ -1280,7 +1280,7 @@

        Routine
        -get_interface(routine)[source]
        +get_interface(routine)[source]

        Returns a string for the function interface.

        The routine should have a single result object, which can be None. If the routine has multiple result objects, a CodeGenError is @@ -1292,7 +1292,7 @@

        Routine
        -class sympy.utilities.codegen.JuliaCodeGen(project='project', printer=None)[source]
        +class sympy.utilities.codegen.JuliaCodeGen(project='project', printer=None)[source]

        Generator for Julia code.

        The .write() method inherited from CodeGen will output a code file <prefix>.jl.

        @@ -1308,7 +1308,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1352,7 +1352,7 @@

        Routine
        global_vars,

        -)[source] +)[source]

        Specialized Routine creation for Julia.

        @@ -1360,7 +1360,7 @@

        Routine
        -class sympy.utilities.codegen.OctaveCodeGen(project='project', printer=None)[source]
        +class sympy.utilities.codegen.OctaveCodeGen(project='project', printer=None)[source]

        Generator for Octave code.

        The .write() method inherited from CodeGen will output a code file <prefix>.m.

        @@ -1383,7 +1383,7 @@

        Routine
        inline=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1427,7 +1427,7 @@

        Routine
        global_vars,

        -)[source] +)[source]

        Specialized Routine creation for Octave.

        @@ -1446,7 +1446,7 @@

        Routine
        precision=None,

        -)[source] +)[source]

        OutputArgument are always initialized in the routine.

        @@ -1463,7 +1463,7 @@

        Routine
        precision=None,

        -)[source] +)[source]

        An expression for a return value.

        The name result is used to avoid conflicts with the reserved word “return” in the Python language. It is also shorter than ReturnValue.

        @@ -1483,7 +1483,7 @@

        Routine
        global_vars,

        -)[source] +)[source]

        Generic description of evaluation routine for set of expressions.

        A CodeGen class can translate instances of this class into code in a particular language. The routine specification covers all the features @@ -1511,7 +1511,7 @@

        Routine
        -class sympy.utilities.codegen.RustCodeGen(project='project', printer=None)[source]
        +class sympy.utilities.codegen.RustCodeGen(project='project', printer=None)[source]

        Generator for Rust code.

        The .write() method inherited from CodeGen will output a code file <prefix>.rs

        @@ -1527,7 +1527,7 @@

        Routine
        empty=True,

        -)[source] +)[source]

        Write the code by calling language specific methods.

        The generated file contains all the definitions of the routines in low-level code and refers to the header file if appropriate.

        @@ -1562,7 +1562,7 @@

        Routine
        -get_prototype(routine)[source]
        +get_prototype(routine)[source]

        Returns a string for the function prototype of the routine.

        If the routine has multiple result objects, an CodeGenError is raised.

        @@ -1580,7 +1580,7 @@

        Routine
        global_vars,

        -)[source] +)[source]

        Specialized Routine creation for Rust.

        @@ -1605,7 +1605,7 @@

        Routine
        printer=None,

        -)[source] +)[source]

        Generate source code for expressions in a given language.

        Parameters:
        @@ -1743,7 +1743,7 @@

        Routine
        -sympy.utilities.codegen.get_default_datatype(expr, complex_allowed=None)[source]
        +sympy.utilities.codegen.get_default_datatype(expr, complex_allowed=None)[source]

        Derives an appropriate datatype based on the expression.

        @@ -1759,7 +1759,7 @@

        Routine
        language='F95',

        -)[source] +)[source]

        A factory that makes an appropriate Routine from an expression.

        Parameters:
        diff --git a/dev/modules/utilities/decorator.html b/dev/modules/utilities/decorator.html index 5621dc91712..e5b8fd59a3d 100644 --- a/dev/modules/utilities/decorator.html +++ b/dev/modules/utilities/decorator.html @@ -816,7 +816,7 @@
        Documentation Version
        stacklevel=3,
        -)[source] +)[source]

        Mark a function as deprecated.

        This decorator should be used if an entire function or class is deprecated. If only a certain functionality is deprecated, you should use @@ -879,7 +879,7 @@

        Documentation Version
        -sympy.utilities.decorator.conserve_mpmath_dps(func)[source]
        +sympy.utilities.decorator.conserve_mpmath_dps(func)[source]

        After the function finishes, resets the value of mpmath.mp.dps to the value it had before the function was run.

        @@ -896,7 +896,7 @@
        Documentation Version
        ground_types=None,

        -)[source] +)[source]

        Adds metadata about the dependencies which need to be met for doctesting the docstrings of the decorated objects.

        exe should be a list of executables

        @@ -908,7 +908,7 @@
        Documentation Version
        -sympy.utilities.decorator.memoize_property(propfunc)[source]
        +sympy.utilities.decorator.memoize_property(propfunc)[source]

        Property decorator that caches the value of potentially expensive propfunc after the first evaluation. The cached value is stored in the corresponding property name with an attached underscore.

        @@ -916,7 +916,7 @@
        Documentation Version
        -class sympy.utilities.decorator.no_attrs_in_subclass(cls, f)[source]
        +class sympy.utilities.decorator.no_attrs_in_subclass(cls, f)[source]

        Don’t ‘inherit’ certain attributes from a base class

        >>> from sympy.utilities.decorator import no_attrs_in_subclass
         
        @@ -948,7 +948,7 @@
        Documentation Version
        obj: T,
        -) T[source] +) T[source]

        Append obj’s name to global __all__ variable (call site).

        By using this decorator on functions or classes you achieve the same goal as by filling __all__ variables manually, you just do not have to repeat @@ -981,7 +981,7 @@

        Documentation Version
        -sympy.utilities.decorator.threaded(func)[source]
        +sympy.utilities.decorator.threaded(func)[source]

        Apply func to sub–elements of an object, including Add.

        This decorator is intended to make it uniformly possible to apply a function to all elements of composite objects, e.g. matrices, lists, tuples @@ -998,13 +998,13 @@

        Documentation Version
        -sympy.utilities.decorator.threaded_factory(func, use_add)[source]
        +sympy.utilities.decorator.threaded_factory(func, use_add)[source]

        A factory for threaded decorators.

        -sympy.utilities.decorator.xthreaded(func)[source]
        +sympy.utilities.decorator.xthreaded(func)[source]

        Apply func to sub–elements of an object, excluding Add.

        This decorator is intended to make it uniformly possible to apply a function to all elements of composite objects, e.g. matrices, lists, tuples diff --git a/dev/modules/utilities/enumerative.html b/dev/modules/utilities/enumerative.html index 5811f6c3418..ae79900ca45 100644 --- a/dev/modules/utilities/enumerative.html +++ b/dev/modules/utilities/enumerative.html @@ -807,7 +807,7 @@

        Documentation Version
        counting multiset partitions.

        -sympy.utilities.enumerative.multiset_partitions_taocp(multiplicities)[source]
        +sympy.utilities.enumerative.multiset_partitions_taocp(multiplicities)[source]

        Enumerates partitions of a multiset.

        Parameters:
        @@ -870,7 +870,7 @@
        Documentation Version
        -sympy.utilities.enumerative.factoring_visitor(state, primes)[source]
        +sympy.utilities.enumerative.factoring_visitor(state, primes)[source]

        Use with multiset_partitions_taocp to enumerate the ways a number can be expressed as a product of factors. For this usage, the exponents of the prime factors of a number are arguments to @@ -897,7 +897,7 @@

        Documentation Version
        -sympy.utilities.enumerative.list_visitor(state, components)[source]
        +sympy.utilities.enumerative.list_visitor(state, components)[source]

        Return a list of lists to represent the partition.

        Examples

        >>> from sympy.utilities.enumerative import list_visitor
        @@ -917,7 +917,7 @@ 
        Documentation Version
        and generalized by the class MultisetPartitionTraverser.

        -class sympy.utilities.enumerative.MultisetPartitionTraverser[source]
        +class sympy.utilities.enumerative.MultisetPartitionTraverser[source]

        Has methods to enumerate and count the partitions of a multiset.

        This implements a refactored and extended version of Knuth’s algorithm 7.1.2.5M [AOCP].”

        @@ -967,7 +967,7 @@
        Documentation Version
        multiplicities,
        -)[source] +)[source]

        Returns the number of partitions of a multiset whose components have the multiplicities given in multiplicities.

        For larger counts, this method is much faster than calling one @@ -1038,7 +1038,7 @@

        Documentation Version
        multiplicities,
        -)[source] +)[source]

        Enumerate the partitions of a multiset.

        Examples

        >>> from sympy.utilities.enumerative import list_visitor
        @@ -1075,7 +1075,7 @@ 
        Documentation Version
        lb,
        -)[source] +)[source]

        Enumerate the partitions of a multiset with lb < num(parts)

        Equivalent to enum_range(multiplicities, lb, sum(multiplicities))

        @@ -1119,7 +1119,7 @@
        Documentation Version
        ub,
        -)[source] +)[source]

        Enumerate the partitions of a multiset with lb < num(parts) <= ub.

        In particular, if partitions with exactly k parts are @@ -1148,7 +1148,7 @@

        Documentation Version
        ub,
        -)[source] +)[source]

        Enumerate multiset partitions with no more than ub parts.

        Equivalent to enum_range(multiplicities, 0, ub)

        diff --git a/dev/modules/utilities/exceptions.html b/dev/modules/utilities/exceptions.html index 6b14aa55246..3512cdeed13 100644 --- a/dev/modules/utilities/exceptions.html +++ b/dev/modules/utilities/exceptions.html @@ -815,7 +815,7 @@
        Documentation Version
        active_deprecations_target,
        -)[source] +)[source]

        A warning for deprecated features of SymPy.

        See the Deprecation Policy document for details on when and how things should be deprecated in SymPy.

        @@ -846,7 +846,7 @@
        Documentation Version
        -sympy.utilities.exceptions.ignore_warnings(warningcls)[source]
        +sympy.utilities.exceptions.ignore_warnings(warningcls)[source]

        Context manager to suppress warnings during tests.

        Note

        @@ -901,7 +901,7 @@
        Documentation Version
        stacklevel=3,
        -)[source] +)[source]

        Warn that a feature is deprecated in SymPy.

        See the Deprecation Policy document for details on when and how things should be deprecated in SymPy.

        diff --git a/dev/modules/utilities/iterables.html b/dev/modules/utilities/iterables.html index 100906dd0d3..ad55688b14f 100644 --- a/dev/modules/utilities/iterables.html +++ b/dev/modules/utilities/iterables.html @@ -805,7 +805,7 @@
        Documentation Version

        Iterables

        -class sympy.utilities.iterables.NotIterable[source]
        +class sympy.utilities.iterables.NotIterable[source]

        Use this as mixin when creating a class which is not supposed to return true when iterable() is called on its instances because calling list() on the instance, for example, would result in @@ -814,7 +814,7 @@

        Documentation Version
        -sympy.utilities.iterables.binary_partitions(n)[source]
        +sympy.utilities.iterables.binary_partitions(n)[source]

        Generates the binary partition of n.

        A binary partition consists only of numbers that are powers of two. Each step reduces a \(2^{k+1}\) to \(2^k\) and @@ -841,13 +841,13 @@

        Documentation Version
        -sympy.utilities.iterables.bracelets(n, k)[source]
        +sympy.utilities.iterables.bracelets(n, k)[source]

        Wrapper to necklaces to return a free (unrestricted) necklace.

        -sympy.utilities.iterables.capture(func)[source]
        +sympy.utilities.iterables.capture(func)[source]

        Return the printed output of func().

        func should be a function without arguments that produces output with print statements.

        @@ -867,7 +867,7 @@
        Documentation Version
        -sympy.utilities.iterables.common_prefix(*seqs)[source]
        +sympy.utilities.iterables.common_prefix(*seqs)[source]

        Return the subsequence that is a common start of sequences in seqs.

        >>> from sympy.utilities.iterables import common_prefix
         >>> common_prefix(list(range(3)))
        @@ -884,7 +884,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.common_suffix(*seqs)[source]
        +sympy.utilities.iterables.common_suffix(*seqs)[source]

        Return the subsequence that is a common ending of sequences in seqs.

        >>> from sympy.utilities.iterables import common_suffix
         >>> common_suffix(list(range(3)))
        @@ -901,7 +901,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.connected_components(G)[source]
        +sympy.utilities.iterables.connected_components(G)[source]

        Connected components of an undirected graph or weakly connected components of a directed graph.

        @@ -962,13 +962,13 @@
        Documentation Version
        -sympy.utilities.iterables.dict_merge(*dicts)[source]
        +sympy.utilities.iterables.dict_merge(*dicts)[source]

        Merge dictionaries into a single dictionary.

        -sympy.utilities.iterables.filter_symbols(iterator, exclude)[source]
        +sympy.utilities.iterables.filter_symbols(iterator, exclude)[source]

        Only yield elements from \(iterator\) that do not occur in \(exclude\).

        Parameters:
        @@ -992,7 +992,7 @@
        Documentation Version
        -sympy.utilities.iterables.flatten(iterable, levels=None, cls=None)[source]
        +sympy.utilities.iterables.flatten(iterable, levels=None, cls=None)[source]

        Recursively denest iterable containers.

        >>> from sympy import flatten
         
        @@ -1032,7 +1032,7 @@
        Documentation Version
        -sympy.utilities.iterables.generate_bell(n)[source]
        +sympy.utilities.iterables.generate_bell(n)[source]

        Return permutations of [0, 1, …, n - 1] such that each permutation differs from the last by the exchange of a single pair of neighbors. The n! permutations are returned as an iterator. In order to obtain @@ -1106,7 +1106,7 @@

        Documentation Version
        -sympy.utilities.iterables.generate_derangements(s)[source]
        +sympy.utilities.iterables.generate_derangements(s)[source]

        Return unique derangements of the elements of iterable s.

        Examples

        >>> from sympy.utilities.iterables import generate_derangements
        @@ -1126,7 +1126,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.generate_involutions(n)[source]
        +sympy.utilities.iterables.generate_involutions(n)[source]

        Generates involutions.

        An involution is a permutation that when multiplied by itself equals the identity permutation. In this @@ -1154,7 +1154,7 @@

        Documentation Version
        -sympy.utilities.iterables.generate_oriented_forest(n)[source]
        +sympy.utilities.iterables.generate_oriented_forest(n)[source]

        This algorithm generates oriented forests.

        An oriented graph is a directed graph having no symmetric pair of directed edges. A forest is an acyclic graph, i.e., it has no cycles. A forest can @@ -1182,7 +1182,7 @@

        Documentation Version
        -sympy.utilities.iterables.group(seq, multiple=True)[source]
        +sympy.utilities.iterables.group(seq, multiple=True)[source]

        Splits a sequence into a list of lists of equal, adjacent elements.

        Examples

        >>> from sympy import group
        @@ -1204,7 +1204,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.has_dups(seq)[source]
        +sympy.utilities.iterables.has_dups(seq)[source]

        Return True if there are any duplicate elements in seq.

        Examples

        >>> from sympy import has_dups, Dict, Set
        @@ -1220,7 +1220,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.has_variety(seq)[source]
        +sympy.utilities.iterables.has_variety(seq)[source]

        Return True if there are any different elements in seq.

        Examples

        >>> from sympy import has_variety
        @@ -1236,7 +1236,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.ibin(n, bits=None, str=False)[source]
        +sympy.utilities.iterables.ibin(n, bits=None, str=False)[source]

        Return a list of length bits corresponding to the binary value of n with small bits to the right (last). If bits is omitted, the length will be the number required to represent n. If the bits are @@ -1279,7 +1279,7 @@

        Documentation Version
        -sympy.utilities.iterables.iproduct(*iterables)[source]
        +sympy.utilities.iterables.iproduct(*iterables)[source]

        Cartesian product of iterables.

        Generator of the Cartesian product of iterables. This is analogous to itertools.product except that it works with infinite iterables and will @@ -1306,7 +1306,7 @@

        Documentation Version
        -sympy.utilities.iterables.is_palindromic(s, i=0, j=None)[source]
        +sympy.utilities.iterables.is_palindromic(s, i=0, j=None)[source]

        Return True if the sequence is the same from left to right as it is from right to left in the whole sequence (default) or in the Python slice s[i: j]; else False.

        @@ -1339,7 +1339,7 @@
        Documentation Version
        -sympy.utilities.iterables.is_sequence(i, include=None)[source]
        +sympy.utilities.iterables.is_sequence(i, include=None)[source]

        Return a boolean indicating whether i is a sequence in the SymPy sense. If anything that fails the test below should be included as being a sequence for your application, set ‘include’ to that object’s @@ -1380,7 +1380,7 @@

        Documentation Version
        <class 'sympy.utilities.iterables.NotIterable'>),
        -)[source] +)[source]

        Return a boolean indicating whether i is SymPy iterable. True also indicates that the iterator is finite, e.g. you can call list(…) on the instance.

        @@ -1424,7 +1424,7 @@
        Documentation Version
        -sympy.utilities.iterables.kbins(l, k, ordered=None)[source]
        +sympy.utilities.iterables.kbins(l, k, ordered=None)[source]

        Return sequence l partitioned into k bins.

        Examples

        The default is to give the items in the same order, but grouped @@ -1504,7 +1504,7 @@

        Documentation Version
        -sympy.utilities.iterables.least_rotation(x, key=None)[source]
        +sympy.utilities.iterables.least_rotation(x, key=None)[source]

        Returns the number of steps of left rotation required to obtain lexicographically minimal string/list/tuple, etc.

        Examples

        @@ -1527,7 +1527,7 @@
        Documentation Version
        -sympy.utilities.iterables.minlex(seq, directed=True, key=None)[source]
        +sympy.utilities.iterables.minlex(seq, directed=True, key=None)[source]

        Return the rotation of the sequence in which the lexically smallest elements appear first, e.g. \(cba \rightarrow acb\).

        The sequence returned is a tuple, unless the input sequence is a string @@ -1561,7 +1561,7 @@

        Documentation Version
        -sympy.utilities.iterables.multiset(seq)[source]
        +sympy.utilities.iterables.multiset(seq)[source]

        Return the hashable sequence in multiset form with values being the multiplicity of the item in the sequence.

        Examples

        @@ -1578,7 +1578,7 @@
        Documentation Version
        -sympy.utilities.iterables.multiset_combinations(m, n, g=None)[source]
        +sympy.utilities.iterables.multiset_combinations(m, n, g=None)[source]

        Return the unique combinations of size n from multiset m.

        Examples

        >>> from sympy.utilities.iterables import multiset_combinations
        @@ -1605,7 +1605,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.multiset_derangements(s)[source]
        +sympy.utilities.iterables.multiset_derangements(s)[source]

        Generate derangements of the elements of s in place.

        Examples

        >>> from sympy.utilities.iterables import multiset_derangements, uniq
        @@ -1626,7 +1626,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.multiset_partitions(multiset, m=None)[source]
        +sympy.utilities.iterables.multiset_partitions(multiset, m=None)[source]

        Return unique partitions of the given multiset (in list form). If m is None, all multisets will be returned, otherwise only partitions with m parts will be returned.

        @@ -1690,7 +1690,7 @@
        Documentation Version
        -sympy.utilities.iterables.multiset_permutations(m, size=None, g=None)[source]
        +sympy.utilities.iterables.multiset_permutations(m, size=None, g=None)[source]

        Return the unique permutations of multiset m.

        Examples

        >>> from sympy.utilities.iterables import multiset_permutations
        @@ -1707,7 +1707,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.necklaces(n, k, free=False)[source]
        +sympy.utilities.iterables.necklaces(n, k, free=False)[source]

        A routine to generate necklaces that may (free=True) or may not (free=False) be turned over to be viewed. The “necklaces” returned are comprised of n integers (beads) with k different @@ -1768,7 +1768,7 @@

        Documentation Version
        **assumptions,
        -)[source] +)[source]

        Generate an infinite stream of Symbols consisting of a prefix and increasing subscripts provided that they do not occur in exclude.

        @@ -1807,7 +1807,7 @@
        Documentation Version
        -sympy.utilities.iterables.ordered_partitions(n, m=None, sort=True)[source]
        +sympy.utilities.iterables.ordered_partitions(n, m=None, sort=True)[source]

        Generates ordered partitions of integer n.

        Parameters:
        @@ -1897,7 +1897,7 @@
        Documentation Version
        -sympy.utilities.iterables.partitions(n, m=None, k=None, size=False)[source]
        +sympy.utilities.iterables.partitions(n, m=None, k=None, size=False)[source]

        Generate all partitions of positive integer, n.

        Each partition is represented as a dictionary, mapping an integer to the number of copies of that integer in the partition. For example, @@ -1963,7 +1963,7 @@

        Documentation Version
        -sympy.utilities.iterables.permute_signs(t)[source]
        +sympy.utilities.iterables.permute_signs(t)[source]

        Return iterator in which the signs of non-zero elements of t are permuted.

        Examples

        @@ -1976,7 +1976,7 @@
        Documentation Version
        -sympy.utilities.iterables.postfixes(seq)[source]
        +sympy.utilities.iterables.postfixes(seq)[source]

        Generate all postfixes of a sequence.

        Examples

        >>> from sympy.utilities.iterables import postfixes
        @@ -1990,7 +1990,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.prefixes(seq)[source]
        +sympy.utilities.iterables.prefixes(seq)[source]

        Generate all prefixes of a sequence.

        Examples

        >>> from sympy.utilities.iterables import prefixes
        @@ -2004,7 +2004,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.random_derangement(t, choice=None, strict=True)[source]
        +sympy.utilities.iterables.random_derangement(t, choice=None, strict=True)[source]

        Return a list of elements in which none are in the same positions as they were originally. If an element fills more than half of the positions then an error will be raised since no derangement is possible. To obtain @@ -2038,7 +2038,7 @@

        Documentation Version
        -sympy.utilities.iterables.reshape(seq, how)[source]
        +sympy.utilities.iterables.reshape(seq, how)[source]

        Reshape the sequence according to the template in how.

        Examples

        >>> from sympy.utilities import reshape
        @@ -2085,7 +2085,7 @@ 
        Documentation Version
        -sympy.utilities.iterables.rotate_left(x, y)[source]
        +sympy.utilities.iterables.rotate_left(x, y)[source]

        Left rotates a list x by the number of steps specified in y.

        Examples

        @@ -2099,7 +2099,7 @@
        Documentation Version
        -sympy.utilities.iterables.rotate_right(x, y)[source]
        +sympy.utilities.iterables.rotate_right(x, y)[source]

        Right rotates a list x by the number of steps specified in y.

        Examples

        @@ -2113,7 +2113,7 @@
        Documentation Version
        -sympy.utilities.iterables.rotations(s, dir=1)[source]
        +sympy.utilities.iterables.rotations(s, dir=1)[source]

        Return a generator giving the items in s as list where each subsequent list has the items rotated to the left (default) or right (dir=-1) relative to the previous list.

        @@ -2129,7 +2129,7 @@
        Documentation Version
        -sympy.utilities.iterables.roundrobin(*iterables)[source]
        +sympy.utilities.iterables.roundrobin(*iterables)[source]

        roundrobin recipe taken from itertools documentation: https://docs.python.org/3/library/itertools.html#itertools-recipes

        roundrobin(‘ABC’, ‘D’, ‘EF’) –> A D E B F C

        @@ -2138,7 +2138,7 @@
        Documentation Version
        -sympy.utilities.iterables.runs(seq, op=<built-in function gt>)[source]
        +sympy.utilities.iterables.runs(seq, op=<built-in function gt>)[source]

        Group the sequence into lists in which successive elements all compare the same with the comparison operator, op: op(seq[i + 1], seq[i]) is True from all elements in a run.

        @@ -2155,7 +2155,7 @@
        Documentation Version
        -sympy.utilities.iterables.sequence_partitions(l, n, /)[source]
        +sympy.utilities.iterables.sequence_partitions(l, n, /)[source]

        Returns the partition of sequence \(l\) into \(n\) bins

        Parameters:
        @@ -2205,7 +2205,7 @@
        Documentation Version
        -sympy.utilities.iterables.sequence_partitions_empty(l, n, /)[source]
        +sympy.utilities.iterables.sequence_partitions_empty(l, n, /)[source]

        Returns the partition of sequence \(l\) into \(n\) bins with empty sequence

        @@ -2258,7 +2258,7 @@
        Documentation Version
        -sympy.utilities.iterables.sift(seq, keyfunc, binary=False)[source]
        +sympy.utilities.iterables.sift(seq, keyfunc, binary=False)[source]

        Sift the sequence, seq according to keyfunc.

        Returns:
        @@ -2330,7 +2330,7 @@
        Documentation Version
        -sympy.utilities.iterables.signed_permutations(t)[source]
        +sympy.utilities.iterables.signed_permutations(t)[source]

        Return iterator in which the signs of non-zero elements of t and the order of the elements are permuted and all returned values are unique.

        @@ -2348,7 +2348,7 @@
        Documentation Version
        -sympy.utilities.iterables.strongly_connected_components(G)[source]
        +sympy.utilities.iterables.strongly_connected_components(G)[source]

        Strongly connected components of a directed graph in reverse topological order.

        @@ -2422,7 +2422,7 @@
        Documentation Version
        -sympy.utilities.iterables.subsets(seq, k=None, repetition=False)[source]
        +sympy.utilities.iterables.subsets(seq, k=None, repetition=False)[source]

        Generates all \(k\)-subsets (combinations) from an \(n\)-element set, seq.

        A \(k\)-subset of an \(n\)-element set is any subset of length exactly \(k\). The number of \(k\)-subsets of an \(n\)-element set is given by binomial(n, k), @@ -2463,13 +2463,13 @@

        Documentation Version
        -sympy.utilities.iterables.take(iter, n)[source]
        +sympy.utilities.iterables.take(iter, n)[source]

        Return n items from iter iterator.

        -sympy.utilities.iterables.topological_sort(graph, key=None)[source]
        +sympy.utilities.iterables.topological_sort(graph, key=None)[source]

        Topological sort of graph’s vertices.

        Parameters:
        @@ -2544,14 +2544,14 @@
        Documentation Version
        -sympy.utilities.iterables.unflatten(iter, n=2)[source]
        +sympy.utilities.iterables.unflatten(iter, n=2)[source]

        Group iter into tuples of length n. Raise an error if the length of iter is not a multiple of n.

        -sympy.utilities.iterables.uniq(seq, result=None)[source]
        +sympy.utilities.iterables.uniq(seq, result=None)[source]

        Yield unique elements from seq as an iterator. The second parameter result is used internally; it is not necessary to pass anything for this.

        @@ -2578,7 +2578,7 @@
        Documentation Version
        -sympy.utilities.iterables.variations(seq, n, repetition=False)[source]
        +sympy.utilities.iterables.variations(seq, n, repetition=False)[source]

        Returns an iterator over the n-sized variations of seq (size N). repetition controls whether items in seq can appear more than once;

        Examples

        diff --git a/dev/modules/utilities/lambdify.html b/dev/modules/utilities/lambdify.html index 03e2f6177fb..0b7a053a790 100644 --- a/dev/modules/utilities/lambdify.html +++ b/dev/modules/utilities/lambdify.html @@ -807,7 +807,7 @@
        Documentation Version
        lambda functions which can be used to calculate numerical values very fast.

        -sympy.utilities.lambdify.implemented_function(symfunc, implementation)[source]
        +sympy.utilities.lambdify.implemented_function(symfunc, implementation)[source]

        Add numerical implementation to function symfunc.

        symfunc can be an UndefinedFunction instance, or a name string. In the latter case we create an UndefinedFunction instance with that @@ -850,7 +850,7 @@

        Documentation Version
        -sympy.utilities.lambdify.lambdastr(args, expr, printer=None, dummify=None)[source]
        +sympy.utilities.lambdify.lambdastr(args, expr, printer=None, dummify=None)[source]

        Returns a string that can be evaluated to a lambda function.

        Examples

        >>> from sympy.abc import x, y, z
        @@ -885,7 +885,7 @@ 
        Documentation Version
        docstring_limit=1000,
        -)[source] +)[source]

        Convert a SymPy expression into a function that allows for fast numeric evaluation.

        diff --git a/dev/modules/utilities/memoization.html b/dev/modules/utilities/memoization.html index 4c8cd35175b..4844ce6f5e9 100644 --- a/dev/modules/utilities/memoization.html +++ b/dev/modules/utilities/memoization.html @@ -805,7 +805,7 @@
        Documentation Version

        Memoization

        -sympy.utilities.memoization.assoc_recurrence_memo(base_seq)[source]
        +sympy.utilities.memoization.assoc_recurrence_memo(base_seq)[source]

        Memo decorator for associated sequences defined by recurrence starting from base

        base_seq(n) – callable to get base sequence elements

        XXX works only for Pn0 = base_seq(0) cases @@ -814,7 +814,7 @@

        Documentation Version
        -sympy.utilities.memoization.recurrence_memo(initial)[source]
        +sympy.utilities.memoization.recurrence_memo(initial)[source]

        Memo decorator for sequences defined by recurrence

        Examples

        >>> from sympy.utilities.memoization import recurrence_memo
        diff --git a/dev/modules/utilities/misc.html b/dev/modules/utilities/misc.html
        index 11de4524700..d6de13383c4 100644
        --- a/dev/modules/utilities/misc.html
        +++ b/dev/modules/utilities/misc.html
        @@ -806,7 +806,7 @@ 
        Documentation Version

        Miscellaneous stuff that does not really fit anywhere else.

        -sympy.utilities.misc.as_int(n, strict=True)[source]
        +sympy.utilities.misc.as_int(n, strict=True)[source]

        Convert the argument to a builtin integer.

        The return value is guaranteed to be equal to the input. ValueError is raised if the input has a non-integral value. When strict is True, this @@ -855,27 +855,27 @@

        Documentation Version
        -sympy.utilities.misc.debug(*args)[source]
        +sympy.utilities.misc.debug(*args)[source]

        Print *args if SYMPY_DEBUG is True, else do nothing.

        -sympy.utilities.misc.debug_decorator(func)[source]
        +sympy.utilities.misc.debug_decorator(func)[source]

        If SYMPY_DEBUG is True, it will print a nice execution tree with arguments and results of all decorated functions, else do nothing.

        -sympy.utilities.misc.debugf(string, args)[source]
        +sympy.utilities.misc.debugf(string, args)[source]

        Print string%args if SYMPY_DEBUG is True, else do nothing. This is intended for debug messages using formatted strings.

        -sympy.utilities.misc.filldedent(s, w=70, **kwargs)[source]
        +sympy.utilities.misc.filldedent(s, w=70, **kwargs)[source]

        Strips leading and trailing empty lines from a copy of s, then dedents, fills and returns it.

        Empty line stripping serves to deal with docstrings like this one that @@ -890,7 +890,7 @@

        Documentation Version
        -sympy.utilities.misc.find_executable(executable, path=None)[source]
        +sympy.utilities.misc.find_executable(executable, path=None)[source]

        Try to find ‘executable’ in the directories listed in ‘path’ (a string listing directories separated by ‘os.pathsep’; defaults to os.environ[‘PATH’]). Returns the complete filename or None if not @@ -899,7 +899,7 @@

        Documentation Version
        -sympy.utilities.misc.func_name(x, short=False)[source]
        +sympy.utilities.misc.func_name(x, short=False)[source]

        Return function name of \(x\) (if defined) else the \(type(x)\). If short is True and there is a shorter alias for the result, return the alias.

        @@ -919,13 +919,13 @@
        Documentation Version
        -sympy.utilities.misc.ordinal(num)[source]
        +sympy.utilities.misc.ordinal(num)[source]

        Return ordinal number string of num, e.g. 1 becomes 1st.

        -sympy.utilities.misc.rawlines(s)[source]
        +sympy.utilities.misc.rawlines(s)[source]

        Return a cut-and-pastable string that, when printed, is equivalent to the input. Use this when there is more than one line in the string. The string returned is formatted so it can be indented @@ -989,7 +989,7 @@

        Documentation Version
        -sympy.utilities.misc.replace(string, *reps)[source]
        +sympy.utilities.misc.replace(string, *reps)[source]

        Return string with all keys in reps replaced with their corresponding values, longer strings first, irrespective of the order they are given. reps may be passed as tuples @@ -1024,7 +1024,7 @@

        Documentation Version
        -sympy.utilities.misc.strlines(s, c=64, short=False)[source]
        +sympy.utilities.misc.strlines(s, c=64, short=False)[source]

        Return a cut-and-pastable string that, when printed, is equivalent to the input. The lines will be surrounded by parentheses and no line will be longer than c (default 64) @@ -1055,7 +1055,7 @@

        Documentation Version
        -sympy.utilities.misc.translate(s, a, b=None, c=None)[source]
        +sympy.utilities.misc.translate(s, a, b=None, c=None)[source]

        Return s where characters have been replaced or deleted.

        Syntax

        diff --git a/dev/modules/utilities/source.html b/dev/modules/utilities/source.html index 256525084d3..a8eb235413c 100644 --- a/dev/modules/utilities/source.html +++ b/dev/modules/utilities/source.html @@ -806,7 +806,7 @@
        Documentation Version

        This module adds several functions for interactive source code inspection.

        -sympy.utilities.source.get_class(lookup_view)[source]
        +sympy.utilities.source.get_class(lookup_view)[source]

        Convert a string version of a class name to the object.

        For example, get_class(‘sympy.core.Basic’) will return class Basic located in module sympy.core

        @@ -814,7 +814,7 @@
        Documentation Version
        -sympy.utilities.source.get_mod_func(callback)[source]
        +sympy.utilities.source.get_mod_func(callback)[source]

        splits the string path to a class into a string path to the module and the name of the class.

        Examples

        diff --git a/dev/modules/utilities/timeutils.html b/dev/modules/utilities/timeutils.html index b722bffad2c..8479b61e36d 100644 --- a/dev/modules/utilities/timeutils.html +++ b/dev/modules/utilities/timeutils.html @@ -806,7 +806,7 @@
        Documentation Version

        Simple tools for timing functions’ execution, when IPython is not available.

        -sympy.utilities.timeutils.timed(func, setup='pass', limit=None)[source]
        +sympy.utilities.timeutils.timed(func, setup='pass', limit=None)[source]

        Adaptively measure execution time of a function.

        diff --git a/dev/modules/vector/api/classes.html b/dev/modules/vector/api/classes.html index 7dcb7fc5009..26ea4674ae5 100644 --- a/dev/modules/vector/api/classes.html +++ b/dev/modules/vector/api/classes.html @@ -817,7 +817,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Represents a coordinate system in 3-D space.

        @@ -837,7 +837,7 @@

        Essential Classes in sympy.vector (docstrings)transformation=None,

        -)[source] +)[source]

        The orientation/location parameters are necessary if this system is being defined at a certain orientation or location wrt another.

        @@ -888,7 +888,7 @@

        Essential Classes in sympy.vector (docstrings)vector_names=None,

        -)[source] +)[source]

        Returns a CoordSys3D which is connected to self by transformation.

        Parameters:
        @@ -932,7 +932,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Returns a CoordSys3D with its origin located at the given position wrt this coordinate system’s origin.

        @@ -976,7 +976,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Creates a new CoordSys3D oriented in the user-specified way with respect to this system.

        Please refer to the documentation of the orienter classes @@ -1056,7 +1056,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Axis rotation is a rotation about an arbitrary axis by some angle. The angle is supplied as a SymPy expr scalar, and the axis is supplied as a Vector.

        @@ -1113,7 +1113,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Body orientation takes this coordinate system through three successive simple rotations.

        Body fixed rotations include both Euler Angles and @@ -1193,7 +1193,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Quaternion orientation orients the new CoordSys3D with Quaternions, defined as a finite rotation about lambda, a unit vector, by some amount theta.

        @@ -1252,7 +1252,7 @@

        Essential Classes in sympy.vector (docstrings)variable_names=None,

        -)[source] +)[source]

        Space rotation is similar to Body rotation, but the rotations are applied in the opposite order.

        @@ -1315,7 +1315,7 @@

        Essential Classes in sympy.vector (docstrings)
        -position_wrt(other)[source]
        +position_wrt(other)[source]

        Returns the position vector of the origin of this coordinate system with respect to another Point/CoordSys3D.

        @@ -1340,7 +1340,7 @@

        Essential Classes in sympy.vector (docstrings)
        -rotation_matrix(other)[source]
        +rotation_matrix(other)[source]

        Returns the direction cosine matrix(DCM), also known as the ‘rotation matrix’ of this coordinate system with respect to another system.

        @@ -1373,7 +1373,7 @@

        Essential Classes in sympy.vector (docstrings)
        -scalar_map(other)[source]
        +scalar_map(other)[source]

        Returns a dictionary which expresses the coordinate variables (base scalars) of this frame in terms of the variables of otherframe.

        @@ -1401,7 +1401,7 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.vector.Vector(*args)[source]
        +class sympy.vector.vector.Vector(*args)[source]

        Super class for all Vector classes. Ideally, neither this class nor any of its subclasses should be instantiated by the user.

        @@ -1423,7 +1423,7 @@

        Essential Classes in sympy.vector (docstrings)
        -cross(other)[source]
        +cross(other)[source]

        Returns the cross product of this Vector with another Vector or Dyadic instance. The cross product is a Vector, if ‘other’ is a Vector. If ‘other’ @@ -1455,7 +1455,7 @@

        Essential Classes in sympy.vector (docstrings)
        -dot(other)[source]
        +dot(other)[source]

        Returns the dot product of this Vector, either with another Vector, or a Dyadic, or a Del operator. If ‘other’ is a Vector, returns the dot product scalar (SymPy @@ -1495,7 +1495,7 @@

        Essential Classes in sympy.vector (docstrings)
        -equals(other)[source]
        +equals(other)[source]

        Check if self and other are identically equal vectors.

        Parameters:
        @@ -1555,19 +1555,19 @@

        Essential Classes in sympy.vector (docstrings)
        -magnitude()[source]
        +magnitude()[source]

        Returns the magnitude of this vector.

        -normalize()[source]
        +normalize()[source]

        Returns the normalized version of this vector.

        -outer(other)[source]
        +outer(other)[source]

        Returns the outer product of this vector with another, in the form of a Dyadic instance.

        @@ -1590,7 +1590,7 @@

        Essential Classes in sympy.vector (docstrings)
        -projection(other, scalar=False)[source]
        +projection(other, scalar=False)[source]

        Returns the vector or scalar projection of the ‘other’ on ‘self’.

        Examples

        >>> from sympy.vector.coordsysrect import CoordSys3D
        @@ -1608,7 +1608,7 @@ 

        Essential Classes in sympy.vector (docstrings)
        -separate()[source]
        +separate()[source]

        The constituents of this vector in different coordinate systems, as per its definition.

        Returns a dict mapping each CoordSys3D to the corresponding @@ -1626,7 +1626,7 @@

        Essential Classes in sympy.vector (docstrings)
        -to_matrix(system)[source]
        +to_matrix(system)[source]

        Returns the matrix form of this vector with respect to the specified coordinate system.

        @@ -1655,7 +1655,7 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.dyadic.Dyadic(*args)[source]
        +class sympy.vector.dyadic.Dyadic(*args)[source]

        Super class for all Dyadic-classes.

        References

        @@ -1679,7 +1679,7 @@

        Essential Classes in sympy.vector (docstrings)
        -cross(other)[source]
        +cross(other)[source]

        Returns the cross product between this Dyadic, and a Vector, as a Vector instance.

        @@ -1702,7 +1702,7 @@

        Essential Classes in sympy.vector (docstrings)
        -dot(other)[source]
        +dot(other)[source]

        Returns the dot product(also called inner product) of this Dyadic, with another Dyadic or Vector. If ‘other’ is a Dyadic, this returns a Dyadic. Else, it returns @@ -1730,7 +1730,7 @@

        Essential Classes in sympy.vector (docstrings)
        -to_matrix(system, second_system=None)[source]
        +to_matrix(system, second_system=None)[source]

        Returns the matrix form of the dyadic with respect to one or two coordinate systems.

        @@ -1774,12 +1774,12 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.deloperator.Del[source]
        +class sympy.vector.deloperator.Del[source]

        Represents the vector differential operator, usually represented in mathematical expressions as the ‘nabla’ symbol.

        -cross(vect, doit=False)[source]
        +cross(vect, doit=False)[source]

        Represents the cross product between this operator and a given vector - equal to the curl of the vector field.

        @@ -1812,7 +1812,7 @@

        Essential Classes in sympy.vector (docstrings)
        -dot(vect, doit=False)[source]
        +dot(vect, doit=False)[source]

        Represents the dot product between this operator and a given vector - equal to the divergence of the vector field.

        @@ -1844,7 +1844,7 @@

        Essential Classes in sympy.vector (docstrings)
        -gradient(scalar_field, doit=False)[source]
        +gradient(scalar_field, doit=False)[source]

        Returns the gradient of the given scalar field, as a Vector instance.

        @@ -1877,7 +1877,7 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.parametricregion.ParametricRegion(definition, *bounds)[source]
        +class sympy.vector.parametricregion.ParametricRegion(definition, *bounds)[source]

        Represents a parametric region in space.

        Parameters:
        @@ -1920,7 +1920,7 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.implicitregion.ImplicitRegion(variables, equation)[source]
        +class sympy.vector.implicitregion.ImplicitRegion(variables, equation)[source]

        Represents an implicit region in space.

        Parameters:
        @@ -1960,7 +1960,7 @@

        Essential Classes in sympy.vector (docstrings)
        -multiplicity(point)[source]
        +multiplicity(point)[source]

        Returns the multiplicity of a singular point on the region.

        A singular point (x,y) of region is said to be of multiplicity m if all the partial derivatives off to order m - 1 vanish there.

        @@ -1985,7 +1985,7 @@

        Essential Classes in sympy.vector (docstrings)reg_point=None,

        -)[source] +)[source]

        Returns the rational parametrization of implicit region.

        Examples

        >>> from sympy import Eq
        @@ -2036,7 +2036,7 @@ 

        Essential Classes in sympy.vector (docstrings)
        -regular_point()[source]
        +regular_point()[source]

        Returns a point on the implicit region.

        Examples

        >>> from sympy.abc import x, y, z
        @@ -2062,7 +2062,7 @@ 

        Essential Classes in sympy.vector (docstrings)
        -singular_points()[source]
        +singular_points()[source]

        Returns a set of singular points of the region.

        The singular points are those points on the region where all partial derivatives vanish.

        @@ -2080,7 +2080,7 @@

        Essential Classes in sympy.vector (docstrings)
        -class sympy.vector.integrals.ParametricIntegral(field, parametricregion)[source]
        +class sympy.vector.integrals.ParametricIntegral(field, parametricregion)[source]

        Represents integral of a scalar or vector field over a Parametric Region

        Examples

        diff --git a/dev/modules/vector/api/orienterclasses.html b/dev/modules/vector/api/orienterclasses.html index ed0b683f056..a7bd34f4786 100644 --- a/dev/modules/vector/api/orienterclasses.html +++ b/dev/modules/vector/api/orienterclasses.html @@ -805,11 +805,11 @@
        Documentation Version

        Orienter classes (docstrings)

        -class sympy.vector.orienters.Orienter(*args)[source]
        +class sympy.vector.orienters.Orienter(*args)[source]

        Super-class for all orienter classes.

        -rotation_matrix()[source]
        +rotation_matrix()[source]

        The rotation matrix corresponding to this orienter instance.

        @@ -818,11 +818,11 @@

        Orienter classes (docstrings)
        -class sympy.vector.orienters.AxisOrienter(angle, axis)[source]
        +class sympy.vector.orienters.AxisOrienter(angle, axis)[source]

        Class to denote an axis orienter.

        -__init__(angle, axis)[source]
        +__init__(angle, axis)[source]

        Axis rotation is a rotation about an arbitrary axis by some angle. The angle is supplied as a SymPy expr scalar, and the axis is supplied as a Vector.

        @@ -852,7 +852,7 @@

        Orienter classes (docstrings)
        -rotation_matrix(system)[source]
        +rotation_matrix(system)[source]

        The rotation matrix corresponding to this orienter instance.

        @@ -870,7 +870,7 @@

        Orienter classes (docstrings)
        -class sympy.vector.orienters.BodyOrienter(angle1, angle2, angle3, rot_order)[source]
        +class sympy.vector.orienters.BodyOrienter(angle1, angle2, angle3, rot_order)[source]

        Class to denote a body-orienter.

        @@ -883,7 +883,7 @@

        Orienter classes (docstrings)rot_order,

        -)[source] +)[source]

        Body orientation takes this coordinate system through three successive simple rotations.

        Body fixed rotations include both Euler Angles and @@ -941,7 +941,7 @@

        Orienter classes (docstrings)
        -class sympy.vector.orienters.SpaceOrienter(angle1, angle2, angle3, rot_order)[source]
        +class sympy.vector.orienters.SpaceOrienter(angle1, angle2, angle3, rot_order)[source]

        Class to denote a space-orienter.

        @@ -954,7 +954,7 @@

        Orienter classes (docstrings)rot_order,

        -)[source] +)[source]

        Space rotation is similar to Body rotation, but the rotations are applied in the opposite order.

        @@ -1008,7 +1008,7 @@

        Orienter classes (docstrings)
        -class sympy.vector.orienters.QuaternionOrienter(q0, q1, q2, q3)[source]
        +class sympy.vector.orienters.QuaternionOrienter(q0, q1, q2, q3)[source]

        Class to denote a quaternion-orienter.

        @@ -1021,7 +1021,7 @@

        Orienter classes (docstrings)rot_order,

        -)[source] +)[source]

        Quaternion orientation orients the new CoordSys3D with Quaternions, defined as a finite rotation about lambda, a unit vector, by some amount theta.

        diff --git a/dev/modules/vector/api/vectorfunctions.html b/dev/modules/vector/api/vectorfunctions.html index e2bb3c675b9..7e5bd6db06e 100644 --- a/dev/modules/vector/api/vectorfunctions.html +++ b/dev/modules/vector/api/vectorfunctions.html @@ -805,7 +805,7 @@
        Documentation Version

        Essential Functions in sympy.vector (docstrings)

        -sympy.vector.matrix_to_vector(matrix, system)[source]
        +sympy.vector.matrix_to_vector(matrix, system)[source]

        Converts a vector in matrix form to a Vector instance.

        It is assumed that the elements of the Matrix represent the measure numbers of the components of the vector along basis @@ -847,7 +847,7 @@

        Essential Functions in sympy.vector (docstrings)variables=False,

        -)[source] +)[source]

        Global function for ‘express’ functionality.

        Re-expresses a Vector, Dyadic or scalar(sympyfiable) in the given coordinate system.

        @@ -897,7 +897,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.curl(vect, doit=True)[source]
        +sympy.vector.curl(vect, doit=True)[source]

        Returns the curl of a vector field computed wrt the base scalars of the given coordinate system.

        @@ -929,7 +929,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.divergence(vect, doit=True)[source]
        +sympy.vector.divergence(vect, doit=True)[source]

        Returns the divergence of a vector field computed wrt the base scalars of the given coordinate system.

        @@ -963,7 +963,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.gradient(scalar_field, doit=True)[source]
        +sympy.vector.gradient(scalar_field, doit=True)[source]

        Returns the vector gradient of a scalar field computed wrt the base scalars of the given coordinate system.

        @@ -995,7 +995,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.is_conservative(field)[source]
        +sympy.vector.is_conservative(field)[source]

        Checks if a field is conservative.

        Parameters:
        @@ -1019,7 +1019,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.is_solenoidal(field)[source]
        +sympy.vector.is_solenoidal(field)[source]

        Checks if a field is solenoidal.

        Parameters:
        @@ -1043,7 +1043,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.scalar_potential(field, coord_sys)[source]
        +sympy.vector.scalar_potential(field, coord_sys)[source]

        Returns the scalar potential function of a field in a given coordinate system (without the added integration constant).

        @@ -1084,7 +1084,7 @@

        Essential Functions in sympy.vector (docstrings)point2,

        -)[source] +)[source]

        Returns the scalar potential difference between two points in a certain coordinate system, wrt a given field.

        If a scalar field is provided, its values at the two points are @@ -1130,7 +1130,7 @@

        Essential Functions in sympy.vector (docstrings)
        -sympy.vector.integrals.vector_integrate(field, *region)[source]
        +sympy.vector.integrals.vector_integrate(field, *region)[source]

        Compute the integral of a vector/scalar field over a a region or a set of parameters.

        Examples

    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