From 4f09d3d09507a06d931665107367a7414a0ca1e2 Mon Sep 17 00:00:00 2001 From: oscarbenjamin Date: Thu, 17 Oct 2024 14:15:14 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20sympy/sy?= =?UTF-8?q?mpy@b2c63192c46ad85a9253213eef78343a9436577b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../matrices-10.pdf | Bin 287793 -> 287793 bytes .../beam-2.pdf | Bin 10738 -> 10738 bytes .../beam-23.pdf | Bin 13812 -> 13812 bytes .../plotting-2.pdf | Bin 10420 -> 10420 bytes .../plotting-32_01.pdf | Bin 9491 -> 9491 bytes .../control_plots-4.pdf | Bin 16070 -> 16070 bytes .../beam_problems-13_00.pdf | Bin 11391 -> 11391 bytes .../beam-1.pdf | Bin 407296 -> 407297 bytes .../beam-5.pdf | Bin 14151 -> 14151 bytes .../beam-21.pdf | Bin 13017 -> 13017 bytes .../plotting-4.pdf | Bin 8949 -> 8949 bytes .../plotting-17.pdf | Bin 539955 -> 539955 bytes .../plotting-6.pdf | Bin 9491 -> 9491 bytes .../control_plots-5.pdf | Bin 16229 -> 16229 bytes .../matrices-24.pdf | Bin 271973 -> 271973 bytes .../matrices-25.pdf | Bin 287793 -> 287793 bytes .../generate_plots_q3_3.pdf | Bin 15852 -> 15852 bytes .../plotting-16.pdf | Bin 529288 -> 529288 bytes .../plotting-26.hires.png | Bin 30746 -> 30771 bytes .../beam_problems-14.pdf | Bin 16999 -> 16999 bytes .../beam-8.pdf | Bin 10148 -> 10148 bytes .../generate_plots_q3_5_2.pdf | Bin 16617 -> 16617 bytes .../matrices-22.pdf | Bin 245620 -> 245620 bytes .../matrices-4.pdf | Bin 271973 -> 271973 bytes .../plotting-32_00.pdf | Bin 9295 -> 9295 bytes .../beam_problems-18.pdf | Bin 10501 -> 10501 bytes .../plotting-26.pdf | Bin 129815 -> 129358 bytes .../plotting-1.pdf | Bin 10388 -> 10388 bytes .../plotting-29.hires.png | Bin 19500 -> 19487 bytes .../control_plots-2.pdf | Bin 19512 -> 19512 bytes .../control_plots-1.pdf | Bin 15532 -> 15532 bytes .../matrices-8.pdf | Bin 288225 -> 288225 bytes .../plotting-19.pdf | Bin 9515 -> 9515 bytes .../matrices-17.pdf | Bin 245620 -> 245620 bytes .../matrices-18.pdf | Bin 288225 -> 288225 bytes .../plotting-33.pdf | Bin 11049 -> 11049 bytes .../beam-20.pdf | Bin 16340 -> 16340 bytes .../generate_plots_q3_4.pdf | Bin 16190 -> 16190 bytes .../plotting-25.hires.png | Bin 32736 -> 32720 bytes .../biomechanics-11.pdf | Bin 11956 -> 11956 bytes .../biomechanical-model-example-35.pdf | Bin 21668 -> 21668 bytes .../beam_problems-13_01.pdf | Bin 11920 -> 11920 bytes .../plotting-7.pdf | Bin 10318 -> 10318 bytes .../plotting-20.pdf | Bin 9752 -> 9752 bytes .../plotting-28.pdf | Bin 12886 -> 12886 bytes .../plotting-15.pdf | Bin 269841 -> 269841 bytes .../matrices-13.pdf | Bin 288225 -> 288225 bytes .../plotting-27.pdf | Bin 14716 -> 14716 bytes .../plotting-30.png | Bin 8781 -> 8701 bytes .../biomechanics-12.pdf | Bin 13177 -> 13177 bytes .../matrices-2.pdf | Bin 245620 -> 245620 bytes .../plotting-25.png | Bin 10130 -> 10119 bytes .../control_plots-6.png | Bin 22663 -> 22791 bytes .../plotting-11.pdf | Bin 8674 -> 8674 bytes .../matrices-6.pdf | Bin 287793 -> 287793 bytes .../matrices-19.pdf | Bin 271973 -> 271973 bytes .../control_plots-7.pdf | Bin 15764 -> 15764 bytes .../plotting-26.png | Bin 9348 -> 9345 bytes .../matrices-21.pdf | Bin 287793 -> 287793 bytes .../plotting-12.pdf | Bin 7938 -> 7938 bytes .../matrices-12.pdf | Bin 245620 -> 245620 bytes .../beam-19.pdf | Bin 12951 -> 12951 bytes .../beam_problems-11_00.pdf | Bin 9613 -> 9613 bytes .../matrices-15.pdf | Bin 287793 -> 287793 bytes .../plotting-29.pdf | Bin 18371 -> 18500 bytes .../plotting-13.pdf | Bin 7942 -> 7942 bytes .../beam_problems-16.pdf | Bin 9416 -> 9416 bytes .../biomechanics-14.pdf | Bin 10590 -> 10590 bytes .../plotting-24.png | Bin 8379 -> 8373 bytes .../solve-ode-1.pdf | Bin 12674 -> 12674 bytes .../beam-4.pdf | Bin 9978 -> 9978 bytes .../plotting-10.pdf | Bin 10927 -> 10927 bytes .../biomechanics-34.pdf | Bin 21705 -> 21705 bytes .../plotting-35.pdf | Bin 268827 -> 268827 bytes .../control_plots-6.pdf | Bin 16399 -> 16455 bytes .../matrices-16.pdf | Bin 287793 -> 287793 bytes .../generate_plots_q3_5_1.pdf | Bin 16617 -> 16617 bytes .../plotting-30.pdf | Bin 25877 -> 26085 bytes .../beam-3.pdf | Bin 12556 -> 12556 bytes .../matrices-20.pdf | Bin 287793 -> 287793 bytes .../matrices-11.pdf | Bin 287793 -> 287793 bytes .../plotting-32_02.pdf | Bin 8842 -> 8842 bytes .../plotting-34.pdf | Bin 266941 -> 266941 bytes .../beam-18.pdf | Bin 12677 -> 12677 bytes .../plotting-9.pdf | Bin 8486 -> 8486 bytes .../beam_problems-11_01.pdf | Bin 9823 -> 9823 bytes .../biomechanical-model-example-38.pdf | Bin 25373 -> 25373 bytes .../control_plots-3.pdf | Bin 14482 -> 14482 bytes .../matrices-9.pdf | Bin 271973 -> 271973 bytes .../generate_plots_q5.pdf | Bin 16469 -> 16469 bytes .../plotting-22.pdf | Bin 217183 -> 217183 bytes .../plotting-29.png | Bin 6897 -> 6913 bytes .../beam-22.pdf | Bin 15304 -> 15304 bytes .../plotting-30.hires.png | Bin 25722 -> 25709 bytes .../matrices-14.pdf | Bin 271973 -> 271973 bytes .../beam-7.pdf | Bin 18085 -> 18085 bytes .../matrices-7.pdf | Bin 245620 -> 245620 bytes .../beam-6.pdf | Bin 9452 -> 9452 bytes .../plotting-32_03.pdf | Bin 269841 -> 269841 bytes .../matrices-1.pdf | Bin 287793 -> 287793 bytes .../plotting-24.hires.png | Bin 26961 -> 26939 bytes .../plotting-5.pdf | Bin 9295 -> 9295 bytes .../matrices-3.pdf | Bin 288225 -> 288225 bytes .../plotting-25.pdf | Bin 39716 -> 39758 bytes .../matrices-5.pdf | Bin 287793 -> 287793 bytes .../beam-9.pdf | Bin 11821 -> 11821 bytes .../matrices-23.pdf | Bin 288225 -> 288225 bytes .../fourier-1.pdf | Bin 15168 -> 15168 bytes .../fourier-2.pdf | Bin 23873 -> 23873 bytes .../beam-10.pdf | Bin 11835 -> 11835 bytes .../plotting-24.pdf | Bin 31822 -> 32020 bytes .../biomechanics-13.pdf | Bin 12383 -> 12383 bytes .../truss-1.pdf | Bin 3366 -> 3366 bytes .../control_plots-6.hires.png | Bin 70447 -> 70999 bytes .../plotting-31_01.pdf | Bin 20487 -> 20495 bytes .../plotting-31_00.pdf | Bin 20579 -> 20279 bytes dev/_images/control_plots-6.png | Bin 22663 -> 22791 bytes dev/_images/plotting-24.png | Bin 8379 -> 8373 bytes dev/_images/plotting-25.png | Bin 10130 -> 10119 bytes dev/_images/plotting-26.png | Bin 9348 -> 9345 bytes dev/_images/plotting-29.png | Bin 6897 -> 6913 bytes dev/_images/plotting-30.png | Bin 8781 -> 8701 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 | 202 +-- 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 | 81 +- dev/modules/plotting.html | 72 +- dev/modules/polys/agca.html | 180 +-- dev/modules/polys/domainmatrix.html | 492 +++---- 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 | 36 +- 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 | 72 +- dev/modules/vector/api/orienterclasses.html | 22 +- dev/modules/vector/api/vectorfunctions.html | 20 +- dev/searchindex.js | 2 +- 293 files changed, 5118 insertions(+), 5117 deletions(-) diff --git a/dev/_downloads/0130acc9674ca6615e762dac32f6f525/matrices-10.pdf b/dev/_downloads/0130acc9674ca6615e762dac32f6f525/matrices-10.pdf index e8d26caa1916e10e58e06e79062af4771cd304d3..8e52eaeff62b5016eea97cf1bebf646324735496 100644 GIT binary patch delta 27 icmdmZLU7{=!G;#b7N!>FEi595%oZk=+r<-Eq?iGYZwO2P delta 27 icmdmZLU7{=!G;#b7N!>FEi595%$CNc+r<-Eq?iGYR0v1_ diff --git a/dev/_downloads/0249fb66c2fcb06b78bd6a84135be88a/beam-2.pdf b/dev/_downloads/0249fb66c2fcb06b78bd6a84135be88a/beam-2.pdf index 5e0af3bbfb880e786c46107a172c6aeb54b1eeee..c7593f9c2668f1676fd2d15c28394466782a3b1e 100644 GIT binary patch delta 18 Zcmewq{3&=ts~W4Zsim>S<}S4iW&lh&2E_mX delta 18 Zcmewq{3&=ts~W3`fq{|H<}S4iW&lg12C)DD diff --git a/dev/_downloads/02f5470280a542a7c80635a082cb7e09/beam-23.pdf b/dev/_downloads/02f5470280a542a7c80635a082cb7e09/beam-23.pdf index c99c59965736195375c581956ac7ffaa4f574571..b60200e1e360a0e2bf998402d593e7933214ca40 100644 GIT binary patch delta 18 acmey8{Uv+DFGE&iQ%h5$&HoL*G6Miu>n4m9cBPCR0U-K diff --git a/dev/_downloads/0616d85a2c2e5a070fd791bdcdb1e35e/plotting-32_01.pdf b/dev/_downloads/0616d85a2c2e5a070fd791bdcdb1e35e/plotting-32_01.pdf index e1beba3a2af7ddb718260965092114e20732d5d3..45d520428e9b0059625466c631d01496971056b2 100644 GIT binary patch delta 16 XcmbR2HQ8%}f)cZVsnKR-r4LL1F5?9; delta 16 XcmbR2HQ8%}f)cZ#vEgQAr4LL1F4qMw diff --git a/dev/_downloads/0680199b4e61bc189fceb4418aa72812/control_plots-4.pdf b/dev/_downloads/0680199b4e61bc189fceb4418aa72812/control_plots-4.pdf index fd4d74f9aabdb741b96e1b42eee05545cf73d426..0bf12e9d1bcb4eabd258fe7346f46bf8f95d1e50 100644 GIT binary patch delta 15 WcmX?Bd#rYYz7>;!$!0^VsVo3CkOjQ} delta 15 WcmX?Bd#rYYz7>;+*=9qlsVo3CxCO%i diff --git a/dev/_downloads/077b659bec1d5c2fd531dbd0f7e15f0f/beam_problems-13_00.pdf b/dev/_downloads/077b659bec1d5c2fd531dbd0f7e15f0f/beam_problems-13_00.pdf index 6fb131d1b606b77c19b2ca3575387e065e838201..e37c104668bcb11634d490c1e6de0b670920a9e2 100644 GIT binary patch delta 18 Zcmew#@jqgNswS(ksimpeW-ZN7W&lV%1{?qY delta 18 Zcmew#@jqgNswS(6fq}8*W-ZN7W&lUl1`q%M diff --git a/dev/_downloads/0a5b397c3adc07987864b0441654dc1c/beam-1.pdf b/dev/_downloads/0a5b397c3adc07987864b0441654dc1c/beam-1.pdf index e68213b12da734d7ce99644dadf2b276fc1ecb4d..33656cdf1576fc1fc48aa2ed48455ed0b5337b83 100644 GIT binary patch delta 506 zcmZp8C(-y$qM?Pcg{g(Pg{6gc3tP8A{fig;KK9vf?$)sU{7^IZ#o^C;Tx1_lKdJrZ z@V2|6*X|j<=en%8|IGPcm)^y{S-1XM-LyYl%e&RVUTwX;{Z-cc@XtoK<5l)J}YRoteZ17mH^-krZ+e^2z|7w^(+Kfdp) zvq`(s_3EzO`UC6#1wDD*9~bre^4Hh>afZ)dmz{5aD6jgoHZD2+@O-}eQqu34FQ1p+ z>+w(HTd9Y(&%Wuud!Am`^uKxMdgz{*`0M{R$(w&Knp6G1a~8)BiBP;04KtLf+feS>N7?@g`SzwA;SfY!WnHd{mikTT> zidmSTih=AggW5aY){IS&(PDbM8JoH$hFi=GOfc;=H#42S-i*zY!;DK+)z#mP3jku5 B(#HS* delta 505 zcmZpCC(!^zEsQNpEzB(}Ev#GEx(({TxTMslHQZlYI3;lNj6K%B*wU`d`F__&`FVEwB2t_Q}T0s^0DSqAlOoJq9W`RwMG;YKbYs{nNF_ zKE0l@Jm=kOt+;jTv+Hm6&#tySxA(t`Z_O3I(vzl5wcD1Le-1n%;0hM|VFjT&{oKy>wxk9edj=`Tyd&cGD*svMDi|Zr@_awvUJHL(-X|t)HN~OVrF21X|K7N$@C3oY@QsZT&k+B{%%|V`|Zhr diff --git a/dev/_downloads/0c7c1262b6b611b1944eed12f33413fe/beam-5.pdf b/dev/_downloads/0c7c1262b6b611b1944eed12f33413fe/beam-5.pdf index eb654d71fe4095baec883871fe248c5bc1ceda73..ca1b7631ac5e1ad02f6cdd562e224ee39908bf53 100644 GIT binary patch delta 18 ZcmX?}cRX*yUn5pyQ%e(r%}mCwEC5a=2893s delta 18 ZcmX?}cRX*yUn5o%0|O(I%}mCwEC5Z!26_Mh diff --git a/dev/_downloads/0eb265c8614c7bd3f16f6034d076f6d3/beam-21.pdf b/dev/_downloads/0eb265c8614c7bd3f16f6034d076f6d3/beam-21.pdf index 4e4c871d24513c38bf850efb4b31357ad8e58deb..e10c39204bec4a0bc5e84d96d190f949d5b8a57e 100644 GIT binary patch delta 18 ZcmcbadNXyyc0E>OQ%h5W&3p7@SpZHu2HOAt delta 18 ZcmcbadNXyyc0E=T0|R4|&3p7@SpZGi2G9Ti diff --git a/dev/_downloads/0efc8f797e345bcc903c8f4dab4a5322/plotting-4.pdf b/dev/_downloads/0efc8f797e345bcc903c8f4dab4a5322/plotting-4.pdf index 6efe929395dd33103af73edabb683b2113ab811d..6309aeae3f8385df02682a538ece2aa00b30ed74 100644 GIT binary patch delta 15 WcmezB`qg!VxB`=*`DRIlJ4^sHAq9{C delta 15 WcmezB`qg!VxB`=@F7M2#)7Pc1lEgWK2Oa{i=C9F84nE~W03UdGe delta 34 pcmdn|OJVabg@zW!7N!>F7M2#)7Pc1lEgWK2OooQrC9F84nE~V_3UUAd diff --git a/dev/_downloads/1362531cda049d5b7f4db4abe11d4178/plotting-6.pdf b/dev/_downloads/1362531cda049d5b7f4db4abe11d4178/plotting-6.pdf index e03fc59b90c75eda54791479786b2a6dc814c373..e3d0d006bc79a185a0bed34978b19d94c561f501 100644 GIT binary patch delta 16 XcmbR2HQ8%}f)cZVp~Yrpr4LL1F6#v| delta 16 XcmbR2HQ8%}f)cZ#fx%{Fr4LL1F1!UR diff --git a/dev/_downloads/14bd882358332276f28c2e3ace8343d5/control_plots-5.pdf b/dev/_downloads/14bd882358332276f28c2e3ace8343d5/control_plots-5.pdf index c3fc8686dbfdc8bdd4373b23db539dd85d6b89fd..624075532fcaef02f081310e64b5d92dae3aee42 100644 GIT binary patch delta 15 XcmaD__q1-qGAkwnlg%rv_Obu~K;Q=x delta 15 XcmaD__q1-qGAkw%v&}24_Obu~K?nyK diff --git a/dev/_downloads/16c046e4f150f3aca5fb6bd438b952ce/matrices-24.pdf b/dev/_downloads/16c046e4f150f3aca5fb6bd438b952ce/matrices-24.pdf index 8a5308ba2e6bcd7a076365d7da9d05a2f63da510..d1db7332ec4c1908b14e6f35a429bd42f99385b2 100644 GIT binary patch delta 29 kcmaEQM&Rigfrb{w7N!>FEi7`%tj4C6Mi$$Zm06sa0jMzuFEi7`%tR@BqhQ`~Km06sa0jG`#(EtDd diff --git a/dev/_downloads/16f8dba9abaa041f16c4636d6e41a0ac/matrices-25.pdf b/dev/_downloads/16f8dba9abaa041f16c4636d6e41a0ac/matrices-25.pdf index 07d203881986ea7aa2d34d73a836864542d3fc35..33f962a4c5ad25657b4693db522a17c90c838c29 100644 GIT binary patch delta 29 kcmdmZLU7{=!G;#b7N!>FEi6Kbtj4C6#)jL)6IrB~0iPuZtN;K2 delta 29 kcmdmZLU7{=!G;#b7N!>FEi6KbtR@BqhNj!a6IrB~0iL-Cp#T5? diff --git a/dev/_downloads/1a31ae7f3ddd6165062befbddb76e6ca/generate_plots_q3_3.pdf b/dev/_downloads/1a31ae7f3ddd6165062befbddb76e6ca/generate_plots_q3_3.pdf index b6ba51410c306d3c8ba6e5dfdb72927a64b6a77c..b2bde3f607f6a2ddc26992b6d6c4aae8143d8a30 100644 GIT binary patch delta 16 XcmaD;{ib?@ge9|~iRor(%Zn@kKQ{(R delta 16 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 ClwMZ= diff --git a/dev/_downloads/2082eb4d6b0c42668444836c10a5a149/beam_problems-14.pdf b/dev/_downloads/2082eb4d6b0c42668444836c10a5a149/beam_problems-14.pdf index 7a4a0231d0af5a9733e8db74672e8254dd8bdd52..46caf03b416eacd6c29e783a3468aeec382596b6 100644 GIT binary patch delta 20 ccmaFf!uY&}al=wuR%263Q;W^3Z1=JN09kqm*#H0l delta 20 ccmaFf!uY&}al=wuRucmQ6T{7`Z1=JN09f7!!~g&Q diff --git a/dev/_downloads/2454d35ad3fc284cb67b6c619b4246c1/beam-8.pdf b/dev/_downloads/2454d35ad3fc284cb67b6c619b4246c1/beam-8.pdf index 5321dc98d4d311a23fe52ab3f38bf1aa4aa02ce2..dc14522f56ee41df91d9a3dc2693686c29ffcc9f 100644 GIT binary patch delta 18 ZcmZ4Dzr=roxeBYXsileWW*e0ZW&k_;1$_Vj delta 18 ZcmZ4Dzr=roxeBX^fq{|PW*e0ZW&k^s1#tiX diff --git a/dev/_downloads/25cb4bfd257025a59c1c236b698c1d17/generate_plots_q3_5_2.pdf b/dev/_downloads/25cb4bfd257025a59c1c236b698c1d17/generate_plots_q3_5_2.pdf index b8eb9646d2149b9a2fe43d3d1e8025b1ea4c13e8..908f3e51e3ce36ef8a1d34d821c9785a429f9c44 100644 GIT binary patch delta 18 acmaFa$oR66al>0{W3%?Ky} delta 18 acmaFa$oR66al>0{W+Nlx%^$3PvH$>3wFo2t diff --git a/dev/_downloads/2608cc95ac952e335ca0ce8cea458c1b/matrices-22.pdf b/dev/_downloads/2608cc95ac952e335ca0ce8cea458c1b/matrices-22.pdf index 88b981a49211bc785fcfba98aabc0e4d321b3630..bd85bfa33e539cbae1c7686f927d7efed3f43c2b 100644 GIT binary patch delta 27 jcmezJkMGMrzJ?aY7N#xCx_elSO)ZU#wj1qXc47tqtJMl4 delta 27 jcmezJkMGMrzJ?aY7N#xCx_ekn3=9m+w;SzYc47tqt8fY# diff --git a/dev/_downloads/2667a5fcc739d282a7512f6b7b39071a/matrices-4.pdf b/dev/_downloads/2667a5fcc739d282a7512f6b7b39071a/matrices-4.pdf index 1bf253c09b630e6bb07e9564f134a46b19be9397..5d7d777b997b2dce6d875386d6e6d53219c06150 100644 GIT binary patch delta 27 icmaEQM&Rigfrb{w7N!>FEi4Mk%ofH*+m)4BoR|TYp$K*W delta 27 icmaEQM&Rigfrb{w7N!>FEi4Mk%$A0h+m)4BoR|TY%Lse` diff --git a/dev/_downloads/26aeb23613c82467dc9ad9bdc328ab32/plotting-32_00.pdf b/dev/_downloads/26aeb23613c82467dc9ad9bdc328ab32/plotting-32_00.pdf index 5d41d4561efef845c00083e7e39c546699459c70..665b50dd48f0d01f27d18283447bc2e46decfb47 100644 GIT binary patch delta 15 WcmX@_ao%G?fg+QE>ElectDs=g`GdXB1VGj&C{i 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

)kf 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

9pI96akc!b$%$s-6{Ij;-evh9khSA>W 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 q+@Rq>(-VhXZQVcwhxQK;OiwRs4= literal 129815 zcmZU*4LsBP`#;|8aZ06ANujCJQ6Z$<)^JMYl!J1go2@Jn!U)4yDme-3mO@)4gjgye zY*eg}B{y?_H!S3KF*D=$dhh+7@8|#cKhAkPjvceT-mmMrp4anwzOL(~eCp_NbuA6; z)ygm1w`ad!t+jpMc3)S|)oAo~O`8xux9yrH=PsY~_I2N`dFq_ITfp}H;0;#Wjf_^i z`J9K|sQ*8IaNO7D^7aGbH)uLox_Y|dE^pU^Umhb|HnqNd?y}o2*H=P&xWZ`VbB>+g%RcDuaY34HC*<6tRngv;ACPh0{^ID-7w1o`iY?Jobb z9IgNV13>GBR`2fyRtGO%)5W1?@?*=V9;IhBlxl5}FDY2zra#s{5oYx~^@r>@jgcn}?_PI#=o75&NW!Wm} zQ?lDd^dEnWqTYSjCmSK zG`uj!W{4~~q)FrB#iWHqUy{)Pi6|KE+4OvpJxUVM_>4;Z^B3oYjk5xN;>d!4`Hz(c zsgZo#h_W!-wZNf5|4y^cP#3t21umCN5>-df$vMk#NL%W$8d}GVPrfSr)aivzl|ogG zw%x@hEgWR;9Z_-)S247crIn2vdzyGYNBW^Nr$39BKf8Yz)dZ2Xl^-{Vqx zmbIza7FS>R6mKx^v(1E-IZ>!aZz4v^S4-{IdzbxlbMrqZt2<0RB5Je>eCjI7(tanu9&Fe!yt32AB-K012Bqj$QSl@BOxlHOj*e6V zjaPZ&n{Q3)UocD8)q7=ns-56E)$wt^LHe)aOG>6q>f^n3#EXJ>?Yjzz#$1*LsaSU5 z`*kam80h)i_`TF^+V^*kw|>Zcv2@hSBlj+*J5Y<6b$mzpQaeQ*`gP|6O@!YqMoflO z0#VD5ebU;*HWbS0p%R%f?XN^T^z$t>8r<2xP3@sioXVZpuEhN#@O8;wShfkrd&ma0 z#j>JtCOIT+;F=?bdQoGaLob$vukqfJf{SN3ah+2%(Z6D7I$clC9(Jz0Vi=}*Tg^vX zJ>PlfJL44@(}9X?zD57b5HtxAhs=cDreHE%)|JIa%|!s*ko#MIMthq1$wG zGtFk8fzCu7>D>Xgpz@smf9{5X-YD4=i( z4l-t=iehes<{Esq-pWk}D;(T4UU?+*cA!t5&hhsy}R-%0DSC^f9}>A zk1w&_w*14YtG!C*bJbdL4`!S@>A!{*$%Dad=dwC@2h;Q&zc(ip@;BYWo%s~@bU$~R zL#t}s6T3M}RGgZAc}FBl1@fGj4d&7NZ14@AZkrHklbHjvKhHg~782(h3GK3al=aRU zW1%Mtg9EX*9h)ZXS3BSARa%v3-l6Sgsr)Tb#d+%viH>|(w)ERRu($GW$9CxAcKx;QzSx*WO1Y6Zq@Prbtx?tPaSD5|B` zs@v?@wC_gDtsTKW|K=7`Yl_0F>0R4Gb;;84sLqt{1MHVet9UQ}iSadL`UXZ!Ne9Sc z$qM8Hp;v^xZ2|wSMq=hgK58z;7k%Fg?b#^B=&f8{95sAO1jT2{T;Kg;;@w-0Zp14# zw$NtMQ3oru0&5MYH<{w=y0R^XXqnh;Hx3)ZA28IsVlL*Id(c!0?H#A_JbvYRjg!(P z?@sM;Y{=Jtr8ZwTga5D2iIj83@GbuH{OZSN>kk&?m70yTj?OSJRz|+pP7$*W?1IX^ zav$z~8l$PRDJDT?x=7%7CbzKex%NPdbRy;Cp#7env8MdlAEGE``6vC082?n2mi`nh zQQM+_wQ^046K@prPoN@^!hEVmZ}3y~ypnO(^W;l==LZ4mcL4Ayxq7mVev>PNj3OVm zecSFR_YS(J?$4z3e^qb;+ zjjD>M(3|>}go7Z4SYb<|9n55;&nxNb-K80(+(P9GmV=Gt9MPAl3zt`D?R6>U?ho*! z;&OU0w!{}bC5fc+a?X6^Du+Y9uTUj3o4P)t%iG_F@qew(x-(Z-6O&P!)Eo8N>|f)p zN1i@AUa!2yR`K{t!4_gjPlDACf&5tjHd1WPc>@&~^v0&x``4)F%i32wy#>fjcQa4g|f?x>8~3W07LxD(}6Q z*UW@}@^}|`WLfgR73`$3Q>UK|uKz6C6)P7ap%vYWHJ-(!AT5-$a ztTGP+>JtMc(wsJgnGvznG3U5m1(|+%nemAXO^PT+LB>0aHVwAX=zXhmUnsnbx5*C{ z40Jy@SFoqP=_en2AXRCN*O|Y7$rLIp_?Fn3ck;RYXNrwb%{o$}>fN{YS5*7ftwy+OaROA(RLe`jjH0QP8OQ*|weF zj}rDw_C8Gv3QpXYAFmVdqEDv7pErL0G3j0K6DR`Kt}|CX;NcMA$8m_0!cN3R`^TBC zQK(#9^44#UL&L*J7ktCF3)kO$E(|>FW$e9QmZXilW$=!Y^Em&y)-s)9;mJP&JV~QQ z_2J4H?-N+eXL8Vfa1M7?4%$8LQ>9P)X@p+MaJKdklZmk&qJyX&VmjQ1?avh>*_&4% zlkUc!)ESU#lf}xJn0Uu*lHYP7lDmAtImvLvZn8pBu_fyPHZnK?r!4i8r|9aAa|4pR7QF|==GA} zK9eFCVvi)W&A9Hf z(3%n}-eGmkc2%`_6bAE_XfFE9a<>tkSKNdR)0ZP4Rj;h&AdTFZSBWKJJUy%v^lvm zjwYD{)1L&}t}B%SjA_G8YcK;+&s0+RZQkhsw1qh;*W`?o@^!?kEvs&>q*GtL19&B- znYi%(#@ga?uz1c1jRKzToTU&zV%HJ;SR3^c0^(&XGxLzwC7Ze$7CBVh?)UgwY-eB- zs>6`>kd#j&X>chXA&~!>8IR+)P!!ZPzrtU@b=tpNJ@_kk3eAfgc<^YqXS*LpMeG<2 zg@zFo3^eZBq(J|(J8@lkQMiKguP-xdu-h;T>hn zn&b95B|Dz3ecn>`V(kW>?Er`>TWvVQQ8x$M^`sUetjq2P2%Cn4T65)I+uXx0ePyF+ zkI9Vl>~r}i(x+gOvV^8m_`Ml;?(+>;_m9{3TG-hR>;QH|*rm_fJ2Bmd|5Frt*JMId zW<0wVvLG>=5`DNkKk7)`)k2Uw1CCC*X}$F@zjI`{*{QQFjlp-??e}8T_q;d`#XNUo zk5?}`qM~3U&%wf>JK`rX z+Qu+&bGH5FpD%mO)@H=~X`b;nSYuh1Y-NjUX~zBlALDgf=M0Z^UorLnHNJGiHp@rL z|LTw2xkR$l=W=_8@f`ednQ{G~XCeMuvJk+ITlHz$z~$hcKNN?ytZa|bRKI_5@6hin zt-;n+VHHG1RF|qz;>5+!t_9=%272rQQ+RxV$8-GB&$AG$glib8o_eX~S0@JICg)C! zb@k-H5GNJlH5!gBv(N4Qu~m4E)TuXdkp$|BuoG$K35nwOvp$NtLKXs^^ry|dL!sPX zT8ErP%ToFLOrFEE^o)aHSlZNS9)y-sA(kLL(fwsjEhneup4We|>=&-xZEZ1aY2QL_g>}u#7NF;Xry(p|>3Z+{8mFB1RHj{f4}>zPv_ zJa1``Ghg)dX1+-$JdHG31t`;t7j>6c{fxQgT0^wr{jI*+!EBQr3S;&5thwMbGv2u7 z#$lv7>$_idJ_2@{xmWY>5C47r>W}!sZ(tha#j(d8TO4AXIBE`;~eL#L4}!Drfo)Grv2v>6Yl?0Q(*NG6t11sKfd&R0|vdx`87y$y`*$`(-wf!=1^gr9~Xh?XBGCY)D31pz8H^(}mS3tr^{p$+3VneyqNgK+9AT zG&j`VINY5UWm3M3@U!$*szI&*Aph~y8*6?+yPLiF=9%l=_QV6nJWg(vnZyJ<+`IP+ z3?$C9M0=;wvdU#n!~54|h)OR5mUnQSg8zUgaG@;9!CQ@L(!Wkl? zb-6c+<+Pa#6p$`Z-MEINWXLJSIqqxG{aw{&@Slblc7^N%bZ(@_`PY&$gQk6FMq?B# zFRB#BkI0lWS~K!U_`GkER^oi#-Pt%STdiw9VQ#2hn{Lq`0yt?0T;nK(++t@xX3S>8 zNd{H9$}U5YZa|nF&KM2FB$<F0GST`~F(mW|EgIEcT+=R`>WKy} zo|e!&8d@7HOQ8-p`;Gr%@Y>erl@yXor-XsNHJRb#xU?r{o(Z7vy;i~;J`jY3y&Kid zHTybu{+&whP>AJ6oX*9@7v<;eh&e#II(_Z8(26*zU2Qu05C=}Xy9=iY)f*n=vVVRW zKBV20JM(@^l4bfoPb2ThIRwJYYvJ5TqIl6Sa{d5DL^XR-u!q0$hd!pXQhj|(bH6-H zv{m&%&-quIjOR;Xx?ezul4Vh^32N`Hdh+g^!$#|7XB_BM#3_%F-Pu-73 zN-z4#3`h0on9A*HTM8L;CAmlam(>|iIlsN_ANy_YA&m~DIlMd)(P`Jx+KfZ@!%FqKEqNHQUud|LEH^(iQYDYg!v zLYPs@oegU|0hFC=x$wnG_!#zK_6+kLi+oJTOWDEYy~&>neRmm12~*r*9Zl3ppFB;( zTvT@XE{U~rV%3S~B`J(@^4CkbW(Q}DmdA3dss$?fl+jzaL6JWu2(A1h>x|#8Q&SCR zUSiHr0KuwPWXK8{Rbqkc;DP@9W9cY!^&h(=Ttdd6o!loc`B?oMBSp`oC4}&ctkT8$ zR0G0yEQ`C+T`c}NyOrJ#hEr7?Q{qg~6gJw$YpYr);I<$iA(fIB5AYiAn0IeO;jb1PzIkIm`7E?51K?OG$h_Vrfn?(n_bVUM~7 znD{Th*GFWXc!IYUM{Xa^($Qlhqg#v+Ik5m1p|a$(+RhnSdxbbJw~V+OEx#|Z)M&@L z9FQo5G=5^T_scR5mArQkF=#H4aqb+j&dnZryGPdPcEXF$(Y-dby?~>$ zOniM(w;kv|Lynphq@)9t&&0`ON##?3AK$iHf;b5>#WsV&7Ee~x+{;F z{}$lc#d3c&`amlxArw0aaSCovxOZ>(NLQ%1@G)(7TphR}Yet-0Mwt^PCtd<&)<1T> zBtiSP^0<3`!Tbb+g0b?9NyEm?Fs|`&AL~7Yxnh4>K1bYn{A_6%&yyk>Z|D5x&#cp7 zcBg>eh#Ry|y#eILG$9Hle_m0iOzXPvOOSOOQge2m%qXq8nkw~fr#(~>P>0T}U?W?N zcJHEYR0I($7N^CcDx!EqbSuA|R8*EYeOY$(IbCB|Q@&00wSD|D7STiazae4XO1dV_ zwa#IOj0XipW>ZjfIm`y=tQx&)i%_Im-^spR=iqX&cl2sW>e1iq@|{|ApQ5c$+5@W%P=F-0hPTEXO+%uY*ii6mE<)*ODmu zb0wamke?!Xt{iXY{EMG;Z`Nx_iefE&(f=HhcL}QoBRXzQAQVyQ-ht>ZjW{^T_HllN zd{>XE+dqGTn-N19U@BSa>@H#C{E=xO8Ew%D6;_c!N^v^B16fhN5pDLzrpPjNs z!)%@Lr)4yp^K2SklsB9vzVkCa=I@?I=*EqZ2g8bsy5VAEJ#*;guo&?&R|!E$A&AB4 zZf>lUV3}dV5W+CZm$y@~gLK9tKo$cH+2}q&EN>%0b!zrt;bUKz%9aJ340$F;xb*bY z+wS%?orz=HTCdV{fZWZq{ZI)D9}TLjBPzJrqX$-!EAHo)#L0Wq7eR;=fxaO`*Z%PE z^z=b<51k7Qomg*ONJkyyG#G{IWnQp|yXKWaKQdB%aBRAmBPnO03sm?quc0EmpoS$b{d(dZ*NO#0QCEZC(j}o zV^XUij4Hvn3}?^1AjTkkT}r{l>b#a@#fe&TyPc77%DSY8x7>P=rhPh2o_M>~VLa`I z_37m$30qpvZ+tTIUQzzsORF<}*JY`})2eq5dc{a}x{jT*ibu*e{B#oUd@&qM*Gf#g zcDHR4vs%_iX1Ud%`u8By2~EqvqQ_k=ib9T~%Ub^Q9fN$|i$5K9F;5_t3fm(6@)dMs z5a@h_sW(7a8Dh!5B{wnwknVp7B%9Ds2OHG3~DIvPJdcJld7P!$8HG{ubZ z4O<-|6F0A0DSeiT3*K0aXld(REG~bh!BC5S&rY8C0(0YQB^AO_S6xu$lv$hs zABp1=I#Y1S0YO={;CRtZ#Nq-0=FJ&Nxn|hqr7HmnUv5~_E(yQrh}KOuhCk}F6YGs& zr$H!jZDt^d<@v^WVn2SuAROeGCQ#Oug|E)H^q1{w_{fP3RAn8Y#0*Pz=-L=R+$0@^ zKu>Am!D?GY!`z0Th`P5an#$XxwD_6J0z8d_(gg)RL$< z^^*pJDk0mVynt;VN+4p)=sc z8zBFqYDK{Nwu+xRtAAN_9avq>#w7a-lqJ4BQ=Z{j;s=S7A_UXFB4UlqWb5~-BijJ* zLyBJrL3k+Givm1UyyvD^9;jQzQVqdxBtpAQ{IqPsZD1$YF9VWY-=EO>36VR{k6H2- z5(j@{8Lmr$0rqyVrRm4Jxr!+>_$BITF22?}o{{$JRv(q>=8bB%E;(6p|I}Y6mr$AX z$c|;H&j*@`(M?RnfZ@&yCTZg*Kit{AwB0M|SGYxD;I~(%%BJcTsV5yt@;92be84(^oHdEgV>mN!I za)kGq?-B#OG6j|RZ|8SAHgo1o>8(fl1RAb>z*zq z>bTK}MU%9}6y$a=x1CSk zj|liwrNd8@u5E^?0gBmUEJ`RucpPt6nq-H!k0~cEW{q5}8e|{9VWE4nWbNHLo95#} z5m)2-5WqNeuIy?x$#vfb|0_FGop*Qn^eC}nNwg}x32NN% z?Vq2d#vz_4qx|b+;xl;lSD4MWGR)90uP(c%xx*6K-_Ok7==EupE8&m`7&NeG+5vBB zx3VmDwDlF&Gr3QAC9jtD6==$#+=aK@YfZS(L19*0m4Gk1|hbHC-bLdfijPL${fbU$QCjjNm?(4 z;kxDM#P%5}Q$*Y7pEH`4;MyE9^eRdJo7f(QI|KTq@sb6~Z@_jp!glJk4knf#6$cHs z$IaV4pnsziVrQ5Ch_2a)M)6JL;^R$DXb5^Un!u zt-gqCxfLH%pWspBXJ8w zrT;(=Yb*NV7W%`C10R@#gkJWJwBHcFVpVsFQ+kHRW*CYwuG7T&5`#Y{5w|Z$ z_`Vm}jFJa)MK?D~0yAuKs_5b>av3cLb|i99!#AmV?FMfOBER2{H!iNs5y z8;(dk`3m#4k#W;i390rsl51`A5QFx1ntI`4;M7vXwjGA$x~0y~EFT9MB#HT8S+uK_yoMSV}%f#uJ#vq#$RaxW^GP1qF zN>nA@KIA#)h}>h37uS1#wc#)WiR~@KCk2n-gZFDC?Bl)%oDer@#8=LXf?_4dGn&;; z3ySw5Ck)p^ecpeT95=kbzpLI3IlBs3n0p=#wSJ_;$akx=lXit7&SIE8Gxtmijy+1U zo}O+#*LN8V>6;tIYA+&X!%8+c8iG zmE&dv7#a+48ic)LDrlvON`#H9vE(=u5*ai8P;3Lu%b@Wm9lJ>kW#B_L+_i)u9sE4x z9BwqePP`_F8U-9`LGJ-4=|6B=i)M+1F@j*!#nYF-ye2ofNmYWPRNsF+?};B4@QP6SxeLh0Eu9bby67%p z6{xJ_m+8xB>YxWlib~xOA9cg3+dPVCnUf=&*N^?6@MXffW4WH(HR^eZJY&4_{@B*sgeZ3@4$|woTdB&nPnz+>X z>=j}s9V<(?*mLUDl4*k*C+t^ZPVU*De8uF4VQ2#Atptf<33-%wV8bwyc?$A)^Yg2R z#VjAyt-?Q!<+~vJ9ItGMH3tV>a6FOT)9p&3)o0D#QreySNV0k-T3`ZldSIlxbWrdf z=;v@9U$Cho;2?BNB|g09;GdukTpoOK)NlKUa{3r8mo`)N;gLrOLEdTlo73DoHSw9d zAGK2Dx36|z^#W0hcY5>02KqopqHk9rd077r=|ePam6{3Bq1Tr*B46ZN``C0rtVv}V_wUo4T2v!U_^h#LMEhNe zseHrzgI}Cl>_=3)WT8bH9FeTxd^hiiqgN7Af;euc;VRl1Cqt(6z_Xf zaF;fWj_@JRkG|H7fR5@PH(@L1l}Wjipq&BI3ZzD@|6>^%-p)oGf2N5#qAuA!@|*ZG zFU!oNqpz;?d$|MM=J*QnE@MWL!%oDzu8e8^mD=ghS+`g3LA;`YFBl)L@M3xtKP792x#p4H{o4@#7!u7S&s&C29Vg5SBUCN zgnf8=Wd2g8#ESd|$_QG*I}?YfIFoPEFacsWjM8)!B;wF!t8m@?CvX9^wDYm0#+yZm zV*W5Y1F8LP49@`8E)?R4GGjRQ-IHEjh$lsKrpg+?sc@NoVJr3Pp=MdE*Pcd?+Xa_N zM@Ag8*KJG<@!?9AaRoPANkW{^!vA}5t)$B`tOb#?x+f$2V-WqQ zj3sj=@iWM=Zekn>rK36#9N96!YTAZa<8xR}=D&+2qWMG%9WMIgxC0$=qL|>WTc^8o z`W?P36`o?|ZAFOp5*dwS#)H|t$@?LiK{9Jhr1ybXtcuWK2P8?_U^}s-DXNrn$ctQ z7k9ZBoj@nDG3isuJ085b-FYSP=c?fpDgsT)2Gb5uYb+GJm1DQ~jmQ@AB44yF>Z#<$ zKVM-Gl2c)KK|*oT3W?iRE0iJ;7qI;HevqZ%_%Zpywe5p)gneVzoc^U367{IlON)Y@dt@2dgQsCp_nH9Mn0|DM<_ z_2ej*4k7yYl|<*(H@kni;VrxiUlbkdB_JDPG$&qlUXQ8nP z4%B#6;$Si?`q>6kg)y9u5%(41q#=ZD#cxwyI4v97%RITRxwt#D`xMOf`tlpO+8c1P z*u;>z_IZv{_=)9-Z~!Rz$Fo`a2*hcjE4y>4UVvkZ%O!$;j&sHx@H+(M>W4oni#ga& z_IgYPO`;9V5f98y{rYdQ?8xi)V!KL0Dw|O-eq3`ry$ayu3*!P(Ic*&Dn`D`Fbosu2 zyJ)Dl!efcYB`{8QOHo?{L>#L0BDA-oCG)z|sr2wR?q!bt<_phD(}v$R?oy?{hGw3G zyaS^*N01;knb!ICy&mC>mfRap_Cj8nHP16qPLm{;ndY8DV~As2D-j5H99WD-7S4Ko zZxZMdQyXFxMPVcsFZtAfTlBu6a39d)F2;<{PSPyQCg=?}&;mJ%Aw7=Xn2SypgE zLX8AW33f0ztQvN6V`v}?N$@>!pqs#t?+2;z#EB+Ar`-5k6zN_4+)t1sec0!Ib>8OJoZ zuI~;Z`1$;7%FS*B0~Vwg6EkU|#18&llZ}^$^``?F9(-KJ{u4Ivu_nL2{p4#GM6~}$ z#U&$m(b1HcXFBv*XQ1ENinQAK*7Bv|WVaGeG-!9W@ccdr zJm0I%`6PztM(h!Fwsaco(BM455KHV?GoF7RV9y0K*oc#c`?u+>}i&a{Q07XC+KhYspA`-2dnBQn*Uqk+Y)63tO`Fq)nA{nQq1kLX2bS$1WL?@j^E}{ z(*ot=rjWU&`D!Y!`Bvge@RVIcN+kwei%Gnl``r~u;xgmwSy5jXQ zJ-AMSB_V242HTkujl#y27^DI47_N_LX?=Z2ZDE0nTRcO@5LI;YBs`Z~7Yz;-V46$% zxwlsOy_uNjGALug(~`*SwEB`G`9gw>7CJ+J@jJ$J3LM2XcnfX*{e?2 zAl_;?d+kv05a;~aa%c!~w!WEKIjjp&5b!ukk;R5iMBJ6o9#D6mb3uyXdW3IRY36l#bxzkh-?4E^26ZP(`8+%J`k`Ar6D-S1D)29FpU@PKvn($mlVolJ#lj06;dQB9AUZw> z>Ik}tZM0*y^1nx9v7Vs0K`)oY4X)|ppL*szap?}zcZ4ygOwRvP69{*6b_)XC+-_H{ zGm;B&dZ#?yBoYsWBcycGK=45_uqo-QfS6hZoqwqfksJ9b66Zw6O);c^gTQo+Z0v;X ziHowboigZKZ#cNJ(*YFQSLF0|o!DJkHY`u>a#RS`RN=ns^ZFY6V(8SRmPUYJW@|yQ zb&aVnv~d8_IJ|A1dzIR2Eqne-P@}6%&g2`;d<<#TxA=&NVZrL9SamlsMUX~SGhc@? zZcc%)fpg86m$zXqB4*6gC-Q?geuEXtvT*MSQH(B#N*KzNh6L#a(DH0;m54)QELni6 z&;TPC7Q1Dcq6*JYqnHLZ@z3Q5E}RJ`FAnOO9LCrG8!<<)PWC}Y-kVWMzj!>gaxwZMxZD_{Cs@$+Ro`;Cy9S@c07z6bu)?HcQWVgP37_@9r= z#NlTvQrBkxDJe~Y6FtX4d?R{b=?!IQz0+9&2mQ+yiRM>=H%3fzJ03VsLNr%R*yzc}Bk{fz z#R`ZllSHOUNEfJ!#OzWjd@caD0_WTV&UcQDgrsDaj@cH7)y|c1{f24$)GOG$7+N(X z>qU$OVC(X)9XK|U7P=5&`FkrMl~4Y~EyY;pu+@2Isr7E*OwCJidMgsmoF>!yXVL~X zTM><4dwm5%D$Ea}Z=<71gK-Ys=HXD8ti-x?IV1|qx!Jm8<@f2XvW2=>8`|58^KceV z*_x%jVd7T8x~Yetl@KOy#*g`{kjPSUE*+cOw}>Dsl_16jYmbU7nP<6>k)O>vI9H#i z*5_aQ^Yk+P3cPOf361eAIw#}Zac5U!#?!)Hv+CgIFG5p-XHT`{z}|U9D0tHHm(4`r z9f;l-Ph&dzVZu)`+BCdDVm!9CA87bOgfO!aV&*i&YO{xY%O4Eq9Ry7PaJkCzJpf5T zFvT@w-cBG~0*$(&GDG|C(k0NOJRnDp^NZ={r9&eN5^xu#B03A?Hm0pE$(@+V(J8DS zZmkmhoCLjdT~D7)cDojj()7U52pBbewWZyePDyPkAChE0 zit9^u&glQ~!;@=O#HD7|{7`sW7R7+NLrS< z)AYG$Bv+y41ip%i{hJX664!rl%K>qk6*;UiqW%%Vz}2-%Qq;BKb5_+-H0Ap$VGXlW zvw;c-ymXpr-V@luCQ(8^OXzW*&JmKb46r-;@lk+4m z>U8_?+UUkae&8e+d{EDyF$$26U>_j|LQEEj7lzO0>Fc~jU{doWOQW4rL$oCcc{!W8 ziS2~jp8NCa2))OJ}`-23dIS8>qqbc{t| zhYiG7e!VyhX1$X`JxFK4FnGJto_G}Hk@lUhy;j4<8bKAtlsu{0jt3+R*Vl;&Yqo zZ$sw>hhE34CpuRKsW)eydPUHE|AW!;Y53dgz zm-8R@*BX*&3Oyog_Rx{aI^1!Wa${eP!1Ufi<;0V)ZOT!n|Meep`T+cg%WLHH^ybZ2 zfgPA@z7nhZZ4UHaCi2wZILE@3;>7URtM@>yQ1NX^@}E%y2W|(fUiaqJFz-V)aIcXm z`8#ID1D2VWzJN1f9qnjv;8D>6#o!Fl^CiFa_@A!+ zW1z6Nduy@io6GMs_4GqZw~F3_B@5Z5U*%|833dsJI)w^GzH(~zs=O&5g{nJ>hR#M) zP4~h0sXFxZwt-0zp!KpolyZXbJKfotKksJ|9FI%0+c|x66XDFNk&e8wBF-7|%K5wF zv3*-(&HmZ8<3VBQR zNt&#O-b+JeUclaA(E0CP(LcjTU!HS>dgfU|!ecM-LH)gR81xU>1y!kCAs01f!q^{) zrK%sc(!nU3{fZx}uNvTNP-vbwSWagQ%7G7yRfu~t@xpvZLn`QBSKFCWa>30eQ4`;9 zJI7HW8P0BCZM(0)e3Z}VI(HCEd#2gs9^lRDh02DW@#m<}69`S51!waXt{RviFU0p=_{%0vUDq0(eNatwG2R>erS2o| z`haZB#(piH*s8XVzi9%d71~Zn!M8U|h7N)GkICi}zj&gbG)Ua?FSpAdjJKF_Jqr^Xo2`Gr zM@yW;5fRCTpwU%sYUZ-V2em}O`}zITe#%f-2RG&q|L0T5rnEY*5yKti9+B9IuZ4B` z3S>vjDROURz2i^^V<6P0? zUV_Kjpf>;5g)rXn;_ECsOLg@(BjT3B16v0wzySpB#8iIWDe2QWv9J8V?I>Hl9QO_y zhPd)ZMF*=uoLo#9C=~vE_Lp)fqpuQ7HIe8{_3Mtp@Uq&JR`T+y%ZW0~`eh2zc0A9B znh93EnRsHO;nY>kM4*B82ZyxR-M_1?lh>d5tW|NDx_uv3>CbXB7!4#~zN2-orK9)F zz+^*P1m?k#@u_%SRN#LxQvghjBGWcv0*+)f9o5&e5p$3~>Noycb}el_>b@C)YLU@f zFH|W2D>Tpz7M(h^;2QKaUs(^;otG9Wy0MSrWm%QUeI-^V#PM7>(ZIV?$1gPCcF|5G zpYw5X8rSpXJns&~dz2rxuJmD?8-}h167tjzM?td;f^|9xGVAIxD1Z*6Z$V-AT7{h5 z4kndSE^xJ&A{!~*)Y}@t9DOn=RcZ#hqQ;BmJ_FPAi=itsA?Rgp(eaeM?zu^>|KX0! zxScW4H`5F2QUXi8wkjtC(G0I=2J$Cn>%MzGS2kVitXA9#ZkP%yw2MXV9eSb0RsxlX ztH+hR<2xcFZJgK6Z^I?QpQF!K6!j*%&a|p-&P4l} zTj0lIFP)f}58PShpayOOGR0@4v=yx9j10P^{5z$yK&VyPh%p^8y02yHAI=C4g$Cx= zo?pkuTuO0j`03&@4h_*ol6juNE;qD_Vy-b`KLTKxW8&)}6TTsGtLq>&F}kuPHW`}R z@IiCF?JD*8s7jML-WP@eBYSS%JYi|O_3&su-NOg{Iee5omU)0a-Iup*FJ8p`=<|7f=)2p$NWGFe!39Vg^g1vDRvCN_;Z#T zr9Ul>@4Z0mUqz~o?i0fJcs&9fgNc2Qlb#^gB)(6;)##yMc?1}f91y@g{mmwEXcpYK z(Gau*67ipc%LG6_|2*jDPa1hX#FlAO`ck*i)7Ub^5@YQ%2o1M(9rf7_G z6pgb5sqy!y6Ci=tX6x56Wa>lL&Wol#ZGD%++=}s>dSCNnzE^)`h+#y=OyUJ?MeZTm zH0~yIxS$<0=$5Z!Hr8a~PYp7&Oph$vW-G1@m0d|?>aXq;u1}VRrYk{6gpls{dwl}s zIK)PAwfv~9srGZ6RU+S)g+|c*U=|}RtkA3nx%4CtU2NBW{+tS+4H9!|FqL*ac(~Sc zvTSbiOhW9ATZRSf)X_^RAKzUj@9Uv8g}=OltKOnX>2OdIT^-YATFJCaVQIeRNe&g| z^|ih$1d{_TX%VIQmny*>5z)t{CW{B0K6}Me>`aEnW~&A3q9Y(%>!b&T^UE4i3!xiP zx-3Otf+h`SP(KpE6xPtqmc(Jv8!!W8?NQgo`&w`pGj{1)JK;+7Z0Po$^~8}?9YVHH z3F_%X2E}a+*`dK;I5+Ip2nOp{Y6tT>Jk0OH+#r63Q2~@_;K5KL48|XaSLT>rpwtwE zU7*7XJyNMNnGuXH!pCud0IYo{_030V+}D@@S_V z;lS9jYGMfCw|b|uxSssTCX{vQWcQvuV##o0@k+q&amP(!HwT`bYj{@JIPQ3C_mK;i zl5=FR+{4Q_gQpFQL&7L$8+fD5r$&{!9)de5-WQV;6?PBNj4sA*E=$MRfbc>!&?keKy;Yw zCOvt2LF8CeS(w6osR$Es;b|)-4p^Bs{&t01%~glB5ZKzKd_y%?w_;3P+V>XzR;tF) zj|uSLx2cO<#9T}&w`5D=YzSfEy`x?DOa9c3fd-@Wfw^$e&i>}_s};;pLRbEPM%>O~ zq35aq&#~}BBn=|Z>X~LZRBGs;`V1SlfMP0@dti+{4;N3`rVSS~e@L(I1HwelAC-ST zkUDOK=S<`kG+^f1ucuvx{8E{$lj@9qj`x;NP(n23x;Ag?{{G0P;#6n*|Do^a)FHN|x=7#GS4KQ* zH%r(@llGb8Uy2OB25yjWSv3+`v&+=ONFmq2<0R|! z2#7)5^$jKmS|G%9leHJ=yg4~#rmhKwSbl6(cuDLWxZHUs(S;mL0`-HuXYNh5dPN+Q zI`-$}Ldn?Qin5J>^A-5!_Sa7R6OYP;2Vj1PZ}5QF`aUpxm0}XnX%WTr=pDa{cNEY0;ud?f0=kKdexvysS28E1 z$Mt{oKNouZ&qZ8vH31cIyW=*-t;a*x^@#M#@z5m=Vi)Qbm2A*{Lc;$o|5bSUn_y36sZG2}|GSQgO$5AjiND{UC$Eqf+7xIj zmt9j{nCcUTP@6LZ;0j62L1M~-Y%#u$Z!t=6*&{xsdwN>;V>+7Jv#I%4Pz}$ovzQOv z=hDXa7ghO4Avbdr#$6jhKiUzKnqKKg2{Pe9SMj{zh3`KPW1oyAiF>V$uLUScURawg6Lt^#w3Nt*XEt}C0e!ueep&|1cnb?l2!Foz9X z7zEpd{lDqR2?phe(F&}lCZS4v{2OQ5NG^(D4K(sapFIt-gv4_K)%l4OwlT-cD|i%h za@E+IoUQXdkF9?EKdQbntf}q!+IB6VBBG$EASxhNiik8J6;M&CAp%mP zB7%Z|^k$+WT?j}GEm9*=A~i^_iS!a6l#smpr11N{_mfZV$;ml;X4cGJYi2XxEl;{D zA7+e9*eH@2e0|SwWJVu0X(wg%VfVPe4PM6O4J&sC7X+IRnqTg`TaOLCyrb~UjqY5f z7XCnePx-6rUr*kw`{y0Y9rC&x)S+}M&`8PaD{1{b2M%FsElWbLOun^>8mxp)gY2G` zd#pRt8T!SQVh<=k&^r8Y^D`a*2EnwpJX(d#=cRF8bx?#5-0U*InQMq4x86BgE*zX& zm6v>FnMY3MFi+(2p*`i9OPL3RE%m?t?%&QUy_FHWJ$EsB#}~nU*UoZ_eCWW9=zdcB z$ewtTW*-u_hWUtLpJI4-RSYofiJsH-y1o}S9ePszP}?HmR>=4WLp(hzw-hL}lv;=TQP@tDQ8GEYPHAm-SoEvzxjgg|i6Bk=#b zyS;f!^H&cwy%q}im$7`N@mEVI#NXB&`xk64lBuKPS+`~Iqn|~0uIv-uJe?1Ysw*W3 zZK!m(J{wFyj@ax|i4DwNE^7V<9M4wSFn!7hBIdwBael&UtG?gZQX@FDFNwN8a$P;Z zXO?8JpqR1m*Mhh9I9F9bnV&Q1X9+gTB{HukkVP(F2yYL`8-J_$A`hLZ;PR+8bLd?7 z$E!j8TUQ_5h-Ny53I^}m-hI?uORLA^rBTP%hl+%~4~G+qjbzPGI*Pc5H)Uw4I2+-r@3mc&l0fEK4p$?i0xkdTXvMG(qMlG_9I_QaU@diI@4rA^-aN%S8rd6+U?uGKU`JQFpWO{z(hWoEOqZ>8u-ZuPfp`JA8 zZs`7EGVqz9O!s)QYCu=4tA2>O?~O2$QH}pABq3_fBqAesyLyLA2by%Abnaf@8JVpfD)ATfwZ-7tPp62niZ|LMS`&DtM zj1WsFaK~44T<%!W;&JFM6_wAgSOt%+o6Q<=aI>g%+NrDXt-T(%-Cyttw%vKGGM(WW zocQh3k4Kk^zA%@ob$HdT=4E4E>={Ua7@O=~=yJPfwY%1v;T`>Pd+K`g7?4OZO zZT@i^S#~;Z!m`sZv*taQGPuq?*5!^2oIlR>H_sflzb)kU-ldKO6izmI;rwQmFj5oi z#&qA?3|T5*j@DYHrkb>EDJ0Zk9On(Id2+w&ORPgqFtuP7JMF$=t~MySE5^O1^pH@> zl>#mLo-l{;80PAin=F4iYNjo#50tF_T}_f3bh%!XNntF+-VFnRCN%7rxH!1(9}8#9*pbku z|8E~@_6+Cl<{G>C%l)R^s!731@{&Dmc=~vCbF?VzSrlr<%=lCsH)d&yBfr;;xZwSW zeJ|1Pv^(P)HNJlBTES{~o6FflYxrtHK2Tp1JL%sg+_sSXK^+(F)aqWvCl4(Sq1JOn z-R;FP3l$Wn-FxS`@Y0x9lg5n{KZMa?8PBYg%#&VkrP`C`H*_5w%`_?`opP3OuZ?#Zb2}*CDhh1DpM4~FLlVd4sZziz~K|ZLH*o5|RD zY<`32t!8@|$<@%dQ7~U7P3k9_>WRwFKh8oKi;~yNXP}s8$6zt}GbaQb%G#lKV5c@) zC01%1DD3n^)PP_BnQ%m;rpr2F3qT^)6QeR7*+KBCwd@ht7aRc6EO1=+OmiLiLr`Mq znxJaBe1>v&*qduGO2#vcl0AQc6)Q3$!gU=yo|%XAMMWdqxnYb+{IrYhrI#CNY2Y2C z)6##R7V&zLeG2x&L#zBASF z@2{Z3jGLyuZ)W4K%3K-ehgY#Owe1~awxRY~I{hzypK{=QIu^f*7C+4i;&>9?6<5l( z{tAZaIO@#XCD^n7tK;(YdzTA*Ssy=4rTKcu2s95>e^T1r?Im$Mb)q6n zr^IiVi0H$!R+o#?QOlIN74l?r2pa+fH5VZWP=(;#>b*m6z8#d=UePsZ?aCa>9^lI! zPFdg>FxhCl#QLBW3k8}8&U%=T&2|!B>ujbPWvblL&(tJc%)40m1fzD@S+7d>{nRhT zz~oyDvk=L7e^E=Qups80(tv-mV);H(Wen#mBTMJh9Hc3V^W#r`;KN>&PHK@;I2W|FG1@T=plINo zTQzyr#R*3X^{OnvlOMQ_5;py?x5;*f<$4L@srKAgqJ#`mg3RjKfDnPltJHGgR!_Y3 zJ9t4>8D)OK6{F@Z&kiX98vW0kuUtG3wp#A~69A#<7kYKnH0i_WMksm;o~rMbwQmu) ze@d*!KmjP+L4UqPUQq5%&P>E6>-ZkJe@eu(jRzqrxuy}*om*o3s#RtLt?W?6cW^Wx zy-bBikq7@}hcMnR1XIun76-(6oq8xuWH6JHX1p<)*UHHt$a=`4%y>RjYk}yj)pf{$ zDph>f=(R$#34T*^C`Qa0h(&fH^ZUJ)^ZXMxTZ-6zt7{5!yH*u}GwxqAWk#(lOFKs5Vy&_3+@X^JhZ-R4wEw8i<=U;Nx`a}4d(Khl`WLEPUREG~6&G)k5Ra=No z^*%nzc_wP7P3MAEcjFb(LN~_iuVNRwWca0;somnsb&NsVw>|7HQx2GP0Iy_WBv!17 zcmxy8P9G-5jwTUYbaqrN;uh98yl*qyHCC8?TN#F9;vVk$;kC^*TsnJGX9?zqNr zarE*yKD%o-2AsOc4$#%Z6*Vm5oCzKtdi@l(c#ON%q17INb~**41UP{_+Ux#8@8D?C z%E)f1D54j}AMBOFJQ=63uFkbd{-PHkNFYp*b7t9bkJ3Q3DRCbeqqkvImmBs{$r^o8 z57^k0O?K7~{S6i!6t^ZAq+Hou2;Gl*tgOZrKAldD36@QdDGJ{w{3h~0=Pt>{&(#Zi z1e7-iCN$|LX0yBhuSPr>9u{>&MAF(|K$yD0tQ-jNMI=pz;-5#QUx`kcBH@}o5x zZ?KBo)p#tzYt5gRcybIExTiOGulXAF+i>LgiU>ugTSUX%x6`f>hKO%Xq7UGz80tm^ zBWYzPXcLQD(WvvYaUfgfZ?eFlm!i7VS0il+Efdss+2>kf9~ZjI!7+v`M9>CTB~(Z^+WSDn_!g;AcH` zy0*@rN}taiN%NlQCDmPc)A!!?#RH2+1J5VyE2*A;cE^Px1kFqoAw2qrzxqY=VT8Q7 z9qL{&71ffSRch!s^o+1S47rP-cX?BH>kLu&e#@7*DTQ}p@@j*NfvGzLg`cTEMC|cH zEbU9E{Zk`k{0IHYUOMkC8bi(RW*mF1o{3ZLQ>gLvqgrDwyyy}s3%Q`0ngKJSv6Zzb>evoc8(l=j81!YyyZVL$v-^^wwN z|9XZeo;P{kVO=IGvi<3}@ySf)9w_=}W%?ZB05ppQmt~F!-TYZ8TeFAh_8po_^`Mpa zz=e$69hSSC?!dP$Ow4WDE!N<1bf>hme7*Py1~oJI)DD}ZwSK>$WAT!TRh}NNDvP$xtAzFGEXO0tM z>T;4yb~9_xj`4LJbP9h-O^Npb$TNRenU6m;{JR_Y|Hj)O8 z#={sFQ9b#8ES+-=16kr#D{IdCQ9U+ zv?-ICk-RF{~Qty1XnPF{Uj1 z%5Qj~(4u`#t50E>y*hysLLxPW*Ee-9dcqfAFqPYS;Wqsvdau{ey~9;E56f3ScFLcvcHZ*?uJbR`#`$wY`tKPzXPUYozB27xR4gX>(>6!N zg$dn8#hrw^b=2qmk+$#k1`d^xG#vNj70#R%d1qet!T~pu%Bo=W#Ekbur_R4bfokK-F{?SmnzYI^Oc?PF zAPJ%`));<#s&KN_%3Aab3sgr~K;mmXajQbXeu$a5&D8bo9qNo?0Xn?_cS&zkOc-)^ za7~pAPx|Mnblt)ANA#*sEm8__I|sn zJySi?1r_(D^~lB^*eYVs8& z4GpUJ>`cd!T^Jq4kE@3(s3U!j=QcWcl&xN=3Kl5>=W+>+2P|3iwyN{;t&}_$slsWa zTg&$D|bhax|L~2L}Wx%g@?B4_xj{#2a5VIgh zQj;h#9=|Eob4MH1i>G~8MBXZdt;P6s^zISriUYr&D5)WI)^Xz9b_BVW=^jsH(v=zDvaeHt{;I0X$ngF;Ly;{ZWL?@|}$<0Trl- zV%;&xIeL=7eG3cX;J5HCg=s>;+S&HI*cZ*@3bue^CINq5U3@N!co;FTtjp*u{w)$` zzTM^df2>^`Z-)lhziA%usvi=giDV~SGMPxRTC9c}9>^oLG8s3pxHL!S!@1*w$a0L} zHCc6BAsT%uE%eq53RT>0(njjVTZM|{+Ppi_Vh0nyjtt@ zXJ6ELH5wGBA`8dUe!f+oNIqQ^lgvC6Cb|-jqG2CkNItx3nPcNBKK8r>gLd5}kADxR z2B#OU45Sv!bnnjts7z{I!DtYRdjPglgsdZ4MEc%vcCg+eF^Bp!_bK9!9h=K?yBP1* ziFeb{dH$T(0Cx=OoHHyH-8Or>rO%w#{mEw!A6`97`u$)gV}^Xo!yu{)Sg$7Pxa^dz zj93@Q5^e@CU>?z+y2X?-OEisI3$|+1ziwpe8+AJkexad=EKfH zM6F*vz;6xLs%lCjnfa&Tw}^2c58^ej59C2*UrS^LA02k?9+LVnQh?tYt&+#z4w+{Lj9RfnpGMmV5lH*=(`2`O0r zt+hqV{GWq<#1jXgDg~$lX<}Gd$;|Oa^`V(@E5@}-`uP&VLevO&rLy5N?+A<^O;CgQ z(o$AEel=S)x6KgQB~Wv-sU}~`^&hF~6mRzzFbfl2PLv43&73Z? z+}j_i?MY^-CBJHG#DN{ix(zwe%JWA?-1cm9>rfw>=84tI&l8hXmv2?aya9M+Qnq;S zBBJh&R~>9Q>-jse`sCrAvg)dh%2VD;>hT%@D-O6cZ06EZ6#fL<{G=^nV89LSzKMPg z4yh(1B4^hZQ^0LW9VA)B2;B3D;nc{yt=(JG$Ko~XP}-4^rWm5|!FXGDMtA1SaysG} zN{y`S)fV&?U1xhun1LH4V~qusWw!Lh2MtXXDeJggj5qH1Z3w(d`Hu19L$@`j{uBK} zDor*Bqal=7)Q+DkzH_3HZmQ!f+-2-JiEOA!Ds?eA0$eCvq*k@ABuzspC3 zRE3My{)_25Lq5_>49h!|W|M%Ko;E2VBm8$rD9fZJXFcup!8*6>M}*V_m)_d}GMvGR z(p4wrl&7c5%B;2&PFko*LlmXZ$b$sSMVKP^!wIs;PelKb|Kjg;SUk4hxTVm`=|}!) zHjVkamIsvOKNIk(>XKk7v_XYzki>`e9Pe@voBQvz3N;r6D-6NVVY#7<-nU`50J{UN!rU~whk!--!nl8~p%_u7eyw?WtLuuY+wW&-~a-jYUW7+oza=^lRG9A4^ zIrGj#5zg|o{R2Uvc0&#Tc>tK&RJ=D{;>RR0U`->4odVu62ntWlkM z-e1og~akt&+oT*++vYVL}S1JM}m_;3eQX^pGg##)cKb}t47G~Ous zKULpN^qi|)V$!+daT$lj9RE1MHvPN517|b+ji0n;zj%0YcRoq`aA3Hj&f|-J6)d0Z z5fWK5z0r3h+y2uu!}So@Sq#>k{fF_X(QaYy5iAvH=gg;^Dy3EreN zkl;t09kt~>`Xhtyik$^#k3nY@8Ve2l5TI!85kl{)IZsoyMU=KK(Rhp-?v!HX8BaRm zJU0poMv|qHVfpw4Y2HD=O6`vgkkaf9N_Z5Vd{Iy-!apGfWhQm)MHglt>Y+T_Irm^j zH$IB&Q4B94?#NpiPnQKGY?9G~E6Q23Vo+H965DYhW3AXKfFrAs-ns)@DaNN{@ zcX=fzyW0N!7!RSf#@m`Ch)|P&RPmMZl3Es@(nmREF$5 zJL1GGElE|*{SMfHqXK(VN`+_Lnol1=Ua zUee7(Cj1*$e8C=yV(Gt6O{my|Pg;Z!YLYC~eu2PN?R9j;ILz=Gky-3q%PM^5NE1c@ z>)HyEl=>0~yZaLzKa)Q#aAmQz??4%yPCDx5T8nagZMEJTV1g`8^6wI3Nwe>HAZd15 z7InDmPUh(9?`cpXa5S%7dqXg=XA!8UqG7gx?C03#&LtMcvxP`tK5|dfP7(P-s3kv@)^gpD9SC;{m z2?;VW%;FQTSk?_nCrpj63z&IdeISeR&P9zm^>VpO6xv8}ru<9MmwClIeF4pz?X15R z+YFcyyNsX;_|>pXl{2LvoSiX7{ECsOk7R&g1hidW6zq~cWEgYr8<>m(V8M}XrY*+MB6 z>n6315b){T-6QZIxLON4;bB8gh%+Lu^(x#)v|Lb*X<6!gglzzj@yg*+4wHWQbG^Ul zURGDd>M4$c481$&(7DMjnWYvfUpDT@{hPEpkr-}}clf@7n5hAhR)p>P0mPIoINNuB zoMp7T120FlT_|%v=RsQ1%|*d@J>7LFiN@fBnR}`|Y2EE4yV!2$@m}gShsg$RtnUCV zRS!k9cx1xlCg2`L&a4HlB2GWmqG@qdw4P|za%ushpLX>Sn`$J|QOa))L2Uj&ip@0E zV@<~H5hVMV6}$#|EYxuzABDSs4+VLg)p9VUS-|!OsT#K(*mXdNt6(9;Nv6tc7om0O z+F6Yy*8k(djbfAQDnzre zE+WL}1hd$2(5{i->dZA8Dqx5wqk~O*%auOjI(=C(!bn)g&iHnV{UTyQZ)95TO+Dxm zI&ON0*G-t&q)}kL!87!?=^UbiuPNisD>wZYlm1Y{jz)06cN-_bAHUn$N=a-@k{Wcm z49W8$#wl^?@hpL!FRyB0QG!dv!W;8G`LI(=ukUzb;c>ys96ur-8mr_)D|4A*)q;EO$X1(6_f3E2#=K~J z94+b|#3s>}Dd04hG19t1l%NB9$YQeL4X#ZYhWi5moyXFDlb6fN?_01C=DiQ4$m6^c z2V>A{2QC+|LFR_$z47fkV1s_qP=il3ar!HJ%`hnKyW{`xaH(&_K&xx4HTXi88ZI;F z&01Z~*8pT;?9Rco(!-8}YIQF{jarq%fc4E>;Fadc>57_VbFf*rV-7eVz z2d%GiWU`tNl8rLNd9oUY4qVY|V5=|6q&4@x93VBaU{I7wNvz@kMr4=!>HikFIu3a} z+J~(o(&ko;P6LWH{FyOv0T;*{;Q*}%=u6>!tzr&mHe!H?g z)ZA&wSWc7cx)@i(TsD`wZ2Q>0XIh2}0l_*MXtrcA;wVe`y}sCkHal2GQ%Mt~yZ_RD z_D@GWK)i0#wZdy@O3I39qZ)2R6jnD3@T6i;qe+|`Op;w(GfTSBb(&>deDCv-Lna#h zgeWbzYypYq!}oEt$eCvQHBv7FcRKS!?0H?kvF(=>%4WxVwf^uU;)7*vaeuT)l$8|0 z0_h^jpGU3+jf>b?fE30`E_U(MJBw`0fhYB&olhomHMr;+d@)1oB;`o5_jWVXQvDlCP1Z zGZ!v!8WvHf5M{JBPRS6W$-^xfP;xTQ*c9P%+#&7AuUuo&P??RsIl7RP_tYeBWZ}eD z?ql?k&WS!d!+s7#Hw|<)vVHNh@3PqjsOowaR~nRK*4O@SHwOpt!`TtUFGd?MC!R%> z01iJf{tg!eQ;F8ZYtSyP=>>U3+@7oDqNb=4_Hk?s9GRB9@R?I!loh$b!+h-nYOgM3sF`^JvobGrM6*8=^-QFUlLGj9{o?IHOs#alR7@>ba9Z*9Oc4{ z$0U!j8v!sn0ll_dSm-6nMX`+{M;$x`daT%ef@1aC6t1y#&0QLBxtu8O+7A_$F{Lfu zvhB4Xh+efY=Q@4z0ltoW&}!tBo(dyg<>j_~93~`QVar9e9*fKOjL-k#hrfneI^>YY zbs)It^I|MZ_L6nHKSi@ z$&^wYHp$-@sPwUQ9!cSEvQo>@U$nLO{)hug@VoU@_Cn=~&xY15U-~ zi(lOLk(J9T5DVcL!(({v%^khAaLm=0#z)kN2TCV??PC08&dZdQf)ut6#n-qC^A~6ef`P zkH>`o>VENPyn1|bG%!m1QIB=Uf%iX_Fl4 z0ydqTBteTM+=+Mzx%e5DNO<&GDgu^VIO4K2c3~zi)xzZY*<|1>j+ynMG#T%o*qT%7 z_dD+%e&MU-7-gd%C@Q$3G{bjf7L!cudgc>{R_VLW=oZbZEGnwD9?c%CS@3$C7_+4J zz4DoHLw8y0;e@v_uLlsjLomq-`Q5Frg*{392U!hPKeekoHkAaQv75XX@~Cd|FQRNo zHOA!m0lB<4lvqe0u<_Q|d!MzZVaZ)=aY1ATk*%_UDLtgqT}n(vl~uWU@{#&h0Ru!s z3Fz7S?< zv!F`h(}-Nq=?xlR$yP)4VwIi;!6Y4#Qx@HXF(+d$#R8akV!x8=K}c8(*AEP!X~lbV z(1Qh*^2#P6yD)}-exCxrC(GUc;=myFL8&QNUI@4cM7a)3tKDf6R1MN*>VN zb(NTZrYc4|{(L5k7jUGA?>%SPohg5JMlXXFi6%c$G;*3>&8Dgv?asJrib0whnz$S6 z?{>N)w|Gt__)*(%MFP$2!BpFCGrtiaeV#QO(psn>*7z=Yi!iP$J_(+@w`z9$sCRQn zs`kJ=V?d~`RQM%!8!ff%7^HveVNx?GL=ovA*cBt9iajn()aqa2^s-Md_N^ljTqQZdcyP z9{i*9rf}wQW`V^GIXb>}+uggZmoByE7koU!B;s1XcP?$Q7A_}|;x-h(>|EcnYIc@j z16b#CJN*IIZtxgXnFDsV0;6 zLhVSnsNCRv5tA!KFOr%a(dg~x#79oX2}L}+c!=}sbzN`g;%bOZLE1>bT~O50j|9Y@8cV#co@hu zs;gZGP3Y59O3bkU(Yf^5cX|)uj%WA=yA$$ti#q4b&G#+F9A~uDgFo`M_&^SsS6@QD zJK*Zvpa|#F*m+o|Q8v!xu?of(%>;K{{5qyl{3OsmV2bC~yPIpEBh}*Puk9z?Ogagc z$jm20D0$E4@mOVt^mKBXMuX7S_G*vdR70R1*M(7Z+<%Rw<38d8^<5~sfVaW|0bw## zX8C(BJ#w?-Z#ASO98nZn?8B4jTheKzz?uXY0`&CeAyP!iN0e7 zB=Xg>42lr3EH?zuVX-Yx`y4(Y-@$1h_4ATCY$%1SZ$^q$%N#GJjSySDtj6E6te5FK z+vl{2ex_9Z-!9E0(FO^i>4^oSAEE`^7)b*CQPm4dOsh!0(~W8d`o7N2Sm(9#NE4ny z;=c?DrcITQEl}axUuspIhtfm!OWw&1EKvtm=h+$Jrz<(QI4{7soh9B#t$vJ5vUqM! z+ftZnp{DzS19!7Y{&5zqFaLYJMK~X`HTqsN{#L9W(NJ{+5ix703j`qKJYvo3*jl>c zSrWwXfzyC%(=#ga6Wb6?0=iHyD4V7fLifH3w!Phm)pPN2UQqUAP&!pmS0x_pRowhQ zw_fY1%F(2ocY~4U4a1ff{i!>)mo6>!BPQm@job-$ytb!i+LD)lNg8@61EE1A4tM7RGACLfRx60XtF8CS#t2J*rf zwfr%=eOjufn(nVaB*(s9>`*V5l24AbZ&VD#hHNPu8NjIi*cLGM?$-C4Z!=o!(jzSe=dgMZz&)tfNu$5ujkL$DoVHu5JKMruO7gyjzvyiSghb zNaMmc(7jbQK%08st!ow3md$p4Zp?kh&TQJT+O%O7BSApr`7)M|A-+G zJC>I}&3Vc^mBC%CP zqRim6%6#np&mY*W<^$5Sn!B65`tk*D-7%Y^$y-D)qLJoGKi zmS?==;Y_q9s98mjnKz?l(|y(7=R^=if6G&ZHK=9D6fbXM2d`UhCLPt?ZIMS+X)F~i z->-p1sr~;Fcx3I|(V#hhw@Xx?xtxYw2r|Fl+lBYXe@t4r95L+1sEM7166U~0KLu#Q z;Z1$`&&ov-WN2v5Y=?iVLJibO9M;eo%|(^DQkVt@Zvlr@?w}X!zJZyRZio=(a8F$S_T?(YQ?b-!k~-jhS|9nVnFI89$M|@XFcHgUadxvezP%{2f(Y0lV=r>maT!EB#4C(rx;Bl5| zi@yqZX_8~XE{G@O*>#o4@>o&-ivu+heD>w=@-XPonY0nBdC$@Bu2vu#9T z%pqqJJ1)6cpZqK596Ti6Qq)!4aS|IKCQn^0mKfHE-HZD9q zPPk|P>wP|!?o~JAg^T697TUT4&20`Dx(W&k){rpx9Z$O|y){@Md-J-6bkepCw1Q%F z_bUx4^goECroOEUll+IauPmaJ&sLd>z!t`YPS1Y$bj1pPL#$DK**wE)hB}`TnD9() z+)DriWs3^wBnm~fr9OOK3+jyL2Q;6cP`IY<#d)%O7K>A5w{^K3_cefaSb{DUZ<|1VqPV3q^L*~cH!Q32S44~4$#cyB3KVKw)>ylS_OuIh*4&YSY71?~v7*N$0b zwhjByZAvOOCruvO)*r>KuR9BJ_>KT=IA_MQZpTxP_N887wvxWGkL9b*`}P76Wm=J+ z=~nak^Xm`{rusWGd{2Locf3n79%EhCLGyh83RwJHru!z7HmbSry~9uf{3Y{O$mWrD z_wIz`XumDON?{uk-kM9cZYf+lpPeqi*3WKu15HXTxM&Re2~!N{a#=9HHZP2k}^tCddLZI$^a z(g%|ZmY%6pHJgIIf~SnHCw|!TF-ur;Ek9Y=2S{;~ccIRJnB!$@t(vFA*Gf;3bu%)) z568oUGc9DLS#<^Jj5+GjeFe3H$2(C1cXwCa45270$-a8I1nd~eHlf{qN3_oSif4D$La`p3Ps5-5mGuy$T6-1KR z!C}RW;vflvJ#RqD*vJ_tYkYUB9gK=ef$sEi(%SZ|tPPAv0&~^*JeMHAdhkm_1wuFs zXJpmH9XG;s9o^{(=7^r&mRXajmMPlAVWpM-i)ORZLnq0vz%V7m8KIZ)uBLaPL~xU_ zcU&cKoiZ4g-2y6E7IKa|Y-ML|bFY zor;M`Y&HnYbNb!peCjkb@n`+biTe3lH2_npl18=(EMiX)lBX6z3TlDPi}cWha;)J0 zRF-CI)^2fG=bFRXgOglB59_ysbL)l7ec1o~-~ky<&5HFCV_opnB%@~9Xagivf-yGc zGCueyXBzHQcJlgY7*;!lb2~lR0%*F9tt4ufvOZma^qJvwY^%$%{1a*nLc z*E1qoLNK7N3rxH%Wn@aP$?bY-@&x3J1Pt#7; zMr{z9sT7=Zwho0v$9LZ)DYyPz=cTBp{a8X>P?`ZLc8Vt}=7VfHYHE6Dmjv^POMK=y zj_G#2q5|rI8AS#ux+iYyXuRy&R#7^2C%+KtG_KWomMyWqv^|eGic5NWqtO4f8U{4YGYbE{;&SnLhmr!Y%Y*hq&_7w*4m!-6F_yM&rfu7#S)~iz zBHoVBJ=Vn@2jpeaX65QxWa)EPvHzn<>2NfuvTy?*Fs22GJ!0ksSB&Fr_a#C9q+RBC z-(~sLZ|lxyT*5Kl&PK|*^PwDCYUcZIzy_k-pERbUJ#0o2(v7A}3nJsXzn7>vC?pH( zzv~QK5)*?6Kcr;QOJ6MuXtv5(sE9RNby-8AGw;g?XIubl{FnV3Oiz_lXE}=%gI_}` z`hJ?*4!z<@l(T%M)|J;Bp4Qvkc)T29>wy{+?_s8}2IfYg0b?9IHyW9zN_%`A3|feG znKTih{pLT*#eta#l>Q$V1Xugp3l82l26NNHO;IJ@`U5T;ElO-S{(G(OC061)K%w$;qFQ9l z-9d*-rGK=v$?IUFV(NSm1AStcv!av^WaqF28yMrs`un(1g1RDAs4G&#>Yb4jD@xlCBd~&gB?}d0#iCO`&1~PQ+OXvu zCRK<=jQD+(BSy&hG2;JTUrDO`%>(&*EUp`{FgE-mJ{2pk4z#~zvR6#HHNVBNdV=2z$ z-y;WjeqF1RylTsY3b+XG3PZ{2uxfG@a9AeNecj1WCiScNwUunT{q{SQU`i;LdQNb( z*Z6JEo*F~)EZl3pw!+CF7~&Bm^ml9gjSt>wK`iP)1+Y{CdMVYu>PdC30 zY_&bL-uf`NwZ!e|XD_rv4LhF(^{l3F5l!2$g);D{o>NmIil(U&d_%19A0dqG`b;cp zG0~UBhWieUiDib_|KW=8B_qSs!t8QRE<$`B0AHuDP{ww2ykUW>=b{2K|KSydhWq<& z$##|{yId$rCy$9BZT?hT_@dg=&YT~`=rkI)x}-!Nb>p+>=@K8_V7&Y{&A{L5YJ*T1 zG?#ofx_9MVc_fU#Kmi(P^=s9qLh8u066&DPK8$#=8F$P`G%i{%PTia__xQT&f*k5s zhL^~K7ONrRp~=tJGv9_zbt$-TN2O}Z$!i5|a5uDaPytb)U@HqM z7|V+i860J!kCsiCU?VR)xQBYKSdi=XnsOQrbEi4gg(StMj|*OdKI2?J9w5pl6Rp4$ z2RIwzu%WHuBA6t@qdOUGv%b&32{e?nThwxu&LLOlSl6Ol-{QFOznUxh;VVRC3dOj& zyIVKe`QN9OpVS)%aa%|r|W3_MhsJU&2k%OqqM**JKRd-f@^C#}IK1sQbi)wp4q zCF*Sr0@8hqnsi*6&@$3-lA5Fhe22I>hKl?k3Kk47q=1GwBs5r|pz#f1Pc@$&TKP$% zXbGu(OY^83m;JheUHx5Ba5{=UQ%E;)+}LBG*-TCgPF33673!+9CuEm)?v`ks_Seib zz(qG?7ZKgg4O)X!407*efkPTt`m$V!;V*7^Gr-`U6;8Vt!g9Umrh)ax%zbc>ocFeHr4zU^#RySG_ckxhQDsAykEHGO7bh-Z=EFTxZ+MP& z)<4#fsdSXwk~R7%&d%~MT>gj4&OG?Y=!@ZkzRl5B$h;}P3J;?@aC_R17$5qUHty-w zSmEWVZJcvD>g2VkHgi{JYSSJ}fG>XUo34_NHiyY@L#;!0S4&)FF8b^3E!wdpyxVri zj7DwY#9!j84{CPg-I(f4NB6%|PK+}eSd*@~v&&A~oA1WuAJQ2|J$R61Zp{~;j=ZpmJWbi!as7h9e@APPu%7$|orJD?@3OKk|or_HKDlIpFYO z^2F=S7iy=EZv{(a5JxOCDnxbd_;Ej-2QejWpyT`A{wZDiW3ah!M`VdH&yJrBMw{#; z#7-Rz30%`uNV(yeN_3O4!+nkvD>#Soueht?{rt$yC&9W`MlqKTupH;cP6~MRc&Vc0 zEmg@20UJ;Ii#^(ZZTt2$HQW~HCnYmiZ3Y-0O*YkEFQ%uYrlNv85wf#uG3`gZ4UDSkGY`$bN@%d)nx5BFT1f1UOI%#;4 zE^<8Wk&RLnY=kFoq*Pgdw)};DOJ6c?R!9m?V*Gdqd68+t=#C4N4|`ftRtOZK;etb( zpf!2*!cqmU{KF-bW_D-Gme4*l-~FudLuzG_h6Ls6;@aid{cy)&<*bqCw4rxvjVqE{ zJA%#|oI85Z-t&qeIaGAFd;#TV*byc1M4VvhOW$EX0!^_HAITFJdhYr=59KTww}LGj ztDkxUL#4XwNiQ9!@~a8mP%myD&kQH>m%l%?M$xNPqh|{0w^1S*b_IrsbQgc1yEbk$nbA-K{m+oy8)K5?{`JQi`)v%^<>xJ*d0UCKz zn(r#@!zOxIxEswW)^%G0MygB22%EzM9rr!Kye}yi@pRz|1a*l3 zrHS2;!j_aO1T3kuI7~udP8CDh40M0~6xEM*EX*mK`RjHR=`A~V9MTi%nls_{Llw@!p9j6RlHSS{f$G zV}(K;acOeiTb=|&(Q$PoFt+skmp#lkuRK4ou@4EF1Hpdl!n^bGFz|m|JN00ocYatu zEj1RB<4t^atHOa654fyNJNka@p$Ip$8SEU#VNm`4NWD|l1Z&5$LADFaYK@WU?q#Nn zW1TAc3Rzhx8FAmK_{gXRZTn9UDx*Zw+FVlS@(LDRj~#IFh7;b zpz&hOOIIf>3IaFR%kbbGwYA&28yveX(bH3@TIVff1DnT9W?f6qJp!IA;}RW)TGhk7_EAC!y z-F9sW>4)?BcZit{B@3R*9(GqRpvSGx+nnm%bzWUQ+Po5$XBoop;JD%M-=Tw-mENPEV}l>|A{l`wnqF%Io`SB)tjoOH|X*Tk&>>Q|qjZqezp_ zE7^+DOBE{{?Q}z9o7Uz7_{N2{+?N>ec$4>`NhHpruGexgy7Qf@=D-GzN$!GJ_p52V zsHW);(5~-?R)nxED8Bx1HBo{d_dmnO46w-G+gy3MVI^ffvxMb!sHb`p$XFZxGz=+qQ?bp1eO6 zf7ZtCIeKN3+P--+vX(FEMsv}X$6&!4tz5gf3wF4DZ$IWlecW3DzlB2=EYQ@^95r*} zt^wX5<+8>jp`+ecT1^k;64GM(V#*=3;%RxP=$dnLQ;8^@YAxA$3;AWPV>!a%e#@-G z$-_tIF~a?td(I4Qte)1xZa@;^%9ts|*!_cj=4Klis&n|zE>E?(rC-CX<3%mDph6f_ zGbKpb1Z@@E>kFOTW1LErId=fqHd%PB$kzcpD%L`_JTUuz(0M+zL&v+<1Xp=!3Kwbi zMDL{L<8%TrT1ZNyhH#Z5`Q- z3QNe%c9KxqtC}*(WZ|~dn;FtA3;j^CT4(4>--|5T;7nA?+*ZL*(Zz=o=T~h~v!qg~ ziccEY$#!4mGHzpjSjhf8mpeUGjpRXM*)>?Y{NlZ?UF^hhFtz1<#l#q^*mFa{nN~}C ze1Gb>eo@-PLBx4wmlxCf0%PCyRSLW<_k%L%&jBkFytfUH0tuy2bvW((uFB$r0u$Dg z$)I!XKZD#-t9s1zpHJ{=a%jL}M~TDg$DxhDoA5-@^LbC1jk6mbh4%GR>Gnn6`mo9! z(P=AkHHZzod+@;FbQkJAT7Gma*IE)^9#C>2ju-R*cT@eRFW@Bz&k?15TNRYU3%x5p zdA6Srk1+TGB`n(j#9C5GdD7QM7>cI!9^SVVP>ZTe6i!;A#$}3jvOM1ZAYFXp0dd5` zQcFv}hVIfrgYUk&Z*6MD?{5Wnn>_L0pYE%jaKoBL<-5^3t+IiO9p@~wyqeLBed^k8 z8&@fNZGGOiPGT^qD9sz&%|aR@Dh}ERM-jIQz7rKm)nBts&XRhY7yK`~P-WK}tWqgP z*-OO{l!0;O9tr%oa^?QjjgDeM^jm@3Wf&Q%-?Cy<3lO2CU93pUdm1Hzl-`<;#A{2P z=-<2wJ+PagWfDvYnWKo_s3e{y9`)iNoohmG9fRpn!)#NvxD7xh-8HpvJCsZNEj$Zh z(|)8-tCn?w@Awrq!KZ=8iaq8Md<%QRt8t*q>f58a>9E`EGst=gBag1ElYQmS~o~@cDq>Xb`~*r6183R;{W(lN;mscW=TWZrFBXWW(f{EVQsrm zu<=I_9SfS?Wma=J>>xNZPv3>jsbk2yY}bz!LZN3s3WSQ1ic<96Ts8xVoX=C10h=vW zmt*N{HJcC>A~l~Q{y(z5JP^w5jsM=8s7R$kWoc8&o|JuV%T1P0%DyIqkUa)-OUo@X zCHvY<$U4fFWlV_4lDXC?yTs5~VlWtHerM)=-|74N{r=0$JLf&;InO!g`Fx(wa}q(I z7CG5j7NKziUvPMBAQ}t!{OgiLufLRFDdEN316-bl`ao6~P7aeJY~b-l$i>065?VCO zP$^tbQAL_rKYkt|In>+AYoDY7N*!oY8mhdONVUAVybKSSRAcWvp^ko!Oe`4X%!#EHmSAmrt&`8!BPKbQGg1?Hx} zU4q?$aF&8;lcI-6cL}!h_C7Q1fYSxmO_ng=Fe#{>E}vgzB<@GJMiN26I`wyx5o53mRs`cmYCmLsAMj4EeDD2kZ^>S7<^AlMmtejJ zP|eFpSwPPo^dxewrko`x!o($E@U;WP2dkVmL$ui_)~uGNFe|8x4bU-oYAZCi{~>G|PUOCMf)(5Av+NZ1zGdHo z6ZjQH$&*6v#0+a9%Q$nAKnzv0OWIwp`woWv!>I|dz3qrNFWwL4-$@NoA?(67pxX!e z8C?2XRT_s-V+Hd)g@wr3DZeU57KO#3tM9Pgj8e(%h?}OH{S<`-w6?RuZz2B%Sy5)q zv&T)aI@3-e=Pg2!+Xgy9sSMwXIUBi)3qJs_0g}H90k<36Ap+MN3#+(5qQ`iWiO;3v9jL>c+rIdJw?O?^NrP%>9F+$-8Y;a2)l#cj)U@6`la)*tyOy4PF&e-fR?|b}4tg24{Hx*VOFUt?yE@>I zC;K*52iv?Js}zgD81}87a{E1?TR&Y3bN7~lJ5<4qdm>DibvMWp)9bCrOu!9SV2f1o z#l(LuQ-#=7mgV1l@CF=p4KX{|b#X_2tpX!^XcahxJhJKJ&YUHayA4_W4sWRMH|1DB zcN&7L;rO%mnVYi(nT2+FS)5zq_M`b#mVVtHnluZa2sW!$p1Kpz?QP>M`DHKf@vq*T z?mrLabYJXRa?AJx(DHz5N0X|^y~{@cG~v`{{jtKS%{s+en=ZLv$Gz~!PJhf1rr}tY z7lhbygLy{9@Oiu0>K&m-HqqVOlIu7Qobrsz%we1MB`vKRz_Fa|BK~zeF2-i!i*f#S zN-E;HheR*s9e8j_=cBiFW&V01Auk!ES%9iHP}bYp5oER4VsC{t_e*|U$8zw4JTE=E z<-jk`vjDdqLrGEhyPnVks3=;^uTmnp4o_q`7j(gysvmDFer2i(+&rO;6Wni#^@OJ< zQVR_)xI~uMUH=WrExeuV15v66zWOmKmwKiJS+msNtdP;WZ-H;d6Tbdbmz!**zT`d- z@h|+qjI}j?F1Jp^{izRkAf>+05;80Bv>~wXV&mL#9tR%ikA4Ik>pX za1O3EHtiL{xD(>`ag%hy@|*`i{Z4{aFH*ll5Y{}6Z0n|4r=fGz+C$B0szFF_~EEgt+Ge%76mYMt&bCG?S%e5BSdzzpsek?H7=h) zqMbVYH;6(rpZ!l9=H_$2()^<6QYQVq&n!={&&ML zMz?Xyf6?LT6^9h`uwsp-+&(S=_28C+1|1!9_7Ck6!r|ZQ50_puTL-~@qDJ?Bl&W(F zAi~c1Czr4*9rtuN;P9ntfquCrCr9+qwuXAG6Yn67{PyeRB9E2U3*<$(*fXI0)9ul-b2o+s&LYuviHhMKjOR1sBf;y5s0 zd_;LsDnm<8@hD;Q_cKeozF+)Y5RaQJdfv;52&;)FvH{4Iiyzk3`+w`>gzin*K~@5d z2JgPQ=h*azVWgMR2sS%D7#xg#|0T^TKk&;ZEzBM9eX)-#0IbO$pAot;aRg9RQU5-q zlrsTUrBY(6RJt2nWR@n{iW^C@RQj~3{B((^e%)2ku7H>&(#DwOtNLYt z8z{nguXpCzn@vsJ*aXIRAHE!rn|K%U1Qy(Jd`o z7EChSOjBI@f5=T|!z^{O15QWeoY*AcMWj$!_v{g8J*YK!gOf3GUx%8v^M z%qNLQI$4(s_W4^>-ki1y4fFGRKq)!C`W|&s&qeewufFWond;KfnnV6d7h7wESz>o| z+z5m7YK&dGz;}3U756P$!YQMwpY8DfKWJPpZd|QGxV&MT0I}9w)HIo$*8^x6zfJ=ov(U)ffnmjz{qIpVpyb) z(nWzd^S%8pgHdgY7k3T1g)u)nKFIklk#$8H^yqu#pI_Rj0g4x!2Q0!mN15@T9rIN? zkMaLS_8G+F3}04E2<6uhvy;-eD&u_o-~6STKC4dhONH~J|F!IW(bD6u<3Hu^#pByl zeb`zkUc`7hKoNI-?GKwKrk(G$+WkuA*IjQDL=N(We;i&pNO@hmZu^gzK=g{%q3@|B zVdT<|@^KTzwVTb9MctF8$;Xtfx0$H)b=Vq+3*~HGntLMN+Opkr;7T;BtheoBQM7E) z$ByBe!E7rq7Ya2qcFi?dsjXSjU4_O6;mOI!rrC=g-r~iY`7WFJq?jD4A?hqxJY1>% zr6n&wQSSW3pr~(YuS}1b3ev75*r~R)2-wEVHu)Dt#}Kr}*24}PV5XU7)h<|m&1{B+ zzWavkE_Y?WDp$8s=MIcR6msPbAN{cwg>gCOtYT3QQHH=Gfgs+vH^{fK#65uGtjFY%BJ z|K8wIHM^U=sG0_(Fp8~Gv}nV-MX6lRoaqat&s;Wcy?W5%XIxq!I(GH4V)cUhE+bOc zy%XoA@lIz;9kPU)-Mog{(1TlR^S=cJwjBChXWFbGN&PSD@=K#tg8I6()3cQuYKYgC z6V%5yj+o10#quZYP5*g6R`DbhW$9q9(cw=BLsj(;T_Ee97Cw2$(4F`^s$>UPLQ-)( zKa{&oH*ai+pqFK@dYu8b>s|Cer>hv>s;|EB$3XQDl`;QKGNk7*8Cj|DdZAVf?FvOn%h9yQG}*B6Mhx2(cZZS{6_R(_Tz6M3SBtsaM;IbpZ=zO`aXUJKgk z_RrN<8DvKDy=AazcY*PmsKa6~cfKY9uSJXi_40FHZCD+e1-qO02 zq>I-^>`fmQ{phipWGsF-CoRn!88X}WuJQbp8I-A7F_v&x=$P^B1>F0rYQeb{Uny42 zDc_%mmF_V0JQLIU*?$$qEldX!;@;T={$wor-R^M-YuiGaq;B{gl7(MF&n$wU@GMKQ@~|H)5AEu`@1JDy17>< z2}FyK2g@jrGE5WnED344qQD8+?x-HOUeTkGK-QY=P&;y)XGl+sy+VfFG{}#-YHZT4 z2oQuml8&b4E5*Jp$m-bhKN}P7y!qXz?_cO)#`#jb`icbuKWsnMT3-Jdl0KGM%D_un zc8;wZ%X?tPjpW~;XZ_lPZ_!cv&@p@O-yzezP_s!Ld+%Q@J5_Qho6({!5aP)$5(wGs-;Pk!d;iZS>}` z(zh>buSU1{FW!KS>=Wwj^zh7e_D)tib!&pQ?7D#7FB(?NL}Y+PG$KOy(65~3i|2T+*x96QS{B~^5S%smU)3< z>=gdizItfmmFzQ3qge6LDk(PVu-n@;xtYES!5XLV$}^osPPD1eUbU$bY0~7yfo3h{ z<=5wF!;*&t_V8iHgg%F3T9t0B)jReq{veTzI`dpekpwpS{Sm#!T7+#U*=(jQ0ignzVu zoEghF9sS(9Fi`~j7fe<-!kmWQ%pCS0XW*@nZ6($w_w4_;{D_!Ooym)(eTwkcYNN*7 zwq+0(4mOt(eKu1{F|B7_rJ$!O4c9ZpthDlnMkW3A*cMNX_Wo%u->$h#{B*GqrRi*g zV+Jo&&i=BkSrcO0TT*P>7MfxDTD$|evuE%Y8WC=da14w1&|>>l5o&M>`54<22VTUu z11|*jNl?*6>{Ag7+b7swKF6Hvkb_c)L;f4jX^gr`q6*K}QKsn2E~!E-MoguM4$2EK z31Cta+$L#8*pEL@tfiP$FJ_)485xxzmNTmAd6x4xC1|34Xr)IuiMQqfvrH0CYCkM( z0A`5|6Zr0EZY3Mf{?H!vFsDJjvQVr09f}qGPXM-aFWa$2wVU7fh|1QU{6zfIxUr%! z|3`P&_Zt_oPcScMfklSljTRCR1_vFOJJV=;aF+Z1&^AF~TqgZB5=5jy^qW2x4NYXN z*0}x&!M!a~NoLHUXS%Stsee^3-r%|zSckBSU66oX%q>UaSI9VxbDyXt&NQ?YZY&sFW96O3t`t^)?ubi8;oe z@n@SFYaJ`j)0$byyK6b#(>=6Atr#l_!(zHPPrTd$Jpr~71yT0e9SAK=v$V{odfR5- zr}d(;$X5!r;`CK<>yBx%W4(?Q><=F{Uun|{u*qhI;SY!e^I@(YYp?FXp26{iH-NQM z8YU1am0;ESs->5N{$ z?3o)M=FXga9J1*7w_drM^Egv>~u+=%ZT#A&*uYa@ML~mNlB~lnmlc8)N|s zOlCq0IKBu}O2T81>^uN%@iHv0^M~Q}i7!0hctL3yd4zThIRylAkljZqCz`X<<`D)^ zVciAX?cm4@WIGtvL#Dn{hO=#hsZVjY;ZFTSJ?_+NN{#h9lKp?oN@WHuA4S%nF4WW- z72{%cf*BmgnX})KRoyZaV4da2-JcT*C%OAG_#er>zqP);(!?^L`psqkb-g>DdiP{{ z=VAYQK~LEs$R3(59KVzDjqb5S^*%#_q;cyLcfFPu_Le!sBBO_;A34jrm2rc!yqVdo zt?Tf5F>x(D=}uQIxO~s`8P+=^(*0?zkU_Yn)}cT5AZOVh&CpqfRmKjvoW~PU&79-% zpTo%RbT@{xJK3(g==ITzrY4a6-QbK9a+bx%Ag0VW=6Fn?9X>Wrn7b{W$%M8=0&_^r zsM(J6gtLqeN<+3JEixsBCdAh+XP&27qK*^_<;$)R&K#e{um+}VPy3R5<1&5AD0A`i zBA3XeROX%=lJ1YdFx=_hF;!{^FsZ?$y`L6vZ;HT1&`-pjOwgN8#CE1V5aBrZ{#!b7 zllGPz{MytPp!M&H=wX%gj2VVZa|(zKNv_XI`pq`hh#t-oa@eTe7X)xkvA+4d^46I^ z4Z-nbkpKfRT?NXIglaf~A)mXsGJAd8QL6opSAnLZj#+}J!cHHfJjYi>abWK)35d5fC7ySH@K%lC z&*z)FpGXcwg^0Q4pEhxx=o?r)qv(I}^{Fq9EJ?Ks5A1DEQAPGtA09HH+Gh)?X0`op z(PP6Z3$1c-ST@%cW@Fh|^r@p~E*onuFwGwI>kScum7N|^vxX$1B-6xs_4jL4;rMF1 zM?{zNZmnpF(f&oZ+*VZW4Z;uh*<9!=t^~j|uB7OCSZqB#LYm(VLwOvXI?{hr| zTZ}c9^R^!tQ+wi5GI!mlD4_M~S&Qvtnz?wCh&$0hDrVyxW5y4B+*LgrZ?T==Wypsc zl2uu+Nwl$_?{OpZjrdb9Z(EjA8Gj(YQ^yCt&6N1P0SZ0IH6BgbFB5XkzZ>>g zUtP%M2_J2!7%z@xhr=C=MOPo8|G}J6x)}di;>r*%(SvB)Oqea&n%2qaiSm9>fr%Pk z-9$Sk?R@;X>>adQrs=)fxouwLOeS-505o;p$C^bP*hc-P@c8_e`_mIr;s8|;{xo|h z`8nmjWa`q*FttlPcMR(lvQzu~X)iYMKCUC}c&?HaUG3FJbFY&4|6oRNhixkFgVK-S zBrLVE*((Mh2Ps}$p9fde6;Yha$9Dls4|E{j-wFt=6535Bu1Q zW|A7yLrZ^6rha?2nfGz-cion~ot64uSzx6dSJHQT?8{?U9v&oBx5e*pX-s#b83)t` zuiyI#++33oQe6^|7mp2}%+vc4;c-ljRaWMKJ_tLkoyhzZjoSS|b6Pg9B6qv!?ar}D zmwjOWBSFM3HymH>#@BiFehfuADy*>WLqzE)b2K7*!kS)22iEnq)M)lcyXK*fNsphn zzl$>Uy`Zj^y7k9m&Aa_!f#2*aJsfl#r{DCglQgwAJ^(P!eNjs{yJ9;JN}YM|TwKha zRa>HDyJ~{^;Va35jZ_;G+xtbmanWn#nJ1Yyh_ye7vK&HfDE({!m|=C+q>N$dR4k{G5{ zn=;-a_t(EsiF$`YJH{HKV!Wj6cEEpVbqS6?vRqRhPQ#@XMw~qaL$T-|>!X{sflnM; zXAq+{W<>{YGb{qz1u%Ib|NZG|Pd*w4*Uk(Hnx_D-c%9C8!>H{0JnCKnW*?>7TZUF& z^ZzV`>~)u8Rqx=zUZ=56(wgq5^`m_g-+AyW&D8QJ{K6R8bAFf;8#*N2c}DS~ZHSH8 zDrRUxRw*`R%v$^fvd2VXIi}-Ap3!_3Nx_At= z2U%p(tD=QG;q@T!uMM^FDDx8n6rog{>CCzpwQ0)ca^`=21jA+KP;lId`gI+{@!P*S zM+M=XJc_VpQ}(uizz}PCD}`SE-5tPna2!;`GK|zWLG0;FwOxA3QwKm(E)AXB)G~pw zUGg!ipPO_4^T=H>Y4=_|Bc2zQ6c06>-=gA=*Vl&a`4%@m^(wRa_;dqqMAAJF%Y4p~ zb1w3lAUX@KqAsv}S7hCCSvF0zEP+XdR5C@cg8$}pm^sVqEwE~Czh7wo0O37*YL{fE zjPsuiM)|7ODDa?62OFy@}}?PEjs5aGxX4im(4nSMWrQ zC-0{8@Os`4JH6XIcUJ^CYFXhJedC>RNB?0vj!k$2+dTZ2k$)d^EnN`_KR;67#k!Ph zas7BsrbJmy{FMh5w{0YDjc41MSU!CAt>j$3{7&?xb#~cU)WP;xT_sag4ma`gpc(-uDo~W=n=FlUf!cY>${J&u} z8=o4?(~(BXkpE{5J-}Xq|BnyD+h1uiWQxPW(;d1H5|auac(j0l4JX-C@4ffN)1240 zD5?#D|L+0$+B3BJq&PgpK2o<*5X}6}_H_fVyHm4E)pe|AHi(ZVbAMSx(Cl3{b>`(x z_<8lhZPc@HctrFLwFjr``4Q@Y>!?OHM;MgVt#mm-uQi$q5fjzyvpqT_uG`fZ=GXKG z&DaNRPQ@)&yYd)Xx=faBki{LA!BV1PSpp8-YUm(-i_S4#2Rtr+DR--S!i?3Ik=uvy z*6Cl4LTh5I1_MghqEhXpEZAO*CwF? zTa&vs^#u(Gjsptxzvn5_s~ znge>lma5aTp|=0Ju)iBYeopH&H^4LGNAOUv9Kuy}7N1d!Pf)=(ySr70I0h;zTm}IF z)>fhM3@gkg_JYt>bh?V< z(lBSy{_`w?LJCEiD~N^EE)1SU^IQ~UzPa)$s6cZ46atJ&`nL-Jwk3(Y+U|c&u{`0g z_);?3wkfO(hDf|CxUWQtW$_0gJ)`;duu0u_vw`ZnHcn1#>L0uu`II6NARD~y=OzH-bb5wBiIvzK6yZi%|RKC5i7v|rnkul zi`m72khgClIASyj!6B`;oFV(7=mBB_zpzX)@<8NmXC#a!Cc=~u3SIDv*Vyg~!6G}B zSHAKX&ZU7v5A`KN^bn;oUdxKhDHNSVqV~xS1b8`bR7NnGdMkv{?AjREcfXL(_ar!c zPoL~Wrrr6BGBie&R1bm88!L#YCowl|S1=}T_L!yZjt7hyDc|{CEr%17*qOeEk`#0~ zd!8yl=_=?SmHdlCxLim?V8Ja%#4?AXV1(6O7GG(Opuk9TE((0(grLAkYwm|XogsG` zqAe0!U_J)Gz(I}C=HhQ`V$C3#Yel~#wiN?yFjd*&X%r=f7Ske|Lx!aOKp_?3+3tOYxge72Eo7MWIeXxxU~q-AYJhLG&EbmQ z=Z6Qy3bnBoSmUZYR@H?;q9jwoF-5dT2;vh3pFn(~(HKG4-w}ahiPvB_7Gh9v-P#>6 z{(HYW{4UH zm;JSdv2RVeE?|ZHD&Z9LE5ILq-^IbuRk)h$q+d`i$c)Qi9XbQAX4Ii$qT|9!Ou^adswVH!JzUn8}zq*f~mrBkK+(=#B3tUyG-; zx)i%%JOAKtOoRr6WBN@V*{>R}DIxsL;uDy^DVZ%W=fY7v5yY{TEdOUzFyB?0=?haK z0Ab#d<08xsVJ=bQc^P4E#DpQ(>9we-|Bg%l$jT!gx}gHuO9Yy(!%Ne}QW#<|LkZf6 zks+IdLWT5YXriPs6Jx+AR=>jrS!i#31Z=^YVm)-OFy6z)T}~3Cc_GcaXg(277(-II zI>`+Z*$ujfH4=$MvgzSYSwc;Q<4Q6u6#GPgI9>#`7R;-e1I#dWL&7mHgz50ye1Nr1 zZM+;|(>*GAjkBPXB9I03MHcC9aWT|gupIsthG(>FXsb|w4VI?P*(&f6KGScl+4SmY(_H%f7un*7N377=%eBIUaIHNjJBrP*iuCf)y&$r+5qpIk}n9{w!R^4DLspTSQ%D-d0OQn@NYx*MxJ#S@l?^xT&DZI z=xDPE%cl?R%5q-}c45-5O1Vc)E|sUU{J(0yFS(L-%u8QWR{(@pKIEEg7sYuYBM?VM zr}Y<5(()pXg3}bl)2pbmg4aPb1>UAV^bc!Q(B-mEc`+Mad~YaNbPTbm{BSk8Y>>2) zaFY%3TK>qMUh@Swl@l^Jq9U~TQCpsHLUiBR90@pNP3>%-J@8W=I<2ev&y}dx?!SD; zXt9-@HhnEY-f46l4mA2Mqu+r@6SU38yEC!wDdp zE2n(xFxz=R&d$`GJpCOue#xAuK&R}BqPhG*AaoEBungPPbLi8 z33jTg@I!QdK0cYIZ?>1$tS-_Y`jXHDyKCA#Aib9{)u+a0g|5g~oZ`@EAmg18=cib} zNz^@g?Tf&j;_o%7JmIgqQqmOgg)Eju)Z5p!zIzXs+KQm5VQ_3(kh-$6w*>@%Y-T9s zPy#hBLaPDL44kM{4Drb%MOX<%ZrEV zvu8)X@eranva`-~-xfx-_y^1D;27#nZL2n`3WCW6hALWPdVDvqXL=3_wfX(atKQ?v zsMALTv!a5|WUGIPuxzi*=TJK-46OS$K(T~e&8Vd8=Y++{CzAwL6-*&;RYmt5_# z-qkQT8%_zD+E-uwJt(|wo zg6y12V3knCcAyk6`C&9vx5Y$PVXR-H{_6EOYY{G(xXtEKs3v0-d**)1Sg-?IM(^sn z)Nzn{=1gX9fM)=03k;Xr=S|s@$q^gP6c2P>6a^D&SH7G0oRcu0q0II3sKM*1gR!*c zof!_LfIa&zcOtBGsJl)c53N`^U7ylgPdzX0#n%bwhxh%4%)TYZ7TR17mx3%{gjB0Q zYeXZ{?`jnQu-_%+$x>BA;%)C5ull^M{JP4!e&yopYFA~#MsiHtf!FU#M=IxX`$oPs zIk1!Z8j@qu4Gk|qp78Zi`r_SCx=8SyXi?ec3*T$BHD`5|B+`J`32f~+(z`=_pIPVio zCOnVE)_4HcizDos4H&J2fhXOf&%4!3=P6{4Hn~O5(=3=L)6dKN!bW`@lBl=y`P4YT z><@79qiJkRs$13L8vFlHHSc4rMgI0spe37knmK@ceQ%Z5*q3b&OY7Owr!n0ZnsE;1 zg(cDQ#I@%e;4_6(BAz@@U1u5H`8A!99K2x3l5_o;!mF!`KWsG&IqGm>Aj1Pu8Bv2K zR<{G%hto6anZhY(U?o07nE1XceVbuh&`F}Hv~hT%7&C1{oDpzxewVN027vPu+UC;K zeOl9f_JWOzK6De6Y9nJHRWVaxhU~3C>BiPdygYQQ^!3V*H_{Lp>fTqF%yX}ny~2k* zOmUV)V=TaIAVoHjf+S4ZwOe2yMh`Cg1q$(1NNBtF4gwGT=8!fg z_&7)sU=C8~>@Rp|d=kM+1{X3oz?QklYRtII3^wJ&d>dN0F<)sUgc-{#yREtC&*j!$ zB&e%!jSO$(a>cM5)$oWqdBosC2=7yqAcoAgQT56Br z+x~kTWM+Z+I{7_R6P&+^RH+K^)#3PXZamnDlkW)%z_jAer7w zVk+IM8!HC6{V^AosPo9Y7xw-S!gAPvQ}_P>wyIhLu>B?o0X7^X^+WA)o&{$_&esuM zKr|9c0MAgvew+Da$E$*f9V5qIA}Ps`UmxPQAMO`Go@{M<3FRrtk8311J%v(>V9smB zBV|C6i!D09ha(~TrfrCwd{vNmIFf7+vjb5KnZRE{gGY$XT(0mSv*Wr0nVqZ)$XJxm z+_NuYpPoLfabraYu#*Qa=w-)31O`xV5RqpSBuiT)993bsqr|=gvb;g;^))9*iLXLV%sXRo#IYCbA!~R{Es4fG>bBIok0Q?Djuv z?pJFAnMaU-$lNh$Hkb94=(i*NUOkwj*!4Y1-_9zsM{@$ZauBfd08hy<5|&0xZbKl; zTT(kyu=rc$j8E74&7NuRE9oEKHLoQr)Gd>)=X`u;FERR;s99X1o-F^klFfZ@r$o+& z^}jyE-a|fAmJ`huF3vKe|3%f@{a_AzoRhbH_r1p~yxB0N zF^X%fjmU3E2HWqUWSy@CnuTi6I}3liQS{I%h7pg$I0g26AI2vt?z|j-j4;x=_ zKMdxBp2V?E^WBFR?UnMBUs{%T_Yt@17ed^sULSEQ14Rd9%{6i#l--Fu*!dUoV5BIA zBU}7IposeA1^(2D75YqA#cVJP$ra;g2W8lmBY>LZXc;0^4~WVF?GkR$v3YZ?JzGmv zASu_6FnWI8I}t{2t0Bbb&0_jWC%c@hh$y!hVO5Al;DOIzMy=+&}aA4}EE^CgR^B=@~%Uk$H4QbnY8M{++W8i2@2Nwtiy#30FU1 zGY9D>*3t@1gX}yQ@ zX2qgfhuk%@9l|~jq6=x;Rp7H-yG%K;){1?~Rm4*0ts*hU+X@y3vU?TJY(9J@iGGM2 zWbmS~q(8{3?e5?8OL;(Ix##Q?-vFP`sBGmO`Qpm4#=;*}GMTLxeBnH2xgSeLytY@# zWV6$mer(L9?uVQ8_OIx5E|uFz{%v(&IosSAd{do{F4TaZN@=FYfwXsRYv>_)@=R zWBx+ycWb7`d5ZVzf~R8wX`TCVZ3G`{P^edIl#k z+>Bluz}OH-M{PjPgw2oR$sN5R0Z3q5s+CUjH-{4dvxKHW3bhFCubt7sf;O@P5;T$* zmr8KCNRq5vZkk4X4?kHxeXBd|8~oKkd72UWiCz9-%1~MQ{yO+h{Hjl$oZE~eH0PT98x8hLsGVx=qHQ)Z7upthWmV6d*di7RX$weK3X}1lC1#PoNFC$)4`0DK@gNd0M7#%NDA}MVOzXTCGS(6w3ZdXu zL2EJ@3HPNajy2M5aGoZ&PiwW22+KPcZ#ii>7q2j$cZMkO!qVD;ay&`I5yGpusx_O_2_D+~Ni|#a zrDD1VL-W)w=L3-gkl?x+q0>q7u#R1OsbfAQ0LdICE~Sh|D8XOV2rdo&`b(bJGym&d zi_CGC8qp0fXbSMGs?hlZ?#8;NRav$ZT zSCib>__cd5Lo6s=;qKp1yw9lg9_kC(%#$y*I250RK0c;Ne4?EC&i=i2ZXd{LE2(mV zQ~YdD`VbznVQkd^=AUx%%0S**sMNr)4}-EBfn5+QNAU=wy9qpMu6}(V-;qLgD$Gfx z5s$({l`kD1u-&r@?iRhEIIE@na6Ub@+jgT6h&{G4a*8> zoz;RJ)6nH}A9p!1f*;nTJp^|GsOY8C89koW+eE%()%L z>^fc^Ox`VuknMvs+E(^Se}Gz#FPNsCHvSvJfrV(d$-@Y~8l{yej7V+-Qyjg~%gB|) z?m2ti6!ZtuOkG{ItM($?!F$h}GBC-IoiRm=H-ei3X~VxX)2|~35hmIHiso`YLOtdG91B0C#MlybaTK7ilL2ys)iaG5vBBm7?Kg1Ke-*rfK41iK5RE^ zMc$s5zuf`0@`y`^?oiKKW(?}UQiQWb5dYxye)Mg&{Ca}?5`(~GZVie~DPIcau ziL2Zv&5$Rto=!+MW;GU32TquCA9Ue9Sjc@a=^yAp(|NmnN~1VuPUANZJEyp}=FX(` z2C(Gc+VqT88vvmv%k_q{xfQ3Z1)KdM5sApATak3rge#Km({WUW<7Aefs&c*@XZOx% z;Ql7Gjf?Gzxe3wsIRgaSm$@J?WI@{m4zn|UPeQPZTod<|`dJWsQ;T<}aY=xiPq;p^ z2TB6kuCPik?#!135%J0QI@pt=FQGz$3$92+J;2SjT4o_0x^M~cx|?a-7SAAQ#f+y& z(p5)61;QF*ES0Oug_<&KiMoy%{NYd3bT^WdUCl%Ck0+ZE@1Ka{uBQ{odRnAEC=0KJ zQnTXkp+rrPS`;n#PbDN#qjOXXd1+}U_oYVghd;4Vw~(QEd_|l-xELAQ$(zW~COWu7 z%jFKuE*V)+?)^v1EjSuPY?}wNjHdgzExzZr=)-MsoZDgtw?!P(BCw0^X#|)FdO=;p zu{>zbYm3lUfggn1W}OTLYly>JO{_YLo#Yf#A_d;gbcjgX*fMX#p!iW__z$$4R)#(o7Hu#*yIfm z`%DkACRqtUXF=*V4L>1RcQd9r-w6M6vBo`-ZxZQ1OHL~M_<*lUebMjG*~3`t)9a;3 zUi~fqFlRNutg>kXn%|uddhb54Px;DiZnOqlxJocl4A#{#wH!r?Fjj=^Aj79J%tON2CHL*4SDl+O) zf7(pp*dChQYO<0{AO@wl?V!A7=ojGppr`>UNU0Z+Li{1BFst^<8TQ zk2mwo+e|XfNf&h`y?b{U1fq^I>l2`=43g5#I%U8-GmejPbzeP{K(OiPp`_E#z!9&? z*ttON88}p1Pp{^b;HaZ+!)~3(jC2D@}O}rxOcR#5EeAZVk9idbq&9R4_dO zeTu7Mc}xetky^NB&MpC-2~EZ*?|XBKtu~&<7oL+cfnfn9-~m)pJVOu6t_4-jF9A8- z*7p^SC@!gudAs0ADr5wS#lmynw|I6CE)=Y?Gy1a>q-MZw6E;9u3LFR$cR8{go6n}X z2eFQQh*MXN$&heA)!`U%bj|A}77NclsZtB|X&P>twrJdi{ASe-%TDOABjBnyP#FyW zGuFBsk=daKqMA7+rv7&1UUU|DDnL;I=rhI!S!L>B4}CAi)?ESaT}7^WGok~zdU9`2 zmmwVS=}#q z+#e&0?W?;p{Ngy0@-z(n2YiRr>p9W*m^QP_M{`>k5Kuya?Ma%DDZG{CNR0L!;e*$9 zmu0$_G`kv|z1@B-WFh0P0NKcgb?m~^NssK1UPNC+|Lp78$EFA#7q?fu>jUot7bJ!KvOzkCG4fu;tTh{0b z{>~$qn=uSUiNfvrhlA%fj~I=F%HA{u)NvN-Xvow<%uz_F;w;JTn1;Cq zC~uejhhfpz1~EiZZ5S&k58m~Y ztB?kmmp-xJgq(vj+!iU^7Du@)&e$O*tK0|VWL^CmIazUg5|Hy-{T_0DmvAL<6I;2_ z#(pj!(1!p4h&J*Rk$#6cAaA);54{D51Jzm)aiHZtn;~%^WAYGG=el*K{bH-?O~7$W ztYsu~Thv!VTCBN_wD`FJ>9=|$w~KqA5W|dVhf_jwDJR8{xMM<{+wWj*zggV3>^y1Tv-48`9{Db+*#G%%nLSowu~`>3(8J#gGje#FeJmWXCil5ul8t-BOTlO z8R?i`GTgDS#YW4{#eJp)%ZVFj8CgC*iS7oU+)0>%s6i)WWLsO21}YPf21-tFM}|`7 zj!cC+vRmAd4RS|DM3jU&8Oq4WJYA5t$dQn@tfnDvIf+8vg0cCJN2Z07sL$S=1aBrf zjweQ6wy)7My7b$$GBhADrGH&b49MXuZYt=cMfTj}q6i%>iqPevh|~@QMcj;sfD4m? zL1!If1;ugFZcjUr?{OBLV%Oa!Rrcd9iRPGB7F4)`yiV39ozqPx5eqY8Z=G4Kd zAgaQF9z=AwV5JO8?%KUS!-_l|68AwHGW4L#3T`%O&I|}~4Z=hGY`MQdbAKaqa?~>8 zc5~lfjk$3qpC=w3VOKmFJ}r`RqN^%gxcNNF+0Oxiv+e&}LL|%zrx4sb{RP3jem9^8 zF^jCd#i4Kt0)_vIRBGJ(4AvGW1(BhVY+n?4ijr(co`09>c&+7m@t6USjJE zyaY@5kM=F)g8#DkRH}`+$}@7X|4;EXZ-M&~`)19fmOLOwYGzTtIU^O9&Yp;OX$>IW zWm$!Im){+(yH*2ted2{*xYAe|=S!OS0Ly*vhaO|Aa(7r}Q}&1tBQ2-{Tme<7``zdI z=fDW!pX~?Q;2mRfau*j^C~;wcFMt7&+Ec7$%+5SwWn5qNQsg+>XL=5m7<$>|N?@xP z-BjNBVKc`3GSPc`aEK;pLOL5xX6ksU1Mds|>hzRy^5jQ)Sk&8W_H7$L$QW30Dp2e6 z;d`++I0(f5OOo7o9gbS57JbWOt*9^@W{q*@Q%QvgYm6`J1hOOcY1uWfE3mqb-Y(Dj@H-%Z9P?zPHWolAUR1hC|2_Yq-TH%tUzESTBUK{ zVrL{23H_Y@DaecVwHs!imFaQQUqji~IRy7j663a2y$*N13yMGj+w1K+35sO}J=5qqIL5QJiFWMc`Sm@`IE%YoVl_CHVMi zH9ag)IeAgcAP>~9R{72rAeQf$sZ6a%L9}Xp!RkUV>KLFiM80ah*|;<2&w2kD4B6z2 zJniwuwd0)W8N_Xs1b-PwIXC$aOfna4B2lDa&eAkO$BtgCI0Eyf+SsI92M{r5$V_Ol z3%!9uu-%TQRnENye?inPnSs3rq%Tl(s$*CXI0}W;x64x)w8P)vV+34D0u}n@&u0+| zGzmL~ufu7f_(A&06hcYox_Gi(7ox5+2JNewq<=PT;fAWjfE5@8}=yFczmv)?sXTrLPLuKo9T8iN7dqJiC z4M9~bL3d%?v10}x2Ap9Grc(s@Ai11(ul`I~B%+pkzO|aoJd7Q#8H5`Bb{ihgNWbRsM2iV?V|o6#?!mV274D zVv|ADw_!x0le1oujDev8xNd1t(-u*BTD!k{#DF&`tKLDQhtL*PSP(OiHUL$m1!^@j z*N!Q@7jNZ{0WD7l%Z5rQAPaN00<}#P-v8)Y0T`M4#~);ZUFx(4d3u_if#AeQj2VT` zVCFd2n^g9Np`Id(pV3d6*X%<&6EYBk+9n3I7GAY>`bAwPv~2K&Wl~_NUB3-x?Bx4C z@7I4xDX?X(UK#~Mm>?G*K$SBFd&~@RK(+-|0n20hf`+0&L=Cw&DH!Bmk4WEr9gsyG zxH7(z-<*@Pt-@M2E2W!%VC(ed04^ga}9K@s+!+ zK4Ia_xQD9CHWUPj2Ha-5A*+3VH?uT!?PW<5xF6>awuBm=Iu^$C2Dkr!O19f%!nC?4 zorVoR1IQFzqZzzpsCGX}{h0Idp|4HJ!7|{=9bh)_g|9|bsCJbCGy3A|nWb_&#z3V- z2XwtaYI$!TA|52a2yWt{JKJq%;UkCj#+yAC{mLZ|MTx6Y^7Tc!dj#Q<*W_d3{0 zHJE)4sE#IB<%mZ4%+ltNgy3ZVlL3Z)DL8bR-DbVVtJIS0#}mj_rYUaCJyluNr`Vci zP4sM5WIQAYRi_lkbY{Qgus8^RFf6(f<3ZeqY>8>}O%ji;6pj-{f zVkN~Kp(WKkDOWlbi+8BV+cA!(c0VK?89fZ@ser_XusU>y?_TW2zaTG^6eRQO;;+AUN2p{F}rp7ND8e>1k9VpTC(r~orMet6}9yp3* zNrdoe9NjIvZV+yj`X{z?r~G%PVYS9T`5R+FQAx|apw?o0YYXS&Z)FpRs>p{cgdAb* zYrHq+Q%xF&ZftJE2)=Zwl2}a7`e(OGoRVc-c9(;xHJPvKvL_ZOcun7zMY;+@B`q=x zQ5Qslg;JKY-UO5#ai-%+|J7x`6b(PX9JRuuBtDLu!f847vQ10fVMz%#%S}@8r{|Id zzQ@{3-@JrcQdoF@Crzmra^j$AjI*^OC$qC&i8&`PjZu-|TqUF{f}o}ZEnr*eFfsBD zSx1|e3YW;2uu|@R=p_5fA9i3Jlw}X92st#4=>1yNn~lQ{lC!JI%cHKzoemmXIeqo6 zy%VP_Q;Szdk#iXhxTC4)15DF9{`UuB+PnOb_4*%cy6)HT;Nz!6-y)JO$Br%VBYEX< zM0~k?{=QE#gfO()@@PJPkjgSHjdj5mxHhViygG{wkaK#dG<(n6?fFIjqMc4l%Q{kL zWfn9YTe(wcu@3C85EF2Z;83>-(Pt`pq-!#(j=JZ&0Z+WV=l}Oa zM?*ej=nmpgmtt8%U4r*w$4)c9F~b+AKYSK21uJomVM~#T!d!8tJwI2RS@{5nGu77W z+Mf6dcGuFE=fAh*v5^NK0MLAACTiyd$CW$l>x)5o)MaG>xtIz(NPATo< zbgD(261q-9uT@F>>mQt^G#c(bwz8--R1H+M*!InC6-{J(nqzApE|ClDbhyB-j1BDA zdjMwj>1N)R2w%0%@E%Bx51|C)mfM%+5f9;D_Imv{X~?!07wIkoVX z?CCS}=~xNp=Evu2_`~I-3y87b$*<5X9ML;V+kfG>=X~xIW}u3_zthfcdlI-^r~VYg z46MF++UU`|=uiYm1j?-n0NqZzkUzT<)T;!;7U#FfD!;D6q#dnDTcB63L;f$A#G!K+a6c zt{jHJVoagF*CBQchoA1EE~f?P^07-1duFIwomNPR7HPEdKQnNZ4o7vLPIhT%gA*He zP76uU)qXS4IF`;Sq#vKj8yu0Mp*ZSX$UTJDw@q^xlZSvcof&8|-lDv}9U6!Y)=#1V z2}jWboyrp(i1H(eLEHQT1{K({Sjx^W_?vXPb)q3e@0S;Nl_K${M)@EOT*bhV17)Vu z71mc_bU}T7T1zqmv8WgE8b3s6Q!4vsKFfnka9#qU}j)&V?g0wjFZ@_8VdB%P>%h)q`KZ@&&i=4x&aO()e?r!G~9+ zp%2E$jBkv;Mki3O|2?>IRa(EM*s`~6ZOBUq_hrFupX~DzVS4pCeJ4rg)H(&!Zmd7S z667d;7`;N#H3~ob>)92Fz$)hjR6NO&;lKIwSpR1|!KEkBe+tIrq*P4v5O{A0eY!g@ zP1cv%xwiM2?tZ>z#!%7JDoT&Z2s-AqL2ICVJI&3#`S=TfI(+f+XO7nQvT6BVo8IS9 zjqoVRri?fw*VNOwPMYB12+jhJ$N%Jd-RvUsULPc38`EYjd3b5LSIgya@-8%q}}ilid9RVpEuk^5!6 zdn<~Oa*wSNlF&^oOz&KCTZBa}F)S8~nVDg~^V-Gd^ZR`N>tbH7bDr174Sx(CL^wA+#IZAQd>PI3A=O&iBC3oflpj0>Mw96 zQgu!$7mtQdby!XfY|$1`4ezSYrdBS8sY!+ySG7P9)r zo~_NUrKqy=RDkaMjTJpUZ|wo=d3An5%*jT=^WR5J=O=A`EX%5mu}^RLg&SJie693M%+0EQ zZ=KHbTXNM+?4T~`VRZg#`TXU4kywLFSo|8V2JoRGv3%!}f8^?W!5*FSs>Mh9$*ZmE zPEbiHa#YgHojtuFFTuU0tc7e?mhEr4!M#&Ri~hxe@y&&r^yARH8p`3|OWYLwO@Dlmf&LRe=T-@Z5!rN~~ejbfgf>Hc-^6pm-N zeap7RO$1xke6cQ?aiv`{HsG9m?O%BjGPbByg-C}G*Bib2bYxj(mshta6H|9HPn5tF z;r;w2sipYo34U)@TfgmY{=+qmDC`#-dA5qDmVP2Af6{w$a6rVVhR7%DxW9G+9&AE9=H=yH}sAwwEM*kBG z2Sux46H5N^s)O60N8oF!$%a~+h5xmjxeY}Par>Cwx_?1z+`IcNY(h(8Ro*Jdf^HIs zQ-ChxhO1g$kbJIKH~2XC58}JqROS63i-GlrC;RsW-;oqV1AYK`dL#EKz2#n>t?OB~ zIU#3y3iJo)N|sD>sf!a20*C!HrW|POcgYez&l&d=M3sm8Gz4a?n^!qQ2MO z6DtoMl;2xUt`4v>R*@M_IU3}TtEkM$XCtJ(ZM!IU8e{~MPQQ`kuagY-gR~**sytd3{``UCEAaxup1YR(Qj5-17!$pcx^ykA){ zm*uHAZ*%$lLA}Du1Wosi;?-G&@;W|x*k+%qX`=E22?IIe)v|$k%Cn>K(uu=w-aB^u zrW!F@QtnA0L!6Px-{P%UV#pD(%xR4=qV;GLfu*Vu`Rxs+}X(pHZLSSkAVPu?_+{%lbiQWRtN2N7J?TzfJq2qu8|*m1%L@VkEs#{*uprs62?!ofkI*xP=0HN2XH_ zA5B+p{=w{@l>fSXbQ1lWDUMoFE7YqRbtcOcQVf@T*X}uqseyK-r@DE!`Ek1notK@z z0@%5Svet`biNs$m{uo_g8v@>~$&7U9bEn}BIC0a$(&c&kHq!vfJ@w*pB=OO+IcMgA zKQ=1rDb2Jn(pJo)cyeX$FYT#Mp_EB|rgRx8kY*##{0Kn858oKnml)f&KA97G11s@4 z0{aK^ZgG&20Zw#q{hM;&6oBBAw=N}10d;$M+X!rT{@k-H^x5T{E>`}c*Xq3W{zV_uDRT?mJy#J~F=A5Nu8$o!yGA+=_!=jlQ*`v$YojlJoP(&PuGv3? zZtTah?Nm;eFeWx{{8_g#<-vB1-xzeaNtzlT=*Q~|>EtzAl-*Cgs)IQ;I-*vu^7y%!--yn5n{9Os9h3@qA9%?j{ z%ysv3D)r*5{*d;?7c9L{Q4kIfw{0O+jevV9;QH6VV+yTLlI2ix z2nWk6c=2>a2P^E^51yD1O|81}4=sV2X7j%qmge5rPf=5@6<5{1{t%-1gJB6zLtb`p zf~8G{<>HzZ03z@iz7r|;i)=?vFkEmr_bsqAsn7$lXhRQAo}l|w4g@Tkg^lA2;YB3V z?*=#`V#T>*p7T6rnaE*&-$q7b*H_DL-1Q0XZdP^Fh&fN#oiCX-qeN)rS~Dge>=f~8 zg)5tK1h_}yFk+tqTK+vfD}1cxl)&BS3WBw#vpPdXDWTD0N6DFqFz`sYYsoQ}Ci34e z;Vl~U0+kkfsUBgLM6zd`VWQH0<+m-ABJDC@?!w+ibRzr`7@gwWx6%Xemt=X4Z9mO3 zZwZ60pn4lq2ZDyQz&gF{-}+}P6!z~3`8R*STl{kZT+B)n_Mf<lHjKw!*3(yAj1UF4a!fmapq6r?4&T4z&8neL&P_El4NfZ4#nkFC_24%fEVHt9 zkYURKuP=JG9G%dP<#9=Tlv8KG+aR1{jizxUtaE2IG zaHC6VI%4<^%G=g3(Uo16PdTeAAEuD*G>M+WXys+gM<|Zt4m$__=qI zAe;G8f)6n9$-kv3Sp3a{V zK8+%UGQlR_?uA~F7T(rS9u-xKp_Dl=RET1h5&LtC%1b!S9H(e7!RPKUTGIjy-XVwW zg^TBc5k2IvlQ^qmVDf&yES(*o>{$l_PQ3Mh15Q`G5HJV>1k&MZ+I5a!3C4yOe%Hl? zg13ZCm@+FipY~mxP{)){x1^M6MMW75M`SWE6=C!w;^Z+B`Kdb{+};B1rJ6VW5#1}%&xNrPRW5XyN=a*bnkm{DKyL84aNDgCR4 zNa&d3upk}+%u&43XRwTKG$7aKu<*HU%+u8%S{o5ekJ^OWJjn8GRBBYh6AVCJW%U~iZ&6pE*^!!BS>4otu6-S5%8 zV5k+pf#1WhkCT3Cb2~N@aOG04&#llyP`jxU=DC>l^3Q1FeQs@9;oDTJKTIYR+D(aSb0;u!8%KpWY|vLTg^I%&zgf zc2$Lxi9UYQKE9#hBEL^>L$E4UH$#11M5}Dc&Yt3w$3@aV&mDrg$mY@)uD1nEB)v)7 zx#83;ZX3BUF#G|i+pq#r8#SWfT8bny#Dj@fWZpke(8|=Jhy!s^l z3jiuHuHXybE%-1jA#(PRPD*(y4R6(oSE29$u(c9p1pvz_^)*=C!qjj9bl7vbh=*`4 zj0&zgc=xx!Ae7OtDS;!IK0hr5A%~6rWqw6%!-5}CdLJeKT!1#%p{erpi+u3N4DGnt zzYn9s#l>0d=$wUAp>MY!MnLCIl>BP}#ISogYIa+Zx4HC_BQQ^6zE?6s$0JNHMZe)S z{w_0tlnuP+C-!;L1i&(~EeJ2tD}aMV$?W+VYrZFkOIBU9-14^Vaa)y*HFI(vJrMly z_+DynOmL@jo3Ki>{8ldVXsFIf_=+Ph*Qnq7JwlkeWHg3+db5F#)^LL@QL_1Be7r_{ zlXm=tEz}@6W`}Jet=ew;GGy*AB_k1I=41UE@LMMgdkVXTsnHd??xv7WTrD{t*Bq;C z+agmu6h7wQzrVd;)fnpvzys9l(;we#<~vS>{E%boPQI@gFB})F%rwEVSV@=XP#ip) zv9C?^uNw4211<_GK34u0Z!;)4Dd9_-1r$fZbU?NEGd`;_?&udTdQ$f7BSWT)FA{dgE~jR2%Ps~UN~*(o^I*f%)KurZ2Z!tV{K*}dO;$V~a+!37R9#%>#*dcn zAZ#SKnuwTs-H@D4(|IpIqISY$v&%}al(~rpN6H-qf8+UvtJ6oc+(AKFepL6F|AH>; z(7Ib{_Au$&o#cT0KQ)V+JoI`Bx_WgZ@QEZ^rv%g*6iwySvac@*;!dZy413vfCo#%5 zgI=v9S9&)_@}iveK~Kzl0PPe$p+m?kCjYH1TeQKgmMXgC&u0ab3>%o^!ilqpTOMXT zuezspbQ}jdaxT6!nho1=x1hE(f+*`K#q@U)WIvZ-N`IvUzYOSqpjKbxg;(XkuZ(N~ z3eBb7;S+1#eM^qtjKQtY5R+l_@3d?A;0n<|*!9mIURoTr<|H^%bz`47Pv6*ZhN9%+ zs}lBNP;H9}VCg!S1K<@wxT->wdh-n5X zH~LYPqlTG{1u;^rrU@`!_JwsUL*j?kH7!F@1otWZQqgRwi&z^_Vk@Gx*X8kDT))#% z0;<6g8aqxu-2PX~H$btV$|TNQ;g^xAH}P!IEfC#97}Mk=_{pW>d~VsVx|+W*WG3Rm zFjg1h)e%gEGi{YIGefjw&)Y}rFbBg{@t$5mx>AsDumvXzxPZ~EjbVJ$jpvbH6AaPk zI|Uw@jQH3lyqn)l1bjhUgtpv#DxI2MJ?$YVv}#pzM+JUMe3ws+-2$b@+kGS&E_bCG z7cP}sZxj5c@HlrdUZmsL(b^va_yL&MeWtEc6?-6^vh%H zGQ9ZWD{DsV8%F~&I>{`Eop={Q_Q5u|}^#euCZd;-20GQ2;-pqunx_6%V}9xG!J8oN;My1LTR7(gDJs za)N5UT&j=o>koZiGWGu0Tip_rrYlV$T8STCd|!20Vt^uJx}qx zoeqcH$90WH+0>~6DDiwZ1Vq5i13JYx`RS{2PmRDz+#Abh7SFF+{6m$*u#E@?Q`Ay- zO(uecqi6tlbKQBb$gp1}Iw>UGbt^0U~Q|gm#-ad0Ge^m;#5n&<6!^wp2w5m5_TsoW zYH8<7gQ!wCa8kI~N1Qo37r#p#0Gf~+I>elIX@FjDzv7|Sg8HkAv5#Q^C%WQdY{Nb> z?S1>Y3Ky#b&j5S^7dbrUt_~jtG@i5;_%4ldJ_Ruy z;X0VYdh}HoY<2m*F?G!EI}w{LOOHjoNh-%|@{Yci(X6{7p{iU=BE)(&T2~vtIifTk3IUJ$?*J1Z{*T z-fI@bH>T?4t6_W8_{|DBVGo= za9m$Kyy%vpzSb31YnVXu&%?48bfV_)3-UF+!+Hc$X22S*4w8kYGw=H$&)1=XzkNf+4Pn-hOMRmoFx6*YL zF5Dmh85g7(aVX7X%Y%IiyS)5IHOln~X4xU{Ebuh-aBe1~8Of6uSYqgqv571k>}lSj zLyH{>SwbHa_63=f+k+8H4b(_dJT@#d9k5}X#ydWnq~&)mZUCe+r~P&qne#a6R{Q?< zdc8|E1L~A_2klp1UtS|?7Yd(vZ&N>?^ ziU=Lscw4BAPAomlMfPNKdVzrIo;WH3ML6y_c&fchSZvPrs;o2R=#a3{-?e|r-tOh{ zL$F^*&oPf>QMlavzQ^D(!v&pmDbySzE0oae4Zagbi#um@4S4kPn4iIEJsnTQK#5zY z((!M}b>yVW%bFA8_!3{rFTnGeWyA6++)+3*Z zsuhRmKRL!zCBVb5F`GaF>J1SEl*|1vlCe@`r?H&+vf9){Net?nTLui!)ZR+sAE$G) znw_^K1C}0^rJ_J&oZ1Pp(jL|S%1T~D=T7=C!Yu#Kn{_XSiw8z3DIHE87?tBdy z|HFnrf-hDtDGWC+3H`hmv06Ab&134W%81?Vj1L6zMvpk)@F=MYCvP>v%ZwWNk z8t`wTi)R{4O`Mv?&+i49N5%Zt$c>R0kX(bwcNo1T4RP~0O4-Mey5{oky~)A9UwRc4 zMT$o~7PdIBoFDo);;HAECn3=n+s?eF2qCw{gqxiA>fAxZ%SB^d~;b#fZ?(&vZ)*X z5)eRip+O*_fDkn4X7o?Nq>`aZB6%TD*@?7Yj_qXjWDCbeFOMqXDRZkmuR7=4-KQQ-pUMk)Ov zkpj)~*WeMxB|Dx8x=YGp=p%Ijj8rb$q5E&A0=1UXV{_bN;L#tIbs;I%&;ZY|O*eDv z^bs&PJ`3+F>LjwC3AvuQqQVSxG_shM9aO`pJnpjW_d5P`+e_{+^$apm{o^H$`Ch+% z*X>C3coxmcZaCQT_7{uXhjZwLP*`KePxzgDi1d1za&uk+&6{qf+r{?_pfefo>z%}# z^b>ng{#cx8m}vIqF8KZfs99G|?2Z#WE9UEE z8$RGMZ5Mqf_~!-*3m?HIkHhTDY+QNNVukE@xp=>>05fELX4LBoga;3cv$Y`i0Haxp z$LK@@0VMV^n@9qp5-$93(tLA}hc^4Is+RNUHwAbcX0b`|yqu8(n|N-PNdMGR#e;I3 zKJt99bF<6l+nhbVQ2H}*wyD{B8$Z%BqaVx;mdUA)S;#IP{$gEvuA$e;H`Z*&)@JbM z{M6!xFG4P=SCr_b$1h`;t=~S#f7+AvyUP=0R(<2CHjmplU2;ck1)a@0II8f`S8-LH z47iIK48cwEY^RWY0xE!=HHoVFE+HU5aA}fT?21DUt|_p4F|=HDs*s0ho21)HoMP3s zzmnnRYZGUY4Z+Y0Z`OFAOfM4ZVUOcMjFhC0cWb8AYsf8PKh5&g=r}M&f+)| zrUJDBvy*s$_Xd>8HF)&=TY-rX1Ub7;XVoFTj#D{3nB?S}acL}MF8oxVqv@19AznZZ z_ib@$fX72?7@49lLQw)y08S-&dPBO@9Y|r*RdCm9i{Ah*E#*hmQ!2c(A& z)c67+XR8Xd!peIDRlBa{6GjzCU#CyW>Okx;@z9Ncmha%JL#7jUECh0tx#X>v1h~}J zB5u{#_!Xdh0L)GowSTvS`WIoYAj2q{I%gHj^PgmPz5EXW0k4y01|JOOXQ+JtD+a&e zjcba3cnx=7-b7Z5%HNZIj>-~W*XTp7>5v_ zB7Ha2@vF=iwH5BxH2FWz4!|Jjg3pR2W~~!wh?atDw|qVqIgKn%Is2!kuxxzWX38nF?OE){b$zB~-We%1Jtw{&JK?uRHKgLqRO+aK-5 zg10vzRv&3j;wjuDDSv;M7w|w&T@oX;A?n9!%1?#@xBAu7B!;v|#(1hEn#yb$${#s# z^#Z7p8_!xv&g35JF3^%`qR>W*Rfgl@p=o)jjK|F;u9hKjIt{{(q-cKD+`(o&rmw-m|?fX)vlJgQjZvNWF^OTk#<~x+jJ+g3ZvgBS?e|d z-9bZof;0FqS9oA|Lqoeoxmd;0^~j4{6O&J{XOR5MTBr1+5efGA*(!z{&HfuKQ?czx z6A%-mbtZHg@@M2;TPH&@*0w$Xx9Ckz+%t?%eJcA*<3Y_WKR!XOGZQ_ z*#Tfuja;8%j-Q4EAN6oce77YRF4!)ku(7SkgYojy$EK{SJe5a2>pueSeD{HH64kh$53Ay6LGL)K+0G{%+0q_pXJ>V<4IME zL&!$c7Np`yWUaUnr0WTgCe6Hw=Y;-#*z*QiR^u9p#1|S^-5{1`gXXX`F{~=Z79t5g z>5lf1*|&j6qA3y356YQZavezt+UzjU1~22M4uCe80y^*izYQ**Yq@jBZ6j%T8Zocg zJ;};3TQ;$LN!O34?z*jm4q03jUUELYj33qmq{4iQ+N}Vhb5Q2=od(7+qt*?dJp=2-yis|lk%fDs;!$3 zELEP8Vv|i~0EqRh6OswAGkG*sjJu|Kx465KAJ>QUKQM z54lt|N1aw|gO;?LSan?=;*lt6)&n{zE$0fs7xTE=iMDS({zVKK4a6v+oy)=y8k>~2 zt(q=e+CAJvcha98MtFEkX$_PYim0`+Q#q-J|3hAFhu*beqe6p7L}f;yhc1BbX-Nw@ z*N{X!#r4ADpLgm4kEyl3Se_M9Z}vs~w#oc@cu7;AiZ9_fEhY zfju!Eh#bJ>b*bVxr{ZL^du1q7GYMbj^f)=k%)-+PmK1dEq}hS(vMY45fJnMm=M zmEk?t5zdvuLqAVD+-4&pCy{f5nO(`83yYgKWM^PT{Eh+zmc054`zYOgwe9;`>_k_| z5PN--d`=eB1fJcR>=b-7OIa-QPyaJ(`N0BI$dt9UZPnXCyN2Ke%Dj`2>ezHizTXH< zN*`OX5b)2(f&HO$yrQUp+;h&4L6L1MQvwoaT#V}hr>RcS=5d;kfF)t3v)ge=vt-za z2v3{5B%lq2$F&KKw0bYt^?|c;wH(;O>fiGQ3kW84T~zugncGopz7d+z{RH1anv zrt{Fkuo30!x8GDi6iqu8+?WX;_XJ89z)hZ?8a&()uZ|fS?-L!vyz&L+>}XptCt%_{ z9>-0hClJl_J!DM9La)D}T=O5`Wu7(%sB8TyDQ{3hAPt^%`s#WbQmFLpc>Lf{&b4hn z>uQCU4n1%u=-q;pb^}6d0mtRL^+{HE1oFXu>HKERwxcG2yFUU^QnwTfUhiHt);RJg9Zy+2SENpjc+)Nn6t!^E{ zNnPA^#NnfTopTKKbkS+p^Yb;#ouXKf2<~I~Y!zB_D-lrRQLZ&vgA}gxPrX+6KbGc6 zmHMpex8K+wrH*pi*}JLhU?H3y{8Co8iD6KP{pMB|dFRBR!DrJCoG_zIWD~^Pc{SJp zf|2IbMkyym)uw&hdqX#*|N2RZ+Dj6qU#|Oqy)pq;R|0~u3b<2E*dz&k-eQqR56{yb z3&M`iZ6nz9g1lD}DALR{XR?h>@vL%iiuGy_*&>G}7RENaLN%fC-FjByDhPR9;5+#e%*$8$Vfxr}r~eLSkj zwtS9WBQYm-u&&^m+4wQ-vhuv$Ig$_GDkXf54r$4c7&H`t<21qD_&kM=O@VD2ojvU- zl74XK`iocJu$!o?*RX06EIpDMF_tcn2br<0jEJ;`LeuNG<>r43+jI@0R%KD_O|)u3 zHvo1ZVgd>WAKVRpLU>EmcEE;LZK8a%Fw*J>;1DRS0ru#sYrmNm_gPWWfI7l(6{-ep z+CDQ>C$p)rRbZs!baX84A^7g4LHqEp8tPmw1?c&5;K8+kqbqaycL83#)F(#5u_FwK zb>9N*+tPoeP>Rhc-Dujz46QzpC_3j3f*AP_nF)&ps;83aC$u<74@VyB896Gaj{^h~ z@)zYcjDGG2MBhyJ&00Q=G^Jo!1cm=%!7%Ow-CvJX-ir}@hi1TQEi#)!CAw4LGXAlX zY(?dmf-8jV7*uiS!L?$ow{F_ihDtnD7&NU;o7FCc4ceF1MqtgOAH0n$iThmqv1~eo zwW-GO*)tgitUtVR{5VQ3k{}1Pu+TIKgC>;6OdpFfa3!0|KLr}Da4fAsk(Qp%i5d|q z*>iaG`aVwP>XYxvPdO;Bxj*>fe))&W$?Q8*r3P~^{d@~evFs}C7Y57K*}Fb9&4iDB z(cj2eXdSCaCQt~37_SuSV0pNP+@BEIIv~pH z=o_6$D0`>Wre9px{-mJOTPz>dx0#yU_$+T5%8Y&(F7_nDS4!c#!wwq_=1gR65~WWU zx%4k@QWEB1DWYw;y}{S}twGy2Vp)PVzYQcZZ-GB%;@(FhCCMP5T-P1ui4>*MrXi8y z9+kNk((Tj54b-yjWiA;+VQ<_-00Jn1k^*15-xJzbz;`96CJ(!(GrE64$E`l(s(u$>|?LTSrrZ%&Af zX%|g669)XsQA#l8U_Fyqp@)Ick|Y;cjFNkY2&?>Z5*6e#6TVggYNM(on@q-1S&G{K znIBHqJ;$FoD0lPn3;OP@Grvx(d-qRAVgFu;bO$3Sd~Y~JxmUgU)m!PMh2RhdKL^+k zdS0InPaKKZC?=@4ORl?bV~!2wP(srhg!3Mh&WNudjPP6045sacK)%l{M+w zO2I%j%>)-rObyI~&K~vSO@_gU?GMS}>&sS~yqBMjVCa}DgphkH4lHz!@4(1i+3Qgc z+y_iFZqXMf=7I%TVIMTYnEDX)XnW|gPt|&d3j@1?#Xq@JUD!j&8qC6~L9O-s4Uw?* z?Y9Lu0U2(SdzxD$(8hGR$K?_sqJ1+j5d!#L$w)F4u<&fkqB5p7SzGA!gj&z_|Bb1 zy+q(*oX;qRGhC&H2$EmcTOh#J&sOok1b{x?e3^d5WNdhek0Z)%VmkwyxUzbKWvoT> zW(Wvb4ic*d+%rxUu1|M|&i2TW?r;6uA4)A>5RIb&<8u#`2phoSo6uMmmSkvp2HF)r zXQgN<`{3OArY~ zAuFbkAhFfC$-uDKPGUf?8AxVLRjsXq6Zia9@z7%MPcHvIQuO}J+ce%*)(>8u(6Qyc zkd0CNh`>I~@ASrG?#kh9Il=b_!1OmCI=OIMt@AJsT<|4g}w9W`1tCNZ4J|0fa z59(wg&?~^SY+IrQ4}Ke!>2Vf)1W-0HXv*7!=hq_B*f{0q} z!nUynAX;z6mIT%&c0@Yye^D0i}~=mfJULuSGvS;&tuHdkEc?QwHR4c zrY%T_i;F&;;M&Y`tl!Zk!?D5Vr|fP)S+jd8C^~sH0T}f>DPl#qXLxi&dvDBA|neR{vXO&Q&(q&#R5O|qyrVNcxRTJlPMni@P;)0z~ zkfXRJ^8D#zcfPNdfEaOWDGhGpGBMvm&*)c+LrM%N7SZ>~m3{eqcOp{G1z!%igmST6 z$f}R65$tPo=x?~gbua6Jsu5dgqB~S>abJNj3uddyK;Z6+ zmp2Lka6+pQN&Q9N)CQG3C=Jm@-yPK!)KAsP#Sw0$O0FKwL`;K8DWG3mStX3fVFvRg zuXm*B++pSG3xW{dNl*6RMvu_skD6Yh98Y3i{wF+ zmeK7O{vpuuS?Po*jkh(1rH$5OS)N%;bt&E9I1q-ui#pGjkX}78ZnX{?? z7JB*`qptEi+80Dz(OE4-gcwLEoW&tSo3KPVMd-!Z*lHK6y65bzdnOSP8Fq6M^2^{` ziIO%#lV%Phm>m`|ux{yB9KQyzXn!uWi3RXd11C(W-(6p;g~x#+Uaf>yfGq1>y<#m` z%`=5ks#dDjDKU4+t7VSOR?S22UMmfqC0E@3UEoaVaRvUI2l?~TtHxu0xVgb7Tl#oV z*sV~Dp2CAu-F6%KO+d5G*lnNl3G<52p&zH2Mx1|G%X8td@v0RUmRFj4Xar!B_(%yQ z7xkN;lGM@j!SUxWKLrhSIaJ8-6k%M-9vvQ)nTwh<&f-y&2Fo`)UHN5!d3uW7{7PUR zY6{*%yG5f|O{#-&EdD>sd7*Rqq%uL}xY>l^l(Y{<_M)6E7{yi8=P-{$G%H~*jS@OV z@!lX}G~E0EYCp;xn%w&>Yt!UPhH+WD2~F~ zffGOI=Y4SM)oon-vV?;#n{=q+0@XKi*I8ZML{s_jO0a+j0gJCv?(%YaL9O9kK_e+o z9Ot}h=l_S%9I9lWryx`2KeQC#m3w5unXp-b|I%5+ZQMXNES97EwVWuZaJltj{0he~ z?$TOG`b9+%-BVnP*e<79;(edI7W|@;V|zSvAye5d%Uy01v^`{6Q9`FGhb~k7nBrz; z&=pj*p?%;+NqHe$1A*?VZ39#Z)?%`OId_4GcOOV@6R7C8Y~7D9@X%qSdx<}YJDCh) zPGs3Zp!jh&|MmOE^O&3tIpWfF^Qvji7GafwqibD{z}7T7JGom6jeQ+1Y?G1lE*l4tpG(6@&WmdgDFV z1la;`xCV-KGG^3^QRw=>@8|OAH<#v@XH9)+mz=$JY@JjcLNOlH&CSmU}%eCR>BKPaH)RBxsY-HKy| zJ!hRy0)h?1OC_`~Ez1DRoniOOsHUZZKL`N3hki5V7DAwaQv*6RUEe}Nh#Dp8H%j`$ zaPe|jkv)5XGT9U_O{_e@(G@|Md}iha5F@LwWud|_z`au-LSXFFs5vMrO!8WAE~x&F zVP*^qzu{-ZKqn;uvVfFGQwc<~mQO-7LTSHZF>Fpx{dq@q;?FQ^o8~dyi<`Zg6FG#* z)rRyJRVu?!pWRvW)_YZ6z*xRRtE92Q`3s`xEpB-d@_t{>E(d*&g~RBfv2heKjLeDp z8^&Z5MUsN%O$QI*=U!}y=obDNvA$$xH`Jrn|FhMQON8Luv$uzKMko@}(NA&B74ByJ z=D%=9+C!r>N|GfzuWlOdR5TfHIersS8@esH|LQiy#E+Kdfc6Te9&c%=R&uotFT6KQ zSYDvi(i1k{EgfCn0?V7G!E7=Tr>ZX5ns6yG^=H~Pil?dvd5D5 z4IzMT0F^L{202ZF$!M4S`)K4TQG?7-x0*VuEr`W|qa*mj63SKcrGe8rzGp#?cous> z>lVGF8qgrnmJ{nM&B2a`9t1OlRxo>Fi7()H6DxK80lYDc2@{Wx8f~FhnBV3N9Jl%^hpL9Uc_3wr*OTwO+AJB$)-+>o=RVVk9=x&?+MrgD_PyyTSiwAA0)HgI2?Pe6v4S~L+8F+je>+E?*a=c%L}O4LBE z`s#wl1@xJpaWBmLZei-=Z5F2yG-NyK0tM1ch^G=6=vP3QG1a;`&t5SL$u@ed*$u( zxJPUKkR|AK-A07q;j$y` z;a;_+?q-hR(>Hw%u-N7A0ADB1l0XudM)q;#y`&zwL5jXC;3Q^MdGg-ORcc1V7C8x9 zNxnI1t;JY+&i9C)k0DOG4GftQmn+4%C4eVbqmPaCgnYda-Sm%POAbY{6-4SmgIoW0 z@6sF!PBo<<@39Vn=~mACQkidPL*D^;1o$czXZsx;n=Qx1kS8-AUm=@U2m!5OGQ#FS zdNy-*EJm%CK@{K0##IdzVw{(*+@7}y$P!Pu6z$*ool#tMpf_@Pu3nxoI*6(bLtf5a zg!%p=<;sqTBo3Pt{n!uR<*l(-cV7;2O8o0`R{krXu5AeM z$%~x18TAaOv5VhTz#IG`KA>7ahR#U|LkA#@m{~tU*fM*xx%HaM-=m3kZT;r*Ou3m9 z`XVWN7p_EYn12?u>}&$j7aOZZ7nTL$Hb^@;u2NMUv{YF>@s9e)%nJe2@*1vHqR6Zs z?S1A~=vG`Y+jMWQv-)vak}paEuqc}jyi|}h8HU9_cyM~VrKhsajk_-m-k1Q1puq_S zn0spw3cH_ZHQI}m*~yLJmonoIJ%fAKR%aU4S9jP=2G={c>0+t37qTlB9$IQ%o#`ch zE99f*`oa3pE8YN<3{(C!iI9VbQTo0$;Io5xcz|m~j7k|Q`Z*wO?U6@dX4GC&Gd_Ey zN2|)6?g0HjgEw)n%FK(&Ehs(CxGJs;S$VlK#d)xUep4q>6TT6bX}`as%TX>NXmI;+ z!`7*omt~7(8g#Mss2%Ruz>Pn(m&qfN5a=mgdn(uGzTp z8>4fxKwyV6;$%)60sHRJ?>}0pSU6hqb6<#Fby+AF@^yqN80_OB1@7E-{_;Q{Oj@M8 z-WDZv*JE~nPLKIG!$%65<;bqP2qvDgdxv{-2+rVE&@Y2Fq<{~?<#Ou#ymvJ5x%LKf zV<{NWQxuGzvoFtFS89uE0Y&wQn%i=%BxlrZ*6p+pY#;HJ_@^?u60h=%*+G;Hihjdi zF)`Do7RWu>H-Ee{x>+UX{CjNOYwTK1fpEXn*KWJd466-*MgFt29t7FhXK1rS|507e zE5?6)(3pcZIkZT8w0tLGX#-=B@#Eiu7JA@AAP!CpTasjtk;acmXK_M@tCKnc-GA0O z#RW!Gmtrfz7(Xl*f}eMngiCG&r-Y?3LQ@m1zIyva_;PeGo7AjrhqVxo3Axj+37qD1 z)F_zHH~12bA&=QLT^FQzh24NXdsu6SSF^mP(TC8#|J*JZfw@=u)L+f=!k#ies=K>? z2TF7d78b)Y9yMsINt60~TmYj>Q|X>@Gdz->o(COKE|OL5$JuY95K3AIKzwcH&xwME zt507CEZne8S4c#48K??)#P1>=?FG){^KMw6RH$%F+R$U>_?axu)vW2M$q_?E6{G-j+*5}%TVG&yDT^V-Je^nN(zsq$yZ)kb* zy)EcaLl@f*Q9vg{I_ex+Z1>|2>wQ~NeEVl+P2l{6e#cXEW-Q%UrTf6@QA@YblMSZb z-~xo9zOX`J52LR6;@!_BlRK0WhLfG?O9_wct;r2%+aCGf<)89TPNWvEza1K6aMs&g zH}BoRfopyA0r3 zo4@9pE)g50JE1dk;FNc94uj?%DEFYA;vw6D$;UpnmynkuD%C|;j)Dm(_2u$>lu^m( zUe$xUvd1)m2Y)*P0DZ~alb*BCV*B<#22-SKk{7*gO_DOs2vJOAON$h^KK|F--y zPAySV)9_Qv_K61*!s)-16Ku!sJ*E^dFGhPUU^&?c65zG!=@qLNyM%u(-k(leKb?zs zA@BTY;)4)f&nNYio<*Cbt$x25dyLEfii&#eyJ*WX zWS^|c{kjo|H7>mR`p)U*!B=!J>E_OZfIwpF*rllbs||4mi~@ed&v3wF>E%VB&Ba!? z?z;FsNnWj=)*ewatKOdQ;0#2j+Ig?~k|HyG49vWe@^SgE>B?dcfZywP@2a-X0Div# z;ho`6wv8b4SqQny(ckWd<^bT{6Y>FI3Q(;jBQ?hYzyM@@XeW%Ew*M*Xtd`ng(5EgO zPzA@h9;aDihi6j{dYXQM zGnvzMjPXIJlLP(5cv|dq}{^9_oEw>Hs=dSew`Go8l*zedlH0Y zSI@3VM7yuBYy%Y2W7y5=c(~CUnt5i6-Z}&F|Op8CzV% zvxyp29$&B_P*cVIv0~eSCZE#O#GqR0L?Y_tw2S$iL%3x-e>5;!E%%vKsrfgzduG|S zk)tl9GI)%1y?n1KLpgDnJB6W0Oe_(=7X$KSSMWLdYX`0%%dohe3^RErU=8hPk*7hQ zqJA7%Eb`GrU>v!Ell%Ct+71iuXewRk zJLlT`a@$E|Vgjvzoy3mVc*|DF`Y%Xk#>{aE{;mrp0U0}yP|Z1yABt^m&;TY;)Gg#o z4tKK2Q8kt65llErI0>gqRQ`sB6oAJYf>Bz$3CE9sk~)@LwGacZ^;_z`#e(S4n$Tg% zj>x!YlYF`f9Zyp4i7C6sxD>R$e}TLr(ha@TaR}|@*+qT-C9JnmzCfVyCsX0gSK|}G!uuo<||9Lx-KA0IH6M8 z*3}5dQSWy!m7))1$z8-k)R76+ULMzM-U7~D?%498b?~Tnb8ypNO+iaI(^4vCy~Kfk zXw1y8WG}|m{B;uUkFqV@s*3Z&^0H1~w;;D8X??;Z$3YSO;pSL~Y)S(c-YkfKTst?@ z;FUoNXl6$8Dcus%=QAsDfc+L>`dq;34;CYn1UoD5WtcD_*w;kzFB}!lJS5Js@eq6uIBlUmqjm%$}3p3|pNjt!l0!jteH1VJs~ z&vE{B8S<#6C|Ccw2P?eh4hthLNf|d&7BU;El*b>_)Z^T?@`FOSK_B#Q3s7qeQDxP& z1K+IVc;dzI=Ao#Gjs?Mz)kcYdnvh}RW^nSe%st-){I+jF4F7-FSoo63<>u*v^&uH& z<|c{=6l%tac>7&FP1rWw&k-$Y1(|uV-{K)Dlu{Y-f?lojaM))tMviQ|!P<0-tSZSu5NN8Uh`SI+n`<-fIMgEG>4~~ieaL63ZTiH#-Jx3% z*}+Gpz@g3u5V>4{<tAv;3po>HJuBe}#-z)Gcw1;w88tguIc!#9h z-Y4-V#z?jpcqwQ|yy+3p)9~0bZjJ}NZz6joQB5`yBPS~{txWn^kvWhn9l`}jT5FO`OZqQ&nX2(lRFd1ckuFY6_m+}<^9VK5xlZP56ukcoa+^A zDy;}a#X(*o?5d9)7jy-jUvDCdgZaLfn<~XOkNxsI?U#m1TEibm_sXJ1O!f5+jw|MX z)2!hV)AP>bik7m)M7akC#T z;yF1=o|GeKY=o5&_wjYXYsZhsGL~h#fAJ@g?9j;el}K#Sm+fi>!dPemCXX6$`G-fU zQ_!X*$5+-&O(;x)lX|#10U46SXw+(QyEqCoOdQx?Hu#8T&d!W{(9TX|j&Z{Mq*9f{mdqFIGy@+qC=kex2oqlkG6~dm>4NFkm`kV~M+M^LO|BtVC4`h1( z|G>}Z&t3K^-0m)`6RNfXh{0wR^0(liu z>m1AaKT`Nifsz>0PzN~6FT}@$_C7%l!3k40ih7^6n6<*~=FFGf3Kg;YKQ+qpe~V28 zRB*D_;M>aJMtCH1EbEGNfS(amV{Z%VFaKO({IXR=SUC_#8&c@#&BDeU;j@F!tnmDM z=gi6-m?xmar?8aUN6zG?io8;PX@PB^U)%@4(##i!rI$SIiNT*xw1>w4j+Xb5iiEAP#W;*_4Op z@%lq`+kXSE$YiYN=v291_%cuFx0x7mKb?s3bihDv1saUeNUw!k_|J|cr%vN>@Zea|&k0vb6VXu=I@LB|- zN8s|UX{g8k-*;+=26aAf4k^C~WEwA*>BU2{!Jjz+tgd#Sq4}O{kp|t(zEF7WQU9al zn3@Mb#Ls@jN4y%B7+>8o`xv~2!gCcR+?w?;l8Gaxg1Xvx_v6L#^1xn)S}?=VRg2;# z6)qL8cfi`98WKOVv4OpXU=ZLfU9gunRod9>Qy7$P9J`%J2a54&6}p%G6DSRHbTnJ# zu#p%~>0b?&%VuUD!#4F`=rr8wVyFO>+6+$;JN`;PfY5-V$xwY6Mq}xt1*>1pQJ!wI z&N}<I4~;%LtO9k5vPW}R%mad_O7giV*1_H4SUJ<8)gEOVMw7!KL`_p8r$&WH29 z)vVK|_hpx#LjKbjlZnt`{X_b1<~hu{5Rnb;7#E$nT&Hsp9qElK~AfG|MjVHz-yUy(mbXwq`mF<0{#PF zhc0@%5>YR~K*ZyiWd)P}kpNUBIb#tD*PP;Ge1$i4^XOn!*3=2$7=m`obQhDjY2_9@}Zq!U{TOh$N^OD?fWzJbeOT zu_h+iM54%qRk>zQkx8t@!ueX&#nAoq`Hf8#7V2buwF!fkc4lB{{~Y*raPM;Js9fLd z-Ccag?%Au^Gw;SP&MEjV+{0cBI!IK+RDYc#cdc3sZ@K%aEvBPa-q-kfhH)mL4`c6# zq*oyP$eLkO{^ukn3j*FaG_NLG#@O1s4scEP=3YU3lc!87|eeBT|uy_IALwnMiwh^rhm7^@jy5FSBV@N*U!4KLytd~!HxTiRZAx-%#-8%F7>NJ^UH2kr`r`8AWV0ml4|=3>d`J2IuaH)zz27wsW3LUANcBF<3T)o`#it4d>K7^+)#f zJI>KQO!x3=g4uh^A(_zxY(ejo)_bencM)+V4z4W01%#XGh)3eX@=3$0&617kJTKr0v#`;VPV+8v>Y3ED^EgR8&Brv`>vQcCxIrIF2hTFBPqWmjyU?d{DZPn( zz_xSv#sen&MvWp9TA*}aie-h8^uT*$tM?id^HY*dz!TbQyN6xdzlN$;#hpIuJuI_0 z<|E_j-x7ckuKPd?I3sA?hMoiZ`#N{V-cdRJYT35q#a8Dn z8#nm)Y}-}RB8i`H1pdS-%GuMA`^UafD~+fVsvU|4<*%xjppI@%*m&y5xg?9nk7hK& zH-t*n&xPoGZWqJ_b%Ynh@P77UGs)^ybiF}J%2Ve7PoH5K<1wiu9@@~WWc({mZutYE z|Gyoz4;Vo#wR5MYR*%dZYEhY&P$LGue=+BtnENLrDcA={FxpvqgldJ7@nQeZ?S@J$ z;0>3_ZY9?>nN1v}<)DSG2KtR&N8En(w9j|*w&F|LBm)nZNb2idOW1tVZpTa^t#((? zcqmS#urA^{b#>zgW~P$f=bN`q@UQ8rT)I3oZx%i6YoGm)eteyLI)CvC3;mYA!@*;z zd9Q<20-JcI$GdAYujJ^a7sbnj{L)1 zW$ydHuI||ottt7&wdWzrog54cAJIJm`=r9lxL6U0(jX2l_RO85N={XV^mH zl!q~WBsALF&mK%y#C>!_Dlz@2vvq%M;HI@Mk~ElH=deu}-ID1iItEY%iG7L}W`~*`qWVTef{FyzlgjIf-c8JUR+Ii zJFoRGhT0svL~;TolZUnp<#r>=ui93DJyL!4t_#Q?l!lBE&hgl>PZwDd^p z(|FYG4I3r8WKTtHYZF*nzU!&uK2HtUy{RPQ`eN!iLVaMu)+kO#xZ+4F`ijqnB*x+e zn_Gi_Qb=w43116_JiSv1mmCHi2|=;~?K6CTaQPqJtNjp@S(`~eY zn?#FbtnOHpJ8qG~kYas$>ATsHk{v-?N~>BVJ(vJt9EFeyQM1fzYu~z;Rinc9Z`b;y z%(E;3FlgA3slFI$B=~5MfqZ2auFGt)4j(q}B^|6blAl^BG^GjvwY^qaUI?NRD0i)2u2VPXoN=IdtS>y4kLX zRdvNJPqN0wuri*@3so1ZAzvHxpLD+p5)~ zDLageTK(;l9AO;Emi?{ceI)hy@qNuhDZg8ve0eP~l7uZys45+Zj%^Orf3TzE+d$CT z=_7_C{C{!@w}wvvJH**#4dwEVl0_zrf`;PJ%k+ia+tsROV=FdVNbwWDILK3%|ChGY zrMd*4Iqp?R$wy}U7UVd+F@zV3wHDw}}xuXbS{w0B;*G^2T>>Ilkc&A_Z? zd26(HQOS%Xp3+tX*3_?evRagezS>uhV=J-Ih`W-T1=o#Uriuw zS@M>j;?9jyzMRNQ;FK}2Z*vlpeYUl{BmR;`%?>rNA#L$?z0#)jDHs0+d&cHp5ond{ z9my>Dhm1`HmfNbv`GR#>9BmveXWhkb;6-omV$BBo+tcC}S&fT|WN=>@CjI|JT?Ku4 z3>Sx?nthjMz7gkk5D*5_a%0++o-W1&)DCluOgC^#CY1g}`dg@{xOfj5A~X}U$}CMy zvoQy*z9rFkj%SQ#BUpD#-EXDI)W>r}CR6M4oZo9aPd{{XFCpOmxXabQor!<#`uznq z`4#S^(c$+&7du^+Gh6nz7VzWq^XZGG*k$53Gri*c&(t0>{~rJEEJkh=Tki97Cqdm* zyr#}XM%YHQ+&{m^AQ~GWFxH8*+t>VSV$-L`)9#pV_uqpr9X@&J+U_;7vIS2QPJ;l! zSoG3W0ckwF$qywFUhfj!%FOyJ%cDB#c)V*o|0S@Q-}i<~h8iKhTtM7Cz7KZAh%-=R z1KLs@4#-%%GjY-W z-1NyI?nSvazP--*$@g#XhNv-rhguMOok+?m4iCG6wWo5OAk*0=ZSeY3;8*Lf5Yi@cbomu@9k9DUbcRaW@2d9>1-Oe34OewpbHczn#0um zZBC{j!H`E?%ct9!w%M;?R6&jQBOO#Xfy=04KMHMHV{c%($FL@u7pD(f$5jm!{%$pV zP{}Kc7k8<8{BS!nV3_TL&QpV}PryUiW&8wa)yD+9=0KroY9Ou(vhpQfu6}SR$Oy>x z=72snVQ2o~)UWUdEaXnSCE|?$+P$qLWz>Y%qf4}7mhTvY0p|&gG(m@h!9@dk)>**!qIbd; zIw-SvC+2VxFl;(E-(lV&oo1E@*A|-XNW&wjfK(raBECIwG?_ZI(L5gts!asf+<5e- zi=ssjdX?PX455Rbc4Je8f7CiAuqI$^J4ml6NB)$jdv@X*&iGv5{nK9+iuBsgI?MP~ z$Jd+yx$rE_VfF5_olUw5dnI zPInzbz?L`*=v(Ni7xKwaR{fMTKgL|#p9Yl-J|@{QOF=JW-QI)6c6Ti?byz+osPvtS zp`}6D7_J<_Ep2;8K_;e$CZNmHEhE32zdw#>&vP4W$WmtCx(u1dNtQYnkC(L-EqT6A zu?9E0VSG=AE7l|{W}(U2!1E#&K)^_irYC)i(+L}#yGOt$(bFGzd9okay@+UZ;deMJ=g{Py?^{rS%iQ}#@oYMaL|)if@rrOtW5^rR{%CY;j!#WmRItL7)By9476a4iyLRZ|^KTIml z!~kb(A;t%|%7O}~M%Hyefel{jrWd=u?mrZ5cdy6a`72Sr`A71B))8-W}FBVyj z?fSXqZmB(eqyX7^$$+akdXDA4?32U%Uxb96Aj_=4JlGPno-$=3Q#@2SmGdex+#bjSA(|G$gy*dhu0Rf&HD*3 z2^dK^SQ{y;wXb-Z$-{PyBMoqPu=~Ol*eH#QBTBD@m)LZkUn>Qs12tMCd)>DeKsgI` zZ8Nf}9b9tZ6&c>(c7OQ}Qxf9{)I(L0ZOXA4gx zaSwaJo4wF1=@4F$Tg%rnvZ5Dv4Fy~zOwnG|j#eu&voR*4)G?o=jlG2LjU~cOuOSaT z$=U8Be6CdH=62|Tp=9tC)4(ozrdbl&6$FP~(-H8`euo1A-J{`g!2JYG5D(LG5@Xu0 z7(N3~;zh58D_4-JYo3GIgL`CwD=lY{wcgvDo6=JgXe?}a;vurk58{{9xr#A zFO0e`=(myQ?ySVugLZ*Ew+;#8tGg}*wKYw=fecf5M^WyNIbsg%0xI#$CL^pARy>z+ zR3m45IJEi6wR)IS+&wYat_LMeDsyAB5Ra9}E_3uiJrvp5d^W#KHKFY--71-so-ledU@H29qUe7fN^N7*>W@-~+4NDXKxFas`S z4WzX%eBgX7$pT#)9G$t?7SpB+E@k5{!C)QC)t?c?6ar%BEbKra=PF{mL9oDS+XP6E zJtE_(c6AJULqOtSjbD#Pa!27GKRwt!etjqgX;u~G=m6j+rqX>K{NA`GLJ)E@c1c80Fuovw&e#T>_oL`BR zw4je^jgX07URJ4oeNcQUuUec-%8IG7olc+LQ>YPZ{(+no`t489q+kYI%<48Q_jIs@ zfEW7+p}uaD#Va{OX12@aS>Ss#3#GFx1cwlQyKo7)n%RuZHAO+33_4&Koxdhc{Bgc zJBD>>B{$PHoma)81QxtgFWK|L`TKI{@SX^4?XMA5)0KHaNaufgLXAv7?EXYBo;+WT z#eM$)2L~cyCl7yS*A6jOU8aPm)3O|DpfZTijoFhta1UfwVFF#}n=8?E1!PZCvaR9L z4UA*+{X|}QY8&5B?(utFPj^tJOVCSs7taDnHUv3vNf@Ba4#QO`;iS&P$D&*~kXLlj zQ=BphWRG^HW?mJ1*zQ`a(-z5UB4h0|JL1XphOuU^TdZNC2y6OTme1Y~s7^Qx^7WvX ziW2(Cd-xX1lDOtE5sW#3{PdOs0%IwiTkNpFThlo;NBRoi0yEBycd-)1D>S}t@40?{ z?a3wpEm#n=AiiqC;$C^T=aIPN*~^v4@$6V(_KXMwfrh#g!412ne*7!EB2UL4|EW05 z({B3f{JT;-px5Oh^b3Wyf$m2hb_OR39M|s<*`LIz90e645-Qp(6O#>~WF9kv#@#4c zsf;+3SwHX!M<@c1QlpsbeT3ikmtd>Yw={}zuXE09r?ARGnZDHkUj~t-M#UdR3Gf5< z+QSO4*AnPGn)yKYxCPS0o8_QE6LT|RUSZX8bewDyI3t+uaUYWm>YQEYa>MU%Ec9m| z#2M!pofqYX=?K1mPvS~pmULVA8YmiU!zl$}+7?reQA0Ehc( zrHi~zZM^SYov;V0R8a`4dhQ+f1RoeR1$CIS20Vqg?Q0Ay1nCQy*%XX)+)oVuf@hm5GZ8+L&B!kLv^S1X^!Y>JV6ZA>B8V$t}b|C@35TlM8X+m zaO%Rsuw-`OLo!_m^;ACJ-fZ#Cwc@O!jKO%=hn@}veJF)RmE}iz2FyF!{rW1C!&IF( z`|%9aVNaGR`@GS7l}W{2;^^f9Z{^i_?O}lp5Lc-2?Z$Xnz_-NExNVYA(aOE;Nrq;T zx)X;WWJnmzrFi!Fz~O{39nbm;Bi`FGTH7^H$oP`BaIovbI4|}aw9uFrVruJ}a+iA3=mmJ=sjoGXlhAgKI_eRAc*l-i{d8=HG%B+VwrOnv?A8{V2`d z%4Ixubs#Mf-@-mVoq+7^7ov?DgweI|eG7{AZlHTmJYN6ykR8VLTR7b~P|6I5P#U&pU58 zFu^QebKui>PgwV7d4T@+n~Y(!pf1sYJkV!GDOD%41U>6=Z7%cV(=nRlJF32o5_X$T zYzbG^2wL8s_!{dfL+i~81P$g@HJ*}i5FV==5O!zFKzCM#`NcrVw?rZL^xv6k{$nb0 znE5hp(K0_LYVOr)&hO|9oFe(VDwUmo8JtY}MQP-0>*cbtHgJ~ogH0^%3r^74Rb8^c zDzp%Uol)~aUO(M2@rRo+^QZpyr;QI0R4m`U{}}Kg`$EC%Cx2yMs6M^^VQ&$jp1%Nw zSgP8_|BKtg9Usd_O#a-ZXWX363e_x~y#tp}?v`ZQU;{1bln@gz4i$yts~@rWYP9hM zi}8Z(5J`-@`gnfcN5CiE{2fsA8nevslNsZ>%HP2WkeZFrOUTkRn_34TG^^Kn@qM}zDZ4)-&x~3oskt0YFRA4L^!KJ^T(`(UR z@`h^BDTXoI9+|~z1mX{W$;IcNM%JAA z9Gt1yxB+Uqc@;gXP2m*iW*5~l{Ev65`CLKC?AAU{KXk3KKF&L>f?T<)d-|=;RX9Xj z!{nsmVfpKZZbhm1bOm8S{>Am}bKUGitjfmK$||k?{!i>~y(QmC2?R>7{u&?T=YYvh zyAx!+5XBL@(^*##P5H&sk`7iQgL!3OwG)3X9*8ME0xj3=*KB0V!Zi}Z4Fb_(8WW+b z=#&OT7`H2-99Sq4VIXqD*e?{3bm?6*#$RvqPIXr+*dP{9fAl)Rr5j&UgeWahvmWB+ zGmWKZO(J2~QK+>A58nP3C^K68Qic}FFe{EY8svr!ptyWa^Oi(-D+#8XqJR8+nueEl zVK60FH4kW84K}3dIFZ;LAbPgtA+>5%y~S#Ug%<*CC`sIuzBVc|i`%C-65gE=&|~$s zXLZbU&_;)wU7>NZU$)5J&9VBfpkI2Aks+@!v{9vDPVgeVw0LY{f2q;Fm`LofVQT%! zTtVyMfVr|mp+bxEDc`=)I(O?WWrkWMc2o0-aY#G zH0a!XxQ8-G(|lz%c0>VVv0q>P{n?vWo_fm1yk^e|dbR-e3dMV6PW^sJSZR#$mO1808gDKVg1GCTk4q z?w1FT&2Je@A=D(V<_8a65a<#wX+kamvFd=%IEi9m-DNy;w6ONq;R@&-b~8Zf_(?x4 zhz{gmv-iKn|2z(a6@1RQf?m;*%FY5Q538Q_nM$+Xq0_Pjxj96Iwjg6RA8$#1+4Wl3 z>miNoO#)bF&`|BAEH~uVTRQF#Rhs@p#F*ZXk;iR^%2A-G5HgcCBwl7&|NCn_Ofb-y znX(iS5^_lBBY3|y1Lhwf0C1G$q0LrwZzwZlN|)iT2V{hLGS8Kv`Tf%RaY7MFVQ+RgHqC{b*=o}s22Kz*R0iR z4ruCa0#$FwEo&9tMTt1sb>-}H8ZX}IdJ^T=y=!_$!yPjcV%*tZ(kFp@$YAc)=X3iX zt&21Mv2igk5S1C<-+iU}*8CDj+KKx!>k38F!`u2nnw84j4OIg5k>(7fLkit~G6jzHX8%{bhSc^dBkjB}qhr?7PjG2Wa-2a%?21gJ7?;b_VWowCT}?>$u(Q z@`1Q>NkDvZ9NH>s-|kD78!Wq($N8NyR71fb=VZ=w@;k77AP6eZV`)a z2OP*kBRlpRw9#XktfP-vtI?-5O<1hQ$H0M&@Se^(+y&Ys7<|qhNDe|h*$<`F9|pC6 z2MtwY*7)F&b~7cC)E0Wsl>*|i!6O?&OG(ZPs^p;1y8x)pJQ-iiL_h4JN{M;x#Z!++ zS5vnuI)7K?JZZeXh@a82+uF6QqjSM?FcfXf!njH!_>_&5!0L;)-dgh4ngmsI7RS;d zl4Bq7hatPC7nF+Nw!QN|R72q?&d<|r*iD*5!`l9?yvCp~oN^c)}xC@P=ut_0u( zF{T`2GYbM_$^QwEdH9BLN63G2%S9Vm43UKRAHHuEU^+csKxy!ekn1Z}mgJ|8_!wE1 zjn+XSrO%PC3_5Q;^n(inh^Yd9_k&{ifVTE;y!%4(E9F1 z@9|Ms_OD?qC0ETNJ)>nR7wy9Uin7Hm_vXtNgxz#>p6`pF{Ylf^qJ6?to$KSMs%a;0 zv#q%9UdF$Sr57$YIADio%GRP8b6#f+~6lNKjL7jxpc zvuR*Rh_eafGK;>;J3L}txt)R8G1H)JxWBZF_%t1yMY0k1#3Y9 zk~UtBtQ2C}1jc4yzaHJohlW*(Z^=e$n`r#;0*5 zqJcJ~*0b^N*zgDZD61%AFa1B?yN?}|S^d`5;wO3Y`hl|y@1KmU>(Z45*(K|N`io4M zba-fo;I6(S4A@oP>L_MIafLw!)=BNnzsf>nW8@f70^|?AOrrGhFRPV00=7tNYAX1Q;Htz-k(mC=#ErH%B_%^SL{-<5aX~B#d{<}UL5nurfD=gtXSezj zr0s4bQI>b#4bExJZQ)$GUm1&;s2mWsy#mW7bUg<`8Txtp(F$h#1N*#7=g*n@jaSH1 z{dN=e%GDUfgM}D2b;122?g2m?<>Q?9_GlDyqFBSn`1`^p0eDBNdf{_MU<^-}Yo1t` z62WL5oLJ7yxw9~OGs4GFJ#DC+5+ubkpvQU{wy+!+d0UiE`YTWT`zY$z%(Nz&H|NOW zwOIW@I{WT_TimL%j$gHRCh#`s1oF=B8*uPPk5lNKo+agSa$Q>on;vxSyjkE@9Ba1D z=>JpCSV$YW0p*VkV%{!5dB1Gmte2(YGfB`!+NXD&x%i!()>Fg%mVRXSCjT4Gi>V5< zkViT0EwjF5->2{slR$1U+IyyHHLHyyzXxU@=lf)<4V_*_0~kn)k$3T*V(z*@O8h%9 z09_qA(xxE$Syle8g5Z$ z)BgC?Lz^tLhf}C~43O3lc0C!5Ks`IrCYybwq%hVj^OzWd08|cJbe6b6901f_{QC(s zxA$62N!gb~%1|dWIK;>s$UfwQA?c1_+Xa*`AQmQkfkN%o_zPr_aEGO2T9&tut@xg+ zI`N0l;VvzIq8Cp-$$L(p@aS>kv`m(c?(T>b=nf!32wsRVQ~C`^FhI9>@}1pdPcy@l_9xZRRq!=*gK@P6Jf+!}mbKLC z72-Wy!PvEUx791c|Fc&ll*9jD)lileNXc%c3*)C6>K%KWeA-nG9~R=aGW4$HM@Q;E zYMs#YXP;A{7f%m#ej0syX*SA~AGl)%tl>M2G255?Xz7D=Rmt?j7oYryc3olNy0Y5m zd52M6jE7WaSlnx1{hMgANZPL-Q+AgxA>Gef+`GpcPfMOJSwry}u$LZ1pfh+?#|%?b zt=wN>?R?f>i00>R^1PpL@oMD-jf2FFKNQqL_UR|`k9|NN_5O3slEJJhw|7nOQngRR z4F38|GGU>0Bx+x-ao&u=)*CC79x1JKFTg_ZWuBr9;-2M;!&J_ z={oRBhvAi_c$p=??!9oI;HC*)5LyZgySz+durBripO4<6ZMn|UmGuP@x5|KPMnFqF z>6=@}kOKN)kzf@P^G<|r56zo?7p!^=1zfL)>Td8pBT2ps_2j`$W{t{hyDR!G*{7}- zYpk;dymE$}YntfIOn-PpCc385<`Xi2 z-c7xT6Xo2xp`zw~53{Le;+5Hft-^rlo%@h<)meQfmvn6Y1MO^rQ@GM<(p78FRNgfe zt5O$ts`}CK?lT6!HqYjG20atzOyjY;A&_?OLDB)pFylk>`eM2^f8X+@W>ehZilVr? zovFS)vzB|jalX1%2a*-Kxd)o*_&HE}m6Dx7{^#Gq-OsYQ z0pdMvlZBwn$=lwQvcUpqJCSMYh9CJ5=gW(I=WMUkNKQTQQT90Xa(~zl*XSkEszo5H z_O6TVJ`K)Qq@u?N;`cktgbQdgE)`L*NOjPW2|!m7|6Ukeq$D}VYvy#r&_i_rC?yvH z%d32ij~erG_=5gk4cdavwdFIMX0$>zQZE`#q+n#p{WryAs1H@X27*NIq z(q3YbODw4yll>$=ov<8A3z>97A5bMQOJEkqENe^yKpPSq z)KGbkbkB?A2IccxS|HKzd0R^H(xXV`6B{wlgEY(X*w)>gi7EF&vQEtJi5Ag^y_=&r zPH?;fikM|ijFT1bR^ZM~s3&-NIStU)cEy0chJD01)gRfIBjz~>r!H!j3dJ)PH`wjJ z7Ledh-L9!GeFEco)ktgxjhk;HAGD0 z!To#!(X|b9sbDxi;6x&P`A&jT1ZqdnF@nKKh2e9w(?7yo{-O?wJW=WzBLv*J&Y)1o!qe z+uw2ocdAwx=|-y{)VV~kX^=@&U`WHp&jEB4%Ey%Rx(D4LBAqAT1^viQD###1_DLPk zZRKUm#fV7G=Y)F` z5!mo;^t6}^ZWoYSMC3)lID`2CxW15^{A9mc%-d7PeV!-?{gBc0*Stplx{W+t$&RBQ z?5B(Qudtn60q4{5%cGoLUk?Gz);G1@@%vanUqbK;Mra8A@dKq*nLjHLlL2$h z=$|=Ww99ayMbR4Rt5T-LOie+Va&nnizqIU`a(pvTJgfFl_o&1HMGK@vlys>5$!?zo zJ4pK#(n3+J>R5@VM%EPK?CI%IMoQ9STR_jmeeZDK_MyFd!R_sjMjiV>$@$#1qDo`C zPe%j`2~QqYt3Yh_KWKbwM=_l=UpuC^8}jaQHUWW7&D3)M`3S0@mH8jzAbJ++X5UwC z{*@q|0U(i(zR-Bn@mlDb)`(S4bL@&q@Er!&zDO9_tGu zDQ2B>w+l(#@710)6;UDI#cnFPOou! z(SRFemFd>Nq*vm(z~wDXxc5eY#Rb0cZ7g4 zwQ-+@a^NDjuq^e?OV9f~vh8^RS(Z2>LkEqk9eJ5%<*7mc^zsX!h_L?6zOWzaT+a3a zTXCQcc8cBz3>(%}5fFTa=xLR#y=LR=MKL6KV*I*LbO97a$UI5?kYghKh;zPt+#^`- z#anZd2v~Vwdl$BSHKViFsAvK*-UCvL5dyW{Vmk`2?i;2kbIQ(t6Kc{WlxY^TN;A-) z%7twetlrZU)XB^li7u0DOlwV#i;1TC0pWv&+uY~}uAcHc7>0bnLEe14V1f@C48^^6 z{!TDJSiai|JjNC1Gi;V*J}v181M z9fTdAU*+d#51!8nxNlPXe&AOcnAij2Be29|8RM#pK7X1p&%{A$Zg$8lPdNpWtXjml z57GH+#Os*D_A5ad5*j|eAJbG*e@#Xtvdv^;p2-&|Z9I7-N1Z^Dj`F_mvF7@|kO3b& zqUn61aN?$-3wcM$AY5o|pL&)|J^K7yn|?rS+7Y&1Fo%8u=%@gVzBc5u6WPu8_U4=B z*-ufyZ+zHa=+uF|dQ6uGqmBhHXki>}D8YX?)#cMmZxX6cNLr{R!_k{IC?K(Xg|8rX zA^fk3mAR=GiA2jw!bDkh$P<`5guI^8GSzz^tfPIwO@cmdq?IWa#}X!Jtdl~00=mZ6 zFX)};{=krxnM*LOti{pZe9bm^&5VhHA>CvWx#!)9{^roUe~=JkSnn6 zh1g;`wxTEP#E=d{eU_$qEW7kfBv7JcC)VtmoPFfCxu!S`2yW(oP^8g!q64FJCl13B zN!tFO1>3v1nHUHmow{=#Bobld{B$Z!te}{Gn^X_thftxxcA9A~eJ7NQGFZp-j*D$h z%fI@y7&4Ys(`nEQ65IoyKSfTRz9R-n#8;eA0UGLfsS1<{N@FXkDO{S#G4ZvO)d!38CsVJI;TSFmRw$V5UAFn^fW)6OLSMS&mdhbs^w-njPPVM-z)`8 z#a^YqM{to#vwEY()F1x+b8nwiK-#2by>RsWv z70L4F6)uSFx0kaw7a%kEtmmHS#iNz1#kGoVq2Y>Jjxg}rHpsw-bPOF}_0(FR0vZ{ex_DJAIUjfhbn`-eKV9~yCNLZ5VFUdaq~>Fv zPl*uO91>N7U5SQ86fLzR2w#IF)Bb#XPxMuwiTku`vaR6xHxPc|WDryCqb0hQB)+Wm zu;=eDMRH*rdp>r$5)$GKd)GTOLrDh4v)~PBPLV5O!B*{SrbbLK>JxQ*k`$1(l^bg0 z0ag2`Mqk4$i^4y=18Ld4}SEm;;Q zQ61YDID{o}fxr!va7)I|+7ToE_Co&vJ;<{2eQ_0q zBxv6aD$8D-eXUPCh>Av@4s_WDiGDkh+WBOBc(C9ROV!Ps{&9cqnZ3 zK+2sgk^O#U`R*|Rd>}lN5=ibPOtkG2!|%&S#WGrwRt{n3xHS#Zq6yXf8k7`lKb)%C zgS2Z6uZvREiC&at^r#pvr4@D>bwY6-l7#wft%gQ%;DGD!Nl|a5e#FHaip2AcNNGgI zc`z^u#anJHEls@Zezkc;65@nwf?(|bpIE*|%ny0?RVZFF&fW(*3fLBuaVPSYizwv+ zp=rKi<7r5MYEBC-44OHSH}(1 z7u1_{K@83OrMr07&Vhy&$$wdB$LD9@3)=+6l%bROzmroxpoEhnHiS zYC_-)nz?0zvc10RggF^S95PAaNfp>aD%@{5gZF7V``Iuox2A5ZH_Kq%js!J@P`RqZ zc5j1wD4ENbo94|FMeT<`|79ZwozqNFESN{WFI(R0FLql5E}hNt2Ezbw!1UXvI|O8* zLM&~mT5w3%{~$M0&O$1E;qjOrLD?n4SR8cr`14y|TO6nW3h+nAe%OxAll}$(7*^GK z8781FeG_Y5>B*^1>Bd4`F;CkiM0B+i$XWl&l^BAY{py=7z7LY46Q&@7nrP%~Vse{y zj&SVi1$~PJG`u4mVzXizr~IBToJ;7YR!4}D&7z;WN}{+ybY?hk|CKJGwY{J>x~zm; zhk$y+6=UN~EY0$kNc zBypcD6^7U)M%yfd2CX_b(F&&h%i^&sQrYrW=DDjcVW1X+usbE*L5JEC&f;|MXE7Mq zXC|8LxX%vDO9A7Qa5*u+@9@sMv<@gtw#wc!(+IjNo_U%7Nh3>w*~A@DT%^wdsP6>X z2&YeD@sYMEQ4YnVKn%Iru;WTG$Dl6RugvVFcC${1S3&H%xTnX$%LLc`H`JON) zZ@u70*U5mZ+^yTHFe3t!%WuFqAQ;NNA;G9V+wlDbkZH8PUspP$Qm3O61+ikNu>RcH zS<*AQ(5^Tfxt2q|H+cSwZkj1hY@g5qmFj|L&d+*{o8!0@=5Ky7)MQP==M#L zk>Sdk9_TG{=Y?Q?y0YM*j7p7o6sd5l^FQK_6UGo-Q3_QaP?xos_s!Z=42jC<$v)-t z=d?w-+HD-aLtli=Y~4Y_?P6~r&FZM+$BVsz$N8;x#RV^M*6H6Bw;Y0PS4@c&wAEN_ zN-v0k_O>k?peij26&1s%mMt~mbeP?3)$Jd7z(IwCvov47U3|#)ZX4#0!-Xz@#O*Ww=u5R?E0MJg*Y_6kloANnwo<6R051rT<{cR= zixAtDN>QZOKq%*`)%Ys#LdSypA6?Oolo2bviod_Hfc zFC4Jr|A<(C#%AGYPU>GY#z446*b|fzXo@GZbo9_=Q=(pu7R}erQw(a|(>b0(u6bIr z*VN6oOZZL?vuQyNJXI*{C)#3GzRh5j6!by@6KD#NfXHb)F5-K%336M+Q8ciHqv8V^ z{ZRj$9#d3KwoHB?nh-FX^zJ@ZDqeaH zEtwf6u5Ypb-i;BPee9}f=rJI>ms^^VoBiHA<)|Y{P)ZnD`_ThTP2 z&q3PhJ69HSj$NoM?t7)RGM%0XA)GREiruwtjwPi#>DuW-Fme6ud`cAc9@EU(}D%i}o)P zh*W{(+@3eR*0uLQ+vcCF1V&S<+kK7I66V1lX_aH|R=w$n{NqieWMDjh57gY*VP(FX z#Pp2Pxv5u7x+uk?+&DvPcU*t-r1mt0{k`@Nu1Ud`=W1KfM|cfJ(cXHSZyH4>%NnG} zG|*mO*e$9qwwPP$2Z%D6%FxR32BJ*^5qGV`=|ojIM`mR@6S?}NZ=Bd@gLLpkg0sRt zg;!QfDIi9LP)LjKZM^c8C;XXN;l>X}1Wq`$UlG@V-+7O{nWCc0Pnv+^`QWeoIj6t_ zjE)rL(Qk#ykVOHy%lgUx#Q*)(m(Ln|_+LkDvsRB7X2dAE{Aaj{MYq6}g>gB4bZX?a zs4<8mdy9>@tU$Y3eAIsQ@)Yq=Ps&)_)E9?L-M~F*-^584V>FZ|A~jgG%wBqo_D4~> zlS$k#48l76@bhD28`^F0GqzZK91n)NIyEYO$UW*Seyx?3S~~tr_>DQNG&?ZLTr{Kf zf_S!TWs8D#oPjhSLc3uZ*N7K9*OBVVT-nqazm;QPsA&kq5hl>TlMjAO;^1>Y(Fq4# z9-Jx>1+NoGpY6Wl2eT%a6mJk8cS-*Dm2hQIGwxX`DlPDVBV6&7Pf)bj6NSn(Lc)%A zbi+y)&5z!vo17r-vnVHqLFWKP%M(a%^_3f9q#V0N=Y}RNn|dl0DT`hT5UcBnf<|4T z0dC3v&=CqLb7f^!K3`qM-@dObZI&!Px#{n2rM2Rc8h2(TxK3UiD((`ilzA;RJzx+8 z-qFB^0=9UPYaj?u`I!btVmJiTJI#wlQIJxmh@PyhJuPbc-m0^F0N&@Z4JHlvfl0?{ zqDCEx65P6Z1#lYMJ+#XfK1hYd%`_;4Ltyv?TWRs3-FYaA0q(B-usdaby-;Q<;gwv4 z7wwf~ul0fnT1A{$SO>PAQGi-?V7gPe{E@%-U*U~|6Z$sR!ck>@dO@zKPHBUoC@3ZV z)}dqt%K>&H*05jS0&xK_d}r7F=TmK`<|UzdeDjcxhH7Ozv)sr)^6n7=ZS*hh z!c{KuXwaFYGdJL=FyK;#$b_c>@QZ*#KCASfUIRwLkFS0Du^@b{bjP;E!WjDDU$(#K zJ|v;(SSQKSj29hS*4Bod(9k~E&m4`amHq7ff7<)MCWC_W>Z;jufWe%hpbBXuXYe{z!~6wd{g%!o=c@p{1vxCVgEus9k!g z)UkoBi63(Ir^{LJ?b2r8qG|=9xTo$i?>VVNEN#}o2fETzYRe*fpEe*Ew7(%R&c&lf zp1|*XSewLNZuDX|-{T=FdAlunmZl`2h2>!G9r9G+23sqff9+ipLCai>G`dE!;UJaN zEl3KAX53dNEtW}`g>SF#^N ztG&Tsd~Ubg=*cYVD%L^6smx1M8kS$-+`XPc***gZ_4{G|y6A#ApYEA%pB%$d|3I+a z4w`V*oTIrAY(ZI2^6Hl@D7&EDihw)2&~rNRw9GRkB%Pvsh%tSh=Fpl&u(TaHbfRp- z3eilI^h)i4yk>w=V=U5~FZR*cj{NY4L|L47y>TvJCvEubVEwSOGxaU{Zf!n9aWI4( z0Sn9D$7i>*()tCmB4#r?)&EE6kkt@2gNAy+cwvK3WqJ=}52VZSDO7Z~^7^wCEOE8P z_Rw7_`+fq%N=E79>)jVzm*ckm9P{U<^{_u9En_Ow0GLx+emNwF}dKepj5ddhZ3C(_TdH~r&^(XEYRA_CGw}&KOc#o}WHEx!PChMCzStNeN~fQ0tZDV8YQ&N^fM!X6~)G-XIV~flSZ9Vmtt5(2j^E zAk-ym~r)#=<$0r!;;axDtbJIW@w!pBtKI4F~6aW%h{i*3wQerbhv=~ znZW)hYaFpiU*2s6((er`2AnSd#_Qn^U)3vBd=_ortkqFmAyWcLf2qQ+9Rj1G|-9E2yh% zYJ}#WUdyd@6?z(ZP}(C;S1!EI=Y{t+J@#vzYlu5)QyQCh-{?rc%u4_4ke!&v2CW~99@d!n)Rg^c8bDP{8bq5Fwg-`MdW@}G{ zGxn=DOU*Mn`eIGn(!Zcer;b8s%fBc)A-1=0>-AH?RSpimD}f0CD1}xtFj&}?%<5v( z>l4$2{lk1uPrr8Gd()O+9iej99aVeSV^Xe|aURR~8sIed6<< zfUUj7Hx142pwN>(7N6sX7>3q9oHO{+ls?>}dF0Ch(n7U0x+V@x&R&Tx6Y($SZo(mK zH)>J9+GXZL{bBA77W8rO-m1?F?g&Fk^v}9n?>}`}!o=htJKqeNj~Er}Fv8LG-MN%> zrW!|SHGu-Vp=4g-jv+>tDqvWvyRU8%|bjh7yqG1zU@xuWu@>KY*UWF z5AU${7X=4-lg~Ca-r?!su*=}y6ABeygfJkq-&EAQ3Kuir`eFO1*yus8^@TH>V|5{L zxm^a{hMz(6K<}}nM?8eW_}m3Hg)SrPU7e3x;TE)LhBV4+5SLvmak=}$<=ZRWl&yG zgQ?$z`cVp*+#kxUS+s$ zOG7|(dJ*x>viC;a*A9<`sE4w&>#aMQR4mt~?+#iheRA%^C*2rPmL!(fdc$bKm_)xT z3sJ~B%@0_q!9_|>fC}_jGaNCyNMl5~j!_3oFz7ckH|bnZG(A-7;nnP<$j~-c{OhJG~ikhST(GfP197 zC9jqy@!Tq5b^li;49m+^tp*lqO+T$21_$|hA2an_@<4Rw2iHHB8@k~>@U~mkR6c~Q z>A`kVEs;d{`f;nJId3n-F!@8_>tsCF5>%3jadY=8RXCrC@&c>ku1+m7muUzar@^Hd z`tCTs`hev?Y7gqoI?WQ$cw(w+vr^)TFJIL6ZN>Sdm8WP6c%3?EQuZ9$9oltm;tHmR zxYS-WdBYr`z!_&3tMp)yn0Wd=4k5#7D!65@z8Z>dLw2V=VJLooMjsB>(GvPTl(Yq#VgFZxwQwaNF8J$G$7? zrf=OW_9{C>6T|sHF!hMg9B9eg&o7w|rG^$Qjz=mpj~BmVxkKeN)ft~spQYVVE)mUI ze4M&zj@LUR8cTmoUdZjr~Pw_(PA2)h&;B9z7Wm zKXR8|?d4s;xBzk4u=3=~#N*84I^6d+1)rfY%i|GpY73|ksg~zPxr-pd<>P$aweF4*BxB&FJksp9cd`UHz?EF)oR_ReNH5@k3XSF^{WDk{CVaPFjMs z>sDWmMhe{XK0XXJfJD8{JQ!y*{lGMmA!n~ANYhP~`X{1*mBQ84#4KG_U##uK<0_ku z&3t}4+K7wBo2fl)vIVnIE{VgYRt}@_O=Rx87p84@mB|*`H4o)LS!xxFL0wtj2@%1e zJ7*&jM(*B4m!@!hFz^EpPzFOq$Sqv)G-l+c7a@Gc6 zaYhefr@fE7ynu_e4DNmrLXf>8xZ{alEo1DlP?A%L$bQIX0Mi$2qQ=ae!Q%A7=Y2kV z8uO7iKUNpuS8CGn<`j7=;QgY{cW6{V3{nJOUn)C|k2_CM*?#Ct*8a1`%=5!GD}8Fu zzqQvdNoCE0Uw{qdvD%UpyirvqQ3%J+Vqz!?J@0pjNqdc;fksJ1R+LLQ=|H! z7{wYi>z8l6vyn)5)8`OAs$6<6;HA-e1B_Eri=MnoUHF?#%;3{Jc&9{$qs0oap!mJ{ zN*Y`NC);?!xsP+v#~Q)FWN%}#^xQTjuDF9+qVlk#4o+r-to+6P>6N$I!UPhJmt#ACE2 zFSYBW^u**%MPA>t7#pggtu4k+y^D0o4U9Guy4|$EqStZ0BV+eztc?(m{?#6I*u{kp zZ6_STX&!t3wJXJ6E>wk156PPB>szBT_~tmk4{0hRuO@Fr9D4U|DY zVS#BI^n*?)u}@JbdJ?2P;(k4dr-QVI5M-^)r&0b%W)OI1!iQ93a-3{P!c2KoD~$J1 znS1y7Ido~w_PoqGuwvH3DrSDMhV6U$j7_KdLezBO_Wp?JKZyj&Ru6G+YI7dje3Em1 zB8gs`>h;@14zDwv+S4_?EA_<|s!33u{W{Z^9tb4-6Smy1nAk%HKntmRNS$c7382qd zd^YNeb@&sC78F!#6^^&@(ULs;3Mlzb1@mpn_o!l5MoCIy+ozj!nPQz93Z)HCucIg? ztGU4wD?{R7Ys!M^L}pB8Zf<^goTwXUvm5%^uB~4+CZc?3mR*4-ziFES%|0dcI`mA{ z##4<|!a(8aIrCjn)156U9^y%546BZ1yP3x=yG#!;E+eS2M9zD(4l>AQ%8%3+Aqgp9 zLk2ecy48N8MfaQ7K#c>sp9DW$7n#dgw_Di3OuYaX{GsDg%Gvs*brZ7go$OdOt(Nm2c1MV!e-NQVbm#&Ck!(H4)7!p~6z^pYkFs zAGr))bI5I!im$>9*i|2}d$Xh)pp|%2+%PbfYNi{#qzC%8r77%GG@PvC^0igUNMfk6 zu_pdCBY(kcd|%#)PHmsM2g$mVWIGlkh4z8|ExyWOy7P;B8 zWj|}}=-s}XD-O5$sTxiuj|aooVhiu#vQWf*4VL$(^@fA2pwFTAH-yv)6nGAOek`(| zYK^nD`IOC{*oHH{Xfe^#(d|+*{>eFZoZyntRrq zS2#W&Zzd9=&S=dnulI;8bnI}s4&%1{Ln%dqV&aw`HEy^UqRwiQ|y{r52W^UeUBvVsX|C0Ocn~swGcSJ1I-&@C_R3h3;JXY|+nBSM#IR zjwG;Ziw)U@0xM{wq_~^AEfSoGTne__u~9$cH&pt}=k+2RppEoClgaO_a4jn;0`=NS z3^7@#p;&YPEcR-6PvO;}{!}k0T`}Z-51wcRL5%m6BL`QYHUCbkzETxgzVqEhN~=`& z5`AnZSHt{11n@D1vxJB~fX+UsmKmN5KQw1BxW0Av52{#}fy&{=refvKSxc#V0RLCpg9tP^`=3rLW%F*sI4tSW=uW9uB98xRr&R z0G&Dhd2g}YBQpLz7PeJczR!tY1ELHwJYA^}vTJCqi}5>`L9Bl6;wWB6b_Zd4CnKj3 z$56u~-;rj~DlEsoYn^H#V6aCK@KTXBfki&$05F3Lfd&%UH+##1g3}|DN5DGt(iH9w z=e%pavO>n{(X%M_4{yVP5fY}sQv=XjSYn{k5t>+sE8Jv-%ojS-PC7WnBD=IGYJHc5 z29ec`?i4ElxUqcniC%1jz({Su%!dKIuW6G=Y3w8$uggVK2eCG|#NyU-RCn2915cli z7gUA39LrPkRi-|KwC-Dc%cgM;`=Ui5(=NR}zw&x&`WxT}X#TVAm{crqK6+tIbW0|ktGy9Cer`Dh5h+y!Q@w=Q>x^Z z5%_}CQ1fJ)ZtW6;kFIyVJ@Y}7h%@$%k@hG{mtIU46^_$60I+&zA-=-ra1?I?A7mWx zzJo)8x_(A?HNpjWc}Exe&kiYc_K(g0G^k7t8hN<}7`A{(u;|+g_66t_R_C{ie1(ox zTYGEz0PHs7M={)~#BQ3w61PmK;$vQp3lX`ggwvOXj2UO%%EYHJJ)c%w#m71Qy_|h2 zy!1QOXN(iL#t2l6M3iO)bAzdTV)+z04Q$m~gPSZQ*jZM=J2ov>dCQXA0q^E5dD7GF zC+tnbeT#fY!_Y1u{Ls&8TY1cDYEGIRFc1Ba!k6k3|%W*S^Q??CeHl^8DBk^E3ZH3d5n zCno;f{qTHAB1o0cL`2V9#eAN8m}Gd)$Gy7DsU#%#lUsLQFaYKIpFIq02b}mjs13if z?SwvWxoh;$u_~IGPj6z3#GRD}+b(=4pO?MTOzsX>z7lt*IIqq3o(#ZW`S%r_jv9F0 zXS-dp>B%$@-eEer`&scsj`{1~MOZqQCxLed0$q2XOyv<$@deuU%=iHZ;8|XqjpEjD zrP-HGqCMrzH7|2wRBvX_OFe6Tdh2%K#~BUa+Q3EE)?PkdW#tpg_)-5^jhMl1u4IgX z!0pgK@B3iAm&x4XU&fbODy4Ev;t1J)KqV~@Ic3Ckikm1UjAiR3>O57V?AD$)6k+y)Xo9?)7_aH{~hi3wPU0u~babz~l;laL& zn4W!|iotEBx8DYzHJ0VdQ4J5bBtKqtryrm6wtFv3^`mz?hk~7^vwgzU8-d$HA*eKw zMM46Hrg-eAZt~?fLYIL;x%DL2<)bO)1!O5itO7xt;^LTq?eSIswo2n4O+iCm{l;D@ z{cObSeQ^!0t=9lnA-@93gVlxNTo98pMXWnR$zo224Jq#j+XkwAT)Wg)!T6$<9h(6VLLk%qM0(9TQBLqX<616RrFJ z#%aM*GG|_nyCo}60T)dB;j>Rwjtd!{uc{CbiX%jA4FOOGUChExk^)8{dGmxU%J=JT zJu^u2ifOjOfyUI5P62z3Y>ls>x_elR{;VqqG37NSr`ubUA-jsC>P{Q!E*1cZ_Ec@T z;7WEG_j{SiGRB5>aZ1g$-VqtyiL)UfS*N+wo zyxtFvs48FGydVJNX3Y@VV5XOMlkDA7 zao$#3kbg#^_9yQW$Ktrmh{Jp{5MP(`Qca!h?55cv->bsf%yi>Wk7C){1M3jaFslOjNiZFA@Ca`tRzjbY`g;eIhc3@>@R#BmB zb(K`+L!Mr2UK?3haB5g(>2Zh~S6m;F_Fr2gtS=B0SEhsb$~x8-Di!@!RvP{N{AQ;c zNwM>)jy78*mc&>iZ+(ra@Uu3a(QIg6--*pX_PRt5t6nu~PbPWlXej2softZKWbumD zN@;jzhETt4J`<~N##-{nj3Fa5>MFY8jpfxVK-Amu2w=u0g>hcNcgVXP`dP}7@>uQm@;_ryGOIDvE<2_0Sg%+5+}3WzizW1O z4{?)ke9h7dWDReKFY6I2y^oZcn6D}nSak)6ZO)%xE8Vv$>}qe|(~2Xje-11Eta6H5 zbCzqte}e0y?^@}Oro@T1vgKL-)$wA*_0dVc)#cBG0Pn?j^&gWJeSB6$$tGYsqruS{ z{K_Fx+@k+fC8@ARfurr^%a7aBweI$p72J`(HPc91-~2XfFoOXH*xwD0Gk1XQoGdOe zAW<*`jCzAcAdx?!5wvI{*o7Z)(zG}^IT&06=V;@05r)OU;3~HEZa6%++MB!Kj^iwy ztZ*;|1qNC^UNQ0^O3ZIy^mLOY7K(4_cJEzpk(B?mZd$C;$*AFBeoFco!Kej5nG%2vf{zZo7Ura z#C}sFpr|M{`l*;mN#uV}P6Cp-3PDeI#UzXG=w^HSmDrdBQJ-}u7Lpo6)kUS^-b$ER z`nmV-p1rXnsn%Y)dSOc7-Zp)yAaBY1gBdmEY=*;`Mb}Qbq!GcjPcFoGOt2XbWniM%V zNu2&otuQ~;O4r*N2kPVG=mvuyGk3*N?^Kly43F!J9>-lW*LT-3cXSokw6M2zafe>D z#k;yGUo^+V5Dah)bJ{%$1GOGVRKP$AFaoh)6!r%*{4;3pgbN7*{sz@YY|*8E2l{J5>PH4cw+w8XiBG?6F-4DJPk zd&4dO4uruCY^~fbf|SsdlmJg|Fg;XBi0S`I@)t5t%KGo?Y;SJk3d2fKtM)Hz4}&YY zTH-*1VNqBZ93nXMLmY*c0(CZbK8drnx#$M9j^V~F46f#8Zf|R;{8!UKBV}NcpnWAl^UI)RU{Yu)1}rG7 zvjo5%ngoiPI|eEh zDES5(Y&6%#6*L*cMnNd0l9Wb*52)=3@xkAU3e}0iOn{-FuYRNg6$*i1pgf}`fR)06 z4oM9VBT#t&;)A~j3atTOKs@nNpzs646B~iTD>R;f_~GXOm5cHlqyh29Mu2KAg^&Sl z2+9iaz;6N;Pp0>l?kt3ubmv^OM9 zH)Ng{4A7b)=e=Qoh|t|%Vg$7zMt)MDSjm5{KTm{~?}qgJx~|d=28IsJgZF|K)65vyDNzluY z(x5^}6dDZ_#fB+^#sV?^Z%mnflq5n2A%)Sa8AM4-ZO+EO5fg9~fH4XNn<-hL3*P^+ zcb38DH)Z`8T5ZZ(U4-MHwgOUSCY)={0=TCXx*>qE@RpyEVt0z&yx?+eE)v0Lta>)=$=Fl#*3uEW(D@|o*-4iBv11uuZjNr+d~BcfZ;JLa zThNMzmIO-X-;n~Njdi3$?i^iZ@P%DMTfoHnZIOLniO8!dy2y@VsTTd#zUKJrEP6|`^T>mf73X>vA9vd zs`|H$Bd(=}-=aic+$=g5Xr0_+86_Gtu--;rw|yH^@KLw(U;YergWhI=1h?zGNeSqTyD`c~bCXEB5{ZVp20IWFSUh3%Qj=? z=*c&$jx6)8ukQ7DsSh==xAb3WtevUQHLH$pb37{5`lYAjRzEo;b7*LJWs9kq(XHRm z@HcP(1qANDr6EQO%e;ku=h))jwWER|a4*e-!;NcYjUn%V^V0Zc&VBwzGuro3_y=_q zE7SsQ$+vY~b`S ztGHA5vj?i2vgWe48GK*c6sM{i`5XE`M)-za_&u;Vc3Mm8Z@>Z~-VZ{u@96qXCM4B>k%?{ac9*8SDQVNHF{aBv25<{XYW|K;gqL86!SDlKV1HGh8{qjrffxUv03a>}R-jS;5iS0ozzRv!Pxb&3s^9;> zivNKX8>TlE7yK(&0r=;?7ghix8Uh^uHCO=<6R_0(FJJ}g2c&?Y#s6Pef%(_4LIyxR z2yXraDWLleII(g4Z-W&S;kuzdD6)|PAAko5lANHuD8ipAJ5dym4pp3@X!wI7WdUmZ zI|TU|fvBKhpaPU+RFE*B5B~n@&oDp<`LmPA%S~0s4Y(wMgGC8^1h+JYAtA8_S3>=7 zUjw!k?X{l-;7`{3UnuD(yZNukpY1gjr1(#+I0sutcUKq%wEPWgfr4#NkE(pnn%e+h z7F^xdisI3tRu^)NIk^Le5v2k&cMotR{q?ajaOy(-yTd>)I@>$B+1pycJkSzY36vP@ zqMMtu>k&BI;m0EhC%la?0~|QotlTYu@Al`foUN>37Uq_AAQxH+!XS4jd0QvP;}AU$ zA3uUZpd^8pPZ|lZH%j`vFvDLo@WSJ)8Gz>i!2o;&v_Ift!2m#N4f_!XdH0|{m?Jd~ ziITxWobyYZ6!16v8Yc~4+plpl0Dk`?4)dG$fQ#jC??FGLKm$X68)X5vXaJ}G76-th zq~tH@ffrB+z`D@i#<$RWkjeA+I7!HT^J^SZ8nDaX-$Tnt{v%(Eq~tH;GFSkYf5f@r&28;*c#8K{$M!M~@EQ!R?c@Y?4~m>nbF_8>9vsRK az?iOX=6E*>TOv_dBygq(37ybXVfbIHpsR2-=S(yMgooq=KIw_nu6lU(mP_pf_@&vWKUG8$&S?=5?;z1G_A$5nk@&5i5% z*JBvAk$Cj*j~KQZ{>VjJ%MEYm+UmXGO~LJmq1y>(TQ|=$E;g9X8Mh0L&TfwOKkf3c zadEYGJ})DoAR#Tj>#UpG1y@B$NvA(PAmQv{C;6=|S2J8>-G!q@t{5it4E@V-zQ$b@ z!?dmw4}X8sD`vFaJ~HOiCAqF-O3=^ZU#-pb$XfgJ5$jIRub%GU=CJwt`@=SZ+qutJ z2YtQn`t`M(--UAidffWpzOL7U1BZ593(QiBPt8+ZJL=BLMOVULFzginamAHC;4f?;qd(|Nt=@&+Pik|lMekcr zV4U!#_TvAaAEzX`!H8QD^YY}wl&6kTtgmc6eN;18cr^zW#3h5lf3Io^dE?B?%!b~- zf4`rT1A7opnp@5HE3fJyMi_ffEGOUZPo5kT!-DPv@*b1Ozvs3d+ZMEg3>W=#c`ClK zB!7D@y@>Mmw3d(;?MF+@vP-~Cf7mW`qr7gsxw zW-<1#Zmki11O6m)o+MT<@}uHv?Ao($EYZ~;L~?$G-uK2$jm%T7r3`_WFy&Ak> z4-7SjFiiYTT3YYp9^;-3lG<_J_Z@{W%fX!lRfTu|Xn6e4VXTZ3zaV?3(l*O&Ew)&8 z?xDygRYS$qc&}Mp)N-_+C#CAL5&5a(+f&pvLNHS@>!)>ibnXA?ek&eZgC(&2Ca=+_ ztHmPB@A!@TCe>k>dS$?p$kJH!^&KY^*I~;$f$?HdR3^H5J(JfdM0bj?VgBZ=yvr2(3U5?v%-VpA?b@z>< zTy&B;hR6H(P}0(B_mZC`iqS{puZ-bhS7%{?L{HD!p#vNV#-Z^ZDCDFx@JHnD5?^&<79;l8P#?mOYpdVrD6-WSWc=b;#}G3DZi zg|6*j&GiltBw?XF9{qdsZ9oY*Iyp~@XSR2W$alt=`dx$>tL+UIpg2CU&wRZviHg-o zgxF>^iwkm+=b{v46((pfV`(3XTP44z*pPVS>OFm}ow^;b9+dGrR5^EnGFh0)jlrkdp^(_`iWDJXVAyBbT?Q=pDWhx||r# z&qed+{TtXLb})7QA5jwA$|~he9oCXO5Y2`0@$FBK8Oc5|v<16m%e@QT<6lK{%Ex`v zZxCkPU=HcgRpxQR%V&oU(r81(T3Ls-*n3%)+bnm*dYWhU-=Xh&h#O8dP~3Z& z)VzmN8=o-e@?bRB@|kESijLe~*x{%DW)?@9kvRsZ`{l(t*#QoIBN=qAO;nge;!<{-0mQHYTj*K4w|L)zn8@; z(8!%!r>7U^C(Rhrqh6Dgh~>t-c0+J6D?4$UMQ`bH(kzp(RhFS0lc5c>iD8homiSh; zx?Yv>l}Q5dp%q?%s)WazDF@Bn88&YYVp#nVs2KY7sl+M?LC%lZ^-EM#?>}%w#M}F0 zR%2vi1ZTf6exU56rcis;uVew9?k~W&@CF5AceJA@g%dxx%)CjeQ`2GH>b+;wGfg!; z1wgsQpHWU9d_&)6vNE{FkHE^ujPsY5HBP9%14_0s@$6-ol(1 z?U5Dig_=plQJ2FMTZ$Dm#X^o3!%9&Bsfak9NRcGv%d%b@P&!$;jzWAstON8|;%TDG z6sDp%uRIoi+xi-Z&-nyFxn`UKbE3hk{z0Y@#-|9ktB829O)FIKciG~pW2<+GM=DYM zY#SB|aaL;vy%pCCUcB`5rx00lhB7yq0UL<%T^P8RvudG|7^f%g&Rf>T`h7Co-f0U3 z=WE-wULAv42$h~j_Py9J>rdp33F~3cp6Xdjgl}3NZ(4=w&j)PgyI`T`FyEPPW?m%q z>Qwp@{~WpgRak{8Vw+_;w}q%6;=&oMdhS#M$HWSQ;}NG<*C@JV?6Ety9+d1yaG zAKc5Ruruzd)76Uehn2)0&>vr}_=M zMQ?YoRx*~r{rM0+EAoHkKr2O$w@ffXd0N}0FPxs!cw3hXQ*WGWg+flbE^Gm{C`TXT ztdR^=N^@^-eTc0hAIT`?rT5YydG$B{n@H@z!JS~?RO0XQY#p7dC%WBKAE1XvP*W&M zJF;d`d^MR>|1k$1RQu11IHVj`Ts>j@8R{}~e8+VJWQ8}ws9QMW;UgN&3tWneTrG6vYedK}4rzWTuX)&Wm8C`v;D-5Ss%^ zRQCoVYe7>9AO*{g=KPAxF+UlWmnKi) zayCrBp4BBsKxA;)T@|6M+iVONr?$=(d86K6BX)4~jmtY*jCyd0S8bVLbmvl!G-*}*@H|AW$=FtKv+ z6A%OyUkc^FXrq-JvNYES(`8KxoAi`R>WvlU0Wt;U$u=DAm`!W&ni&Kzw+w)2=bL$X zomh1!QMPzk0$|Q2wS=`lUJJu-`4USSfSP>N2xeZok(wNLOvoz%U^a*foZ+_d@3Tg$ zFm>XmonJkhC@kVTdP;FMkL+iAuU@^06j?YO3s6M6{H2BaOEj#oK=JDrdnh@L=R?Me zm7)}~U`Fo`{&YCA!8mpD@kN^~jP~pkDm>bA+f2@zIa#~ca?fXL$;U6Mt1aZ40z%60 z;J?ONd~dst!&Fxw{ifz^T~4(Fp~{)F%`U^KkSDZXhxZ6#*tSyxDIwYsrkRes*!zrL z3NW-=x*XVYDUTWi-QRVT!kS&!+a}LW>)LzPE!n*%;`haJlkX1JpP+6v(3WdTaQg-u zBz&wF*kWC*r|57Rq(6_wXUi8@C+LYAPC)@NBl&M4Im%Wwl1Tugw{Y6HC#wo=+gSmO zJ0G?UN`$O=0OQx=n5EjmkAjVFPpc!D)VU57X|XWa&a3#y@i8V&a=cM~vJ} zLqFdyW4CxEtQ$Ui11DJ$bN$h__2e_p%Y@K|{H=r|_VlqRl^#pHY3lDjoVhdx3bIC` zV4U@OiIjL8MxSkfxPFaph(;#R{mI7S(||FfS5N$drVi&@t~D)PBlZ`;hL-1KAn!vUH5P&p!> zbILdZ_l0y(Gy2lPC_pC9DJoHWLLEXRpX~8||68Uv#JJXhZ~+fPhqh)^GkLf_MHcrp z*+y-^1h@5kdp<_iS&avE{0_MJHWXJpLSMQMEbzoWhxAwwS;~uNrv?a6UTBvM0~pr% zeIR(fg*RZOSAk(p>@zUE+2&y~l@SILpw@&gemkA46~ zhxao2g3<#FBj+2Q`>l6p=h+a#e10#9jquU9W3i!kp~s{r>GrMukv>SCuo>|PylO1Jpmrd-v1$8(SgOr!qL3dxf9y%EJr{+jW(y#fjCh(JeQet$)y~<9sfJJ$Nn0W0z0$fxZWE$3u2~M zE9I#^e#zex_`CvWkW4g+%OVlT!f{(46eLS+i?&X}Er~R%()SU~bzS@^Srp}i!%bXN zKL<>@Y1Pkn?U@U`L&?Bb$#=DY{9IGxc*R^Q$hMs?Qlh_7Xk!~voTzQG!^02j?#MR9 zZz1#OzHO&?;$We=OM!&4)Q^nnoiXq)V*jA5Q4Ja=_p7jV7)?JJ zsgx~MM3>T($pSDpz6yIII}XZ(&jaA0W>bTSWV2NmOquGCejqmJ?!bE-`=CRiDMfO7 z1!o`dilWU^35l|>%j}BJP~9GtyV7|r#i;>Ud1I+nI$+S@m{OS>TkLZtk@C~ zz0)+>V*5B{qZ~M3*!wd8BWhCfV$BCqr<|=RzZoq|Ngf~M!0=)~POv@ix^V?nPtM~Q z#+0I8L^-hpL`cZFzT)&&YMcD<@H9o>M+s1Pr%*{d{q#ao@oXvpqng=@;*{D=S0x6(E?ZIjo|p=NjN6C;w&fiSM~Ij05TOTC+EgQY zw(CjTC#b_5co3AeyqhuzN!QMNsvK$|OXuRc%?+Sk`l*fpY~a--9`Ew*kLq1RI9jEW z=f?lq;WjT8SSwYA^Bs@dgXJVDmj9T~{d_YLfex*aV6_E=Q^k zg~S@TmnW|%Nn9ZX`D-AhcI6#`630Tz}mB8X)_-5`kr5~;Yl)Z|Ylj&IY6kGn2p zhOlwde}RqJ^asc3uGKjbOQT@Vs4b1=b?zSzOwJJlj}PT6xY#ctsbq`jbU(z8f(NU;il+ zyJlH4$<}XAX(cB}{K=tya1!#X0gA?#f?yNf4h0VPZ#Q>S!wt?O_@wNRdEL*k;BZYc zu5d^vb@J6s;Fp+l1^Uvx)8-08L-uC5oyBha?A z|99o<+k06u&35q(3y>*yDu2C5K6CHQ(YcNS*|8CE{?(YFT8M33Ixq0}5TV$@g`bAD z@ErJ5=`Ti-fImqV>O(X?!ixj8{6)C({hC&yn$PIB?)29Z<2aW)UYt6AXE-M5~u)JnFzF#M+q;x5?ftS#4y*kJ8Q{~;^JV#>;NGhTh%`*IDVAXEsSQ({mWkr zhEJw0#%0xC(a;BVpy2=(jT#@hkN5j<^;Ue@vt z*7LLERa7h_V6+Qeo#5}GSYj1z!h$Zn*siC0=&me_HBT)V+ZVlNj~!@;cz@%b7uzL) ztei#j;^9iv6ibc=r@=Lh^Q)k&yyDsLc`oo7zU29%8<$qRe<-%oIYxQ*q)VqiApGbQ zc*0r--ui3;RFC+iPP02nEW6Ayp`;Tv=AUI!f!W0)Q+XuhQRrX(%R*EDE47Slv8MKB zmK*nM3V7tMtCk=EoYZgBA$3wT`c@?;cB=fJh1PWOQkFwtaO2khlg-#q(jh) za##d1A;y7mBbyOke@Fnd@d?$eC9&c3&KB93$Kc6wY^yi2%kh{scP;{oMt*wlqdkuW zmV+_xkP1q6IsH%Tj&H4JXKYHoEdnk}c!yrF%Gf<+K|teaaZE@Kd%RM2(cx62F=9 z_$LQtC*x*ud`xA4phU)DD5A8QHy^D$@?D$f|9GzVmHP2N%ikkBRImODaMQ?lUjhVL zUJ|^Z_7E%V4(eqsX(eA;OfB}we6cMRhG6+U7)a#RbED3AX`7V98Sf3sZ7+3OMwn5q zNkCT$mFQH9a$hJ|<6 zs03C981_63=1K~^HyXSuBB5lH7tzwx$c_8iP4x&z=t`maSY`~w(Zd2xLT=(sKZOBW zcBi_t*%J5|ZxBtRNPM;Q2NSeytF(*R%dn`|$4Mo#{0rTi0Q|9_&1hmyc_8LPm2zJ~ z^c6B)U^#DSglgxuf^*=}jBejehe@d&N9j3vcxX%M6&hCV~Rk|c0ZF}|w5Rv835 zTih9aKtEibuBInNfPuYi*Xd8)9j2|we7+Ie(qHy9mhd3f_mYBLX0HU)xQ?qHF}}^0NrO;WVc4-@*0eXHvk7|f2H{d{oS>QN{(yi zCSNS8aAVxt(Tp%?z9PWj4!^pY3Oul3A-Ypr$orn7P^9qwlpBTP{;8ACucAm{%7R?P zxKmSek3mPQcJH}&0%R_m@&i;0_7f;aWCfI1eA%iXBk5u$N~_pQB_N8^=eswFL1zKH zWuPvYGqUh`j9Z-=p9Cy)XDW1sI6nG*%9CUOdqZmj`vZ+=AL<(72X$g19Uq^8_*t<| zvTa$i{BlfyVs12Ubq#0d%%-1`PVm^saSTaH7Tt1NNOr?4|1n{;0mEA#UJLPVaksX=d@?XA%4_rx0z&1luMW>uFGk?SZ19Z ziwdEk*KTN6V}@J6JAz(y>a`ul7&hSp0s~WTd3Q~${6Hgrm;g8tvx9?28w?X=g=FqK zZo|k&P?v~YQu{W%&D#!A8CzC|#X8xeGENlo6=#e(Q=^?FKzE(3)1m6fT|7_35|D$C zz|Wp@P94@G8FRdP*6cgpON|$YSW6%w0D3?2p;NzE4=222ICPL_wZ*~@nKQLOn8C^e zz5J3@8vvVp&fN_bsg^%I*ZAR}_gH>|#K+~pwcI_qqq%9z1U-{bvZb!TZ!w!NKG+8lfgdVIa{L`ZT|Vk0{R6G|W2X?Zq5sVRM58PeUMnu$M|Z62nCGRHNE1YG%%N zB-QcU>&{w*Xl8?%d=&m$qx1Qoov_!^DC*~Ko20peW;Y68G&qH+*aqIXYuo$Ey4l90 z2drjM9pEXLL$+F#fFO)dkwR{{>a?Pj0xs6y(uHyCE$n~=!2F81h&i&Td!LC0s zT76J}IZGM{Kkd`U=EAUPWQ>vnYMP^zXY_}*OiO3q#?lL2YU_}*Mys*o2B0K(Ewxh1 zg!RS>W%8HC;9j{o4aXXc#G(#mfCWreJOp5_Mu?OaVY~^W%oirRQSOebjN32g#YiWu zd;ly&tR~E(Q^m-I-q_*6V$h4`Z_{O(QZqDM>W`-vISr?lTSFr)90Ul)^T^DDnD*p- zy0br?zMW!vvw^XoA!4+f&LXPDSXW@U9ex8?oA*HP>-}g)9zc5wvn01))SRl2q3evU)< zwV}4}*#g%p1+k){q9m*AcHhou$DFrP#QVvKiM!d;1VZ)KnlX{q!?*%mKAyfKE3|k& z-RKHsF1>Vxu`MM;*ef@v86v~=lNH+P0mN* z6sBJ7c4aXJ2HISy`_sJoB5hr5SxY62dRg9@lyyWQoy;ZyA*VAu%x}6ftf)@8-lI;w zBR2(HwMz(FVYlIE5tePHsi|pO6%(bAcvH}`O==*>3StGdZ_lw!vh2GK{2L zvhYIEW%jLsU7e16?3mb`B5m^;R?km{Txw{@?5yL+eCy7B0a`VP29MKnk?H7NpXGR&1ZSvD|MFs_^U z=2cUMmFu&0VsNZ0w0!VQqE^|kr?XF8^i-2om`&+M`HIxMj>VudmC5IujclWAC^#@W zEQ*)f$LHGT(>z6BXwO6k<9CpkMyRF%jAynOfK`h*Ha9ode^XP)e&7Tr7HH_~?0g>% zS-4iK$m^-hp5zbFIBk0I1+$K@d}0n1ZSCY@>gn%EbjEYGHW3_U$uX;9#etMto9WpRuR}i+A)vcaWdDLX8`E8 zI7rs#K_2+-2WMDOv87;7-soyeJw3fAPoDJq??Scr4nnCaX#n9ism~G@`qgKm)$4K z>{>JZCM@7!&&!bgg3gyzSPMOXWFc_cVJzRScqU1*a&{p^u4PXcf#ua;?mNnSx4k4X zeIQcKX-tbuVlQD4BCqMtDD|ei;?aiAvbM~RPa^C&2 zf04u+KH+memKR8%fLqP?4CVkKezTsklw|S3Pp|+?Q;%jFh1vQOt_$74$#2fy3RUR5 zZRXKjJXsMXGr%zR>Atd^g42>Ln(-?c+txdq&zvgvRZ$o5Q&m?fjN7pX!CfGTzY6fO z;`W}n-&-oox{%x9Gwe4-jn{@vgpGr4k&yq)8v*#Y*{dhSwcWijJXE<;BTOjv>Si%f z``FFi=i|KIT~(fMb0xlOqXPlS%&kUnKMDa?r6b>dYo~LelzfMm)%l{?24yyL+JC-e zQClQLWA|`c!FkBfd{h6~xA~*Ft(iTcO8pNKLtjIT#2yE0ZDF_g4M-8mMsr`MvHXF! znYp>*?%FV=@xmFb|xos}x z04t}P&pk}d?7MAZO9vmE(grhOJQq{F`7pg$aUh-)a30DQvyrrH@G?}ewSiD}x#fJp zsLN?Kpb$rt%BGL&6?zwA$YMHGv@1*07G@3Wvd7Bl+u-~ay51-9uvfL;ls z(s?Ss+CQx;{w!+*0?xk&Hl<=RGD^m-|J^l7U5a)j{#%&5tJ1F=;3y(0k!xa~6uxLX z=Y;0ym{lq5Gc&k4Af}X8Nqm#ajJ~cy-z~oZrA|6sEM6J2U#i|_;&>BwTNSNn@#5R` z{^fBJ32k|!fNO)1U0*01tDy+ER!9M0zc_XnsK|GShmH2 zPD~#ubo{*#VS*}g3Z}G8SDGZ(;nlM;#;0q9W0K>Gc)%dKHN{NZEugQs;UYg@q!W;h7r;5cOhc=;^4Fo!i0b0*dToB zzc|_XDq*TFo^>!pBXL~Xd#bngCfVDo>(UyR4)1}!_VEDE24jcR>pNsb6E(wh?de>P;Sayq^U|jF9+5!(Uvq3lSwuo1vp8fBj%^s8LXc zdY3~HS|jZDXgrsyr)sorZD13M$U0r61JjFpn*F9LU5An)Y{O5Twm%`=^)`UnBRl}3 zs;bi?sFW><>D;-sKke~%4r%$e(NvCUt6)KoS2>O5O4U6GqWt>yTYwIe>sFemK5S2HSB^S8?c`GHe;}%)Voq9Q}0wzqOD#9wSWxeiKil zq-~C+6^uP;gK`JQHAl9b&-{qXX<$)=!=aP|AIrBl$}Vp2*3FUEg2AOBf;qFlFVZR$q^S9wo#!8a+h{@ZuTota zNhzFqO{753910flIs5b;?b#g#SKCmqmH==TVlck)ChTPpB#Hy zkry8?sv8qo9Wa*_CFf*Z4C&inqrRy!xAlB9;NC%4=L=~iti_QMHj79pfD;XN@%|p& z&+$x@U?@iv6&0sao&6t<&jF;!Z8!HiQ+254Ixh8_iIl9WeQ4nBz!*CjRi0DHgyp^Q zp!uf9pi36*TB%LI$t>X5-z03s0mg* zsmQzaN9@P8a_EEy*0&-FRmLgRYm!W-ZzE zzPjmJNNTo;@YlICKD{mIHeq>4PhsdDm4XAnEw*9ufKGi83j`4I*aTq&irb_fY}xVM z^Q+C4fg35f`3_&_?t}P3D7b{doun=<;m97T-5S?leG6wuaR_o<-<~qa+09>5?ExuP zoKbDUXRONX-ZTIOWQ9hJz$lY?^!Kjbbwp)?#-+gMrBZPgtf>f@bM+6NT_s5h9>t8|BVw)f}-->|I)cpQCLxY1} zr9A+&v5o$l@Y$&F`CGxY4=TgR6#65rDA~HHStFU{+jI|CZXs`(hUnN&SZc18KJ#qV zPA;_VfIOq=ow`~(KtBbsA?7M`k>w!JP<$Dbi7{ezFncJ zi-Vb$Ecu{eXSetg7*F)TWYz{63S^oz2UkywYZZMXbUkq1jRhUDjUsGX*9BBIf4wGg z3&^I`h8NJ3pI_ZPz0eajU-{C1w;n)=1xM4{w{JteXy1X~ z5}bty8K5!J9F4_uIU`UglB_tUyHUu%W;2Z3BnOBpX`YWQm zJC`~lgxL#aL<$%0pI_F*+avDD1`ghUqoFbDBQ3IEY~#gCE>Og)rWZ)djik|?oh0`1dbMqLfcwo{gKWwi zx4;7gR-3xeMXDy(U4i8CAR3qZ+DVqjQ-NSUaV`XI%j+d!*{uv*9gK(erPCEL0gFS7 ziC}{1p{1AbYb=DMZ|u z(rdx$vw*X{Vq0`qi$8#j7@lUvF1+0tXzKp^m(A9R>Bq~kYVU-Eto`sqWM$~9RA<_nbodG7}<%-3}i;}Jn>>g4%q zmH7&YfZM>pQ^s>eB21;DopOy-0mA!1>d@~vq#5DAg>K_-pZZSt2_GMy+P81RaYJKc zh!u7phU3S9Uud&_>Zm|d9A1ArRq((4-_4 zVI?Vo9!+=Kk8@yrmav!PV}kDW#}Ud>aLKVAEyK1PtWp9~9U2_tVnjsiMu2iTRjLIXp1KHRA0d&M2v}0R$0(a6?nXSipn=$gHtCR+Y zp@lHD2}^K69{I_%W=C5vxZzQnjuy{W#o-j_Ff2BL&6xChH5Zm}0Qsa3OaU+^$qp##>Geuk#7|G{yuGNlz0=h@He{PReY z*DS=hgKe6N)bYvpXj=f~ZZ3@#NJ14aM_jRZ39kRH(P=#=rWT6=YU}&aQFy3sG$Q)^ zlf8n1g89JyvRI45^X+V)NpqvTJeXSh$_EwSKS*4WIz(vgY`2~V8?{}^VyUIkWxQxU zR|!Vuw6e7oy>#mI+w=fgc<6*KHV_Eji9pye+$C9c_BRg=m@)?POYO*t6uosqmq_uO z2oy%&8t`gE0Si~h+T19Q!pHdz|<8+P}mI=#@7*_u)5N`1LSC347>D>8$zKvGzkHf=IT;Q*N zJZSo#Ra*ti@%N`nK5I&U`f&>~US0vWjPNX3YBzF7&5^dPh`cVOq8J++3+=HY8Ta?~ zpbl<_uEW%9KDEEpMv>k|hH_M6m^qS;5=Aq$De!dXa@<`oOW@&TB4uoB%+14NZpjr+ zRxPY_9=Pl7>u7;Dh`@Q`=^8uW7;wmS*aaNwzUWS-tz4(yG>#5dZKRoJyDTta$L{Cw zWZpB>rI9<-{qtt&i|?Kz+YpJ$;V}}UFJii5zF59%fh2Fh~qw zfVOKAK-exR{Pb(Y4;%7|Wr0eWl&BV?W`$QK9H_9o5qaq1PpJChpc~R*atKa>p{JlQ zp6`$+O0fpnd4&pval?n}{UO3qz)!dWJs$mQ=;0&mEF2G%L5c&{3>;wl!ji9#PrnZv ze28uPwnGOt8qV`!+?P6;{qoJ=1i~?+XfTYJVAWSdN?C0il;RJ0=_l;4`Kyop2l6u( zc(c&lp4a(cn-))oIE!Cktbw)^I%YsNFuGyn=4=g%s4!EbJ}}&57w0VstW&ddsvVgt z1)%wUP;vJ3oHreh2QwiTXw(%SM`&0{z)aM>m4pWtQCp)8EE*!ECybyPzwlga+v247 z(CQCom~4$RM;w3E=mTZ2d#_Ob7OHV`TOB&g?j?N4V8|F;Pe8r%O-?)IOd{hy=L|JjoN zYzZ)4c>PmL;>z+&GC?Qt&0v9c9Gu_50l7lwdiJb{FEAs`6uCcsV~blYQLGOdD-~e5 z87RWN3 zb|C;Jqn16g-a%L2+6>24SH6kJ{@E!SScM&v8FP?g)aYj-DVeP5zh}>&CkqK%(Cq3?#~WS!@~s!R~{~a!)6SvP?fnR z932^6;xLfq#RXt6%Zpw>KAxgdE2jVrS!lk8*@8b<@wKMFaYg9!l>UtLS$Zw<0;N!M z8cN8FY~J!zL`lW1y(grhYZpUeF?LA(%4Q4Z78LlV&Fe+W9WZgsI8s88g!3aGPD~Vm z!GcZ`P~pr`Q(5L4jh!1`O#^e{eboaMGaGSRbJRpL>@73A_+qQY^eilA9FULw*AC8yL_bTEN=*Vzx6>+^zHs4oewrbVwdlrW1w%Jbr~lm+;PI68E2Z-Hm;7guHh z_A)#?Q%=dgy?H;}%W%u*4<&Oqfi}Hko2AfLe#*e?ttS(@er=vh7S8Y}3AW+be-TNa zSqL9~l??@y^xjJNjV{m#+h+~uSm5=?aoYbBPqZBWfu#RFkpB9c4E_b(`6N@obouAs wqNJ($!3p~)ggzY;{~uodU)=qF^T#Yg)hcUS)!fb*6jsC|x`)$#u)O^L0M+R@IsgCw literal 19500 zcmeHvcU078*X<8bh>99JQjHEEf`A~ss!<$3AT~g%f)qheK#)3PjG!Ta&PcBj5fuRi z1d%c*3XU`Z1&1~$LzCXi49qGHnie)NWzUOU}4%(~y;~mPo;`r35$ zuSWNB4ko2+{qAbc@~a1KoH<%T{#0|~dg-ktOC*-NaeMu6aF5ILN45b3eG~1y)vey1 ziT)I;Oz)~}d3yZJ5;^&TMD>~}$KA12b}$=^xFck{5c&^{PkFgEdc7OP`8|5waR*xh zFT`IZFb;T4I`#j~uN!_+g&7ajHaEux3HxlvXMOxt@=kJT*v}YNdTBEe{{3R#YK@y2 z85tfIE=+8=gkf)Mw3wW{Kkm3(}-gb#iDzuWYMl?A7!NvaG!X_$V#f}EPL zBbEo_n=K173{}3RF!(8E>Ji2p5Mq~2lM>=2&Oe&{M4g+8gcVt8;4SA56|3RxpGlQi z=Qf?8{NGiUY;?zdh#*H&-Br2{e$&5~=D}%WBrP5}ELQvFdLq1FM!S}7L9a*kIle=$8;)R{@S^=vRhI{|Zr6{xZhmf$6KkeM zJdbWEw-S?$dQjjp>P2YeH;gipTZVC^*E%c4rtHIHhdrBj&SbK8#B**>6UR5ko%bSD z|7=REYa0n=*lS6~a}quOZ;p6iB##iws-okRT5p>Bo$uX^X-fnNlAND9W_`L3(e*}p z@q{O%6?du(m()oR<$OpURhzxUd!?e5Ztpas>$Wl5>Lf4+aXsRHC4m=0ZQyZV26dt_ zuS{()s&IHOO&u#KF>|9bKBbv;C^SmNE+tMnAt>qn9=o~APG8RHc<*{`<~Xi5Mt;zs z&Qx~A8w0(a;p$B1-u2kcQ_E!0CjV`-|9%#-zs-%OQjZyn`VLvBF2iKMpKL3bFlE;# zMi_8v<55T$Rj*RZ$&e|^abAU4TR+Is&8jzmXf}#L>HU8=*w14RJaNh~cR=0Tn%oWjk8UFl5Ev+Ns_3)+$;X!PJ422C)LE#^$Bu$FE1sAm)n?SwFXR=L(1?eGFk zBt2P2+HHAZW`FH&z|j4WL`H9S;;W^FI6vdbuhH?0tGFV(*oJCOOgkOz{!70fsN=Xk z+|0QTQt+YI(j{1BeMW)UkyNo7jYvU%kKWxzWGyij$LeVo&Ugdh!p6L1#pWvzHs zo^}gHzdxm#03$H^>O^V8oN9z#ki5-TjFgS^SotFjGNw4LG8>npcAz!wAKtiK%!K z6Ow&3r)u=GUSb+bZ&t-RlLP}UI;o#IN|VBPg@AoGzFMn?(-C^dZ{?lB`TfRfA-tx% zy`LrN5!bkSJlFV>66=wOyuwj$UTlRf9EEIqHQs62a4cCp*0#w!G=Jb&hh%-zb{u}P zvSdRbhVk;icM>_KSaE&6WWgs`IeRRvYziGB(9yC5JX}as+4kayhC#~M(?TDc>uHu3 zn4iv8F2l4#7Sk3s$@+Kyb}p)7GcJ#wV1Dr=B#IGbTj;?C3nf#h^g2Ao_ba?vDo10| z!Gb-W3d1@C`A^~@z|e8r|B`^XuSj^G?g)$jRg42ml7@FKh8n#7NshFoe8l~V-fpAO zH92Le@e%5C9)L_n7CZAhwj{|) z(968QZYq`}_7B;opOaUc(iFgC{IZTzE@CMCBnc>wPc>9sE?V~Y z3Df1++`Z4dW0dGSbf|4K0^q;#6TVKtz9s&4w)Mt#nO1kh(Jm!KydnQLYm1MtR8{GU zYM8FmBl8Gv2Wi2beC#-WvNcb^(x(@8^{#O;%~??|2upHN8@Orie*y5mj(ppx`pJT@ z&?faiu^A1v0!-2#_}0LO(5W^#r-YN1ts}iVj&#EZZP+R7ja_PDf}q<$APe42aQ56S z1#RIEvJFOqwB7>_Vo9wKM!Zi9{cc_GA9;y_gXo$4MWn*l{>k8RT;CIOH!De-+JrPr z7c*bmaS+#9&I<}EWdLIYMt;WslHvN=8-?SCd)Ldhe8F10THAEQii!YmWd%(ko4@?x z#jyWMIrM>yCVp^C2|rPQY0Y0mOt>49Jr{9e2b|gC6|&e(Ywj)Beh)A4)tXU)e&>2| znC!zhs96;-Md}g5a04!E&Ym@WJ2`p6lm`=C#K-A( znWXeQX@JMZzYfTV(wAwN+jJl3>a!lX|Fz=!E9r=PPR>n`d+W_2-xBX??xQ;T>*s~4%GLI2XJ-i!n;!}8yJjN$g3D^k-^zX_Cl*@a%1?UIu zs&tDd(iy>4QZQ22kSkkJWmsE{#wDu^1qh#qVr$NYxiqWrDh_PLnGgliKrVAD z7Fq9)*KEsvt8>Ko431lAnA$}**ssBOML%mo(A}#EQT>lW2Ft$vGO9JSruU3yc!e9l z9@czg5HeJ47k(@@CusxVIib^awwHX6oM)s^q#?#ZD+&#C3#CAvGQ=kG^WK zuRux%hRQ?|#>70{T~W>gAV~$gTVAIpo|bU}inQ_7^8dP6?GhwnM{Vf-WGa~)El)Ni zJOxAzymiFz(D4%zH0#U2QAzCGpM^z_p;yZd5c;rvd=r03SzZHRH$Wo@h&PmPVcS

DezN4?w483odJx=srgm1cyxX>RvPjRvA>Wi=^9h| zs%m8BkfC(`Z8&Z2=g)Y=VJDmm&%;g_8GPn3A}J$ZjCQ`fP9jO@ivp^t<5Sw%c@FFw z8}hH}MPeNc*AeOzBJ*@RBq(HwiF$<;S)dFn7GQtLbCZ)-Z0l~{PIHgP4>jjU8hocW7^4Kb9Q;*`ex31uPP3~w)hsed#6Yp-p$C7D z4EP6a!jBhd{tY33*$kSnqwKLXR^qe}<(F?*ZRH3I#gj=JjHLjYxn;gl4WV3=T@5?q zH`kXw(ybZE8e&IOacNgHw?zmN{G19aqc5FcHRw-VY7*7 z$R9%Z!wY*4rH`=ZtY}iaqH4H&Pw70$bw-9tWTvPJjv7gpqUGAkt}kR2tAVN)#AMe) z{$U$S0ly42j;Su)R~myK#AmsY=19(ow(oE`$dE(?CwH)r z=fSqI1Y3OS3mESf8uZ-TpVIq$hmK)&A_;_d(;;@tpASD8DWjHaS)u^;M*+;sZ%jE; z=<*0Eskbko_yINHNvgM+n3xY9=F=FL8|xgJ76yF4(0E=tp++Tag}&k*pQCNIiQTo)}dt3)n|`HSvLmnNF&Vgk-aFz2_Z zJ|mtQ)PwWwq`$(|XZ3Vi-Fm}?S-XH7$BbTF#(T!Qw;mjQhx6TVXbGkrk9h0s)IpLL zF5j!Vv0GH-wz(jN-3MO~8&5v4&Ggi@hUu4^D(p@^^w~-s#0O|~_tlgA;7xo#S_ZJ4 zcfan!h)q$Td*^!2y6Rb8{QUyWqrT3O&oALnmJW$tIWsFljx&;8#k)1uW%f0*ySeQ+ z0Qy3ejjBtUI8~4N>cZ{$#o zK;v1Tn`TlBRaH+6-2hYR%TJwb^a$H$0q^$-dL%sk{&m@ zgp`Nw1bG;!2FXg?bL!nO^59^d#NAkTtWMLyf-1rWiHcqSd|=1Epio%E|7K-gelgxl zj=dnx@{Jpv{QJCaz}RtP$8}si+!%>1gF$G>2r+PejVw&n7Ifk=Y?aMupwa zPrnc`kMr5{w(pMVrD9lD*`kI4u`7EpL@*j0JSP@`9r=gJNN}Wzl9h_?DF~}%Id8<; zL(sNee!C+Lr=gKvG1&|{Vc4hHmHnFewt{WV0S?(;Ma#nc7dU2#pu0ZcId!EH?nr8c z0T-{A2+JB=q=-4r5+kV6i9cA^XqYwX$$(e=y7@vQ!+!|X6edRBqF)t={O@}E^(Sem z3iI<*WV>t!L2Ew8-K3%^mk>2IFzv97hm&dJX#jrvlXb*vw5$Ns^*#s93BipmVE?$+ zApI@1{9mwR;9V%rT%JnMyy$g!V$48+YhO{K@?IORA+k_h6LS!i8Ka# zj#B4HeC9IMN>0z!J#O+lcq!IfwqqPgdv!!wpU$(oHxNr$MPu<)`kV!5@DlAuUv(4~ z3twyN%7oUZ>NB=-=TG(SzWGJ<%gc>wx*`v`Q$O}`VsEK%ph>4>*oWyK)`>&~hprl0 z4F&(S7x;U~;3N!j5l>n}B(5`X2%$_BF{;%nx;S1(tE;mj?$8z zT54}@t38nSi*V`i&M}*WTUQ1%)$J zRJn?rHZE`yQa)Ey*uYdGJG%doPVf30_p^Qonb1$;TMwUD3NGOao?6+CM7+;@r|`PG-$dQP=2z#2gRW z7V1!RCo}&JIzm|^?2n!b;!A{6NQun$QwUk}v*{N5!qhS#P)^2QIPPRTG|>QN5XPs! z7?iS4TKv7T8cw7fdBgr9C@-CBv;bQkoI8wHaWPrZR$HbfZ(A^Yp7D^o6J=s~F4{oF zBAMC3?={^kj71@Xp6K0lGKkUSq?ejRFyS;$2JbEdX1W|^`gMy+MGst5L-Dxlf<6vz ztrw_o?*Zz`Fxz>^1G##iBlIDH;jx@@;q<;W+tw3hqxv82ON-;dqC`M;VZ1+hwZ40r zup80@vj!sO#8%keOCg0HKNDhK4egV_G!P2zRVaynzq5Ga`zo%kxt6#k@YbS#y~6I~ zPrLc4{WNqm`%u+WvRAF0c%0*6=}M~q6chmyW;P+vg*yRbmOMXPfQ= zKc<@srQQy7d>d&y(sHB?HK96x+q=^h-(W>S8+dnd1ML8h9=?w-lcqUkHcWSG876q& zaTex#T^5Q6QNhwBAFM>8Dhk0jnGL4mGo>QBsn&yWT<5l%_zo~a)ezpC`Bxfz?h`nZ zz4hd+}#rp0Qc?J(gsZP6_Cnjd3ESMCis;G4i`#+x`5^dAtV% zK!eFPnsYX|CPaRuyZMa5)JY)NA-GPhyZ)?)Juibo8jd1nG5QxN7U3wLkxdycHNJu0 z%I`cFk~gckE5)Trr;}6?>L~#XXq=mMosmo$WH()%uP9jjg8xxe8Y>}V&uo{tG z;Fs;8q_g}X4NC*%Gr9h7HMN^r?L2V8)Tv@))nzwFiiRFra)Dg~^bI8)TG&8@l_u1w z4bxBiNRgJ%_2sU6b%W~J{J5+_#tMd)RY!~3eg>MN<-(Hjr=C1qc5qpRbS!i)QP`A5 zFQPY!OW=x106*d_X^ML9z#-`;Tk^;2>Kv2U{ROUWj2rl%#3vlY=PYGTZ2jYUgY>?{ z`5Xt{9xo`L`=2@i_+n5#Vcgf++Q1HCOi>IK+n#vDoS-eaE#y+HVhW1=#dq0kz=mgG zF#n`sx1X{Yq|@#tA5Xa931J+>XD`JTCSkM-{2Jn((;r_jhS|5KEs~ z>KS`}D5bun&!4f4sz#62k1_(`QzC#)^Kt|1ScZt-L+4c&w+T33haM|3Rb*Y!f-s;b zq%?Sa)`^P=xJ2!arKabBa7d3PgaoeCf*gGY^Denw+Z-$P=*Qmm`=SqN&sGG>hzZS0 z2w{9%S?@V9-pwHgMjwSeF4JO~E`&+xaMolK)urHZS;zsjmKBIFcsGNYVl}MbVp9cL;?4bi7Y034R zmmAY7Mk^u>_6~Tq?4mgWieuPDR7~;J<Jv|NR4EzGPnTzT-z~kLCRPvpv`%b& z2zT4Zkf^uu=_9XhoX$21yRpq`#uwn>?O*U<2OIY8;*c*{M;H%HNyeR6-PDuY zn>^}m$%o?1)?#;&m2kI=GVjzkYc;>0JLJnOu~Lkc$r6C1j`NXXx9xQ&OR zK2KV$-$-@k<*HR`g`-oYp%hHJ3K78lceOVjJOz@Q{gi&IJKFw)z!h1)ofJPgPv^d& z7Zn68fE84r$v*JwR-97a z4#~!BYvj+&J%LVf070CrbBI9WiM8r}y!6dPn{qKjEo9$lZ$|r8+CZ5zt80$+>ocQ< z8%G$FYQH}n$tdA6>%I)olfl})1miUe5^j20JaK%fb$Z)u1LI*Sg1zk(ppC8H`%Zsg zjFgj`T@9i4?GbZnw_gNCfU@jqpV&Gv99ayx{zegq3LYvs9_|BAj=Eej$HkYiM&K7- z1&FQ+89G0ub0?KSJv|0Qv=L3J@}*cTPKj==x}T8d%iRv*gEDgnrSs)5_$JJKB-9J% zlo8!>!Pu>0C!CfHG@c(kKAu&^5A_VjYq0PgrLZuF@Nk1#t50zp7okJ0qlL`ZlJ?WE zCnf5L0Ihw%NqEwsoBH8hwW_448?}MG4a3@^&?qa~Y4+qtHhQTh<`=3kzpiN8$|w}O z+>|w7_F=qBK{-?A&h}+72UF^KtqO+bU$cX1lR>$D_IymRZ3l1y&TsfL3*E9R(P)l#bd>NH*dy?7}&aQN#e*3ui`4MZ|{uU3+o+=)UykSyz<{XBOTd z3$&0VGEnTBHC~rlG{71|t{&Nb`^?)^xDTV3+x8R$5b-IZIVgYO`0uC9k2WyL&;j4z z7$4?(l$3{~X;F1ZzilSsE;9v*Q>~E?iha<5On~=+@jis(Pw?4+8ub!KNDLkPDuYpm zfL}Qy=htTnOciRo1eU6gpZ}C;>DwGA0PgIDYY-I*sI=gI|FkbRW2jgSe2CbwkHI{+ z=x|$e{t&|yT8npeV?D`Fg&L2aJm_Xa8rd&5mAYmdNi^c(0NMiQNBg7IfiXgmEXak6 zHtu!J&1R|xnu~_~smINP$hOB-RaHl|*kjp(=U-gI=Ne?`kyeo7c6Iltk>ieScVw%w zhJkr4eZA>S-BeDDPZQ;4lgo>%YoH(e*sW}{y=`XEDzuRJ8A=uzlxt$L5JgUuS&4=~Z^tZhToH!y&AuNVAJ=Y|AYdrtT^q zXCC3e9ufi3w3{z@cmN^M9Cz~rQwq6Pt909z!VMuIr;_-KAFs_++G~<=Gw(73-WhYx zr))T`tg%{)bx*}=j)E(gIP&u)8H^5TnAjh)}kOO6*Lb2-% zlz%7}@-jaVCTyW?2Qv}d2-SPHcUx<@KL#N1>|WYj^;|48;u|GOC2iq zqNvTZO>I=z!>+_y>=PNI6`K?wsRkM*IUnZbDXrERH&RPni}Ahi@%5Fz@ab)w?_fTd z)#7yyyR+(aB|AmtKZs=2XfkhxHo7Lj?;bpEIDscwKzG}UJ=@sr&0G|F3l@S5)u;N7G4!w8-t&_`d(gMs%lKOdF7bgt@Ijh^oKd&q9wdn zqvh@Gf_LT~B(HV*J!}WZ&o;SRCE0I)txpX zOp~$@0b|v+y}skMI@z@c1Vr(Z@GifRV5_+95rMNgKMDJf*FGqkY(j@ytX;Fqy{j-1 zV-I>!DtNS}pW)KSWQyZ>_dZ9z8N0KV&&sxEHY8KVlym=}R9oWRDy64h$Shu05Ddt1N};EICY5Rlv3Id`7|G)4Cg*-uKid%b)-F0+;T- zwWh)bDA+#1TMQqkwiz6QhDij)G6j7Z1#TT7N_Mm3z0sQfJ}9!(nf=-RQ+q!B`qXZ6BFi?Tc=i(n(oFtLSL~P-d%|k7ny0fFTX2O_!9Z>Wgj6hA zl~Sw65%k%7VXujI##14%Tg`urjLO5aUY+5_T_bRnBAccUoAv6(wrr|cEW?#O>FPf6 za#MG;+E69n4@olP$yV`rkHc_l&ucuKfX{+KyYHuEyuPx@GAcAQlr`H(sqWUC%Kw>g zYiagWo9|ReszJPJqm5lnLVU1Hu`*unRJHt+7r7zN4tJBKRJ!f?^*-fp34gHN72a$t8aEhxyc zFp)%@_xw!v3UO0e6ja4?1FqfemseMl4K<_T07ovA>nEtI7@MEpPfuJ4gsYQ06KUVV zjq&Y8W9dofgV6AEFP?rW6A_wSGDu<1Bdh^vm#nL=C&R5;Ij4+#yGdA%-*~b}Rn#t< z**O(oAD_B+@4|7tgM$Y4_VyGlpz_OMFeB?IR6O$Kw=V z1^yG`^_`*<2ncG5GaIc4bI!#xT`FUh@?-tkH5>K0rLMw0?MhAXIpf)UHV=LJ?cJX? zE4i49879Q74j8_SNJ3X<$?UUb;&H<<^lJpbp_`#Uihg!Ga8&skb#fkDf&inG$#hYh zVUWX#vRC6h>hLN9IrVasFjAEgT|Ls$$MLwug?EagT$TemTC+c`(wuHrhc~+y5k?tQ zw8L3lF;2NEn;&lRe19?s1=5(t;Prj0sF4&_r&K6f;u)v;5f+MZ z1GRyp((B*Ja$Vokahq)LdTxrIhzFq=$|;ou;CqMWY}fz(k;-)YWkek2z*YGpWddU% zu72C#YrILefFZOCjTU3$^@f`acuQ+wvTZfp>feKe zPsmC7L(>TN=~et9_i@zVFP}Ry_5-f^I|dLzsaXQ(yjfi#pY z%u-4yNLK=rI0GS~0#QuHSlC)H;+?TotJ0+RihZSM zF*czpV)(wds<3N*AAWqR&v9@U9SCi#K5>5cIx+o+yRf7EmGU+EuCA`6@w4A?@)p7d zNr$PA9wgn)&UQ~Imj<3k{6)H5P~cmV%`xW$YE@-!yq;OSFo?L;3{@Q>lm-ZLmi3Hy z1Uvj9k*vB>CP>%5QG{oo%3T)a+tKhcY!wmcka8YyR3KENotTJJ$=Yx<7Eoj& z+82O^)1k^AuhyL>atx~?3jqwWc{^niJt@iOba839GY%|oDI0_#P z8y_FX;SC^!x@Ue-6wvVTpiiUJ92${v-SY75VLdbr!W>d@n#_JOD3afVHB{;F2k8$k z{m_m?gge9?^rDOhn%A%6j_JCR>jPBh&bXl?hKIWnVfM)(iaP|p>+!15m@=OPY186S ze+Yjx zvHlPOOGb$bqOeIxU@8P8x{d!*Yhz<$wT~RZ2yZI^@M3sG{A5AqS1{!f~5Zm2=i1A>ZAo)q3el3|7KuURS_S=PbJ_Nq6@`z` zieUn02aB15#jQ`eyFifi2xNkk1t}$U3za@Y7t7V$fRV)0h41Ar;`#JBwsw zDiUKs**zK-TU)yh0x85c0yJM&6M^RV&;xRpn*bV!4x@2;|QPl$|+ zTqQ=OiYK;sF%cn2E6W-tPQMU$tKGjz6c6QIUUvc9B~ew?mkX+!Z1Wu|9)XDN_NnZr zWh1>Qju(SROX9uS@&OvJjDviz3)7f<U=XxQ<&CkvOVx@o0E{H7DY$ z+3IyZpLL^y(*f&wl#wvD=1ivyA^P^jiMdF^Oyu)>7@w|w4Q71<=I4#nDG7(@w_3U5 zw-ztD{}?L)M7P;9?5xLNezzT>#RsO@qs3E2nM0H8nM5{~z@8#>KVKoEPeQDRXy{&4 ziMrs$_DeIgnt%u#6hs!IP&!U4#4cf_AR$N=H*_&p#{x01ri1%C5BZQ7mw1GG)adUE z(U1``+5%@$y*ZgjiNCyBQyB>g`T&pMIc+-J^2^p<;34#pequu2Y|NnA>72jH{^`&C5Ni+010r0gv=7(R;dySvw%`D z1<`_|B4mMY%Ny7X#@O|cTeuW*0(2ykKYv7c-@wwEr9jp@=6ThXe_; z8^3`|Sorw{H{2b$2vTXG21RAujn7|pgF^6Y*7ROv)2*B9F!oawO__n@NvPIB@#R17pgEmF)(1hOn{y#y6p?7|y$gf1Kn0L_TQqaB1xm4lgTU1`t( zhO|xa)PbtJ3LR}YDuVzcGJ#QH;(k5*L}L2R!zeT3sambo4j8sR2?O8#6#|ktx7QMQ z(rW*neekK*=3&h+UlI=0k0SZ(;-AyLpfE9hw43rQ9g;iZ$ zvrW!-vY%D2HFu<7D<@{8{rSEjJa0EKK7KnbO%h+%+8SS7UH$wTY#+}zZuEZp);eU{ zKPUwMo6`!${Quy=+5c?nf8|NZFL$j8Rk}#yjV4SLii6pG9R8nNo2-+Xoh=VK#p}+Y z*a%QJ8L(jxlSU#;TNRpstHKW^D18E)Qb&%cKY(tb$gF2+E2k z>#oXZkkhE5Kpud8ys83NZWb=Ul~C%^U!f`#hipCMys1N(ab+E}2UaY6wjCtKs~6YS zxq~$d508vw7O-K=*UYx5VrY%g@g$V%3mA~O8QEBT2?#ANzW_ZM6K-s&vLFyAbMrbI z%v=W=%Z(S@8DzHcuKlV$ga^4cB81z+fMUat^qZhc*15INheH>F_;3gqTLPE^coJ9# zdFS}y7qttIZ|?+O&kkx1G7idf_Fe+P(6B~*C{e||YilQT10B$VKP6j+`>fciAVMrq zbwZ;>qXHPbugbj|VDXr=+nnVD4qLe6X!IU2OFzKTAFk=EM#}ue6=^mG*UOO0I=o|r zeDGih+C+G0yoXbW39jvF&}BVl#lEw>srHc;o~F0E2L=Zdy65EWt1CBx$T}Fd5-tm) zPUm)LcqCL<`VNFce?S5cH{{BZf63UYl^|M#VU-~O%I(K2+pc(>e~?qBJEn05?0956 zWIX+JA4feIBoqPmkNcxU0SucbExfq_>^=@cC@tH*dk&i6aH&8<6u(NjooIgU*;20g zLSR8d)V6lWM!ge2VLehm(l)@ua;JU~selVed;xXv1YHWRm!BUPOcEE|Nr_9=eHj0{?Dh;?)~ke;D5H|Kil%3 zB>H!ME5tv~677@7DS`@XR{98B;SpN)N0$a$?$Z@*?*^0`8Ore)>XssZA36T=j&--| zegeq7iS+w*L?c$y&o?0?j`M7COz8mBlR(7;hfLA<;Z<6!;X) zK{H&s;Q2x4O5S^v5qIwSvV~6~K-7+fHp@0>G`W!&dhk&Ff?Kc#!xYfXs2p0Yj!3+H zqQ4@KkcScYH<5McVKV0E0YI#jszjNoVnInz^~BEvKp@ZA*OvJRxU#DL&T2^EtQW~ zx9OHcFFXpBR_(|5L&{ERm4RR4-t&7*JBy`fQPo^>>N}eFNA``c#N3P*|}IYArr^RK_114+r@{ z59-9>9jG*!m<)_J-*$^-1pq}l2MquK delta 17 ZcmdlngK@_U#tk>!m`qGJ-*$^-1pq~22NM7Q diff --git a/dev/_downloads/33391c644ccb248b4c17deb758dc2301/control_plots-1.pdf b/dev/_downloads/33391c644ccb248b4c17deb758dc2301/control_plots-1.pdf index 2b54c81687216b0d505cc39b9aa56dc80dd43346..cce4016d4f796b7d473c1a76d14c03ede56cb6e0 100644 GIT binary patch delta 15 XcmZ2exu$Z%TXQA@!_Du__p$&0JFEi6Zpm@Q0FEi6Zpm@SPBwjWPokzxh_q!S7Y diff --git a/dev/_downloads/3af3ee18448b7a687ef6594665f932f9/plotting-19.pdf b/dev/_downloads/3af3ee18448b7a687ef6594665f932f9/plotting-19.pdf index d39b3f225c89ed227ac3237a5a4a501fc30382ef..ed3c296f025d5c24b26c06c88a68147cb881f98a 100644 GIT binary patch delta 15 WcmZ4Owc2aL93>_L`0!_D)QdYJ$-Ck4L% diff --git a/dev/_downloads/3cd14c510b41514f1496a3155ea8cf2d/matrices-17.pdf b/dev/_downloads/3cd14c510b41514f1496a3155ea8cf2d/matrices-17.pdf index fab8214aa489e60791b15486c3ba97dd8188f7ae..a7b3fcd74ac690831b01ee5c1dc06fd4ae43c1ca 100644 GIT binary patch delta 24 gcmezJkMGMrzJ?aY7N#xC278zcEVdi%VRm8$0FWLDh5!Hn delta 24 gcmezJkMGMrzJ?aY7N#xC278!HO|~2DVRm8$0FWvPhX4Qo diff --git a/dev/_downloads/464f047ba3ef7f04429a4eb163a6a2de/matrices-18.pdf b/dev/_downloads/464f047ba3ef7f04429a4eb163a6a2de/matrices-18.pdf index 8dde1ec57b641786774aaea556dc417a69a378a8..2a1f3fa81117f1fbf6601209a0486e5a007040a9 100644 GIT binary patch delta 26 icmaEOTJYg%!G;#b7N!>FEi6Zqm<$cKA5UVDVg>-3oe9wZ delta 26 icmaEOTJYg%!G;#b7N!>FEi6Zqm`u&LA5UVDVg>-3=Ly>Y diff --git a/dev/_downloads/4c9cbd846f69df68795ea4e2cdf667e9/plotting-33.pdf b/dev/_downloads/4c9cbd846f69df68795ea4e2cdf667e9/plotting-33.pdf index ab349f3454400fd93cfccac556ec7aa4b2eb4881..49e472f21f460be0ffff4ec30f87ac68f44a4aa1 100644 GIT binary patch delta 16 XcmZ1(wlZvkq6V{pso7=~4OV6VF=qsw delta 16 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 of5g3HmQw#{0q_6M);cS5yCdZXtY+FN7 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 delta 18 acmZ3ol5xpO#tlFGnT?DLHvjft$pQdPp9j?d diff --git a/dev/_downloads/56227f1745cb31fcd75cdc19f5cad645/beam_problems-13_01.pdf b/dev/_downloads/56227f1745cb31fcd75cdc19f5cad645/beam_problems-13_01.pdf index 763baad679bc82a4d9eea1558f201a9622f4bb65..d4aed1ed01eb7acd1e8799b7734e1b3d49a72f96 100644 GIT binary patch delta 18 acmbObJ0W(%Gc8tQQ%h5`&9AkVG6Midp9dTO delta 18 acmbObJ0W(%Gc8sV0|R5r&9AkVG6MidI0p~_ diff --git a/dev/_downloads/56447441b8d8108229134a5d3454516c/plotting-7.pdf b/dev/_downloads/56447441b8d8108229134a5d3454516c/plotting-7.pdf index 066dcbd5b1fa23139cc3fe1652577906ed6f34d0..10275ed4db754ca57e272ebf283ba220d6c27a35 100644 GIT binary patch delta 16 XcmX>Xa4ukjyehMSp~Yq;RUKvkH4X&! delta 16 XcmX>Xa4ukjyehMyfx%`aRUKvkG~Wd7 diff --git a/dev/_downloads/569497501b2d3eb864ce466d19b06017/plotting-20.pdf b/dev/_downloads/569497501b2d3eb864ce466d19b06017/plotting-20.pdf index aa85ca19c5790bea0c7f716f2aea8552380366e4..d7d857d5b153458d043ca84237b4fb8a55823d00 100644 GIT binary patch delta 16 XcmbQ?Gs9;?sWP*HvE}9ptvYQ%nFlqy~Nf delta 15 WcmcbXaxG;;mp+rB(dHigQ%nFlp9XyZ diff --git a/dev/_downloads/5860560b08ead850923e530e3240b5c6/plotting-15.pdf b/dev/_downloads/5860560b08ead850923e530e3240b5c6/plotting-15.pdf index 557564bf8b4667393a4ac30eb281cbf8e836a3ac..c3a08f7de7a10717e0dcdbe31b18c231841a1f95 100644 GIT binary patch delta 27 jcmbQZM_}R}frb{w7N!>FEi5w9%mzkA+vTNMJ~06RgD40* delta 27 jcmbQZM_}R}frb{w7N!>FEi5w9%!URg+vTNMJ~06RgD(g@ diff --git a/dev/_downloads/5b83bd080155a6f59e2eeb633bda5ab4/matrices-13.pdf b/dev/_downloads/5b83bd080155a6f59e2eeb633bda5ab4/matrices-13.pdf index 6144d316e253f525ad2056e2a2e40a8f07061a04..c9929ede2c901b95f398194a7807fb25ba493215 100644 GIT binary patch delta 27 jcmaEOTJYg%!G;#b7N!>FEi6Zpm@Q1rw;xYpkzxh_q)Q4D delta 27 jcmaEOTJYg%!G;#b7N!>FEi6Zpm@Q3=w;xYpkzxh_q%aB( diff --git a/dev/_downloads/6236456dc31640e622c3f943842d9925/plotting-27.pdf b/dev/_downloads/6236456dc31640e622c3f943842d9925/plotting-27.pdf index 9346dbc0a23db28eec42ef35a63ebad4528dd4fc..5e096cafbdd2c2c45d49038cf511f48702a0561c 100644 GIT binary patch delta 16 YcmexU^rvXU1~X;@6Z6fR%}z1_07%XUcmMzZ delta 16 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 literal 8781 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 dzX@nt>Y9fPE?75%$4~(PeF3BOTGJ-@L< delta 15 WcmeyF_A_mRt3H#3@n&~@BNhNT>IJU= diff --git a/dev/_downloads/704bfe351153d402a4a0a831ece25675/matrices-2.pdf b/dev/_downloads/704bfe351153d402a4a0a831ece25675/matrices-2.pdf index 0ea1aad1288bf0d9192c0b569196927ede69e918..676f2323c1e9cf6ba8b523488a1a0547948c8382 100644 GIT binary patch delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oyjLfzh?O}Fe1^}5y3BCXT delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oy4NbNi?O}Fe1^}5l3A_LR diff --git a/dev/_downloads/76c597139b65debdf0e125c15cd040ca/plotting-25.png b/dev/_downloads/76c597139b65debdf0e125c15cd040ca/plotting-25.png index 68a41f4ab24ccc21c0b289c8d652c0adb5ef7140..bc46a8fef181a0385fa5b632905f014ca619076b 100644 GIT binary patch literal 10119 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 diff --git a/dev/_downloads/78092bdffcba955dd374da738fd5c1d2/control_plots-6.png b/dev/_downloads/78092bdffcba955dd374da738fd5c1d2/control_plots-6.png index 4ffb63db655587e44ea1d473cfb7b551fb9972b2..4aaed3338dd227a74ef6dddeda47ea5c2cf45d98 100644 GIT binary patch literal 22791 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 diff --git a/dev/_downloads/7eed1bf07a4dacbb97d209dac2614e9a/matrices-19.pdf b/dev/_downloads/7eed1bf07a4dacbb97d209dac2614e9a/matrices-19.pdf index e1401f6d582d4d66a81ef771df42d58d12a4505c..dec7524120babba653d8466258a6354428611bd3 100644 GIT binary patch delta 26 hcmaEQM&Rigfrb{w7N!>FEi8)4Ook@gm6chXm;sI!2tEJ+ delta 26 hcmaEQM&Rigfrb{w7N!>FEi8)4Os1CGm6chXm;sJi2uA<_ diff --git a/dev/_downloads/80381e15163e7b0ece9149eadb09772b/control_plots-7.pdf b/dev/_downloads/80381e15163e7b0ece9149eadb09772b/control_plots-7.pdf index 4cd993b304ce95d956022eaa47885310921d34f8..fcd07112b7e59832751f153acb65019b2b5503d7 100644 GIT binary patch delta 15 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 R-T_MmC=Ffp;u}_>{{bjGm&O19 literal 9348 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 diff --git a/dev/_downloads/81a780d815116a5eb737d2d484c44444/matrices-21.pdf b/dev/_downloads/81a780d815116a5eb737d2d484c44444/matrices-21.pdf index 52b964c82873cb81eb128c34e893bfab1f0fa0fd..96de6c3c7aa24baeef24bc354ec2bea6efafbfa1 100644 GIT binary patch delta 29 kcmdmZLU7{=!G;#b7N!>FEi6Kbtj4C6Mh4r(6IrB~0iPBKssI20 delta 29 kcmdmZLU7{=!G;#b7N!>FEi6KbtR@Bq1}59Z6IrB~0iLP|p8x;= diff --git a/dev/_downloads/81f16477713a2ebedd53f1c8ec85b754/plotting-12.pdf b/dev/_downloads/81f16477713a2ebedd53f1c8ec85b754/plotting-12.pdf index 3fd43da50f653a99c5e9194785e1e109f1f0e303..d63d0f102eacace62ae0fc608bf7ae40dabbc48b 100644 GIT binary patch delta 16 XcmZp&YqHz0UWVDg$YAp(nE)mLGDihu delta 16 XcmZp&YqHz0UWVDwz;N>>nE)mLGDihu diff --git a/dev/_downloads/83ec70596dcaacc88e256e7679fafcee/matrices-12.pdf b/dev/_downloads/83ec70596dcaacc88e256e7679fafcee/matrices-12.pdf index 5d71a2159adfd51928c64060c98467da68bad4cc..214ca28d5b36dd1644b6e2159301aa4e4d16944f 100644 GIT binary patch delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oyOii~N?O}Fe1^}5@3BUjV delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oyO$@dh?O}Fe1^}5h3A+FQ diff --git a/dev/_downloads/865dedeca3d1430244910d89d552e5ef/beam-19.pdf b/dev/_downloads/865dedeca3d1430244910d89d552e5ef/beam-19.pdf index cad9755440df6da32631bbce472631446a891df4..ea5272cf7d94c7b825ef86a85b3ef6d05da071a0 100644 GIT binary patch delta 18 acmbQ9Iz4s6Ts>A}Q%e)`&5QKDG6Mibj|Tt% delta 18 acmbQ9Iz4s6Ts>A30|R4&&5QKDG6Mia^9Jhx diff --git a/dev/_downloads/88f8d6df1485ab9648408b70b7cd4c46/beam_problems-11_00.pdf b/dev/_downloads/88f8d6df1485ab9648408b70b7cd4c46/beam_problems-11_00.pdf index ff2b2196b2e30cc83e57630910fafe0f79ada43b..473faeb36e56e5d1fda91406e6e88042b81bc4fa 100644 GIT binary patch delta 18 ZcmeD6?)Bc_p~PxzYH4b`*;mPd82~va1wH@( delta 18 ZcmeD6?)Bc_p~PxpU|?*%*;mPd82~uO1v3Bu diff --git a/dev/_downloads/8c3e8789c867600d80b2cce11272d81e/matrices-15.pdf b/dev/_downloads/8c3e8789c867600d80b2cce11272d81e/matrices-15.pdf index 77a35dcaa18e7693d57c22af56c0d7e50e608699..099baa28cbeb8742c00da32b92649b35a5093451 100644 GIT binary patch delta 26 hcmdmZLU7{=!G;#b7N!>FEi9smOa?~V#S>Yim;r^+2nhfH delta 26 hcmdmZLU7{=!G;#b7N!>FEi9smOePlF#S>Yim;r_x2onGR diff --git a/dev/_downloads/8f6a7c938e347f134c67566d5aef740d/plotting-29.pdf b/dev/_downloads/8f6a7c938e347f134c67566d5aef740d/plotting-29.pdf index 0a3a419f499d267a70a380969b3328150a43bf59..6dce3c60e291cce56680f4f1a41d4a76dc8b73cb 100644 GIT binary patch delta 12923 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 R_Nc3#*mL->zTufY{|k==%B=tZ delta 12793 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 delta 15 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 delta 15 WcmZolZc5&8Oqa>Rc=HL}UCaP9od!Sv diff --git a/dev/_downloads/9659cd876877dfc4002fae48de3c98ae/beam-4.pdf b/dev/_downloads/9659cd876877dfc4002fae48de3c98ae/beam-4.pdf index 17df8270b7f39fca1916c830be8001b45c6df3c6..30aea2c4099f64a35d6df951d67569fca8868aec 100644 GIT binary patch delta 18 Zcmez6`^$Gjr829rsild*<~rpXW&lf&2DktK delta 18 Zcmez6`^$Gjr829Dfq{|n<~rpXW&lem2CM)8 diff --git a/dev/_downloads/9728219edea47500a9403b3679a5bc09/plotting-10.pdf b/dev/_downloads/9728219edea47500a9403b3679a5bc09/plotting-10.pdf index 62bcc64c0898c310a2e1fee8190f7e1a5b3c2d67..8ded4e5ff1d43e82f20c6970dc9ffe85548948d1 100644 GIT binary patch delta 16 XcmZ1FEiA9am<$ZJzZGNAV+H_+DG1yE delta 26 icmbQeMPT+8frb{w7N!>FEiA9am`n_|zZGNAV+H_+LI~dg diff --git a/dev/_downloads/9ffeab016a6116f06235179bb36783a3/control_plots-6.pdf b/dev/_downloads/9ffeab016a6116f06235179bb36783a3/control_plots-6.pdf index 4d0fe6c0b481520b8bccf7544419e4f5c9ab5098..1432cedcde959ae9ef007b9c7284c459c79d50a0 100644 GIT binary patch delta 4058 zcmZuvcQ_UN`!KX*z5eP0B9Z5%z$Fh!tWFlJ|0*_W*jo$zYS zhO0MPgM$cE4Ydo7JoBa~miJR{&=H}-Po}cc-8I+wfumH>qJ?93@;>sX&Rn#f+R?_| z?!$@{iI=#8d%->j+Xuc0OJ|Q>TXpTlc1Vz3VScPs%B?Ohr=_nQ#~eTX8xwPQj8i2N z=Q{&W5gfa5vvRT3HAmbgmXjXgE#n=s%D0SjR=hCbHzA|&QsK*Z%h<- zZf&V!{TRv1M9>JrjDrX_?G14kka~uE855mDfgAL0W5a*S8i2jNe5~40>U1Z zE*kkHmGP~!<7citHIInQ;9m%yhq@BAzoGBut@YB{7~rI z>MmoALexA+twb-p?co6!-1B^Zy*xxnnCLlc#jCEHV!F0yoT)I(E_S=5)UdK4_xF2+ z7inf&iDLM;7UgHo@zxR&Yx1CXUtxG%S(c+42i{VFD_-b=kEyOA*M*4s5O&FPor+qX zJwYMo_FFw(1LVz#9vA2`UgIc5J^a_TM}3Q{r(dE9Gn_AqIb^S{k$=4DGyZjL<$y=# z{xa60(UF14e4tXugR9AjFV2O^-q=hr9!zL@cGDV@FF zsNmy%<7mF2p;iqvyY8nQE22-8u?d<^fUf&c&pU8&vfPx{f3A)Mrdm!uvT=OsFu^A8 zLQt}M+9Wl$eP2%SR1mIWmS@8D-Or_{L(HWLIFR{H!R%GPb8m(ZCRSYQon<1l^n?no z#DejC^6Z&;6F0YSE^wtlfb{+9yzTBVozX-yc@}!m*GbEZ1YYC& zZGo=DhG@Bn?;(SUpVA!5KE{R3TwI+W9ru^#w3zpOcs@CH3UCUm`^`_dClwy0V(r+- zZqgZ0b8n#Vj^q~6sy*mAK!{Ja#2~H8gUyUByh_IieD%M;;EP&vCf2E+BclCM z1_NC5v2td5xb6Nc)t%1gCCVojFd;>@xgU}zmnCaAa$Q@D@bq3$T{$Xe^e0xsXV7VzIyZe~wtjROiki_qv-zrio`p!c0=X z7V}{0!)G2{Sa7^_Mf>TB%Z^tOYcG@Ui;hjM9^f_{|7oVSRMK*|>sh++eNmObtaqmKnRk>$1vp_5+5V#ik6Xn@8TYm9sz-L2=X{C+B@A*G;;kyB#~Qrd^kasiB{Or#!2)G(KkBZa zZ)=G|fTP@Jn4r7YGvP~83%P(;MzzfF+j*bfsNsaml#d43EpMz)Pz=}ecA0Z?hw(B} zoWmG2!|>rP77gqcT}?6Y%R}nR9m45K3f-v)-aBtJ?aEWYciAio0|n^w3)7x2eE%&f zn=3+|fA>;RzuBEW)^W@vbWPfR^eQ@MMAgX`Ig{$}X1tM&&y%F`;DG`1g+1xM{XBIR z3&b&D<3}*ze98`g2l=aVuJtviZ^g z2i$>tS~sv6Y5IIIZG)BOHU85rh$d-G8C+9-;03Kl09l6@WI*z0EBZcZnxWO2&(bw2 z;jbu2zW&WDhBNGaTfwZ7=5!82tovbgQG|@-4*_rd%H@k@(zglskk@&`-Qc#a3$tsP z%pYtB)K!uI$u_9{a4x2Aow9h?J5A_4YMR?ip2YO@Cr`>R<+rQ11jtR1!t(fPa0J7a zaH7tRwy;mEc%hJXc+I=2R%!IH+c)kUN*v{I{wUXh%CEJ~w$+-%BB|kstv&v_475{-^dn{7C;y~3+Sppdk+WeP zuTT?en0m^G{UBrG);nGuf#eUk_Zz-XS?r&0q^_q#W#PZ za|a9ivHsmN6T1l#HFHke{`DAl=!kh0yf;d!pW?y{?#B^MX}%DDS%IJY@^CZ0_+5h_iL6Ha$O$`O2 z>4O15kdu8dAmsn)gTd0(HP8$wczU45IUE9ZVhRX_!of5(FcfjJ20?*nYA_gx1`h%Q z!B5PBAW$Umzct+dkqQALXe5A(2@Gd36r9!t6atDoaS|X31w6SR2neRh$De$|{>|~ne-ID}JE<7- z&o(DWKp+t8q>?`+I8C@fNYuYc{&0Xn5E?u%7==_gNdks}PTmgmC&1A3j=wIkLqITg LIXPXEOYHvvUCh2j delta 4025 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 F{s(_pww(X~ diff --git a/dev/_downloads/a11367bb58b03bf09a75c9657b4e223a/matrices-16.pdf b/dev/_downloads/a11367bb58b03bf09a75c9657b4e223a/matrices-16.pdf index 8b3f8633cc67d0ab3227d471e2fdf87cb51c209f..b74ba15d7a80cfbaa4aecd54d1784c30573251f5 100644 GIT binary patch delta 26 hcmdmZLU7{=!G;#b7N!>FEi9smOa^A##S>Yim;r_D2n_%L delta 26 hcmdmZLU7{=!G;#b7N!>FEi9smOs0n0#S>Yim;r_I2n_%L diff --git a/dev/_downloads/a1fd2d341cd81043a2e4702f43ad98bc/generate_plots_q3_5_1.pdf b/dev/_downloads/a1fd2d341cd81043a2e4702f43ad98bc/generate_plots_q3_5_1.pdf index b8eb9646d2149b9a2fe43d3d1e8025b1ea4c13e8..908f3e51e3ce36ef8a1d34d821c9785a429f9c44 100644 GIT binary patch delta 18 acmaFa$oR66al>0{W3%?Ky} delta 18 acmaFa$oR66al>0{W+Nlx%^$3PvH$>3wFo2t diff --git a/dev/_downloads/a3a06dbcaf4cb9dbce7fe53c37ec22a8/plotting-30.pdf b/dev/_downloads/a3a06dbcaf4cb9dbce7fe53c37ec22a8/plotting-30.pdf index 36773d70b0a961025a6eea51e7d38cc25d58f77c..984eb84b5c97944c3cdaab6130825709321f0e4f 100644 GIT binary patch delta 20511 zcmZ^Kby!qU*RP0zh@^^ugh(qPAYCd-NGU2E(jd(M!%#;+K_sQ6Mx;c#hAv5|5r&>2 zWJrghyS!(>_x-+mpXdHJ&pBuIUVHU#t+nI2h~~P9ia!zoslBE6I+wJC!#g{_SQ1$u zz6BKSetb3e+2NJ2vgNdvMcelYjj=oEpA$JZG2ZJAg?>aY@BDo59gOg zXahI(7cGCXvI`t0oA{mtHy-ZIouF4wwm!-I{r2~;W#MRF>3FIU$VN^r{ykX}!cEO) z*l)Tm!W$a?0ql2NcA^8=i3+{E#P41Yw#7JID1?!Q)vYpE3%|gXQ**dmo%&3S*W`flW4|+T`Zy(>BoVent++NGbP_?w~ z@jw!56n+J><7xLb#YHR8vKy64Wm22QHZN|fKW{6G+%}Y0ee({dmwHYX>l=AxNb(!~ z>quK9+wq+RyLP-)o!zHTUJG|gnc~(Plz^Z+@LJAhq~{d7!Zz|1&639DX#D&wfUOlW5ZDv8GDI5$Tr(!FU*9)I0-ucqV`TJYguB`COixd20 ze(i@W4BrC^KfZ;#Xr)>9qWsbpw2|Vob;7acN!x~QnLnLJZolk%bAFUz^^FDaZL+rO zoY(1p_MWjdovs}>sq-G)>p60peP~kWg2WxdDPH;L&@`Qrd41}Y8iCBR*!;TX4yz6d zSjJ^X+i|??g*M+%XX)I4O4)3q;IR9mg*y|j0kyOYZ)^>>Yw;I$`Gp66J-Apm$F|In zIn}!NaaZdq25|3GzKXp&;j0#KNXPKT%rLHY`}E7EDw65pt4uen^h!@I;Od50C4LA< zS>HX76b#yRACO<|_yN;lAJj;qixQa}x>ON^xHuaI6&3#V!3=xeF~FO4sq#yqDUm2v zHuOsQmqJ@2ae~aszx=9sE0xXsev46aDj#Fk?hVkUI}T(wv4OmJH?9(M-W3$`lDKXI zj93zzc~7<9tzKc>+&FCkh{){i>KOeD&|y^k}(% z+B7H^edm#K|J3zD#i}$>=P%ZEt28T-XvyM^@&#%ut8ffK5ojC%>jI`zMW}*{x=o*c zWKAKs$G|0k1q9EIB6dHCPH#(3`*x6IzDWmkD$mH%NC$$z5D!dS0@||c_W-c+vjnHS(c8hBO zL2(`(=cg+WPV`LP&a)pW!HX2OuAdoq9y4NsOg0JF<`pz~ID?DqmXWX?5jNd=;6fp{ zM<8U;e}>U#jj+RiUj8`FY$GL*@l4Wgt+~%rhusj#==1CJlMZ#cQS))gC6O|czaAo! z6_+XjaLI@+Q2Q}RM&19lPRvH8d9FCLaN(vaD=_b+!`QnSTOsTyogo{1PsBS4Ii7 z&aLW+Fev{IJh-cpB|*~Gk)SF6e<*wSkFpIOB3a;+QQi@6&lE-W=>vj|VOZrgPE9fK zv#hcsL0Hbx-eFD8|DPk4kodK$z}EUv-ah+^z7shLnig1scOgx58aVX`psK2no}J!q z;MB=rkV$U;2vcMRIR$_x%+&jjyiot-mE`^(c}f41m*Vl6yvn$k|B36r>nL40RadHj z6Ktz^v3JsNeTo=)BV8>@!1R@>4DK`cg$gcP66zkc;xbsc3919%`O? zC4Jpuf;o?rDbj77a^FRPd?#^-=|@j~Nc|a$^ZnodllgzwX$H@jDbw(f#b(q<0h;fz z)CZfZTm6(CG;wBA|IaUXf}MfSm~Tq|0-^ril7+)nv#<3Q4X8|T*k+c-V& z-^M|d{|@jQJRP{PKcmf}VVgYCcKFke4IlKC)7AT4`4Sl2`Ai`=j&tK~NaI+y&-OCyRgxz7yb6f!{_|7EO))WX z?#sWebhevM9X!yRlDFsilHmW}EE*PS{v&yTHZA}RA1peiN_XUjdn}W?8s?8Pt3cg) zvwDZ?G;)A}<0ILB0>{6g1O|?t{{{}V|6kz1-sQ`ClPMevd+Id@%s+NHjWa_R2mjd>b}<(U2;Ap_WNGp?YD4(lHF;@OPsb&iS2lm>UYs? zclM1C;w>SJ2fg`H%m487;IF71)d_w#%5Qs9eC{j)UtV-l0SN>Mq3t15HQ;ou?_ct6 zpRP64MjY2X!G@M|z@^ZA1S8XTa_30Q2KCOBfuf5ilb*R`D^eDjbbE(0a$L>6p;v~^ zLv=7-gb?G~-lfs$@9q5`a9r%XBs0>3k&qJTbjAJixQA6!S3#}oW>;vu>DA?< z*6|g;-%JqxT-FWbwXK?pfh$t4FY8I*Kbw-A#X27F=laIy9-^=3gu-+lsc}|?Q#H$mT)B2{+>two z=T|U3v%YG(IG3a&Q+&&~FkJEW3U&;^7bdOQwQVbGK&Mz>k1owh62CJmmu8>!u(<4< zVbDyfAG}Lj>9Wvv#7*;IpzIQa%<+4ZrzSh`6OLLI>Yk5Ul(o8E)pGCG6#G?^21*u= z)MiOAu&CPd9U3RtEebiTQRJ1l7|uLv3~X39RiC(QE<|?O_C-XJ*gbF?ix#d?y)XC2 zD+l@%1d#Vn#GQ`bJY#H6<>sqjD>Gw}FbJrnW4Obqa-v==7QmwAlv*R{9XJ+oFOS>$c z2_>sL_FjA)z;jj{AmXx&D&@B{mLw&g-yF63%O$JLeSUX+&AXuNeZELmpMU80^%08d z(A~xv?QEl)@EFKy^N`y!C$kmo@mF%+;@SF45-5vd9TDEF$G6VF%|+nFKzDo^jLDx6 zJUf4nEk$&Dj)38P-Xajb?k8!2_V!~0HtCS7S~ zQ!GpFm|@i`^S8A~yW^Q=%OscnsM?$!yg?t{n&LAeUZ=U49lj1}=nYT3*f`bFDK;NY zwThO(k6$iAN(wclav#w05}Q1A(Jd^P&J^E6#iH+7H1ad5mSthI?&xKS8S+aBMGJ? zA1)X~wvRL1-R~R`o;i1DBknJDB11~gvB&%7b2(*U1?rmF2ATSLI?%U(Y2v9a$;+b2 zraf}LjxBsla(S`A?~{|Ii^`g6wufy*rb2TEY2S@(6BX5gk1=i%%|go5=77jGQvrWf zHPBYsFLJP2k&%%3VO3Es^QHJmO+ZksLEX>SUb`DvZO;@q+kS#Fc~^a*;ZjhQ;3q$# zygM<^UvvYXV9k&yaH zsiPX0vk+2jl=3@w47t52f%%?WmmQZIvK13mr`heoK)AqjD@AROUrONOaGW}@p$Giw z;NH72FN#Zv{_$SxC1y+X5zKno1bdyc$~MX`x6^_spxNK#OT{YzSe}kR>uh(m8NPpU z)6rN$@n`tOK%Zb}27(9%-dmp|AKp{mS~04idR@e{tnMb&H{l4UCJ4e`-SZq}(*1>88|#GEEb)aUUvWb}w>+-PV;E}aygci&~Nb?u87ZeQ2F zg@NflVkYa0@9TayZyliC@FDm$H9#X4gh<} zVY|)!5AriEB-F`5@0etz=n}VWU)pCQznc>|TraGzWk31Q!JueAPvg4K&k~8i=lFht zJ4is|?UEP3zfBA`bc+`Lrst=L|75c;{BZVjH)J3Xs{w(?@81EpRqMJzhQ8VX-leAD>Ekt<|8t z!}*IAAX-zQ;wv$b&j@$fhy~vdOtPI5nGGP*ohLv~Ws#p^uXP(cU6O3TVja?$7^22i_~2zg%0?~{nI znkn)>n{SFpo_g6wkf)3QzE?E&6E%IyT|pt6md;B%NKWgEOqO)&l8xPe(cYgS8zs6r z&h{(M0V1?1`YmFgorT*<0PW_e#H$)8jqEjzwgH`gip*0_mn{SIf|Omk@ocgn=YP*Jg2`ya*XTk0q?^RR{cZ)O*p$y$CTguv_q)=ix* zA+{w8Zc2JN2MEca&HK3S+%(C7O%8a7Rc$sswp?WIs1pK8_LcP=B6_ngYelf6j9zIe zOe`ZCXvg+*BJ)0ld6~$W-QMn0eNjxBi0b+?AKn)V!JnX-v-QA`E$bB zpgHRDRhy3u+h<(H%Xi$$_YDvWZf|C%T~MVlz0k2fsn0^Q1-6)l*a|#9e*{aVHmUQ`csr2= zBM?a@&qsg+%*B>?E^wpfK1pj{6I5W?`)*No83`*Jr$rSiR3-6WsiIPGuJsY74mERN zDNTFuo1Td%&R>^%a`|_??1;)a64FAix2u4mkaZq+n4Qrt%DqwoUpC109xy=~Fpmz4 z=6cX+l8WSoh_}e!;8$W{t1l4TUH#LG&982*t;^3BykfB&=tDi1@Q9aQHA>Zpf_L9@ zT+T4P{8T$*c+ba?ViI+!q9vL-@m&C+tdZ_fx_6PP%d;{{m~QpR;yQ)vLdXnY*+YC) z%WY69^?;*z=i^495~CktkK`x}+RbaeZqZCRw@8Myw0}t5bAU3%x{aErHy?tW$8st; z4<>qa^O&!{j!fVua*x=xVQ^`>-<1EOm*jhHvor|K5lv+HFsLfH%z6M1n3H}?D7mO} zuS^QwQ9f_sq(RTRrrd%A=-irJ7*^w7w9hmn>4GFF( z@IN`nytj@eu-lv*?d%_RVp*csc6WgQ?hPb@|0}oBb5zx*a&y61=0|!gZ;nkHMczNM zZ)O2QGGV8FO}Z1wh_rjgK{9|NO-lW=)WE=uFX5APcBX`NM@dV*$^8n~@!A+VXxfKv zU73STVP?9)nZ@R#Z@cGvsO7(!7G!x?;*{Qsh=PeDg)9g3eOtyi0;&vxbH=^L3ZE)v zM&qnXN3obe7{m~s=YG4u8nIoy!&?=*n(0Bb(_iJ7z_)P`2%{~aw5)tWG-k|?)X$BS zni6c1W9()YxK8r%GJX)RRC3o>?N805{^P;6nMbCj`SkZB$~TxctFO0cAHb&m%8aOQq*vk8yr+C`p(Wk7*g+S?@v$`3+lu-`)=aIC29(DZ)tNk;Z-!8RJ*O43_}WR+Aa&-NS@hK7^+J5t=ZJ9g z*mLb$S7_#GJI5cK=5}G?jj!oB*SzfvgmFOmJXhO8(E&=LkUR|GP6X^>t+J}N3y2}d?1r5VM)zPb~0I3|4kjD?s*kd z3!BCf{pdLJSj_00>c@Kt4>U69p`60c9>gn#ypEc_s#a@gDX^^{lqhFLmE4qXR32^~ zb*tS+1!RRy*gw4pr)|E~Z*@F6Y=#CdEE4<4cj?2K*mnBwi9}~Ue-sw20OvrPmWe~X zm*OGEM+7_45-548*7PvOjj!B}T^H&;&=(V4^@nyYN`A)Z4p)2)S=DC#j{fV)_Y?~T;L^Fxf=VD252>>)J~Oy(vA_SSqLGfG@0QR?G*p;CL-*hCZ<8q2Uk_5rrxrj3@PhnG2=_e4n6u( zNhP?X$ep`g7rqd%JWz5wx?uW}B6;?6G+uh$*n3Op@0&~`RQ3aUX8$ zvIpd)8fDsHxF11v{R8~nv8b9@Yt@e+$+fdE5KjYN=FHC0!g8;$4AQHK{9;SDeHYBb z_H@{Z(0X=CUR?1CAQeKXMx8fV)V{T!C8B60;gv4P0tv=JuGKF~@Z;JIB!`VoIp3zp zD!pqC(aJ{cle#(oI;SwGtgyC5DLLm{ALQ?z*F-tl!OHNvI+vJh-Yummt18z4rxn>I zqeq>D1lp32K&NY!zWl`TlT&{!MAzO-x4O`w(?HX)-t@lB!l<6(^1wrqDmH&a=z5x> z;>S+m$HEbeJ(5*}FgbU6*3BZtzSevNW#){03PQ&A8R#)!>GbbBBiXw_ctr-C8QIhp zk3^S)eXGbPmw;BF_86wZr7^qMzrIqJRsna4Vcia?8zS}XWL;0Jjmg})5JqP&q?#(C zCGX!+H&hBoH5B9(SY;Dro{a=$?wKGmx!tKNsYmjxy}xWOH)T`kZY3-m2jj$qt+9{K zZCdQh`)61s_i?5^aiU2M%!S&fvfO~MuA(BM?|-cV{Dr)BU;}C1$3Lt#WBPm>T-k$; zXjTV4l$K|JI2wJoGi!c{cgJO^ilveOZSH6B`SLn1^n2ywk*0Gd%XtXnw_X@94;QNB zQiXnGl1)^7DLB#41F6q@bTZT_Tce4yzq-NW5r4DxLM(_pZt-(sWy8a+eX@5}uSV5r z0nL3mmy2?aq}@KrRez@}^hlQJlYIKNCbooTfv&1k2rpsr#pnKeK2?8jgL@CHOR3`L zz((Rmkz&Aey!?u7Y9v^Em=-X#Yc*g|rtdoAbZxT8icHiwXmUiUo!thZtYDPXky)wQ zkNDQyjIC0YW>}9WrF9Y}@C}f}PK-%H8_~GkO87k-Dt%Bqh0SS#`_QeY+woZE2P?Sx zx(m2^)e1qEv^3JFKXbY%Qi%<;H8`&5Ao*v*xqnKczq}cnq@^YX!A`=S1c*Ay&CfJ1 zp8B)PTGjpHT)%;Wm|Qa!ZiJ{;@3IkjRv!_DQ#Qi08zAPjJ%bR=+Aar1TJf>j?){B^ zT!$V-%zrk!?lQk-RTt)dv2tH()X1Ug&{oss@SUO3c_B~~d?OroqOMy_k*~L1dL`w{ z^rq@u(pTXAudPG;?*DG&{M4lR^R%p$$xx^l z3`V|Fn{d%~(xTg&aQF&Lxn|a+anBbVnh(ue=TbZmtDkF+iaw?gyWsqp!ATX&B<`z9 zcMC=`9<_z~KIGTgS&kB4`B-No=-sQ&ECFTd9E^ZI?`*VbfI3|0&c2bPwNO=7Q)?nI zYZAV^*5S4?j?r4?OT5W~&Wr*?U3*5TiY#S8k9jLWW+w^MP@q$#@sFnq!s!!OT$|18 zkTdISWUR(l>iQu!pPA~K#_8s7v z$?||q)FG=e&~}tp68tve$}oznz&U~ibN5^j5_H7Nl3!$3A%%LKyik@=$hpav9pHCR z|5s`bBnc$YH1EiO!zYf98~5Z$$LVl^R(>n^_e^|M-9$dyANF<3D=*+}nY>o{Kxb5Z z_q@+s2>1;8-Zu$VQ|Jxi!}|L3K7+vJ^&1lz577#;VWR9Q86;xdO`4wI&h~$z?C5S9 zeC@5;ZJNKZyW2$#h$75Jx4r(Tzhtb-`4q$=;WOyrbq2#CD8Y^j0W+_(%csKeM?@Id zS5Jn`ra?*78P`SRYdqQ9X~Lfqg+_WdrU+ltgwnBLyuoiarVY_`nY_5Gg|Q%*1lxr` zAJ5_$?NGncmdgZ41R|mr*ZE;n4QV^YzrolP1jl!R9lKM!hX^Fc_FZl3P9&vE)@@f} zehtrUJ4Gmz_y4f~T;?-amgM{pPedjlUc!-vhK%)*dt7`}zuq8Tl<_3rh;Qi$qOyH` zkZfhb@ikDb|Dka&UUFEL@28x`iwH&x6RCE6D=6ll8c7<=HN$O?Flj3LQeqsd`N_~| zzIBD;507PnM0u(5zlVbog|ODM@3zq1Z~@h3k~E&W<0y2MHnV%d>{$f#>)cnKf;OepFX&fS(6W}q=%RB zoYB+pKlGfqoYF%RsmgD-C8#>~r;za-mFK&IF+a!(P<4j1?ExvUNANL0h>GK;U|GFD z#f_zFQ2v49vWaa++2(rTF6DAa8O6a{X>}0%vM4VY&Kup`(%Vf;KV^`^BI$n^M0D#P zK~SXfxC!rg$5V>QZLm2{ait&WS($PQ{n;PS5|lWq1K$aJD&20RLT877tu)ZATyFov zziAHTooB_5=7JA9xuaq2aoDscRVfa%WFGC(ma*wJ+}6_S=atm2379itp0sh@oim&8 z=&J=A?g$}Ha7KZEv&R(U!Bz}`U<_c_FBHsAYJXonh zmiAG#Z*Dck!I$+KSCc1o-Pcv$g8Oi(i7}9X=;&~|ZPJ)ujE22;-8r{W^sN)Yb zfeN?}lt%daB6oxMuMSUqO>X|S-m3Q&8XFw_ZBRNWZ!pC+R@#FaMyn9czne!DKej;w z0m7m$bt{)c;b?pK1D+k)rd{I>5UN%F6=`<(xfx{&j)HYg4rFo^D{YF!xz6H~;;&8% z)>LlE%|ZIVI)~9VRrT9~EeQ`8CkSRffsM(ia7z`H>D|d3*|^o*M4EZ=*6;3qsO&WJ zSP37eODv`WE(wX#h*?-?@mmYHa}ChA&+nh=R6&yIYg|P260FPYi76XYb1q<~={Z;$ zCu1(g-o*sXT@YtR5(i~L1nXvcf2lltZS7*WJyJg$MGf>%{HpM-p-Z+<7kYXQOFjv< z4(v13Pa$_JicK0C6Wz4xAY!yFR!H1)33b@a^#CsRN%ylyoj86k0v>@v+-+0Wzv@w|Md71*?oj>1l#A+l@2kP53_3uORVqZN1~l%< z6$J0x_ydS={5T5wMJ|yeEAJ%M#6uLuYQ?U`>G`iL<1DqvMbBB7rP*ybg?Jn*f8A~Q zO%X$yCR1?py26C@=%p7O6SvyRbE5oyV?I}5X^yaKMvHEIhlYn;H1o`k-l?Ul6*)@l z{6tsa7ZfnjbzWX)z#fotRt_+s#TWn>ZK<(G2+a_oF&?9m)RvMVTg?j@t-nWllBpp- z>w6_L9NISDny#-|%!FgGX3Jh!f!tWBe%t;96XvYoJ%-~Xx{C4G*-eZVdB*H}({|kt z)sI{DXLfQO~MF`~4H!X+6lhu@H6%r!Gs3J7QA{p-FF{M;QpE_zC6Wuc7o#%YKTKGavT3dT@Mb?syFFu&16^t%ru?YIcU;2S?qEAE{SCkfQggNULS+xp{YBqN z=p7Cp{77TUdaMsGU8;JGOm?8Zrf^N-NWb{1nLxjQ7eYG}g_wag6?^XHVrD)x%THN5 ze5gdxwZm12hw;Ty^fT65c5Fk1Kw5W$*kVByFP~5-kEl(gWtm_V6O?H{@Mc=DG)uD} z=}}MoSFR!8`UFv?j!AL^R&AlL+Pt>V0=JR*K!3 zP+|s!4{Lo070)zR6Z{5KyhpHU?75(}Y&J&~`vDuHYK>FF+sfH=y&4v6K^n+qABez zNQbl(ZBMby(~j`aoNCDRU#Wd~(2OK%?w~&NU#$}TLo?sfs4m?YPm~Hge|hWJIQ*z@ zvC)HBD&Qu`Qo?2Ax$+Bv*kV4Paqo)cep&|sh=bFk|Ml^*9l z^q#ew*bST^^jBLp&j~dz@}R!se`sCJ>#=R9`9b5`+7MklihWS@T!7z4`kX>g5@=Fl zw&4bR9n>xV4h)=~c%^it?u6Fd@9wOv=2-S`u{F?Qc|9NXaPD4@u+?N^Z)=HZCT`!- zWzq1b4l@fRvNkqSWh!Lw2JF3h z5F(V&#L4w96jUkD`uu$fB`*?vBWR}~cAH8FxPbTSABL%3BgiP<9h4C;a-R187E)cA zrKo${r`E&>`E3bz>wx#>QJzOn;dEvKE~!rg(9sKQEnt{=oBTS;27nc+3fbR{j((Hm zLzWx*o+;vKqyxXfJUz42YrWDr>x!^QTXk>saRyNJ?#j>V*;N;ayqPxmni1$TP9hdR zGSFTG>|`hoc06+I+5Dvqm0qqTZ<+q}z4Xt7wVsxPNEoa@#8qMWs}RmA$r{flfGcs0 zV8luV@$GkUC5^Zaf8G!RLIF!wb;tnxNY~yvk%Tmo62INrtzQ;5ZdOtQ==My_n2f2T z^2I|=w&HO)&CM^e?PH!odi%WiV0lyF<|n|1V7?+-W4ywVW32*MS4=)R*$%0RlX_g> z)T02(=zYGa!_3nzik15Zp}L|xq9TRH@1lz`6p#2%xMKaDiEuf%t8IQU|o;8AkFEmmcyO{)`mJvRI1G<*Z9Uw zrIAC7U7vA+uM{l)MVm~PQ<1^B=kif7?h9`+BZ~*g>!160PfcCoREm*1Q;T;vufmAaDA}ZIWBxnCgd~TU1$y*)bOBN@;H1|oHf7}X-5=owkHfutS$V~BI5W&s zAs{?8T=vt6;`L~^_&i1LL_!#N-9drVjr$!KCOP{}JHev0!;x*ZFiOsZJq_%Pn3C^W z2yVn)ivap(*6if>sl_>@#EK&)m0~JIk%2+~bc)L^uz@*mTfw>;>c%wk92^9x{2blk zVeFUu`Wd3^e$^%hqXjF3$rZvSW*m_FWmyux!Ew&GO%T#x!D9Q`VNTNdTn&>@7>=u- zCewq{Ve;Z!A9fEa`F<_F!|2qm0no7B7QpgCs`U`%W{N|0h^3WL(e+250-!b8+(k&R z$=ZeHB`Pbi8CD~S1r1gu%lREJenqe$=2wZ4=iPUpI5YI@%odz_k#S z&&RrwD{ko99(+XO6ly;VtJQjfGwItecIt?gj+EQ%em+I7Z;Y`-7fPN3>-Xre(#?a% z;H+WSY`D2~zg!2PZEuxp**-B~c=h_bJqF*Dc&4?R@NUud%I1e?$FK=*oF9miEpD@HQ?%-lPUDNIjyv18bXA?)%F)^R)~(Y zJ&z5v(nLkiCpkB7e0OZ)8oCTRS=HG(qztW7+ovc5Y`kKg^)eQ^`?(U7DYwFZjkWGEsgels`$T(7&gUxM>sP(D!GJOMy7JUTua!VBq|(2&XYI?_{g}zKtE(k5pikajdmAW^uSQZw4_jV3HAsYoa5M zrT&0ZIPrJeNZMqBuf!qYR4g&Cix(B3l|8@p<0rD!m_{Cgix+w~80+PP!C@6~@>jfn zQVr2TOy;HfC0jA+%+(?{ysrphK6O4=$5g)sl3dD{z1;uYeXZJGVvX)sG&>4IFl!Zd z44G1_c#M820-aCY=)28huRQvVcqQ+MP|haXwg0LC*j(r?z=mx3nzB#U$co*3&bQO* z;JkJYh03Ncp-6O)c+2& zhl*GKTmhN&#ht{j*cANxME8&z$>An`UQ-0s;dq3%9Etdlbz3rWEczXoD>OL>59<~3 z3bQ%E>}mJCn6ki<9>d)nX~8wH|03lzih7d~Rr97L`^gX%%omKMKXwcq%IG8`90a|= zgn>%KdZNS%sLp<`SjAQ%NbX(w6ZvjebU<(h`wsJvfi%2!GBiT9Nb2Us@Nv3=89rI} zMsag9@zE;{Hn6q#Zz9cYVJ@Ou!gFUSF~O+Acc-HieLv*19YtjzR%L|$bn?Wz6NeD5 z+B`Rvow2-g{sG7p4TI7+_g|eb!bF=JK(PJh7r>UGeI85gHAJroUb*dvrg40rQY%4G zkKKa7z-_v-dQ&0|>TA>(Yv5G5o}M?5C^xX{ib zG&SNrgC<_(5xO3+fUk0qJayh%(@h*`t;y9QRW_$9U&>9yaV7R?x8@etk81z2zpIq} z1-Gcf!lWGy`#NCtM`3{-0b4XS-YC71^vwD`ip%TlQX}ra;@-p=Zukg)2uRMZ`37sG zyzzSF*Tcc|aEqBL_D}x6O!Mcr64^FYrIUr@eg^G#4KDh~THjv5@=FJvbZiI1wQp$m z!C9seu~L7Tc2g^54id_BFM}pe$fM#>@DaQ<#v3z)a9=~a8-Y3~?cp%*@LeM&kaRCE z<&kGM@d$Xa<$s)3OgW?hr)y|em(_02t=E{=1|0EE#t-L&qC0M*HOl>)OGionsvF$( z9ua0;(8`%@J>vH>*+Nu%ro~6&+e||PbJT1#V2F*_np-E{=zg&8=s>msHRHlAyeYfE zh=JKxhV@Qzqr0gLu9_5rT1R8@XZ&D$#vs+)0xvSR*gWn&_?TR^zJ|@I{JiH7gOVoT znNT6)@pMBD>|o>33&}{VjBoQDv~hqr^@FR0CsH1KNT3 z7THw>C;iC?hJ;_KG^5}$<2gfgp<{whxf$_>*7G3MlUk2w!Eh{Ad1PZ+d_lMUYqLWc zt3ysV7b%5vaz3O`^rAt}%{0qlASlmj6blw{OI&AQ`&ePhIhFCJ*$%@bC@oHhpRO{O ze#=b?3#9Jr2im=$M;!C*?1B7d(hN;|S|6t{xiM-rcW9=r97qV_6x~Zm+>XeK>`IM6 zQgn^x^PZc#Asa79O&7*y`!;8az-*SEkj?%xQYe`1mHh#T%}e}(doSqP17TjHV6qg6 zKh$!Nl7Uy&iSqEgb&5BgshaG1SBLLU)QTs}-{q&Qm)qJOftsOQ~ML zAYE>As#0*CSE%5MWgIoQMdQ{TuN*GsJ51`7EX*zVCAIzaKZ3JP>$`RdL&6u*4v&0t zvHSSvg%5EltVMwBBXGQSS150%xw|F>IU?SfYW>-xTR4ujs8nGEJCQg3$| zmG<}#PN?gbHsx94N6Olq!o|`TtnB0_S|dP3``uDxsUoXg|9%Gy>%w@IZJwG9f> z>cCk|-9lpnu|Es)9UvGMZ5b)`u(M0Xts*5ow*<>PU>fr55`;Z+8`~?6OD%bs0^3-+ z$E!EXmK2UY1T7)r^Gys+Y5=uB*TF@s{3_>ld1>+a$h{F6Lsbi>5GQ*Tj`YP}eg%}a zR>=kacZJPP=>F<^t(Uch@&C1VUR%rnr2jnf(zUueqjaAyr$koQ!=cf>;O^YF{)Gm_ zt&W+IYhW0ovJ2+R^5qTP7MFmg4T)t*@i(#+rhf#_H~e%=z+MII4J0Q$t=?Qdz!u?Z z4zHUN>InrDB95%Zkpr{SB}b0Ag)RQuF5qlb@#Q`QZ`rG6n3MCM4Ha@n{K(jHx9r-z z)<_%O4eOi6e~K!ZtphU@S&ya8Ber9zR)ppwJ$0vap)G?u!)cCSGAhX z%61CE|1+XI2PpVJI8BR5;Ii58=wVQbs}*^OA@_dPW^D=KWj-mMe$tH-WvsO#)- z(=?}-Yy9fCyK)PD&kkQHZKakx7xPJX?TynDCqV-$)bwjY0~b;R7xx)O7rY01R{E|@ zMHNSpfx?q~8CMh=XAw)4cz&}o%*`XEt7Z&97)iBu&YN=H1OCLR5h;;2$^$Xg>MC+8-79)p56gzd4$bN%Y`>)E^JQomXv>7g`iXL}h3vBfEYaZ> zxNy8wv>K>sc%>x>PgZZv2Ka_0`T>1qcsl$i8xxcT-xY`2*@mdF6V%`-<);esO!)bZ z@!z(XFKY%HjsVzkw9x4p7Vqt-E>Qo^r$QvDonZz`}RhIa0l_kA`hR>!>NaW1H}b~?hg%zhx;O{-fiRTB+_ zxyC;JEu8JoG}>N)cFrUunYIW1jlxQD;Kibx6k$dxKj!439EvP`rqd4dN`Bly=TKK| zk?MSvHH`ptFYdvn%d_@m%h+a{D5r6=d;|&TP)_@nqekoi?i-g~V{JKsVe-zSb3gXa zT9>JRi#3m}-?*IhqigLfnA>|1F0aXhTzu zl61WL4%W!#7<*njp!P|Ozs+jj_jPXn~D=Vl=YMrJWv+d{qo`PbZ7Bjpe>qKcIO|D z9w$BTs@}AT&am!92xz9F&$Vc5>vH18D-WGX_fA2RPP|6BJnD=xxQ&b;m~-q!QeA z1&{?pT#k0zLeEe4_hqWH_}b%HHY@i==vLY_3lfq1Q>;fjqXoXpdA;jR;md?mbbB2G z$Hzscl-S9#Q4R*2nQomrNkPWvOY&b|q-uFhaC+r|_5Hz_Z@dTC5zOmDE$#r8?X-_; zBIDUH#_%^{$=nrsPkz&L;4&M_)mwp*C)Bxq=VRy(7qzTovb|7?skQK7R<1$bt>2A( zI|o0srG+=J>Ke&; zRqGyaA9GhyDbm=D`JUCGn_b@Rk8*5wkz61s&e#d>79WO`!sBK@&$w|z4sf`=RFk49 zjZGEqdR87|ki9iwmE#hT#ADcgA5l@`5iM9KoARn?d|;LtiFRp*Kn#RSS#$e7DE_;0 zx{J%;vn7U0?1Ix2K{8V>jtdn#@7Sf5JOOX@Qq*D%exir|LXV3on zA0CqGv}9l-B=I}Uv8Oi`rp4G5JF54W{!Q?llnF?b^^we-PUz%}9&O;0%H2jQ#qd(I zTm-=4?Hz^oA-^dncYHQ<(N`1*rtN-Xa{(XoqB-2(pOk|Px3E#>sj2AM|HBKN&rbByYaW%|Sj zgp;QwqxF0BipKZBX#~NXD{bC@QE?fPVnz0O-4&QUzm0LFT~glDg)$9|*)!MdE8R6D zzx7{ELV97g-~?J^f>31dd6khW4WNZRD`_tEH<0$^8=Uj2OJG(Z!?CuThwB z&LCoF=3B@QOSKI1XNM4c(KpBt&G`8IsS;0jNq?jzPW4_AQq+?(iUleIz0}AOWc&+Bd{b~GRN!#hL3(^Y68`UzB zwLUW3?tjJzlAg_4MNxrc{2!J#j+O6C$o&wN@FeKWa*XArMn|OYxP1XbmTa)I==9yZ zmFFz30qD6H@NSJwbpq(sQx>o@;0yeS=TG znqGtc{IQm_=*X2|;Tr`5$qsvMFin6RbX|>O!0tJ%w1H;p&O59<^ zJy!RttMX_3+nlnWgg!(7spsb|tsPGJ|LAbz|7qh&gPOXca21t`+Z3eg04`I5$|BiG zK$F%MQ78ey3Is3;qCkKEf`}l`suZUvSW`iX5(+|a2|=KsY*CR3f)H1>h*2b@A~c(U z?5{6DIvvyZ>&<;<-o5wSbI&>V-18l(X9{_by$N80;FCA(yQpL^1&Me!oJlI%t{yg2 zFNf|Q(z`a5%ia*{9d5f@Knm5E{KQ~C0DO6At-U)f#SJfEri_<-s{fNpQY#c;B;ljc zhACDCId8Ifc(ifD*&+m=z~&{tSO~%fuhq0WMkl>i?r2~3>fp-?w&Nd0OqK}}MXBF9 z=wh=#Y?^?$##R(ex^kgj=BN4onrRmN`mc*8U|{u~pv+&TJe?@;8LxkmQCO@Eb=H2P+i`INZ17g{iQlO)Guc)XX=5TNXO zMx&^FMkxrX`30JD9kVV7Hzuf-{DC)vWg28f2uf}`gnS%vEj(TMNfcE3okQ}KJu@=} zrOaGIQRx;pgS3U$eTj#xWD1g#GrfSm{Ag2vVE!_xbIuRPX1zeLdh*c`z@8?WW7K|& zGhDQL)ucE|VHCN)R*+@_GeManEALo-(ju1JDbSVD8J1zs-HMO!gziMVR>oF`v5n!f zkg;>$fKo+Oc?@)LzPxl%)0Sq}wmbQDGViSF>neVpIF?CID1qW=10FEOIc4m^8vW=2VC=0bDKId2yA#&ssZ0#zM3S-mh_?ZNkLZH#(^OTTCwuI;+$ zESMDrik*J4isQL)rkjpHYnT4I7uID1KA$jh4#Y9Fw!GzE`?D<5zi#a7>`;Q??K>I) zR4aVfe! zP<1cLV+|*deW8!QOwh$UmmU&u$J6Dqo5F0JJor7Thso9F7PJ>uUR4s`LuJT#fLd24 z7c)Vnq7l%`)&N==pVu>k#ZF$d&{ zg;}~DZ&#W3vxd~+yq=J~$yv zhc8`nxlntC2vp?O2d`IPvpYrl^HUu|*sU7ED4(M4iSpdWf0yfWw3ElFVD0hoyI2cu zoUms9R1JW-A}+b@I50&7brci?0kBBt7*Ap_0@6qV7_NlmrlX1c9@Ej0KZ3l!H zh0JN}&)0RKK9j|M-AM>=&8zX??>-10lnptT2QK<;dh zp-0|JGBNX~B-x2SyHl66hSOei)hglb#PH>GM1T$bD#^+Mk3`koAPH>d!qN2HNN)g% zLa&7zpS6i=txPXS3>=OyZ$q2YAY}na5(x`2W$ZIFDSIx57BtE w866UZH={#h%qNU=M`1r7APSC!&$KQ552ulMG`-`%b}KX*V+DhG`ER%S2mWORO8@`> delta 20330 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 delta 18 ZcmeB4>Pgz*r^{+$U|?jlIaqfmGXOnY1@r&_ diff --git a/dev/_downloads/a6ba697f4fd41244d4a03ae13c871d77/matrices-20.pdf b/dev/_downloads/a6ba697f4fd41244d4a03ae13c871d77/matrices-20.pdf index 4d21d0b20e5a41f8fc41613496a2964d9555ec11..bda2458ca080f3ef65efb90ccb70c8bee8a04036 100644 GIT binary patch delta 29 kcmdmZLU7{=!G;#b7N!>FEi6Kbtj4C6hUVMF6IrB~0iQnzumAu6 delta 29 kcmdmZLU7{=!G;#b7N!>FEi6KbtR@Bq21eV(6IrB~0iK))od5s; diff --git a/dev/_downloads/a892d8f10080acfce9914123b164dd0e/matrices-11.pdf b/dev/_downloads/a892d8f10080acfce9914123b164dd0e/matrices-11.pdf index 3d9c4d93433d066b580cc3bcb5fc305c577aafe1..53ba8df32f76b390794d1343903baa047ef9e432 100644 GIT binary patch delta 27 icmdmZLU7{=!G;#b7N!>FEi595%oe7G+r<-Eq?iGYKL|wt delta 27 icmdmZLU7{=!G;#b7N!>FEi595%$CL$+r<-Eq?iGYX$VUI diff --git a/dev/_downloads/aa497c934ec12bc50f842dac34beeab7/plotting-32_02.pdf b/dev/_downloads/aa497c934ec12bc50f842dac34beeab7/plotting-32_02.pdf index f5f590b11acfe9a832568db9bb179db7bcb5dd43..8b6ef4b8fe6262c4fba0f6c7f709fa58f929f387 100644 GIT binary patch delta 16 XcmeBj?Q-3)TAta!)M)cM`8!MiH6I2M delta 16 XcmeBj?Q-3)TAta^*l_bY`8!MiH4_F8 diff --git a/dev/_downloads/ac472fec5b32a66f329e9328277c64b3/plotting-34.pdf b/dev/_downloads/ac472fec5b32a66f329e9328277c64b3/plotting-34.pdf index 4a7d1f4e801ed8a5a80eb04d7dafce198904b91a..2d03cdb7fecf266cff085e4586c0226b87e29f8d 100644 GIT binary patch delta 27 jcmdnHRABE?frb{w7N!>FEi4Q8nGH-WwlC&qkzxh_jwlF- delta 27 jcmdnHRABE?frb{w7N!>FEi4Q8nGKE2w=d>rkzxh_jv5Gt diff --git a/dev/_downloads/b0f2a5ef738f9e96458a670bdb264732/beam-18.pdf b/dev/_downloads/b0f2a5ef738f9e96458a670bdb264732/beam-18.pdf index 2450a54ed899da6f74b5a93de3bde563e072fec5..352393ddd34cf1883ce185ce7bed61202af640e6 100644 GIT binary patch delta 18 ZcmZooZcX0Mt;=d`YH4D&d4ld&W&lB?2C)DD delta 18 ZcmZooZcX0Mt;=d+U|?jqd4ld&W&lAw2BiQ1 diff --git a/dev/_downloads/b78b32e3870f0d0ffa753084ae625ec7/plotting-9.pdf b/dev/_downloads/b78b32e3870f0d0ffa753084ae625ec7/plotting-9.pdf index 81efd7984ebe5527b4753a7103ed254c9911b12e..d43a485e0edaf3f3f62f40dc4c88c57c8c188f5a 100644 GIT binary patch delta 16 XcmZ4Hw9IM4WjSU8L(9$AFEi4Mk%oZkQ+m)4BoR|TY#Rz)< delta 27 icmaEQM&Rigfrb{w7N!>FEi4Mk%$CMR+m)4BoR|TYst9)g diff --git a/dev/_downloads/c81702617d9f2a52fd8723b47976d6ff/generate_plots_q5.pdf b/dev/_downloads/c81702617d9f2a52fd8723b47976d6ff/generate_plots_q5.pdf index 17a066a9c217c077dbe42cb206600459a9ce5682..16e68c009df2102d8efb0837c7a9c033a3ee55fc 100644 GIT binary patch delta 18 ZcmccGz<9NRaYL>(v!RK_<^t=dEC5D+2J8R; delta 18 ZcmccGz<9NRaYL>(vyqYM<^t=dEC5Dk2Iv3) diff --git a/dev/_downloads/ca52fc8f0db47908fb8d38cc335d5c1a/plotting-22.pdf b/dev/_downloads/ca52fc8f0db47908fb8d38cc335d5c1a/plotting-22.pdf index 9e4833aaf12a0fdfca3fb13c1971a12ff5581e6c..1a1bc90930b68912a2ca08cc5d8aac8f2becd980 100644 GIT binary patch delta 25 hcmcb=fcO3a-i8*&7N#xC=X{wBOboYQ^kwd20sx5x33dPg delta 25 hcmcb=fcO3a-i8*&7N#xC=X{wBjf}Qm^kwd20sx5x33dPg diff --git a/dev/_downloads/cb44a32b25833934efb3a9d4adfe400c/plotting-29.png b/dev/_downloads/cb44a32b25833934efb3a9d4adfe400c/plotting-29.png index 774ac164c5b17c3e850891527a5767f16324818b..80abb442d9e5fe93ee33b64480ec7d2c578a302d 100644 GIT binary patch literal 6913 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 diff --git a/dev/_downloads/cc4619d4e67ea48ddf5026828b7569eb/beam-22.pdf b/dev/_downloads/cc4619d4e67ea48ddf5026828b7569eb/beam-22.pdf index 60254fb9d6385082851b770e660a206d86173691..9f40ca9554b23b55206be2f63de057623cbed6ef 100644 GIT binary patch delta 18 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 delta 26 hcmaEQM&Rigfrb{w7N!>FEi8)4OeSXAm6chXm;sJF2txn> diff --git a/dev/_downloads/d2c03725fdbe7104e13f46e3798a03e1/beam-7.pdf b/dev/_downloads/d2c03725fdbe7104e13f46e3798a03e1/beam-7.pdf index dd73649e7837239a159b11628e318305ee9332da..845464c96813a37c563e1b6a03c35324ce014f6d 100644 GIT binary patch delta 20 ccmZ45%eb_cal>v$R%2636Qj)s9G|iP08;`7yZ`_I delta 20 ccmZ45%eb_cal>v$RucmQBeTs19G|iP08*g`u>b%7 diff --git a/dev/_downloads/d3453595eb36f834c2ad86d18546535c/matrices-7.pdf b/dev/_downloads/d3453595eb36f834c2ad86d18546535c/matrices-7.pdf index 7fdd357361a1d6a7117e3e3b4d1e088dc977a26f..0e51273a4ea1339181293604d1486e392964a68d 100644 GIT binary patch delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oyOboUg?O}Fe1^}5Y3Az9P delta 25 hcmezJkMGMrzJ?aY7N#xC`g@oyjm)& diff --git a/dev/_downloads/d8f4bbfa41aeb33459953469d86ea8b1/plotting-32_03.pdf b/dev/_downloads/d8f4bbfa41aeb33459953469d86ea8b1/plotting-32_03.pdf index 518f3526da9624626388d0a0a9e857cd5ac4e4fe..f7dfd28948f1b8c0fd9ab1077397c3885213a8a0 100644 GIT binary patch delta 27 jcmbQZM_}R}frb{w7N!>FEi5w9%m$_=+vTNMJ~06RgH8xR delta 27 jcmbQZM_}R}frb{w7N!>FEi5w9%!bCs+vTNMJ~06RgFpyB diff --git a/dev/_downloads/dac00acb10450bde21ecfc4fd9c34817/matrices-1.pdf b/dev/_downloads/dac00acb10450bde21ecfc4fd9c34817/matrices-1.pdf index 03c16be29051c1b93bbb8b19c6c98df69e184c37..bdcb2cd9ef44bd591850c6fad18a3062f610a8c7 100644 GIT binary patch delta 27 icmdmZLU7{=!G;#b7N!>FEi595%oau_+r<-Eq?iGYJP1Vq delta 27 icmdmZLU7{=!G;#b7N!>FEi595%$A0R+r<-Eq?iGYCD0Mx7&aqv@M~L90bYOwjvT00m*2Ql%z$HRFrKi+Xg|afFe@{ zK#7t?qHPNnMN%Y3r3xft5sD&y@5H_Lxo3}i?-<|xb8->Hj!=02`|ftTwma7~q2Uz2f7oET=A~B=e)YpWiiK4S9L5e|^9mo=4PZhWSh(13gaDRtBuNrZEgFcUC zV%y+@c+ecB zJM&^BI{OG0W_AP&inv32u8v22x}-fjn(H4ncT~x%w`8hfEG<#VV0f60OgtHq}0G;Fyr-^AjD{|KSMqc2=%THc4dXIXVjUo=GoCam|in7ew((* zg4(q8r9OEB{HME;uCKQ5&prMNk4fu86Zqq}hJk_t-hQjc@HGbR^Q<_zO&09 z-sbA)s%+7jqBr}RDLfeQ$-_eUnSeaitK+Y`v~MMwLeuGThARsOoz`xntNx$wuPtO5 zQ>MfJ-9>tqu{D;uoqJ0XXXndn#bb2SrmE(f*sCL*(#MlFDTB~Woec@|*tbthx`%1!^ zPJ~F(!pwjc2NKI)!28dMnrc0mDs0df4IjD3C~P1l`)n|3E0=l=D00n|JgJg0?z#3V zwgW3BJd`z`>=mE;{Lh9VH%ME_%y^F)Pk6_>ArP#mJO7ZDn5|MCS*4Nb)hlTPjVtcU zb2Ynn(|#~4@vK?OH>5b<+O5Okyn9UET(=0o;ffaCGiUv0v_`&EjG2gpl?36rv62AD z7pMV)Hy($EIo&&U_9nZcHS9)heLbGzJyatac5hP_yAr08f8Wb9yL` z+EwqK&06`BY2gIv{XE#>$PZ2!)i`8*k?}A>XRTYDBGzR`hTt64V4^N=?UA?dUgtzf zsUb1B&puF`PgHAUHA2*+tVg29ze`}YyzwZFduNHe3PzMbk-0ZzvOxZg}GJ{KJ@AZaZ-RixY)3e&A>rPQXZ4Q-Z& zs$xWI^n9DR{f+%MZ zLM|Yb_D9G{oidEz?{M~zV-JS-cvpR??}yYRXyKjye4})MbAH8W8*?9m`c1DmQ7fqa@*xAI zYfegd=l6NGQig*e@|-bUx7_Ewg}B5;D}BiI2&bbCe0jDyT|}3w82)YN`wGF0Q$J(2 zEesm%!!wuF#V)dZ*t7neqLUHMpZkBIxn9`j5FeI3hV}|gd+~zOrC;z} z_Oy*v$(#b6k&2NRQ{LU#GBz#_kPnH`&>PGW*p=2k)r&=t&bdu|cqXWhcQ(;p{7?nf zP_gjdaDHQTc8o=rFF3B~`>B>*)f$%HbZxzE`~FzN!Se1$p}JQu;OhlxHXh;wm6CLs z_DAQqhyitw5K#?`Qj^v;*ek_C?LAeNS)= z(V{_wwdF6?ZmIrCE4p3x`9*cK&>WCm6?mTe_j;8x@?ZnMc3l1iU&qD#l2}v?$Kn+#k7OPhSq1I z#sYeu{f*dEb9axVYg*8#0V#BS(y?{7T7TP`78l z5pzqkwpYcdUU&gL%qhM<*n{=z_Y&QW!rab~wJ)^uhH-{riN3Sd?7@ZUm`bCBrH3JG z=bvdQJ78JESip{NCvd#@VGg+w}8V*+5yp=JOCXgYIY|_ws3P6eQ{B zMM+|NB;#*uk(6G$-`d^CEdr$pc=C*Irn(gqeQM6)Iy+0QwB!H$R?=vb0NHrzbk_mR zfT^u?zu&V~BCny}S28EhvTU}xe67mC?;L)rkcnR_A3S?Uz%<^jDEF8CQjfSRT*S`5 zw83|1EnQS{H)H*^hxW_P<{N9Gn`d77=g3)w;3uACjSk-uFd>Dm_6@Zh>#|esD|pw| zra)hP$>&sUl#-BJ9neFVsZct3t#+MclKKPLfD41rQDQD%o6;W^*fV$~3vV#{ijVS% z7=J8udCs$lCh^a*O>3d;r1j_87!c-eIcLOWH+PC?v)&#-hQjLgD9G^W%ID0dZ>B7EIc_Rf zcjnr0_m}$&iS4Lc8h)Tpa@;8L6cCD^dg)QbYNRRA#gcs-ykHl&Kmev5N>GtfUz;lm zn=UnIP0PSOcgjL-boOznN2}JnQ74pzRbYza-Gw-CGD)G6wnJCT*g~2Cp23R~aldkP z53YUM&s6%D?0vRA+PJJYTZ^#pZf5T{0JWR~qpSC>Dr{nfY_2odwWck{kEo9(;7y-f zSmkNhuP%Lxly@Z?tI{InYZC6o+Avr?Cx zOTchft;3aHF{)r9#MEOYBhgHyq3a{0nE|qIi&RWOSyGQq-mB#=BgLo zYh${tIEmQTR4jy5dgrU`YrSGUGANl6ZVt+}1nM zZziRRbruR+T40TN&Fs6!6TgQJ-%}fW+f}nvI?f#WRx+jSC#L9HdA_|{?!i#HEDhYC zPk6F0{!GzdKQLD(^9?N>wPDJ7bFsPT7ImJ7cJSn z#N&#B>P4QLpY>@aSD3egW(Som*PbkbC&!od;etJbk}6BG8*#8 zVg{QV>%R4ZZciRQ{J4ib+h5@u%$^x|BKS9A=)Up+%bA_WUC!diGhCR%hXQ_P?}UiX zi*C%d-!VmN-H+9FlJ@uSX*H`7C-1~^-!Hr5>N3<|efh39YpS?a^$L8|_i|$_`fwJM;B~M_iQzI5u z#)CJGRD7vt{I-)+IUBIbg}F~dXlvUs5afpc{7|{fR7;UF6G(ouzd&_=dTONH(?|gV zSK+(UG#`SwCI3e2qfSWnNd8@UG6%7_Z|%5uVR=o0Zn5+!4ga$n#TPyIIUMKoj~%^t zYWIt637JbXl{7>7xM}}RDayA3f~2Y1@Qgx?xcLy9%+h-RZrnI?6BN<9)xM5H4pzV88bJmFP zC6ck!N4}>f7n2&~S~UDy$LOQMChUp$J<;^3a>t&U#ZG){UD(p~7(MLiZxF6*x`W2z z_9|Bf7%%lJL+U;8Ysvl{df7^T?)VK3^Zl^s+K)XR1=)MJ^j1GX40q>(jgsPbzNcm) z+Zi&O6SqjEUHPi}^$ZUjSFpa40SnNW{fa&0C?cwL+}btqYB85yh!gLRm`X9&1YxO| zb(0N|4wsW};~ga+OWUQF4Nib|OCWw)w%n*@jmc;`Nms?%LLmtvy83lra;c~9uT9We zFauPp<1Ut6{P~eGf%65nQ$Sx_PuneC@djaYaAi-6`7QV`qDG>UIG{DoX+ez<{X6B( z1au#+n3Q9R)`d^DX9)`hc0UxB-fv$btmzn(A#BJ+%zO;bkx(LpvXY0ycFM-e)P~~0 zn!)X4rCRP=!-ikK43KSjOK~{b(8Q$3H?$3{WeS_absu3e5>CF3pa^7_52e`!UtvxA zNLo3j`b}N*S0a|--s~k;&YD1o%l)B>E=M~pBo0X>0@ubN_7(#a)O0g_v#QC#I`j)( zdG*vj1H#%!w)v|D_?6cinxy1NecT&zTDXq-Tpc4qH&brEd9nKncNasc~>4{*%@$@#pAQ#rqRbA^%qQZ z)tadGHSwJ%jy_+RVBY8}a4Z^$rag|4&_5Ixx|m}j375S2=|@aKh_EqVbeV~Zi8E|3 z>oei-wWaK{doJuTTU#p}f@U$2i)ft%bC;N)DjPJJ$0}`B1^1P-FrBQmb}cdS@zYEpA##TAHcu2@wlu6I~T z?vyd}*B~yr-Q3=&xXd8a6*DjMd-w{t= zwd0q$Y4BwO#;Vqd$`?HaxB%#@;hGQ zQj>TcR$^nGANqJ zrfuIZrn`0tcB8vDe5#KYyu2#NbBA9R2LDelB z|8@QMg*et|G74drBE%u>hjn!K0z5+rs-koCQPGF!2OyRs`^kiAlB${(rm8;vgt56H zZyhqt7|$XD>cM|n6Vo{n!S9lLV`W?^0Lss}LPn2U4!o&xgZ@w0)sJO;joK-9b{j&d zX842~zVv$rcJFnHBIh!-{7RtlBI~tieBpL%LJ#I8Ij~-kDPpomQbIE2eoF9FaE|Ud zCfcP@;*dQTGNY7X&tks$<{ezvaB-5tVL>Iaisetv1=Xa107FaLyon1~iGQDua2gzW2 zj#YseEkP0YzSynxk3AR@f7FSZ>Zs*acSkv7)pWi0Rr&xe0= zi85$R7)c{yB^JmIV%3I>__b9yo#mu_dvf`ZN$|o`cxnHR$NGXE;Cpec47TW<&WJM1 z$tCR)BrQx@S!VDNI~$?!w8`@*Fy_~->c0`TxgHmem59tYTh(Xg+tV-lPnTLqauZFV z?x9+&jGL0fmZaF0FV~l{+p)Ta%Jn5B%jsfM!AgvJ49J?ciG@i@N?1VAbQvlG9aql7 zV~0n=#tmI^djtBE0v0E&{C~ohe?~7}UvdRu3!58(_!f2M#@YE+M{sxv6`V17Tqnd2 z#iO-$gOZi-{r_W*Q*e| z@p?D8w96zd_~>|#^7wn?PfH{r_O@NFzh@{{DPtYb<6ON+3L4AP_#P{X3L2Be4HePj z3$OLRfH`VQgSyRKF`Q$VxLwgn58SCix(-_7_;*>Rf~&l{e#U)t+&GU0vImw)_ETmu zWVJPRODdih!ONgwxcE<9tglPcrYGEJH-<~8)n@SYDU;)eQ8qBNX%elTIiZ4?<>8{G zaG!4S#Vh`RB_+cux(2ozGe^gOQ1dLc=(vJWZEU?P>i^oUrn2)pVmw+rYqVENhnVq( zmUe}3k2a0m7ncQvHowFuS#s<7qCF-9sN(nssUQv$|9F0VDF?lz-0HMd{acEo9B#DT z)C#=i%ZUsAfNhR-Sdmv}3^PrPMZ&cb!#B2~V*A6BMT5aExpq!Bl>%CH!{0yF2Y2~Y z2$tCWynxO{Z*LtZJ+Lov-)0M#2KRx{q@1WkfJqb=Uh%=c(;GlDcpj3e{u?;_U*FUA zT8a6#+JF6OT4hwCzVNyFww!`|7@0rhZ&Vs8KyT5H=7`rm{T;<5AFu)ZHN@FW2eDmp3%<2WU8byaFbGHxrg$GhiZG!)tO6?84IH zE^Q;WPTf-@+4>km(i9r@CDLH51wtLMEYEjLDU+a3GYC=Cmut8f=6f#jo^T?dPc%zg z@$hvIm^rjrf-m}1E0uYdS_pdRN9V$edL_d8wldN}wn`wUn=Ci>%+?pj2iITYrnT7@ zU{%V_a(z?h22PmC%hVUO_x}NVTK+gj4mTrPej#<+*I#?0jK-?=Y`mQkO6 z1bxF7bCh^_>ZV{w3Vky*n%2I}jH%)r69AoG_qb6C*)x^!4?Wu_*fys!Nb~yr%mJaJ z;prA=#v_>V(zsb;wYb6qm}>+K)mq8RhV}U|%B1%@d>#zP+TKU&yo`D!UwxsTaitxC zlb$VXNT>L!c@tO}rpT{5JJRu{fXcWgYM9qb4DXsg}~eZ(VR6n*?B&e|B6u%2zg zgRPYl)*BCm{q?;|6O013;xO*sp=7Pi(4zSk+T2HrEG|r^W$vR(E@6YC6u?v006E88 zVa=C&fFJ_&pQG_Drl3rhwW^=;34ILDEU`rI`lL`1#qvLYXWTzY5?y}^Nl{(X+Gl;2 zrZk0zQ6J-jwhe~^OtAcS2=yDYo1_lQts6;0*pC{hoVJ9GVRHobeY-Z>u4r{;3lZtC zDo_=`6g(^)tD^=C1nKD^TXQQ1&&v#1?7)w=LByfUn8VaM1;`W|3BH!Ec@Z^^&2hnv z3`jWzCN-SqqUta8w5oZ_WIilGd%nfCe(p)sxRs;5mk4Gfu=PEF;UH~tW-+qK80LGK z#ZbzuU9?0KC<}=hBhihNm3H>vK~lwNHUtX=N#q;GO|>oRZ(!gA@0*(%Lp15}EJl|b zUn*{H>?TY+1EZ!MgI|~U)~;CKhr&>~C7EIdL#0ZkT>C|^Z?>`^Y7r~(*`Y@am`U*^ zIaHGl1?Ix!w#5eY7e;*D28`nL*tnyPqb zC3e3>7KSCYU(JbA9FkwhdgZ~J_9lj}OII*R+2$B#@q$6Z%VBz}u*clpPTxB#_u@zO z#Sg#>pu3j*UNL$Uw+R@zFBjIkfBTPmnjfk|@WVG@b=~FB9Ip>lT7io=3a+>J0bnq9 zc0JSBj+tc~KG~?wg-wG=Q&Rya3|i_z0PejyE~wBLZ}D<-Q^m}FjJR}y>zg(cL}$2A z#0}-AS)!PG!OKATF>Z>zWeYG3q9_?4#`}Un9get=%8fmJe3GWtYFEL$QDGdtDX}doTs{x zWy^;?1oyA!QPks_v25%95Z{97g#p@VWIi}sEF8lRQ-%(p&OCRfmiH0g8bpGqZN0SRuq*3vS9uB1@{2-N` z*-46hyl}8PdWSLuf~ar979qGjedv}ZMPWge0T)nZ4=6rL(F9Z$84N#cpQJ>E!%%($ z-a*QUM;6nzPp0&Odf*KxQ{}kys$n^=x(?SdSab+(1!%*^1H_>oaR87WF-)b@1V9t& z_-^3@;V{3ikB&7bA*L|+Df;~}*kv%l|54{hJlGS)c4oXqo6f7}?E_{CH*w{ffFAK+ z#dH}%QrDnts0J?8vn^@WF<{To1l>^R$#mxZQLkC1@K@Fw`K?KetXY2ZuMs){^mmhw zL?fec^WhbP#_R_)5Z1cwZ)gS)P%x1rDV-N9Q*{l}8e*B}$J=!EHxoG&-(6U*4s7Rp zkh1?{2bAT)4lv=;3xjw6_pz(aKmgrX&oSY`KAhX!VA=uRk%ufgLD{D|4&juu;gZ_H z7a*iPz2#8dSn&o=xBg}ul^+eG4f2|{UyvP6Ji;~Lz2Ch$hQmsSuR%5NpB0iNmjVY9 zp%C%kfl*ta0v;0v@CFu3bt=D-1a<#>3v$P1`cU1s9GiKW1Jl*?Exd$K`P`qhvOY9F zPak`g%Z?qyO1!{A;pcxQ%xpV-@4$op5FfN|OT&X9^a?)A3vJ4K8nac%lcok_qvyD3 zPG4wIZ_zA(=Y&H1AgX$%`jZ9%3y^`kRn9uJsAKMx@P_d7zf*Fy@ecTzv-*9}4D^!6 z(xk@#-_=I<`%JwB>9DbCKiX7!A%ds>4%})Xi_QQ+A*-urkPL9PGV$$0yKo*m}gnAv{F^RW`@xyPqn zDyPfn$v!oSL8FP14I&|)8yoD}F<^b0sen_6J=TwD*=OtdpnNbm=Tiy1$4#(h_v=~d zgkX@Jp7)PBJ5@eJ2x1Qewm&n^LU_EOlJl9B#YxJ>`s&!)d~2(LWNPe_SYlRM@YOe0 zAg1uZgtUF)*Z54$EqQ;I^ICMn%s+OYKit9XufKn9K)T7pm+4qb03jOn7JuUo>D>Eb z>hn#?hz>1xKMk8wAF#fX7yO4b7&{PcO_4>23l8k`w*mr~K-r-tj(oslJ98 z$j~FEfXFo!#G0>f93gV<$94J!#DYWsY-rQSf~ihUF$)Q+z0UNQ4qalYuFUO zoNv)2iw(T=r^7G4++Fp0{))G~d~>P1_E?ApMN?ycSIjE}*h5ByHMd&(%cWg$K z-Iq7}vjS%a)t9<)%2(b$$v&bQ2@@-00O$`r(>%*0{e@$?PM8iW5Tqf+D-7jUS0$Im z*xt=bVylN45>ft9o^mQSwArs`nvYdFdaodjmLviQ%j_n7)6WYrc zBU>@QZ?CN?c=x|pnC??E0R2m#+k;d4o*n=GgW=`|O&~l0*u>^d2SVDjMz8XL_{T9i z8m2&tA3S*QeTE@rs%CYD^Dc%E3!5%$;zsdwhm~XV)ttO|F)$z5dAj2UK6AC8toLfr zVuw}n8jC&_4{TKid%1)jEE>dkFrFje7&zeHK96~s?j4z*B~X9>qj{AdTeUq=`6;w= z{n@79BEraB590LPE964xF`t;ifw$C{rAf{5{tj4k5nB`R)C~ zLBI#&XDY@p;~+xHiU0 zU2%6m17c4H0*5&TW@;U_*x@^t8fbYaDBgd%_n3C@!WojO{fCj#E(iKwclVJ0swRUA z$I0pd(KgIus`cg98Mq7trP@dj3!I+-BNbfo##;E$GvKcdOXoiS1&L>O0j)2fv+ShW z?Q|=2b9JcoN>*yToc+rSUt$z&E$yzqi8`S86YLXbFlp9Z3PEdQd8EDE3h=@BKS0E4 z47mw$Upd$c1B|d0HlgBr;byh$bs)xyJ8e8%rc1k8fSgS&?X-~w=i^9%`fUa&W0ipp zP6?T*5IlDE!Ul^{`^2`~TXv;Yu@bSZ=%ITgO`5{k0~EM&62}(O30+dwF`It0e~|rx78I1EMh(%2=9%*0>bd|G0ue`XUHJS?P?r$u{o>;t;ehT-J$~)R zS(I>tB3Q-Ir9Pil&RBXn65fJ;Y?R7MIsZ}jU2YF-woD%ZA=N1yJ5klkMy`6{y%-2} zWbWTn?R_f#2%e5ZE>hO}-KqVlI>kQd6|HJmaemXi{$-ACG1^OS!KvPV9IbKG%HH21 z`uL~6yPoOu0~v1eBJg@h@C$Ji$e_wCXVyFR!Q8YN2WYcck5BD7u)Mw&-|q$KE7U=l z>`eQhd%JNv$hryi%)HXDXo-XjXzf>RIycH1f8-%s8u2 zaIdB$&|hit9r82#59gZMtT|g{Kmz?t!6&g|S1_Sg3oHA$)PPP0uQTu`_*yY31a~ArEF1FqkE+V0GuTsEd zD?Z*4QVN*r_M7Qfr^{7()~pW9jz$0)J__qD5k7QkpEUzlezUA$dDr5{vBY?kqxP1x zhRyg2s<@kVD7yCjU?}sT-9%G1D>cBT;~WGrb-*6Lwfw*7xM(|VPYA*f_;1DOTa)?H zVgeDmwAWWr z9Pr4ma5d54FsdMO?3LhgeS;z|a(uuoTL&*qC4$940y}CjJ6K)Z=UvH!2<^GF%TVTA z%L(GB@7u!>p`Vq%93qUE?imNvX}Jzez8DtK>JU%D?ubJH7o)Y8x&f{xFe>%~PaqH6 z2nst42>EoM@YOzpKSZLG@xF{=YN$3q&tJ;z4hKov) zAyE+D56PxR;EdggvrZ=eA<;i!oXB-1=X&?02qt>}Uv|n~@c*0BzI#Gya$uq3oq4ta zy;rh!38~5i4hFd)2W1z~;{q_tF|rt>Gp4EluU7$OzgP0kk{fKU9`DL&;2eBh!SSYT zEW=DDg4-20I2|LBDqGh56DU6{EfjAi0v@%WEEXyE(jAPt7C4XEW{7X8502=Mq8Ydx zDH|__bW_Ssb;KQH?(_}_#YNy2(Q4`JX_xsMv1A7rj$@0)WUk-%dvTQObX+G|e}EJx z<;JJGf}o<8tDGv@bwJ_A$=qU-&WpHvD4jyOtg?ZCJ~7%JQ>~9`NoF^Z-e9(7)my`V zB9^{6$-jZV-U1m&ir;$!gR|e>$W9J9k@Ep^Haq_gi=Yk8*j9i+5(AXHfj8IW0}-Xj zjp3WfcnyGkvSJhfDE8*=%^vW6ZcH#EKvTn%t_{~^kC>g@p?6fxf8xWggDO8m`p|s; z@JTzuHm|pk{v^D*#pecAy52no+MonSaI)?4r&gwY!uv>Hr~{SYIkFs8kHdX(3+oU5 zFLJ8kc6*@7dII{q+9CGGgb^Utt(o2Qsk&Xp1n1d$36vRP>ace9^`^yU*!hZfQ(f)H zP+&+I88A&yTXro9rM30iG;J!XPbp;@KbVdaHPFo+d+s;Ky|W(jjki zrq~AoEF{zJXNew!yQ^1lCG$E(;Kw%4}0lGhq zE`p3=6nY=dkWzeG)B&_Md~=sN-R)7}{49gyxSl;BmX3CuA;~nQ0#k_*u-rb~nb+6Q zvawnh9^Sp2Y|3eq2vg{kFxDO1n6P4|;0mAx!{w%!m1CHHe(lDJ-|V1v7U(cLuA@pM zt`{^kV9m464Tl1aKp2t}&EwS=JSpzTIolznGe8Fg)K+Gf>FD}RNt6I#2_@Km6CcL+ zuz`nf)!*Q6D}&%0x)R_URSp-av$3R>e>Id;l(zh~Q|{vRpC*jB&bY|cuCe+dc3C^! z+%B^VI~KsANxH$_HBbsW@g0?847|=rLk#%)sUF|VRp71DP0N8862sL;U0L$fYfpkO zW^(-F@8d&4J`cSPXx+F5+(Slgaf`;j4Qh`R_Uy0Uzuf~eK0Yx6XbibQPdRBk;NNAh zJ`$x&isilxsZYM@cO^%_+&UMg!O4%Avp1<&D70)O%kF8@Ld_!m5ULGG$k!-WGeq4F z0V((Zl@_TQ{*7R~$>376kDT*`b-F(Hif@cbacr^i$cxiv_ZLqb*Hd0**KVfHhK^|> zbr@uV02fd|IyaWDv9CmkEMc5fqb;5DE#aEzVBk<#d5;p8vCs0{N8s!TBr$9Ehqr;> z8M~13&9Vwv(zFFkBoXpe;cInV)}VyQiT+iSiZS*aQ&DO9(ghxD?Lk-dNVKMsXZLeI zP}G4V@Ye8~t3BLw7n)k~Yl25tRk~W|B>_|@2c@+w;39LSBt%*JY zLTh+_=*pvnwtf})lBeLp>w4^Sy)G6rzjC^ z4e-lWCz-OmXzl27(8h7| zOe3h_y_3NgYa0Md8Ny(YP18o$ysnO2`S$JLRI8w=s@-jbKLcW_}qYyF(6_Ztu1E>EN8;JyBhq zWbc<((g-W#VlKSzAW)pYe$>e_Y%XzmJS)8gLel25RZ-t2#rE>_piw~>SE3=2%l!vf zsIG+}Cp2D8M*)E;l5SS$zp3ov_UW&??eg@^<6lLi5R_CxC;Lq}lhiMG!R7-S1B-|maO*9(f}$l^Y$uR`$oXW=OjnQwg6=?UZC9&TPDm}kZNMqX)8nwF*7zXX}2?xOOSfA8q>N<*Mba^N76 zw8;|`1(h?ILz`eSO)y1iVw?%9+9chzj{?YT)A_h`9{CK_AYms7*iioUZfk@QOf0Pa zJ_C+F5mwJe<;dK)1jxtp$_F*T=?sx#(>v1Fr`(!X(s1>$zL6Oexh?D{(+w-R4w1D# z!1jH02)&k#dfrfKZcx;HIgk6q=!p1VH zjQfKp^MG`nCyP~wuv<>>9lBs)H|F*bQr?2T5=5B}tduG1>OvRzmLZn?3 zup15ti$cXE({5ZoeeYl#$h*t_{2c>`eXF9+K8Y!~0TgV`MVz`XprT1dC|=Qfb(eL#BAV+ylXw5R6~$quX*A{%5w#xw9HidSQ|>tPdrg1Y!B z)jZ3&w1d==x`k|>7;9nn1Gxu%i&WRN5IGLJ7D16Er+}nar(jeE1T(&`4F_>EO`h-- z@m+Z%-&pbM<^}@ErJ&%v3VuNbile4PV3yRkV~YT=L4oj}TC=aZe{N$8-`cu2bY9rC z9LAoC0>Ib|9NN_LlUw3b0KyG777OtF54Uam`b$3$GHCj+mij>FjSx`xooPXtDVp$q z{~BA#hx5Q{(1Itou5EaBMtO58vH4|hltdLShtWk~&@zFU_uMw994zqFe`9F0TG~pcUD)!s9}g* z;>k)Ot&NC+Xw3$J@yC`Y9qARXq_PmejcPe}K6t0`j-0Iv-{)AV>wlFSO}~}O65|uO zi16UEd?N0nqIw|!?Ym2EEH^lhrINGKO(cw-YV2<7moQ05kOvJX03dInc{Y_j6uyaL zhd_Eh4^HwJ^azjlmU?VVIB=PH?2(A|y_p&)H^z&V2taig@CekVG;uPYsL{$|4!YY* z|H=5nC+~UL0%v}^~3e2UQ5 zp4Q$6VQk}Q&HRbK=^1hW{Y;1Otz`gm`UZmYzF`O|>Bu=4kWj%o#Ayk%(K^z`g72s7 z`Kn&;eF!q^b`wLLkALVPfBHijAswJvc>`h& z`Owdt>GC0+TG-m{ZEa@fexZs39t=$_tj!HaYfd1Ci4+Egz;c(I1j*t1tQhX^dLwi4 zUmhJ=9b`kncUs6R79yHds%BvRk9*rl(A+B;ZU+KLk&0~xsD~!I&_=~qmJ7Nn@)vYe#j=E2MGh-J*La(Q3oNjQ*v*k3TOu)bOx%Q zf}g){BT1OZ;5Kp!;(Y;BM>eYYp%4eo`hDAdpd&bX*oQ7CuO1u$AmwC?KSYQ}Dtd;& ziycaxYAUgXwYUb5T$pV~*OhTbk-pl>4*UkSq6$2E51`J3PfF-p>gKMQhUl|ly_&zV7q?3A4g$>Cc2-nhEw15hi-pHA*g{Y`o z^pk>_JjlK4m-kx9;B>HQ3cP1(U&t)bb&RfBF#5JwbnF7kqADQ4L*VyTNeVqmTI(E? z^686)`Q85Z=IGL-BSn!gTa8o&9pLz;`%N^(0c-9jgs{lz;DFqZqB)(<(p{G_z(Xy^ z^l)75)n9^YDv|}LQK_E_b^96vWB`u1drF-=Z8hK>-=5$TA6j+5&o_g=O#1TyG-v_V zEn$FgCO zIS|K+0qHg1%Xpwqm?EG&fW&|oYC0*P{o(u<;=Z{JP(3-iCMwnQ5JCGO1{AnNK^4hw z#?JqT;o_HH>V@XlXTx<3PzECl>Fc26Ob8SlPvGtdWaHOfXp8^jn-XG6Dm_7GwhFoW zQg^^dJ##g-VR^6D*_4p&19-#tKGn|0!SY0fzVuNl>@OMsH}RRwr$5SQ8(xTx>&vZ$z_U{7z18&cn?5h00#n_D~*BUG~8YoZo;!>H4sGq zl&GbyzOf843M5-vRlW3!AQVt?xCNy606{3o0_(Dn2|po|4xc1hIpzVsTH;esV^hyS zT0j+OOaRU%{py2LB<-c2`*`?}32g~fRvFA*2ow19y(pAydEu(SYTTE=>c@ zWHg1ATfgkIQ|4cHEct~WEY$R0kl1#l&|3N3L@j%WRkCTbu zS=$C$_=}Oo ziz|x-ND!d`+rQ0usV6JcDd_WI3O6XEG{&DO-65<`ZmG*IfBzkp^r5Uz0=m?M{Vyn8 zy#V6WEx85=OD9tUfwm*-ZYT<>JdMf#Dak>oQ-pH(ftjybxeDHv$ApHz%ImVOJUgMU|au}=FHDH zkPE0m4{X~{5Ili|WzZzaNQb+-#B?9m&CW}479mzGWaQjbZ3GQty)n>95iqC@T2yF1geFZSf|ec0D<^$_q%lt+c*zK9s=vpk??V1w z@>I^Ang|;#bl8TT^xEbdM-sUV$B=Z z?~8;&pA6Pk0-sUWfjOzK8cQ!gw~Yfe36inKcHGp2#-T4U+3kAO*4q!*boP3{GQ@Te z_;w?e#&jY)|H9QasxxRaZtrgtKaZL5Nv4C~^(GGpgfE~cGJ!7P46;cl`3;r^H3il3 z;gNGaAX}*~I>|4E>qANSH&`zBE`NS%E%vOU$`2ATB+S}}Z4PS0~`+x=nrd^mn zkjOOMP2>%hZ)~o)3FZJA6lITm_BWUgC>8Z`{H6+_&UxTBGvxrw;UMI7p+4Jj?NOBd z*RbMV3f+VNjqlVsOA9Ud#YC|%(_9q4)c)pqgTenUUj-+bKmMyolKDF z0MkNTngJ#;$`G2(3U^>O%0QyPcWQ1Z-MCit=?|Jihe|{;dG8`FeQuPdH`Rjj z44@HCy;>u*TeKxXNuZb0RpE;|dw^>5o7TW}ZpTWV2-K&8bUR^T+D97ps1Ss$5Fc>sr$DfS)UagGpivyfk?MP-!77=LxFV=q6QyV% z=nEn>(Cr~z2iBVl+Oa=>4Cd_8p$W}GmcK=a>)e-VrvJ%b|k9iK-(>} zVu0^V-_#14d*$4!O`a}?jz7@!fZP_CLC``1&SD)Vg7qpP=IFfveZvM>nnD{E8-acDxRZm)-HRV@- zVz*MsAR$F;<|U{KOA8q!U`1)^8y9xe!NrisB&z1YOqE!+XT}v?9?zh6f63B~EBuwi zr)?f%k0q1&w6B8M&QEC}josHaIM9qT-OV68bVE-TNDgsKD)fKE zru*LPrzm~|&v4+&d^&PLNt9F2LRSrly`_y5kO0o*1EjGu!=+wn>l+{8nQbIEc?|i% zw@1j@OK1Ms)dKzn8F%IL`hza<4K^NehSfkA@ar764je#N{V-Fd3@0ry1j5gNf)ALr zt&R(5T6m3GfP|olY?p9CKi-fvd@JJ{zn=Yi>+5S{%!JM1TQ0i}95;grLJB~t{T25! zs)NTXMxvc>?uX1(DK1Z#Jl?jyT)UJsG z(#`-*Ny;3WaOzT$lrn_d_g|z6kChN_4 zD}`T&T0)i-&5V?_jGhK1yn1IKp6!eE0(F2*4}z5Ib%bP}mzCwWI-?1U^i9;=Ry>)$ zDbp}F5Fp*K@bNWW5w;yVheHgyE=ke_2z&u@lC%z15Xsf13f@IMU~}A*d6B@3V|Mdn zuqlR5f*QL;Lpm{V5U>vrfjoij9-0K7!o_2$<-)J|Kro23>@&Y}VVff!j)w8p5}d^X z@<_CyNbt`UQ$=vV2Q0zd5CSI#)e+e9_C7EiWEV;vjIacqk+*z+E|)BP!>Q;MFA|xq zuYia>ZmQA;2sMi=9`~UZ-P)!FXm*B9Thxbntn+6u3StcEObY!CBvRmm0rUXk5oyh# z<v%A3XWCHh7PusNpLStuHY*a_8iiP6^NT}Nw)JfhVq*> z5Qvg!X!t`>^B3YuvPP+}ua!fE@U0l_GGVgrah<@qXS|qequIAu@y7^VBe_~F>r1y$ zqdgS5;5nfAXYm*zRK1hHp)jhsmCZ4Co5!c) za8po4B!s-#%LI*klL$omIyY$Np(VOW&}Atp0XEiB%W(gF)=&DAcMw}=7-TZEW`nt> zh1UoJGRZ@1g@hXO9fsk6AGCWEusTgsY!KUA)<^kGLo}K{+e{PL$WRdR(Bvw`bXU%C zZqs>%E}$Gx6*fcDLjj!x@8>6qS~O_!1Q z8*=!triy>!e0ug!l2$F*pz+?erG^DM?r$1{Tj&7d!DoZG0ZR{?pY z&_ab)a`Maa2($YJnp6%1)Namgd2o-^XM#3dRKY{OMis)#Zo1O!9aS?gSUOQg3;6d2E~{|-iC3AFvO}jsWv^X{yc}2NS(rVk zRR~%@7PGp+g(}f6B=5v}kt?Qd2bDI|%`Tu)H-U9VigGwajh8=HRY=cQNJ9k>U3_cp z9#f;G-W-(9)PNCDZ$mQx>Xd-642Ld&bSSQ&Rjd6Eie4CG=Kts*c7A-11cIGT`|@5p ztW5;U0V?-oezFX-wNDk(gnYz?mQMr5C=TFuZn*<=ypA?)wJpO*ITYwyE@BTd6UMTA zp=}v7b4Q_ljFY5s4Cr7uH3aWd2W?=+ss?gZ3gc}LCt|T;*WME67;TcRw-jY1V8$-m z3(g2ZUA7t^@dx8DD~vuwhHAJFM`ydGJP;1Fli~w48ms%yos!US>GD07PG{vTD!Izw z+!bgKhDNxa@XfP0a00KZK+fy3G^EQJm?eP(8|3oww)rv#S!?sq%9rqwGe$4GQo(F2 z%nqEzPo3X@BpV0us^k}VTWAXG*?^98a}xuISEvt_GiD0;N~51%NWgR{b1*|~Fkx-6 zz~$IHoW1}CSJ#B*H*S?FkD39q(&a>}^rOx|3TfxsMLRQ?i4+zUGcPCcz^O7`@rgDe z9nF>YOc!9Cn~=mNbT(v&9#}J<>c+;TK>Z(h+^R`@1m*8wx=b{%g2 zSLv?f~CFqhl&Y+*AIdr;0$atT*22389C9bsQ1)~hFl(7m>@@Jv-m zGyte~=%*Dy2l6R{8kE4`01AcZjJLowq>91WB##jSq;`c@8RMt`B?w2e^gsg!>b#vU zGlZ_gT6d@=kV5rC-G^t&HSrD_L2%3wM90}s$?<;madaR=(;q;NA49qeM8#NGT8kqo z8M&s0`+m&)M9x1>gxDpLf||<4+#8~mYyNS<;MU0%gqtJv=!6<*JrHs9Dpev!bb2%& z>uLg)J{jgi6BJ;c@4GB9)=fBo3X(X$*iwxW?#mRNsc5b%2)DnY0_R}7;DaHy@re$D z^b8sSl!WHK9BDeKLz17$^dGKs!?$R-7;!lJ6p~+PAZBhntei_2JMFMkxl~2sD{e<9+2muvhaX z!orj>Xd_?y2~MPdvr2$2hQk>eNAyL#EETX4K0u)KG}}r&61OLat*=t(w?qjqn)pK( z-m#Vi2=}4V_ZKuk+8`q^Oao|Z>}y#X68+a{E^dvd`WD_EQMTk2Rn2W;^|>bF6K4UP zNrr|3>#bWavgi;EDbuL|M=4w)q1RY~!IDXJAfk%{3SSMlSOky(cDybPVnDWM_34u* zU(3vT@H&MZf|It&Yva{;Eug2xyfJY!-6j@eU}Z70QI_sNfcc-B9^2YeLb zrqE*OZmK70l!k7Ci{urGZ2%1i2l_pssZk@q2$}-kKW+97I9pc34pwLf9s*^E)gy8bBw@%JT`6MnWJG zq)!4Zpi-a3HCzZ4x*u;hXY;$Fl!M{CZ+jhN5jA2&X-QIpyHFMy;T~sF)I7Lg=!m zKmd@!pa&{=(A+PamH_5AjueLLr*`|c|z~Ye| z@~_G)&%iV>)SOlUSW9by>CR5Oc-(S1N|>mn&PvE}97TYoOg30l9sVj6rR+_QJHpX+ z=QN`!baLs{I^P=*GcgXINrIe(LDUi{0f1w*J7jqTKA^XATG(FpC7~?aP&?chioe+L zdYMO;8A*7n{`FewFtrMCrZi&zeUEuf z7I~RK>i6TBdC0*SH@*D)z(_eIIjY^UapRl7OB*5=QOur7pm0*q>^Y}(gf!_DubFE> z%iw9?vfpCr0+sUKP99sZW7p82+Qmb5kFSTF^4J{yT6OQJyi`2 zAK%6fhiaR1bTk}+w}u$|%A4Y5BQJRtg%KS_2aEwaiUaN=HVu_(WJ**;(~@0^pYEhi z%;6*PFws6ogByq)NqA|PdXP&T=Pyc!`d}C$4i9fVfWHL$@0v1seIn67BVV$O>4@@} zGp`}EUbBO35QCN2A!DFRxlSDl{h}z5rxGdArD9#%=g6N9@9F_?*J5mH^4t$ruFO`c z4oXf(>PDvzqc8JS^&aQ|Us1Q2tO~hcjXJWw9TroI<`8rkj$7M@)&Ddkq^P2BY<*Ob zPRPxzF1g=0fv#!2re|j$rBOWdLtoocy6`qv>9%z?I@IV|Q$;iLWHbz+Wf>vlkXJf- zp5*vp(%r|Yvf~#HllQ}VB*FNk9Xn~y*JW$^bD(l`(AuIYntNgrEDp$zsU?-cWo}qOP`AQZa?Cf^}05LEwOI^IpyRPKNUmL z>qj++pkRQ&(uWWlA3;-$$hW^N!FUV;{|~9|C|z@R zAQa8J5YhtP13^SaEua9dO*yb}RP~i$b0LP)7%kGD#41_PQsKk-CJIe>nbMQk4uF3& zGt0m3n-2niqAHUpITQm#)5Fas7AN+y;wMHNfce!Zw^J%UgR8I{3i<`2514M6dCb@; z(-lwDm+@Cnayo+O(yqQxO9%M@o*@ zdrhM+NfVGd2?Xj2LdYjmD4xW0)L4BS-oI^W#@lxqY{}36_sh(n_I2Z(X%kn@m~_X= zV}_V%J9%ExxdQ$4i&HyZtRSDjM`tcM9GMnF4m0SuG!(TymBM(A|MI^bgaJsNu5G5M z-pEctePnfIrCU%|XGFv&h+pT94!iE~HTj?~M%`?od(zNxckj7m2C+6deVxC-`}@BE D9WYdv literal 26961 zcmeFZcT|&UyDt7BDvqLjGma?I#*w1ZBp?V#aU4aYD$<({U7Cg_HE|qe6a-Cx(7_P_ zDI(oSwSl24(yP*>Lnt8xl5;=I_wBvUIs2Toe!suYUTd?~tc;MndEe)`>vdiCbI-^? zd-u+RJ24E~t#kg@OBl8d{+GLE$98zR*7rF8UQ~R}n)?`gIr;cs#XDm9SADL#d-=G# z{`QlfBi`H9%TqyCMHVOhlZ%hfb#GNUIgfvPgRB?cS?-VlcQ;(*yX)sIyfIAV4f>DE zv(;Av!(6I#em#BpX3}(jK%A-L7mfKK?AEWJYZ|xpowaV$i@q){)gayUsqdmS&YKZ- zw|uP1ZS?-j=v|H$&*KGuqlQz%%G2VGK0osF@oLSK{D;qWs46&*HI94Rc;6Tc;hPI8 zZwzP-YVmGvYwhalIso^8rNydV7DoSrxoGUvLa$l!+kQf?pX0Xt1HE3;%VJ^(*FgO%(r}}&iw+eHFoD<3QPoF!6^XMs_u2^i2$2ndYOC_+ghr#`f(Yx;_ zg|1Cd$5Vnnm3a;Fikx~mc@i8s8XP%oON%Bac#p>FkQmLvIXR{|SP{^eHRVi2l{k65qAcp6sPHrqs#Ci)a*1AQ)FeNG3 ze?aBIg9qI~bCpGJc1m3q{thGhz2Sw&=D)u5QG0x$PPFCcaB0#RKJ{XY0sHB$0)>#! z_0@%m&V0L~3S|t-qo8k$S7)ydtBl3jlf;~pZk&7NJJlgQ*Op_J?-XEzVLeLd$rRK^ zqm6L^^bzTTcRvKc?cuu}DIpH2VWOco*H)U82b2DeDId=Xp0K*Q1Jh!qVOud5r@2ao zEoo#TGqsuD%6;J(OEh5QQCnGRz?cAvsj1;-AH&N`rz7yy*vx)JU>Ij}Y;ckxe zaVcE=sxavFdK-DSvU`;fhKcQleDJ^|48mQGgn?e9y5AVfI`{@8Kirj?M#fa@A(i=> zjE0r!+6RIZsPrUtY9oacZ7Ty$^act0UWPo{$Y8Pt$#tTJrQJ?rEaB@~i?J~n=9>x8 zeDz2BTCwW&(K=0K*GqKPpk!teY3bVnEx%wgn?`R?HmtH}Cv6+by*ct|q>81%WPZ1o zRLL+1T^~+&>x>#4PrFUh2uY9>#k6dWK&8xX*=s1KHoN+&jZIeA{<4YI5ShQO)03WtfOiE@INmep4gBBoVd(ub$1 z%{8uu(ns+5Rhg*<2M=mgc%3;@`0X#5#Qe&sPvVf@4MRg4<34IOGLCI<@ zH-np1$l9VFDM^qDlOYvmB`Xgcu@g1-ZND@W@@1FkKz>1ibyaWvptjvGVV9O=YLt|N zprB^p-0Si=S<3gEIrdzY)e2{>;o*3EUHyAZYvbkC1DH#jEkQlt+haaWzb|)a`^?0o za*q!e>^0OgwW~b)q(s$Y=7*s%zfK!kD646e{Uwa7udH9%JNuTE_wqN~T!qZR-B_9q z^b$m+@yQ(B1xj?#qA(%2kU1tg;5-_mX+4_;3nQ5lcWS;SOtgHR?(pFuKL2(4kGBR{ zwz`ts*lI8|AX+(o{l2sf24S_J%}|aq^St;Hvr3mT^6-qMhLzP5EGa}==pz4N9TJbI zG-dBxL0uSwIcY|o3(g!Z;=&q_LAGtpu2}sI-*r`?O7z6Bc&{plL=TOM!BlNk_s$*VQobT{53ZGz@cU{`n`kk?YMWqg5eLORW!! z((KrmOmFo2w56NnJ1|Fc49*92X0~YSj&pI7ZVcD2jL>L|>eN&8^SDmyQBHrdzb6wm zhtmK>P1+A~6%T`l1r@3Y%+Zl4J2}Qx-3uQ-Jw9`yJE5VHF_7q%U#V0!7#buJvh;C% zT$4i+@@{-|hu`uD_jcY7L$7ZajU~7#^|BJVx+*gCrHZza@f;dq{ct>iEzmOPV_Z1@ zrrm)X>rqCJ?hf@;fw?w`S0t(LhW4jCtE0LDL2}G-P3PPfJq7mh%Vyf}b$;g_99(|J z@+hAvRbljbw^0SyXOCc3&F~bTpEVLW zuORRQpIBzn*7>E-?WM@As3%cF7bQfe(o~=aqES zqjK(SyfwN(ar-|>A99vwS!_DooJECB%d3}~TN@DC* zmL7}}Nlps9R=75)6D2|;>6W@&#?pk3bN>T#`N23-g0N=XtuY!sqRBa$v*b6I!YgX) zQQ9#S1O`>w@7L@8Y9eEzt6*3=g)kap29bmq!K`*WuN^5AU(#t?uA>mg)urlD9YXK0 za*X*R7jhITQu?YyVzfm8#4}W5t~RpQI!C^QHLS4aB&%1?;#`d4-xtrmqMZ{oiGMyr zU7O4)`pDVP?G0h{d#_DoDo;#FVOC{1&yVHs8pb`ezJ5AhMy*b0l)BIKeAULxu{JKu zBOb0B=Mgj;uc#!UJP@}u9lyR>r;yScICTlbu_O$V;;3T@QabehxlrX!Yj1sWRn?Xk z9&yJHF=xD-gEP6~3A;YKg65bPd0ia^=Q?e*hyo zZmc%_u#Z59kNI5UhWqVT{OT8-R1I2^w`uZo+jEgZDj`8oMCTp(-)sZWzY|voOsTV)q5>}J&Zn5#L z4@^+6#eyg1}w0ad5cyLE^;Xa9vdDOlSIXoOiRsXiUROB_sBZf3v2h%48N^ zg>B^}epp)~T*lP&&}>gheKDrxwi!`Hf~4bdPy4Lg-~H+E@od8|+?mgmsYmI`*L1Q$ zeJE>&BF6l}M~IVp{_?j{yC;tyUyWt>^3?>!pOm+-e^9v5=k0iR2%4Z|RdEUO77Y3@ zmrUDG6)J1C5L&rW(g1VZa69jj9OfrHEJOTqr=6y8h8}Hwu_ZN3B=E>0G-mGAky{?7 z_a!dQ5#%(7?Q0v&jneI^=?Z(WVoh{C=jYWL0h7sib}Mj zAbfOKy5&`@^tes*l(>QERXfd;bh7pGPe@TP##E==y)7@)QJPY&KHB>>OtRO5lKbM9 z!VwZ}yWr)--I$97`VJlm{R?|k(%tO>96#ll9mQVx>iYHOeR7%UQD`|uKGA8dAXl~e zo2uV5T8N)DS6}lb%xwHCv0lVVm8;plRK3-;De{eB(gS7LDA5~#1Z~@*6?El$NHqm+ z`7%Z80|ZTGTPn%eP(SiiVc%Z&r!mSM9g=-JXiuUv62zG8`JplWmRF8t2oQs>d`cg=#Z$lXyj)_hgxD@wb6Gxi z|J<<$+c8CM1&k|gdxk;sLdm-yXjA!;b)u>3-?Vkcn{`@JOe9CRy($*Yfk%27%5jkW z@gL<3Rr}7U+P4o0dg)0R8nEZXAU|E&sm00E^tM{uOXw!fiZ^qypW!FJ509JR(CjqmQ!g#Dvu`uzv5A5^h$CsvtjN{6Zf6G>?E3Be2HEwNGs`-7*9#;3n}a611E=Kj%fOA zrI&nrPeMUR-wj$6AxXOMd_@a;#yA8ehU{@b;h#p0=8*%tJljgbYp5H){5j6{N$8hk1H*B(IhcEP=Whl z>{7iHEhQ*+Ceia4gSXE^nXzLl@feh-X?K!C{4C^);7-Sr$**tc82lRa7)w9)_OAGN zlCkV=c6STO#_yTx_gJx0OWw1c%S); zAG+-r^yC34KlFskx3t3Dn4&0hN&(^E>+uWpQ8`II_2{J;E8m}qlhVbl5q6=cmW-fS zbW~b0P!rb{vG7pBvWoVY@L)vMc$_%1g+Kzw5yiKtD|h1?MxK{P6ELW*2l4KG_y&Bg zwaa7t^m+@SzTij9MHPj?pYtn7>ud&uXUPU>a^FpRIs_k@BxRc>w)*0^O@loBDWzWC zJKnKgeu+^nR|l1aD=LFEG9Mjo;Ayw=)RBF41o8#>`@^J2;T(hQt$xyF)_6ug%_%X) zi>T9X|Xu*!u0H^q8g>U!Jj^$iV-kBz%v3j=t z+eaF6oU&yeV#S*ai%n**EH2^Tg~t=w3sEDjXBsxLLmA~GR)h3gKc=bV7G6*pSeZ+8 zFEOEidqVpXCTYhBY^Oo=D%i0DYrJc>k)3PK?6M#IRNSO&#^zGYWR6MI^|0pT>IP)W zr0ageu5>^Ne?GR@fxyoS$}M!x<9=nU!1dMMwQ?A^LtvwBKSkvM!f$3o>$|`A9y`> zPiMXST4`^+ydbuE6EMv-41K|;RDnC9U+xY3sQZxIk zLx*b8omn}Qz z-osoy6$Z)m@&MyD$cI8-)kt77(I-xzPe?s@K+{(ipL(8nYQ-G?`6BHp#WZ;*aST84 zbkv*!#?VD*(|44{h%3Kx?a(S;fUp7!x;7;#l^2~9l2X}<7QXH1 zo)&?3G78#nbGg2HzwPeiBy>B7+zL$$di>zh{#d#;&C zZb>UK_b9meNX6QePX3Cuq9*fmz1o~u*+7ENbX*0~33u%>e*QI$QiU>;Wujcj zvxx7XoQsivVqb^53;7)Ft}8f2)&u8M{YXs>X0t!(M92A*P}PY}xrr;q+(UbPz8Tft z&rFrIuk)`mt|d9A=BWx`io&Azu&g_YUb2kq2Q^MHA?j9h)F(bY1-CEWXY(q$VAxqx z%AVFju&w3Cvbf<9JO-X+#s;0#Pl^)?a>swtL64B9I+2cx)k`w3jWssRgM|tXP0ro} z4NChT-_cqh)3)swE1xF0SBDhR>rFD@{k^}17asXA|AofIBNnBZA{65D>4`Qx#88pz zzp&BI#G#yfbeO-oGzU@BA-#ccYJr?wmzB9Dg zBFSM4b7LNnkV#$0o>eLWCttWraWI!X5S41<(j!!6zuTc@^%UEhrXR4_Gy<@R==x6+ zJtqQKGk-gRk(qi>Y(a)wCvHW^$4DR?OOv^XZE1Caz)#n#2A>-069C-qa3))%5i={Y)NlCi;2JFJzYaeyG9f6V@q zD960^2<9?_EdN@IW~vZi5EB`WweP9p5}Hh%_Gg$&ekh%c;}7Am9Nksft2k3GEw>Kj z^v4wpPd$S5ioa0+LAcM`EO`fU#q<5XhL^=(@55T_aM+F}ftX8PBRpjLD|$V^67>%{ z89lm89<3>PMxUemWKT(iiJ7g1@6Xt(1B3+2r`&vcP=5DWO~hJd8*pQybFo(S<|VzJ zj?-I+9p}N}a@wj1_*wx-E8@@(29HX?t`nmeG5OI2*NU3zyV|P>?f0;uC+L9=wq=M% zog%HX25Irmu`H=31w(kCD`R8vnGqJwDHgRav_+2EAH<6J(RbhJwAFq7>X^mVI}Ts& zkniv#H)~9}!+*@aYo}DSJoFaX23xT^TmC_;S6{zwG2u_vM}8_G|1+dEh+H+(@QS;; zv6Shkr?&PDSIecXC_lHI?xsxRO?z z>Ua{aRv7GK5lcG;PjRf^!_PEviWszSyrL<&#g||)(p>Y3F9{5<^yWtdgiBw7#qN<} zz@D51+6L!oO@FhCmh3N)lV=KlanV?8wvy$s_3wwOhLo9dA#nM^E1zdzU^Dli#43(k z7$%3y8N^y1vvA8x4`QGk(C}@bG9m=RSM8gHVMr5NL4U#3->=VjIr6_tJB^}g2+K5i z2WEM0u*z{-P%$gw4uNF_cjjV2l`d2a5IAZo^bhFyOQ4~OxW}3{u04;rc*651^e=Z(5>r$CZ3`D_O)|NN z*E}k22<+{&>6C^oz6+b@v<$Y=9!jxQweX~(YfQc9!#lbIv4}I>qU8J2q{^DP|~?v;?pqq^we-MqLWj_yc;i~MeiSrdlC_UdwY!h z(rX^Hg8fjKx?DPZPOQ^5Q7F&_a?d8B083b=GA?aD_Bbq7-sjz)@MT8I=&2j?2{sxp za{*d(IN$CH1&jbLJ>qevtyS%1%mvv+LL+ns4RWc_efa)>xg_4*BV#{N(rKE!m8gos zidct@vVaN>W$Sj69Pm7kw(OkP0-uo&xY8|J#xHgr$5I=LU1@IlG5dJsUjD>nGvGck zkKTue5Uz3dG@vj6YZDG^W{$x&Ei0$(KVhlef?i_E{n3recFZ+8h1?9~$u`WxYP@-L z|200%B)z1#^~F@j#%;uw3tT&Doc-#AX^bk0d&LcWuLsT24WcYI`2^x$ZRlLkzrPJ? zT3RYQ8gd)6NIMEGcO~G{UkX-Ig1|pFL+X$M^cVQs^uv)^s^4Lsd%xF?mS@xo<``_* z{PUI4RaGUFjAEd815C6gB+)_&jH71f=#FZ}* z3iVwnhe;;ajUguU4SPn93BBsjTUU??I&GI0b^~d!JHQ>Is;E69j_!4u=H`{ zDTTDy>^-N6xwrxxTRTLtJ!VfYcHK-@MsO+JfdENBHSm0YZR5{U-HjC+LRC=vb(A7! zuYfh~giM!uZG9Ct{FBbz-MSsNvEwiP6T2#uvyoD+AABpBO#0c!CG8r@Eb4kO5oF;Qo*GgDyd1k99 z&%dR8(ltxoip9l0rO4W^FsjVpJ1wQ)Sw%l}#X(~YplTt9O`9zTkA!ytVqm}W$9Imr zWsQe1jxOwhHl%ub@|>7dzBPRGifL{IUZA{eunOJoIk?@7pjoOznD8bnl9PK0mhwsm zv;_j?WL&H!!@48@bFqOKrN@}e8U6Ga&<^P6CKa)oX>&Xcch~OvX@NGbA#S)3NesMo zkQ3U?u2lxSBBzNPk_X@x2U4QtL*D&)Z4qk?gai5_hAl!T$I{hF1R z2{>X0ig5^OoP3u4_)xrkBwCu(Iw9|9`Hg3p^#}M6$Od%|&5Qvj?<@hdkd=oC ztV!BYfRY4;TTT_hnp_4LvNdvJJ`4aP3Ag-YULkYegYcH!Lguxr+M+V{8rX~((ij;f zL(p#4P-D*egIi&WVKSxX$KoXc>dYo%M&c0YdLBPBCIdNCTkCL7oRp%D!i8d3ih6_j zV3&C<`D`L>3viS@rSNd|<+p#N2jd^Obcdq80@{KFNZ-*luJNo71& zbsN^2WNJ%|V1`ccw1z@2*xI~4WkmqKR(xUAhjfs6|35@3QAsgi`wVU2NV4Xho7B)~bQ7d2f!ONnQO4k8I6` zm|y~}mG#iq@CGUuHgg6oTq}O1SFW4D$u`C?6IJHONQ0e$=c{MP9)Couc59cMUTtI^ zdenpnVXNlvH_LS`wHJe-w1aM9ZuvH7&rX;J&EP%ZcPJi-Z+X@Pj03#DjvG8c;R_%#^_XV0j-Qj(guh*&0$_;m+e)4*;}@5TsPB!@@bhP3e=z`8-OD|I)PrbB z?8wrk;Ge(f_Y1wT!^jzZ`_#w7)cH3Kvs7d(#peLdZr&HTgrakk4s`VJgDBOk$52}A zQO(-?27K%3QK2owHQ1letqLvCx&h}NWWxtq`6CXRGz+H$ppc`;1AE=17xxgn3dkhd z*KjjrLA&_vDw5RTcPbPt%@&s7gu>11fbP+74VS^|Ty$eCGLp{lilCT~V7a+1OMu=) zp8V_Yul{-u(yaua`epR@1gLx9=RYd_v>r^qID@YfHpv9(OrhHBk?|j~&tXAuryrV> zC3%D%x)+>9?pf+m)=vT}L#@bnm_ChHiig)UXn&8w{$3l(DHxrGape{Y3?AKEc13&NH!(dregG>DL8}bV z6Yx*SvOFv}?9n7xJ;*O`@Bfo((W6hD0a)gy%RITo-9X(ANg1udJQKwxXt}F7$xG7~ z$Z7TjGGxd3b>%z`{e!3q*ZQm#wg)gGGvsdJk-`nsvpk&E*;PN-)76YZtPXZt8|Lv<5hq*%3712Yixg=RgkOk!}|39bFBa>jte=PX!_d5g{O zoeP#^zL(23;KDw4cUVcboH91ux;@PUEEvP)@A-8d5;&d)-x@3eQ5JswZ-P*l+lZN% zrJ|*tp?SB&c>e?I5kdD*JXfW|n5Dg%g31bW;p?y|OA4AU_ktT*l?FTX_#A5`A?R@# z?mA7q%jF4vmP@NQ9oq`u_y0>_YIF;9XtJ!?a<8=&KsNhdJ=Kl^FtDT@|K>Z%5s;2O zQxyT<+5~B^nI;nu7UY!;sCrc~$Cl~_K;qR0gcp@D5abR27)@|{PP+tk{M8Fk*#0ds zQw&`C<__B4qLR_c`$_0RM;S!D5f$~ z+(u`!=E_{o!M$rkOeuc3M_6^_o@B}gKEmo-UZIo6Ilvd^M1KDHc?G?Gq8D_38+Ef# zsfW1(v#Ueuv?HjO_2G4Oe+B&=Quk_w2MyigfsTJFv!Fo!uy$l)cFywz`0nwi6x(c7 z%c55sfUZN*@@;@WtleYffsn7QjKgMBD+kHKT_8%Y_~kxR^Fzvg*Uzxw+nt|1jjbDh;s!s~#L(<%IXN%yI7ra|gUyTPguO}angP}W8iTAXl> z_0c^XKhZR5B_|Zh9%$U!b%qu#9AixAoz?6UZ^QUnU^`-!2W}qb5e>c`x|ldPLge1_ zK_b!plJ7eS1^60xZYdo|#X(Mend=zg%PzYQ<#SbulBvOTW5!0!>cX(|8uXkSa~1>p zhY0#{M$M;_2w1SjF6kFFdIW(!p@Rnn1qH3>yX*cImXwWHZAO=z<9^d!OOx$6X9wHF zYmoC8*~@5fw~E)yyoHOl<=a(@(O@@|x9zun@%2|DIc^>aO-=y)t*8VpcGVnU$6Ktun@oHwx>qK1@|}Q~HXykde>}%*@(NXG+c2{Y z7_9(W8QK;{{O|+i=1)PvJ&u*Y4SrZ^56gcwnLQCeEX};Xz>Fg3g)Zlej3p*+e0yd3(Sop@$%qJ1QAYUxi2#p|cqNSn-fNxLaxkraHs zwN`+ysDM-y|9+ntfSQpX4Af?#fe^~JZw5F%5!?{AS7X_E;`SY*s@3;$&GeT3>Gj}H zW`o_zBJYWhmxjHeBoKP{m^&eA(IX)o;31;v6R@6FWn@zkI2oRfOTtL8t1SK#6fgw;n(e`z*%2}0{l_H z{A(UC;i-{K%?(!r4d#dsz;E{ne{>fDY2XN+2NbxZ0@$Hp#nLeH*{aIv!iLhzr$8+a z9URy?B6%5u1j4}0;Rh2@8*?7_f|kBLYB#e}cgrm}*I{n|AQvRH@lbP<#Xw47c$Zgz z^yskmSZ+}>K=)4;%c?hIz@OYc5+b`xK*-?)UmAb%#&5G=rs$KR<%1s{9nSRP18MEk zuOJpS21W+6>_gI26jHiPkP+^Jjux6&KhKg=V@Dvk39P@FyLNfFdW5a>r&;jYr zq7(4jZueYJzJpcP3b%53d?%x2+RFaH2|)2fWNga)l4m-*Z`27dzS$)=GXIvZWt3u< zf&{t(pOlhAH`W}H$|LLI6P$b33wID9PYhOb!d6r!(#iBLNNYMPecmmNP?MVcx(!P^ zw;79A#b=K@)$xVS-xdm8{SvU!?VLD$BC!p*JQw%&5%8|2GN{;ig;f=&^2%%nKx1JI zdkZ*`H%TmHZHZRJnzg!N31LYKZIvr1XAMcnn)gY@pU8ohM;1b@J3QHDqz6lnng(_= z6}<068wch#h8B&mPtt+Qlgp11soWmqRAh{C1T?nZBdGN*VjCvjp(M_ zK-&iL1l{rGS=C(-}6`UvJa&6LblRXfYBEO>zAWl5Uzl>&^bE zhsmIenLJSBfyhysWNH%GP=h*o1XerAg!un;^upzdELDs;nZ22)Uz?c4c=KUB5-3so zKp%z3mjQ%_q^ZAL?!eF9Ko~ODP!T+7wzYr1FNC5vwl8R%OoYF)e7aldJikrxsAIjKLUQN^4Td*src62LE};D5 zKWQyO+pwXz6u)X(y^wj&CtDQ@zVh|my>8!58<5F2-o4GIaZ(!ueh{QJ>3zFENQHz$ z1Xy%$aNKc7gJ<{wuh@BMioI+BrS>T?mgBRYTx`nhE7dq?+8x@dU z_etJeaRvo`ckp71ZP6(?o^ z{#Xcg(HMH-S+M&)a78psP&EH$mn0CC-~Qq~sF?L8y~g>(zt0rhZ+WMKpT`|f%o7kA-gc8(K#ceAj6-=ijA zyL8avtUi#qe5FO5(TI|(L9*&7iSz0<2i}gt%*g6+l;NcdHRQg&U6xO)LRe$;2Duhc z!=xG;s-Hk6WoqS7l3P%F5Gno_Yq^u2+y130CUe)*7-95sS^usP^(1Zf708R|tozpe01~Qhx^)cl(xwC6; zMcJ*Sg|z;1s2(%zlup8Rav@>Hk**;_HOs0rcc0kM1_PxO~^93TPuF`cT6?X$Dwi|7l$UP?v6&!57)Y1XX zB$RJ{V1eb3J5){T9%uYWygb?MoZ9plz$Y=4#YTm;r@EB;dr$Y`K_V$%cRBfM8`xQp z4*j0Oe&X1|>+CehG_0;}g6QfTpCEy8RJ13ZueK+BqONz4tz;3r;6SlSSaQ4txK6|e zNMXq$>VYG$ySb`+pjS=5R6hI44OP(YP#p-IyndzqMw&k8ZXNo4$<-TqlVS=C*x2!c zIuTvc1Vvzr%<%2h%BO&vC#(9dz1x6to%N`iyI2P5%A~4(q2Za%s@U8TQ*yO*v0HvM zI}oJ+vC$4ysJrdn-^)_i_EQXXgrtiH($X2ew&XY#yd4T(X{tl}QH}oZfG&q>L5#Mv z?KE*r`QK_i5dAj!49bNrgd?Zh9F=HF+3jN4mZ9GOx2CocG%QoR`^;Tl8k!1&L}I>r z+bI)E|6#9$-UkQ=$zo_^MB01L2?#R&qn|;-bZO_GHvau3JzA}i70Vq~ZDr%oHW>DE zZf}`~!o;&wPiyfcjFABK?=Ptny82eMd5J_w^F46l+T~^ldp?t&k2)v&njSoOFgx4_+m8%H4yf4H;XHV&M>XwtmZQ!hc$ zb!{a#S7P;b$W3Sg`kflKDpsOG0t(*qq()87Ix+w$gRQ{{G_s^KOtKi*+uN_e1LeK| zwnh6dVG!-ygImyGbV5x!|ELoZpOr%J>b%c%mpr;XRiF9lL%|}jC=mzb7ef-J#+hXF zxZTjcD0ue06r;iNO=+aIzIo+0qZ$$fu`%@(hiBK0V5q8HU=i8^M;>VdKb`0R4}h`* zC~XFnnK360pNsb1oi-r^`qhB-g}R~-KZont{kS(FaqJHNGTfmfg=3}R9;LqW0kmA! z9zVGZo7$;Encq=zY%pDiOur30A*`((2{-Kj;o+funZK`O1~F#a%A7%9b#JevM0`oZ zom-RYumH@CvZ@$V849cUHKL%2gq*ZNXNpZdwRSQ`nW=lGds688l|9A*?T9qA67^P@Si| z-*30>?fko{g?Ez!ePjgkMwOlS`YA#ZSf)c!lTw3BSszIZ)kWUWod(Y`wmaE%KDTKr za&AFIe4F!dC<*S?Bao}B+Ew+yM<#;F zVX%sa_dx43mDn-{#l{CHnP(=<8ij(U3%VhC9z*QQ5LrOxT5H;AsD+azI(aC2Bxn#7 zRW}w+-`;MrU&xZ`+D4+-8DtpbjcqU>W&%wWpaYVrVL|4`93j;pSq~SM?NPB%+g29F zC(15h=_M-3AOSMT0o=1Ga4N6!hmXYWCGcm5x4V@aVTdnP3}PR55kz|BUY35cWwT6% zzFTP-(Qg7Oh1Jh3?>LpmKfwOuHWuFVTjjnQDh>d|O6hqJ1EIrm1Qh|b($PWAi?@3k zj>5!&7!%~2DViK+3$!4*4Ln>Lf7w-s0_9jj5_@}hH>=A6p#`6oSbxkyfdNptilyS= z`3W>Hr?1p4MgU(UN2j*ifxNeAEycbr);nB0_Q*I;y&f6PSn-XVyjYOz0n^`5%@A-- zdW0-S2eje4#=#w0K>4ZAR$bJHYdCTsZ5vb?t^&ueXrYoCZGD?4a)?Kes*gf(Z9qc# zx!Zp*BnK5BFaY;R(DUUX9o+Sy8W=@fJrlllJs-vnp_bOrrw>4*0?dd${StN=*z6kT zmDfM3>i`2Qr&m4L)p!b=R@RQlUtE7IX9U#+9adh+s5xF6P6W(mX+|StZ3M!tj(=Nl zn#tO*DCgwgb`Dupv26pk=;JBYbWu~%PGadh)QO)c`&Ug4g}}*;0$40HJ62C89!erd zD6A~5J$rgg4<`A%ul-ByklF&+ur3igIVemKoVb@O@8ioG!=Jz>#b{jx_GoDEKKdoV zzF|Tn(2C)%{tkWYWDUTZ2fq!d3#hBY03gs_h`}#*1f5{>(Q{Fy*bXh5mpngd?e>|B z1{&rQ)f>Tds^9vkNmiH5-=GEx8~g_UPK@CZ=*V?89oMo!Y1BV1g6{}D9c{pFG{)&L_q2-+?kig&K3 zo&h!Mzi`{uui=s)sCCQRBvWL}-SY6WFIK-I;8q3I=$O7&q6aBpT;H$11RCo@6v74G6#4W6S-QPgnf-NJu4}K7;o0j}?>C;H08bVKtwzld(OMYOL~yPfn2?G#md1vLcIE?o4tRS6 zgkE4x+mDHA1wDbcOM=J32nq=zCwlhXt$j%2FGpZDpz!~LuJj`a+#GubP_h1t%lQO# zz%WpD_4LlivP!<&TTiV~>W%h>2@k{!sC_JPEA0A>cAHOPg9Xfh3m~Mv4XuyQki}YH zLuD)G-$YF-Ko5Y5I1tgP!JtXl`bt@KQ;%DI|EG($_&-+@RQ8*@7vMero_2N7UgYRzj45n2tP2EiM^=RqCo5+?l1Ae9htKH|W~YlOOjPpc?48Y;__0(<|vb97)pOs z*9kSaH3-!w`l#O9o)Kf0PIIlU4ukM+i#a2TWpv zSebB%eOe6?13$*?GKaRk^^&eQOk_j|7&~!oS?*|UMeY8?nJ9={XCV~^9J{c!IQ`z< zhByuou0kNP0~c-GgKYTQBSl3qLroive_+eYs0D33!?)3D4_(@`BfDEkwjm`E%e!|2 zi`P{!`RhMfJdYQr3+qHS6?|J=WaX;Y@k(7+ZX*~Jq?G}gn(Q2qc)l{y3a2i8!gYAP zI1M(OwYd;15PXlu>Ux&TP?=*ux9EGIP8*89#icew=jYV1`lp=s6+5_VQH$>nWKlr3 zX1|Vah>;g1t^n`c+C1~h4d>@hFCPSE*X075e24-SIqLT(K0h-C!Mvu!oqeWp>~;7J zy41|%X$zB9j zuW0u;G}tZBKDK}Q2t(mDT#oK`zU{aU?$#FiNo zYMq9B3z!-Jjrb3T!ipUf)9wILEzry8FN083yd6Lp7(RqiA_)*hvgW{pR!`mCEg1WE zx&(w4M2ve_T^mTmF9x)nk~O(4c4?_pFaSV24Q=I(VV}KPwQ!!ec!uqC96^7VJaTjp;k*pMI|LA zQ(+K-ePOd2Du4H^ke}#m;o-?j{7>Wy37-JnK^l(gQ2byBOxjo?Bi{uSYut0^7Khd} z`s>%PK)G59x_^PUJiCwC1DpcTSdCA(EE>w`)>v$GSo#LMJyztj^bO}H=_n1`jd=W5 zkX=^){PLDO^;}ovW*V$iP43O1TR1;HQCk3$EDvw$6IzXAg(p8AMzXI61*9BnY!q;g zmM_74xM@Q=J0kSj&OWP2fKy58@X zoXRx@PHt!z4k{4H*>8~^(T~mFKngQr$J7X!{GK1F`4PP<>fBQdup?Q01zj^Q9#XoF6BT}4k3Wt8bj+sqn~50` zQRXE>evf+w<9nc4t6C{>n5!gK>!5-)!0BsY4DWA_16%ET6=(+ugSE$ z{@S5VxM5}JHO-^UB#{T}$?5f!vcGYu)@f7}D+09xNMyX5p-%!0sJ?CBGf*qEYE&*= z5(pO!NRMd3j!QwvXe8|sCV?yRo2NCNJUQ|ZuCK)cb9Lmky>bgD;Xm)XhiKvO0lQM# z7vf*|dOHoYm#~PiQZAw?H~)&Lgjt%}->^7gFlHw!&}IYsSw4q0%0(0=Q6efg){yw3 z6qRG{Kngiby?U>zEiowwnVJ859Wp!4714zxe~*X{BD={Feg1lJ)1 zW~J;WRHvc~_F)OXgTYBG_RmRxY7&&45Dn8jR6)uZ3!-@xlMG-#6yy8-q(sd{0zW*h z!H$EIa2I2yYRs zoACYzT`_=3U7(5hfEZ+StR_ztcGwgVyzkSyVRuc1wJ zgiflq21aJ%vevoNo*ch;J7kyUXYeJ(r>|J$-BJ`8xKW-Ux0zN7Q<`A4apSq+KTbi zdy>kL{d{{Wl$3kZ-;d>eo*7A5E?AdurgR3 z;eiV9pD`p<%&XZcC3YrE!tHrHhzXI33s{^uPVO24ZQU-%~ zgZ>P1*1*jtAW}c>?NxEHHrK{q#=eW*fTZ3wyt-JiDj>ttRY5QrinQaJoK3CsO|UJ2 z92AB-h5aEFU>d-mY32BUfFYld>@zzJ;icGiD$lGo+m7=p!Ui-w$RtaY23|^Uhj4+P zd`3(3Lic!Ic~IKEEnUYkx98?CS`kU4_|BH8^szW}bFQ)h=FY&zi7T^@!<-^?&xFMm z?8Gb;axiXqPvLn`ivqVtlPwnmhld$1kfdHt<|VFtD{QE5tOoTjj65<281+!*wI)DJ z*UIUndIN1M0d1@g%>Q+4!-@ekO@#rWxTUwE$j#8qTd{!D^SJdvN@p?Ti^r|@h;Hg2!xwj7fd=}$EVOoj(WEwuhS_s;QBo)G(gIelaIzOUIi{g zC8L*cxi$qxry|Z`t+8mg$lLcwQ|!cP50oYHE0Ah$ay-VY{s1{z-g&47a&(O|Qr0(3 zcH~L(!Wc4s>_^^^nhZATQWUs!9>y{zdX-^j5~k(#{03CI ze+vf*eQT^upeq3Ps6i^Ii)|kV{U=gtD|zKt*7KA=hz7`U1?nY;uqHsU)k4&+@A?be zbq~_L^F!wvYyLBJ==YJA!z8siX@=V*%rrP)#oOj8&1y-kIYY2s>$UQ(-#`RT%(x0Y zS4jc1ETF6P?Tp!S9ng{TIfD%S9FSn=wHLcO=9>R@59ep?ZzG@!LtUTmLCCg*EQ)Yv z5ZqD64LU4y`rd75a*${{uZh4muKly59^*t0?u@>0)DQSesw3 zIHPZ~2?!6GJ!=0}WjwmzYe5}ao+hZjVV-2t3?Ou|{OT0wX+}kEfwFYJwNdRKopy5e z@A5;D5pu??g*|7Jza3m56gm3qt0YK)2Ar!WG z;CzZ`8fE4UsEsW|a`Isa`=Gii(wsJ(Ko+C>a$^O83|W(-0_rA*;Rj^qSPp!um=|UR zTRlNrj00uY@B?V^Vt;ORw8NGeId(DjZ1|`AmH8_Wu4Vv0Ao@Lhe259cOe-(_SQ{k- z(}&BzsF{{GY%)IA&aWFk&8bzcH^(3pqPM#~I!l5{HlS(%h6B)xyx&eQLl3QJYA1{! z#c9k{j2-8-592dW7s?&*^`@aLf-Fk`&5-OVpB zqSQNBUr*nOF(FVbQxy@uPS%FszX#VqJ%6W7qHd= zc=t~q6JHAfc=(@(3A4cK4T4>{lNiLYbrEee!W^h!D)`MOA(^%Lbi80<)_7?UK-R7!G6i z!r+WjuNVwl@Cqluq#Q_8kfnAYjg6@Nv!@`T)akI0L@5T&K8REysjr;(8=y}5U^Bg7 zNb#X_)v4$N3A`?_WsYFp^B2(=rD1Dj5O9kS#w6fW2k9a`I)`lsl>>|)o1xjafQ@B5 zFPp&07b4G9mI*xpEjyD3Qvi&B82_#Had6i3fI9W-{gJFE$Ui`11E^EHYRTju*s`+k zHI=dFFMd(kF6w((MS^fWcy`EmH`W;a_y^4CZ3`jA8n070U5KXdtwRH#8HDG_$~Ut; zTGx{wS|SuAM@<(Bha&>e1a0@ya=s+R)^e8TB!rRGFOE(-F@3kCZ}d!y1tn!Zq0Ee=d8BoXGF2GuDD(0?D- z6>K0HeB8!4*`bE$&>%w&-5{aC46ElbaO&|M{GTCm8 z1h zhPs#y7A1(=Zw4J-fd_y-Y>!Fi*0>We)1)>V2dFFcbD8%z-W}8@Q2W9{Yq3B=OT3S; zlG)@4L9;5&<%AVfJ};%TA!6)iYP51lX6X&Y0! z1!IQ=fF`vbl>v2{aQur{uUD!x)Dem!%y9_C$KQhG+PA@wgS|4gJyo^&qR=TZy+fCrYR*Rt783O|F18A#ogTafV zZgwn7m`Y0>(binMsLJHil~Q!PKvjP|kx6-f-_%+j4IQ4o4Os^ZPPkhOKiOxXjURiK zNz#?o*`p%X?bmw=^DHsJ0c}fzpa^=oNY%-#;GSol*MJ((T>rucu-@5(Q*Zw#Z)hOp zHvXRIWdPmKCCt|6BL3a?G|+Q`l|i7qV#-{`Va11ZW#gxd3@zkO>i7++Q#V!$|2&_n zA^X;?326u5R^VVKnMC(OovMWgUJxoM20(!=g6d}!fF%$O^pQa^A~}^`9XeahVK>47 z6ee{U!XRWK$=k!IVZ;3qzy{rm^i|k!T8FPHcEu0PmV0zTc>>z>QHrFtNPO^dS2Sy0 z6_V3b8#V)%ndmNZhLeIiedY!>4!0O4tDZpT?wyM`@JLK$eg3UCfIo_^+Z8aTB8)(~ z7hmiSWi!zXZj-X%D?gcP7w9BFG=qJv`TR_w3d$J>&Y)ue2;j&>p9)-j@{h**W_BSb z&?z>EgV|?hEzhU1dIg=v@-S*~GKU6-<%qH$g4_${cBtbnb&(2H0Hz~_T)6vjd z!*!B?wZl-Jh+V)ajvUtE29WILi9f*lDuA@j{ZpqYM!y9kj65Poddp`MK=lo%Hnpi{ zF4W9b5la&Qasm6?$|E|2Ol|%RPH^6kaKS+R1PG=bx*f?errC-=rw)M#K$qmBICI}= ze&{w0)Ki)vIf(tCZ{@bPp1I?818(#tTH)9+820lb33)vQUtUD2Y4+g(n~Q-_-? zhr=D*oY36@qQnO1+!2Xs@;Y5W=Z6*DN?=IjE_IwG=+G2K!oxg;W$PF(E}$L2fE(om8m1J6!-R$PjnpV zZBeJVms&u))X6j$O-Y4oqEmG<5*3fepHcxW8ys1J0K&}!Z;p3g4TFHTIV;dz;gtC+ zOAKjS(@x)ZavcPXu@sWGAwi%R4VYxgp)+@bGZ@LhSfTUPe&y=wsDvS9-)ne~i(J$e z_ilp`PKLPDc!f=cLKlbP#tb6 zKxS|h9r%(#A%H?<&{>v4Iu+wyPIZ||k3v&uXYSiwP(_9Ok z)eP`Le8+fI}PD$M{YBBnoShsdp`EG3?p8n5a=V5(*zO=U{atvPtii3g!KWk zI#$fC-{#sR8-W^&Y41@)hUHMtEVc1VG8n2!XuBbQ&%y#0Ekm&>Qo|HF$%zgSt#>aW zJi{inka_BVo|I&Z)-mZxXWOE|H-Af4E6c`d9>)+hJM??dVq)#scvCKb_%mflb66^) zwT4s!u{fmdZcZ{j6V#7s+$jHYt%)yCddvMjH^Jl$Cnza@fd*p-$dmcEHh~yZ6LMFw zsX9}95!N6yq#=7r(eO*>`R#5F7Q=3Ih&;{ZwimXeNaP^nXmTKOsIB~u}I5J)3(p5_Po$etZeR~S(X@)0R`9E$8|aF}UA5Q5lwYMkj#Hsmo+ z%PS^NEXyKYJ0ggt;AxRd_b}}EX=4WMmsl3)dyZehku(Ymf_5U za#?shBU}~=dk~Ubs%aI{GL&2x^!;PpHr4~ozpuM{TN?pJ1hnsvwfb~$*tn*TQ)7F( z?$M4gT7nSLr7Q^G#OHl8b$NgHw%k};6MC9dulc`XDA$Q8_eZ2Io27lGlUtJzqo}4@ z=hl>P%wKw<$_S|~vS%v$j$`A&m`SzO4hq6Snrv}D*44__JfjM!RMU!hmXos7G0?!} zH6&*72NVSq2UW*JiP-O#V%H%Jr$yYb_Bb`D)K)z74h&Y2&7tT=JKVbGz+&rl_rQRo zw$7SO&=7bnVqlQsHPXODj^D`n#E8Ueq$P|TkAD1J<>rraeMh;zn80swzOO9AE^qf7 zg+JBp@!1h5e4iYbg+y%Ju<#|EK8XPB-LXf2YTB2-e+=c}gB^-uqS37*Y2*sH2tY3K zS~Gh*m5@ygj;n*93n6wr7Bu3-BSPf;4F_<-d06>8#`%J>mSVAFF)@n3MHjf!e0V0; zT_%aRIdC#uA(6!qxrNI#totN@-@4&-5j0L&;tLKL*d8S6B)SozwIB`z=k}0PGw1LV zic|(i##I|50fg6@s#|7-R1RsG8#e-`7a$}w{F{whDAq+Xm=}A%n*-}!td1XOLwr?B zl%_B?mJr6jWIBnt2Qy&6QVf|6rwQ!t+weGMH<#}_$-B0nXwngK)zcQ}C5}Mji{$q3 zK@$kqkt}>Sfpi84!TT)qA_A7p(RqZIT-7lK3ITF&^;JAba!UevaPAG(=?DtuWrL+rqUE{0la}>) zowOVq@%~>+SIxL|!3_VmX2NtlIf}CU?8WsiFnA9~)a9`rn(T1v#yUQO22gYnV1B<^AF>!eQr~_BYVQ{VdPS{p1z+HEDK8f8+uJJ AYXATM diff --git a/dev/_downloads/ddddc4679201fda850a702ce6ca7ff1e/plotting-5.pdf b/dev/_downloads/ddddc4679201fda850a702ce6ca7ff1e/plotting-5.pdf index ad0ebfecd7d4d1cc18224ae99ed69297b0c8cd2f..6c5b66796ca6802ebb08f2d135d2ef74d2bdd399 100644 GIT binary patch delta 15 WcmX@_ao%G?p(2x^`Q~E9J4^sIKL!8* delta 15 WcmX@_ao%G?p(2y1<>q3=J4^sIX9flU diff --git a/dev/_downloads/e0563f4c3c89c72192ce76efd2e6fe6b/matrices-3.pdf b/dev/_downloads/e0563f4c3c89c72192ce76efd2e6fe6b/matrices-3.pdf index 327547a42160b9dcb3307b1041c63b45edb39d77..8529da51d1a86a6ff7d07c565f784cbe7735e772 100644 GIT binary patch delta 27 jcmaEOTJYg%!G;#b7N!>FEi6Zpm@SMfw;xYpkzxh_q(KT2 delta 27 jcmaEOTJYg%!G;#b7N!>FEi6Zpm@N&>wjWPokzxh_q%8^$ diff --git a/dev/_downloads/e07f3720dbc2048eb106de8a904dcfa9/plotting-25.pdf b/dev/_downloads/e07f3720dbc2048eb106de8a904dcfa9/plotting-25.pdf index 162a363b69e6143b8a198dfbab6e00dab68bbb70..4d5171233fae670c45f6b626693297bfcac36cd3 100644 GIT binary patch literal 39758 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 UWRYUkK@Mp)^FGM=oP<_q1f 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 QK`o@Vu)MsXnUV1S07J)NtN;K2 diff --git a/dev/_downloads/e51f495094ca971c2da007d95d7c6aff/matrices-5.pdf b/dev/_downloads/e51f495094ca971c2da007d95d7c6aff/matrices-5.pdf index 67b8d51e179174930c64eac9d3e70de685460138..cc64a5bdaf583ad881d90bfc9e909f7697430ef8 100644 GIT binary patch delta 27 icmdmZLU7{=!G;#b7N!>FEi595%ofI`+r<-Eq?iGYO9)2* delta 27 icmdmZLU7{=!G;#b7N!>FEi595%$7!m+r<-Eq?iGYFbG2c diff --git a/dev/_downloads/e8a5010f49b1076156ddfe2fa5fe6189/beam-9.pdf b/dev/_downloads/e8a5010f49b1076156ddfe2fa5fe6189/beam-9.pdf index 55713c2af61ad6898abff2d26cc26fb2f40ed27f..97a64ad1673b1c174f57a0fc60b29cb8cdbf35fc 100644 GIT binary patch delta 18 ZcmZ1*vo>Z!vlgqdsileW<_@i;%m75K28sXx delta 18 ZcmZ1*vo>Z!vlgp~fq{|v<_@i;%m74827dqm diff --git a/dev/_downloads/eb990a3106294a2a2f898aea0b429ab7/matrices-23.pdf b/dev/_downloads/eb990a3106294a2a2f898aea0b429ab7/matrices-23.pdf index dec2c76063f2410950c9115258b76f3edb1b18df..4d073fad740d8ce5de6b4461eed8f8ecab9de7ac 100644 GIT binary patch delta 29 lcmaEOTJYg%!G;#b7N!>FEi8wUSdC3BjZC*6Phyc`1^~B73U>ei delta 29 lcmaEOTJYg%!G;#b7N!>FEi8wUSWOHJ3=Os)Phyc`1^~9E3Sp#=E= delta 15 WcmX?5cA#v7paqku<^==* diff --git a/dev/_downloads/ee22a6375b132bbe50ac86a0282c8f8f/fourier-2.pdf b/dev/_downloads/ee22a6375b132bbe50ac86a0282c8f8f/fourier-2.pdf index ae61fb88bb1c324681ec33497d128e6604170489..f13816db980adf0c67ea9d20e04b83564e0a03b6 100644 GIT binary patch delta 18 acmX@Oi}Bzt#tl~^nGKDMH{XcNWCj3HX$Qan delta 18 acmX@Oi}Bzt#tl~^nT-q#Hs6TMWCj3HQ3t#L diff --git a/dev/_downloads/ef1b602db6b31a5b8d8b9d20a2410f41/beam-10.pdf b/dev/_downloads/ef1b602db6b31a5b8d8b9d20a2410f41/beam-10.pdf index 2d6ba9834bbef4f62330ccb5a9050f9f5a5372af..d848ea7b772819cc5cb25ac02b4d8aecd05e5f11 100644 GIT binary patch delta 18 ZcmdlTvpZ(PPAyhrQ%e(*&HJ=!nE^@F2I~L- delta 18 ZcmdlTvpZ(PPAygw0|O)T&HJ=!nE^>|2HyYx diff --git a/dev/_downloads/f0b1ed1309beacf065f53d41a069ebe1/plotting-24.pdf b/dev/_downloads/f0b1ed1309beacf065f53d41a069ebe1/plotting-24.pdf index e879c8d79961fbc0c0d087291a3410a4e713ecb6..c4972031de4ea53b991173d7f1da9de0ad28faef 100644 GIT binary patch literal 32020 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 literal 31822 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 UrWc}a1RRcvN3C4B-b4@eAJV%^YXATM diff --git a/dev/_downloads/f0f9e180dc0f510887f7768447a685c0/biomechanics-13.pdf b/dev/_downloads/f0f9e180dc0f510887f7768447a685c0/biomechanics-13.pdf index b4a66520e3c05ed00b3efd02cf5802fc80c5fd18..2822b65ad21df5db834664be8d20e7c033e29ea4 100644 GIT binary patch delta 15 Wcmcbga6e%~unv>C$>vZUE*1bb#RXje delta 15 Wcmcbga6e%~unv=j@#at+E*1bb#sysf diff --git a/dev/_downloads/f143e8af7f67232f463360136b513860/truss-1.pdf b/dev/_downloads/f143e8af7f67232f463360136b513860/truss-1.pdf index 9fcee59c6555d70e18227653306f702699d04f1d..6e3a59a294fbd71ff44278f9c86bc306b25aacae 100644 GIT binary patch delta 15 WcmZ1`wM=Tm25u$;gUy?`OBewye+4rD delta 15 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 z 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 literal 70447 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 diff --git a/dev/_downloads/fd7d64e97562f1e8bfd34628ef58f000/plotting-31_01.pdf b/dev/_downloads/fd7d64e97562f1e8bfd34628ef58f000/plotting-31_01.pdf index 02e8aaa346f4f3083879b43d84b56295072ecebd..bf18ef40243940452ff453c12c457746c396f735 100644 GIT binary patch literal 20495 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 literal 20487 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 literal 20579 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 CyCzxy diff --git a/dev/_images/control_plots-6.png b/dev/_images/control_plots-6.png index 4ffb63db655587e44ea1d473cfb7b551fb9972b2..4aaed3338dd227a74ef6dddeda47ea5c2cf45d98 100644 GIT binary patch literal 22791 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 diff --git a/dev/_images/plotting-26.png b/dev/_images/plotting-26.png index 5333ee99c411162bcbbeca80c8f73f968877fbe9..3e22f0f255aa0c20dde1906a514a375e4a6f2370 100644 GIT binary patch literal 9345 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 R-T_MmC=Ffp;u}_>{{bjGm&O19 literal 9348 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 diff --git a/dev/_images/plotting-29.png b/dev/_images/plotting-29.png index 774ac164c5b17c3e850891527a5767f16324818b..80abb442d9e5fe93ee33b64480ec7d2c578a302d 100644 GIT binary patch literal 6913 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 diff --git a/dev/_images/plotting-30.png b/dev/_images/plotting-30.png index f96ba62ba5fb2821942a764432512078feba1f27..daad1b3f9cb00a1c0833fce40c79cc2779cda80f 100644 GIT binary patch literal 8701 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 literal 8781 zcmdUUXIN9+w(d*-X;KsfMG=&)6hROWfqs6=SNmnvgVp|%u(L)jxiq@VlJ_<@UZ{@ z*wETq#sDDUEds~12Y!(Sha2ISveyMOugmTZUcR<>?18?mmxqhHmkaiWppX3>PprG! zX=!C?IZ44=US1xaXJuqu|206`{f?u|F$~=hoP^m!`JdojBoM2PPbApnlmptUqi z{L-kS0UrH7(%Tk#jt!xhIHk!Jr|zK{-ZCIQvS=CJIA7&(PveVt$z>a4JU`>$#2s_* zj>i$aX4%|`dp|kde46&ENR=Tq84hsn%jSN}E_sTf7a1yhJu+=;QkKW{fkn4+&)izT z*WyDvsMs_PG$zBKp=WM0!%*o6J1YQ6gbXSaPjFQnUX>!??s513E4LHQf7mlaq_=w2 z(d5cYLhQIfCmG6fDkqo`lri{|xf8RW%Xu|eAp;1D>ZB^_mOBnCt0Mdis^OwDHmfe> zq61zFNq9q71G+l@EB?Qvu)obHxzSEb`@mq*F-jqv$m!=7bHbHZ_}aO|3FmViicUdn zsK7d}xq63_<8K+AH;e#4>7S!zT??42uUw66Gzn*JT2WiqI_sl1Ow{+EktoQ?c`dLH z<#GxEHjhi7{|xoubB-5aduu}KBDitCT*;#PnbP%ZR>JBha6hvE2>w)*Dj(9&_saCU znnR2Ap25863WuliE@pUjIRIu4$-XOm6=ShU5FcgC3JSn(`D4FnN~o&xMMFVK>~Cs! zBzfKZoV`SPi|-$MOfnS+6iMP1JxT+Z>{ zC!hss4p5SK0{Y}t?e%qI%}}cR!xd%};Q>ANlb~nI{Pb!s(%gfR9r-)#?k5ERG z$yi+0x8o>5V`F1HrI*0Wg~tn%v2NW<3|XY^bW-6p64{-MLDDlbfQSdbU9htj1@6{l z^vj-db1;^W>P)1+7@asXP?-)9!}CgrZMHJ?i$P@L_gpAMat0K zd8u5RUy75iR}#}-Oa+!R%v%Pm=}f*yhjYLsXosMlTq|6igO5>%dVOMtm-^|){YPtc z898*~MAs*8umaqU!Y!NN^>hAxV{nN{xWw(-q<3MY#UIAy4!c?mEwnw4r5Kk_(SK74 z7;{4e4h)r(=s4z2AhH|=k>F*nrz3W0%EmHe>KBX>Il0dIM91z5s6tNRI5AyDc6#T9 zB&0kdpPOCRyfOvbl$SY-q4VSC0^=L zftfMuv%wa8XXT$qHgY#14GZpiV!QY}S#6u7T4Ob1b)=@jCbVYfpU-6ks_^FngHU+= z6z$Uv&z4)6-_f4gZ8hGcH_lM$-YcQ_9g_8>ooNw; z711Irf8P718#B}-yyaoEQFkAgcvJn_h zOqA+kn>-pk=(B$#Z5WxaV-$0@`qCNl3&44cUqwemL~=VJEfbj3+-a@5>9OKekmhQn zbe|c7%E%h|&udT`cg%G##Ps(nyMvraTGz|8uGg9A=)Zw3$;sT6l6=|DwCKjdj}e=6$O0*B1IL7V0p1V@)^u+(b9qF(9ZdsvjG5 z#CD-^pD0i)wU3nd$f9ziDo!C#^L2}lmwR?xRKnI|5mk>6boj?C5;8qL`$5yw?^8Ow zGG#PVUWP2b{al2uRKifXD~w_j`!AB7Q@YSo<7kZLK*3|>rSdh8zW^WF>G(Y@L6d9qLv(Sy=*q9Q3G2h$xa+q@hvmB+ zGZSKC;S``!-sP6tw}!xKFS0AKm&R)jyek4K<-K24xMxy@QLZHnAcQh}#s3esz(9bE z-i&5O@vqF-cke$a`woiEM6_-0>@nxr`H%&)P^o7~9Wtr6O)fr!!OJO0p-lNS{2I`u zlF1mZBQ6N7!Pl0gWeVwQJuwdSzvTgSMY_C{WJmmFAQ>GR&Ww7nGV3~f$k61bvA8Ms-nahrmUxmofkqPREa>c+P{C~^tknQs~!VT8APIf6L#VJdD7bLh-g(k zAo(adX>k$nJC-opI0hw(c>4B!SLw|CJ*71AMMO!Vy>9P=O#gNZCOV+O&4P|rmoBo9 zu(uz=&^?j@21B)`e+EJlz6L<|sk$!(w5;s zRoH-ulzX2N`iiDv=Z=`W={ZMbCdSr;9Awc5)iPs<^UfHv=CvmFFRZK&; zlz|gv9V9{}i#-*P;a9$)!dCZG3IsMr@e_V@5Zp%bRZ3(mCsq$2#ihF~vdyozcX)!n z?udO;j@lS@IJGQ-sp_O@Cx1|UiIm^W4R*It@J*9VX>p=LI$P5bHtQfnEbj!5)RzG5FgyE2oU$>uyz zMyq{5XgYT7nlbuOh07r^R^+McZ{*aubaXmv{zDk#;pafJI2Vy4spQlybGr-X;TR)PAY6T zGi`l^o^=u3s`fE&7X&KSYqLt;DSl}GxXL>b7ev)@ZaJZy*!=~TDrD?9gB}q4xQQBU zwD$kL&+QL_Uf&|^uG`#L&qQ?N4J5AdpJ*DvCJLl!E5!r^ol72W;1r^1?BFRBbnL}N z82pC3ckfPBcTPmVGz5l(7A@?O19sH~#zEiv-$PT%Y0qz|FxNen0wbULUy;n+(ROV* z0zo%b*p5d_;j*e%u44O7P-bfhG(RYjJvT7v*xAZd*0tI4hyHqv8<%zPj9$%_4|L%I zZ)Z4!5e^}XWokpFroNH9Jmg616_gVP!2>1P@}4iMOAR7`H{5i zJx}&Rh5O?3bXj>*e%&6fgd8gPJr9_1fu8Wk3p-~;MjLv%AZX|$Y0~K)$Q_Asf=uEd zBBD%=qP~6Je@UORjHN8~xQc167=lefS)-brV9Jmqp+X+|BsVwE8ex@rZpsp$FoX$B z%>{mzI*;$F>8C-Rg+4^$@|8SLe9ELWIVKtS>{_kQlxE{^s9R1g3;Kxs58a7T{HGh= zcqqzcIZRA;c}_!k4bg(mt2O!$rW}}ecOMrhW)8!9|H8l1gfDtQ2=WdKBdsqPSGp17 z=!bY?AL`WT8#|)cW7R4SF};Ckd-rt-O^65X;!!*|1Xw(_*F}uEY#}yE_pC5B0)M>r zwxLk(i{xo-oySyR4+e7(Q6SS8Zxv#B;)GlyMezF91bGWmL24bpIUo`U$*0dOE5MXuV=Qg_|1kj)7SDn3{888z-AP3;O`$vi~@t0{q#NP>oV9>{EL3S03x_i zbXm+(W@p5Lj2=HL3QD9E2adSN1y)gogDX*_v*_Yi{*mf8TxlLl_1zO3GB!xiL;HOi zJ0$1Xpj^4{bwPQooXD1;@nrFibr4!nCHoOGEE4d~>B>d*p8b{0_p*R<(=nIu>r1YA z9t;eE!)4`!YEME#5abdK5QO}?pG%<>PIQFwW02V&91CnYf19%TW6 zKYm}M++)O7juF#^#l=C)v;RbI!yp$#lj$z$?){5&pK|DyAB&URo<9s1BzTw&*YxYr zscrT7@TuD&4b7h(P96KRu`+p%mBz&dXvX5gD|0gGXGIQhLkc{=&Ha3?etYZM<~M6@ zK)b#)MM_a1r76RNa=>%y`CRobd?RKaN&)(Jrq<|AAe?MTmMjpIZi1CF_XK-o}-MY^6Jt6z$u3R_)7(A54DzL8px?J*U8t?wG8 zyA%~avydL;^wP8^u&2ZI-oiI_yG$(tG@7O$>O1rYEpfpb6u!a-Uo zWN`M6y~c5H;&(hK!f%&dZf{i&;qeBf!D*jgB~{pk%iqrF%a5VT&p*ESv~#T`ieGZu zgOvebu>U~t;ly18chS{X7-Q8<^hi)2X@*mK{|(?CYuCo7cu?XuFK&y77}xs1J^7qM z;L3;J#I4RH9liS?wYExFx;wCIZO(BaoctVsSfWeJ9`=g#cYD@ELF4utc^e#+8yBPp zKr%yij%IsDc{=^)XQ?MG>uwSK%{CGDkswe?)@Zoy8mvvQUnC(wNt8PzZ_pH-9aNad zrCbo;3T;t$mvVJ9V=^kzMN>j+8J;EBw~qv^p_!SXL|>cfLB6JDXkT&W@~|_h#Fp5b z_2MDhY3thHEwjygbMSH1BUau{_gDi}``27di8lIx?@T;&vbfa0DxtckNMO=SblqjG z0dqr`{phz6z_M1yKwWBuVh5$*fKv4L?Y2AE%#l{|F3;D8OK5ccmk_||-#Q(mK79DR z)Z*4ZD^t#NS$|+z=|ou>AYgm(Yh#t^c-;*a`8sadYb#ty9th6dXs;@LLR%~gxwC55NY*E8P`S2X8wXrj_IQ)YAFNI`tVmz zV=7)_XTFCA^)Had*}z!T()J;G{eFIz%|Eb?D*tw$fV)~=TU05HE(X%xh)}k}`0%50 z;XQt-m0}?KS%q7=i5bLx&U1PICoV1--<_FM<6WNK(pcktI`ceFh~QaqfQsM6ps*ME z@c)n(`lmBhqzmbDVADphyznd)^3@a4iTj}?T3Q2HbavS8hm3vX$+u|Ex0HxP~4 z0I2oWRqrVf80JHRXUeqnYLdKfDV z1yq{SZB5^?ph~w|>X}jR0n0yB_mGq5zgi3}bw26}Z)Vn9zjQv?G%bpajk7z*hf{zO zJ-%9W{XltJ$|>8>_t65yV>{bxDQZDA7o(4E6*cZGM0dTS-(C>tat%A_{nIA+mw=+Q zgAu|H48RCl{&b#$!VyBdpD1PiVwFn1M7`bK-rn~@|FC79pV7j?0!w(aj)B3z>}YNO z3;oo_yBpZv&U!i>9XS)Lqt%l*1dS1H>G78$^StEKj!r*6W&1CGzO*u}zN361+HDZIJn&X30pvDUjxxU+jcsvw{s$SWlpTr=x>*m$%%-Gh5RaQ z@90>e~rX-rXJ-Wrym*(8VD8uq@Aj>HC;#r^HW^cy6ew4yJd9pWMwPUbX z)U;vGz-!Ci?DOFjjy*@IL*K;xt42BZY(irQYl`C3u zS*sRz)%=npt?7sm&2%uBFCSurylL~c2e`R^Zmo?C5OkBg1}uHCwE1uQ0@C8+xxJ~w zS42caV)0K8E1nP%ntT|k4k~3KC43#owoPkOpJ7y|X(WUUKq1_%Uh*=xMGFl4{G99k z?Hz*x%%ZKWtu>QTDsD72Jy7>HVfubjHBBL+lE3L;=Js+PQAnvLq4@2Z)OKtIw)aJZ z+SOVg>hdbtec)#hpQ785&wKOvO*1&GrX~iOKEj@CbL*HtIA}rluk(fv>qx_^S6}q? znXvJn?epQDmV}PVuj13k?>mx>Nk1Fp$)J)`yf}i3R^O(XPwx@**|h~6Yf?GtlX}*7 zws3PZFo^aooM@-~s;bH?+YrVgftcI!WQoD%-2>(m;^HOz&1n9!UY{~l1H7Q3wq{Hl zN%0bwp^FF%Mg4ft?n!5S`SPoCil9_Bc+-zxJ=h|gouBmV*m)BZlbb5BaZm~ZuXUi2 zs{e8czsQR;X>ii?waL}1iL=$yN6AKM&|&hv7e{Awbat9tzn;>arfjEtWj-Mxfimhl z)}L>bD~w(n3u%P^H@j!be#z3HV>_Z`m|bk(F!MP#9L{d97=Qn@W$lZcoa0-Y)9TSQ z{+IA^ zSMkNb9|t>e?1@$gvoK3yKrfC;jM1 zQV9CvQa=-LvrelFfn<2s`i}jtM+sZ(>zAN<8N(muFsGwi>YSdMg%h$&stvg+WIc0 zZglNhvO`Zs*96DzDW1|#gOERQXWYLQ`mfB~W)U10hl%rfN0N;5c+`IRpv}E zm?*dUm8(!Geh0Zg)AZuvB77`~ZvVH4KLCnzceA-G`3!U;wC|{Q5>*_Wi-OE%^3I(* zUK1^kPVCG=T!$~k3-hZ5n%TX7^7$d#;rRG?lOJRmvl0|5k0foX=f{s9F&ulFcs0Ly zD7mQ6<7$-sm-F}RJ(zXit&FvWGx1JRO>^9^0Dr&^K;*D0AI zAUPnsc(Kb!h`C@M!2&orxkU90H8k!~4}!o@B%p6jQCK<6mwx|#)3VCr zTdI2FGD-J@l++b0wxHe+1m1K0%S|B9ZieJ?1Xd^ibCv#oNfxf))c3)M9wh!#CxFxZ dzX@nt>Y9fPE?75%$4~(PeF3BOTGJ-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 270e52983aa..fb4acfe1b70 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 16c1f7733d6..b57162b82c5 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 77316a42677..a4617eb1348 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 5e6441030c9..819da60d7c7 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 1b5392a8d7b..e19b730f5a0 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 9706595a2a3..d27d7696b16 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 08852b7db06..387e97ed9f5 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 0142205dca6..8fe06c529c8 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 214e426cac6..0d4485c87ed 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 e124ab21e29..b514e2361ea 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 5a6c8ee7d77..15de4d18821 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 eb3066af2c8..ae5086ff082 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 488e67a6cf4..842d75138a9 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 4a615f5a4b4..17a37f09e6a 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 f90fa9de00b..73e87ef3a8f 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 6a610a04293..f4762482bd9 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 f356bddaad2..9bee6453efc 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 e73eb45e0c0..4050a2872ac 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 e0079324215..7fa71840128 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 f21e3a54948..275f1eef2e3 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 8cb4ad6f0a8..3b4cf4c523e 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 30721413f00..cbf2b6a02a3 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 06792afaaf7..94ac225b56f 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 faf1ed14b3d..bf4467620e2 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 40de7a64285..2d9381411e0 100644 --- a/dev/modules/core.html +++ b/dev/modules/core.html @@ -818,7 +818,7 @@
Documentation Version
evaluate=None,

-)[source] +)[source]

Converts an arbitrary expression to a type that can be used inside SymPy.

Parameters:
@@ -1299,7 +1299,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

@@ -1323,7 +1323,7 @@

References

basic

-class sympy.core.basic.Basic(*args)[source]
+class sympy.core.basic.Basic(*args)[source]

Base class for all SymPy objects.

Notes And Conventions

    @@ -1414,7 +1414,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.

@@ -1425,7 +1425,7 @@

References
-as_dummy()[source]
+as_dummy()[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 @@ -1481,7 +1481,7 @@

References
-atoms(*types)[source]
+atoms(*types)[source]

Returns the atoms that form the current object.

By default, only objects that are truly atomic and cannot be divided into smaller pieces are returned: symbols, numbers, @@ -1569,13 +1569,13 @@

References
-classmethod class_key()[source]
+classmethod class_key()[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. @@ -1603,19 +1603,19 @@

References
-count(query)[source]
+count(query)[source]

Count the number of matching subexpressions.

-count_ops(visual=None)[source]
+count_ops(visual=None)[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’ @@ -1640,7 +1640,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
@@ -1666,7 +1666,7 @@ 

References
-find(query, group=False)[source]
+find(query, group=False)[source]

Find all subexpressions matching a query.

@@ -1687,7 +1687,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.

@@ -1724,7 +1724,7 @@

References
-has(*patterns)[source]
+has(*patterns)[source]

Test whether any subexpression matches any of the patterns.

Examples

>>> from sympy import sin
@@ -1769,7 +1769,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

@@ -1797,7 +1797,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.

@@ -1848,7 +1848,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 @@ -1902,7 +1902,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 @@ -1951,7 +1951,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

@@ -1968,7 +1968,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:

@@ -1984,7 +1984,7 @@

References
-refine(assumption=True)[source]
+refine(assumption=True)[source]

See the refine function in sympy.assumptions

@@ -2000,7 +2000,7 @@

Referencesexact=None,

-)[source] +)[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 @@ -2154,7 +2154,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 @@ -2228,13 +2228,13 @@

References
-simplify(**kwargs)[source]
+simplify(**kwargs)[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
@@ -2254,7 +2254,7 @@ 

References
-subs(*args, **kwargs)[source]
+subs(*args, **kwargs)[source]

Substitutes old for new in an expression after sympifying args.

\(args\) is either:
@@ -2646,7 +2646,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.

@@ -2684,7 +2684,7 @@

Referencesx,

-) tuple[Expr, Expr][source] +) tuple[Expr, Expr][source]

c*x**e -> c,e where x can be any symbolic expression.

@@ -2697,7 +2697,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.

@@ -2729,7 +2729,7 @@

References
-as_coefficient(expr)[source]
+as_coefficient(expr)[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 @@ -2801,7 +2801,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.

@@ -2834,7 +2834,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. @@ -2892,7 +2892,7 @@

References
-as_expr(*gens)[source]
+as_expr(*gens)[source]

Convert a polynomial to a SymPy expression.

Examples

>>> from sympy import sin
@@ -2919,7 +2919,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.:

@@ -3050,7 +3050,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.

@@ -3066,7 +3066,7 @@

References
-as_numer_denom()[source]
+as_numer_denom()[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 @@ -3082,13 +3082,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
@@ -3103,7 +3103,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
@@ -3126,7 +3126,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 @@ -3146,7 +3146,7 @@

References
-as_real_imag(deep=True, **hints)[source]
+as_real_imag(deep=True, **hints)[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, @@ -3175,13 +3175,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).

@@ -3287,13 +3287,13 @@

References
-cancel(*gens, **args)[source]
+cancel(*gens, **args)[source]

See the cancel function in sympy.polys

-coeff(x, n=1, right=False, _first=True)[source]
+coeff(x, n=1, right=False, _first=True)[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

@@ -3421,19 +3421,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.

@@ -3441,13 +3441,13 @@

References
-conjugate()[source]
+conjugate()[source]

Returns the complex conjugate of ‘self’.

-could_extract_minus_sign()[source]
+could_extract_minus_sign()[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.

@@ -3477,7 +3477,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.

@@ -3507,7 +3507,7 @@

References**hints,

-)[source] +)[source]

Expand an expression using hints.

See the docstring of the expand() function in sympy.core.function for more information.

@@ -3538,7 +3538,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

@@ -3561,7 +3561,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
@@ -3595,7 +3595,7 @@ 

References
-extract_multiplicatively(c)[source]
+extract_multiplicatively(c)[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.

@@ -3628,13 +3628,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.

@@ -3654,7 +3654,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.

@@ -3662,19 +3662,19 @@

References
-gammasimp()[source]
+gammasimp()[source]

See the gammasimp function in sympy.simplify

-getO()[source]
+getO()[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 @@ -3691,13 +3691,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).

@@ -3708,7 +3708,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 @@ -3751,7 +3751,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

@@ -3820,7 +3820,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 @@ -3929,7 +3929,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 @@ -3993,7 +3993,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 @@ -4045,7 +4045,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
@@ -4059,7 +4059,7 @@ 

References
-limit(x, xlim, dir='+')[source]
+limit(x, xlim, dir='+')[source]

Compute limit x->xlim.

@@ -4075,7 +4075,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 @@ -4093,7 +4093,7 @@

References
-normal()[source]
+normal()[source]

Return the expression as a fraction.

expression -> a/b

@@ -4118,7 +4118,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 @@ -4180,19 +4180,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()[source]
+primitive()[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 @@ -4213,25 +4213,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()[source]
+removeO()[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.

@@ -4265,7 +4265,7 @@

References
-separate(deep=False, force=False)[source]
+separate(deep=False, force=False)[source]

See the separate function in sympy.simplify

@@ -4282,7 +4282,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.

@@ -4395,7 +4395,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”.

@@ -4403,13 +4403,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

@@ -4417,7 +4417,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
@@ -4432,7 +4432,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, …

@@ -4443,7 +4443,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:
@@ -4499,7 +4499,7 @@

References**assumptions,

-)[source] +)[source]

A Wild symbol matches anything, or anything without whatever is explicitly excluded.

@@ -4590,7 +4590,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
@@ -4618,7 +4618,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 @@ -4735,7 +4735,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 @@ -4774,7 +4774,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:
@@ -4806,7 +4806,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.

@@ -4826,7 +4826,7 @@

References
-sympy.core.intfunc.ilcm(*args)[source]
+sympy.core.intfunc.ilcm(*args)[source]

Computes integer least common multiple.

Examples

>>> from sympy import ilcm
@@ -4868,7 +4868,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 @@ -4911,7 +4911,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
@@ -4932,7 +4932,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:
@@ -4976,7 +4976,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).

@@ -5003,7 +5003,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

@@ -5043,7 +5043,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.

@@ -5092,7 +5092,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. @@ -5115,31 +5115,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\).

@@ -5147,7 +5147,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
@@ -5311,7 +5311,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
@@ -5401,13 +5401,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.

@@ -5420,7 +5420,7 @@

Referencesclear=True,

-)[source] +)[source]

Return the tuple (R, self/R) where R is the positive Rational extracted from self.

Examples

@@ -5445,7 +5445,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.

@@ -5459,7 +5459,7 @@

Referencesmax_denominator=1000000,

-)[source] +)[source]

Closest Rational to self with denominator at most max_denominator.

Examples

>>> from sympy import Rational
@@ -5475,7 +5475,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
@@ -5512,7 +5512,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 @@ -5537,7 +5537,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:

@@ -5714,25 +5714,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:
@@ -5783,7 +5783,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)\). @@ -5794,13 +5794,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.

@@ -5812,7 +5812,7 @@

References
-to_algebraic_integer()[source]
+to_algebraic_integer()[source]

Convert self to an algebraic integer.

@@ -5824,7 +5824,7 @@

Referencesradicals=True,

-)[source] +)[source]

Convert self to an AlgebraicNumber instance that is equal to its own primitive element.

@@ -5889,7 +5889,7 @@

Referencesminpoly=None,

-)[source] +)[source]

Convert to an Expr that is not an AlgebraicNumber, specifically, either a ComplexRootOf, or, optionally and where possible, an @@ -5915,10 +5915,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.

@@ -5928,13 +5928,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

@@ -5942,7 +5942,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

@@ -5964,7 +5964,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

@@ -5984,7 +5984,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

@@ -6008,7 +6008,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

@@ -6028,7 +6028,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. @@ -6071,7 +6071,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 @@ -6109,7 +6109,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.

@@ -6121,7 +6121,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 @@ -6149,7 +6149,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 @@ -6176,7 +6176,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.

@@ -6201,7 +6201,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 @@ -6236,7 +6236,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 @@ -6269,7 +6269,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

@@ -6298,7 +6298,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 @@ -6326,7 +6326,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 @@ -6361,7 +6361,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.

@@ -6407,7 +6407,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
@@ -6464,7 +6464,7 @@ 

References

power

-class sympy.core.power.Pow(b, e, evaluate=None)[source]
+class sympy.core.power.Pow(b, e, evaluate=None)[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 @@ -6602,7 +6602,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. @@ -6630,7 +6630,7 @@

Referencesclear=True,

-)[source] +)[source]

Return the tuple (R, self/R) where R is the positive Rational extracted from self.

Examples

@@ -6681,7 +6681,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 @@ -6753,7 +6753,7 @@

References
-as_coeff_Mul(rational=False)[source]
+as_coeff_Mul(rational=False)[source]

Efficiently extract the coefficient of a product.

@@ -6766,7 +6766,7 @@

Referencesclear=True,

-)[source] +)[source]

Return the tuple (R, self/R) where R is the positive Rational extracted from self.

Examples

@@ -6780,7 +6780,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
@@ -6795,7 +6795,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.

@@ -6817,7 +6817,7 @@

References
-classmethod flatten(seq)[source]
+classmethod flatten(seq)[source]

Return commutative, noncommutative and order arguments by combining related terms.

Notes

@@ -6900,7 +6900,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.

@@ -6929,7 +6929,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 @@ -7015,13 +7015,13 @@

References
-as_coeff_Add(rational=False, deps=None)[source]
+as_coeff_Add(rational=False, deps=None)[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

@@ -7043,7 +7043,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 @@ -7064,7 +7064,7 @@

References
-as_numer_denom()[source]
+as_numer_denom()[source]

Decomposes an expression to its numerator part and its denominator part.

Examples

@@ -7083,7 +7083,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
@@ -7099,7 +7099,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.

@@ -7120,7 +7120,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
@@ -7136,7 +7136,7 @@ 

References
-classmethod flatten(seq)[source]
+classmethod flatten(seq)[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 @@ -7150,7 +7150,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

@@ -7190,7 +7190,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:
@@ -7234,7 +7234,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:
@@ -7362,7 +7362,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 @@ -7475,49 +7475,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 @@ -7576,7 +7576,7 @@

References
-as_poly(*gens, **kwargs)[source]
+as_poly(*gens, **kwargs)[source]

Returns lhs-rhs as a Poly

Examples

>>> from sympy import Eq
@@ -7589,7 +7589,7 @@ 

References
-integrate(*args, **kwargs)[source]
+integrate(*args, **kwargs)[source]

See the integrate function in sympy.integrals

@@ -7597,7 +7597,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 @@ -7851,7 +7851,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 @@ -8105,7 +8105,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 @@ -8133,7 +8133,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 @@ -8387,7 +8387,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 @@ -8644,7 +8644,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
@@ -8677,7 +8677,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).

@@ -8744,7 +8744,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
@@ -8791,7 +8791,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
@@ -8995,7 +8995,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:

@@ -9054,7 +9054,7 @@

Referenceswrt=None,

-)[source] +)[source]

Expresses a Derivative instance as a finite difference.

Parameters:
@@ -9140,7 +9140,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.

@@ -9150,7 +9150,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 @@ -9216,7 +9216,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.

@@ -9259,7 +9259,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 @@ -9307,13 +9307,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.

@@ -9350,7 +9350,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.

@@ -9472,7 +9472,7 @@

References**hints,

-)[source] +)[source]

Expand an expression using methods given as hints.

Explanation

Hints evaluated unless explicitly set to False are: basic, log, @@ -9755,12 +9755,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:
@@ -9835,7 +9835,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

@@ -9858,7 +9858,7 @@

Referencesfactor=False,

-)[source] +)[source]

Wrapper around expand that only uses the log hint. See the expand docstring for more information.

Examples

@@ -9872,7 +9872,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

@@ -9886,7 +9886,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

@@ -9900,7 +9900,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

@@ -9920,7 +9920,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

@@ -9934,7 +9934,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

@@ -9957,7 +9957,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 @@ -10042,7 +10042,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 @@ -10068,7 +10068,7 @@

References

evalf

-class sympy.core.evalf.EvalfMixin[source]
+class sympy.core.evalf.EvalfMixin[source]

Mixin class adding evalf capability.

@@ -10084,7 +10084,7 @@

Referencesverbose=False,

-)[source] +)[source]

Evaluate the given formula to an accuracy of n digits.

Parameters:
@@ -10167,7 +10167,7 @@

Referencesverbose=False,

-)[source] +)[source]

Evaluate the given formula to an accuracy of n digits.

Parameters:
@@ -10240,12 +10240,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. @@ -10266,7 +10266,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:
@@ -10293,7 +10293,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.

@@ -10321,7 +10321,7 @@

References
-tuple_count(value) int[source]
+tuple_count(value) int[source]

Return number of occurrences of value.

@@ -10329,7 +10329,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

@@ -10358,7 +10358,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 @@ -10391,25 +10391,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.

@@ -10429,7 +10429,7 @@

Referencesfraction=True,

-)[source] +)[source]

Compute the GCD of terms and put them together.

Parameters:
@@ -10506,7 +10506,7 @@

Referencessign=True,

-)[source] +)[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.

@@ -10575,7 +10575,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 @@ -10619,7 +10619,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)

@@ -10725,7 +10725,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.

@@ -10836,7 +10836,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

@@ -10859,7 +10859,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 @@ -10889,7 +10889,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 @@ -10907,7 +10907,7 @@

Examples
-sympy.core.random._randrange(seed=None)[source]
+sympy.core.random._randrange(seed=None)[source]

Return a randrange generator.

seed can be

    @@ -10933,7 +10933,7 @@

    Examples
    -sympy.core.random._randint(seed=None)[source]
    +sympy.core.random._randint(seed=None)[source]

    Return a randint generator.

    seed can be

      @@ -10962,7 +10962,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.

      @@ -10970,7 +10970,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 @@ -11015,7 +11015,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 @@ -11063,7 +11063,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
      @@ -11083,7 +11083,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 00ffebf87c0..45381499b06 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 529dbc9a563..57377ea4833 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 5444d3ba10d..3d4bfded631 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 3f7e08bca5c..d5a31614b9d 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 e1b968d836c..16f4ca7bb20 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 5778f4fdec0..74618d9faaa 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 4f66e438ec2..5f655e43530 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 81770dad36f..12f245ae63e 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 a04d2a57e9f..d6ccb0909cd 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 8a4d274119f..9181c594eb4 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 9b34ebd00c9..e928084582c 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 2ea2556b965..239180c8c1a 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 914bfd550f5..63339bdb416 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 874f07ad9da..51661905769 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 f90be7a0c53..7633a70b5e1 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 8e6883ba872..8d4ed49f118 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 724e7dd5c5f..bf5985c380a 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 26cec54cfe4..c2a9b93a73f 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 5b70bb72c5c..e489c02640c 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 8576b6bbbfd..3eb9b6ccdae 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 07d6ea6242e..3a11b81bbc8 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 6ab34e29e4f..cfebd70d9f2 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 dbcaa446bc8..ccaea7d8e2c 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 13416ffc836..e38e7121e63 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 bb91b654998..e69e72c6197 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 82b6ab4c157..b64ce8b2fa9 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 6ece0d6d368..a0bac6e0c97 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 8a650ce3464..26965994660 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 ae46dab0ce1..81489f45723 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 d213e212074..aa8bc9ad522 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 7c03363c3f8..0a2beb418ef 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 79c345c074b..4029a03d7af 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 6a0c7cc5fb6..c8f1f95a464 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
        @@ -943,7 +943,7 @@ 

        Ntheory Class ReferenceNtheory 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.

        @@ -1000,7 +1000,7 @@

        Ntheory Functions 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.

        @@ -1076,7 +1076,7 @@

        Ntheory Functions 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:
        @@ -1117,7 +1117,7 @@

        Ntheory Functions 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 @@ -1140,7 +1140,7 @@

        Ntheory Functions 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 @@ -1237,7 +1237,7 @@

        Ntheory Functions 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.

        @@ -1272,7 +1272,7 @@

        Ntheory Functions 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

        @@ -1323,7 +1323,7 @@

        Ntheory Functions 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 @@ -1376,7 +1376,7 @@

        Ntheory Functions 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

        @@ -1408,7 +1408,7 @@

        Ntheory Functions 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

        @@ -1438,7 +1438,7 @@

        Ntheory Functions 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.

        @@ -1460,7 +1460,7 @@

        Ntheory Functions 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:

          @@ -1553,7 +1553,7 @@

          Ntheory Functions 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
          @@ -1594,7 +1594,7 @@ 

          Ntheory Functions 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.

        @@ -1670,7 +1670,7 @@

        Ntheory Functions 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.

        @@ -1756,7 +1756,7 @@

        Ntheory Functions 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). @@ -1901,7 +1901,7 @@

        Ntheory Functions 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:

        @@ -2078,7 +2078,7 @@

        Ntheory Functions 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:

        @@ -2115,7 +2115,7 @@

        Ntheory Functions 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 @@ -2164,7 +2164,7 @@

        Ntheory Functions 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 @@ -2193,7 +2193,7 @@

        Ntheory Functions 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

        @@ -2214,7 +2214,7 @@

        Ntheory Functions 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.

        @@ -2236,7 +2236,7 @@

        Ntheory Functions 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
        @@ -2254,7 +2254,7 @@ 

        Ntheory Functions 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 @@ -2291,7 +2291,7 @@

        Ntheory Functions Reference
        -sympy.ntheory.factor_.udivisor_count(n)[source]
        +sympy.ntheory.factor_.udivisor_count(n)[source]

        Return the number of unitary divisors of n.

        Parameters:
        @@ -2319,7 +2319,7 @@

        Ntheory Functions 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.

        @@ -2349,7 +2349,7 @@

        Ntheory Functions Reference
        -sympy.ntheory.factor_.antidivisor_count(n)[source]
        +sympy.ntheory.factor_.antidivisor_count(n)[source]

        Return the number of antidivisors [R662] of n.

        Parameters:
        @@ -2380,7 +2380,7 @@

        Ntheory Functions 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 @@ -2423,7 +2423,7 @@

        Ntheory Functions 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 @@ -2461,7 +2461,7 @@

        Ntheory Functions 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 @@ -2520,7 +2520,7 @@

        Ntheory Functions 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 @@ -2576,7 +2576,7 @@

        Ntheory Functions 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:

        @@ -2628,7 +2628,7 @@

        Ntheory Functions 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).

        @@ -2678,7 +2678,7 @@

        Ntheory Functions 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 @@ -2718,7 +2718,7 @@

        Ntheory Functions 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.

        @@ -2759,7 +2759,7 @@

        Ntheory Functions 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

        @@ -2774,7 +2774,7 @@

        Ntheory Functions 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

        @@ -2803,7 +2803,7 @@

        Ntheory Functions 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

        @@ -2822,7 +2822,7 @@

        Ntheory Functions 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

        @@ -2844,7 +2844,7 @@

        Ntheory Functions 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

        @@ -2866,7 +2866,7 @@

        Ntheory Functions 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.

        @@ -2890,7 +2890,7 @@

        Ntheory Functions 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:
        @@ -2912,7 +2912,7 @@

        Ntheory Functions 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

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

        Ntheory Functions 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:
        @@ -2937,7 +2937,7 @@

        Ntheory Functions 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)
        @@ -2950,7 +2950,7 @@ 

        Ntheory Functions 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 @@ -3006,7 +3006,7 @@

        Ntheory Functions 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
        @@ -3046,7 +3046,7 @@ 

        Ntheory Functions 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

        @@ -3068,7 +3068,7 @@

        Ntheory Functions 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, @@ -3122,7 +3122,7 @@

        Ntheory Functions 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

        @@ -3140,7 +3140,7 @@

        Ntheory Functions 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

        @@ -3157,7 +3157,7 @@

        Ntheory Functions 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.

        @@ -3192,7 +3192,7 @@

        Ntheory Functions 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 @@ -3216,7 +3216,7 @@

        Ntheory Functions 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.

        @@ -3244,7 +3244,7 @@

        Ntheory Functions 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:

        @@ -3293,7 +3293,7 @@

        Ntheory Functions 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:

        @@ -3341,7 +3341,7 @@

        Ntheory Functions 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:

        @@ -3388,7 +3388,7 @@

        Ntheory Functions 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.

        @@ -3415,7 +3415,7 @@

        Ntheory Functions 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

        @@ -3440,7 +3440,7 @@

        Ntheory Functions 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.

        @@ -3484,7 +3484,7 @@

        Ntheory Functions 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.

        @@ -3529,7 +3529,7 @@

        Ntheory Functions 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.

        @@ -3576,7 +3576,7 @@

        Ntheory Functions 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:
        @@ -3614,7 +3614,7 @@

        Ntheory Functions 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

        @@ -3636,7 +3636,7 @@

        Ntheory Functions 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.

        @@ -3716,7 +3716,7 @@

        Ntheory Functions 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

        @@ -3729,7 +3729,7 @@

        Ntheory Functions 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:
        @@ -3769,7 +3769,7 @@

        Ntheory Functions 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:
        @@ -3821,7 +3821,7 @@

        Ntheory Functions 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:
        @@ -3888,7 +3888,7 @@

        Ntheory Functions 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:
        @@ -3915,7 +3915,7 @@

        Ntheory Functions 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:
        @@ -3941,7 +3941,7 @@

        Ntheory Functions 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
        @@ -3953,7 +3953,7 @@ 

        Ntheory Functions 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:
        @@ -4028,7 +4028,7 @@

        Ntheory Functions 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

        @@ -4043,7 +4043,7 @@

        Ntheory Functions 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)]).

        @@ -4091,7 +4091,7 @@

        Ntheory Functions 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 @@ -4130,7 +4130,7 @@

        Ntheory Functions 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 @@ -4190,7 +4190,7 @@

        Ntheory Functions 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 @@ -4252,7 +4252,7 @@

        Ntheory Functions 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 @@ -4290,7 +4290,7 @@

        Ntheory Functions 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:
        @@ -4328,7 +4328,7 @@

        Ntheory Functions 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:
        @@ -4355,7 +4355,7 @@

        Ntheory Functions 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:
        @@ -4390,7 +4390,7 @@

        Ntheory Functions 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

        @@ -4408,7 +4408,7 @@

        Ntheory Functions 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 @@ -4465,7 +4465,7 @@

        Ntheory Functions 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
        @@ -4512,7 +4512,7 @@ 

        Ntheory Functions 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 @@ -4579,7 +4579,7 @@

        Ntheory Functions 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 @@ -4619,7 +4619,7 @@

        Ntheory Functions 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.

        @@ -4660,7 +4660,7 @@

        Ntheory Functions 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).

        @@ -4710,7 +4710,7 @@

        Ntheory Functions 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

        @@ -4743,7 +4743,7 @@

        Ntheory Functions 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\).

        @@ -4850,7 +4850,7 @@

        Ntheory Functions 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 @@ -4924,7 +4924,7 @@

        Ntheory Functions 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. @@ -4975,7 +4975,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 501f3ddc4ae..082ac3f7091 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 c19ecb22e8d..42bb285c589 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 e5b6326e865..13d9e6a23ed 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 9a51e168ec8..e4210089ee6 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 9bcca888f73..7c1b6ced022 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 133373b9e69..fab2e3ff6d0 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 1c68e41f889..f9b0c802aff 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 1bbafd38db2..ac1d5f9b3df 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 4d10f50daab..c4fb874210c 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 52632cf8bd1..1237f3607e8 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 09aee9e52cd..fbdc8162458 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 ea7312f5a9d..2fb9ad12cda 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 b76c3f219e7..b4767fa6640 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 d429da28927..5bce963d507 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 a74742e6929..15661cada2c 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 ae1624ec309..05c5a973e90 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 a44dfefabb0..b9a72ed9959 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 45a7036b50b..4b63fb6467a 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 a72871daf36..0f01c887aad 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 131224ec6df..75e33e924d6 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 a3ab0852b9c..05baccee50e 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 4cdb5faf55f..06f0c56ec56 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 a1583bb35d4..9a9ef2e8f3a 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 c3228fe62d0..b8118564559 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 329b72da72f..232b9b4d2e7 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 4daa3f31fd3..0abb265aabc 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 ba10174b6da..5edc71db5ea 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 975a162a043..43c948b414c 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 2576421319c..4a0e7f3031c 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 38afada2d06..8f47d3b5099 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 3f82b8f2ada..e399f4525c1 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 df40aa5e9d8..68231aff949 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 3dcd9010239..6055f4109cd 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 981e1f464f5..e011363c04d 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 b3fcd6c1b84..6e8fa261f61 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 0ce1219ae47..da92a495f49 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 79d436471c3..f254d0aefc1 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 ecc7fd1264d..990002d7ca3 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 f284217a4f1..c3d9e0dba47 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 7b98837b9a0..4c030f85e62 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 5a7942ec5e5..d781e9cf3cc 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.

@@ -972,7 +972,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 @@ -1047,7 +1047,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 @@ -1127,7 +1127,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 5c800080aa7..a7b0fd8af60 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 00837ea5951..918b54fc5cb 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 b61d4e3addd..1775bd3ed2e 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 2707ff385ec..65a59c238a2 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 237a7114b58..eb26a3ae9d5 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 f17b52d2e75..0a29ceeeb33 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 263779c2fab..78ccef1c937 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 da859aa3e46..da2f67a5028 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 e99eab1a84e..8f276c20976 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 546d10b87a8..01b074b8778 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 @@ -875,7 +875,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 TensorProducts.

In general this will try to pull expressions inside of TensorProducts. It currently only works for relatively simple cases where the products have diff --git a/dev/modules/physics/secondquant.html b/dev/modules/physics/secondquant.html index 32d3d37c9fa..9d06d338078 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 dc21d6a2a96..c0ff7deb35b 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 04ffa580aed..f05886b12a6 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 5b79b1254ab..ade878b9495 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 75e781e16d6..96076b559c9 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 7c50ed748c0..a005cfe80a1 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 bd5282ac24c..91912a2f4e1 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 a0fd563b72e..ce2205007e5 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 349a8ac574d..de0ae056c25 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 ff6d415d48b..e533a0fc119 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 f798a0d8d55..351fbc1b527 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 ebbe2505773..b0b7b0c08b1 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:
@@ -1090,19 +1090,19 @@

Authors
l_1,
l_2,
l_3,
-
mu_1,
-
mu_2,
-
mu_3,
+
m_1,
+
m_2,
+
m_3,
prec=None,

-)[source] +)[source]

Calculate the real Gaunt coefficient.

Parameters:
-

l_1, l_2, l_3, mu_1, mu_2, mu_3 :

+

l_1, l_2, l_3, m_1, m_2, m_3 :

-

Integer degree and order

+

Integer.

prec - precision, default: ``None``.

@@ -1120,23 +1120,23 @@

Authors
\[\begin{split}\begin{aligned} -\operatorname{RealGaunt}(l_1,l_2,l_3,\mu_1,\mu_2,\mu_3) -&=\int Z^{\mu_1}_{l_1}(\Omega) - Z^{\mu_2}_{l_2}(\Omega) Z^{\mu_3}_{l_3}(\Omega) \,d\Omega \\ +\operatorname{RealGaunt}(l_1,l_2,l_3,m_1,m_2,m_3) +&=\int Z^{m_1}_{l_1}(\Omega) + Z^{m_2}_{l_2}(\Omega) Z^{m_3}_{l_3}(\Omega) \,d\Omega \\ \end{aligned}\end{split}\]

Alternatively, it can be defined in terms of the standard Gaunt coefficient by relating the real spherical harmonics to the standard spherical harmonics via a unitary transformation \(U\), i.e. -\(Z^{\mu}_{l}(\Omega)=\sum_{m'}U^{\mu}_{m'}Y^{m'}_{l}(\Omega)\) [Homeier96]. +\(Z^{m}_{l}(\Omega)=\sum_{m'}U^{m}_{m'}Y^{m'}_{l}(\Omega)\) [Homeier96]. The real Gaunt coefficient is then defined as

\[\begin{split}\begin{aligned} -\operatorname{RealGaunt}(l_1,l_2,l_3,\mu_1,\mu_2,\mu_3) -&=\int Z^{\mu_1}_{l_1}(\Omega) - Z^{\mu_2}_{l_2}(\Omega) Z^{\mu_3}_{l_3}(\Omega) \,d\Omega \\ -&=\sum_{m'_1 m'_2 m'_3} U^{\mu_1}_{m'_1}U^{\mu_2}_{m'_2}U^{\mu_3}_{m'_3} +\operatorname{RealGaunt}(l_1,l_2,l_3,m_1,m_2,m_3) +&=\int Z^{m_1}_{l_1}(\Omega) + Z^{m_2}_{l_2}(\Omega) Z^{m_3}_{l_3}(\Omega) \,d\Omega \\ +&=\sum_{m'_1 m'_2 m'_3} U^{m_1}_{m'_1}U^{m_2}_{m'_2}U^{m_3}_{m'_3} \operatorname{Gaunt}(l_1,l_2,l_3,m'_1,m'_2,m'_3) \end{aligned}\end{split}\]
@@ -1144,8 +1144,9 @@

Authors
\[\begin{aligned} -U^\mu_{m} = \delta_{|\mu||m|}*(\delta_{m0}\delta_{\mu 0} + \frac{1}{\sqrt{2}}\big[\Theta(\mu)\big(\delta_{m\mu}+(-1)^{m}\delta_{m-\mu}\big) -+i \Theta(-\mu)\big((-1)^{m}\delta_{m\mu}-\delta_{m-\mu}\big)\big]) +U^m_{m'} = \delta_{|m||m'|}*(\delta_{m'0}\delta_{m0} + \frac{1}{\sqrt{2}}\big[\Theta(m) +\big(\delta_{m'm}+(-1)^{m'}\delta_{m'-m}\big)+i\Theta(-m)\big((-1)^{-m} +\delta_{m'-m}-\delta_{m'm}*(-1)^{m'-m}\big)\big]) \end{aligned}\]

where \(\delta_{ij}\) is the Kronecker delta symbol and \(\Theta\) is a step @@ -1158,26 +1159,26 @@

Authors

Examples

>>> from sympy.physics.wigner import real_gaunt
->>> real_gaunt(1,1,2,-1,1,-2)
-sqrt(15)/(10*sqrt(pi))
->>> real_gaunt(10,10,20,-9,-9,0,prec=64)
+>>> real_gaunt(2,2,4,-1,-1,0)
+-2/(7*sqrt(pi))
+>>> real_gaunt(10,10,20,-9,-9,0).n(64)
 -0.00002480019791932209313156167176797577821140084216297395518482071448
 
-
-
It is an error to use non-integer values for \(l\) and \(\mu\)::

real_gaunt(2.8,0.5,1.3,0,0,0) +

+
It is an error to use non-integer values for \(l\) and \(m\)::

real_gaunt(2.8,0.5,1.3,0,0,0) Traceback (most recent call last): … -ValueError: l values must be integer

-

real_gaunt(2,2,4,0.7,1,-3.4) +ValueError: l values must be integer +real_gaunt(2,2,4,0.7,1,-3.4) Traceback (most recent call last): … -ValueError: mu values must be integer

+ValueError: m values must be integer

Notes

The real Gaunt coefficient inherits from the standard Gaunt coefficient, -the invariance under any permutation of the pairs \((l_i, \mu_i)\) and the +the invariance under any permutation of the pairs \((l_i, m_i)\) and the requirement that the sum of the \(l_i\) be even to yield a non-zero value. It also obeys the following symmetry rules:

Algorithms

This function uses the algorithms of [Homeier96] and [Rasch03] to @@ -1211,7 +1212,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 +1295,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 +1399,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 +1451,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 +1501,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 b7d68441254..65aebef7d54 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.

@@ -2375,11 +2375,11 @@

Series Classes**kwargs,

-)[source] +)[source]

Representation for 2D Implicit plot.

-get_data()[source]
+get_data()[source]

Returns numerical data.

Returns:
@@ -2416,7 +2416,7 @@

Series Classeswrapper='$%s$',

-)[source] +)[source]

Return the label to be used to display the expression.

Parameters:
@@ -2444,12 +2444,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.

@@ -2472,7 +2472,7 @@

Backends
-process_series()[source]
+process_series()[source]

Iterates over every Plot object and further calls _process_series()

@@ -2481,7 +2481,7 @@

Backends
-class sympy.plotting.plot.TextBackend(*args, **kwargs)[source]
+class sympy.plotting.plot.TextBackend(*args, **kwargs)[source]
@@ -2715,7 +2715,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 e7eebc0e179..42a2b94d735 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 89ff5755bac..1b6fb36a79e 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?
-rowspace()[source]
+rowspace()[source]

Returns the rowspace for the DomainMatrix

Returns:
@@ -2659,7 +2659,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 @@ -2754,7 +2754,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).

@@ -2859,7 +2859,7 @@

What is domainmatrix?
-scc()[source]
+scc()[source]

Compute the strongly connected components of a DomainMatrix

Returns:
@@ -2927,7 +2927,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:
@@ -3061,7 +3061,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 @@ -3132,7 +3132,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.

@@ -3158,7 +3158,7 @@

What is domainmatrix?
-sub(B)[source]
+sub(B)[source]

Subtracts two DomainMatrix matrices of the same Domain

Parameters:
@@ -3207,7 +3207,7 @@

What is domainmatrix?
-to_Matrix()[source]
+to_Matrix()[source]

Convert DomainMatrix to Matrix

Returns:
@@ -3239,7 +3239,7 @@

What is domainmatrix?
-to_ddm()[source]
+to_ddm()[source]

Return a DDM representation of self.

Examples

>>> from sympy.polys.matrices import DomainMatrix
@@ -3260,7 +3260,7 @@ 

What is domainmatrix?
-to_dense()[source]
+to_dense()[source]

Return a dense DomainMatrix representation of self.

Examples

>>> from sympy.polys.matrices import DomainMatrix
@@ -3277,7 +3277,7 @@ 

What is domainmatrix?
-to_dfm()[source]
+to_dfm()[source]

Return a DFM representation of self.

Examples

>>> from sympy.polys.matrices import DomainMatrix
@@ -3298,7 +3298,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 @@ -3335,7 +3335,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.

@@ -3359,7 +3359,7 @@

What is domainmatrix?
-to_dok()[source]
+to_dok()[source]

Convert DomainMatrix to dictionary of keys (dok) format.

Examples

>>> from sympy import ZZ
@@ -3385,7 +3385,7 @@ 

What is domainmatrix?
-to_field()[source]
+to_field()[source]

Returns a DomainMatrix with the appropriate field

Returns:
@@ -3411,7 +3411,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 @@ -3454,7 +3454,7 @@

What is domainmatrix?
-to_list()[source]
+to_list()[source]

Convert DomainMatrix to list of lists.

See also

@@ -3464,7 +3464,7 @@

What is domainmatrix?
-to_list_flat()[source]
+to_list_flat()[source]

Convert DomainMatrix to flat list.

Examples

>>> from sympy import ZZ
@@ -3482,7 +3482,7 @@ 

What is domainmatrix?
-to_sdm()[source]
+to_sdm()[source]

Return a SDM representation of self.

Examples

>>> from sympy.polys.matrices import DomainMatrix
@@ -3503,7 +3503,7 @@ 

What is domainmatrix?
-to_sparse()[source]
+to_sparse()[source]

Return a sparse DomainMatrix representation of self.

Examples

>>> from sympy.polys.matrices import DomainMatrix
@@ -3520,13 +3520,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.

@@ -3579,7 +3579,7 @@

What is domainmatrix?
-vstack(*B)[source]
+vstack(*B)[source]

Vertically stack the given matrices.

Parameters:
@@ -3619,7 +3619,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
@@ -3689,31 +3689,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
@@ -3730,13 +3730,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
@@ -3755,7 +3755,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
@@ -3774,7 +3774,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
@@ -3795,7 +3795,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
@@ -3815,7 +3815,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
@@ -3835,7 +3835,7 @@ 

What is domainmatrix?
-hstack(*B)[source]
+hstack(*B)[source]

Horizontally stacks DDM matrices.

Examples

>>> from sympy import ZZ
@@ -3857,40 +3857,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
@@ -3908,7 +3908,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
@@ -3926,31 +3926,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

@@ -3960,7 +3960,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.

@@ -3971,7 +3971,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).

@@ -3986,7 +3986,7 @@

What is domainmatrix?
-rref()[source]
+rref()[source]

Reduced-row echelon form of a and list of pivots.

See also

@@ -4001,7 +4001,7 @@

What is domainmatrix?
-rref_den()[source]
+rref_den()[source]

Reduced-row echelon form of a with denominator and list of pivots

See also

@@ -4016,7 +4016,7 @@

What is domainmatrix?
-scc()[source]
+scc()[source]

Strongly connected components of a square matrix a.

Examples

>>> from sympy import ZZ
@@ -4034,13 +4034,13 @@ 

What is domainmatrix?
-sub(b)[source]
+sub(b)[source]

a - b

-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.

@@ -4052,7 +4052,7 @@

What is domainmatrix?
-to_dfm()[source]
+to_dfm()[source]

Convert to DDM to DFM.

Examples

>>> from sympy.polys.matrices.ddm import DDM
@@ -4072,7 +4072,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
@@ -4092,7 +4092,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
@@ -4110,7 +4110,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
@@ -4128,7 +4128,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 @@ -4153,7 +4153,7 @@

What is domainmatrix?
-to_list()[source]
+to_list()[source]

Convert to a list of lists.

Examples

>>> from sympy import QQ
@@ -4171,7 +4171,7 @@ 

What is domainmatrix?
-to_list_flat()[source]
+to_list_flat()[source]

Convert to a flat list of elements.

Examples

>>> from sympy import QQ
@@ -4191,7 +4191,7 @@ 

What is domainmatrix?
-to_sdm()[source]
+to_sdm()[source]

Convert to a SDM.

Examples

>>> from sympy.polys.matrices.ddm import DDM
@@ -4211,7 +4211,7 @@ 

What is domainmatrix?
-vstack(*B)[source]
+vstack(*B)[source]

Vertically stacks DDM matrices.

Examples

>>> from sympy import ZZ
@@ -4280,7 +4280,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 @@ -4322,13 +4322,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. @@ -4371,7 +4371,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\).

@@ -4401,7 +4401,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.

@@ -4446,7 +4446,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.

@@ -4485,7 +4485,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 @@ -4521,7 +4521,7 @@

What is domainmatrix?c: Sequence[Sequence[R]],

-) None[source] +) None[source]

a += b @ c

@@ -4534,7 +4534,7 @@

What is domainmatrix?b: R,

-) None[source] +) None[source]

a <– a*b

@@ -4546,7 +4546,7 @@

What is domainmatrix?a: list[list[R]],

-) None[source] +) None[source]

a <– -a

@@ -4559,13 +4559,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.

@@ -4614,7 +4614,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 @@ -4680,7 +4680,7 @@

What is domainmatrix?b: Sequence[Sequence[R]],

-) None[source] +) None[source]

a -= b

@@ -4692,13 +4692,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 -.

@@ -4706,7 +4706,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 +, -, , *.

@@ -4750,7 +4750,7 @@

What is domainmatrix?
-add(B)[source]
+add(B)[source]

Adds two SDM matrices

Examples

>>> from sympy import ZZ
@@ -4765,7 +4765,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.

@@ -4790,7 +4790,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
@@ -4804,7 +4804,7 @@ 

What is domainmatrix?
-copy()[source]
+copy()[source]

Returns the copy of a SDM object

Examples

>>> from sympy.polys.matrices.sdm import SDM
@@ -4820,7 +4820,7 @@ 

What is domainmatrix?
-det()[source]
+det()[source]

Returns determinant of A

Examples

>>> from sympy import QQ
@@ -4834,13 +4834,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

@@ -4855,7 +4855,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
@@ -4877,7 +4877,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
@@ -4898,7 +4898,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
@@ -4919,7 +4919,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.

@@ -4930,7 +4930,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:
@@ -4968,7 +4968,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
@@ -4988,7 +4988,7 @@ 

What is domainmatrix?
-hstack(*B)[source]
+hstack(*B)[source]

Horizontally stacks SDM matrices.

Examples

>>> from sympy import ZZ
@@ -5010,7 +5010,7 @@ 

What is domainmatrix?
-inv()[source]
+inv()[source]

Returns inverse of a matrix A

Examples

>>> from sympy import QQ
@@ -5024,34 +5024,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
@@ -5069,7 +5069,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
@@ -5083,19 +5083,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
@@ -5109,7 +5109,7 @@ 

What is domainmatrix?
-lu_solve(b)[source]
+lu_solve(b)[source]

Uses LU decomposition to solve Ax = b,

Examples

>>> from sympy import QQ
@@ -5124,7 +5124,7 @@ 

What is domainmatrix?
-matmul(B)[source]
+matmul(B)[source]

Performs matrix multiplication of two SDM matrices

Parameters:
@@ -5157,7 +5157,7 @@

What is domainmatrix?
-mul(b)[source]
+mul(b)[source]

Multiplies each element of A with a scalar b

Examples

>>> from sympy import ZZ
@@ -5171,7 +5171,7 @@ 

What is domainmatrix?
-neg()[source]
+neg()[source]

Returns the negative of a SDM matrix

Examples

>>> from sympy import ZZ
@@ -5185,7 +5185,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

@@ -5209,7 +5209,7 @@

What is domainmatrix?
-nnz()[source]
+nnz()[source]

Number of non-zero elements in the SDM matrix.

Examples

>>> from sympy import ZZ
@@ -5227,7 +5227,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 @@ -5251,7 +5251,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).

@@ -5284,7 +5284,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
@@ -5298,7 +5298,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
@@ -5312,7 +5312,7 @@ 

What is domainmatrix?
-scc()[source]
+scc()[source]

Strongly connected components of a square matrix A.

Examples

>>> from sympy import ZZ
@@ -5330,7 +5330,7 @@ 

What is domainmatrix?
-sub(B)[source]
+sub(B)[source]

Subtracts two SDM matrices

Examples

>>> from sympy import ZZ
@@ -5345,7 +5345,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
@@ -5359,7 +5359,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
@@ -5377,7 +5377,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
@@ -5397,7 +5397,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
@@ -5415,7 +5415,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
@@ -5433,7 +5433,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 @@ -5458,7 +5458,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
@@ -5473,7 +5473,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
@@ -5493,13 +5493,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
@@ -5513,7 +5513,7 @@ 

What is domainmatrix?
-vstack(*B)[source]
+vstack(*B)[source]

Vertically stacks SDM matrices.

Examples

>>> from sympy import ZZ
@@ -5535,7 +5535,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,

@@ -5558,7 +5558,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 @@ -5596,7 +5596,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 @@ -5663,19 +5663,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

@@ -5729,7 +5729,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
@@ -5763,19 +5763,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
@@ -5810,19 +5810,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
@@ -5863,85 +5863,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
@@ -5977,43 +5977,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

@@ -6036,7 +6036,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
@@ -6063,13 +6063,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
@@ -6112,97 +6112,97 @@ 

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.

-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.

@@ -6214,55 +6214,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.

@@ -6270,7 +6270,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

@@ -6297,7 +6297,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 89cb4e515eb..3876fe69d50 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.

@@ -4968,7 +4968,7 @@

Sparse polynomials
-sympy.polys.rings.ring(symbols, domain, order=LexOrder())[source]
+sympy.polys.rings.ring(symbols, domain, order=LexOrder())[source]

Construct a polynomial ring returning (ring, x_1, ..., x_n).

Parameters:
@@ -4999,7 +4999,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:
@@ -5030,7 +5030,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:
@@ -5060,7 +5060,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:
@@ -5087,11 +5087,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
@@ -5109,44 +5109,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
@@ -5164,7 +5164,7 @@ 

Sparse polynomials
-symmetric_poly(n)[source]
+symmetric_poly(n)[source]

Return the elementary symmetric polynomial of degree n over this ring’s generators.

@@ -5173,17 +5173,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
@@ -5198,7 +5198,7 @@ 

Sparse polynomials
-coeff(element)[source]
+coeff(element)[source]

Returns the coefficient that stands next to the given monomial.

Parameters:
@@ -5226,7 +5226,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.

@@ -5271,7 +5271,7 @@

Sparse polynomials
-coeffs(order=None)[source]
+coeffs(order=None)[source]

Ordered list of polynomial coefficients.

Parameters:
@@ -5298,19 +5298,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 @@ -5337,21 +5337,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
@@ -5368,7 +5368,7 @@ 

Sparse polynomials
-div(fv)[source]
+div(fv)[source]

Division algorithm, see [CLO] p64.

fv array of polynomials

return qv, r such that @@ -5398,7 +5398,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

@@ -5426,25 +5426,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
@@ -5461,7 +5461,7 @@ 

Sparse polynomials
-leading_monom()[source]
+leading_monom()[source]

Leading monomial as a polynomial element.

Examples

>>> from sympy.polys.rings import ring
@@ -5477,7 +5477,7 @@ 

Sparse polynomials
-leading_term()[source]
+leading_term()[source]

Leading term as a polynomial element.

Examples

>>> from sympy.polys.rings import ring
@@ -5493,31 +5493,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:
@@ -5544,7 +5544,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 @@ -5621,7 +5621,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
@@ -5651,7 +5651,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
@@ -5679,7 +5679,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, @@ -5732,13 +5732,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
@@ -5755,13 +5755,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:
@@ -5800,7 +5800,7 @@

Sparse polynomials
-symmetrize()[source]
+symmetrize()[source]

Rewrite self in terms of elementary symmetric polynomials.

Returns:
@@ -5858,21 +5858,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:
@@ -5905,25 +5905,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.

@@ -5949,17 +5949,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
@@ -5980,179 +5980,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

@@ -6168,91 +6168,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.

@@ -6269,13 +6269,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.

@@ -6353,91 +6353,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
@@ -6456,43 +6456,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.

@@ -6508,14 +6508,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.

@@ -6527,103 +6527,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.

@@ -6631,74 +6631,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.

@@ -6706,53 +6706,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.

@@ -6770,49 +6770,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.

@@ -6820,29 +6820,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.

@@ -6866,74 +6866,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 ab7269473fb..632e7c11342 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 839f02eea16..8e3ab3800b4 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 b410e8f07ca..c2d05b0fc2a 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()[source]
+factor_list()[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 c5788b1ba2f..bb41a05a5d8 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 5cbf03db9ff..2f0300a34b3 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 20eb25a6808..59b22048003 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 4a2c4d6922b..c32311fe0b5 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 952e02f27af..9b52303fc6a 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 636131242ce..ccca752ae64 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 e61e059d4d5..7da2bb233d7 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 78bb28e462f..464c0a2af25 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 6c5dbb43a24..d4cf8a1e07a 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 35f085b4b52..75d7d0fdb42 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 cd2d75f5fb8..21efdc3f6d9 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 969c4da37dd..c888bedf3e2 100644 --- a/dev/modules/simplify/simplify.html +++ b/dev/modules/simplify/simplify.html @@ -817,7 +817,7 @@

Documentation Version
**kwargs,
-)[source] +)[source]

Simplifies the given expression.

Explanation

Simplification is not a well defined term and the exact strategies @@ -974,7 +974,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 @@ -1034,7 +1034,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:
@@ -1058,7 +1058,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

@@ -1072,7 +1072,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 @@ -1099,7 +1099,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 @@ -1127,7 +1127,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 @@ -1149,7 +1149,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 @@ -1195,7 +1195,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.

@@ -1237,7 +1237,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: