#!/usr/bin/python
version = "0.1.6"   # keep version information here since Makefile needs it

import gobject
import gtk
import gtk.glade
from math import *
import string
import os,sys

#--------- variable definitions ---------------- 
nums = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'	# used for Computer numbers base definitions
global calcsuppress	#semaphore used to suppress cyclic calculations when unit are clicked
global selected_category

calcsuppress=0
unit_sort_direction  = False
value_sort_direction = False
units_sort_direction = False
find_result=[]		#empty find result list
find_count=0		#default to find result number zero
selected_category=''	#preset to no selected category

def find_entry_changed(a):
	#Clear out find results since the user wants to look for something new
	global find_result
	find_result=[]		#empty find result list
	find_count=0		#default to find result number zero
	find_label.set_text('')	#clear result

def find_key_press(a,b):
	#Check if the key pressed was asn ASCII key
	if len(b.string)>0:
		#check if the key pressed was the 'Enter' key 
		if ord(b.string[0])==13:
			#execute the find units function
			find_units(1)

def about_clicked(a):
	about_box.show()

def about_close_clicked(a):
	about_box.hide()


def messagebox_ok_clicked(a):
	messagebox.hide()


def find_units(a):
	global find_count
	global selected_category
	global column1,col

	#check if 'new find' or 'last find' or 'next-find'

	#new-find = run the find algorithm which also selects the first found unit
	#         = find_count=0 and find_result=[]
	
	#last-find = restart from top again
	#          = find_count=len(find_result)

	#next-find = continue to next found location
	#           = find_count=0 and len(find_result)>0
	

	#check for new-find
	if len(find_result)==0:
	  find_string = string.lower(string.strip(find_entry.get_text()))
	  #Make sure that a valid find string has been requested
	  if len(find_string)>0:
	    categories=list_dic.keys()
	    categories.sort()
	    found_a_unit=0	#reset the 'found-a-unit' flag
	    cat_no=0
	    for category in categories:
	      units=list_dic[category].keys()
	      units.sort()
	      del units[0]	# do not display .base_unit description key
	      unit_no=0
	      for unit in units:
		if string.find(string.lower(unit), find_string)>=0:
		  found_a_unit=1	#indicate that a unit was found
		  #print "'",find_string,"'"," found at category=", category," unit =",unit
		  find_result.append((category,unit,cat_no,unit_no))
		unit_no=unit_no+1
	      cat_no=cat_no+1

	    if found_a_unit==1:
	      #select the first found unit
	      find_count=0
	      #check if next find is in a new category (prevent category changes when unnesessary
	      if selected_category!=find_result[find_count][0]:
		cat_clist.set_cursor(find_result[0][2],col,False)
	      clist1.set_cursor(find_result[0][3],column1,True)
	      if len(find_result)>1:
		find_label.set_text(('  Press Find for next unit. '+ str(len(find_result))+' result(s).'))
	    else:
	      find_label.set_text('  Text not found')	#Display error
	else:	#must be next-find or last-find
	  #check for last-find
	  if find_count==len(find_result)-1:
	    #select first result
	    find_count=0
	    cat_clist.set_cursor(find_result[find_count][2],col,False)
	    clist1.set_cursor(find_result[find_count][3],column1,True)
	  else: #must be next-find
	    find_count=find_count+1
	    #check if next find is in a new category (prevent category changes when unnesessary
	    if selected_category!=find_result[find_count][0]:
	      cat_clist.set_cursor(find_result[find_count][2],col,False)
	    clist1.set_cursor(find_result[find_count][3],column1,True)

def click_column(col):
	"""Sort the contents of the column when the user clicks on the title."""
	global unit_sort_direction
	global value_sort_direction
	global units_sort_direction
	global column1, column2, unit_model

	#Determine which column requires sorting
	if col.get_title()=="Unit Name":
	  selected_column=0
	  column1.set_sort_indicator(True)
	  column2.set_sort_indicator(False)
	  column3.set_sort_indicator(False)
	  column1.set_sort_order(not unit_sort_direction)
	elif col.get_title()=="Value":
	  selected_column=1
	  column1.set_sort_indicator(False)
	  column2.set_sort_indicator(True)
	  column3.set_sort_indicator(False)
	  column2.set_sort_order(not value_sort_direction)
	else:
	  selected_column=2
	  column1.set_sort_indicator(False)
	  column2.set_sort_indicator(False)
	  column3.set_sort_indicator(True)
	  column3.set_sort_order(not units_sort_direction)



	#declare a spot to hold the sorted list
	sorted_list = []

	#point to the first row
	iter=unit_model.get_iter_first()
	row=0

	while (iter):
	  #grab all text from columns for sorting

	  #get the text from each column
	  unit_text = unit_model.get_value(iter,0)
	  units_text = unit_model.get_value(iter,2)

	  #do not bother sorting if the value column is empty
	  if unit_model.get_value(iter,1)=="" and selected_column==1:
	    return
	  
	  #special sorting exceptions for ascii values (instead of float values)
	  if selected_category == "Computer Numbers":	
	    value_text = unit_model.get_value(iter,1)
	  else:
	    if unit_model.get_value(iter,1)==None or unit_model.get_value(iter,1)=="":
	      value_text = ""
	    else:
	      value_text = float(unit_model.get_value(iter,1))

	  if selected_column==0:
	    sorted_list.append((unit_text,value_text,units_text))
	  elif selected_column==1:
	    sorted_list.append((value_text,unit_text,units_text))
	  else:
	    sorted_list.append((units_text,value_text,unit_text))

	  #point to the next row in the unit_model
	  iter=unit_model.iter_next(iter)
	  row=row+1

	#check if no calculations have been made yet (don't bother sorting)
	if row==0:
	  return
	else:
	  if selected_column==0:
	    if not unit_sort_direction:
	      sorted_list.sort(lambda (x,xx,xxx), (y,yy,yyy): cmp(string.lower(x),string.lower(y)))
	      unit_sort_direction=True
	    else:
	      sorted_list.sort(lambda (x,xx,xxx), (y,yy,yyy): cmp(string.lower(y),string.lower(x)))
	      unit_sort_direction=False
	  elif selected_column==1:
	    sorted_list.sort()
	    if not value_sort_direction:
	      value_sort_direction=True
	    else:
	      sorted_list.reverse()
	      value_sort_direction=False
	  else:
	    if not units_sort_direction:
	      sorted_list.sort(lambda (x,xx,xxx), (y,yy,yyy): cmp(string.lower(x),string.lower(y)))
	      units_sort_direction=True
	    else:
	      sorted_list.sort(lambda (x,xx,xxx), (y,yy,yyy): cmp(string.lower(y),string.lower(x)))
	      units_sort_direction=False

	  #Clear out the previous list of units
	  unit_model = gtk.ListStore(gobject.TYPE_STRING,gobject.TYPE_STRING,gobject.TYPE_STRING)
	  clist1.set_model(unit_model)

	  #colourize each row differently for easier reading
	  clist1.set_property( 'rules_hint',1)

	  #Clear out the description
	  text_model = gtk.TextBuffer(None)
	  text1.set_buffer(text_model)

	  if selected_column==0:
	    for unit,value,units in sorted_list:
	      iter = unit_model.append()
	      unit_model.set(iter,0,unit,1,str(value),2,units)
	  elif selected_column==1:
	    for value,unit,units in sorted_list:
	      iter = unit_model.append()
	      unit_model.set(iter,0,unit,1,str(value),2,units)
	  else:
	    for units,value,unit in sorted_list:
	      iter = unit_model.append()
	      unit_model.set(iter,0,unit,1,str(value),2,units)
	return



def click_category(row):
	global unit_sort_direction 
	global value_sort_direction
	global units_sort_direction
	global unit_model, cat_model
	global selected_category
	global unit_dic
	
	#Clear out the previous list of units
	unit_model = gtk.ListStore(gobject.TYPE_STRING,gobject.TYPE_STRING,gobject.TYPE_STRING)
	clist1.set_model(unit_model)

	#colourize each row differently for easier reading
	clist1.set_property( 'rules_hint',1)

	#Clear out the description
	text_model = gtk.TextBuffer(None)
	text1.set_buffer(text_model)

	#determine the contents of the selected category row
	selected,iter= row.get_selection().get_selected()

	selected_category = cat_model.get_value(iter,0)
	
	unit_sort_direction  = False
	value_sort_direction = False
	units_sort_direction = False
	column1.set_sort_indicator(False)
	column2.set_sort_indicator(False)
	column3.set_sort_indicator(False)

	unit_dic=list_dic[selected.get_value(iter,0)]
	keys = unit_dic.keys()
	keys.sort()
	del keys[0]	# do not display .base_unit description key

	#Fill up the units desciptions and clear the value cells
	for key in keys:
	  iter = unit_model.append()
	  unit_model.set(iter,0,key,1,"",2,unit_dic[key][1])

	entry1.set_text("")
	entry2.set_text("")
	entry3.set_text("")
	entry4.set_text("")
	label1.set_text("")
	label2.set_text("")


def click_unit(row):
	global calcsuppress
	calcsuppress = 1	#suppress calculations
	
	#determine the contents of the selected row
	selected,iter= clist1.get_selection().get_selected()

	#if gtk.TreeSelection.get_selected(clist1.get_selection()):
	#  print "true"
	#else:
	#  print "false"


	selected_unit=selected.get_value(iter,0)

	unit_spec=unit_dic[selected_unit]

	#Clear out the description
	text_model = gtk.TextBuffer(None)
	text1.set_buffer(text_model)

	#text_model.insert_at_cursor(unit_spec[2],-1)
	enditer = text_model.get_end_iter()
	text_model.insert(enditer,unit_spec[2])

	#***text1.set_point(0)
	if entry1.get_text() <> selected_unit:
		entry3.set_text(entry1.get_text())
		entry4.set_text(entry2.get_text())
		if label1.get() == None:
			label2.set_text("")
		else:
			label2.set_text(label1.get())
	entry1.set_text(selected_unit)
	
	#***entry2.set_text(clist1.get_text(row,1))
	entry2.set_text(selected.get_value(iter,1))
	
	label1.set_text(unit_spec[1])	# put units into label text
	if entry2.get_text() =="":
		if selected_category == "Computer Numbers":
			entry2.set_text("0")
		else:
			entry2.set_text("0.0")
	# select the text so user can start typing right away
	entry2.grab_focus()
	entry2.select_region(0,-1)
	calcsuppress = 0	#enable calculations

def write_units(a):
	"""Write the list of categories and units to stdout for documentation purposes."""
	messagebox_model = gtk.TextBuffer(None)
	messageboxtext.set_buffer(messagebox_model)
	messagebox_model.insert_at_cursor('The units is being written to stdout. You can capture this printout by starting gonvert from the command line as follows:\n$ gonvert > file.txt',-1)
	messagebox.show()
	while gtk.events_pending():
          gtk.mainiteration (False)
	category_keys=list_dic.keys()
	category_keys.sort()
	total_categories = 0
	total_units = 0
	print 'gonvert-',version,' - Unit Conversion Utility  - Convertible units listing:'
	for category_key in category_keys:
		total_categories = total_categories + 1
		print category_key,":"
		unit_dic=list_dic[category_key]
		unit_keys = unit_dic.keys()
		unit_keys.sort()
		del unit_keys[0]	# do not display .base_unit description key
		for unit_key in unit_keys:
			total_units = total_units + 1
			print "\t",unit_key
	print total_categories,' catagories'
	print total_units,' units'
	messagebox_model = gtk.TextBuffer(None)
	messageboxtext.set_buffer(messagebox_model)
	messagebox_model.insert_at_cursor('The units list has been written to stdout. You can capture this printout by starting gonvert from the command line as follows:\n$ gonvert > file.txt',-1)
	
def clear_description():
	""" Delete previous description from text box. """
	#*** text1.set_point(text1.get_length()); text1.backward_delete(text1.get_length())


 
def makeBase(x, base = len(nums), table=nums):
	"""Convert from base 10 to any other base. """
	d, m = divmod(x, base)
	if d:
		return makeBase(d,base, table) + table[int(m)]
	else:
		return table[int(m)] 
       


# roman numerals
roman_group = { 1: ('i','v'),
	       10: ('x','l'),
	      100: ('c','d'),
	     1000: ('m','A'),
	    10000: ('B','C'),
	}

# functions that convert arabic digits to roman numerals
roman_value = {
	0: lambda i,v,x: "",
	1: lambda i,v,x: i,
	2: lambda i,v,x: i+i,
	3: lambda i,v,x: i+i+i,
	4: lambda i,v,x: i+v,
	5: lambda i,v,x: v,
	6: lambda i,v,x: v+i,
	7: lambda i,v,x: v+i+i,
	8: lambda i,v,x: v+i+i+i,
	9: lambda i,v,x: i+x,
	}

def toroman( n ):
	''' convert a decimal number in [1,4000) to a roman numeral '''
	if n < 1:
	    return ""
	if n >= 4000:
	    return "Too large"
	base = 1
	s = ""
	while n > 0:
	    i,v = roman_group[base]
	    base = base * 10
	    x,l = roman_group[base]
	    digit = n % 10
	    n = (n-digit)/10
	    s = roman_value[digit](i,v,x) + s
	return s
	
def fromroman( s, rbase=1 ):
	''' convert a roman numeral (in lowercase) to a decimal integer '''
	if len(s) == 0:
	    return 0
	if rbase > 1000: 
	    return 0
	i,v = roman_group[rbase]
	x,l = roman_group[rbase*10]
	if   s[-4:] == v+i+i+i: digit,s = 8,s[:-4]
	elif s[-4:] == i+i+i+i: digit,s = 4,s[:-4]
	elif s[-3:] == v+i+i  : digit,s = 7,s[:-3]
	elif s[-3:] == i+i+i  : digit,s = 3,s[:-3]
	elif s[-2:] == v+i    : digit,s = 6,s[:-2]
	elif s[-2:] == i+x    : digit,s = 9,s[:-2]
	elif s[-2:] == i+v    : digit,s = 4,s[:-2]
	elif s[-2:] == i+i    : digit,s = 2,s[:-2]
	elif s[-1:] == i      : digit,s = 1,s[:-1]
	elif s[-1:] == v      : digit,s = 5,s[:-1]
	else                  : digit,s = 0,s
	return digit*rbase + fromroman(s,rbase*10)


class Ccalculate:
	def top(self,a):
	  global calcsuppress
	  global unit_model
	  global testvalue
	  
	  if calcsuppress == 1:
	    #calcsuppress = 0
	    return
	  # determine if value to be calculated is empty
	  if selected_category == "Computer Numbers":
	    if entry2.get_text() =="":
	      value = '0'
	    else:
	       value = entry2.get_text()
	  else:
	    if entry2.get_text() =="":
	      value = 0.0
	    else:
	      value = float(entry2.get_text())

	  if entry1.get_text() <> "":
	    func,arg = unit_dic[entry1.get_text()][0]	#retrieve the conversion function and value from the selected unit
	    base = apply(func.to_base,(value,arg,))	#determine the base unit value

	    keys = unit_dic.keys()
	    keys.sort()
	    del keys[0]
	    row = 0
	    
	    #point to the first row
	    iter=unit_model.get_iter_first()

	    while (iter):
	      #get the formula from the name at the row
	      func,arg = unit_dic[unit_model.get_value(iter,0)][0]
	      
	      #set the result in the value column
	      unit_model.set(iter,1,str(apply(func.from_base,(base,arg,))))
	      
	      #point to the next row in the unit_model
	      iter=unit_model.iter_next(iter)

	    # if the second row has a unit then update its value
	    if entry3.get_text() <> "":
	      calcsuppress=1
	      func,arg = unit_dic[entry3.get_text()][0] 
	      entry4.set_text(str(apply(func.from_base,(base,arg,))))
	      calcsuppress=0

	def bottom(self,a):
	  global calcsuppress
	  if calcsuppress == 1:
	    #calcsuppress = 0
	    return
	  # determine if value to be calculated is empty
	  if selected_category == "Computer Numbers":
	    if entry4.get_text() =="":
	      value = '0'
	    else:
	      value = entry4.get_text()
	  else:
	    if entry4.get_text() =="":
	      value = 0.0
	    else:
	      value = float(entry4.get_text())

	  if entry3.get_text() <> "":
	    func,arg = unit_dic[entry3.get_text()][0]	#retrieve the conversion function and value from the selected unit
	    base = apply(func.to_base,(value,arg,))	#determine the base unit value

	    keys = unit_dic.keys()
	    keys.sort()
	    del keys[0]
	    row = 0
	    
	    #point to the first row
	    iter=unit_model.get_iter_first()

	    while (iter):
	      #get the formula from the name at the row
	      func,arg = unit_dic[unit_model.get_value(iter,0)][0]
	      
	      #set the result in the value column
	      unit_model.set(iter,1,str(apply(func.from_base,(base,arg,))))
	      
	      #point to the next row in the unit_model
	      iter=unit_model.iter_next(iter)

	    # if the second row has a unit then update its value
	    if entry1.get_text() <> "":
	      calcsuppress=1
	      func,arg = unit_dic[entry1.get_text()][0] 
	      entry2.set_text(str(apply(func.from_base,(base,arg,))))
	      calcsuppress=0

	
#All classes for conversions are defined below:
# each class should have one method for converting "to_base and another for converting "from_base"
#the return value is the converted value to or from base
class simple_multiplier:
	def to_base(self,value,multiplier): 
		return value * (multiplier)
	def from_base(self,value,multiplier): 
		if multiplier == 0:
			return 0.0
		else:
			return value / (multiplier)

class simple_inverter:
	def to_base(self,value,multiplier):
		if value == 0:
			return 0.0
		else:
			return (multiplier) / value 
	def from_base(self,value,multiplier): 
		if value == 0:
			return 0.0
		else:
			return (multiplier) / value 
class simple_gain_offset:
	def to_base(self,value,(gain,offset)): 
		return (value * (gain)) + offset
	def from_base(self,value,(gain,offset)): 
		if gain == 0:
			return 0.0
		else:
			return (value - offset) / gain

class simple_offset_gain:
	def to_base(self,value,(offset,gain)):
		return (value + offset) * gain
	def from_base(self,value,(offset,gain)):
		if gain == 0:
			return 0.0
		else:	 
			return (value / gain) - offset

class slope_offset:
	"""convert using points on a graph"""
	def to_base(self,value,((low_in,high_in),(low_out,high_out))):
		gain = (high_out-low_out)/(high_in-low_in)
		offset = low_out - gain*low_in
		return gain*value+offset
	def from_base(self,value,((low_out,high_out),(low_in,high_in))):
		gain = (high_out-low_out)/(high_in-low_in)
		offset = low_out - gain*low_in
		return gain*value+offset

class double_slope_offset:
	"""convert using points on a graph, graph split into two slopes"""
	def to_base(self,value,((low1_in,high1_in),(low1_out,high1_out),(low2_in,high2_in),(low2_out,high2_out))):
		if low1_in<=value<=high1_in:
			gain = (high1_out-low1_out)/(high1_in-low1_in)
			offset = low1_out - gain*low1_in
			return gain*value+offset
		if low2_in<=value<=high2_in:
			gain = (high2_out-low2_out)/(high2_in-low2_in)
			offset = low2_out - gain*low2_in
			return gain*value+offset
		return 0.0
	def from_base(self,value,((low1_in,high1_in),(low1_out,high1_out),(low2_in,high2_in),(low2_out,high2_out))):
		if low1_out<=value<=high1_out:
			gain = (high1_in-low1_in)/(high1_out-low1_out)
			offset = low1_in - gain*low1_out
			return gain*value+offset
		if low2_out<=value<=high2_out:
			gain = (high2_in-low2_in)/(high2_out-low2_out)
			offset = low2_in - gain*low2_out
			return gain*value+offset
		return 0.0

class base_converter:
        #Convert from any base to base 10 (decimal)
        def to_base(self,value,base):
                result   = 0L #will contain the long base-10 (decimal) number to be returned
                position = len(value)   #length of the string that is to be converted
                for x in value:
                        position = position-1
                        result = long(result + long(long(string.find(nums,x))*(long(base)**long(position))))
                return result
        #Convert from decimal to any base
        def from_base(self,value,base):
                return makeBase(value,base)

class roman_numeral:
	#Convert from roman numeral to base 10 (decimal)
	def to_base(self,value,junk):
		if value=="0":
			return 0L
		else:
			return fromroman(value)
	#Convert from decimal to roman numeral
	def from_base(self,value,junk):
		return toroman(value)

class function:
	"""defined simple function can be as complicated as you like, however, both to/from base must be defined."""
	#value is assumed to be a string
	#convert from a defined function to base
	def to_base(self,value,(to_base,from_base)):
		exec "y="+to_base[:string.find(to_base,'x')]+str(value)+to_base[string.find(to_base,'x')+1:]
		return y
	def from_base(self,value,(to_base,from_base)):
		exec "y="+from_base[:string.find(from_base,'x')]+str(value)+from_base[string.find(from_base,'x')+1:]
		return y

		
#----------- Program starts below ----------------
#check to see if glade file is in current directory (user must be running from download untar directory)
if  os.path.exists('gonvert.glade'):
	homepath=''
else:
	#look for it in the installed directory
	homepath=sys.path[0] + '/../lib/gonvert-'+version + "/"

gladefile=homepath+'gonvert.glade'

widgets = gtk.glade.XML(gladefile)
        
app1 = widgets.get_widget('app1')
app1.set_title('gonvert-'+version+' - Unit Conversion Utility');

#--------- function definitions from classes ------------
m=simple_multiplier()
inv=simple_inverter()
gof=simple_gain_offset()
ofg=simple_offset_gain()
slo=slope_offset()
dso=double_slope_offset()
b=base_converter()
r=roman_numeral()
f=function()
calculate=Ccalculate()


#--------- connections to GUI ---------------- 
dic = {"on_exit1_activate": gtk.mainquit,
       "on_app1_destroy": gtk.mainquit,
       "on_cat_clist_select_row": click_category,
       "on_clist1_click_column": click_column,
       "on_entry2_changed": calculate.top,
       "on_entry4_changed": calculate.bottom,
       "on_write_units1_activate":write_units,
       "on_find_button_clicked":find_units,
       "on_find_entry_key_press_event":find_key_press,
       "on_find_entry_changed":find_entry_changed,
       "on_about1_activate":about_clicked,
       "on_about_close_clicked":about_close_clicked,
       "on_messagebox_ok_clicked":messagebox_ok_clicked,
       }
widgets.signal_autoconnect (dic);


cat_clist  = widgets.get_widget('cat_clist' )
clist1 = widgets.get_widget('clist1')
clist1_selection=clist1.get_selection()
clist1_selection.connect("changed", click_unit)

entry1 = widgets.get_widget('entry1')
entry2 = widgets.get_widget('entry2')
entry3 = widgets.get_widget('entry3')
entry4 = widgets.get_widget('entry4')
about_box = widgets.get_widget('about_box')
messagebox = widgets.get_widget('msgbox')
messageboxtext = widgets.get_widget('msgboxtext')

about_image = widgets.get_widget('about_image')
about_image.set_from_file(homepath  +'pixmaps/gonvert.png')
versionlabel = widgets.get_widget('versionlabel')
versionlabel.set_text(version)


#label1 =widgets.get_widget('label1').get_children()[0]
#label2 =widgets.get_widget('label2').get_children()[0]
label1 =widgets.get_widget('label1')
label2 =widgets.get_widget('label2')


#testsignal = widgets.signal_connect("on_entry2_changed", calculate.top)

text1  = widgets.get_widget('text1' )

# *** take this out temporarily for glade-2 testing
#text1.set_word_wrap(1)	#this ensures that full words wrap properly in the unit description window

find_entry = widgets.get_widget('find_entry')
find_label = widgets.get_widget('find_label')


#----- main dictionary of unit descriptions below ------------
# first entry defines base unit
# remaining entries define unit specifications [(function,argument), units, description]
# 	where function can be m and argument is the multiplying factor to_base
# 	or function can be any other arbitrary function and argument can be a single argument
list_dic = {
 	"Acceleration":{".base_unit":"metre per second squared",
		"free fall":
			[(m,9.80665),"gn","The ideal falling motion of a body that is subject only to the earth's gravitational field."],
		"metre per second squared":
			[(m,1.0),u"m/s\xb2",""],
		"foot per second squared":
			[(m,30.48/100),u"ft/s\xb2",""],
		"centimetre per second squared":
			[(m,1/100.0),u"cm/s\xb2",""],
		"gal":
			[(m,1/100.0),"Gal","A unit of gravitational acceleration equal to one centimeter per second per second (named after Galileo)"],
		"millimetre per second squared":
			[(m,1/1000.0),u"mm/s\xb2",""]
	},
	"Angle":{".base_unit":"radian",
		"revolution / circle / perigon / turn":
			[(m,2.0*pi),"r","""The act of revolving, or turning round on an axis or a center; the motion of a body round a fixed point or line; rotation; as, the revolution of a wheel, of a top, of the earth on its axis, etc."""],
		"right angle":
			[(m,pi/2.0),"L","""The angle formed by one line meeting another perpendicularly"""],
		"radian":
			[(m,1.0),"rad","An arc of a circle which is equal in length to the radius, or the angle measured by such an arc."],
		"degree":
			[(m,pi/180.0),u"\xb0","1/360 of a complete revolution."],
		"grad | grade | gon":
			[(m,pi/200),"g","One-hundredth of a right angle."],
		"milliradian":
			[(m,1/1000.0),"mrad","A unit of angular distance equal to one thousandth of a radian."],
		"minute":
			[(m,pi/(180.0*60)),"'","The sixtieth part of a degree; sixty seconds (Marked thus ('); as, 10deg 20')."],
		"second":
			[(m,pi/(180.0*60*60)),'"',"""One sixtieth of a minute.(Marked thus ("); as, 10deg 20' 30"). """],
		"mil":
			[(m,(2*pi)/6400),"","""Used in artillery; 1/6400 of a complete revolution."""],
		"centesimal minute":
			[(m,pi/20000),"","""One hundredth of a grade, 0.01 grade"""],
		"centesimal second":
			[(m,pi/2000000),"","""One ten-thousandth of a grade, 0.0001 grade"""],
		"octant":
			[(m,pi/4.0),"","""The eighth part of a circle (an arc of 45 degrees)."""],
		"quadrant":
			[(m,pi/2.0),"","""The fourth part of a circle (an arc of 90 degrees)."""],
		"sextant":
			[(m,pi/3.0),"","""The sixth part of a circle (an arc of 60 degrees)."""],
		"point":
			[(m,pi/16.0),"","""1/32 of a circle. Points are used on the face of a compass (32 points). Each point is labelled clockwise starting from North as follows: North, North by East, North Northeast, Northeast by North, and Northeast, etc."""],
		"sign":
			[(m,pi/6.0),"","""The twelfth part of a circle as in twelve signs of the zodiac (an arc of 30 degrees)."""],
	},
	"Angular Velocity / Frequency":{".base_unit":"radian per second",
		"kiloradian per second":
			[(m,1000.0),"krad/s",""""""],
		"revolution per second":
			[(m,2*pi),"rev/s",""""""],
		"hertz":
			[(m,2*pi),"Hz","""Named after the German physicist Heinrich Hertz (1857-1894) who was the first to produce electromagnetic waves artificially. Having a periodic interval of one second."""],
		"radian per second":
			[(m,1.0),"rad/s",""""""],
		"milliradian per second":
			[(m,1/1000.0),"mrad/s",""""""],
		"revolution per minute":
			[(m,(2*pi)/60.0),"rpm",""""""],
		"revolution per hour":
			[(m,(2*pi)/3600.0),"rph",""""""],
		"revolution per day":
			[(m,(2*pi)/(3600.0*24)),"rpd",""""""],
		"gigahertz":
			[(m,1e9*2*pi),"GHz","""One billion hertz."""],
		"terahertz":
			[(m,1e12*2*pi),"THz",""],
		"petahertz":
			[(m,1e15*2*pi),"PHz",""],
		"exahertz":
			[(m,1e18*2*pi),"EHz",""],
		"megahertz":
			[(m,1e6*2*pi),"MHz","""One million hertz."""],
		"kilohertz":
			[(m,1e3*2*pi),"kHz","""One thousand hertz."""],
	},
 	"Area":{".base_unit":"square metre",
		"metre diameter circle":
			[(f,('pi*(x/2.0)**2','2.0*(x/pi)**(0.5)')),"m dia.","""Type the diameter of the circle in metres to find its area displayed in other fields."""],
		"centimetre diameter circle":
			[(f,('pi*(x/200.0)**2','200.0*(x/pi)**(0.5)')),"cm dia.","""Type the diameter of the circle in centimetres to find its area displayed in other fields."""],
		"inch diameter circle":
			[(f,('pi*(((x*(25.4/1000))/2.0) )**2','1000/25.4 * 2.0*(x/pi)**(0.5)')),"in dia.","""Type the diameter of the circle in inches to find its area displayed in other fields."""],
		"foot diameter circle":
			[(f,('pi*(((x*((12*25.4)/1000))/2.0) )**2','1000/(12*25.4) * 2.0*(x/pi)**(0.5)')),"ft dia.","""Type the diameter of the circle in feet to find its area displayed in other fields."""],
		"are":
			[(m,100.0),"","""The unit of superficial measure, being a square of which each side is ten meters in length; 100 square meters, or about 119.6 square yards."""],
		"acre":
			[(m,16*25.3*10),"","""A piece of land, containing 160 square rods, or 4,840 square yards, or 43,560 square feet. This is the English statute acre. That of the United States is the same. The Scotch acre was about 1.26 of the English, and the Irish 1.62 of the English. Note: The acre was limited to its present definite quantity by statutes of Edward I., Edward III., and Henry VIII."""],
		"acre (Cheshire)":
			[(m,8561.97632),"",""""""],
		"acre (Irish)":
			[(m,6555.26312),"",""""""],
		"acre (Scottish)":
			[(m,5142.20257),"",""""""],
		"arpent (French)":
			[(m,4088/1.196),"",""" 4,088 sq. yards, or nearly five sixths of an English acre."""],
		"arpent (woodland)":
			[(m,16*25.3*10+16*25.3*2.5+(16*25.3*10)/160),"","""1 acre, 1 rood, 1 perch"""],
		"barn":
			[(m,1.0/1e28),"","""Used in Nuclear physics to describe the apparent cross-sectional size of atomic sized objects that are bombarded with smaller objects (like electrons). 10^-28 square meters. 100 square femtometers. Originated from the semi-humorous idiom "big as a barn" and used by physicists to describe the size of the scattering object (Ex: "That was as big as 5 barns!)."""],
		"cho":
			[(m,16*25.3*10*2.45),"","""Japanese. 2.45 acre"""],
		"circular inch":
			[(m,1000000.0/(1e6*1550*1.273)),"",""""""],
		"circular mil":
			[(m,1.0/(1e6*1550*1.273)),"cmil",""""""],
		"desyatina | dessiatina":
			[(m,16*25.3*10*2.6996),"","""Russian. 2.6996 acre. 2400 square sadzhens"""],
		"flag":
			[(m,25/10.7639104167097),"","""square pace (a pace is 5 feet)."""],
		"hide | carucate":
			[(m,40468.71618),"","""An ancient english measure of the amount of land required to support family"""],
		"hectare":
			[(m,10000.0),"ha","""A measure of area, or superficies, containing a hundred ares, or 10,000 square meters, and equivalent to 2.471 acres."""],
		"homestead | quarter section":
			[(m,16*25.3*10*160),"","""160 acres,1/4 square mile, or 1/4 section. Use by the governments of North America early settlers in the western states amd provinces were allowed to take title to a homestead of 160 acres of land by registering a claim, settling on the land, and cultivating it."""],
		"perch":
			[(m,(16*25.3*10)/160),"","""Used to measure land. A square rod; the 160th part of an acre."""],
		"sabin":
			[(m,1/10.7639104167097),"",u"""A unit of acoustic absorption equivalent to the absorption by a square foot of a surface that absorbs all incident sound. 1ft\xb2."""],
		"square":
			[(m,100/10.7639104167097),"","""Used in the construction for measuring roofing material, finished lumber, and other building materials. One square is equals 100 square feet."""],
		"section":
			[(m,2.59*1E6),"","""Used in land measuring. One square mile. An area of about 640 acres"""],
		"square league (land)":
			[(m,23309892.99),"",""""""],
		"square mile":
			[(m,2.59*1e6),u"mi\xb2",""""""],
		"square kilometre":
			[(m,1e6),u"km\xb2",""""""],
		"rood":
			[(m,16*25.3*2.5),"","""The fourth part of an acre, or forty square rods."""],
		"shaku":
			[(m,330.6/10000),"","""A Japanese unit of area, the shaku equals 330.6 square centimeters (51.24 square inches). Note: shaku also means length and volume. """],
		"square chain (surveyor)":
			[(m,16*25.3),u"ch\xb2","""A unit for land measure equal to four rods square, or one tenth of an acre."""],
		"link":
			[(m,4*25.3),"","""4 rods square"""],
		"square rod":
			[(m,25.3),u"rd\xb2",""""""],
		"square metre":
			[(m,1.0),u"m\xb2","""Also know as a centare is (1/100th of an are)."""],
		"square yard":
			[(m,1/1.19599004630108),u"yd\xb2","""A unit of area equal to one yard by one yard square syn: sq yd"""],
		"square foot":
			[(m,1/10.7639104167097),u"ft\xb2","""An area equal to that of a square the sides of which are twelwe inches; 144 square inches."""],
		"square inch":
			[(m,1/(10.7639104167097*144)),u"in\xb2","""A unit of area equal to one inch by one inch square syn: sq in"""],
		"square centimetre":
			[(m,1.0/10000),u"cm\xb2",""""""],
		"square micrometre":
			[(m,1.0/1e12),u"µm\xb2",""""""],
		"square millimetre":
			[(m,1.0/1e6),u"mm\xb2",""""""],
		"square mil":
			[(m,1.0/(1e6*1550)),u"mil\xb2",""""""],
		"township":
			[(m,1e6*2.59*36),"",u"""A division of territory six miles square (36miles\xb2), containing 36 sections."""],
		"roll (wallpaper)":
			[(m,30/10.7639104167097),"",""""""],
		"square Scottish ell":
			[(m,0.88323),"",""""""],
		"fall (Scottish)":
			[(m,31.79618),"",""""""],
		"joch (German) | yoke":
			[(m,5746.5577),"","""joch (German) is 40 square klafters"""],
		"labor (Texas)":
			[(m,716862.83837),"","""An area of land that could be cultivated by one farmer"""],
		"barony":
			[(m,16187486.47094),"",""""""],
		"square pes (Roman)":
			[(m,0.08741),"",""""""],
		"square alen (Denmark)":
			[(m,.38121),"",""""""],
		"ferfet (Iceland)":
			[(m,0.09848),"",""""""],
		"square vara (Spanish)":
			[(m,0.59418),"",""""""],
		"donum (Yugoslavia)":
			[(m,699.99992),"",""""""],
		"sahme (Egyptian)":
			[(m,7.29106),"",""""""],
		"tavola (Italian)":
			[(m,37.62587),"",""""""],
		"cuadra (Paraguay)":
			[(m,7486.71249),"",""""""],
		"acaena (Greek)":
			[(m,9.19744),"",""""""],
		"plethron (Greek)":
			[(m,951.01483),"",""""""],
	},
	"Atomic Physics":{".base_unit":"radian per second",
		"kilogram":
			[(m,2.997925e8**2*(1.0/1.054e-34)),"kg",""""""],
		"joule":
			[(m,1.0/1.054e-34),"","""Named after the English physicist James Prescott Joule (1818-1889). A unit of work which is equal to 10^7 units of work in the C. G. S. system of units (ergs), and is practically equivalent to the energy expended in one second by an electric current of one ampere in a resistance of one ohm. One joule is approximately equal to 0.738 foot pounds."""],
		"erg":
			[(m,1.0/1.054e-27),"","""The unit of work or energy in the C. G. S. system, being the amount of work done by a dyne working through a distance of one centimeter; the amount of energy expended in moving a body one centimeter against a force of one dyne. One foot pound is equal to 13,560,000 ergs."""],
		"GeV Giga electronvolt":
			[(m,2.41796e23*2*pi),"Gev",""""""],
		"neutron mass unit":
			[(m,1.00137*1836.11*3.75577e4*13.6058*2.41796e14*2*pi),"",""""""],
		"proton mass unit":
			[(m,1836.11*3.75577e4*13.6058*2.41796e14*2*pi),"",""""""],
		"atomic mass unit":
			[(m,1822.84*3.75577e4*13.6058*2.41796e14*2*pi),"amu",""""""],
		"MeV Mega electronvolt":
			[(m,2.41796e20*2*pi),"MeV",""""""],
		"electron rest mass":
			[(m,3.75577e4*13.6058*2.41796e14*2*pi),"",""""""],
		"Rydberg constant":
			[(m,13.6058*2.41796e14*2*pi),"","""Named after the Swedish physicist Johannes Robert Rydberg (1854-1919). A wave number characteristic of the wave spectrum of each element"""],
		"electronvolt":
			[(m,2.41796e14*2*pi),"eV","""A unit of energy equal to the work done by an electron accelerated through a potential difference of 1 volt."""],
		"kayser or cm^-1":
			[(m,2.997925e10*2*pi),"K","""Named after the german physicist Heinrich Gustav Johannes Kayser (1853-1940). Used to measure light and other electromagnetic waves. The "wave number" in kaysers equals the number of wavelengths per centimeter."""],
		"kelvin":
			[(m,2.997925e8*2*pi/1.4387752e-2),"K","""The basic unit of thermodynamic temperature adopted under the System International d'Unites"""],
		"m^-1":
			[(m,2.997925e8*2*pi),"",""""""],
		"millikayser":
			[(m,2.997925e7*2*pi),"",""""""],
		"hertz":
			[(m,2*pi),"hz",""""""],
		"radian per second":
			[(m,1.0),"rad/s",""""""],
	},
	"Computer Data":{".base_unit":"bit",
		"bit":
			[(m,1.0),"","""One bit of data. Binary representation On/Off."""],
		"nibble | hexit | quadbit":
			[(m,4.0),"","""One half a byte"""],
		"byte":
			[(m,8.0),"","""Eight bits"""],
		"character":
			[(m,8.0),"","""Usually described by one byte (256 possible characters can be defined by one byte)."""],
		"kilobyte | kibi":
			[(m,1024.0*8),"K | Ki","""2^10, 1024 bytes. 1024 comes from 2^10 which is close enough to 1000. kibi is the IEEE proposal."""],
		"megabyte | mebi":
			[(m,1024.0**2*8),"M | Mi","""2^20, 1024^2 bytes. 1024 kilobytes. 1024 comes from 2^10 which is close enough to 1000. mebi is the IEEE proposal."""],
		"gigabyte | gibi":
			[(m,1024.0**3*8),"G | Gi","""2^30, 1024^3. 1024 megabytes. 1024 comes from 2^10 which is close enough to 1000. gibi is the IEEE proposal."""],
		"terabyte | tebi":
			[(m,1024.0**4*8),"T | Ti","""2^40, 1024^4. 1024 gigabytes. 1024 comes from 2^10 which is close enough to 1000. tebi is the IEEE proposal."""],
		"petabyte | pebi":
			[(m,1024.0**5*8),"P | Pi","""2^50, 1024^5. 1024 terabytes. 1024 comes from 2^10 which is close enough to 1000. tebi is the IEEE proposal."""],
		"exabyte | exbi":
			[(m,1024.0**6*8),"E | Ei","""2^60, 1024^6, 1024 petabytes. 1024 comes from 2^10 which is close enough to 1000. tebi is the IEEE proposal."""],
		"zebi":
			[(m,1024.0**7*8),"Zi","""1024^7. 1024 exbibytes. 1024 comes from 2^10 which is close enough to 1000. tebi is the IEEE proposal."""],
		"yobi":
			[(m,1024.0**8*8),"Yi","""1024^8. 1024 yobibytes. 1024 comes from 2^10 which is close enough to 1000. tebi is the IEEE proposal."""],
	},
	"Computer Data flow rate":{".base_unit":"baud",
		"baud":
			[(m,1.0),"baud",u"""Named after the French telegraph engineer Jean-Maurice-Émile Baudot (1845 - 1903). Data transmission measured in bits per second"""],
		"bits per second":
			[(m,1.0),"bps","""same as baud rate"""],
		"characters per second":
			[(m,10.0),"cps","""Rate to transmit one character. The character is usually described as one byte with one stop bit and one start bit (10 bits in total)."""],
	},
	"Computer Numbers":{".base_unit":"base 10 decimal",
		"base  2 binary":
			[(b,2),"base  2","""Base two numbering sytstem using the digits 0-1"""],
		"base  3 ternary | trinary":
			[(b,3),"base  3","""Base three numbering sytstem using the digits 0-2. Russian Nikolay Brusentsov built a trinary based computer system."""],
		"base  4 quaternary | quadrary":
			[(b,4),"base  4","""Base four numbering sytstem using the digits 0-3."""],
		"base  5 quinary":
			[(b,5),"base  5","""Base five numbering sytstem using the digits 0-4."""],
		"base  6 senary | hexary":
			[(b,6),"base  6","""Base six numbering sytstem using the digits 0-5."""],
		"base  7 septenary | septary":
			[(b,7),"base  7","""Base seven numbering sytstem using the digits 0-6."""],
		"base  8 octonary | octal | octonal | octimal":
			[(b,8),"base  8","""Base eight numbering sytstem using the digits 0-7. Commonly used in older computer systems."""],
		"base  9 nonary":
			[(b,9),"base  9","""Base nine numbering sytstem using the digits 0-8."""],
		"base 10 decimal":
			[(b,10),"base 10","""Base ten numbering sytstem using the digits 0-9."""],
		"base 11 undenary":
			[(b,11),"base 11","""Base eleven numbering sytstem using the digits 0-9,a."""],
		"base 12 duodecimal":
			[(b,12),"base 12","""Base twelve numbering sytstem using the digits 0-9,a-b."""],
		"base 13 tridecimal":
			[(b,13),"base 13","""Base Thirteen numbering sytstem using the digits 0-9,a-c."""],
		"base 14 quattuordecimal":
			[(b,14),"base 14","""Base Fourteen numbering sytstem using the digits 0-9,a-d."""],
		"base 15 quindecimal":
			[(b,15),"base 15","""Base Fifteen numbering sytstem using the digits 0-9,a-e."""],
		"base 16 sexadecimal | hexadecimal | hex":
			[(b,16),"base 16","""Base Sixteen numbering sytstem using the digits 0-1,a-f. Commonly used in computer systems."""],
		"base 17 septendecimal":
			[(b,17),"base 17","""Base Sixteen numbering sytstem using the digits 0-1,a-g."""],
		"base 18 octodecimal":
			[(b,18),"base 18","""Base Sixteen numbering sytstem using the digits 0-1,a-h."""],
		"base 19 nonadecimal":
			[(b,19),"base 19","""Base Sixteen numbering sytstem using the digits 0-1,a-i."""],
		"base 20 vigesimal":
			[(b,20),"base 20","""Base Twenty numbering sytstem using the digits 0-1,a-j."""],
		"base 30 trigesimal":
			[(b,30),"base 30","""Base Thirty numbering sytstem using the digits 0-1,a-r."""],
		"base 36":
			[(b,36),"base 36","""Base Thirty-six numbering sytstem using the digits 0-9,a-z."""],
		"base 40 quadragesimal":
			[(b,40),"base 40","""Base Forty digits numbering sytstem using the digits 0-1,a-f,A-C."""],
		"base 50 quinquagesimal":
			[(b,50),"base 50","""Base Fifty digits numbering sytstem using the digits 0-1,a-f,A-M."""],
		"base 60 sexagesimal":
			[(b,60),"base 60","""Base Sixty numbering sytstem using the digits 0-9,a-z,A-V."""],
		"base 62":
			[(b,62),"base 62","""Base Sixty-three numbering sytstem using the digits 0-9,a-z,A-Z. This is the highest numbering system that can be represented with all decimal numbers and lower and upper case English alphabet characters. Other number systems include septagesimal (base 70), octagesimal (base 80), nonagesimal (base 90), centimal (base 100), bicentimal (base 200), tercentimal (base 300), quattrocentimal (base 400), quincentimal (base 500)."""],
		"roman numerals":
			[(r,0),"","""A symbol set in the old Roman notation; I,V,X,L,C,D,M. Range 1 to 3999 (higher values cannot be represented with standard ASCII characters)."""],
	},
	"Density":{".base_unit":"kilogram/cubic metre",
		"kilogram/cubic metre":
			[(m,1.0),u"kg/m³",""""""],
		"lbm/cubic foot":
			[(m,16.02),u"lbm/ft³","""pounds mass per cubic foot"""],
		"lbm/gallon (US liquid)":
			[(m,119.8264),"lbm/gal","""pounds mass per US liquid gallon"""],
		"slug/cubic ft":
			[(m,515.3788),u"slug/ft³",""""""],
		"gram/cubic cm ":
			[(m,1000.0),u"g/cm³",""""""],
		"kilogram/liter":
			[(m,1000.0),"kg/l",""""""],
		"metric ton/cubic metre":
			[(m,1000.0),"",""""""],
		"long ton/cubic yard":
			[(m,1328.939),"",""""""],
		"lbm/cubic inch":
			[(m,27679.9),u"lbm/in³","""pounds mass per cubic inch"""],
		"short ton/cubic foot":
			[(m,32040.0),"",""""""],
		"kg/cubic cm":
			[(m,1.0e6),u"kg/cm³","""kilograms per cubic centimetre"""],
		"aluminum":
			[(m,2643.0),"Al","""Enter 1 here to find the density of aluminum."""],
		"iron":
			[(m,7658.0),"Fe","""Enter 1 here to find the density of iron."""],
		"copper":
			[(m,8906.0),"Cu","""Enter 1 here to find the density of copper."""],
		"lead":
			[(m,11370.0),"Pb","""Enter 1 here to find the density of lead."""],
		"gold":
			[(m,19300.0),"Au","""Enter 1 here to find the density of gold."""],
		"silver":
			[(m,10510.0),"Ni","""Enter 1 here to find the density of silver."""],
	},
	"Electrical Current":{".base_unit":"ampere",
		"ampere":
			[(m,1.0),"A",u"""Named after the French physicist André Marie Ampére (1775-1836). The unit of electric current; -- defined by the International Electrical Congress in 1893 and by U. S. Statute as, one tenth of the unit of current of the C. G. S. system of electro-magnetic units, or the practical equivalent of the unvarying current which, when passed through a standard solution of nitrate of silver in water, deposits silver at the rate of 0.001118 grams per second."""],
		"kiloampere":
			[(m,1.0e3),"kA",""""""],
		"milliampere":
			[(m,1.0e-3),"mA",""""""],
		"microampere":
			[(m,1.0e-6),u"µA",""""""],
		"nanoampere":
			[(m,1.0e-9),"nA",""""""],
		"picoampere":
			[(m,1.0e-12),"pA",""""""],
		"abampere":
			[(m,10.0),"abA","""The CGS electromagnetic unit of current."""],
		"coulomb per second":
			[(m,1.0),"",""""""],
		"statampere":
			[(m,1.e-9/3),"","""The CGS electrostatic unit of current."""],
	},
	"Electrical Charge":{".base_unit":"coulomb",
		"faraday":
			[(m,96.5e3),"","""Named after Michael Faraday the The English physicist and chemist who discovered electromagnetic induction (1791-1867). The amount of electric charge that liberates one gram equivalent of any ion from an electrolytic solution. """],
		"kilocoulomb":
			[(m,1.0e3),"kC",""""""],
		"ampere-hour":
			[(m,3.6e3),u"A·h","""Commonly used to describe the capacity of a battery."""],
		"abcoulomb":
			[(m,10.0),"abC","""The CGS electromagnetic unit of charge."""],
		"coulomb (weber)":
			[(m,1.0),"C","""Named after the French physicist and electrican Coulomb. (Physics) The standard unit of quantity in electrical measurements. It is the quantity of electricity conveyed in one second by the current produced by an electro-motive force of one volt acting in a circuit having a resistance of one ohm, or the quantity transferred by one amp`ere in one second. Formerly called weber."""],
		"microcoulomb":
			[(m,1.0e-6),u"µC",""""""],
		"nanocoulomb":
			[(m,1.0e-9),"nC",""""""],
		"statcoulomb":
			[(m,1.0e-9/3),"sC","""The CGS electrostatic unit of charge."""],
		"electron charge":
			[(m,1.0/(6.2414503832469e18)),"",""""""],
	},
	"Electrical Voltage":{".base_unit":"volt",
		"abvolt":
			[(m,1.0e-8),"abV","""A unit of potential equal to one-hundred-millionth of a volt."""],
		"volt":
			[(m,1.0),"V","""Named after the Italian electrician Alessandro Volta. The unit of electro-motive force; -- defined by the International Electrical Congress in 1893 and by United States Statute as, that electro-motive force which steadily applied to a conductor whose resistance is one ohm will produce a current of one amp`ere. It is practically equivalent to 1000/1434 the electro-motive force of a standard Clark's cell at a temperature of 15deg C."""],
		"gigavolt":
			[(m,1.0e9),"GV","""One billion volts."""],
		"megavolt":
			[(m,1.0e6),"MV","""One million volts."""],
		"kilovolt":
			[(m,1.0e3),"kV","""One thousand volts."""],
		"millivolt":
			[(m,1.0e-3),"mV","""One thousandth of an volt."""],
		"microvolt":
			[(m,1.0e-6),u"µV","""One millionth of an volt."""],
		"nanovolt":
			[(m,1.0e-9),"nV","""One billionth of an volt."""],
		"statvolt":
			[(m,300.0),"","""300 volts."""],
	},
	"Electrical Resistance & Conductance":{".base_unit":"ohm",
		"ohm":
			[(m,1.0),"ohm","""Named after the German physicist Georg Simon Ohm (1787-1854). The standard unit in the measure of electrical resistance, being the resistance of a circuit in which a potential difference of one volt produces a current of one ampere. As defined by the International Electrical Congress in 1893, and by United States Statute, it is a resistance substantially equal to 10^9 units of resistance of the C.G.S. system of electro-magnetic units, and is represented by the resistance offered to an unvarying electric current by a column of mercury at the temperature of melting ice 14.4521 grams in mass, of a constant cross-sectional area, and of the length of 106.3 centimeters. As thus defined it is called the international ohm"""],
		"siemens | mho":
			[(inv,1.0),"S","""Named after Ernst Werner von Siemens (1816-1892). A unit describing how well materials conduct equal to the reciprocal of an ohm syn: mho, S"""],
		"abmho":
			[(inv,1.0e-9),"abmho",""""""],
		"millisiemens | millimho":
			[(inv,1.0e3),"mS",""""""],
		"microsiemens | micromho":
			[(inv,1.0e6),u"µS",""""""],
		"statmho":
			[(inv,8.99e11),"",""""""],
		"gigaohm":
			[(m,1.0e9),"G ohm","""One billion ohms."""],
		"megaohm":
			[(m,1.0e6),"M ohm","""One million ohms."""],
		"kilohm":
			[(m,1.0e3),"k ohm","""One thousand ohms."""],
		"milliohm":
			[(m,1.0e-3),"m ohm","""One thousandth of an ohm."""],
		"microhm":
			[(m,1.0e-6),u"µ ohm","""One millionth of an ohm."""],
		"nanohm":
			[(m,1.0e-9),"n ohm","""One billionth of an ohm."""],
		"abohm":
			[(m,1.0e-9),"ab ohm",""""""],
		"statohm":
			[(m,8.99e5*1e6),"",""""""],
	},
	"Electrical Inductance":{".base_unit":"henry",
		"henry":
			[(m,1.0),"H","""Named after the American physicist Joseph Henry (1797-1878). The unit of electric induction; the induction in a circuit when the electro-motive force induced in this circuit is one volt, while the inducing current varies at the rate of one ampere a second."""],
		"stathenry":
			[(m,8.99e11),"",""""""],
		"ohm-second":
			[(m,1.0),u"ohm·sec",""""""],
		"millihenry":
			[(m,1.0e-3),"mH",""""""],
		"microhenry":
			[(m,1.0e-6),u"µH",""""""],
		"nanohenry":
			[(m,1.0e-9),"nH",""""""],
		"abhenry":
			[(m,1.0e-9),"abH",""""""],
	},
	"Electrical Capacitance":{".base_unit":"farad",
		"farad":
			[(m,1.0),"F","""Named after the English electrician Michael Faraday. The standard unit of electrical capacity; the capacity of a condenser whose charge, having an electro-motive force of one volt, is equal to the amount of electricity which, with the same electromotive force, passes through one ohm in one second; the capacity, which, charged with one coulomb, gives an electro-motive force of one volt."""],
		"abfarad":
			[(m,1e9),"abF","""A capacitance unit equal to one billion farads"""],
		"second/ohm":
			[(m,1.0),"",""""""],
		"microfarad":
			[(m,1e-6),u"µF",""""""],
		"statfarad":
			[(m,1.0e-6/8.99e5),"",""""""],
		"nanofarad":
			[(m,1e-9),"nF",""""""],
		"picofarad":
			[(m,1e-12),"pF",""""""],
	},
	"Electromagnetic Radiation":{".base_unit":"hertz",
		"hertz":
			[(m,1.0),"Hz","""Named after the German physicist Heinrich Hertz (1857-1894) who was the first to produce electromagnetic waves artificially. Having a periodic interval of one second."""],
		"meter":
			[(inv,299792458.0),"m","""Equal to 39.37 English inches, the standard of linear measure in the metric system of weights and measures. It was intended to be, and is very nearly, the ten millionth part of the distance from the equator to the north pole, as ascertained by actual measurement of an arc of a meridian."""],
		"centimeter":
			[(inv,29979245800.0),"cm",""""""],
		"millimeter":
			[(inv,299792458000.0),"mm",""""""],
		"micrometer | micron":
			[(inv,299792458000000.0),u"µm","""A metric unit of length equal to one millionth of a meter. The thousandth part of one millimeter."""],
		"nanometer":
			[(inv,299792458000000000.0),"nm","""A metric unit of length equal to one billionth of a meter."""],
		"angstrom":
			[(inv,2997924580000000000.0),u"Å","""Equal to one ten billionth of a meter (or 0.0001 micron); used to specify wavelengths of electromagnetic radiation"""],
		"kilohertz":
			[(m,1.0e3),"KHz",""""""],
		"megahertz":
			[(m,1.0e6),"MHz",""""""],
		"gigahertz":
			[(m,1.0e9),"GHz",""""""],
		"terahertz":
			[(m,1.0e12),"THz",""""""],
		"petahertz":
			[(m,1.0e15),"PHz",""""""],
		"exahertz":
			[(m,1.0e18),"EHz",""""""],
		"electron Volt":
			[(m,1/4.13566e-15),"eV",u"""Energy. e=h·f where h = Planks constant (4.13566 x 10^-15 electron volts/second). f = frequency in Hertz."""],
	},
	"Energy | Work":{".base_unit":"joule | wattsecond | newton-metre",
		"kiloton":
			[(m,4200.0e9),"","""A measure of explosive power (of an atomic weapon) equal to that of 1000 tons of TNT"""],
		"gigawatt-hour":
			[(m,3.6e12),"GWh",""""""],
		"megawatt-hour":
			[(m,3.6e9),"MWh",""""""],
		"kilowatt-hour":
			[(m,3.6e6),"kWh",""""""],
		"horsepower-hour":
			[(m,2.686e6),u"hp·h",""""""],
		"gigajoule":
			[(m,1.0e9),"GJ",""""""],
		"megajoule":
			[(m,1.0e6),"MJ",""""""],
		"kg force metres":
			[(m,9.80665),u"kgf·m",""""""],
		"kilojoule":
			[(m,1.0e3),"kJ",""""""],
		"watt-hour":
			[(m,3.6e3),"Wh",""""""],
		"British thermal unit":
			[(m,1.055e3),"Btu",""""""],
		"joule | wattsecond | newton-metre":
			[(m,1.0),"J","""Named after the English physicist James Prescott Joule(1818-1889). A unit of work which is equal to 10^7 units of work in the C. G. S. system of units (ergs), and is practically equivalent to the energy expended in one second by an electric current of one ampere in a resistance of one ohm. One joule is approximately equal to 0.738 foot pounds."""],
		"kilocalorie":
			[(m,4.184e3),"kcal",""""""],
		"calorie":
			[(m,4.184),"cal","""The unit of heat according to the French standard; the amount of heat required to raise the temperature of one kilogram (sometimes, one gram) of water one degree centigrade, or from 0deg to 1deg."""],
		"foot-poundals":
			[(m,0.04214),"",""""""],
		"foot-pound force":
			[(m,1.356),u"ft·lbf","""A unit of work equal to a force of one pound moving through a distance of one foot"""],
		"millijoule":
			[(m,1.0e-3),"mJ",""""""],
		"microjoule":
			[(m,1.0e-6),u"µJ",""""""],
		"attojoule":
			[(m,1.0e-18),"aJ",""""""],
		"erg | dyne-centimetre":
			[(m,1.0e-7),"","""The unit of work or energy in the C. G. S. system, being the amount of work done by a dyne working through a distance of one centimeter; the amount of energy expended in moving a body one centimeter against a force of one dyne. One foot pound is equal to 13,560,000 ergs."""],
		"GeV":
			[(m,1.0e-9/6.24),"","""A billion electronvolts"""],
		"MeV":
			[(m,1.0e-12/6.24),"","""a million electronvolts"""],
		"electron volt":
			[(m,1.0e-18/6.24),"eV","""A unit of energy equal to the work done by an electron accelerated through a potential difference of 1 volt"""],
	},
	"Flow (dry)":{".base_unit":"litres per second",
		"litres per second":
			[(m,1.0),"lps","""A cubic decimeter of material moving past a point every second."""],
		"litres per minute":
			[(m,1.0/60),"lpm","""A cubic decimeter of material moving past a point every minute."""],
		"cubic feet per minute":
			[(m,1/(60*0.0353146667215)),"cfm","""Commonly used to describe the flow rate produced by a large fan or blower."""],
		"cubic feet per second":
			[(m,1/0.0353146667215),"cfs",""""""],
		"cubic inches per minute":
			[(m,1/(60*61.0237440947)),u"in³/m",""""""],
		"cubic inches per second":
			[(m,1/61.0237440947),u"in³/s",""""""],
	},
	"Flow (liquid)":{".base_unit":"litres per second",
		"litres per second":
			[(m,1.0),"lps","""A cubic decimeter of material moving past a point every second"""],
		"litres per minute":
			[(m,1.0/60),"lpm",""""""],
		"US gallons per minute":
			[(m,1/(60*3.785411784)),"gpm (US)",""""""],
		"US gallons per second":
			[(m,1/3.785411784),"gps (US)",""""""],
		"UK gallons per minute":
			[(m,1/(60*4.54609028199)),"gpm (UK)",""""""],
		"UK gallons per second":
			[(m,1/4.54609028199),"gps (UK)",""""""],
	},
	"Force":{".base_unit":"newton",
		"tonne of force":
			[(m,9806.65),"","""Metric ton of force, 1000 kilonewtons."""],
		"ton of force":
			[(m,2000*4.4482216152605),"tnf","""2000 pounds of force."""],
		"sthene":
			[(m,1.0e3),"","""Named from the Greek word sthenos, strength. One sthene is the force required to accelerate a mass of one tonne at a rate of 1 m/s2. """],
		"atomic weight":
			[(m,1.6283353926E-26),"","""Generally understood as the weight of the hydrogen atom."""],
		"kip":
			[(m,4.4482216152605e3),"","""Kilopounds of force."""],
		"kilonewton":
			[(m,1.0e3),"kN",""""""],
		"kilogram force | kilopond":
			[(m,9.80665),"kgf",""""""],
		"pound force":
			[(m,4.4482216152605),"lbf",""""""],
		"newton":
			[(m,1.0),"N","""Named after the English mathematician and physicist Sir Isaac Newton (1642-1727). A unit of force equal to the force that imparts an acceleration of 1 m/sec/sec to a mass of 1 kilogram; equal to 100,000 dynes"""],
		"ounce force":
			[(m,4.4482216152605/16),"ozf",""""""],
		"poundal":
			[(m,0.138254954376),"pdl","""A unit of force based upon the pound, foot, and second, being the force which, acting on a pound avoirdupois for one second, causes it to acquire by the of that time a velocity of one foot per second. It is about equal to the weight of half an ounce, and is 13,825 dynes."""],
		"gram force":
			[(m,9.80665/1e3),"gf",""""""],
		"millinewton":
			[(m,1.0e-3),"mN",""""""],
		"dyne":
			[(m,1.0e-5),"dyn","""The unit of force, in the C. G. S. (Centimeter Gram Second) system of physical units; that is, the force which, acting on a gram for a second, generates a velocity of a centimeter per second."""],
		"micronewton":
			[(m,1.0e-6),u"µN",""""""],
	},
	"Length":{".base_unit":"metre",
		"klafter | faden (German)":
			[(m,1.8965),"","""Similar to the fathom."""],
		"klafter | faden (Switzerland)":
			[(m,1.8),"","""Similar to the fathom."""],
		"earth diamater":
			[(m,12742630),"","""Diameter for the Earth."""],
		"actus (roman actus)":
			[(m,35.47872),"","""Land measurement, 120 Roman feet (pedes monetales). This was equivalent to 35.47872 metres."""],
		"angstrom":
			[(m,1.0e-10),u"Å","""Equal to one ten billionth of a meter (or 0.0001 micron); used to specify wavelengths of electromagnetic radiation"""],
		"arshin | arshine | archin":
			[(m,0.7112),"","""Russian.  28 inches"""],
		"arpentcan":
			[(m,44289.14688),"","""arpentcan = 27.52 mile"""],
		"arpent (Canadian)":
			[(m,58.471308),"","""Canadian unit of land measurement. 191.835 ft"""],
		"arpentlin | French arpent":
			[(m,30*6.395*12*(25.4/1000)),"","""French unit of land measurement. 30 toises"""],
		"assbaa":
			[(m,0.02),"","""Arabian measure."""],
		"astronomical unit":
			[(m,149597871000.0),"AU","""Used for distances within the solar system; equal to the mean distance between the Earth and the Sun (approximately 93 million miles or 150 million kilometers)."""],
		"barleycorn":
			[(m,8.46666666666667E-03),"","""Formerly, a measure of length, equal to the average length of a grain of barley; the third part of an inch."""],
		"bohr radius":
			[(m,52.9177/1e12),"","""Named after the Danish physicist Niels Bohr (1885-1962), who explained the structure of atoms in 1913. The bohr radius represents the mean distance between the proton and the electron in an unexcited hydrogen atom. 52.9177 picometers. """],
		"bolt":
			[(m,36.576),"","""A compact package or roll of cloth, as of canvas or silk, often containing about forty yards."""],
		"bottom measure":
			[(m,(25.4/1000)/40),"","""One fortieth of an inch."""],
		"cable length":
			[(m,219.456),"","""A nautical unit of depth. 720 feet."""],
		"caliber (gun barrel caliber)":
			[(m,0.000254),"","""The diameter of round or cylindrical body, as of a bullet or column."""],
		"cane":
			[(m,3.84049),"","""Persian"""],
		"chain (surveyors | Gunters)":
			[(m,20.1168),"","""A surveyors instrument which consists of links and is used in measuring land.One commonly in use is Gunter's chain, which consists of one hundred links, each link being seven inches and ninety-two one hundredths in length; making up the total length of rods, or sixty-six, feet; hence, a measure of that length; hence, also, a unit for land measure equal to four rods."""],
		"chain (engineers)":
			[(m,100*(12*25.4/1000)),"","""100 ft."""],
		"charac":
			[(m,0.2601),"","""Persian"""],
		"chebel":
			[(m,21.03124),"","""Persian"""],
		"city block":
			[(m,100*(36*25.4/1000)),"","""An informal measurement, about 100 yards"""],
		"cubit (Biblical | Hebrew | English)":
			[(m,18.00*(25.4/1000)),"","""A measure of length, being the distance from the elbow to the extremity of the middle finger. Note: The cubit varies in length in different countries, the English,Hebrew and Biblical cubits are 18 inches."""],
		"cubit (Indian) | hasta":
			[(m,0.64161),"",""""""],
		"cubit (Roman)":
			[(m,17.47*(25.4/1000)),"","""A measure of length, being the distance from the elbow to the extremity of the middle finger. Note: The cubit varies in length in different countries, the Roman cubit is 17.47 inches."""],
		"cubit (Greek) | pechya":
			[(m,18.20*(25.4/1000)),"","""A measure of length, being the distance from the elbow to the extremity of the middle finger. Note: The cubit varies in length in different countries, the Greek cubit is 18.20 inches."""],
		"cubit (Israeli)":
			[(m,0.55372),"","""A measure of length, being the distance from the elbow to the extremity of the middle finger. Note: The cubit varies in length in different countries, the Israeli cubit is 21.8 inches."""],
		"cloth finger":
			[(m,4.5*(25.4/1000)),"","""Used in sewing"""],
		"cloth quarter":
			[(m,9*(25.4/1000)),"","""Used in sewing"""],
		"compton wavelength of the electron":
			[(m,1836.11*1.00138*1.31962/1e15),"","""Named after Arthur Holly Compton (1892-1962)"""],
		"compton wavelength of the proton":
			[(m,1.00138*1.31962/1e15),"","""Named after Arthur Holly Compton (1892-1962)"""],
		"compton wavelength of the neutron":
			[(m,1.31962/1e15),"","""Named after Arthur Holly Compton (1892-1962)"""],
		"classical electron radius":
			[(m,2.13247*1.00138*1.31962/1e15),"",""""""],
		"digit | digitus":
			[(m,0.018542),"","""A finger's breadth, commonly estimated to be three fourths of an inch."""],

		"diamond (Typographical)":
			[(m,4.5*0.35146e-3),"","""4 1/2 pt in hieght."""],
		"pearl (Typographical)":
			[(m,5*0.35146e-3),"","""5 pt in hieght."""],
		"agate | ruby (Typographical)":
			[(m,5.5*0.35146e-3),"","""Used in ing. A kind of type, larger than pearl and smaller than nonpareil; in England called ruby. 5 1/2 pt in hieght."""],
		"nonpareil (Typographical)":
			[(m,6*0.35146e-3),"","""6 pt in hieght."""],
		"minion (Typographical)":
			[(m,7*0.35146e-3),"","""7 pt in hieght."""],
		"brevier (Typographical)":
			[(m,8*0.35146e-3),"","""8 pt in hieght."""],
		"bourgeois (Typographical)":
			[(m,9*0.35146e-3),"","""9 pt in hieght."""],
		"elite | long primer (Typographical)":
			[(m,10*0.35146e-3),"","""10 pt in hieght."""],
		"small pica (Typographical)":
			[(m,11*0.35146e-3),"","""11 pt in hieght."""],
		"pica (Typographical)":
			[(m,12*0.35146e-3),"","""A size of type next larger than small pica, and smaller than English.12 pt in hieght"""],
		"english (Typographical)":
			[(m,14*0.35146e-3),"","""14 pt in hieght."""],
		"columbian (Typographical)":
			[(m,16*0.35146e-3),"","""16 pt in hieght."""],
		"great primer (Typographical)":
			[(m,18*0.35146e-3),"","""18 pt in hieght."""],
		"point (pica) (Typographical)":
			[(m,0.35146e-3),"pt","""Typographical measurement. This system was developed in England and is used in Great-Britain and the US. 1 pica equals 12 pica points."""],
		"point (didot) (Typographical)":
			[(m,0.376065e-3),"pt","""Typographical measurement. The didot system originated in France but was used in most of Europe"""],
		"cicero (Typographical)":
			[(m,12*0.376065e-3),"","""Typographical measurement. 1 cicero equals 12 didot points."""],
		"point (PostScript) (Typographical)":
			[(m,(25.4/1000)/72),"pt","""Typographical measurement. Created by Adobe. There are exactly 72 PostScript points in 1 inch."""],

		"ell (English)":
			[(m,45*(25.4/1000)),"","""A measure for cloth; -- now rarely used. It is of different lengths in different countries; the English ell being 45 inches, the Dutch or Flemish ell 27, the Scotch about 37."""],
		"ell (Dutch | Flemish)":
			[(m,27*(25.4/1000)),"","""A measure for cloth; -- now rarely used. It is of different lengths in different countries; the English ell being 45 inches, the Dutch or Flemish ell 27, the Scotch about 37."""],
		"ell (Scotch)":
			[(m,37*(25.4/1000)),"","""A measure for cloth; -- now rarely used. It is of different lengths in different countries; the English ell being 45 inches, the Dutch or Flemish ell 27, the Scotch about 37."""],
		"em":
			[(m,0.0003514598),"","""Used in typography. A quadrat, the face or top of which is a perfect square; also, the size of such a square in any given size of type, used as the unit of measurement for that type: 500 m's of pica would be a piece of matter whose length and breadth in pica m's multiplied together produce that number."""],
		"en":
			[(m,0.0001757299),"","""Used in typography. Half an em, that is, half of the unit of space in measuring printed matter."""],
		"fathom":
			[(m,6*(12*25.4/1000)),"","""6 feet. Approximately the space to which a man can extend his arms."""],
		"fathom (Greek)":
			[(m,4*18.20*(25.4/1000)),"","""4 Greek cubits."""],
		"fermi":
			[(m,1e-15),"","""a metric unit of length equal to one quadrillionth of a meter """],
		"finger breadth":
			[(m,0.875*(25.4/1000)),"","""The breadth of a finger, or the fourth part of the hand; a measure of nearly an inch."""],
		"finger length":
			[(m,4.5*(25.4/1000)),"","""The length of finger, a measure in domestic use in the United States, of about four and a half inches or one eighth of a yard."""],
		"foot":
			[(m,12*(25.4/1000)),"ft","""Equivalent to twelve inches; one third of a yard. This measure is supposed to be taken from the length of a man's foot."""],
		"foot (Assyrian)":
			[(m,2.63042),"",""""""],
		"foot (Arabian)":
			[(m,0.31919),"",""""""],
		"foot (Roman) | pes":
			[(m,0.2959608),"",""""""],
		"foot (geodetic | survey)":
			[(m,1200.0/3937),"","""A former U.S. definition of the foot as exactly 1200/3937 meter or about 30.48006096 centimeters. This was the official U.S. definition of the foot from 1866 to 1959; it makes the meter equal exactly 39.37 inches. In 1959 the survey foot was replaced by the international foot, equal to exactly 30.48 centimeters. However, the survey foot remains the basis for precise geodetic surveying in the U.S."""],
		"furlong":
			[(m,40*5.0292),"","""The eighth part of a mile; forty rods; two hundred and twenty yards. From the Old English fuhrlang, meaning "the length of a furrow"."""],
		"ghalva":
			[(m,230.42925),"","""Arabian measure"""],
		"gradus (Roman)":
			[(m,2.43*(12*25.4/1000)),"",""""""],
		"hand":
			[(m,0.1016),"","""A measure equal to a hand's breadth, -- four inches; a palm. Chiefly used in measuring the height of horses."""],
		"inch":
			[(m,(25.4/1000)),"in","""The twelfth part of a foot, commonly subdivided into halves, quarters, eights, sixteenths, etc., as among mechanics. It was also formerly divided into twelve parts, called lines, and originally into three parts, called barleycorns, its length supposed to have been determined from three grains of barley placed end to end lengthwise."""],
		"ken":
			[(m,2.11836),"","""Japanese fathom. The ken is the length of a traditional tatami mat."""],
		"league (land | statute)":
			[(m,3*1609.344),"",""" Used as a land measure. 3 statute miles."""],
		"league (nautical)":
			[(m,3*1852),"",""" Used as a marine measure. 3 nautical miles."""],
		"li":
			[(m,644.652),"","""A Chinese measure of distance, being a little more than one third of a mile."""],
		"light second":
			[(m,299792458),"","""The distance over which light can travel in one second; -- used as a unit in expressing stellar distances."""],
		"light year":
			[(m,9.460528405106E+15),"","""The distance over which light can travel in a year's time; -- used as a unit in expressing stellar distances. It is more than 63,000 times as great as the distance from the earth to the sun."""],
		"line":
			[(m,(25.4/1000)/12),"","""A measure of length; one twelfth of an inch."""],
		"link (Gunters | surveyors)":
			[(m,0.201168),"","""Part of a surveyors instrument (chain) which consists of links and is used in measuring land. One commonly in use is Gunter's chain, which consists of one hundred links, each link being 7.92" in length."""],
		"link (US | engineers)":
			[(m,12*(25.4/1000)),"","""Used by surveyors. In the U.S., where 100-foot chains are more common, the link is the same as the foot. """],
		"marathon":
			[(m,42194.988),"","""a footrace of 26 miles 385 yards"""],

		"megametre":
			[(m,1.0e6),"","""In the metric system, one million meters, or one thousand kilometers."""],
		"kilometre":
			[(m,1.0e3),"km","""Being a thousand meters. It is equal to 3,280.8 feet, or 62137 of a mile."""],
		"metre":
			[(m,1.0),"m","""Equal to 39.37 English inches, the standard of linear measure in the metric system of weights and measures. It was intended to be, and is very nearly, the ten millionth part of the distance from the equator to the north pole, as ascertained by actual measurement of an arc of a meridian."""],
		"centimetre":
			[(m,1.0e-2),"cm","""The hundredth part of a meter; a measure of length equal to rather more than thirty-nine hundredths (0.3937) of an inch."""],
		"millimetre":
			[(m,1.0e-3),"mm","""A lineal measure in the metric system, containing the thousandth part of a meter; equal to .03937 of an inch."""],
		"micrometre | micron":
			[(m,1.0e-6),u"µm","""A metric unit of length equal to one millionth of a meter. The thousandth part of one millimeter."""],
		"nanometre":
			[(m,1.0e-9),"nm","""A metric unit of length equal to one billionth of a meter."""],
		"picometre":
			[(m,1.0e-12),"","""A metric unit of length equal to one trillionth of a meter."""],
		"femtometre":
			[(m,1.0e-15),"","""A metric unit of length equal to one quadrillionth of a meter."""],

		"mil":
			[(m,(25.4/1e6)),"mil","""Equal to one thousandth of an inch; used to specify thickness (e.g., of sheets or wire)"""],
		"mile (Roman)":
			[(m,1479.804),"","""5000 Roman feet."""],
		"mile (statute)":
			[(m,1609.344),"mi","""Mile is from the Latin word for 1000 (mille). A mile conforming to statute, that is, in England and the United States, a mile of 5,280 feet, as distinguished from any other mile."""],
		"mile (nautical | geographical)":
			[(m,1852.0),"nmi","""Geographical, or Nautical mile, one sixtieth of a degree of a great circle of the earth, or about 6080.27 feet."""],
		"nail (cloth)":
			[(m,0.05715),"","""Used for measruing cloth. 1/20 ell. The length of the last two joints (including the fingernail) of the middle finger. The nail is equivalent to 1/16 yard, 1/4 span."""],
		"naval shot":
			[(m,15*6*(12*25.4/1000)),"","""Equal to 15 fathoms"""],
		"pace":
			[(m,2.5*(12*25.4/1000)),"","""The length of a step in walking or marching, reckoned from the heel of one foot to the heel of the other. Note: Ordinarily the pace is estimated at two and one half linear feet."""],
		"pace (Roman) | passus":
			[(m,5*0.2959608),"",""" The Roman pace (passus) was from the heel of one foot to the heel of the same foot when it next touched the ground, five Roman feet."""],
		"pace (quik-time marching)":
			[(m,30*(25.4/1000)),"","""The regulation marching pace in the English and United States armies is thirty inches for quick time."""],
		"pace (double-time marching)":
			[(m,36*(25.4/1000)),"","""The regulation marching pace in the English and United States armies is thirty-six inches for double time. """],
		"palm (Greek)":
			[(m,7.71313333333333e-02),"","""A lineal measure equal either to the breadth of the hand or to its length from the wrist to the ends of the fingers; a hand; -- used in measuring a horse's height. In Greece, the palm was reckoned at three inches. At the present day, this measure varies in the most arbitrary manner, being different in each country, and occasionally varying in the same. One third of a Greek span,"""],
		"palm (Roman lesser)":
			[(m,2.91*(25.4/1000)),"","""A lineal measure equal either to the breadth of the hand or to its length from the wrist to the ends of the fingers; a hand; -- used in measuring a horse's height. One of two Roman measures of the palm, the lesser palm is 2.91 inches. At the present day, this measure varies in the most arbitrary manner, being different in each country, and occasionally varying in the same."""],
		"palm (Roman greater)":
			[(m,8.73*(25.4/1000)),"","""A lineal measure equal either to the breadth of the hand or to its length from the wrist to the ends of the fingers; a hand; -- used in measuring a horse's height. One of two Roman measures of the palm, the greater palm is 8.73 inches. At the present day, this measure varies in the most arbitrary manner, being different in each country, and occasionally varying in the same."""],
		"parasang":
			[(m,3.5*1609.344),"","""A Persian measure of length, which, according to Herodotus and Xenophon, was thirty stadia, or somewhat more than three and a half miles. The measure varied in different times and places, and, as now used, is estimated at three and a half English miles."""],
		"parsec":
			[(m,3.08567758767931e16),"","""A unit of astronomical length based on the distance from  Earth at which stellar parallax is 1 second of arc; equivalent to 3.262 light years"""],
		"rod | pole | perch":
			[(m,5.0292),"","""Containing sixteen and a half feet; -- called also perch, and pole."""],
		"ri":
			[(m,3926.79936),"","""Japanese league."""],
		"rope":
			[(m,20*12*(25.4/1000)),"","""20 feet"""],
		"sadzhens | sagene | sazhen":
			[(m,2.10312),"","""Russian. Equal to about 6.5 English feet."""],
		"shaku":
			[(m,0.303022),"",""" A Japanese foot. Note: shaku also means area and volume."""],
		"skein":
			[(m,120*3*12*(25.4/1000)),"","""120 yards. A skein of cotton yarn is formed by eighty turns of the thread round a fifty-four inch reel."""],
		"soccer field":
			[(m,100*3*12*(25.4/1000)),"","""100 yards"""],
		"solar diameter":
			[(m,1391900000),"","""Diameter of our sun."""],
		"span (Greek)":
			[(m,0.231394),"","""To measure by the span of the hand with the fingers extended, or with the fingers encompassing the object; as, to span a space or distance; to span a cylinder. One half of a Greek cubit."""],
		"span (cloth)":
			[(m,9*(25.4/1000)),"","""9 inches"""],
		"spindle (cotten yarn)":
			[(m,15120*3*12*(25.4/1000)),"","""A cotten yarn measure containing 15,120 yards."""],
		"spindle (linen yarn)":
			[(m,14400*3*12*(25.4/1000)),"","""A linen yarn measure containing 14,400 yards."""],
		"stadia (Greek) | stadion":
			[(m,185.1152),"","""A Greek measure of length, being the chief one used for itinerary distances, also adopted by the Romans for nautical and astronomical measurements. It was equal to 600 Greek or 625 Roman feet, or 125 Roman paces, or to 606 feet 9 inches English. This was also called the Olympic stadium, as being the exact length of the foot-race course at Olympia."""],
		"stadium (Persian)":
			[(m,214.57962),"",""""""],
		"stadium (Roman)":
			[(m,184.7088),"","""A Greek measure of length, being the chief one used for itinerary distances, also adopted by the Romans for nautical and astronomical measurements. It was equal to 600 Greek or 625 Roman feet, or 125 Roman paces, or to 606 feet 9 inches English. This was also called the Olympic stadium, as being the exact length of the foot-race course at Olympia."""],
		"sun (Japanese)":
			[(m,0.0303022),"","""Japanese measurement."""],
		"toise (French)":
			[(m,6.395*12*(25.4/1000)),"","""French fathom."""],
		"vara (Spanish)":
			[(m,33.385*(25.4/1000)),"","""A Spanish measure of length equal to about one yard. 33.385 inches. """],
		"vara (Mexican)":
			[(m,0.837946),"","""A Mexican measure of length equal to about one yard. 32.99 inches. """],
		"verst | werst":
			[(m,3500*12*(25.4/1000)),"","""A Russian measure of length containing 3,500 English feet."""],
		"yard":
			[(m,3*12*(25.4/1000)),"yd","""Equaling three feet, or thirty-six inches, being the standard of English and American measure."""],
	},
	"Luminace":{".base_unit":"candela per square metre",
		"candela per square centimetre":
			[(m,1.0e4),u"cd/cm\xb2",""""""],
		"kilocandela per square metre":
			[(m,1.0e3),u"kcd/m\xb2",""""""],
		"stilb":
			[(m,1.0e4),"sb","""From a Greek word stilbein meaning "to glitter". Equal to one candela per square centimeter or 104 nits."""],
		"lambert":
			[(m,3183.09886183791),"L","""Named after the German physicist Johann Heinrich Lambert (1728-1777).Equal to the brightness of a perfectly diffusing surface that emits or reflects one lumen per square centimeter"""],
		"candela per square inch":
			[(m,1550.0031000062),u"cd/in\xb2",""""""],
		"candela per square foot":
			[(m,10.7639104167097),u"cd/ft\xb2",""""""],
		"foot lambert":
			[(m,3.42625909963539),"fL",""""""],
		"millilambert":
			[(m,3.18309886183791),"mL",""""""],
		"candela per square metre":
			[(m,1.0),u"cd/m\xb2",""""""],
		"lumen per steradian square metre":
			[(m,1.0),"",""""""],
		"nit":
			[(m,1.0),"","""Named from the Latin niteo, to shine."""],
		"apostilb":
			[(m,3.18309886183791/10),"asb","""Named from the Greek stilbein, to "glitter" or "shine," with the prefix apo-, "away from." """],
	},
	"Illumination":{".base_unit":"lux",
		"phot":
			[(m,1.0e4),"ph","""a unit of illumination equal to 1 lumen per square centimeter; 10,000 phots equal 1 lux"""],
		"lumen per square centimetre":
			[(m,1.0e4),u"lm/cm\xb2",""""""],
		"foot candle":
			[(m,10.7639104167097),"fc",""""""],
		"lumen per square foot":
			[(m,10.7639104167097),u"lm/ft\xb2",""""""],
		"lux":
			[(m,1.0),"lx","""Equal to the illumination produced by luminous flux of one lumen falling perpendicularly on a surface one meter square. Also called meter-candle."""],
		"lumen per sqaure metre":
			[(m,1.0),u"lm/m\xb2",""""""],
		"candela steradian per square metre":
			[(m,1.0),"",""""""],
	},
	"Luminous Intensity (point sources)":{".base_unit":"candela",
		"candela":
			[(m,1.0),"cd","""The basic unit of luminous intensity adopted under the System International d'Unites; equal to 1/60 of the luminous intensity per square centimeter of a blackbody radiating at the temperature of 2,046 degrees Kelvin syn: candle, cd, standard candle."""],
		"lumen per steradian":
			[(m,1.0),"lm/sr",""""""],
		"hefner candle":
			[(m,0.92),"HC","""Named after F. von Hefner-Altenack (1845-1904)"""],
	},
	"Luminous Flux":{".base_unit":"lumen",
		"lumen":
			[(m,1.0),"lm","""Equal to the luminous flux emitted in a unit solid angle by a point source of one candle intensity"""],
		"candela steradian":
			[(m,1.0),u"cd·sr",""""""],
	},
	"Magnetomotive force":{".base_unit":"ampere",
		"ampere":
			[(m,1.0),"A",""""""],
		"ampere-turn":
			[(m,1.0),"At","""A unit of magnetomotive force equal to the magnetomotive force produced by the passage of 1 ampere through 1 complete turn of a coil."""],
		"gilbert":
			[(m,0.795775),"Gb","""Named after the English scientist William Gilbert (1544-1603)"""],
		"kiloampere":
			[(m,1e3),"kA",""""""],
		"oersted-centimetre":
			[(m,0.795775),"","""The same value as the gilbert."""],
	},
	"Magnetic Flux":{".base_unit":"weber",
		"weber":
			[(m,1.0),"Wb","""From the name of Professor Weber, a German electrician. One volt second."""],
		"milliweber":
			[(m,1.0e-3),"mWb",""""""],
		"microweber":
			[(m,1.0e-6),u"µWb",""""""],
		"unit pole (electro magnetic unit)":
			[(m,4e-8*pi),"",""""""],
		"maxwell":
			[(m,1.0e-8),"Mx","""Named after the Scottish physicist James Clerk Maxwell (1831-1879). A cgs unit of magnetic flux equal to the flux perpendicular to an area of 1 square centimeter in a magnetic field of 1 gauss."""],
		"line of force":
			[(m,1.0e-8),"","""Same as Maxwell"""],
	},
	"Magnetic Field strength":{".base_unit":"ampere per metre",
		"oersted":
			[(m,1.0e3/(4*pi)),"Oe","""Named after the Danish physicist and chemist Hans Christian Oersted (1777-1851). The C.G.S. unit of magnetic reluctance or resistance, equal to the reluctance of a centimeter cube of air (or vacuum) between parallel faces. Also, a reluctance in which unit magnetomotive force sets up unit flux."""],
		"ampere per metre":
			[(m,1.0),"A/m",""""""],
		"ampere-turn per metre":
			[(m,1.0),"A/m",""""""],
		"kiloampere per metre":
			[(m,1.0e3),"kA/m",""""""],
		"ampere-turn per inch":
			[(m,39.3700787401575),"At/in",""""""],
		"newton per weber":
			[(m,1.0),"N/Wb","""Same as ampere per metre"""],
	},
	"Magnetic Flux Density":{".base_unit":"tesla",
		"tesla":
			[(m,1.0),"T","""Named after the Croatian born inventer Nikola Tesla (1856-1943). A unit of magnetic flux density equal to one weber per square meter."""],
		"millitesla":
			[(m,1.0e-3),"mT",""""""],
		"microtesla":
			[(m,1.0e-6),u"µT",""""""],
		"nanotesla":
			[(m,1.0e-9),"T",""""""],
		"weber per square metre":
			[(m,1.0),u"Wb/m\xb2",""""""],
		"kilogauss":
			[(m,1.0e-1),"kG",""""""],
		"gauss":
			[(m,1.0e-4),"G","""Named after German mathematician and astronomer Karl Friedrich Gauss (1777-1855). The C.G.S. unit of density of magnetic field, equal to a field of one line of force per square centimeter, being thus adopted as an international unit at Paris in 1900; sometimes used as a unit of intensity of magnetic field. It was previously suggested as a unit of magnetomotive force."""],
		"maxwell per square centimetre":
			[(m,1.0e-4),u"Mx/cm\xb2",""""""],
		"maxwell per square inch":
			[(m,1.5500031000062E-05),u"Mx/in\xb2",""""""],
		"line per square inch":
			[(m,1.5500031000062E-05),"","""Same as Maxwell per square inch."""],
		"gamma":
			[(m,1.0e-9),"","""one nanotesla."""],
	},
	"Mass":{".base_unit":"kilogram",
		"talanton":
			[(m,149.9985),"","""Greek measure."""],
		"oka (Egyptian)":
			[(m,1.248),"",""""""],
		"oka (Greek)":
			[(m,1.2799),"",""""""],
		"okia":
			[(m,0.03744027),"","""Egyptian measure."""],
		"kat":
			[(m,0.009331),"","""Egyptian measure."""],
		"kerat":
			[(m,0.00019504),"","""Egyptian measure."""],
		"pala":
			[(m,0.047173),"","""Indian measure."""],
		"kona":
			[(m,0.00699828),"","""Indian measure."""],
		"mast":
			[(m,.9331),"","""British"""],
		"kilogram":
			[(m,1.0),"kg","""A measure of weight, being a thousand grams, equal to 2.2046 pounds avoirdupois (15,432.34 grains). It is equal to the weight of a cubic decimeter of distilled water at the temperature of maximum density, or 39deg Fahrenheit."""],
		"megagram":
			[(m,1.0e3),"Mg",""""""],
		"gram":
			[(m,1.0e-3),"g","""The unit of weight in the metric system. It was intended to be exactly, and is very nearly, equivalent to the weight in a vacuum of one cubic centimeter of pure water at its maximum density. It is equal to 15.432 grains."""],
		"milligram":
			[(m,1.0e-6),"mg","""A measure of weight, in the metric system, being the thousandth part of a gram, equal to the weight of a cubic millimeter of water, or .01543 of a grain avoirdupois."""],
		"microgram":
			[(m,1.0e-9),u"µg","""A measure of weight, in the metric system, being the millionth part of a gram."""],
		"ton (UK | long | gross | deadweight)":
			[(m,2240 * 0.45359237),"","""A British unit of weight equivalent to 2240 pounds"""],
		"ton (US | short)":
			[(m,2000 * 0.45359237),"tn","""A US unit of weight equivalent to 2000 pounds"""],
		"tonne | metric ton":
			[(m,1.0e3),"t","""A metric ton, One Megagram. 1000 kg"""],
		"pound (avoirdupois)":
			[(m,0.45359237),"lb","""The pound in general use in the United States and in England is the pound avoirdupois, which is divided into sixteen ounces, and contains 7,000 grains. The pound troy is divided into twelve ounces, and contains 5,760 grains. 144 pounds avoirdupois are equal to 175 pounds troy weight"""],
		"pound (troy)":
			[(m,0.3732417216),"",""""""],
		"hundredweight (short | net | US)":
			[(m,100*0.45359237),"cwt","""A denomination of weight of 100 pounds. In most of the United States, both in practice and by law, it is 100 pounds avoirdupois."""],
		"hundredweight (long | English)":
			[(m,112*0.45359237),"cwt","""A denomination of weight of 112 pounds"""],
		"slug":
			[(m,14.5939029372064),"","""One slug is the mass accelerated at 1 foot per second per second by a force of 1 pound."""],
		"ounce (troy)":
			[(m,0.0311034768),"ozt","""A unit of apothecary weight equal to 480 grains."""],
		"ounce (avoirdupois)":
			[(m,0.45359237/16),"oz","""A weight, the sixteenth part of a pound avoirdupois"""],
		"dram (avoirdupois)":
			[(m,(0.45359237/16)/16),"","""A weight; in Avoirdupois weight, one sixteenth part of an ounce."""],
		"dram (troy | apothecary)":
			[(m,(0.0311034768)/8),"","""A weight; in Apothecaries' weight, one eighth part of an ounce, or sixty grains."""],
		"scruple (troy)":
			[(m,20*(0.45359237/5760)),"","""A weight of twenty grains; the third part of a troy dram."""],
		"carat":
			[(m,0.0002),"","""The weight by which precious stones and pearls are weighed."""],
		"grain":
			[(m,0.00006479891),"gr","""The unit of the English system of weights; -- so called because considered equal to the average of grains taken from the middle of the ears of wheat. 7,000 grains constitute the pound avoirdupois and 5,760 grains constitute the pound troy."""],
		"amu (atomic mass unit) | dalton":
			[(m,1.66044E-27),"amu","""Unit of mass for expressing masses of atoms or molecules."""],
		"catty | caddy | chin":
			[(m,(4.0/3)*0.45359237),"","""An Chinese or East Indian Weight of 1 1/3 pounds."""],
		"cental":
			[(m,100*0.45359237),"","""British for 100 pounds. Also called hundredweight in the US."""],
		"cotton bale (US)":
			[(m,500*0.45359237),"","""US measurement. 500 pounds"""],
		"cotton bale (Egypt)":
			[(m,750*0.45359237),"","""Egyptian measurement. 750 pounds"""],
		"crith":
			[(m,0.0000906),"",u"""From the Greek word for barleycorn. The weight of a liter of hydrogen at 0.01\xb0 centigrade and with a and pressure of 1 atmosphere."""],
		"denarius":
			[(m,60*(0.45359237/5760)),"","""Roman weight measuring 60 troy grains"""],
		"dinar":
			[(m,4.2e-3),"","""Arabian weight measuring 4.2 gram"""],
		"doppelzentner":
			[(m,100.0),"","""Metric hundredweight = 100 kg"""],
		"drachma (Greek)":
			[(m,0.0042923),"","""The weight of an old Greek drachma coin"""],
		"drachma (Dutch)":
			[(m,3.906e-3),"","""The weight of an old Dutch drachma coin"""],
		"earth mass":
			[(m,5.983E+24),"","""Mass of the Earth."""],
		"electron rest mass":
			[(m,9.109558E-31),"","""The mass of an electron as measured when the it is at rest relative to an observer, an inherent property of the body."""],
		"funt":
			[(m,0.408233133),"","""Russian, 0.9 pounds"""],
		"obolos (Ancient Greece)":
			[(m,0.0042923/6),"","""Ancient Greek weight of an obol coin, 1/6 drachma"""],
		"obolos (Modern Greece)":
			[(m,1.0e-4),"","""Modern Greek name for decigram."""],
		"hyl":
			[(m,0.00980665),"","""From an ancient Greek word for matter. One hyl is the mass that is accelerated at one meter per second per second by one kilogram of force. 0.00980665 kg."""],

		"pennyweight (troy)":
			[(m,24*0.00006479891),"","""A troy weight containing twenty-four grains, or the twentieth part of a troy ounce; as, a pennyweight of gold or of arsenic. It was anciently the weight of a silver penny."""],
		"bekah (Biblical)":
			[(m,5*24*0.00006479891),"","""1/2 shekel, 5 pennyweight."""],
		"shekel (Israeli)":
			[(m,10*24*0.00006479891),"","""The sixtieth part of a mina. Ten pennyweight. An ancient weight and coin used by the Jews and by other nations of the same stock."""],
		"mina (Greek) | minah (Biblical)":
			[(m,60*10*24*0.00006479891),"","""The weight of the ancient Greek mina coin. 60 shekels"""],
		"talent (Roman)":
			[(m,125*0.3265865064),"","""125 Roman libra."""],
		"talent (silver)":
			[(m,3000*10*24*0.00006479891),"","""3,000 shekels or 125 lbs."""],
		"talent (gold)":
			[(m,6000*10*24*0.00006479891),"","""2 silver talents, 250 lbs."""],
		"talent (Hebrew)":
			[(m,26.332),"",""""""],

		"kin":
			[(m,0.60010270551),"","""Japanese kin,  1.323 pound."""],
		"kwan":
			[(m,3.7512088999),"","""Japanese kwan. 8.27 pound"""],
		"liang | tael":
			[(m,((4.0/3)*0.45359237)/16),"","""Chinese. 1/16 catty"""],
		"libra | librae | as | pondus":
			[(m,0.3265865064),"","""Roman originator of the English pound (lb). 12 uncia"""],
		"libra (Mexican)":
			[(m,0.46039625555),"",""""""],
		"libra (Spanish)":
			[(m,0.45994266318),"",""""""],
		"livre (French)":
			[(m,0.49),"",""""""],
		"quarter (long)":
			[(m,(112*0.45359237)/4),"","""The fourth part of a long hundredweight. 28 pounds"""],
		"quarter (short)":
			[(m,(100*0.45359237)/4),"","""The fourth part of a short hundredweight. 25 pounds"""],
		"mite (English)":
			[(m,0.0000032399455),"","""A small weight; one twentieth of a grain."""],
		"neutron rest mass":
			[(m,1.67492E-27),"","""The mass of a neutron as measured when the it is at rest relative to an observer, an inherent property of the body."""],
		"proton rest mass":
			[(m,1.672614E-27),"","""The mass of a proton as measured when the it is at rest relative to an observer, an inherent property of the body."""],
		"pfund (German)":
			[(m,0.5),"","""German pound. 500 grams. 16 unze."""],
		"unze (German)":
			[(m,0.5/16),"","""German ounce. 1/16 pfund."""],
		"lot (German)":
			[(m,0.5/32),"","""One half unze."""],
		"picul | tan | pecul | pecal (Chinese | Summatra))":
			[(m,133.5*0.45359237),"","""100 catty. 133 1/2 pounds"""],
		"picul (Japan)":
			[(m,(400.0/3)*0.45359237),"","""133 1/3 pounds"""],
		"picul (Borneo)":
			[(m,(1085.0/8)*0.45359237),"","""135 5/8 pounds"""],
		"pood (Russian)":
			[(m,16.3792204807),"","""A Russian weight, equal to forty Russian pounds or about thirty-six English pounds avoirdupois."""],
		"quintal":
			[(m,100.0),"","""A metric measure of weight, being 100,000 grams, or 100 kilograms"""],
		"quintal (short UK)":
			[(m,100*0.45359237),"","""100 pounds"""],
		"quintal (long UK)":
			[(m,112*0.45359237),"","""112 pounds"""],
		"quintal (Spanish)":
			[(m,45.994266318),"","""Spanish hundredweight"""],
		"scrupulum (Roman)":
			[(m,0.0011359248923),"",""""""],
		"stone (legal)":
			[(m,14*0.45359237),"","""14 pounds"""],
		"stone (butchers)":
			[(m,8*0.45359237),"","""Meat or fish. 8 pounds"""],
		"stone (cheese)":
			[(m,16*0.45359237),"","""16 pounds."""],
		"stone (hemp)":
			[(m,32*0.45359237),"","""32 pounds"""],
		"stone (glass)":
			[(m,5*0.45359237),"","""5 pounds"""],
		"uncia":
			[(m,0.3265865064/12),"","""Ancient Roman. A twelfth part, as of the Roman "as" or "libra"; an ounce. 420 grains"""],
	},
	"Musical notes":{".base_unit":"breve",
		"whole note | semibreve":
			[(m,0.5),"","""A note of half the time or duration of the breve; -- now usually called a whole note."""],
		"breve":
			[(m,1.0),"","""A note or character of time, equivalent to two semibreves or four minims. When dotted, it is equal to three semibreves."""],
		"minim":
			[(m,0.25),"","""A time note, a half note, equal to half a semibreve, or two quarter notes or crotchets."""],
		"crotchet":
			[(m,0.125),"","""A time note, with a stem, having one fourth the value of a semibreve, one half that of a minim, and twice that of a quaver; a quarter note."""],
		"quaver":
			[(m,0.0625),"","""An eighth note."""],
	},
	"Power":{".base_unit":"watt",
		"megawatt":
			[(m,1.0e6),"MW",""""""],
		"kilowatt":
			[(m,1.0e3),"kW",""""""],
		"watt":
			[(m,1.0),"W","""Named after the Scottish engineer and inventor James Watt (1736-1819). A unit of power or activity equal to 10^7 C.G.S. units of power, or to work done at the rate of one joule a second."""],
		"milliwatt":
			[(m,1.0e-3),"mW",""""""],
		"microwatt":
			[(m,1.0e-6),"uW",""""""],

		"horsepower (boiler)":
			[(m,9.81e3),"","""A unit of power representing the power exerted by a horse in pulling."""],
		"horsepower":
			[(m,746.0),"hp",""""""],
		"ton of refrigeration":
			[(m,10.0/3*1055.05585262),"",""""""],
		"btu per second":
			[(m,1055.05585262),"Btu/s",""""""],
		"calorie per second":
			[(m,4.1868),"cal/s",""""""],
		"foot pound force per second":
			[(m,1.356),"lbf/s",""""""],
		"joule per second":
			[(m,1.0),"J/s",""""""],
		"newton metre per second":
			[(m,1.0),u"N·m/s",""""""],
		"btu per hour":
			[(m,0.293071070172222),"Btu/h",""""""],
		"foot pound force per minute":
			[(m,0.0226),u"ft·lbf/min",""""""],
		"erg per second":
			[(m,1.0e-7),"erg/s",""""""],
		"dyne centimetre per second":
			[(m,1.0e-7),"",""""""],
		"lusec":
			[(m,0.000133322368421),"","""Used to measure the leakage of vacuum pumps. A flow of one liter per second at a pressure of one micrometer of mercury."""],
	},
	"Pressure and Stress":{".base_unit":"pascal",
		"pascal":
			[(m,1.0),"Pa","""Named after the French philosopher and mathematician Blaise Pascal (1623 - 1662). Equal to one newton per square meter."""],
		"kilopascal":
			[(m,1.0e3),"kPa",""""""],
		"megapascal":
			[(m,1.0e6),"MPa",""""""],
		"atmosphere":
			[(m,101325),"atm",""""""],
		"bar":
			[(m,1.0e5),"bar","""From the Greek word baros."""],
		"pound force per square inch":
			[(m,6894.75729316836),"psi",""""""],
		"inch of mercury (60degF)":
			[(m,3337.0),"inHg",""""""],
		"foot of water (60degF)":
			[(m,12*249.08891),"",""""""],
		"inch of water (60degF)":
			[(m,249.08891),"inH20",""""""],
		"torr":
			[(m,133.322368421),"","""Named after Italian physicist and mathematician Evangelista Torricelli, (1608-1647). A unit of pressure equal to 0.001316 atmosphere."""],
		"millimetre of mercury (0degC)":
			[(m,133.322368421),"mmHg",""""""],
		"millibar":
			[(m,1.0e2),"mbar",""""""],
		"pound force per square foot":
			[(m,47.8802589803358),u"lbf/ft\xb2",""""""],
		"kilogram force per square metre":
			[(m,9.80665),u"kgf/m\xb2",""""""],
		"newton per square metre":
			[(m,1.0),u"N/m\xb2",""""""],
		"microbar":
			[(m,1.0e-1),u"µbar",""""""],
		"dyne per square centimetre":
			[(m,1.0e-1),"",""""""],
		"barie | barye":
			[(m,0.1),"",""""""],
		"pieze":
			[(m,1.0e3),"","""From the Greek word piezein (to press). The pieze is a pressure of one sthene per square meter. 1000 newtons per square meter."""],
	},
	"Prefixes and Suffixes":{".base_unit":"one | mono",
		"centillion (US)":
			[(m,1.0e303),"","""10^303. Note: British word centillion means 10^600 (too big for this program to represent as floating point)."""],
		"novemtrigintillion (US) | vigintillion (UK)":
			[(m,1.0e120),"","""10^120. """],
		"octotrigintillion (US)":
			[(m,1.0e117),"","""10^117. """],
		"septentrigintillion (US) | novemdecillion (UK)":
			[(m,1.0e114),"","""10^114. """],
		"sextrigintillion (US)":
			[(m,1.0e111),"","""10^111. """],
		"quintrigintillion (US) | octodecillion (UK)":
			[(m,1.0e108),"","""10^108. """],
		"quattuortrigintillion (US)":
			[(m,1.0e105),"","""10^105. """],
		"tretrigintillion (US) | septendecillion (UK)":
			[(m,1.0e102),"","""10^102. """],
		"googol":
			[(m,1.0e100),"","""10^100 Ten dotrigintillion (US). Note: a googolplex is 10^10^10^2."""],
		"dotrigintillion (US)":
			[(m,1.0e99),"","""10^99. """],
		"untrigintillion (US) | sexdecillion (UK)":
			[(m,1.0e96),"","""10^96. """],
		"trigintillion (US)":
			[(m,1.0e93),"","""10^93. """],
		"novemvigintillion (US) | quindecillion (UK)":
			[(m,1.0e90),"","""10^90. """],
		"octovigintillion (US)":
			[(m,1.0e87),"","""10^87. """],
		"septenvigintillion (US) | quattuordecillion (UK)":
			[(m,1.0e84),"","""10^84. """],
		"sexvigintillion (US)":
			[(m,1.0e81),"","""10^81. """],
		"quinvigintillion (US) | tredecillion (UK)":
			[(m,1.0e78),"","""10^78. """],
		"quattuorvigintillion (US)":
			[(m,1.0e75),"","""10^75. """],
		"trevigintillion (US) | duodecillion (UK)":
			[(m,1.0e72),"","""10^72. """],
		"dovigintillion (US)":
			[(m,1.0e69),"","""10^69. """],
		"unvigintillion (US) | undecillion (UK":
			[(m,1.0e66),"","""10^66. """],
		"vigintillion (US)":
			[(m,1.0e63),"","""10^63. """],
		"novemdecillion (US) | decillion (UK)":
			[(m,1.0e60),"","""10^60. """],
		"octodecillion (US)":
			[(m,1.0e57),"","""10^57. """],
		"septendecillion (US) | nonillion (UK)":
			[(m,1.0e54),"","""10^54. """],
		"sexdecillion (US)":
			[(m,1.0e51),"","""10^51. """],
		"quindecillion (US) | octillion (UK)":
			[(m,1.0e48),"","""10^48. """],
		"quattuordecillion (US)":
			[(m,1.0e45),"","""10^45. """],
		"tredecillion (US) | septillion (UK)":
			[(m,1.0e42),"","""10^42. """],
		"duodecillion (US) | chici":
			[(m,1.0e39),"Ch","""10^39. chici coined by Morgan Burke after Marx brother Chico Marx."""],
		"undecillion (US) | sextillion (UK) | gummi":
			[(m,1.0e36),"Gm","""10^36. gummi coined by Morgan Burke after Marx brother Gummo Marx."""],
		"una | decillion (US) | zeppi":
			[(m,1.0e33),"Zp","""10^33. zeppi coined by Morgan Burke after Marx brother Zeppo Marx."""],
		"dea | nonillion (US) | quintillion (UK) | grouchi":
			[(m,1.0e30),"Gc","""10^30. grouchi coined by Morgan Burke after Marx brother Groucho Marx."""],
		"nea | octillion (US) | quadrilliard (UK) | harpi":
			[(m,1.0e27),"Hr","""10^27. harpi coined by Morgan Burke after Marx brother Harpo Marx."""],
		"yotta | septillion (US) | quadrillion (UK)":
			[(m,1.0e24),"Y","""10^24. Origin Latin penultimate letter y "iota"."""],
		"zetta | sextillion (US) | trilliard (UK)":
			[(m,1.0e21),"Z","""10^21. Origin Latin ultimate letter z "zeta"."""],
		"exa | quintillion (US) | trillion (UK)":
			[(m,1.0e18),"E","""10^18. Origin Greek for outside "exo" / Greek six hexa" as in 1000^6."""],
		"peta | quadrillion (US) | billiard (UK)":
			[(m,1.0e15),"P","""10^15. Origin Greek for spread "petalos" / Greek five "penta" as in 1000^5. Note: British use the words "1000 billion"."""],
		"tera | trillion (US) | billion (UK)":
			[(m,1.0e12),"T","""10^12. Origin Greek for monster "teras" / Greek four "tetra" as in 1000^4. Note: British use the word billion."""],
		"giga":
			[(m,1.0e9),"G","""10^9. Origin Greek for giant "gigas"."""],
		"billion (US) | milliard (UK)":
			[(m,1.0e9),"","""10^9."""],
		"mega | million":
			[(m,1.0e6),"M","""10^6. One million times. Origin Greek for large, great "megas"."""],
		"hectokilo":
			[(m,1.0e5),"hk","""10^5. 100 thousand times"""],
		"myra | myria":
			[(m,1.0e4),"ma","""Ten thousand times, 10^4"""],
		"kilo | thousand":
			[(m,1.0e3),"k","""One thousand times, 10^3.Origin Greek for thousand "chylioi"."""],
		"gross":
			[(m,144.0),"","""Twelve dozen."""],
		"hecto | hundred":
			[(m,1.0e2),"","""One hundred times, 10^2.Origin Greek for hundred "hekaton"."""],
		"vic":
			[(m,20.0),"","""Twenty times."""],
		"duodec":
			[(m,12.0),"","""Twelve times."""],
		"dozen (bakers | long)":
			[(m,13.0),"","""Thirteen items. The cardinal number that is the sum of twelve and one syn:  thirteen, 13, XIII, long dozen."""],
		"dozen":
			[(m,12.0),"","""Twelve items. Usually used to measure the quantity of eggs in a carton."""],
		"undec":
			[(m,11.0),"","""Eleven times."""],
		"deca | deka | ten":
			[(m,1.0e1),"",""" 10^1. Ten times. Origin Greek for ten "deka"."""],
		"sex | hexad":
			[(m,6.0),"","""Six times."""],
		"quin":
			[(m,5.0),"","""Five times."""],
		"quadr | quadri | quadruple":
			[(m,4.0),"","""Four times."""],
		"thrice | tri | triple":
			[(m,3.0),"","""Three times."""],
		"bi | double":
			[(m,2.0),"","""Two times."""],
		"sesqui | sesqu":
			[(m,1.5),"","""One and one half times."""],
		"one | mono":
			[(m,1.0),"","""Single unit value."""],
		"quarter":
			[(m,0.25),"","""One fourth."""],
		"demi | semi | half":
			[(m,0.5),"","""One half."""],
		"eigth":
			[(m,0.125),"","""One eigth."""],
		"deci":
			[(m,1.0e-1),"d","""10^-1. Origin Latin tenth "decimus"."""],
		"centi":
			[(m,1.0e-2),"c",'10^-2. Origin Latin hundred, hundredth "centum".'],
		"percent":
			[(m,1.0e-2),"%","""10^-2. A proportion multiplied by 100"""],
		"milli":
			[(m,1.0e-3),"m","""10^-3. A prefix denoting a thousandth part of; as, millimeter, milligram, milliampere.Origin Latin thousand "mille"."""],
		"decimilli":
			[(m,1.0e-4),"dm","""10^-4"""],
		"centimilli":
			[(m,1.0e-5),"cm","""10^-5. """],
		"micro":
			[(m,1.0e-6),u"µ","""10^-6. A millionth part of; as, microfarad, microohm, micrometer.Origin Latin small "mikros"."""],
		"parts per million | ppm":
			[(m,1.0e-6),"ppm","""10^-6. Parts per million usually used in measuring chemical concentrations."""],
		"nano":
			[(m,1.0e-9),"n","""10^-9. Origin Greek dwarf "nanos"."""],
		"pico":
			[(m,1.0e-12),"p","""10^-12. Origin Italian tiny "piccolo"."""],
		"femto":
			[(m,1.0e-15),"f","""10^-15. Origin Old Norse fifteen "femten" as in 10^-15."""],
		"atto":
			[(m,1.0e-18),"a","""10^-18. Origin Old Norse eighteen "atten" as in 10^-18."""],
		"zepto | ento":
			[(m,1.0e-21),"z","""10^-21. zepto origin Latin ultimate letter z "zeta"."""],
		"yocto | fito":
			[(m,1.0e-24),"y","""10^-24. yocto origin Latin penultimate letter y "iota"."""],
		"syto | harpo":
			[(m,1.0e-27),"hr","""10^-27. harpo coined by Morgan Burke after Marx brother Harpo Marx."""],
		"tredo | groucho":
			[(m,1.0e-30),"gc","""10^-30. groucho coined by Morgan Burke after Marx brother Groucho Marx."""],
		"revo | zeppo":
			[(m,1.0e-33),"zp","""10^-33. zeppo coined by Morgan Burke after Marx brother Zeppo Marx."""],
		"gummo":
			[(m,1.0e-36),"gm","""10^-36. Coined by Morgan Burke after Marx brother Gummo Marx."""],
		"chico":
			[(m,1.0e-39),"ch","""10^-39. Coined by Morgan Burke after Marx brother Chico Marx."""],
	},
	#There does not seem to be a "standard" for shoe sizes so some are left out for now until a decent reference can be found.
	"Shoe Size":{".base_unit":"centimetre",
		"centimetre":
			[(m,1.0),"cm","""The hundredth part of a meter; a measure of length equal to rather more than thirty-nine hundredths (0.3937) of an inch."""],
		"inch":
			[(m,(2.54)),"in","""The twelfth part of a foot, commonly subdivided into halves, quarters, eights, sixteenths, etc., as among mechanics. It was also formerly divided into twelve parts, called lines, and originally into three parts, called barleycorns, its length supposed to have been determined from three grains of barley placed end to end lengthwise."""],
		#"European":
		#	[(slo,((35,47),(22.5,30.5))),"","""Used by Birkenstock"""],
		"Mens (US)":
			[(slo,((6.0,13.0),((2.54*(9+1.0/3)),(2.54*(11+2.0/3))))),"","""Starting at 9 1/3" for size 6 and moving up by 1/6" for each half size to 11 2/3" for size 13. Beware that some manufacturers use different measurement techniques."""],
		"Womens (US)":
			[(gof,(2.54*((2.0+2.0/6)/7.0),2.54*(8.5-(5.0*((2.0+2.0/6)/7.0))))),"","""Starting at 8 1/2" for size 5 and moving up by 1/6" for each half size to 10 5/6" for size 12. Beware that some manufacturers use different measurement techniques."""],
		"Childrens (US)":
			[(dso,((5.5,13.5),((2.54*(4.0+5.0/6)),(2.54*7.5)),(1.0,5.0),(2.54*(7.0+2.0/3),2.54*9.0))),"","""Starting at 4 5/6" for size 5 1/2 up to 7 1/3" for size 13 then 7 2/3" for size 1 and going up to 9" for size 5."""],
		"Mens (UK)":
			[(slo,((5.0,12.0),((2.54*(9+1.0/3)),(2.54*(11+2.0/3))))),"","""Starting at 9 1/3" for size 5 and moving up by 1/6" for each half size to 11 2/3" for size 12. Beware that some manufacturers use different measurement techniques."""],
		"Womens (UK)":
			[(gof,(2.54*((2.0+2.0/6)/7.0),2.54*(8.5-(3.0*((2.0+2.0/6)/7.0))))),"","""Starting at 8 1/2" for size 3 and moving up by 1/6" for each half size to 10 5/6" for size 10. Beware that some manufacturers use different measurement techniques."""],
		#"Asian":
		#	[(slo,((23.5,31.5),(25.0,30.5))),"",""""""],
	},
	"Speed | Velocity":{".base_unit":"metre per second",
		"metre per second":
			[(m,1.0),"m/s",""""""],
		"speed of light | warp":
			[(m,299792458.0),"c","""The speed at which light travels in a vacuum; about 300,000 km per second; a universal constant."""],
		"miles per second":
			[(m,1609.344),"mi/s",""""""],
		"kilometre per second":
			[(m,1.0e3),"km/s",""""""],
		"millimetre per second":
			[(m,1.0e-3),"mm/s",""""""],
		"knot":
			[(m,0.514444444444444),"","""Nautical measurement for speed as one nautical mile per hour. The number of knots which run off from the reel in half a minute, therefore, shows the number of miles the vessel sails in an hour."""],
		"miles per hour":
			[(m,0.44704),"mi/h",""""""],
		"foot per second":
			[(m,0.3048),"ft/s",""""""],
		"foot per minute":
			[(m,0.00508),"ft/min",""""""],
		"kilometre per hour":
			[(m,0.277777777777778),"km/h",""""""],
		"mile per day":
			[(m,1.86266666666667E-02),"mi/day",""""""],
		"centimetre per second":
			[(m,1.0e-2),"cm/s",""""""],
		"knot (admiralty)":
			[(m,0.514773333333333),"",""""""],
		"mach (sea level & 32 degF)":
			[(m,331.46),"",""""""],
	},
	"Temperature":{".base_unit":"kelvin",
		"kelvin":
			[(m,1.0),"K","""Named after the English mathematician and physicist William Thomson Kelvin (1824-1907). The basic unit of thermodynamic temperature adopted under the System International d'Unites."""],
		"celsius (absolute)":
			[(m,1.0),u"\xb0C absolute",""""""],
		"celsius (formerly centegrade)":
			[(ofg,(273.15,1.0)),u"\xb0C",u"""Named after the Swedish astronomer and physicist Anders Celsius (1701-1744). The Celsius thermometer or scale. It is the same as the centigrade thermometer or scale. 0\xb0 marks the freezing point of water and 100\xb0 marks the boiling point of water.  """],
		"fahrenheit":
			#[(ofg,(459.67,1/1.80)),"\xb0F","""Named after the German physicist Gabriel Daniel Fahrenheit (1686-1736). The Fahrenheit thermometer is so graduated that the freezing point of water is at 32 degrees above the zero of its scale, and the boiling point at 212 degrees above. It is commonly used in the United States and in England."""],
			[(f,('((x-32.0)/1.8)+273.15','((x-273.15)*1.8)+32.0')),u"\xb0F",u"Named after the German physicist Gabriel Daniel Fahrenheit (1686-1736). The Fahrenheit thermometer is so graduated that the freezing point of water is at 32\xb0 above the zero of its scale, and the boiling point at 212\xb0 above. It is commonly used in the United States and in England."],

		"reaumur":
			[(gof,(1.25,273.15)),u"\xb0Re",u"Named after the French scientist René-Antoine Ferchault de Réaumur (1683-1757). Conformed to the scale adopted by Réaumur in graduating the thermometer he invented. The Réaumur thermometer is so graduated that 0\xb0 marks the freezing point and 80° the boiling point of water."],
		"fahrenheit (absolute)":
			[(m,1/1.8),u"\xb0F absolute",""""""],
		"rankine":
			[(m,1/1.8),u"\xb0R","""Named after the British physicist and engineer William Rankine (1820-1872). An absolute temperature scale in Fahrenheit degrees."""],
	},
	"Temperature Difference":{".base_unit":"temp. diff. in kelvin",
		"temp. diff. in kelvin":
			[(m,1.0),"K",""""""],
		"temp. diff. in degrees Celsius":
			[(m,1.0),u"°C",""""""],
		"temp. diff. in degrees Reaumur":
			[(m,1.25),u"°Re",""""""],
		"temp. diff. in degrees Rankine":
			[(m,5.0/9),u"°R",""""""],
		"temp. diff. in degrees Fahrenheit":
			[(m,5.0/9),u"°F",""""""],
	},
	"Time":{".base_unit":"second",
		"year":
			[(m,365*86400.0),"a","""The time of the apparent revolution of the sun trough the ecliptic; the period occupied by the earth in making its revolution around the sun, called the astronomical year; also, a period more or less nearly agreeing with this, adopted by various nations as a measure of time, and called the civil year; as, the common lunar year of 354 days, still in use among the Mohammedans; the year of 360 days, etc. In common usage, the year consists of 365 days, and every fourth year (called bissextile, or leap year) of 366 days, a day being added to February on that year, on account of the excess above 365 days"""],
		"year (anomalistic)":
			[(m,365*86400.0+22428.0),"","""The time of the earth's revolution from perihelion to perihelion again, which is 365 days, 6 hours, 13 minutes, and 48 seconds."""],
		"year (common lunar)":
			[(m,354*86400.0),"","""The period of 12 lunar months, or 354 days."""],
		"year (embolismic | Intercalary lunar)":
			[(m,384*86400.0),"","""The period of 13 lunar months, or 384 days."""],
		"year (leap | bissextile)":
			[(m,366*86400.0),"","""Bissextile; a year containing 366 days; every fourth year which leaps over a day more than a common year, giving to February twenty-nine days. Note: Every year whose number is divisible by four without a remainder is a leap year, excepting the full centuries, which, to be leap years, must be divisible by 400 without a remainder. If not so divisible they are common years. 1900, therefore, is not a leap year."""],
		"year (sabbatical)":
			[(m,7*365*86400.0),"","""Every seventh year, in which the Israelites were commanded to suffer their fields and vineyards to rest, or lie without tillage."""],
		"year (lunar astronomical)":
			[(m,354*86400.0+31716.0),"","""The period of 12 lunar synodical months, or 354 days, 8 hours, 48 minutes, 36 seconds."""],
		"year (lunisolar)":
			[(m,532*365*86400.0),"","""A period of time, at the end of which, in the Julian calendar, the new and full moons and the eclipses recur on the same days of the week and month and year as in the previous period. It consists of 532 common years, being the least common multiple of the numbers of years in the cycle of the sun and the cycle of the moon."""],
		"year (sidereal)":
			[(m,365*86400.0+22149.3),"","""The time in which the sun, departing from any fixed star, returns to the same. This is 365 days, 6 hours, 9 minutes, and 9.3 seconds."""],
		"year (sothic)":
			[(m,365*86400.0+6*3600.0),"","""The Egyptian year of 365 days and 6 hours, as distinguished from the Egyptian vague year, which contained 365 days. The Sothic period consists of 1,460 Sothic years, being equal to 1,461 vague years. One of these periods ended in July, a.d. 139."""],
		"year (tropic)":
			[(m,365*86400.0+20926.0),"","""The solar year; the period occupied by the sun in passing from one tropic or one equinox to the same again, having a mean length of 365 days, 5 hours, 48 minutes, 46.0 seconds, which is 20 minutes, 23.3 seconds shorter than the sidereal year, on account of the precession of the equinoxes."""],
		"month":
			[(m,365*86400.0/12),"","""One of the twelve portions into which the year is divided; the twelfth part of a year, corresponding nearly to the length of a synodic revolution of the moon, -- whence the name. In popular use, a period of four weeks is often called a month."""],
		"month (sidereal)":
			[(m,27.322*86400.0),"","""Period between successive conjunctions with a star, 27.322 days"""],
		"month (synodic | lunar month | lunation)":
			[(m,29.53059*86400.0),"","""The period between successive new moons (29.53059 days) syn: lunar month, moon, lunation"""],
		"day":
			[(m,86400.0),"d","""The period of the earth's revolution on its axis. -- ordinarily divided into twenty-four hours. It is measured by the interval between two successive transits of a celestial body over the same meridian, and takes a specific name from that of the body. Thus, if this is the sun, the day (the interval between two successive transits of the sun's center over the same meridian) is called a solar day; if it is a star, a sidereal day; if it is the moon, a lunar day."""],
		"day (sidereal)":
			[(m,86164.09),"","""The interval between two successive transits of the first point of Aries over the same meridian. The Sidereal day is 23 h. 56 m. 4.09 s. of mean solar time."""],
		"day (lunar | tidal)":
			[(m,86400.0+50*60.0),"","""24 hours 50 minutes used in tidal predictions. """],
		"hour":
			[(m,3600.0),"h","""The twenty-fourth part of a day; sixty minutes."""],
		"minute":
			[(m,60.0),"min","""The sixtieth part of an hour; sixty seconds."""],
		"second":
			[(m,1.0),"s","""The sixtieth part of a minute of time."""],
		"millisecond":
			[(m,1.0e-3),"ms","""One thousandth of a second."""],
		"microsecond":
			[(m,1.0e-6),u"µs","""One millionth of a second."""],
		"nanosecond":
			[(m,1.0e-9),"ns",""""""],
		"picosecond":
			[(m,1.0e-12),"ps",""""""],
		"millennium":
			[(m,1000*365*86400.0),"","""A thousand years; especially, the thousand years mentioned in the twentieth chapter in the twentieth chapter of Revelation, during which holiness is to be triumphant throughout the world. Some believe that, during this period, Christ will reign on earth in person with his saints."""],
		"century":
			[(m,100*365*86400.0),"","""A period of a hundred years; as, this event took place over two centuries ago. Note: Century, in the reckoning of time, although often used in a general way of any series of hundred consecutive years (as, a century of temperance work), usually signifies a division of the Christian era, consisting of a period of one hundred years ending with the hundredth year from which it is named; as, the first century (a. d. 1-100 inclusive); the seventh century (a.d. 601-700); the eighteenth century (a.d. 1701-1800). With words or phrases connecting it with some other system of chronology it is used of similar division of those eras; as, the first century of Rome (A.U.C. 1-100)."""],
		"decade":
			[(m,10*365*86400.0),"","""A group or division of ten; esp., a period of ten years; a decennium; as, a decade of years or days; a decade of soldiers; the second decade of Livy."""],
		"week":
			[(m,7*86400.0),"","""A period of seven days, usually that reckoned from one Sabbath or Sunday to the next. Also seven nights, known as sennight."""],
		"fortnight":
			[(m,14*86400.0),"","""Fourteen nights, our ancestors reckoning time by nights and winters.  The space of fourteen days; two weeks."""],
		"novennial":
			[(m,9*365*86400.0),"","""Done or recurring every ninth year."""],
		"octennial":
			[(m,8*365*86400.0),"","""Happening every eighth year; also, lasting a period of eight years."""],
		"olympiad":
			[(m,4*365*86400.0),"","""A period of four years, by which the ancient Greeks reckoned time, being the interval from one celebration of the Olympic games to another, beginning with the victory of Coroebus in the foot race, which took place in the year 776 b.c.; as, the era of the olympiads."""],
		"pregnancy":
			[(m,9*365*86400.0/12),"","""The condition of being pregnant; the state of being with young. A period of approximately 9 months for humans"""],
		"quindecennial":
			[(m,15*365*86400.0),"","""A period of 15 years."""],
		"quinquennial":
			[(m,5*365*86400.0),"","""Occurring once in five years, or at the end of every five years; also, lasting five years. A quinquennial event."""],
		"septennial":
			[(m,7*365*86400.0),"","""Lasting or continuing seven years; as, septennial parliaments."""],
		"cesium vibrations":
			[(m,1.0/9192631770.0),"vibrations","""It takes one second for hot cesium atoms to vibrate 9,192,631,770 times (microwaves). This standard was adopted by the International System in 1967."""],
	},
	"Viscosity (Dynamic)":{".base_unit":"pascal-second",
		"pascal-second":
			[(m,1.0),u"Pa·s",""""""],
		"reyn":
			[(m,6894.75729316836),"",""""""],
		"poise":
			[(m,0.1),"P",""""""],
		"microreyn":
			[(m,6894.75729316836e-6),"",""""""],
		"millipascal-second":
			[(m,1.0e-3),u"mPa·s",""""""],
		"centipoise":
			[(m,1.0e-4),"cP",""""""],
		"micropascal-second":
			[(m,1.0e-6),u"µPa·s",""""""],
	},
	"Viscosity (Kinematic)":{".base_unit":"square metre per second",
		"square metre per second":
			[(m,1.0),u"m\xb2/s",""""""],
		"square millimetre per second":
			[(m,1.0e-6),u"mm\xb2/s",""""""],
		"square foot per second":
			[(m,0.09290304),u"ft\xb2/s",""""""],
		"square centimtre per second":
			[(m,1.0e-4),u"cm\xb2/s",""""""],
		"stokes":
			[(m,1.0e-4),"St",""""""],
		"centistokes":
			[(m,1.0e-6),"cSt",""""""],
	},
	"Volume and Liquid Capacity":{".base_unit":"milliltre",
		"caphite":
			[(m,1374.1046),"","""Ancient Arabian"""],
		"cantaro":
			[(m,13521.1108),"","""Spanish"""],
		"oxybaphon":
			[(m,66.245),"","""Greek"""],
		"cotula | hemina | kotyle":
			[(m,308.3505),"","""Greek"""],
		"cyathos":
			[(m,451.5132),"","""Greek"""],
		"cados":
			[(m,38043.3566),"","""Greek"""],
		"metretes | amphura":
			[(m,39001.092),"","""Greek"""],
		"mushti":
			[(m,60.9653),"","""Indian"""],
		"cab":
			[(m,2202.5036),"","""Israeli"""],
		"hekat":
			[(m,4768.6752),"","""Israeli"""],
		"bath | bu":
			[(m,36871.2),"","""Israeli"""],
		"acetabulum":
			[(m,66.0752),"","""Roman"""],

		"dash (Imperial)":
			[(m,4.73551071041125/16),"","""one half of a pinch"""],
		"pinch (Imperial)":
			[(m,4.73551071041125/8),"","""One eigth of a teaspoon"""],
		"gallon (Imperial)":
			[(m,4*2*2.5*8*2*3*4.73551071041125),"",u"""A measure of capacity, containing four quarts; -- used, for the most part, in liquid measure, but sometimes in dry measure. The English imperial gallon contains 10 pounds avoirdupois of distilled water at 62\xb0F, and barometer at 30 inches, equal to 277.274 cubic inches."""],
		"quart":
			[(m,2*2.5*8*2*3*4.73551071041125),"","""The fourth part of a gallon; the eighth part of a peck; two pints. Note: In imperial measure, a quart is forty English fluid ounces; in wine measure, it is thirty-two American fluid ounces. The United States dry quart contains 67.20 cubic inches, the fluid quart 57.75. The English quart contains 69.32 cubic inches."""],
		"pint (Imperial)":
			[(m,2.5*8*2*3*4.73551071041125),"",""""""],
		"cup (Imperial)":
			[(m,8*2*3*4.73551071041125),"",""""""],
		"fluid ounce (Imperial)":
			[(m,2*3*4.73551071041125),"",u"""Contains 1 ounce mass of distilled water at 62\xb0F, and barometer at 30 inches"""],
		"tablespoon (Imperial)":
			[(m,3*4.73551071041125),"","""One sixteenth of a cup. A spoon of the largest size commonly used at the table; -- distinguished from teaspoon, dessert spoon, etc."""],
		"teaspoon (Imperial)":
			[(m,4.73551071041125),"","""One third of a tablespoon. A small spoon used in stirring and sipping tea, coffee, etc., and for other purposes."""],

		"dash (US)":
			[(m,4.92892159375/16),"","""one half of a pinch"""],
		"pinch (US)":
			[(m,4.92892159375/8),"","""One eigth of a teaspoon"""],
		"gallon (US)":
			[(m,4*2*2*8*2*3*4.92892159375),"","""A measure of capacity, containing four quarts; -- used, for the most part, in liquid measure, but sometimes in dry measure. Note: The standart gallon of the Unites States contains 231 cubic inches, or 8.3389 pounds avoirdupois of distilled water at its maximum density, and with the barometer at 30 inches. This is almost exactly equivalent to a cylinder of seven inches in diameter and six inches in height, and is the same as the old English wine gallon. The beer gallon, now little used in the United States, contains 282 cubic inches."""],
		"quart (US)":
			[(m,2*2*8*2*3*4.92892159375),"","""The fourth part of a gallon; the eighth part of a peck; two pints. Note: In imperial measure, a quart is forty English fluid ounces; in wine measure, it is thirty-two American fluid ounces. The United States dry quart contains 67.20 cubic inches, the fluid quart 57.75. The English quart contains 69.32 cubic inches."""],
		"pint (US)":
			[(m,2*8*2*3*4.92892159375),"",""""""],
		"cup (US)":
			[(m,8*2*3*4.92892159375),"",""""""],
		"fluid ounce (US)":
			[(m,2*3*4.92892159375),"",""""""],
		"tablespoon (US)":
			[(m,3*4.92892159375),"","""One sixteenth of a cup. A spoon of the largest size commonly used at the table; -- distinguished from teaspoon, dessert spoon, etc."""],
		"teaspoon (US)":
			[(m,4.92892159375),"","""One third of a tablespoon. A small spoon used in stirring and sipping tea, coffee, etc., and for other purposes."""],

		"shaku":
			[(m,18.04),"","""A Japanese unit of volume, the shaku equals about 18.04 milliliters (0.61 U.S. fluid ounce). Note: shaku also means area and length."""],

		"cubic yard":
			[(m,27*1728*16.387064),u"yd³",""""""],
		"cubic foot":
			[(m,1728*16.387064),u"ft³",""""""],
		"cubic inch":
			[(m,16.387064),u"in³",""""""],
			
		"cubic metre":
			[(m,1.0e6),u"m³",""""""],
		"cubic decimetre":
			[(m,1.0e3),u"dm³",""""""],
		"litre":
			[(m,1.0e3),"l","""A measure of capacity in the metric system, being a cubic decimeter."""],
		"cubic centimetre":
			[(m,1.0),u"cm³",""""""],
		"millilitre":
			[(m,1.0),"ml",""""""],
		"mil":
			[(m,1.0),"","""Equal to one thousandth of a liter syn: milliliter, millilitre, ml, cubic centimeter, cubic centimetre, cc"""],
		"minim":
			[(m,2*3*4.92892159375/480),"",u"""Used in Pharmaceutical to represent one drop. 1/60 fluid dram or 1/480 fluid ounce. A U.S. minim is about 0.003760 in³ or 61.610 µl. The British minim is about 0.003612 in³ or 59.194 µl. Origin of the word is from the Latin minimus, or small."""],
	},
	"Volume and Dry Capacity":{".base_unit":"cubic metre",
		"cubic metre":
			[(m,1.0),u"m³",""""""],
		"cubic decimetre":
			[(m,1.0e-3),u"dm³",""""""],
		"cord":
			[(m,3.624556363776),"","""A pile of wood 8ft x 4ft x 4ft."""],
		"cubic yard":
			[(m,0.764554857984),u"yd³",""""""],
		"bushel (US)":
			[(m,4*2*0.00440488377086),"bu","""A dry measure, containing four pecks, eight gallons, or thirty-two quarts. Note: The Winchester bushel, formerly used in England, contained 2150.42 cubic inches, being the volume of a cylinder 181/2 inches in internal diameter and eight inches in depth. The standard bushel measures, prepared by the United States Government and distributed to the States, hold each 77.6274 pounds of distilled water, at 39.8deg Fahr. and 30 inches atmospheric pressure, being the equivalent of the Winchester bushel. The imperial bushel now in use in England is larger than the Winchester bushel, containing 2218.2 cubic inches, or 80 pounds of water at 62deg Fahr."""],
		"bushel (UK | CAN)":
			[(m,4*2*4*1.1365225e-3),"bu","""A dry measure, containing four pecks, eight gallons, or thirty-two quarts. Note: The Winchester bushel, formerly used in England, contained 2150.42 cubic inches, being the volume of a cylinder 181/2 inches in internal diameter and eight inches in depth. The standard bushel measures, prepared by the United States Government and distributed to the States, hold each 77.6274 pounds of distilled water, at 39.8deg Fahr. and 30 inches atmospheric pressure, being the equivalent of the Winchester bushel. The imperial bushel now in use in England is larger than the Winchester bushel, containing 2218.2 cubic inches, or 80 pounds of water at 62deg Fahr."""],
		"peck (US)":
			[(m,2*0.00440488377086),"",""""""],
		"peck (UK | CAN)":
			[(m,2*4*1.1365225e-3),"",""""""],
		"gallon (US dry)":
			[(m,0.00440488377086),"gal",""""""],
		"gallon (CAN)":
			[(m,4*1.1365225e-3),"gal",""""""],
		"quart (US dry)":
			[(m,1.101220942715e-3),"qt",""""""],
		"quart (CAN)":
			[(m,1.1365225e-3),"qt",""""""],
		"cubic foot":
			[(m,0.028316846592),u"ft³",""""""],
		"board foot":
			[(m,0.028316846592/12),"",u"""lumber 1ft\xb2 and 1 in thick"""],
		"litre":
			[(m,1.0e-3),"l","""A measure of capacity in the metric system, being a cubic decimeter."""],
		"pint (US dry)":
			[(m,5.506104713575E-04),"pt",""""""],
		"cubic inch":
			[(m,0.000016387064),u"in³",""""""],
		"coomb":
			[(m,4*4*2*4*1.1365225e-3),"","""British. 4 bushels"""],
		"peck":
			[(m,37.23670995671),"","""The fourth part of a bushel; a dry measure of eight quarts"""],
		"quart (dry)":
			[(m,4.65458874458874),"","""The fourth part of a gallon; the eighth part of a peck; two pints. Note: In imperial measure, a quart is forty English fluid ounces; in wine measure, it is thirty-two American fluid ounces. The United States dry quart contains 67.20 cubic inches, the fluid quart 57.75. The English quart contains 69.32 cubic inches."""],
	},
	}
	
list_items = []

keys=list_dic.keys()
keys.sort()

#insert a column into the units list even though the heading will not be seen
renderer = gtk.CellRendererText()
column1 = gtk.TreeViewColumn( 'Unit Name', renderer )
column1.set_property( 'resizable', 1 )
column1.add_attribute( renderer, 'text', 0 )
column1.set_clickable(True)
column1.connect("clicked",click_column)
clist1.append_column( column1 )

column2 = gtk.TreeViewColumn( 'Value', renderer )
column2.set_property( 'resizable', 1 )
column2.add_attribute( renderer, 'text', 1 )
column2.set_clickable(True)
column2.connect("clicked",click_column)
clist1.append_column( column2 )

column3 = gtk.TreeViewColumn( 'Units', renderer )
column3.set_property( 'resizable', 1 )
column3.add_attribute( renderer, 'text', 2 )
column3.set_clickable(True)
column3.connect("clicked",click_column)
clist1.append_column( column3 )



#insert a column into the category list even though the heading will not be seen
renderer = gtk.CellRendererText()
col = gtk.TreeViewColumn( 'Title', renderer )
col.set_property( 'resizable', 1 )
col.add_attribute( renderer, 'text', 0 )
cat_clist.append_column( col )

cat_model = gtk.ListStore(gobject.TYPE_STRING)
cat_clist.set_model(cat_model)
#colourize each row sifferently for easier reading
cat_clist.set_property( 'rules_hint',1)


#Populate the catagories list
for key in keys:
   #cat_clist.append([key])
  iter = cat_model.append()
  cat_model.set(iter,0,key)

#Put the focus on the first category
cat_clist.set_cursor(0, col, False )
cat_clist.grab_focus()

gtk.mainloop()
