本文整理汇总了Python中sympy.floor函数的典型用法代码示例。如果您正苦于以下问题:Python floor函数的具体用法?Python floor怎么用?Python floor使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了floor函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_frac
def test_frac():
assert isinstance(frac(x), frac)
assert frac(oo) == AccumBounds(0, 1)
assert frac(-oo) == AccumBounds(0, 1)
assert frac(n) == 0
assert frac(nan) == nan
assert frac(Rational(4, 3)) == Rational(1, 3)
assert frac(-Rational(4, 3)) == Rational(2, 3)
r = Symbol('r', real=True)
assert frac(I*r) == I*frac(r)
assert frac(1 + I*r) == I*frac(r)
assert frac(0.5 + I*r) == 0.5 + I*frac(r)
assert frac(n + I*r) == I*frac(r)
assert frac(n + I*k) == 0
assert frac(x + I*x) == frac(x + I*x)
assert frac(x + I*n) == frac(x)
assert frac(x).rewrite(floor) == x - floor(x)
assert frac(x).rewrite(ceiling) == x + ceiling(-x)
assert frac(y).rewrite(floor).subs(y, pi) == frac(pi)
assert frac(y).rewrite(floor).subs(y, -E) == frac(-E)
assert frac(y).rewrite(ceiling).subs(y, -pi) == frac(-pi)
assert frac(y).rewrite(ceiling).subs(y, E) == frac(E)
assert Eq(frac(y), y - floor(y))
assert Eq(frac(y), y + ceiling(-y))
示例2: find_period_sqrt
def find_period_sqrt(x, ITS_MAX=20):
#x = S(sqrt(x))
x = np.sqrt(x)
seq = array([], dtype=float64)
for its in arange(ITS_MAX):
# subtract the integer part
y = x - floor(x)
# put that into an array
seq = hstack(( seq, floor(x).n() ))
# take the inverse
x = 1/y
# boom, we have the sequence
seq = seq[1:]
l = len(seq)
# find out how periodic it is
for i in arange(0,10):
# repeat some sequence
tiled_array = tile(seq[:i-1], 10*l//i)
# make it the right len
tiled_array = tiled_array[:l]
# see if they're equal
if array_equal(tiled_array, seq):
length = len(seq[:i-1])
#print length
#break
return length
#print -1
return -1
示例3: round_afz
def round_afz(val, ndigits=0):
u"""Round using round-away-from-zero strategy for halfway cases.
Python 3+ implements round-half-even, and Python 2.7 has a random behaviour
from end user point of view (in fact, result depends on internal
representation in floating point arithmetic).
"""
ceil = math.ceil
floor = math.floor
val = float(val)
if isnan(val) or isinf(val):
return val
s = repr(val).rstrip('0')
if 'e' in s:
# XXX: implement round-away-from-zero in this case too.
return round(val, ndigits)
sep = s.find('.')
pos = sep + ndigits
if ndigits <= 0:
pos -= 1
# Skip dot if needed to reach next digit.
next_pos = (pos + 1 if pos + 1 != sep else pos + 2)
if next_pos < 0 or next_pos == 0 and s[next_pos] == '-':
return 0.
if len(s) <= next_pos:
# No need to round (no digit after).
return val
power = 10**ndigits
if s[next_pos] in '01234':
return (floor(val*power)/power if val > 0 else ceil(val*power)/power)
else:
return (ceil(val*power)/power if val > 0 else floor(val*power)/power)
示例4: _eval_expand_func
def _eval_expand_func(self, **hints):
from sympy import exp, I, floor, Add, Poly, Dummy, exp_polar, unpolarify
z, s, a = self.args
if z == 1:
return zeta(s, a)
if s.is_Integer and s <= 0:
t = Dummy('t')
p = Poly((t + a)**(-s), t)
start = 1/(1 - t)
res = S(0)
for c in reversed(p.all_coeffs()):
res += c*start
start = t*start.diff(t)
return res.subs(t, z)
if a.is_Rational:
# See section 18 of
# Kelly B. Roach. Hypergeometric Function Representations.
# In: Proceedings of the 1997 International Symposium on Symbolic and
# Algebraic Computation, pages 205-211, New York, 1997. ACM.
# TODO should something be polarified here?
add = S(0)
mul = S(1)
# First reduce a to the interaval (0, 1]
if a > 1:
n = floor(a)
if n == a:
n -= 1
a -= n
mul = z**(-n)
add = Add(*[-z**(k - n)/(a + k)**s for k in xrange(n)])
elif a <= 0:
n = floor(-a) + 1
a += n
mul = z**n
add = Add(*[z**(n - 1 - k)/(a - k - 1)**s for k in xrange(n)])
m, n = S([a.p, a.q])
zet = exp_polar(2*pi*I/n)
root = z**(1/n)
return add + mul*n**(s - 1)*Add(
*[polylog(s, zet**k*root)._eval_expand_func(**hints)
/ (unpolarify(zet)**k*root)**m for k in xrange(n)])
# TODO use minpoly instead of ad-hoc methods when issue 2789 is fixed
if z.func is exp and (z.args[0]/(pi*I)).is_Rational or z in [-1, I, -I]:
# TODO reference?
if z == -1:
p, q = S([1, 2])
elif z == I:
p, q = S([1, 4])
elif z == -I:
p, q = S([-1, 4])
else:
arg = z.args[0]/(2*pi*I)
p, q = S([arg.p, arg.q])
return Add(*[exp(2*pi*I*k*p/q)/q**s*zeta(s, (k + a)/q)
for k in xrange(q)])
return lerchphi(z, s, a)
示例5: rationalize
def rationalize(x, maxcoeff=10000):
"""
Helps identifying a rational number from a float (or mpmath.mpf) value by
using a continued fraction. The algorithm stops as soon as a large partial
quotient is detected (greater than 10000 by default).
Examples
========
>>> from sympy.concrete.guess import rationalize
>>> from mpmath import cos, pi
>>> rationalize(cos(pi/3))
1/2
>>> from mpmath import mpf
>>> rationalize(mpf("0.333333333333333"))
1/3
While the function is rather intended to help 'identifying' rational
values, it may be used in some cases for approximating real numbers.
(Though other functions may be more relevant in that case.)
>>> rationalize(pi, maxcoeff = 250)
355/113
See also
========
Several other methods can approximate a real number as a rational, like:
* fractions.Fraction.from_decimal
* fractions.Fraction.from_float
* mpmath.identify
* mpmath.pslq by using the following syntax: mpmath.pslq([x, 1])
* mpmath.findpoly by using the following syntax: mpmath.findpoly(x, 1)
* sympy.simplify.nsimplify (which is a more general function)
The main difference between the current function and all these variants is
that control focuses on magnitude of partial quotients here rather than on
global precision of the approximation. If the real is "known to be" a
rational number, the current function should be able to detect it correctly
with the default settings even when denominator is great (unless its
expansion contains unusually big partial quotients) which may occur
when studying sequences of increasing numbers. If the user cares more
on getting simple fractions, other methods may be more convenient.
"""
p0, p1 = 0, 1
q0, q1 = 1, 0
a = floor(x)
while a < maxcoeff or q1 == 0:
p = a * p1 + p0
q = a * q1 + q0
p0, p1 = p1, p
q0, q1 = q1, q
if x == a:
break
x = 1 / (x - a)
a = floor(x)
return sympify(p) / q
示例6: test_dir
def test_dir():
assert abs(x).series(x, 0, dir="+") == x
assert abs(x).series(x, 0, dir="-") == -x
assert floor(x + 2).series(x, 0, dir='+') == 2
assert floor(x + 2).series(x, 0, dir='-') == 1
assert floor(x + 2.2).series(x, 0, dir='-') == 2
assert ceiling(x + 2.2).series(x, 0, dir='-') == 3
assert sin(x + y).series(x, 0, dir='-') == sin(x + y).series(x, 0, dir='+')
示例7: rightshift
def rightshift(a, b):
if issig('rr', a, b):
return Real(int(sym.floor(a)) >> int(sym.floor(b)))
if issig('qr', a, b):
b = sym.floor(b)
return a[-b:] + a[:-b]
raise BadTypeCombinationError('rightshift', a, b)
示例8: leftshift
def leftshift(a, b):
if issig('rr', a, b):
return Real(int(sym.floor(a)) << int(sym.floor(b)))
if issig('qr', a, b):
b = sym.floor(b)
return a[b:] + a[:b]
raise BadTypeCombinationError('leftshift', a, b)
示例9: test_issue_8444_workingtests
def test_issue_8444_workingtests():
x = symbols('x')
assert Gt(x, floor(x)) == Gt(x, floor(x), evaluate=False)
assert Ge(x, floor(x)) == Ge(x, floor(x), evaluate=False)
assert Lt(x, ceiling(x)) == Lt(x, ceiling(x), evaluate=False)
assert Le(x, ceiling(x)) == Le(x, ceiling(x), evaluate=False)
i = symbols('i', integer=True)
assert (i > floor(i)) == False
assert (i < ceiling(i)) == False
示例10: test_issue_8444_nonworkingtests
def test_issue_8444_nonworkingtests():
x = symbols('x', real=True)
assert (x <= oo) == (x >= -oo) == True
x = symbols('x')
assert x >= floor(x)
assert (x < floor(x)) == False
assert x <= ceiling(x)
assert (x > ceiling(x)) == False
示例11: test_dir
def test_dir():
x = Symbol('x')
y = Symbol('y')
assert abs(x).series(x, 0, dir="+") == x
assert abs(x).series(x, 0, dir="-") == -x
assert floor(x+2).series(x,0,dir='+') == 2
assert floor(x+2).series(x,0,dir='-') == 1
assert floor(x+2.2).series(x,0,dir='-') == 2
assert sin(x+y).series(x,0,dir='-') == sin(x+y).series(x,0,dir='+')
示例12: length
def length(P, Q, D):
"""
Returns the length of aperiodic part + length of periodic part of
continued fraction representation of (P + sqrt(D))/Q. It is important
to remember that this does NOT return the length of the periodic
part but the addition of the legths of the two parts as mentioned above.
Usage
=====
length(P, Q, D) -> P, Q and D are integers corresponding to the
continued fraction (P + sqrt(D))/Q.
Details
=======
``P`` corresponds to the P in the continued fraction, (P + sqrt(D))/ Q
``D`` corresponds to the D in the continued fraction, (P + sqrt(D))/ Q
``Q`` corresponds to the Q in the continued fraction, (P + sqrt(D))/ Q
Examples
========
>>> from sympy.solvers.diophantine import length
>>> length(-2 , 4, 5) # (-2 + sqrt(5))/4
3
>>> length(-5, 4, 17) # (-5 + sqrt(17))/4
4
"""
x = P + sqrt(D)
y = Q
x = sympify(x)
v, res = [], []
q = x/y
if q < 0:
v.append(q)
res.append(floor(q))
q = q - floor(q)
num, den = rad_rationalize(1, q)
q = num / den
while 1:
v.append(q)
a = int(q)
res.append(a)
if q == a:
return len(res)
num, den = rad_rationalize(1,(q - a))
q = num / den
if q in v:
return len(res)
示例13: test_dir
def test_dir():
x = Symbol("x")
y = Symbol("y")
assert abs(x).series(x, 0, dir="+") == x
assert abs(x).series(x, 0, dir="-") == -x
assert floor(x + 2).series(x, 0, dir="+") == 2
assert floor(x + 2).series(x, 0, dir="-") == 1
assert floor(x + 2.2).series(x, 0, dir="-") == 2
assert ceiling(x + 2.2).series(x, 0, dir="-") == 3
assert sin(x + y).series(x, 0, dir="-") == sin(x + y).series(x, 0, dir="+")
示例14: test_series
def test_series():
x, y = symbols('x,y')
assert floor(x).nseries(x, y, 100) == floor(y)
assert ceiling(x).nseries(x, y, 100) == ceiling(y)
assert floor(x).nseries(x, pi, 100) == 3
assert ceiling(x).nseries(x, pi, 100) == 4
assert floor(x).nseries(x, 0, 100) == 0
assert ceiling(x).nseries(x, 0, 100) == 1
assert floor(-x).nseries(x, 0, 100) == -1
assert ceiling(-x).nseries(x, 0, 100) == 0
示例15: test_upretty_floor
def test_upretty_floor():
assert upretty(floor(x)) == u'⌊x⌋'
u = upretty( floor(1 / (y - floor(x))) )
s = \
u"""\
⎢ 1 ⎥
⎢───────⎥
⎣y - ⌊x⌋⎦\
"""
assert u == s