def __call__(self, tol, bloginfo): def warn_user_about_open_interval(list): if bloginfo.lock is not None: bloginfo.lock.acquire() if 0 == bloginfo.verbose: prefix = '%s ' % bloginfo.prefix.lstrip() else: prefix = '%s ' % bloginfo.prefix interval = list_to_open_interval(list) bloginfo.blogger.info( prefix + 'WARNING: The confidence level lies within ' + interval) if bloginfo.lock is not None: bloginfo.lock.release() return xxx = self.trial_points[0] fff = self.trial_points[1] if mysgn(fff[-2]) == mysgn(fff[-1]): self.root = None return None myzeroin = trace_fcn(zeroin, bloginfo) answer = myzeroin(self.fcn, xxx[-2], xxx[-1], fa=fff[-2], fb=fff[-1], maxfev=32, tol=tol) if abs(answer[0][1]) > tol: xafa = answer[1][0] xa = xafa[0] fa = xafa[1] xbfb = answer[1][1] xb = xbfb[0] fb = xbfb[1] if mysgn(fa) != mysgn(fb): if False == self.open_interval: warn_user_about_open_interval([xa, xb]) return (xa + xb) / 2.0 else: if xa < xb: return (xa, xb) else: return (xb, xa) else: return None self.root = answer[0][0] return self.root
def __call__( self, tol, bloginfo ): def warn_user_about_open_interval( list ): if bloginfo.lock is not None: bloginfo.lock.acquire() if 0 == bloginfo.verbose: prefix = '%s ' % bloginfo.prefix.lstrip() else: prefix = '%s ' % bloginfo.prefix interval = list_to_open_interval( list ) bloginfo.blogger.info( prefix + 'WARNING: The confidence level lies within ' + interval ) if bloginfo.lock is not None: bloginfo.lock.release() return xxx = self.trial_points[ 0 ] fff = self.trial_points[ 1 ] if mysgn( fff[ -2 ] ) == mysgn( fff[ -1 ] ): self.root = None return None myzeroin = trace_fcn( zeroin, bloginfo ) answer = myzeroin( self.fcn, xxx[ -2 ], xxx[ -1 ], fa=fff[ -2 ], fb=fff[ -1 ], maxfev=32, tol=tol ) if abs( answer[0][1] ) > tol: xafa = answer[ 1 ][ 0 ] xa = xafa[ 0 ] fa = xafa[ 1 ] xbfb = answer[ 1 ][ 1 ] xb = xbfb[ 0 ] fb = xbfb[ 1 ] if mysgn( fa ) != mysgn( fb ): if False == self.open_interval: warn_user_about_open_interval( [ xa, xb ] ) return ( xa + xb ) / 2.0 else: if xa < xb: return ( xa, xb ) else: return ( xb, xa ) else: return None self.root = answer[ 0 ][ 0 ] return self.root
def is_same_dir( self, dir, current_pos, proposed_pos ): delta = proposed_pos - current_pos return mysgn( delta ) == ConfBracket.neg_pos[ dir ]
def is_same_dir(self, dir, current_pos, proposed_pos): delta = proposed_pos - current_pos return mysgn(delta) == ConfBracket.neg_pos[dir]