Python sympy.sign() Examples
The following are 5
code examples of sympy.sign().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sympy
, or try the search function
.
Example #1
Source File: test_sympy_conv.py From symengine.py with MIT License | 5 votes |
def test_sign(): x = Symbol("x") e1 = sympy.sign(sympy.Symbol("x")) e2 = sign(x) assert sympify(e1) == e2 assert e2._sympy_() == e1
Example #2
Source File: convert_to_sqrt_iswap.py From Cirq with Apache License 2.0 | 5 votes |
def cphase_symbols_to_sqrt_iswap(a, b, turns): """Version of cphase_to_sqrt_iswap that works with symbols. Note that the formulae contained below will need to be flattened into a sweep before serializing. """ theta = sympy.Mod(turns, 2.0) * sympy.pi # -1 if theta > pi. Adds a hacky fudge factor so theta=pi is not 0 sign = sympy.sign(sympy.pi - theta + 1e-9) # For sign = 1: theta. For sign = -1, 2pi-theta theta_prime = (sympy.pi - sign * sympy.pi) + sign * theta phi = sympy.asin(np.sqrt(2) * sympy.sin(theta_prime / 4)) xi = sympy.atan(sympy.tan(phi) / np.sqrt(2)) yield ops.rz(sign * 0.5 * theta_prime).on(a) yield ops.rz(sign * 0.5 * theta_prime).on(b) yield ops.rx(xi).on(a) yield ops.X(b)**(-sign * 0.5) yield SQRT_ISWAP_INV(a, b) yield ops.rx(-2 * phi).on(a) yield SQRT_ISWAP(a, b) yield ops.rx(xi).on(a) yield ops.X(b)**(sign * 0.5)
Example #3
Source File: symbolic.py From simupy with BSD 2-Clause "Simplified" License | 5 votes |
def grad(f, basis, for_numerical=True): """ Compute the symbolic gradient of a vector-valued function with respect to a basis. Parameters ---------- f : 1D array_like of sympy Expressions The vector-valued function to compute the gradient of. basis : 1D array_like of sympy symbols The basis symbols to compute the gradient with respect to. for_numerical : bool, optional A placeholder for the option of numerically computing the gradient. Returns ------- grad : 2D array_like of sympy Expressions The symbolic gradient. """ if hasattr(f, '__len__'): # as of version 1.1.1, Array isn't supported f = sp.Matrix(f) return f.__class__([ [ sp.diff(f[x], basis[y]) if not for_numerical or not f[x].has(sp.sign(basis[y])) else 0 for y in range(len(basis)) ] for x in range(len(f)) ])
Example #4
Source File: operators.py From devito with MIT License | 5 votes |
def freesurface(model, eq): """ Generate the stencil that mirrors the field as a free surface modeling for the acoustic wave equation. Parameters ---------- model : Model Physical model. eq : Eq Time-stepping stencil (time update) to mirror at the freesurface. """ lhs, rhs = eq.evaluate.args # Get vertical dimension and corresponding subdimension zfs = model.grid.subdomains['fsdomain'].dimensions[-1] z = zfs.parent # Functions present in the stencil funcs = retrieve_functions(rhs) mapper = {} # Antisymmetric mirror at negative indices # TODO: Make a proper "mirror_indices" tool function for f in funcs: zind = f.indices[-1] if (zind - z).as_coeff_Mul()[0] < 0: s = sign(zind.subs({z: zfs, z.spacing: 1})) mapper.update({f: s * f.subs({zind: INT(abs(zind))})}) return Eq(lhs, rhs.subs(mapper), subdomain=model.grid.subdomains['fsdomain'])
Example #5
Source File: convert_to_sqrt_iswap.py From Cirq with Apache License 2.0 | 4 votes |
def cphase_to_sqrt_iswap(a, b, turns): """Implement a C-Phase gate using two sqrt ISWAP gates and single-qubit operations. The circuit is equivalent to cirq.CZPowGate(exponent=turns). Output unitary: [1 0 0 0], [0 1 0 0], [0 0 1 0], [0 0 0 e^{i turns pi}]. Args: a: the first qubit b: the second qubit turns: Exponent specifying the evolution time in number of rotations. """ theta = (turns % 2) * np.pi if 0 <= theta <= np.pi: sign = 1. theta_prime = theta elif np.pi < theta < 2 * np.pi: sign = -1. theta_prime = 2 * np.pi - theta if np.isclose(theta, np.pi): # If we are close to pi, just set values manually to avoid possible # numerical errors with arcsin of greater than 1.0 (Ahem, Windows). phi = np.pi / 2 xi = np.pi / 2 else: phi = np.arcsin(np.sqrt(2) * np.sin(theta_prime / 4)) xi = np.arctan(np.tan(phi) / np.sqrt(2)) yield ops.rz(sign * 0.5 * theta_prime).on(a) yield ops.rz(sign * 0.5 * theta_prime).on(b) yield ops.rx(xi).on(a) yield ops.X(b)**(-sign * 0.5) yield SQRT_ISWAP_INV(a, b) yield ops.rx(-2 * phi).on(a) yield SQRT_ISWAP(a, b) yield ops.rx(xi).on(a) yield ops.X(b)**(sign * 0.5) # Corrects global phase yield ops.GlobalPhaseOperation(np.exp(sign * theta_prime * 0.25j))