Changeset 794 in lmdz_wrf


Ignore:
Timestamp:
Jun 1, 2016, 4:18:16 PM (9 years ago)
Author:
lfita
Message:

Adding significant_decomposition: Function to decompose a given number by its signifcant potencies

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/generic_tools.py

    r787 r794  
    63236323    return ni,xi,nj,xj
    63246324
     6325def significant_decomposition(num,minpot):
     6326    """ Function to decompose a given number by its signifcant potencies
     6327      returns: [numPot], [Potlist], [Diglist]
     6328        [numPot]: number of potencies
     6329        [Potlist]: list of potencies
     6330        [Diglist]: list of digits
     6331        Thus:
     6332          num <> np.sum([Diglist]*10.**[Potlist])
     6333
     6334      num= number to decompose
     6335      minpot= minumum potence to decompose
     6336    >>> significant_decomposition(np.pi,5)
     6337    7, [0.0, -1.0, -2.0, -3.0, -4.0, -5.0, -6.0], [3, 1, 4, 1, 5, 9, 2]
     6338    """
     6339    fname = 'significant_decomposition'
     6340
     6341    potencies = []
     6342    potval = []
     6343
     6344    anum = np.abs(num)
     6345    diff = anum*1.
     6346    iipot = 1
     6347    while diff > 0.:
     6348        pot = np.floor(np.log10(diff))
     6349        potv = np.int(diff/(10.**pot))
     6350#        print 'Lluis:',np.log10(diff), pot,':',10.**pot,':',diff/(10.**pot),'.',potv,'.',potv*10.**pot,diff
     6351        diff = diff - potv*10.**pot
     6352        potencies.append(pot)
     6353        potval.append(potv)
     6354        if pot < -minpot: break
     6355        iipot = iipot + 1
     6356
     6357    return iipot, potencies, potval
Note: See TracChangeset for help on using the changeset viewer.