-í
ç¶<c       sÊ     d  Z    d k Z  d d d g Z  e i d ƒ Z  y  d e f d „  ƒ  YZ Wn  e j
 o  d Z n X  d „  Z / d	 „  Z	 = d
 „  Z
 W d „  Z g d „  Z ‡ d „  Z d S(   s8  General floating point formatting functions.

Functions:
fix(x, digits_behind)
sci(x, digits_behind)

Each takes a number or a string and a number of digits as arguments.

Parameters:
x:             number to be formatted; or a string resembling a number
digits_behind: number of digits behind the decimal point
Ns   fixs   scis
   NotANumbers-   ^([-+]?)0*(\d*)((?:\.\d*)?)(([eE][-+]?\d+)?)$c      s    t  Z  RS(   N(   s   __name__s
   __module__(    (    (    s   /usr/lib/python2.2/fpformat.pys
   NotANumber s   	s   fpformat.NotANumberc    sØ     % & t  i |  ƒ } ' | t j o ' t |  ‚ n ( | i d d d d ƒ \ } } } } ) | d j o ) d } n * | o * | d } n + | o + t | d ƒ } n
 , d } - | | | | f Sd S(	   sÅ   Return (sign, intpart, fraction, expo) or raise an exception:
    sign is '+' or '-'
    intpart is 0 or more digits beginning with a nonzero
    fraction is 0 or more digits
    expo is an integeri   i   i   i   s   +s    i    N(   s   decoders   matchs   ss   ress   Nones
   NotANumbers   groups   signs   intparts   fractions   expparts   ints   expo(   s   ss   expparts   ress   signs   expos   fractions   intpart(    (    s   /usr/lib/python2.2/fpformat.pys   extract  s    ' 
 
 	c    só   / 0 1 | d j o] 2 t | ƒ } 3 |  | |  | | f \ }  } 4 | | j o 5 |  d | | }  n np 6 | d j  o_ 7 t |  ƒ } 8 |  |  |  | | f \ }  } 9 | | j  o : d | | | } n n ; |  | f Sd S(   s5   Remove the exponent by changing intpart and fraction.i    s   0N(   s   expos   lens   fractions   fs   intparts   i(   s   intparts   fractions   expos   fs   i(    (    s   /usr/lib/python2.2/fpformat.pys   unexpo/ s   !!c    sÀ  = > ? t  | ƒ } @ | | j o A |  | d | | f Sn B t  |  ƒ } C | | d j  o D d | d f Sn E |  | } F | | | } G | d j oÔ H | | d } I xa I | d j o- J | | d j o J Pn K | d } qÀ WM d | } N | d } O d } P | |  t	 t
 | | ƒ d ƒ d t  | ƒ | d } Q | |  | | f \ }  } n R | d j o S |  | |  f Sn U |  |  d | d f Sd S(   s*   Round or extend the fraction to size digs.s   0i    s    s   5i   s   9N(   s   lens   fractions   fs   digss   intparts   is   totals	   nextdigits   ns   chrs   ord(   s   intparts   fractions   digss   fs   is   ns   totals	   nextdigit(    (    s   /usr/lib/python2.2/fpformat.pys	   roundfrac= s0     	;!c    s.  W Z [ t  |  ƒ t  d ƒ j o [ |  }  n \ y ] t |  ƒ \ } } } } Wn ^ t j
 o _ |  Sn X` t | | | ƒ \ } } a t	 | | | ƒ \ } } b x- b | o | d d j o b | d } q® Wc | d j o c d } n d | d j o d | | d | Sn e | | Sd S(   s‡   Format x as [-]ddd.ddd with 'digs' digits after the point
    and at least one digit before.
    If digs <= 0, the point is suppressed.s    i    s   0i   s   .N(   s   types   xs   extracts   signs   intparts   fractions   expos
   NotANumbers   unexpos	   roundfracs   digs(   s   xs   digss   expos   fractions   signs   intpart(    (    s   /usr/lib/python2.2/fpformat.pys   fixW s"        c    s1  g j k t  |  ƒ t  d ƒ j o k |  }  n l t |  ƒ \ } } } } m | o… n x: n | o | d d j o o | d } p | d } q\ Wq | o. r | d | d f \ } } s | d } n
 u d } n9 w | t | ƒ d } x | d | d | f \ } } y t d | ƒ } z t
 | | | ƒ \ } } { t | ƒ d j o= | | d | d | d  | t | ƒ d f \ } } } n  | | } € | d j o € | d | } n  t | ƒ } ‚ d d t | ƒ | } ƒ | d j  o ƒ d | } n „ d	 | } … | d
 | Sd S(   s¥   Format x as [-]d.dddE[+-]ddd with 'digs' digits after the point
    and exactly one digit before.
    If digs is <= 0, one digit is kept and the point is suppressed.s    i    s   0i   iÿÿÿÿs   .i   s   -s   +s   eN(   s   types   xs   extracts   signs   intparts   fractions   expos   lens   maxs   digss	   roundfracs   ss   abss   e(   s   xs   digss   es   ss   expos   fractions   signs   intpart(    (    s   /usr/lib/python2.2/fpformat.pys   scig s8     
!=  c     s   ‡ ˆ ‰ yP Š xF Š d o; ‹ t  d ƒ \ }  } Œ |  Gt |  | ƒ Gt |  | ƒ GHq WWn  t t f j
 o
 Ž n Xd S(   s   Interactive test run.i   s   Enter (x, digs): N(   s   inputs   xs   digss   fixs   scis   EOFErrors   KeyboardInterrupt(   s   xs   digs(    (    s   /usr/lib/python2.2/fpformat.pys   test‡ s    
+(   s   __doc__s   res   __all__s   compiles   decoders
   ValueErrors
   NotANumbers	   TypeErrors   extracts   unexpos	   roundfracs   fixs   scis   test(
   s   scis   __all__s   res   tests   fixs
   NotANumbers   unexpos   decoders	   roundfracs   extract(    (    s   /usr/lib/python2.2/fpformat.pys   ? s    