本文整理汇总了Python中mpmath.fdiv函数的典型用法代码示例。如果您正苦于以下问题:Python fdiv函数的具体用法?Python fdiv怎么用?Python fdiv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了fdiv函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: getEclipseTotality
def getEclipseTotality( body1, body2, location, date ):
'''Returns the angular size of an astronomical object in radians.'''
if isinstance( location, str ):
location = getLocation( location )
if not isinstance( body1, RPNAstronomicalObject ) or not isinstance( body2, RPNAstronomicalObject ) and \
not isinstance( location, RPNLocation ) or not isinstance( date, RPNDateTime ):
raise ValueError( 'expected two astronomical objects, a location and a date-time' )
separation = body1.getAngularSeparation( body2, location, date ).value
radius1 = body1.getAngularSize( ).value
radius2 = body2.getAngularSize( ).value
if separation > fadd( radius1, radius2 ):
return 0
distance1 = body1.getDistanceFromEarth( date )
distance2 = body2.getDistanceFromEarth( date )
area1 = fmul( pi, power( radius1, 2 ) )
area2 = fmul( pi, power( radius2, 2 ) )
area_of_intersection = fadd( getCircleIntersectionTerm( radius1, radius2, separation ),
getCircleIntersectionTerm( radius2, radius1, separation ) )
if distance1 > distance2:
result = fdiv( area_of_intersection, area1 )
else:
result = fdiv( area_of_intersection, area2 )
if result > 1:
return 1
else:
return result
示例2: cont_frac_expansion_sqrt
def cont_frac_expansion_sqrt(n):
"""
n is NOT square
e.g. 2 --> (1,2) (2 repeats)
"""
if is_square(n):
return 0
seq = []
r = mp.sqrt(n,prec=1000) # DOESNT MATTER?
a = floor(r)
fls = [r]
seq.append(int(a))
r = mp.fdiv(1.,mp.fsub(r,a,prec=1000),prec=1000)
a = floor(r)
fls.append(r)
seq.append(int(a))
r = mp.fdiv(1.,mp.fsub(r,a,prec=1000),prec=1000) #THESE TWO MATTER!!!
a = floor(r)
fls.append(r)
seq.append(int(a))
while not close(r, fls[1]):
r = mp.fdiv(1.,mp.fsub(r,a,prec=1000),prec=1000) #THESE TWO MATTER!!!
a = floor(r)
fls.append(r)
seq.append(int(a))
# print seq
seq.pop()
return seq
示例3: OLDgetPartitionNumber
def OLDgetPartitionNumber( n ):
if n < 0:
return 0
if n < 2:
return 1
result = mpmathify( 0 )
for k in arange( 1, n + 1 ):
#n1 = n - k * ( 3 * k - 1 ) / 2
n1 = fsub( n, fdiv( fmul( k, fsub( fmul( 3, k ), 1 ) ), 2 ) )
#n2 = n - k * ( 3 * k + 1 ) / 2
n2 = fsub( n, fdiv( fmul( k, fadd( fmul( 3, k ), 1 ) ), 2 ) )
result = fadd( result, fmul( power( -1, fadd( k, 1 ) ), fadd( getPartitionNumber( n1 ), getPartitionNumber( n2 ) ) ) )
if n1 <= 0:
break
#old = NOT_QUITE_AS_OLDgetPartitionNumber( n )
#
#if ( old != result ):
# raise ValueError( "It's broke." )
return result
示例4: getNthKFibonacciNumber
def getNthKFibonacciNumber( n, k ):
if real( n ) < 0:
raise ValueError( 'non-negative argument expected' )
if real( k ) < 2:
raise ValueError( 'argument <= 2 expected' )
if n < k - 1:
return 0
nth = int( n ) + 4
precision = int( fdiv( fmul( n, k ), 8 ) )
if ( mp.dps < precision ):
mp.dps = precision
poly = [ 1 ]
poly.extend( [ -1 ] * int( k ) )
roots = polyroots( poly )
nthPoly = getNthFibonacciPolynomial( k )
result = 0
exponent = fsum( [ nth, fneg( k ), -2 ] )
for i in range( 0, int( k ) ):
result += fdiv( power( roots[ i ], exponent ), polyval( nthPoly, roots[ i ] ) )
return floor( fadd( re( result ), fdiv( 1, 2 ) ) )
示例5: getInvertedBits
def getInvertedBits( n ):
value = real_int( n )
# determine how many groups of bits we will be looking at
if value == 0:
groupings = 1
else:
groupings = int( fadd( floor( fdiv( ( log( value, 2 ) ), g.bitwiseGroupSize ) ), 1 ) )
placeValue = mpmathify( 1 << g.bitwiseGroupSize )
multiplier = mpmathify( 1 )
remaining = value
result = mpmathify( 0 )
for i in range( 0, groupings ):
# Let's let Python do the actual inverting
group = fmod( ~int( fmod( remaining, placeValue ) ), placeValue )
result += fmul( group, multiplier )
remaining = floor( fdiv( remaining, placeValue ) )
multiplier = fmul( multiplier, placeValue )
return result
示例6: getSkyLocation
def getSkyLocation( n, k ):
if not isinstance( n, ephem.Body ) or not isinstance( k, RPNDateTime ):
raise ValueError( '\'sky_location\' expects an astronomical object and a date-time' )
n.compute( k.to( 'utc' ).format( ) )
return [ fdiv( fmul( mpmathify( n.ra ), 180 ), pi ), fdiv( fmul( mpmathify( n.dec ), 180 ), pi ) ]
示例7: calculateDistance
def calculateDistance( measurement1, measurement2 ):
validUnitTypes = [
[ 'length', 'time' ],
[ 'velocity', 'time' ],
[ 'acceleration', 'time' ],
[ 'jerk', 'time' ],
[ 'jounce', 'time' ]
]
arguments = matchUnitTypes( [ measurement1, measurement2 ], validUnitTypes )
if not arguments:
raise ValueError( '\'distance\' requires specific measurement types (see help)' )
time = arguments[ 'time' ]
if 'length' in arguments:
distance = arguments[ 'length' ]
elif 'acceleration' in arguments:
# acceleration and time
distance = getProduct( [ fdiv( 1, 2 ), arguments[ 'acceleration' ], time, time ] )
elif 'jerk' in arguments:
# jerk and time
distance = calculateDistance( getProduct( [ fdiv( 1, 2 ), arguments[ 'jerk' ], time ] ), time )
elif 'jounce' in arguments:
# jounce and time
distance = calculateDistance( getProduct( [ fdiv( 1, 2 ), arguments[ 'jounce' ], time ] ), time )
else:
# velocity and time
distance = multiply( arguments[ 'velocity' ], time )
return distance.convert( 'meter' )
示例8: findCenteredPolygonalNumber
def findCenteredPolygonalNumber( n, k ):
if real_int( k ) < 3:
raise ValueError( 'the number of sides of the polygon cannot be less than 3,' )
s = fdiv( k, 2 )
return nint( fdiv( fadd( sqrt( s ),
sqrt( fsum( [ fmul( 4, real( n ) ), s, -4 ] ) ) ), fmul( 2, sqrt( s ) ) ) )
示例9: getNthMotzkinNumber
def getNthMotzkinNumber( n ):
result = 0
for j in arange( 0, floor( fdiv( real( n ), 3 ) ) + 1 ):
result = fadd( result, fprod( [ power( -1, j ), binomial( fadd( n, 1 ), j ),
binomial( fsub( fmul( 2, n ), fmul( 3, j ) ), n ) ] ) )
return fdiv( result, fadd( n, 1 ) )
示例10: getNthNonagonalTriangularNumber
def getNthNonagonalTriangularNumber( n ):
a = fmul( 3, sqrt( 7 ) )
b = fadd( 8, a )
c = fsub( 8, a )
return nint( fsum( [ fdiv( 5, 14 ),
fmul( fdiv( 9, 28 ), fadd( power( b, real_int( n ) ), power( c, n ) ) ),
fprod( [ fdiv( 3, 28 ),
sqrt( 7 ),
fsub( power( b, n ), power( c, n ) ) ] ) ] ) )
示例11: getAngularSize
def getAngularSize( self, location=None, date=None ):
if location and date:
if isinstance( location, str ):
location = getLocation( location )
location.observer.date = date.to( 'utc' ).format( )
self.object.compute( location.observer )
# I have no idea why size seems to return the value in arcseconds... that
# goes against the pyephem documentation that it always uses radians for angles.
return RPNMeasurement( mpmathify( fdiv( fmul( fdiv( self.object.size, 3600 ), pi ), 180 ) ), 'radian' )
示例12: expandDataUnits
def expandDataUnits( ):
# expand data measurements for all prefixes
newConversions = { }
for dataUnit in dataUnits:
unitInfo = unitOperators[ dataUnit ]
for prefix in dataPrefixes:
newName = prefix[ 0 ] + dataUnit
# constuct unit operator info
helpText = '\n\'Using the standard SI prefixes, ' + newName + '\' is the equivalent\nof ' + \
'{:,}'.format( 10 ** prefix[ 2 ] ) + ' times the value of \'' + dataUnit + \
'\'.\n\nPlease see the help entry for \'' + dataUnit + '\' for more information.'
if unitInfo.abbrev:
newAbbrev = prefix[ 0 ] + unitInfo.abbrev
else:
newAbbrev = ''
unitOperators[ newName ] = \
RPNUnitInfo( unitInfo.unitType, prefix[ 0 ] + unitInfo.plural,
newAbbrev, [ ], unitInfo.categories, helpText, True )
# create new conversions
newConversion = power( 10, mpmathify( prefix[ 2 ] ) )
newConversions[ ( newName, dataUnit ) ] = newConversion
newConversion = fdiv( 1, newConversion )
newConversions[ ( dataUnit, newName ) ] = newConversion
for prefix in binaryPrefixes:
newName = prefix[ 0 ] + dataUnit
# constuct unit operator info
helpText = '\n\'Using the binary data size prefixes, ' + newName + '\' is the equivalent\nof 2^' + \
str( prefix[ 2 ] ) + ' times the value of \'' + dataUnit + \
'\'.\n\nPlease see the help entry for \'' + dataUnit + '\' for more information.'
if unitInfo.abbrev:
newAbbrev = prefix[ 0 ] + unitInfo.abbrev
else:
newAbbrev = ''
unitOperators[ newName ] = \
RPNUnitInfo( unitInfo.unitType, prefix[ 0 ] + unitInfo.plural,
newAbbrev, [ ], unitInfo.categories, helpText, True )
# create new conversions
newConversion = power( 2, mpmathify( prefix[ 2 ] ) )
newConversions[ ( newName, dataUnit ) ] = newConversion
newConversion = fdiv( 1, newConversion )
newConversions[ ( dataUnit, newName ) ] = newConversion
return newConversions
示例13: _crt
def _crt( a, b, m, n ):
d = getGCD( m, n )
if fmod( fsub( a, b ), d ) != 0:
return None
x = floor( fdiv( m, d ) )
y = floor( fdiv( n, d ) )
z = floor( fdiv( fmul( m, n ), d ) )
p, q, r = getExtendedGCD( x, y )
return fmod( fadd( fprod( [ b, p, x ] ), fprod( [ a, q, y ] ) ), z )
示例14: getAntiprismSurfaceArea
def getAntiprismSurfaceArea( n, k ):
if real( n ) < 3:
raise ValueError( 'the number of sides of the prism cannot be less than 3,' )
if not isinstance( k, RPNMeasurement ):
return getAntiprismSurfaceArea( n, RPNMeasurement( real( k ), 'meter' ) )
if k.getDimensions( ) != { 'length' : 1 }:
raise ValueError( '\'antiprism_area\' argument 2 must be a length' )
result = getProduct( [ fdiv( n, 2 ), fadd( cot( fdiv( pi, n ) ), sqrt( 3 ) ), getPower( k, 2 ) ] )
return result.convert( 'meter^2' )
示例15: getNthStern
def getNthStern( n ):
"""Return the nth number of Stern's diatomic series recursively"""
if real_int( n ) < 0:
raise ValueError( 'non-negative, real integer expected' )
if n in [ 0, 1 ]:
return n
elif n % 2 == 0: # even
return getNthStern( floor( fdiv( n, 2 ) ) )
else:
return fadd( getNthStern( floor( fdiv( fsub( n, 1 ), 2 ) ) ),
getNthStern( floor( fdiv( fadd( n, 1 ), 2 ) ) ) )