def sgns(*args): | |
for i in args: | |
if i < 0: | |
break | |
else: | |
return 1 | |
for i in args: | |
if i > 0: | |
break | |
else: | |
return -1 | |
return 0 | |
def sq_func_sgn(a, b, c): | |
r""" | |
let f(x) = a+bx+cx^2, x \in [0, 1] | |
:return: f(x)>=0? 1; f(x)<=0? -1; 0 | |
""" | |
f0 = a | |
f1 = a + b + c | |
fm = 0 | |
if c != 0: | |
x_m = -b / (2 * c) | |
if 0 <= x_m <= 1: | |
fm = a + b * x_m + c * x_m**2 | |
return sgns(f0, f1, fm) | |
def lin_func_sgn(a, b): | |
return sgns(a, a + b) | |