fixed newlite shit
This commit is contained in:
parent
a39eb6d870
commit
5bbde54bc1
3 changed files with 185 additions and 185 deletions
314
calc_lib.py
314
calc_lib.py
|
@ -1,158 +1,158 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# requires pyreadline3, numpy, scipy
|
||||
|
||||
import numpy as np
|
||||
import struct
|
||||
from numpy import pi, exp
|
||||
from numpy import cos, sin, tan, sqrt
|
||||
import os
|
||||
import sys
|
||||
from lib import reliability
|
||||
sys.ps1 = 'CALC > '
|
||||
sys.ps2 = '..... '
|
||||
|
||||
from scipy.special import erf, erfc, erfcinv, erfinv
|
||||
from scipy import constants as scicon
|
||||
|
||||
if sys.platform == 'win32':
|
||||
def _calcopen():
|
||||
os.system('explorer.exe {}'.format(sys.path[0]))
|
||||
if False:
|
||||
def _calcedit(editor):
|
||||
os.system('explorer.exe .')
|
||||
else:
|
||||
def _calcopen():
|
||||
os.system('xdg-open .')
|
||||
if False:
|
||||
def _calcedit(editor):
|
||||
os.system('explorer.exe .')
|
||||
|
||||
def iswrsig(gamma):
|
||||
"""Convert reflection coefficent to VSWR"""
|
||||
return (1+gamma)/(1-gamma)
|
||||
def iswr(retlos):
|
||||
"""Convert return loss in dB to VSWR"""
|
||||
if retlos > 0:
|
||||
retlos = -retlos
|
||||
print(' assuming {:.2f} dB input.'.format(retlos))
|
||||
gamma = idbsig(retlos)
|
||||
return (1+gamma)/(1-gamma)
|
||||
def swrsig(vswr):
|
||||
"""Convert VSWR to a reflection coefficent"""
|
||||
return (vswr-1)/(vswr+1)
|
||||
def swr(vswr):
|
||||
"""Convert a VSWR to a return loss in dB"""
|
||||
return 20*np.log10((vswr-1)/(vswr+1))
|
||||
|
||||
def db(x):
|
||||
return 10*np.log10(x)
|
||||
db.doc_str="""
|
||||
"""
|
||||
dB = db
|
||||
def db20(x):
|
||||
return 20*np.log10(x)
|
||||
def idb(x):
|
||||
return np.power(10,x/10)
|
||||
def idbsig(x):
|
||||
return np.power(10,x/20)
|
||||
|
||||
def cosd(x):
|
||||
return np.cos(x*np.pi/180)
|
||||
def sind(x):
|
||||
return np.sin(x*np.pi/180)
|
||||
def tand(x):
|
||||
return np.tan(x*np.pi/180)
|
||||
|
||||
def ebno2perr(ebno_db):
|
||||
"""Compute BPSK P(Error) from Eb/N0 in dB"""
|
||||
print('BPSK from %.1f dB'.format(ebno_db))
|
||||
ebno_lin = idb(ebno_db)
|
||||
return erfc(sqrt(ebno_lin))/2
|
||||
|
||||
def perr2ebno(perr):
|
||||
"""Compute BPSK Eb/N0 in dB required to hit a specific P(Error)."""
|
||||
print('BPSK (dB) from %.1e P_err'.format(perr))
|
||||
return db(erfcinv(2*perr)**2)
|
||||
|
||||
dBk=db(scicon.Boltzmann)
|
||||
dbk = dBk
|
||||
|
||||
class rpr:
|
||||
"""Wrappers to convert an aribtrary assigned data value to a formated binary representation"""
|
||||
__doc_s__=__doc__
|
||||
def __init__(self, v):
|
||||
self.v = v
|
||||
|
||||
@classmethod
|
||||
def _print(cls, b_list, cbytes=0):
|
||||
b = iter(b_list)
|
||||
b_str = '0x'
|
||||
b_merge = []
|
||||
if b.__length_hint__() % 2 != 0:
|
||||
b_merge.append('{:02x}'.format(b.__next__()))
|
||||
while b.__length_hint__() > 0:
|
||||
b_merge.append(''.join([
|
||||
'{:02x}'.format(b.__next__()) for _ in range(2)
|
||||
]))
|
||||
return b_str + '_'.join(b_merge)
|
||||
|
||||
def __repr__(self):
|
||||
return "{}\t\t{}".format(type(self.v), self.v)
|
||||
|
||||
@property
|
||||
def f64(self): return self._print(struct.pack('!d', self.v))
|
||||
@property
|
||||
def f32(self): return self._print(struct.pack('!f', self.v))
|
||||
|
||||
@property
|
||||
def i16(self): return self._print(struct.pack('!h', self.v))
|
||||
@property
|
||||
def u16(self): return self._print(struct.pack('!H', self.v))
|
||||
@property
|
||||
def i32(self): return self._print(struct.pack('!i', self.v))
|
||||
@property
|
||||
def u32(self): return self._print(struct.pack('!I', self.v))
|
||||
@property
|
||||
def i64(self): return self._print(struct.pack('!l', self.v))
|
||||
@property
|
||||
def u64(self): return self._print(struct.pack('!L', self.v))
|
||||
|
||||
|
||||
|
||||
if False:
|
||||
import code
|
||||
local_part=locals().copy()
|
||||
rm_locals = [
|
||||
'code',
|
||||
]
|
||||
for key in local_part.keys():
|
||||
if key[0] == '_':
|
||||
rm_locals.append(key)
|
||||
for key in rm_locals:
|
||||
del local_part[key]
|
||||
|
||||
print(local_part.keys())
|
||||
c=code.InteractiveConsole(locals=local_part)
|
||||
#c.runsource('locals()')
|
||||
c.interact()
|
||||
|
||||
def __lpr__fixreadline__():
|
||||
import os
|
||||
import atexit
|
||||
import readline
|
||||
|
||||
readline_history_file = os.path.join(os.path.expanduser('~'), '.pycalc_history')
|
||||
readline.read_history_file(readline_history_file)
|
||||
|
||||
atexit.register(readline.write_history_file, readline_history_file)
|
||||
|
||||
if False:
|
||||
__lpr__fixreadline__()
|
||||
|
||||
__tmp_global_keys__=list(locals().keys())
|
||||
for name in __tmp_global_keys__:
|
||||
handle=locals()[name]
|
||||
if hasattr(handle, '__doc_s__'):
|
||||
print("{0:10s} {1:s}".format(handle.__name__, handle.__doc_s__))
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# requires pyreadline3, numpy, scipy
|
||||
|
||||
import numpy as np
|
||||
import struct
|
||||
from numpy import pi, exp
|
||||
from numpy import cos, sin, tan, sqrt
|
||||
import os
|
||||
import sys
|
||||
from lib import reliability
|
||||
sys.ps1 = 'CALC > '
|
||||
sys.ps2 = '..... '
|
||||
|
||||
from scipy.special import erf, erfc, erfcinv, erfinv
|
||||
from scipy import constants as scicon
|
||||
|
||||
if sys.platform == 'win32':
|
||||
def _calcopen():
|
||||
os.system('explorer.exe {}'.format(sys.path[0]))
|
||||
if False:
|
||||
def _calcedit(editor):
|
||||
os.system('explorer.exe .')
|
||||
else:
|
||||
def _calcopen():
|
||||
os.system('xdg-open .')
|
||||
if False:
|
||||
def _calcedit(editor):
|
||||
os.system('explorer.exe .')
|
||||
|
||||
def iswrsig(gamma):
|
||||
"""Convert reflection coefficent to VSWR"""
|
||||
return (1+gamma)/(1-gamma)
|
||||
def iswr(retlos):
|
||||
"""Convert return loss in dB to VSWR"""
|
||||
if retlos > 0:
|
||||
retlos = -retlos
|
||||
print(' assuming {:.2f} dB input.'.format(retlos))
|
||||
gamma = idbsig(retlos)
|
||||
return (1+gamma)/(1-gamma)
|
||||
def swrsig(vswr):
|
||||
"""Convert VSWR to a reflection coefficent"""
|
||||
return (vswr-1)/(vswr+1)
|
||||
def swr(vswr):
|
||||
"""Convert a VSWR to a return loss in dB"""
|
||||
return 20*np.log10((vswr-1)/(vswr+1))
|
||||
|
||||
def db(x):
|
||||
return 10*np.log10(x)
|
||||
db.doc_str="""
|
||||
"""
|
||||
dB = db
|
||||
def db20(x):
|
||||
return 20*np.log10(x)
|
||||
def idb(x):
|
||||
return np.power(10,x/10)
|
||||
def idbsig(x):
|
||||
return np.power(10,x/20)
|
||||
|
||||
def cosd(x):
|
||||
return np.cos(x*np.pi/180)
|
||||
def sind(x):
|
||||
return np.sin(x*np.pi/180)
|
||||
def tand(x):
|
||||
return np.tan(x*np.pi/180)
|
||||
|
||||
def ebno2perr(ebno_db):
|
||||
"""Compute BPSK P(Error) from Eb/N0 in dB"""
|
||||
print('BPSK from %.1f dB'.format(ebno_db))
|
||||
ebno_lin = idb(ebno_db)
|
||||
return erfc(sqrt(ebno_lin))/2
|
||||
|
||||
def perr2ebno(perr):
|
||||
"""Compute BPSK Eb/N0 in dB required to hit a specific P(Error)."""
|
||||
print('BPSK (dB) from %.1e P_err'.format(perr))
|
||||
return db(erfcinv(2*perr)**2)
|
||||
|
||||
dBk=db(scicon.Boltzmann)
|
||||
dbk = dBk
|
||||
|
||||
class rpr:
|
||||
"""Wrappers to convert an aribtrary assigned data value to a formated binary representation"""
|
||||
__doc_s__=__doc__
|
||||
def __init__(self, v):
|
||||
self.v = v
|
||||
|
||||
@classmethod
|
||||
def _print(cls, b_list, cbytes=0):
|
||||
b = iter(b_list)
|
||||
b_str = '0x'
|
||||
b_merge = []
|
||||
if b.__length_hint__() % 2 != 0:
|
||||
b_merge.append('{:02x}'.format(b.__next__()))
|
||||
while b.__length_hint__() > 0:
|
||||
b_merge.append(''.join([
|
||||
'{:02x}'.format(b.__next__()) for _ in range(2)
|
||||
]))
|
||||
return b_str + '_'.join(b_merge)
|
||||
|
||||
def __repr__(self):
|
||||
return "{}\t\t{}".format(type(self.v), self.v)
|
||||
|
||||
@property
|
||||
def f64(self): return self._print(struct.pack('!d', self.v))
|
||||
@property
|
||||
def f32(self): return self._print(struct.pack('!f', self.v))
|
||||
|
||||
@property
|
||||
def i16(self): return self._print(struct.pack('!h', self.v))
|
||||
@property
|
||||
def u16(self): return self._print(struct.pack('!H', self.v))
|
||||
@property
|
||||
def i32(self): return self._print(struct.pack('!i', self.v))
|
||||
@property
|
||||
def u32(self): return self._print(struct.pack('!I', self.v))
|
||||
@property
|
||||
def i64(self): return self._print(struct.pack('!l', self.v))
|
||||
@property
|
||||
def u64(self): return self._print(struct.pack('!L', self.v))
|
||||
|
||||
|
||||
|
||||
if False:
|
||||
import code
|
||||
local_part=locals().copy()
|
||||
rm_locals = [
|
||||
'code',
|
||||
]
|
||||
for key in local_part.keys():
|
||||
if key[0] == '_':
|
||||
rm_locals.append(key)
|
||||
for key in rm_locals:
|
||||
del local_part[key]
|
||||
|
||||
print(local_part.keys())
|
||||
c=code.InteractiveConsole(locals=local_part)
|
||||
#c.runsource('locals()')
|
||||
c.interact()
|
||||
|
||||
def __lpr__fixreadline__():
|
||||
import os
|
||||
import atexit
|
||||
import readline
|
||||
|
||||
readline_history_file = os.path.join(os.path.expanduser('~'), '.pycalc_history')
|
||||
readline.read_history_file(readline_history_file)
|
||||
|
||||
atexit.register(readline.write_history_file, readline_history_file)
|
||||
|
||||
if False:
|
||||
__lpr__fixreadline__()
|
||||
|
||||
__tmp_global_keys__=list(locals().keys())
|
||||
for name in __tmp_global_keys__:
|
||||
handle=locals()[name]
|
||||
if hasattr(handle, '__doc_s__'):
|
||||
print("{0:10s} {1:s}".format(handle.__name__, handle.__doc_s__))
|
||||
del __tmp_global_keys__
|
|
@ -1,10 +1,10 @@
|
|||
# Design Target
|
||||
## Curses Stack based calculator
|
||||
|
||||
* platform layer event loop
|
||||
* use ncurses
|
||||
* React to single keypress events @ a fixed interval.
|
||||
* operations are based on single letter keys
|
||||
* Write input to a prompt
|
||||
* display the stack every cycle
|
||||
* display shortcuts at the bottom
|
||||
# Design Target
|
||||
## Curses Stack based calculator
|
||||
|
||||
* platform layer event loop
|
||||
* use ncurses
|
||||
* React to single keypress events @ a fixed interval.
|
||||
* operations are based on single letter keys
|
||||
* Write input to a prompt
|
||||
* display the stack every cycle
|
||||
* display shortcuts at the bottom
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
#!/usr/bin/env python3
|
||||
import numpy as _np
|
||||
|
||||
C_YEARS_TO_BLN_HOURS = (365.24 * 24) / 1_000_000_000
|
||||
|
||||
def to_fits(reliability, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return _np.log(reliability)/-time_hrs
|
||||
|
||||
def to_rel(FITs, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return _np.exp(-time_hrs * FITs)
|
||||
|
||||
def to_urel(FITs, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return 1-_np.exp(-time_hrs * FITs)
|
||||
|
||||
from_fits=to_rel
|
||||
#!/usr/bin/env python3
|
||||
import numpy as _np
|
||||
|
||||
C_YEARS_TO_BLN_HOURS = (365.24 * 24) / 1_000_000_000
|
||||
|
||||
def to_fits(reliability, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return _np.log(reliability)/-time_hrs
|
||||
|
||||
def to_rel(FITs, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return _np.exp(-time_hrs * FITs)
|
||||
|
||||
def to_urel(FITs, time_yrs=5):
|
||||
time_hrs = time_yrs*C_YEARS_TO_BLN_HOURS
|
||||
return 1-_np.exp(-time_hrs * FITs)
|
||||
|
||||
from_fits=to_rel
|
||||
from_rel=to_fits
|
Loading…
Add table
Add a link
Reference in a new issue