diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..d566c34
--- /dev/null
+++ b/.DS_Store
Binary files differ
diff --git a/.gitmodules b/.gitmodules
index e574da5..89a8c3a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,3 +4,6 @@
 [submodule "json"]
 	path = json
 	url = git@github.com:nlohmann/json.git
+[submodule "clip"]
+	path = clip
+	url = git@github.com:dacap/clip.git
diff --git a/Makefile b/Makefile
index af47130..4f918ef 100644
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,35 @@
 CFLAGS = -Os -DSUPPORT_UTF8 -sASYNCIFY -sEXPORTED_RUNTIME_METHODS=ccall,cwrap,stringToNewUTF8 \
 	-sEXPORTED_FUNCTIONS=_test_int,_do_a_conversion -sMODULARIZE -s 'EXPORT_NAME="createMyModule"' \
-	--no-entry
+	--no-entry -flto -sASSERTIONS
 
-ESFLAGS = --bundle --minify --loader:.js=jsx
+ESFLAGS = --bundle --minify --loader:.js=jsx --platform=node
 
-WEBCFLAGS = -Os -framework WebKit -std=c++11 
+WEBCFLAGS = -Os -framework WebKit -framework Cocoa -std=c++11 -flto
 
-webview-frontend: webview-frontend.cpp units.o getopt.o getopt1.o parse.tab.o strfunc.o | bundle-webview-js.h
-	g++ $^ -o webview-frontend $(WEBCFLAGS) -I json/include
+CC=clang
+MC=clang
+CXX=clang++
+
+webview-frontend: webview-frontend.cpp units.o getopt.o getopt1.o parse.tab.o strfunc.o menu.o | bundle-webview-js.h
+	$(CXX) $^ -o webview-frontend $(WEBCFLAGS) -I json/include
 	strip $@
 
+app-bundle: webview-frontend
+	cp webview-frontend Units.app/Contents/MacOS/
+	rm -rf /Applications/Units.app
+	cp -r Units.app /Applications
+
+menu.o: webview/menu.m
+	$(MC) $^ -c -o $@ -flto -Os
+
 units.wasm: units.c
 	emcc -o units.lib.js *.c $(CFLAGS) --preload-file definitions.units --preload-file elements.units --preload-file currency.units --preload-file cpi.units
 
 units-host: units.c
-	gcc *.c -o units-host -g
+	$(CC) *.c -o units-host -g
 
 %.o: %.c
-	gcc -c $^ -Os -o $@
+	$(CC) -c $^ -Os -o $@ -Os
 
 bundle.js: frontend.js units.wasm
 	yarn esbuild frontend.js $(ESFLAGS) --outfile=bundle.js
@@ -32,4 +44,7 @@
 watch: units.wasm
 	yarn esbuild frontend.js $(ESFLAGS) --watch --outfile=bundle.js
 
+clean:
+	rm -f *.o webview-frontend *.wasm
+
 .PHONY: watch webview-frontend
diff --git a/Units.app.zip b/Units.app.zip
new file mode 100644
index 0000000..79da96b
--- /dev/null
+++ b/Units.app.zip
Binary files differ
diff --git a/Units.app/Contents/Info.plist b/Units.app/Contents/Info.plist
new file mode 100644
index 0000000..00432e8
--- /dev/null
+++ b/Units.app/Contents/Info.plist
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>webview-frontend</string>
+	<key>CFBundleIconFile</key>
+	<string>Units</string>
+	<key>CFBundleIdentifier</key>
+	<string>sh.swisschili.units</string>
+	<key>CFBundleDisplayName</key>
+	<string>Units</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>1.0</string>
+	<key>CFBundleName</key>
+	<string>Units</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>CFBundleSignature</key>
+	<string>Pde4</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>© swissChili</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.14.6</string>
+	<key>LSUIElement</key>
+	<false/>
+	<key>NSHighResolutionCapable</key>
+	<true/>
+	<key>NSSupportsAutomaticGraphicsSwitching</key>
+	<true/>
+	<key>IgnorePSN</key>
+	<false/>
+	<key>NSRequiresAquaSystemAppearance</key>
+	<false/>
+	<key>LSArchitecturePriority</key>
+	<array>
+		<string>aarch64</string>
+	</array>
+	<key>LSEnvironment</key>
+	<dict>
+		<key>LC_CTYPE</key>
+		<string>UTF-8</string>
+	</dict>
+</dict>
+</plist>
diff --git a/Units.app/Contents/MacOS/cpi.units b/Units.app/Contents/MacOS/cpi.units
new file mode 100644
index 0000000..0852312
--- /dev/null
+++ b/Units.app/Contents/MacOS/cpi.units
@@ -0,0 +1,1349 @@
+!message Consumer price index data from US BLS, 2024-02-18
+
+UScpi[1] noerror \
+          1913.0833333333333 9.8 \
+          1913.1666666666667 9.8 \
+          1913.25 9.8 \
+          1913.3333333333333 9.8 \
+          1913.4166666666667 9.7 \
+          1913.5 9.8 \
+          1913.5833333333333 9.9 \
+          1913.6666666666667 9.9 \
+          1913.75 10.0 \
+          1913.8333333333333 10.0 \
+          1913.9166666666667 10.1 \
+          1914.0 10.0 \
+          1914.0833333333333 10.0 \
+          1914.1666666666667 9.9 \
+          1914.25 9.9 \
+          1914.3333333333333 9.8 \
+          1914.4166666666667 9.9 \
+          1914.5 9.9 \
+          1914.5833333333333 10.0 \
+          1914.6666666666667 10.2 \
+          1914.75 10.2 \
+          1914.8333333333333 10.1 \
+          1914.9166666666667 10.2 \
+          1915.0 10.1 \
+          1915.0833333333333 10.1 \
+          1915.1666666666667 10.0 \
+          1915.25 9.9 \
+          1915.3333333333333 10.0 \
+          1915.4166666666667 10.1 \
+          1915.5 10.1 \
+          1915.5833333333333 10.1 \
+          1915.6666666666667 10.1 \
+          1915.75 10.1 \
+          1915.8333333333333 10.2 \
+          1915.9166666666667 10.3 \
+          1916.0 10.3 \
+          1916.0833333333333 10.4 \
+          1916.1666666666667 10.4 \
+          1916.25 10.5 \
+          1916.3333333333333 10.6 \
+          1916.4166666666667 10.7 \
+          1916.5 10.8 \
+          1916.5833333333333 10.8 \
+          1916.6666666666667 10.9 \
+          1916.75 11.1 \
+          1916.8333333333333 11.3 \
+          1916.9166666666667 11.5 \
+          1917.0 11.6 \
+          1917.0833333333333 11.7 \
+          1917.1666666666667 12.0 \
+          1917.25 12.0 \
+          1917.3333333333333 12.6 \
+          1917.4166666666667 12.8 \
+          1917.5 13.0 \
+          1917.5833333333333 12.8 \
+          1917.6666666666667 13.0 \
+          1917.75 13.3 \
+          1917.8333333333333 13.5 \
+          1917.9166666666667 13.5 \
+          1918.0 13.7 \
+          1918.0833333333333 14.0 \
+          1918.1666666666667 14.1 \
+          1918.25 14.0 \
+          1918.3333333333333 14.2 \
+          1918.4166666666667 14.5 \
+          1918.5 14.7 \
+          1918.5833333333333 15.1 \
+          1918.6666666666667 15.4 \
+          1918.75 15.7 \
+          1918.8333333333333 16.0 \
+          1918.9166666666667 16.3 \
+          1919.0 16.5 \
+          1919.0833333333333 16.5 \
+          1919.1666666666667 16.2 \
+          1919.25 16.4 \
+          1919.3333333333333 16.7 \
+          1919.4166666666667 16.9 \
+          1919.5 16.9 \
+          1919.5833333333333 17.4 \
+          1919.6666666666667 17.7 \
+          1919.75 17.8 \
+          1919.8333333333333 18.1 \
+          1919.9166666666667 18.5 \
+          1920.0 18.9 \
+          1920.0833333333333 19.3 \
+          1920.1666666666667 19.5 \
+          1920.25 19.7 \
+          1920.3333333333333 20.3 \
+          1920.4166666666667 20.6 \
+          1920.5 20.9 \
+          1920.5833333333333 20.8 \
+          1920.6666666666667 20.3 \
+          1920.75 20.0 \
+          1920.8333333333333 19.9 \
+          1920.9166666666667 19.8 \
+          1921.0 19.4 \
+          1921.0833333333333 19.0 \
+          1921.1666666666667 18.4 \
+          1921.25 18.3 \
+          1921.3333333333333 18.1 \
+          1921.4166666666667 17.7 \
+          1921.5 17.6 \
+          1921.5833333333333 17.7 \
+          1921.6666666666667 17.7 \
+          1921.75 17.5 \
+          1921.8333333333333 17.5 \
+          1921.9166666666667 17.4 \
+          1922.0 17.3 \
+          1922.0833333333333 16.9 \
+          1922.1666666666667 16.9 \
+          1922.25 16.7 \
+          1922.3333333333333 16.7 \
+          1922.4166666666667 16.7 \
+          1922.5 16.7 \
+          1922.5833333333333 16.8 \
+          1922.6666666666667 16.6 \
+          1922.75 16.6 \
+          1922.8333333333333 16.7 \
+          1922.9166666666667 16.8 \
+          1923.0 16.9 \
+          1923.0833333333333 16.8 \
+          1923.1666666666667 16.8 \
+          1923.25 16.8 \
+          1923.3333333333333 16.9 \
+          1923.4166666666667 16.9 \
+          1923.5 17.0 \
+          1923.5833333333333 17.2 \
+          1923.6666666666667 17.1 \
+          1923.75 17.2 \
+          1923.8333333333333 17.3 \
+          1923.9166666666667 17.3 \
+          1924.0 17.3 \
+          1924.0833333333333 17.3 \
+          1924.1666666666667 17.2 \
+          1924.25 17.1 \
+          1924.3333333333333 17.0 \
+          1924.4166666666667 17.0 \
+          1924.5 17.0 \
+          1924.5833333333333 17.1 \
+          1924.6666666666667 17.0 \
+          1924.75 17.1 \
+          1924.8333333333333 17.2 \
+          1924.9166666666667 17.2 \
+          1925.0 17.3 \
+          1925.0833333333333 17.3 \
+          1925.1666666666667 17.2 \
+          1925.25 17.3 \
+          1925.3333333333333 17.2 \
+          1925.4166666666667 17.3 \
+          1925.5 17.5 \
+          1925.5833333333333 17.7 \
+          1925.6666666666667 17.7 \
+          1925.75 17.7 \
+          1925.8333333333333 17.7 \
+          1925.9166666666667 18.0 \
+          1926.0 17.9 \
+          1926.0833333333333 17.9 \
+          1926.1666666666667 17.9 \
+          1926.25 17.8 \
+          1926.3333333333333 17.9 \
+          1926.4166666666667 17.8 \
+          1926.5 17.7 \
+          1926.5833333333333 17.5 \
+          1926.6666666666667 17.4 \
+          1926.75 17.5 \
+          1926.8333333333333 17.6 \
+          1926.9166666666667 17.7 \
+          1927.0 17.7 \
+          1927.0833333333333 17.5 \
+          1927.1666666666667 17.4 \
+          1927.25 17.3 \
+          1927.3333333333333 17.3 \
+          1927.4166666666667 17.4 \
+          1927.5 17.6 \
+          1927.5833333333333 17.3 \
+          1927.6666666666667 17.2 \
+          1927.75 17.3 \
+          1927.8333333333333 17.4 \
+          1927.9166666666667 17.3 \
+          1928.0 17.3 \
+          1928.0833333333333 17.3 \
+          1928.1666666666667 17.1 \
+          1928.25 17.1 \
+          1928.3333333333333 17.1 \
+          1928.4166666666667 17.2 \
+          1928.5 17.1 \
+          1928.5833333333333 17.1 \
+          1928.6666666666667 17.1 \
+          1928.75 17.3 \
+          1928.8333333333333 17.2 \
+          1928.9166666666667 17.2 \
+          1929.0 17.1 \
+          1929.0833333333333 17.1 \
+          1929.1666666666667 17.1 \
+          1929.25 17.0 \
+          1929.3333333333333 16.9 \
+          1929.4166666666667 17.0 \
+          1929.5 17.1 \
+          1929.5833333333333 17.3 \
+          1929.6666666666667 17.3 \
+          1929.75 17.3 \
+          1929.8333333333333 17.3 \
+          1929.9166666666667 17.3 \
+          1930.0 17.2 \
+          1930.0833333333333 17.1 \
+          1930.1666666666667 17.0 \
+          1930.25 16.9 \
+          1930.3333333333333 17.0 \
+          1930.4166666666667 16.9 \
+          1930.5 16.8 \
+          1930.5833333333333 16.6 \
+          1930.6666666666667 16.5 \
+          1930.75 16.6 \
+          1930.8333333333333 16.5 \
+          1930.9166666666667 16.4 \
+          1931.0 16.1 \
+          1931.0833333333333 15.9 \
+          1931.1666666666667 15.7 \
+          1931.25 15.6 \
+          1931.3333333333333 15.5 \
+          1931.4166666666667 15.3 \
+          1931.5 15.1 \
+          1931.5833333333333 15.1 \
+          1931.6666666666667 15.1 \
+          1931.75 15.0 \
+          1931.8333333333333 14.9 \
+          1931.9166666666667 14.7 \
+          1932.0 14.6 \
+          1932.0833333333333 14.3 \
+          1932.1666666666667 14.1 \
+          1932.25 14.0 \
+          1932.3333333333333 13.9 \
+          1932.4166666666667 13.7 \
+          1932.5 13.6 \
+          1932.5833333333333 13.6 \
+          1932.6666666666667 13.5 \
+          1932.75 13.4 \
+          1932.8333333333333 13.3 \
+          1932.9166666666667 13.2 \
+          1933.0 13.1 \
+          1933.0833333333333 12.9 \
+          1933.1666666666667 12.7 \
+          1933.25 12.6 \
+          1933.3333333333333 12.6 \
+          1933.4166666666667 12.6 \
+          1933.5 12.7 \
+          1933.5833333333333 13.1 \
+          1933.6666666666667 13.2 \
+          1933.75 13.2 \
+          1933.8333333333333 13.2 \
+          1933.9166666666667 13.2 \
+          1934.0 13.2 \
+          1934.0833333333333 13.2 \
+          1934.1666666666667 13.3 \
+          1934.25 13.3 \
+          1934.3333333333333 13.3 \
+          1934.4166666666667 13.3 \
+          1934.5 13.4 \
+          1934.5833333333333 13.4 \
+          1934.6666666666667 13.4 \
+          1934.75 13.6 \
+          1934.8333333333333 13.5 \
+          1934.9166666666667 13.5 \
+          1935.0 13.4 \
+          1935.0833333333333 13.6 \
+          1935.1666666666667 13.7 \
+          1935.25 13.7 \
+          1935.3333333333333 13.8 \
+          1935.4166666666667 13.8 \
+          1935.5 13.7 \
+          1935.5833333333333 13.7 \
+          1935.6666666666667 13.7 \
+          1935.75 13.7 \
+          1935.8333333333333 13.7 \
+          1935.9166666666667 13.8 \
+          1936.0 13.8 \
+          1936.0833333333333 13.8 \
+          1936.1666666666667 13.8 \
+          1936.25 13.7 \
+          1936.3333333333333 13.7 \
+          1936.4166666666667 13.7 \
+          1936.5 13.8 \
+          1936.5833333333333 13.9 \
+          1936.6666666666667 14.0 \
+          1936.75 14.0 \
+          1936.8333333333333 14.0 \
+          1936.9166666666667 14.0 \
+          1937.0 14.0 \
+          1937.0833333333333 14.1 \
+          1937.1666666666667 14.1 \
+          1937.25 14.2 \
+          1937.3333333333333 14.3 \
+          1937.4166666666667 14.4 \
+          1937.5 14.4 \
+          1937.5833333333333 14.5 \
+          1937.6666666666667 14.5 \
+          1937.75 14.6 \
+          1937.8333333333333 14.6 \
+          1937.9166666666667 14.5 \
+          1938.0 14.4 \
+          1938.0833333333333 14.2 \
+          1938.1666666666667 14.1 \
+          1938.25 14.1 \
+          1938.3333333333333 14.2 \
+          1938.4166666666667 14.1 \
+          1938.5 14.1 \
+          1938.5833333333333 14.1 \
+          1938.6666666666667 14.1 \
+          1938.75 14.1 \
+          1938.8333333333333 14.0 \
+          1938.9166666666667 14.0 \
+          1939.0 14.0 \
+          1939.0833333333333 14.0 \
+          1939.1666666666667 13.9 \
+          1939.25 13.9 \
+          1939.3333333333333 13.8 \
+          1939.4166666666667 13.8 \
+          1939.5 13.8 \
+          1939.5833333333333 13.8 \
+          1939.6666666666667 13.8 \
+          1939.75 14.1 \
+          1939.8333333333333 14.0 \
+          1939.9166666666667 14.0 \
+          1940.0 14.0 \
+          1940.0833333333333 13.9 \
+          1940.1666666666667 14.0 \
+          1940.25 14.0 \
+          1940.3333333333333 14.0 \
+          1940.4166666666667 14.0 \
+          1940.5 14.1 \
+          1940.5833333333333 14.0 \
+          1940.6666666666667 14.0 \
+          1940.75 14.0 \
+          1940.8333333333333 14.0 \
+          1940.9166666666667 14.0 \
+          1941.0 14.1 \
+          1941.0833333333333 14.1 \
+          1941.1666666666667 14.1 \
+          1941.25 14.2 \
+          1941.3333333333333 14.3 \
+          1941.4166666666667 14.4 \
+          1941.5 14.7 \
+          1941.5833333333333 14.7 \
+          1941.6666666666667 14.9 \
+          1941.75 15.1 \
+          1941.8333333333333 15.3 \
+          1941.9166666666667 15.4 \
+          1942.0 15.5 \
+          1942.0833333333333 15.7 \
+          1942.1666666666667 15.8 \
+          1942.25 16.0 \
+          1942.3333333333333 16.1 \
+          1942.4166666666667 16.3 \
+          1942.5 16.3 \
+          1942.5833333333333 16.4 \
+          1942.6666666666667 16.5 \
+          1942.75 16.5 \
+          1942.8333333333333 16.7 \
+          1942.9166666666667 16.8 \
+          1943.0 16.9 \
+          1943.0833333333333 16.9 \
+          1943.1666666666667 16.9 \
+          1943.25 17.2 \
+          1943.3333333333333 17.4 \
+          1943.4166666666667 17.5 \
+          1943.5 17.5 \
+          1943.5833333333333 17.4 \
+          1943.6666666666667 17.3 \
+          1943.75 17.4 \
+          1943.8333333333333 17.4 \
+          1943.9166666666667 17.4 \
+          1944.0 17.4 \
+          1944.0833333333333 17.4 \
+          1944.1666666666667 17.4 \
+          1944.25 17.4 \
+          1944.3333333333333 17.5 \
+          1944.4166666666667 17.5 \
+          1944.5 17.6 \
+          1944.5833333333333 17.7 \
+          1944.6666666666667 17.7 \
+          1944.75 17.7 \
+          1944.8333333333333 17.7 \
+          1944.9166666666667 17.7 \
+          1945.0 17.8 \
+          1945.0833333333333 17.8 \
+          1945.1666666666667 17.8 \
+          1945.25 17.8 \
+          1945.3333333333333 17.8 \
+          1945.4166666666667 17.9 \
+          1945.5 18.1 \
+          1945.5833333333333 18.1 \
+          1945.6666666666667 18.1 \
+          1945.75 18.1 \
+          1945.8333333333333 18.1 \
+          1945.9166666666667 18.1 \
+          1946.0 18.2 \
+          1946.0833333333333 18.2 \
+          1946.1666666666667 18.1 \
+          1946.25 18.3 \
+          1946.3333333333333 18.4 \
+          1946.4166666666667 18.5 \
+          1946.5 18.7 \
+          1946.5833333333333 19.8 \
+          1946.6666666666667 20.2 \
+          1946.75 20.4 \
+          1946.8333333333333 20.8 \
+          1946.9166666666667 21.3 \
+          1947.0 21.5 \
+          1947.0833333333333 21.5 \
+          1947.1666666666667 21.5 \
+          1947.25 21.9 \
+          1947.3333333333333 21.9 \
+          1947.4166666666667 21.9 \
+          1947.5 22.0 \
+          1947.5833333333333 22.2 \
+          1947.6666666666667 22.5 \
+          1947.75 23.0 \
+          1947.8333333333333 23.0 \
+          1947.9166666666667 23.1 \
+          1948.0 23.4 \
+          1948.0833333333333 23.7 \
+          1948.1666666666667 23.5 \
+          1948.25 23.4 \
+          1948.3333333333333 23.8 \
+          1948.4166666666667 23.9 \
+          1948.5 24.1 \
+          1948.5833333333333 24.4 \
+          1948.6666666666667 24.5 \
+          1948.75 24.5 \
+          1948.8333333333333 24.4 \
+          1948.9166666666667 24.2 \
+          1949.0 24.1 \
+          1949.0833333333333 24.0 \
+          1949.1666666666667 23.8 \
+          1949.25 23.8 \
+          1949.3333333333333 23.9 \
+          1949.4166666666667 23.8 \
+          1949.5 23.9 \
+          1949.5833333333333 23.7 \
+          1949.6666666666667 23.8 \
+          1949.75 23.9 \
+          1949.8333333333333 23.7 \
+          1949.9166666666667 23.8 \
+          1950.0 23.6 \
+          1950.0833333333333 23.5 \
+          1950.1666666666667 23.5 \
+          1950.25 23.6 \
+          1950.3333333333333 23.6 \
+          1950.4166666666667 23.7 \
+          1950.5 23.8 \
+          1950.5833333333333 24.1 \
+          1950.6666666666667 24.3 \
+          1950.75 24.4 \
+          1950.8333333333333 24.6 \
+          1950.9166666666667 24.7 \
+          1951.0 25.0 \
+          1951.0833333333333 25.4 \
+          1951.1666666666667 25.7 \
+          1951.25 25.8 \
+          1951.3333333333333 25.8 \
+          1951.4166666666667 25.9 \
+          1951.5 25.9 \
+          1951.5833333333333 25.9 \
+          1951.6666666666667 25.9 \
+          1951.75 26.1 \
+          1951.8333333333333 26.2 \
+          1951.9166666666667 26.4 \
+          1952.0 26.5 \
+          1952.0833333333333 26.5 \
+          1952.1666666666667 26.3 \
+          1952.25 26.3 \
+          1952.3333333333333 26.4 \
+          1952.4166666666667 26.4 \
+          1952.5 26.5 \
+          1952.5833333333333 26.7 \
+          1952.6666666666667 26.7 \
+          1952.75 26.7 \
+          1952.8333333333333 26.7 \
+          1952.9166666666667 26.7 \
+          1953.0 26.7 \
+          1953.0833333333333 26.6 \
+          1953.1666666666667 26.5 \
+          1953.25 26.6 \
+          1953.3333333333333 26.6 \
+          1953.4166666666667 26.7 \
+          1953.5 26.8 \
+          1953.5833333333333 26.8 \
+          1953.6666666666667 26.9 \
+          1953.75 26.9 \
+          1953.8333333333333 27.0 \
+          1953.9166666666667 26.9 \
+          1954.0 26.9 \
+          1954.0833333333333 26.9 \
+          1954.1666666666667 26.9 \
+          1954.25 26.9 \
+          1954.3333333333333 26.8 \
+          1954.4166666666667 26.9 \
+          1954.5 26.9 \
+          1954.5833333333333 26.9 \
+          1954.6666666666667 26.9 \
+          1954.75 26.8 \
+          1954.8333333333333 26.8 \
+          1954.9166666666667 26.8 \
+          1955.0 26.7 \
+          1955.0833333333333 26.7 \
+          1955.1666666666667 26.7 \
+          1955.25 26.7 \
+          1955.3333333333333 26.7 \
+          1955.4166666666667 26.7 \
+          1955.5 26.7 \
+          1955.5833333333333 26.8 \
+          1955.6666666666667 26.8 \
+          1955.75 26.9 \
+          1955.8333333333333 26.9 \
+          1955.9166666666667 26.9 \
+          1956.0 26.8 \
+          1956.0833333333333 26.8 \
+          1956.1666666666667 26.8 \
+          1956.25 26.8 \
+          1956.3333333333333 26.9 \
+          1956.4166666666667 27.0 \
+          1956.5 27.2 \
+          1956.5833333333333 27.4 \
+          1956.6666666666667 27.3 \
+          1956.75 27.4 \
+          1956.8333333333333 27.5 \
+          1956.9166666666667 27.5 \
+          1957.0 27.6 \
+          1957.0833333333333 27.6 \
+          1957.1666666666667 27.7 \
+          1957.25 27.8 \
+          1957.3333333333333 27.9 \
+          1957.4166666666667 28.0 \
+          1957.5 28.1 \
+          1957.5833333333333 28.3 \
+          1957.6666666666667 28.3 \
+          1957.75 28.3 \
+          1957.8333333333333 28.3 \
+          1957.9166666666667 28.4 \
+          1958.0 28.4 \
+          1958.0833333333333 28.6 \
+          1958.1666666666667 28.6 \
+          1958.25 28.8 \
+          1958.3333333333333 28.9 \
+          1958.4166666666667 28.9 \
+          1958.5 28.9 \
+          1958.5833333333333 29.0 \
+          1958.6666666666667 28.9 \
+          1958.75 28.9 \
+          1958.8333333333333 28.9 \
+          1958.9166666666667 29.0 \
+          1959.0 28.9 \
+          1959.0833333333333 29.0 \
+          1959.1666666666667 28.9 \
+          1959.25 28.9 \
+          1959.3333333333333 29.0 \
+          1959.4166666666667 29.0 \
+          1959.5 29.1 \
+          1959.5833333333333 29.2 \
+          1959.6666666666667 29.2 \
+          1959.75 29.3 \
+          1959.8333333333333 29.4 \
+          1959.9166666666667 29.4 \
+          1960.0 29.4 \
+          1960.0833333333333 29.3 \
+          1960.1666666666667 29.4 \
+          1960.25 29.4 \
+          1960.3333333333333 29.5 \
+          1960.4166666666667 29.5 \
+          1960.5 29.6 \
+          1960.5833333333333 29.6 \
+          1960.6666666666667 29.6 \
+          1960.75 29.6 \
+          1960.8333333333333 29.8 \
+          1960.9166666666667 29.8 \
+          1961.0 29.8 \
+          1961.0833333333333 29.8 \
+          1961.1666666666667 29.8 \
+          1961.25 29.8 \
+          1961.3333333333333 29.8 \
+          1961.4166666666667 29.8 \
+          1961.5 29.8 \
+          1961.5833333333333 30.0 \
+          1961.6666666666667 29.9 \
+          1961.75 30.0 \
+          1961.8333333333333 30.0 \
+          1961.9166666666667 30.0 \
+          1962.0 30.0 \
+          1962.0833333333333 30.0 \
+          1962.1666666666667 30.1 \
+          1962.25 30.1 \
+          1962.3333333333333 30.2 \
+          1962.4166666666667 30.2 \
+          1962.5 30.2 \
+          1962.5833333333333 30.3 \
+          1962.6666666666667 30.3 \
+          1962.75 30.4 \
+          1962.8333333333333 30.4 \
+          1962.9166666666667 30.4 \
+          1963.0 30.4 \
+          1963.0833333333333 30.4 \
+          1963.1666666666667 30.4 \
+          1963.25 30.5 \
+          1963.3333333333333 30.5 \
+          1963.4166666666667 30.5 \
+          1963.5 30.6 \
+          1963.5833333333333 30.7 \
+          1963.6666666666667 30.7 \
+          1963.75 30.7 \
+          1963.8333333333333 30.8 \
+          1963.9166666666667 30.8 \
+          1964.0 30.9 \
+          1964.0833333333333 30.9 \
+          1964.1666666666667 30.9 \
+          1964.25 30.9 \
+          1964.3333333333333 30.9 \
+          1964.4166666666667 30.9 \
+          1964.5 31.0 \
+          1964.5833333333333 31.1 \
+          1964.6666666666667 31.0 \
+          1964.75 31.1 \
+          1964.8333333333333 31.1 \
+          1964.9166666666667 31.2 \
+          1965.0 31.2 \
+          1965.0833333333333 31.2 \
+          1965.1666666666667 31.2 \
+          1965.25 31.3 \
+          1965.3333333333333 31.4 \
+          1965.4166666666667 31.4 \
+          1965.5 31.6 \
+          1965.5833333333333 31.6 \
+          1965.6666666666667 31.6 \
+          1965.75 31.6 \
+          1965.8333333333333 31.7 \
+          1965.9166666666667 31.7 \
+          1966.0 31.8 \
+          1966.0833333333333 31.8 \
+          1966.1666666666667 32.0 \
+          1966.25 32.1 \
+          1966.3333333333333 32.3 \
+          1966.4166666666667 32.3 \
+          1966.5 32.4 \
+          1966.5833333333333 32.5 \
+          1966.6666666666667 32.7 \
+          1966.75 32.7 \
+          1966.8333333333333 32.9 \
+          1966.9166666666667 32.9 \
+          1967.0 32.9 \
+          1967.0833333333333 32.9 \
+          1967.1666666666667 32.9 \
+          1967.25 33.0 \
+          1967.3333333333333 33.1 \
+          1967.4166666666667 33.2 \
+          1967.5 33.3 \
+          1967.5833333333333 33.4 \
+          1967.6666666666667 33.5 \
+          1967.75 33.6 \
+          1967.8333333333333 33.7 \
+          1967.9166666666667 33.8 \
+          1968.0 33.9 \
+          1968.0833333333333 34.1 \
+          1968.1666666666667 34.2 \
+          1968.25 34.3 \
+          1968.3333333333333 34.4 \
+          1968.4166666666667 34.5 \
+          1968.5 34.7 \
+          1968.5833333333333 34.9 \
+          1968.6666666666667 35.0 \
+          1968.75 35.1 \
+          1968.8333333333333 35.3 \
+          1968.9166666666667 35.4 \
+          1969.0 35.5 \
+          1969.0833333333333 35.6 \
+          1969.1666666666667 35.8 \
+          1969.25 36.1 \
+          1969.3333333333333 36.3 \
+          1969.4166666666667 36.4 \
+          1969.5 36.6 \
+          1969.5833333333333 36.8 \
+          1969.6666666666667 37.0 \
+          1969.75 37.1 \
+          1969.8333333333333 37.3 \
+          1969.9166666666667 37.5 \
+          1970.0 37.7 \
+          1970.0833333333333 37.8 \
+          1970.1666666666667 38.0 \
+          1970.25 38.2 \
+          1970.3333333333333 38.5 \
+          1970.4166666666667 38.6 \
+          1970.5 38.8 \
+          1970.5833333333333 39.0 \
+          1970.6666666666667 39.0 \
+          1970.75 39.2 \
+          1970.8333333333333 39.4 \
+          1970.9166666666667 39.6 \
+          1971.0 39.8 \
+          1971.0833333333333 39.8 \
+          1971.1666666666667 39.9 \
+          1971.25 40.0 \
+          1971.3333333333333 40.1 \
+          1971.4166666666667 40.3 \
+          1971.5 40.6 \
+          1971.5833333333333 40.7 \
+          1971.6666666666667 40.8 \
+          1971.75 40.8 \
+          1971.8333333333333 40.9 \
+          1971.9166666666667 40.9 \
+          1972.0 41.1 \
+          1972.0833333333333 41.1 \
+          1972.1666666666667 41.3 \
+          1972.25 41.4 \
+          1972.3333333333333 41.5 \
+          1972.4166666666667 41.6 \
+          1972.5 41.7 \
+          1972.5833333333333 41.9 \
+          1972.6666666666667 42.0 \
+          1972.75 42.1 \
+          1972.8333333333333 42.3 \
+          1972.9166666666667 42.4 \
+          1973.0 42.5 \
+          1973.0833333333333 42.6 \
+          1973.1666666666667 42.9 \
+          1973.25 43.3 \
+          1973.3333333333333 43.6 \
+          1973.4166666666667 43.9 \
+          1973.5 44.2 \
+          1973.5833333333333 44.3 \
+          1973.6666666666667 45.1 \
+          1973.75 45.2 \
+          1973.8333333333333 45.6 \
+          1973.9166666666667 45.9 \
+          1974.0 46.2 \
+          1974.0833333333333 46.6 \
+          1974.1666666666667 47.2 \
+          1974.25 47.8 \
+          1974.3333333333333 48.0 \
+          1974.4166666666667 48.6 \
+          1974.5 49.0 \
+          1974.5833333333333 49.4 \
+          1974.6666666666667 50.0 \
+          1974.75 50.6 \
+          1974.8333333333333 51.1 \
+          1974.9166666666667 51.5 \
+          1975.0 51.9 \
+          1975.0833333333333 52.1 \
+          1975.1666666666667 52.5 \
+          1975.25 52.7 \
+          1975.3333333333333 52.9 \
+          1975.4166666666667 53.2 \
+          1975.5 53.6 \
+          1975.5833333333333 54.2 \
+          1975.6666666666667 54.3 \
+          1975.75 54.6 \
+          1975.8333333333333 54.9 \
+          1975.9166666666667 55.3 \
+          1976.0 55.5 \
+          1976.0833333333333 55.6 \
+          1976.1666666666667 55.8 \
+          1976.25 55.9 \
+          1976.3333333333333 56.1 \
+          1976.4166666666667 56.5 \
+          1976.5 56.8 \
+          1976.5833333333333 57.1 \
+          1976.6666666666667 57.4 \
+          1976.75 57.6 \
+          1976.8333333333333 57.9 \
+          1976.9166666666667 58.0 \
+          1977.0 58.2 \
+          1977.0833333333333 58.5 \
+          1977.1666666666667 59.1 \
+          1977.25 59.5 \
+          1977.3333333333333 60.0 \
+          1977.4166666666667 60.3 \
+          1977.5 60.7 \
+          1977.5833333333333 61.0 \
+          1977.6666666666667 61.2 \
+          1977.75 61.4 \
+          1977.8333333333333 61.6 \
+          1977.9166666666667 61.9 \
+          1978.0 62.1 \
+          1978.0833333333333 62.5 \
+          1978.1666666666667 62.9 \
+          1978.25 63.4 \
+          1978.3333333333333 63.9 \
+          1978.4166666666667 64.5 \
+          1978.5 65.2 \
+          1978.5833333333333 65.7 \
+          1978.6666666666667 66.0 \
+          1978.75 66.5 \
+          1978.8333333333333 67.1 \
+          1978.9166666666667 67.4 \
+          1979.0 67.7 \
+          1979.0833333333333 68.3 \
+          1979.1666666666667 69.1 \
+          1979.25 69.8 \
+          1979.3333333333333 70.6 \
+          1979.4166666666667 71.5 \
+          1979.5 72.3 \
+          1979.5833333333333 73.1 \
+          1979.6666666666667 73.8 \
+          1979.75 74.6 \
+          1979.8333333333333 75.2 \
+          1979.9166666666667 75.9 \
+          1980.0 76.7 \
+          1980.0833333333333 77.8 \
+          1980.1666666666667 78.9 \
+          1980.25 80.1 \
+          1980.3333333333333 81.0 \
+          1980.4166666666667 81.8 \
+          1980.5 82.7 \
+          1980.5833333333333 82.7 \
+          1980.6666666666667 83.3 \
+          1980.75 84.0 \
+          1980.8333333333333 84.8 \
+          1980.9166666666667 85.5 \
+          1981.0 86.3 \
+          1981.0833333333333 87.0 \
+          1981.1666666666667 87.9 \
+          1981.25 88.5 \
+          1981.3333333333333 89.1 \
+          1981.4166666666667 89.8 \
+          1981.5 90.6 \
+          1981.5833333333333 91.6 \
+          1981.6666666666667 92.3 \
+          1981.75 93.2 \
+          1981.8333333333333 93.4 \
+          1981.9166666666667 93.7 \
+          1982.0 94.0 \
+          1982.0833333333333 94.3 \
+          1982.1666666666667 94.6 \
+          1982.25 94.5 \
+          1982.3333333333333 94.9 \
+          1982.4166666666667 95.8 \
+          1982.5 97.0 \
+          1982.5833333333333 97.5 \
+          1982.6666666666667 97.7 \
+          1982.75 97.9 \
+          1982.8333333333333 98.2 \
+          1982.9166666666667 98.0 \
+          1983.0 97.6 \
+          1983.0833333333333 97.8 \
+          1983.1666666666667 97.9 \
+          1983.25 97.9 \
+          1983.3333333333333 98.6 \
+          1983.4166666666667 99.2 \
+          1983.5 99.5 \
+          1983.5833333333333 99.9 \
+          1983.6666666666667 100.2 \
+          1983.75 100.7 \
+          1983.8333333333333 101.0 \
+          1983.9166666666667 101.2 \
+          1984.0 101.3 \
+          1984.0833333333333 101.9 \
+          1984.1666666666667 102.4 \
+          1984.25 102.6 \
+          1984.3333333333333 103.1 \
+          1984.4166666666667 103.4 \
+          1984.5 103.7 \
+          1984.5833333333333 104.1 \
+          1984.6666666666667 104.5 \
+          1984.75 105.0 \
+          1984.8333333333333 105.3 \
+          1984.9166666666667 105.3 \
+          1985.0 105.3 \
+          1985.0833333333333 105.5 \
+          1985.1666666666667 106.0 \
+          1985.25 106.4 \
+          1985.3333333333333 106.9 \
+          1985.4166666666667 107.3 \
+          1985.5 107.6 \
+          1985.5833333333333 107.8 \
+          1985.6666666666667 108.0 \
+          1985.75 108.3 \
+          1985.8333333333333 108.7 \
+          1985.9166666666667 109.0 \
+          1986.0 109.3 \
+          1986.0833333333333 109.6 \
+          1986.1666666666667 109.3 \
+          1986.25 108.8 \
+          1986.3333333333333 108.6 \
+          1986.4166666666667 108.9 \
+          1986.5 109.5 \
+          1986.5833333333333 109.5 \
+          1986.6666666666667 109.7 \
+          1986.75 110.2 \
+          1986.8333333333333 110.3 \
+          1986.9166666666667 110.4 \
+          1987.0 110.5 \
+          1987.0833333333333 111.2 \
+          1987.1666666666667 111.6 \
+          1987.25 112.1 \
+          1987.3333333333333 112.7 \
+          1987.4166666666667 113.1 \
+          1987.5 113.5 \
+          1987.5833333333333 113.8 \
+          1987.6666666666667 114.4 \
+          1987.75 115.0 \
+          1987.8333333333333 115.3 \
+          1987.9166666666667 115.4 \
+          1988.0 115.4 \
+          1988.0833333333333 115.7 \
+          1988.1666666666667 116.0 \
+          1988.25 116.5 \
+          1988.3333333333333 117.1 \
+          1988.4166666666667 117.5 \
+          1988.5 118.0 \
+          1988.5833333333333 118.5 \
+          1988.6666666666667 119.0 \
+          1988.75 119.8 \
+          1988.8333333333333 120.2 \
+          1988.9166666666667 120.3 \
+          1989.0 120.5 \
+          1989.0833333333333 121.1 \
+          1989.1666666666667 121.6 \
+          1989.25 122.3 \
+          1989.3333333333333 123.1 \
+          1989.4166666666667 123.8 \
+          1989.5 124.1 \
+          1989.5833333333333 124.4 \
+          1989.6666666666667 124.6 \
+          1989.75 125.0 \
+          1989.8333333333333 125.6 \
+          1989.9166666666667 125.9 \
+          1990.0 126.1 \
+          1990.0833333333333 127.4 \
+          1990.1666666666667 128.0 \
+          1990.25 128.7 \
+          1990.3333333333333 128.9 \
+          1990.4166666666667 129.2 \
+          1990.5 129.9 \
+          1990.5833333333333 130.4 \
+          1990.6666666666667 131.6 \
+          1990.75 132.7 \
+          1990.8333333333333 133.5 \
+          1990.9166666666667 133.8 \
+          1991.0 133.8 \
+          1991.0833333333333 134.6 \
+          1991.1666666666667 134.8 \
+          1991.25 135.0 \
+          1991.3333333333333 135.2 \
+          1991.4166666666667 135.6 \
+          1991.5 136.0 \
+          1991.5833333333333 136.2 \
+          1991.6666666666667 136.6 \
+          1991.75 137.2 \
+          1991.8333333333333 137.4 \
+          1991.9166666666667 137.8 \
+          1992.0 137.9 \
+          1992.0833333333333 138.1 \
+          1992.1666666666667 138.6 \
+          1992.25 139.3 \
+          1992.3333333333333 139.5 \
+          1992.4166666666667 139.7 \
+          1992.5 140.2 \
+          1992.5833333333333 140.5 \
+          1992.6666666666667 140.9 \
+          1992.75 141.3 \
+          1992.8333333333333 141.8 \
+          1992.9166666666667 142.0 \
+          1993.0 141.9 \
+          1993.0833333333333 142.6 \
+          1993.1666666666667 143.1 \
+          1993.25 143.6 \
+          1993.3333333333333 144.0 \
+          1993.4166666666667 144.2 \
+          1993.5 144.4 \
+          1993.5833333333333 144.4 \
+          1993.6666666666667 144.8 \
+          1993.75 145.1 \
+          1993.8333333333333 145.7 \
+          1993.9166666666667 145.8 \
+          1994.0 145.8 \
+          1994.0833333333333 146.2 \
+          1994.1666666666667 146.7 \
+          1994.25 147.2 \
+          1994.3333333333333 147.4 \
+          1994.4166666666667 147.5 \
+          1994.5 148.0 \
+          1994.5833333333333 148.4 \
+          1994.6666666666667 149.0 \
+          1994.75 149.4 \
+          1994.8333333333333 149.5 \
+          1994.9166666666667 149.7 \
+          1995.0 149.7 \
+          1995.0833333333333 150.3 \
+          1995.1666666666667 150.9 \
+          1995.25 151.4 \
+          1995.3333333333333 151.9 \
+          1995.4166666666667 152.2 \
+          1995.5 152.5 \
+          1995.5833333333333 152.5 \
+          1995.6666666666667 152.9 \
+          1995.75 153.2 \
+          1995.8333333333333 153.7 \
+          1995.9166666666667 153.6 \
+          1996.0 153.5 \
+          1996.0833333333333 154.4 \
+          1996.1666666666667 154.9 \
+          1996.25 155.7 \
+          1996.3333333333333 156.3 \
+          1996.4166666666667 156.6 \
+          1996.5 156.7 \
+          1996.5833333333333 157.0 \
+          1996.6666666666667 157.3 \
+          1996.75 157.8 \
+          1996.8333333333333 158.3 \
+          1996.9166666666667 158.6 \
+          1997.0 158.6 \
+          1997.0833333333333 159.1 \
+          1997.1666666666667 159.6 \
+          1997.25 160.0 \
+          1997.3333333333333 160.2 \
+          1997.4166666666667 160.1 \
+          1997.5 160.3 \
+          1997.5833333333333 160.5 \
+          1997.6666666666667 160.8 \
+          1997.75 161.2 \
+          1997.8333333333333 161.6 \
+          1997.9166666666667 161.5 \
+          1998.0 161.3 \
+          1998.0833333333333 161.6 \
+          1998.1666666666667 161.9 \
+          1998.25 162.2 \
+          1998.3333333333333 162.5 \
+          1998.4166666666667 162.8 \
+          1998.5 163.0 \
+          1998.5833333333333 163.2 \
+          1998.6666666666667 163.4 \
+          1998.75 163.6 \
+          1998.8333333333333 164.0 \
+          1998.9166666666667 164.0 \
+          1999.0 163.9 \
+          1999.0833333333333 164.3 \
+          1999.1666666666667 164.5 \
+          1999.25 165.0 \
+          1999.3333333333333 166.2 \
+          1999.4166666666667 166.2 \
+          1999.5 166.2 \
+          1999.5833333333333 166.7 \
+          1999.6666666666667 167.1 \
+          1999.75 167.9 \
+          1999.8333333333333 168.2 \
+          1999.9166666666667 168.3 \
+          2000.0 168.3 \
+          2000.0833333333333 168.8 \
+          2000.1666666666667 169.8 \
+          2000.25 171.2 \
+          2000.3333333333333 171.3 \
+          2000.4166666666667 171.5 \
+          2000.5 172.4 \
+          2000.5833333333333 172.8 \
+          2000.6666666666667 172.8 \
+          2000.75 173.7 \
+          2000.8333333333333 174.0 \
+          2000.9166666666667 174.1 \
+          2001.0 174.0 \
+          2001.0833333333333 175.1 \
+          2001.1666666666667 175.8 \
+          2001.25 176.2 \
+          2001.3333333333333 176.9 \
+          2001.4166666666667 177.7 \
+          2001.5 178.0 \
+          2001.5833333333333 177.5 \
+          2001.6666666666667 177.5 \
+          2001.75 178.3 \
+          2001.8333333333333 177.7 \
+          2001.9166666666667 177.4 \
+          2002.0 176.7 \
+          2002.0833333333333 177.1 \
+          2002.1666666666667 177.8 \
+          2002.25 178.8 \
+          2002.3333333333333 179.8 \
+          2002.4166666666667 179.8 \
+          2002.5 179.9 \
+          2002.5833333333333 180.1 \
+          2002.6666666666667 180.7 \
+          2002.75 181.0 \
+          2002.8333333333333 181.3 \
+          2002.9166666666667 181.3 \
+          2003.0 180.9 \
+          2003.0833333333333 181.7 \
+          2003.1666666666667 183.1 \
+          2003.25 184.2 \
+          2003.3333333333333 183.8 \
+          2003.4166666666667 183.5 \
+          2003.5 183.7 \
+          2003.5833333333333 183.9 \
+          2003.6666666666667 184.6 \
+          2003.75 185.2 \
+          2003.8333333333333 185.0 \
+          2003.9166666666667 184.5 \
+          2004.0 184.3 \
+          2004.0833333333333 185.2 \
+          2004.1666666666667 186.2 \
+          2004.25 187.4 \
+          2004.3333333333333 188.0 \
+          2004.4166666666667 189.1 \
+          2004.5 189.7 \
+          2004.5833333333333 189.4 \
+          2004.6666666666667 189.5 \
+          2004.75 189.9 \
+          2004.8333333333333 190.9 \
+          2004.9166666666667 191.0 \
+          2005.0 190.3 \
+          2005.0833333333333 190.7 \
+          2005.1666666666667 191.8 \
+          2005.25 193.3 \
+          2005.3333333333333 194.6 \
+          2005.4166666666667 194.4 \
+          2005.5 194.5 \
+          2005.5833333333333 195.4 \
+          2005.6666666666667 196.4 \
+          2005.75 198.8 \
+          2005.8333333333333 199.2 \
+          2005.9166666666667 197.6 \
+          2006.0 196.8 \
+          2006.0833333333333 198.3 \
+          2006.1666666666667 198.7 \
+          2006.25 199.8 \
+          2006.3333333333333 201.5 \
+          2006.4166666666667 202.5 \
+          2006.5 202.9 \
+          2006.5833333333333 203.5 \
+          2006.6666666666667 203.9 \
+          2006.75 202.9 \
+          2006.8333333333333 201.8 \
+          2006.9166666666667 201.5 \
+          2007.0 201.8 \
+          2007.0833333333333 202.416 \
+          2007.1666666666667 203.499 \
+          2007.25 205.352 \
+          2007.3333333333333 206.686 \
+          2007.4166666666667 207.949 \
+          2007.5 208.352 \
+          2007.5833333333333 208.299 \
+          2007.6666666666667 207.917 \
+          2007.75 208.490 \
+          2007.8333333333333 208.936 \
+          2007.9166666666667 210.177 \
+          2008.0 210.036 \
+          2008.0833333333333 211.080 \
+          2008.1666666666667 211.693 \
+          2008.25 213.528 \
+          2008.3333333333333 214.823 \
+          2008.4166666666667 216.632 \
+          2008.5 218.815 \
+          2008.5833333333333 219.964 \
+          2008.6666666666667 219.086 \
+          2008.75 218.783 \
+          2008.8333333333333 216.573 \
+          2008.9166666666667 212.425 \
+          2009.0 210.228 \
+          2009.0833333333333 211.143 \
+          2009.1666666666667 212.193 \
+          2009.25 212.709 \
+          2009.3333333333333 213.240 \
+          2009.4166666666667 213.856 \
+          2009.5 215.693 \
+          2009.5833333333333 215.351 \
+          2009.6666666666667 215.834 \
+          2009.75 215.969 \
+          2009.8333333333333 216.177 \
+          2009.9166666666667 216.330 \
+          2010.0 215.949 \
+          2010.0833333333333 216.687 \
+          2010.1666666666667 216.741 \
+          2010.25 217.631 \
+          2010.3333333333333 218.009 \
+          2010.4166666666667 218.178 \
+          2010.5 217.965 \
+          2010.5833333333333 218.011 \
+          2010.6666666666667 218.312 \
+          2010.75 218.439 \
+          2010.8333333333333 218.711 \
+          2010.9166666666667 218.803 \
+          2011.0 219.179 \
+          2011.0833333333333 220.223 \
+          2011.1666666666667 221.309 \
+          2011.25 223.467 \
+          2011.3333333333333 224.906 \
+          2011.4166666666667 225.964 \
+          2011.5 225.722 \
+          2011.5833333333333 225.922 \
+          2011.6666666666667 226.545 \
+          2011.75 226.889 \
+          2011.8333333333333 226.421 \
+          2011.9166666666667 226.230 \
+          2012.0 225.672 \
+          2012.0833333333333 226.665 \
+          2012.1666666666667 227.663 \
+          2012.25 229.392 \
+          2012.3333333333333 230.085 \
+          2012.4166666666667 229.815 \
+          2012.5 229.478 \
+          2012.5833333333333 229.104 \
+          2012.6666666666667 230.379 \
+          2012.75 231.407 \
+          2012.8333333333333 231.317 \
+          2012.9166666666667 230.221 \
+          2013.0 229.601 \
+          2013.0833333333333 230.280 \
+          2013.1666666666667 232.166 \
+          2013.25 232.773 \
+          2013.3333333333333 232.531 \
+          2013.4166666666667 232.945 \
+          2013.5 233.504 \
+          2013.5833333333333 233.596 \
+          2013.6666666666667 233.877 \
+          2013.75 234.149 \
+          2013.8333333333333 233.546 \
+          2013.9166666666667 233.069 \
+          2014.0 233.049 \
+          2014.0833333333333 233.916 \
+          2014.1666666666667 234.781 \
+          2014.25 236.293 \
+          2014.3333333333333 237.072 \
+          2014.4166666666667 237.900 \
+          2014.5 238.343 \
+          2014.5833333333333 238.250 \
+          2014.6666666666667 237.852 \
+          2014.75 238.031 \
+          2014.8333333333333 237.433 \
+          2014.9166666666667 236.151 \
+          2015.0 234.812 \
+          2015.0833333333333 233.707 \
+          2015.1666666666667 234.722 \
+          2015.25 236.119 \
+          2015.3333333333333 236.599 \
+          2015.4166666666667 237.805 \
+          2015.5 238.638 \
+          2015.5833333333333 238.654 \
+          2015.6666666666667 238.316 \
+          2015.75 237.945 \
+          2015.8333333333333 237.838 \
+          2015.9166666666667 237.336 \
+          2016.0 236.525 \
+          2016.0833333333333 236.916 \
+          2016.1666666666667 237.111 \
+          2016.25 238.132 \
+          2016.3333333333333 239.261 \
+          2016.4166666666667 240.229 \
+          2016.5 241.018 \
+          2016.5833333333333 240.628 \
+          2016.6666666666667 240.849 \
+          2016.75 241.428 \
+          2016.8333333333333 241.729 \
+          2016.9166666666667 241.353 \
+          2017.0 241.432 \
+          2017.0833333333333 242.839 \
+          2017.1666666666667 243.603 \
+          2017.25 243.801 \
+          2017.3333333333333 244.524 \
+          2017.4166666666667 244.733 \
+          2017.5 244.955 \
+          2017.5833333333333 244.786 \
+          2017.6666666666667 245.519 \
+          2017.75 246.819 \
+          2017.8333333333333 246.663 \
+          2017.9166666666667 246.669 \
+          2018.0 246.524 \
+          2018.0833333333333 247.867 \
+          2018.1666666666667 248.991 \
+          2018.25 249.554 \
+          2018.3333333333333 250.546 \
+          2018.4166666666667 251.588 \
+          2018.5 251.989 \
+          2018.5833333333333 252.006 \
+          2018.6666666666667 252.146 \
+          2018.75 252.439 \
+          2018.8333333333333 252.885 \
+          2018.9166666666667 252.038 \
+          2019.0 251.233 \
+          2019.0833333333333 251.712 \
+          2019.1666666666667 252.776 \
+          2019.25 254.202 \
+          2019.3333333333333 255.548 \
+          2019.4166666666667 256.092 \
+          2019.5 256.143 \
+          2019.5833333333333 256.571 \
+          2019.6666666666667 256.558 \
+          2019.75 256.759 \
+          2019.8333333333333 257.346 \
+          2019.9166666666667 257.208 \
+          2020.0 256.974 \
+          2020.0833333333333 257.971 \
+          2020.1666666666667 258.678 \
+          2020.25 258.115 \
+          2020.3333333333333 256.389 \
+          2020.4166666666667 256.394 \
+          2020.5 257.797 \
+          2020.5833333333333 259.101 \
+          2020.6666666666667 259.918 \
+          2020.75 260.280 \
+          2020.8333333333333 260.388 \
+          2020.9166666666667 260.229 \
+          2021.0 260.474 \
+          2021.0833333333333 261.582 \
+          2021.1666666666667 263.014 \
+          2021.25 264.877 \
+          2021.3333333333333 267.054 \
+          2021.4166666666667 269.195 \
+          2021.5 271.696 \
+          2021.5833333333333 273.003 \
+          2021.6666666666667 273.567 \
+          2021.75 274.310 \
+          2021.8333333333333 276.589 \
+          2021.9166666666667 277.948 \
+          2022.0 278.802 \
+          2022.0833333333333 281.148 \
+          2022.1666666666667 283.716 \
+          2022.25 287.504 \
+          2022.3333333333333 289.109 \
+          2022.4166666666667 292.296 \
+          2022.5 296.311 \
+          2022.5833333333333 296.276 \
+          2022.6666666666667 296.171 \
+          2022.75 296.808 \
+          2022.8333333333333 298.012 \
+          2022.9166666666667 297.711 \
+          2023.0 296.797 \
+          2023.0833333333333 299.170 \
+          2023.1666666666667 300.840 \
+          2023.25 301.836 \
+          2023.3333333333333 303.363 \
+          2023.4166666666667 304.127 \
+          2023.5 305.109 \
+          2023.5833333333333 305.691 \
+          2023.6666666666667 307.026 \
+          2023.75 307.789 \
+          2023.8333333333333 307.671 \
+          2023.9166666666667 307.051 \
+          2024.0 306.746 \
+          2024.0833333333333 308.417 \
+
+UScpi_now          308.417
+UScpi_lastdate     2024.0833333333333
+
+USdollars_in(date) units=[1;$] domain=[1913.0833333333333,2024.0833333333333] \
+                               range=[1,31.471122448979585] \
+                               US$ UScpi_now / UScpi(date) ;\
+                               ~UScpi(US$ UScpi_now / USdollars_in)
+USinflation_since(date) units=[1;1] domain=[1913.0833333333333,2024.0833333333333] \
+                               range=[1,31.471122448979585] \
+                                UScpi_now / UScpi(date) ;\
+                               ~UScpi(UScpi_now / USinflation_since)
+
diff --git a/Units.app/Contents/MacOS/currency.units b/Units.app/Contents/MacOS/currency.units
new file mode 100644
index 0000000..d4009f7
--- /dev/null
+++ b/Units.app/Contents/MacOS/currency.units
@@ -0,0 +1,378 @@
+# ISO Currency Codes
+
+ATS                    austriaschilling
+BEF                    belgiumfranc
+CYP                    cypruspound
+EEK                    estoniakroon
+FIM                    finlandmarkka
+FRF                    francefranc
+DEM                    germanymark
+GRD                    greecedrachma
+IEP                    irelandpunt
+ITL                    italylira
+LVL                    latvialats
+LTL                    lithuanialitas
+LUF                    luxembourgfranc
+MTL                    maltalira
+SKK                    slovakiakoruna
+SIT                    sloveniatolar
+ESP                    spainpeseta
+NLG                    netherlandsguilder
+PTE                    portugalescudo
+CVE                    capeverdeescudo
+BGN                    bulgarialev
+BAM                    bosniaconvertiblemark
+KMF                    comorosfranc
+XOF                    westafricafranc
+XPF                    cfpfranc
+XAF                    centralafricacfafranc
+AED                    uaedirham
+AFN                    afghanistanafghani
+ALL                    albanialek
+AMD                    armeniadram
+ANG                    antillesguilder
+AOA                    angolakwanza
+ARS                    argentinapeso
+AUD                    australiadollar
+AWG                    arubaflorin
+AZN                    azerbaijanmanat
+BBD                    barbadosdollar
+BDT                    bangladeshtaka
+BHD                    bahraindinar
+BIF                    burundifranc
+BMD                    bermudadollar
+BND                    bruneidollar
+BOB                    boliviaboliviano
+BRL                    brazilreal
+BSD                    bahamasdollar
+BTN                    bhutanngultrum
+BWP                    botswanapula
+BYN                    belarusruble
+BYR                    oldbelarusruble
+BZD                    belizedollar
+CAD                    canadadollar
+CDF                    drcfranccongolais
+CHF                    swissfranc
+CLP                    chilepeso
+CNY                    chinayuan
+COP                    colombiapeso
+CRC                    costaricacolon
+CUP                    cubapeso
+CZK                    czechiakoruna
+DJF                    djiboutifranc
+DKK                    denmarkkrone
+DOP                    dominicanrepublicpeso
+DZD                    algeriadinar
+EGP                    egyptpound
+ERN                    eritreanakfa
+ETB                    ethiopiabirr
+EUR                    euro
+FJD                    fijidollar
+FKP                    falklandislandspound
+GBP                    ukpound
+GEL                    georgialari
+GHS                    ghanacedi
+GIP                    gibraltarpound
+GMD                    gambiadalasi
+GNF                    guineafranc
+GTQ                    guatemalaquetzal
+GYD                    guyanadollar
+HKD                    hongkongdollar
+HNL                    honduraslempira
+HRK                    croatiakuna
+HTG                    haitigourde
+HUF                    hungaryforint
+IDR                    indonesiarupiah
+ILS                    israelnewshekel
+INR                    indiarupee
+IQD                    iraqdinar
+IRR                    iranrial
+ISK                    icelandkrona
+JMD                    jamaicadollar
+JOD                    jordandinar
+JPY                    japanyen
+KES                    kenyaschilling
+KGS                    kyrgyzstansom
+KHR                    cambodiariel
+KRW                    southkoreawon
+KWD                    kuwaitdinar
+KYD                    caymanislandsdollar
+KZT                    kazakhstantenge
+LAK                    laokip
+LBP                    lebanonpound
+LKR                    srilankarupee
+LRD                    liberiadollar
+LSL                    lesotholoti
+LYD                    libyadinar
+MAD                    moroccodirham
+MDL                    moldovaleu
+MGA                    madagascarariary
+MKD                    macedoniadenar
+MMK                    myanmarkyat
+MNT                    mongoliatugrik
+MOP                    macaupataca
+MRO                    mauritaniaoldouguiya
+MRU                    mauritaniaouguiya
+MUR                    mauritiusrupee
+MVR                    maldiverufiyaa
+MWK                    malawikwacha
+MXN                    mexicopeso
+MYR                    malaysiaringgit
+MZN                    mozambiquemetical
+NAD                    namibiadollar
+NGN                    nigerianaira
+NIO                    nicaraguacordobaoro
+NOK                    norwaykrone
+NPR                    nepalrupee
+NZD                    newzealanddollar
+OMR                    omanrial
+PAB                    panamabalboa
+PEN                    perunuevosol
+PGK                    papuanewguineakina
+PHP                    philippinepeso
+PKR                    pakistanrupee
+PLN                    polandzloty
+PYG                    paraguayguarani
+QAR                    qatarrial
+RON                    romanianewlei
+RSD                    serbiadinar
+RUB                    russiaruble
+RWF                    rwandafranc
+SAR                    saudiarabiariyal
+SBD                    solomonislandsdollar
+SCR                    seychellesrupee
+SDG                    sudanpound
+SEK                    swedenkrona
+SGD                    singaporedollar
+SHP                    sainthelenapound
+SOS                    somaliaschilling
+SRD                    surinamedollar
+SSP                    southsudanpound
+STN                    saotome&principedobra
+SYP                    syriapound
+SZL                    swazilandlilangeni
+THB                    thailandbaht
+TJS                    tajikistansomoni
+TMT                    turkmenistanmanat
+TND                    tunisiadinar
+TOP                    tongapa'anga
+TRY                    turkeylira
+TTD                    trinidadandtobagodollar
+TWD                    taiwandollar
+TZS                    tanzaniashilling
+UAH                    ukrainehryvnia
+UGX                    ugandaschilling
+USD                    US$
+UYU                    uruguaypeso
+UZS                    uzbekistansum
+VES                    venezuelabolivarsoberano
+VND                    vietnamdong
+VUV                    vanuatuvatu
+WST                    samoatala
+XCD                    eastcaribbeandollar
+XDR                    specialdrawingrights
+YER                    yemenrial
+ZAR                    southafricarand
+ZMW                    zambiakwacha
+ZWL                    zimbabwedollar
+FOK                    faroeislandskróna
+GGP                    guernseypound
+IMP                    isleofmanpound
+JEP                    jerseypound
+KID                    kiribatidollar
+TVD                    tuvaludollar
+
+# Currency exchange rates source 
+
+!message Currency exchange rates from exchangerate-api.com (USD base) on 2024-02-18
+
+austriaschilling          1|13.7603 euro
+belgiumfranc              1|40.3399 euro
+cypruspound               1|0.585274 euro
+estoniakroon              1|15.6466 euro # Equal to 1|8 germanymark
+finlandmarkka             1|5.94573 euro
+francefranc               1|6.55957 euro
+germanymark               1|1.95583 euro
+greecedrachma             1|340.75 euro
+irelandpunt               1|0.787564 euro
+italylira                 1|1936.27 euro
+latvialats                1|0.702804 euro
+lithuanialitas            1|3.4528 euro
+luxembourgfranc           1|40.3399 euro
+maltalira                 1|0.4293 euro
+slovakiakoruna            1|30.1260 euro
+sloveniatolar             1|239.640 euro
+spainpeseta               1|166.386 euro
+netherlandsguilder        1|2.20371 euro
+portugalescudo            1|200.482 euro
+capeverdeescudo           1|102.32146 USD
+bulgarialev               1|1.81495 USD
+bosniaconvertiblemark     1|1.814931 USD
+comorosfranc              1|456.526173 USD
+westafricafranc           1|655.957 euro
+cfpfranc                  1|119.33 euro
+centralafricacfafranc     1|608.701564 USD
+uaedirham                 1|3.6725 USD
+afghanistanafghani        1|73.656876 USD
+albanialek                1|96.383995 USD
+armeniadram               1|405.371152 USD
+antillesguilder           1|1.79 USD
+angolakwanza              1|834.493035 USD
+argentinapeso             1|835.05 USD
+australiadollar           1|1.530787 USD
+arubaflorin               1|1.79 USD
+azerbaijanmanat           1|1.700074 USD
+barbadosdollar            1|2 USD
+bangladeshtaka            1|109.733401 USD
+bahraindinar              1|0.376 USD
+burundifranc              1|2848.719924 USD
+bermudadollar             1|1 USD
+bruneidollar              1|1.346678 USD
+boliviaboliviano          1|6.914341 USD
+brazilreal                1|4.969881 USD
+bahamasdollar             1|1 USD
+bhutanngultrum            1|83.047418 USD
+botswanapula              1|13.70455 USD
+belarusruble              1|3.263231 USD
+oldbelarusruble           1|10000 BYN
+belizedollar              1|2 USD
+canadadollar              1|1.348296 USD
+drcfranccongolais         1|2734.755348 USD
+swissfranc                1|0.88091 USD
+chilepeso                 1|970.009669 USD
+chinayuan                 1|7.20772 USD
+colombiapeso              1|3902.397252 USD
+costaricacolon            1|515.061411 USD
+cubapeso                  1|24 USD
+czechiakoruna             1|23.6119 USD
+djiboutifranc             1|177.721 USD
+denmarkkrone              1|6.920726 USD
+dominicanrepublicpeso     1|58.466527 USD
+algeriadinar              1|134.550108 USD
+egyptpound                1|30.900171 USD
+eritreanakfa              1|15 USD
+ethiopiabirr              1|56.698745 USD
+euro                      1|0.927918 USD
+fijidollar                1|2.245823 USD
+falklandislandspound      1|0.793301 USD
+ukpound                   1|0.79329 USD
+georgialari               1|2.640683 USD
+ghanacedi                 1|12.494914 USD
+gibraltarpound            1|0.793301 USD
+gambiadalasi              1|67.296088 USD
+guineafranc               1|8559.047472 USD
+guatemalaquetzal          1|7.798364 USD
+guyanadollar              1|209.358835 USD
+hongkongdollar            1|7.821361 USD
+honduraslempira           1|24.642038 USD
+croatiakuna               1|6.991711 USD
+haitigourde               1|132.095521 USD
+hungaryforint             1|361.305161 USD
+indonesiarupiah           1|15646.731916 USD
+israelnewshekel           1|3.608087 USD
+indiarupee                1|83.047432 USD
+iraqdinar                 1|1309.627139 USD
+iranrial                  1|42008.843651 USD
+icelandkrona              1|138.489372 USD
+jamaicadollar             1|156.661345 USD
+jordandinar               1|0.709 USD
+japanyen                  1|150.199114 USD
+kenyaschilling            1|146.902355 USD
+kyrgyzstansom             1|89.452226 USD
+cambodiariel              1|4101.202091 USD
+southkoreawon             1|1332.971611 USD
+kuwaitdinar               1|0.307917 USD
+caymanislandsdollar       1|0.833333 USD
+kazakhstantenge           1|450.042707 USD
+laokip                    1|20644.611968 USD
+lebanonpound              1|15000 USD
+srilankarupee             1|312.293776 USD
+liberiadollar             1|191.965946 USD
+lesotholoti               1|18.880532 USD
+libyadinar                1|4.84801 USD
+moroccodirham             1|10.064941 USD
+moldovaleu                1|17.820146 USD
+madagascarariary          1|4537.101842 USD
+macedoniadenar            1|57.321607 USD
+myanmarkyat               1|2094.525805 USD
+mongoliatugrik            1|3417.236499 USD
+macaupataca               1|8.056002 USD
+mauritaniaoldouguiya      1|10 MRU
+mauritaniaouguiya         1|39.552376 USD
+mauritiusrupee            1|46.81275 USD
+maldiverufiyaa            1|15.425573 USD
+malawikwacha              1|1684.468367 USD
+mexicopeso                1|17.056723 USD
+malaysiaringgit           1|4.780422 USD
+mozambiquemetical         1|63.844874 USD
+namibiadollar             1|18.880532 USD
+nigerianaira              1|1505.315289 USD
+nicaraguacordobaoro       1|36.75264 USD
+norwaykrone               1|10.518312 USD
+nepalrupee                1|132.875868 USD
+newzealanddollar          1|1.631571 USD
+omanrial                  1|0.384497 USD
+panamabalboa              1|1 USD
+perunuevosol              1|3.843057 USD
+papuanewguineakina        1|3.787609 USD
+philippinepeso            1|55.944862 USD
+pakistanrupee             1|279.287134 USD
+polandzloty               1|4.024592 USD
+paraguayguarani           1|7298.359344 USD
+qatarrial                 1|3.64 USD
+romanianewlei             1|4.62094 USD
+serbiadinar               1|108.77002 USD
+russiaruble               1|92.124682 USD
+rwandafranc               1|1272.20422 USD
+saudiarabiariyal          1|3.75 USD
+solomonislandsdollar      1|8.524333 USD
+seychellesrupee           1|13.695244 USD
+sudanpound                1|458.444066 USD
+swedenkrona               1|10.436076 USD
+singaporedollar           1|1.346679 USD
+sainthelenapound          1|0.793301 USD
+somaliaschilling          1|571.016202 USD
+surinamedollar            1|36.374469 USD
+southsudanpound           1|1196.079061 USD
+saotome&principedobra     1|22.735009 USD
+syriapound                1|12911.027088 USD
+swazilandlilangeni        1|18.880532 USD
+thailandbaht              1|36.003485 USD
+tajikistansomoni          1|10.943604 USD
+turkmenistanmanat         1|3.498274 USD
+tunisiadinar              1|3.136987 USD
+tongapa'anga              1|2.336437 USD
+turkeylira                1|30.867129 USD
+trinidadandtobagodollar   1|6.766115 USD
+taiwandollar              1|31.327633 USD
+tanzaniashilling          1|2541.150426 USD
+ukrainehryvnia            1|37.960827 USD
+ugandaschilling           1|3891.664634 USD
+US$                       !        # Base unit, the primitive unit of currency
+uruguaypeso               1|39.090863 USD
+uzbekistansum             1|12517.91071 USD
+venezuelabolivarsoberano  1|36.3358 USD
+vietnamdong               1|24526.378093 USD
+vanuatuvatu               1|120.592113 USD
+samoatala                 1|2.727298 USD
+eastcaribbeandollar       1|2.7 USD
+specialdrawingrights      1|0.754888 USD
+yemenrial                 1|250.227651 USD
+southafricarand           1|18.880541 USD
+zambiakwacha              1|25.057128 USD
+zimbabwedollar            1|12390.655539 USD
+faroeislandskróna         DKK
+guernseypound             GBP
+isleofmanpound            GBP
+jerseypound               GBP
+kiribatidollar            AUD
+tuvaludollar              AUD
+bitcoin                   51884.75 US$ # From services.packetizer.com/btc
+
+
+# Precious metals prices from Packetizer (services.packetizer.com/spotprices)
+
+silverprice        23.42 US$/troyounce
+goldprice          2013.78 US$/troyounce
+platinumprice      915.15 US$/troyounce
+
diff --git a/Units.app/Contents/MacOS/definitions.units b/Units.app/Contents/MacOS/definitions.units
new file mode 100644
index 0000000..ddc3423
--- /dev/null
+++ b/Units.app/Contents/MacOS/definitions.units
@@ -0,0 +1,8418 @@
+#
+# This file is the units database for use with GNU units, a units conversion
+# program by Adrian Mariano adrianm@gnu.org
+#
+# Febuary 2024 Version 3.19
+# last updated 16 February 2024
+#
+# Copyright (C) 1996-2002, 2004-2020, 2022, 2024
+# Free Software Foundation, Inc
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA  02110-1301  USA
+#
+############################################################################
+#
+# Improvements and corrections are welcome.
+#
+# See the end of this file for a list of items we have chosen to exclude
+# or have decided are out of scope for GNU units.  
+#
+# Fundamental constants in this file are the 2018 CODATA recommended values.
+#
+# Most units data was drawn from
+#            1. NIST Special Publication 811, Guide for the
+#                 Use of the International System of Units (SI).
+#                 Barry N. Taylor. 2008
+#                 https://www.nist.gov/pml/special-publication-811
+#            2. CRC Handbook of Chemistry and Physics 70th edition
+#            3. Oxford English Dictionary
+#            4. Webster's New Universal Unabridged Dictionary
+#            5. Units of Measure by Stephen Dresner
+#            6. A Dictionary of English Weights and Measures by Ronald Zupko
+#            7. British Weights and Measures by Ronald Zupko
+#            8. Realm of Measure by Isaac Asimov
+#            9. United States standards of weights and measures, their
+#                   creation and creators by Arthur H. Frazier.
+#           10. French weights and measures before the Revolution: a
+#                   dictionary of provincial and local units by Ronald Zupko
+#           11. Weights and Measures: their ancient origins and their
+#                   development in Great Britain up to AD 1855 by FG Skinner
+#           12. The World of Measurements by H. Arthur Klein
+#           13. For Good Measure by William Johnstone
+#           14. NTC's Encyclopedia of International Weights and Measures
+#                   by William Johnstone
+#           15. Sizes by John Lord
+#           16. Sizesaurus by Stephen Strauss
+#           17. CODATA Recommended Values of Physical Constants available at
+#                   http://physics.nist.gov/cuu/Constants/index.html
+#           18. How Many?  A Dictionary of Units of Measurement.  Available at
+#                   http://www.ibiblio.org/units/
+#           19. Numericana.  http://www.numericana.com
+#           20. UK history of measurement
+#                   https://metrication.uk/more/timeline/
+#           21. NIST Handbook 44, Specifications, Tolerances, and
+#                 Other Technical Requirements for Weighing and Measuring
+#                 Devices. 2011
+#           22. NIST Special Publication 447, Weights and Measures Standards
+#                 of the United States: a brief history. Lewis V. Judson.
+#                 1963; rev. 1976
+#           23. CRC Handbook of Chemistry and Physics, 96th edition
+#           24. Dictionary of Scientific Units, 6th ed.  H.G.  Jerrard and D.B.
+#                 McNeill. 1992
+#           25. NIST Special Publication 330, The International System of
+#                 Units (SI). ed. Barry N. Taylor and Ambler Thompson. 2008
+#                 https://www.nist.gov/pml/special-publication-330
+#           26. BIPM Brochure, The International System of Units (SI).
+#                 9th ed., 2019
+#                 https://www.bipm.org/en/publications/si-brochure/
+#
+###########################################################################
+#
+# If units you use are missing or defined incorrectly, please contact me.
+# If your country's local units are missing and you are willing to supply
+# them, please send me a list.
+#
+###########################################################################
+
+###########################################################################
+#
+# Brief Philosophy of this file
+#
+# Most unit definitions are made in terms of integers or simple fractions of
+# other definitions.  The typical exceptions are when converting between two
+# different unit systems, or the values of measured physical constants.  In
+# this file definitions are given in the most natural and revealing way in
+# terms of integer factors.
+#
+# If you make changes be sure to run 'units --check' to check your work.
+#
+# The file is USA-centric, but there is some modest effort to support other
+# countries.  This file is now coded in UTF-8.  To support environments where
+# UTF-8 is not available, definitions that require this character set are
+# wrapped in !utf8 directives.
+#
+# When a unit name is used in different countries with the different meanings
+# the system should be as follows:
+#
+# Suppose countries ABC and XYZ both use the "foo".  Then globally define
+#
+#   ABCfoo  <some value>
+#   XYZfoo  <different value>
+#
+# Then, using the !locale directive, define the "foo" appropriately for each of
+# the two countries with a definition like
+#
+# !locale ABC
+#    foo  ABCfoo
+# !endlocale
+#
+###########################################################################
+
+!locale en_US
+!  set UNITS_ENGLISH US
+!endlocale
+
+!locale en_GB
+!  set UNITS_ENGLISH GB
+!endlocale
+
+!set UNITS_ENGLISH US   # Default setting for English units
+
+!set UNITS_SYSTEM default   # Set a default value
+
+!varnot UNITS_SYSTEM si emu esu gaussian gauss hlu natural natural-gauss hartree planck planck-red default 
+!message Unknown unit system given with -u or UNITS_SYSTEM environment variable
+!message Valid systems: si, emu, esu, gauss[ian], hlu, natural, natural-gauss
+!message                planck, planck-red, hartree
+!message Using SI
+!prompt (SI)
+!endvar
+
+!var UNITS_SYSTEM si
+!message SI units selected
+!prompt (SI)
+!endvar
+
+###########################################################################
+#                                                                         #
+# Primitive units.  Any unit defined to contain a '!' character is a      #
+# primitive unit which will not be reduced any further.  All units should #
+# reduce to primitive units.                                              #
+#                                                                         #
+###########################################################################
+
+#
+# SI units
+#
+# On 20 May 2019, the SI was revised to define the units by fixing the
+# values of physical constants that depend on those units.
+#
+# https://www.nist.gov/si-redefinition/
+#
+# The BIPM--the International Bureau of Weights and Measures--provides a
+# succinct description of the new SI in its Concise Summary:
+#
+# https://www.bipm.org/utils/common/pdf/si-brochure/SI-Brochure-9-concise-EN.pdf
+#
+#     The SI is the system of units in which:
+#
+#       *  the unperturbed ground state hyperfine transition frequency of the
+#          caesium 133 atom is delta nu_Cs = 9 192 631 770 Hz,
+#       *  the speed of light in vacuum, c, is 299 792 458 m/s,
+#       *  the Planck constant, h, is 6.626 070 15 * 10^-34 J s,
+#       *  the elementary charge, e, is 1.602 176 634 * 10^-19 C,
+#       *  the Boltzmann constant, k, is 1.380 649 * 10^-23 J/K,
+#       *  the Avogadro constant, N_A, is 6.022 140 76 * 10^23 mol^-1,
+#       *  the luminous efficacy of monochromatic radiation of frequency
+#          540 * 10^12 Hz, K_cd, is 683 lm/W,
+#
+#     where the hertz, joule, coulomb, lumen, and watt, with unit symbols Hz,
+#     J, C, lm, and W, respectively, are related to the units second, metre,
+#     kilogram, ampere, kelvin, mole, and candela, with unit symbols s, m, kg,
+#     A, K, mol, and cd, respectively, according to Hz = s^-1, J = kg m^2 s^-2,
+#     C = A s, lm = cd m^2 m^-2 = cd sr, and W = kg m^2 s^-3.
+# 
+#     These definitions specify the exact numerical value of each constant when
+#     its value is expressed in the corresponding SI unit.  By fixing the exact
+#     numerical value the unit becomes defined, since the product of the
+#     numerical value and the unit has to equal the value of the constant,
+#     which is invariant.
+# 
+#     The defining constants have been chosen such that, when taken together,
+#     their units cover all of the units of the SI.  In general, there is no
+#     one-to-one correspondence between the defining constants and the SI base
+#     units.  Any SI unit is a product of powers of these seven constants and a
+#     dimensionless factor.
+# 
+# Until 2018, the SI was defined in terms of base units and derived units.
+# These categories are no longer essential in the SI, but they are maintained
+# in view of their convenience and widespread use.  They are arguably more
+# intuitive than the new definitions.  (They are also essential to the
+# operation of GNU units.)  The definitions of the base units, which follow
+# from the definition of the SI in terms of the seven defining constants, are
+# given below.
+#
+
+s         !      # The second, symbol s, is the SI unit of time.  It is defined
+second    s      # by taking the fixed numerical value of the unperturbed
+                 # ground-state hyperfine transition frequency of the
+                 # cesium-133 atom to be 9 192 631 770 when expressed in the
+                 # unit Hz, which is equal to 1/s.  
+                 #
+                 # This definition is a restatement of the previous one, the
+                 # duration of 9192631770 periods of the radiation corresponding
+                 # to the cesium-133 transition.
+
+nu_133Cs  9192631770 Hz   # Cesium-133 transition frequency (exact)
+
+c_SI      299792458
+c         299792458 m/s   # speed of light in vacuum (exact)
+
+m         !      # The metre, symbol m, is the SI unit of length.  It is
+meter     m      # defined by taking the fixed numerical value of the speed
+metre     m      # of light in vacuum, c, to be 299 792 458 when expressed in
+                 # units of m/s.
+                 #
+                 # This definition is a rewording of the previous one and is
+                 # equivalent to defining the meter as the distance light
+                 # travels in 1|299792458 seconds.  The meter was originally
+                 # intended to be 1e-7 of the length along a meridian from the
+                 # equator to a pole.
+
+h_SI      6.62607015e-34
+h         6.62607015e-34 J s # Planck constant (exact)
+
+kg        !      # The kilogram, symbol kg, is the SI unit of mass.  It is
+kilogram  kg     # defined by taking the fixed numerical value of the Planck
+                 # constant, h, to be 6.626 070 15 * 10^-34 when expressed in
+                 # the unit J s which is equal to kg m^2 / s.
+                 # 
+                 # One advantage of fixing h to define the kilogram is that this
+                 # affects constants used to define the ampere.  If the kg were
+                 # defined by directly fixing the mass of something, then h
+                 # would be subject to error.
+                 #
+                 # The previous definition of the kilogram was the mass of the
+                 # international prototype kilogram.  The kilogram was the last
+                 # unit whose definition relied on reference to an artifact.
+                 #
+                 # It is not obvious what this new definition means, or
+                 # intuitively how fixing Planck's constant defines the
+                 # kilogram.  To define the kilogram we need to give the mass
+                 # of some reference in kilograms.  Previously the prototype in
+                 # France served as this reference, and it weighed exactly 1
+                 # kg.  But the reference can have any weight as long as you
+                 # know the weight of the reference.  The new definition uses
+                 # the "mass" of a photon, or more accurately, the mass
+                 # equivalent of the energy of a photon.  The energy of a
+                 # photon depends on its frequency.  If you pick a frequency,
+                 # f, then the energy of the photon is hf, and hence the mass
+                 # equivalent is hf/c^2.  If we reduce this expression using
+                 # the constant defined values for h and c the result is a
+                 # value in kilograms for the mass-equivalent of a photon of
+                 # frequency f, which can therefore define the size of the
+                 # kilogram.
+                 #
+                 # For more on the relationship between mass an Planck's
+                 # constant:
+                 #
+                 # https://www.nist.gov/si-redefinition/kilogram-mass-and-plancks-constant
+                 # This definition may still seem rather abstract: you can't
+                 # place a "kilogram of radiation" on one side of a balance.
+                 # Metrologists realize the kilogram using a Kibble Balance, a
+                 # device which relates mechanical energy to electrical energy
+                 # and can measure mass with extreme accuracy if h is known.
+                 #
+                 # For more on the Kibble Balance see
+                 #
+                 # https://www.nist.gov/si-redefinition/kilogram-kibble-balance
+                 # https://en.wikipedia.org/wiki/Kibble_balance
+
+k_SI      1.380649e-23
+boltzmann 1.380649e-23 J/K   # Boltzmann constant (exact)
+k         boltzmann
+
+K         !      # The kelvin, symbol K, is the SI unit of thermodynamic
+kelvin    K      # temperature.  It is defined by taking the fixed numerical
+                 # value of the Boltzmann constant, k, to be 1.380 649 * 10^-23
+                 # when expressed in the unit J/K, which is equal to 
+                 # kg m^2/s^2 K.
+                 #
+                 # The boltzmann constant establishes the relationship between
+                 # energy and temperature.  The average thermal energy carried
+                 # by each degree of freedom is kT/2.  A monatomic ideal gas
+                 # has three degrees of freedom corresponding to the three
+                 # spatial directions, which means its thermal energy is
+                 # (3/2) k T.
+                 #
+                 # The previous definition of the kelvin was based on the
+                 # triple point of water.  The change in the definition of the
+                 # kelvin will not have much effect on measurement practice.
+                 # Practical temperature calibration makes use of two scales,
+                 # the International Temperature Scale of 1990 (ITS-90), which
+                 # covers the range of 0.65 K to 1357.77K and the Provisional
+                 # Low Temperature Scale of 2000 (PLTS-2000), which covers the
+                 # range of 0.9 mK to 1 K.
+                 # https://www.bipm.org/en/committees/cc/cct/publications-cc.html
+                 #
+                 # The ITS-90 contains 17 reference points including things
+                 # like the triple point of hydrogen (13.8033 K) or the
+                 # freezing point of gold (1337.33 K), and of course the triple
+                 # point of water.  The PLTS-2000 specifies four reference
+                 # points, all based on properties of helium-3.
+                 #
+                 # The redefinition of the kelvin will not affect the values of
+                 # these reference points, which have been determined by
+                 # primary thermometry, using thermometers that rely only on
+                 # relationships that allow temperature to be calculated
+                 # directly without using any unknown quantities. Examples
+                 # include acoustic thermometers, which measure the speed of
+                 # sound in a gas, or electronic thermometers, which measure
+                 # tiny voltage fluctuations in resistors. Both variables
+                 # depend directly on temperature.
+
+e_SI      1.602176634e-19
+e         1.602176634e-19 C  # electron charge (exact)
+
+A         !      # The ampere, symbol A, is the SI unit of electric current.
+ampere    A      # It is defined by taking the fixed numerical value of the
+amp       ampere # elementary charge, e, to be 1.602 176 634 * 10^-19 when
+                 # expressed in the unit C, which is equal to A*s.
+                 #
+                 # The previous definition was the current which produces a
+                 # force of 2e-7 N/m between two infinitely long wires a meter
+                 # apart.  This definition was difficult to realize accurately.
+                 #
+                 # The ampere is actually realized by establishing the volt and
+                 # the ohm, since A = V / ohm.  These measurements can be done
+                 # using the Josephson effect and the quantum Hall effect,
+                 # which accurately measure voltage and resistance, respectively,
+                 # with reference to two fixed constants, the Josephson
+                 # constant, K_J=2e/h and the von Klitzing constant, R_K=h/e^2.
+                 # Under the previous SI system, these constants had official
+                 # fixed values, defined in 1990.  This created a situation
+                 # where the standard values for the volt and ohm were in some
+                 # sense outside of SI because they depended primarily on
+                 # constants different from the ones used to define SI. After
+                 # the revision, since e and h have exact definitions, the
+                 # Josephson and von Klitzing constants will also have exact
+                 # definitions that derive from SI instead of the conventional
+                 # 1990 values.
+                 #
+                 # In fact we know that there is a small offset between the
+                 # conventional values of the electrical units based on the
+                 # conventional 1990 values and the SI values.  The new
+                 # definition, which brings the practical electrical units back
+                 # into SI, will lead to a one time change of +0.1ppm for
+                 # voltage values and +0.02ppm for resistance values.
+                 #
+                 # The previous definition resulted in fixed exact values for
+                 # the vacuum permeability (mu0), the impedance of free space
+                 # (Z0), the vacuum permittivity (epsilon0), and the Coulomb
+                 # constant. With the new definition, these four values are
+                 # subject to experimental error.
+
+avogadro  6.02214076e23 / mol # Size of a mole (exact)
+N_A       avogadro
+
+mol       !      # The mole, symbol mol, is the SI unit of amount of
+mole      mol    # substance.  One mole contains exactly 6.022 140 76 * 10^23
+                 # elementary entities.  This number is the fixed numerical
+                 # value of the Avogadro constant, N_A, when expressed in the
+                 # unit 1/mol and is called the Avogadro number.  The amount of
+                 # substance, symbol n, of a system is a measure of the number
+                 # of specified elementary entities.  An elementary entity may
+                 # be an atom, a molecule, an ion, an electron, any other
+                 # particle or specified group of particles.
+                 #
+                 # The atomic mass unit (u) is defined as 1/12 the mass of
+                 # carbon-12.  Previously the mole was defined so that a mole
+                 # of carbon-12 weighed exactly 12g, or N_A u = 1 g/mol
+                 # exactly. This relationship is now an experimental, 
+                 # approximate relationship.
+                 #
+                 # To determine the size of the mole, researchers used spheres
+                 # of very pure silicon-28 that weighed a kilogram.  They
+                 # measured the molar mass of Si-28 using mass spectrometry and
+                 # used X-ray diffraction interferometry to determine the
+                 # spacing of the silicon atoms in the sphere.  Using the
+                 # sphere's volume it was then possible to determine the number
+                 # of silicon atoms in the sphere, and hence determine the
+                 # Avogadro constant.  The results of this experiment were used 
+                 # to define N_A, which is henceforth a fixed, unchanging
+                 # quantity.  
+
+cd        !      # The candela, symbol cd, is the SI unit of luminous intensity
+candela   cd     # in a given direction.  It is defined by taking the fixed
+                 # numerical value of the luminous efficacy of monochromatic
+                 # radiation of the frequency 540e12 Hz to be 683 when
+                 # expressed in the unit lumen/watt, which is equal to
+                 # cd sr/W, or cd sr s^3/kg m^2
+                 #
+                 # This definition is a rewording of the previous definition.
+                 # Luminous intensity differs from radiant intensity (W/sr) in
+                 # that it is adjusted for human perceptual dependence on
+                 # wavelength.  The frequency of 540e12 Hz (yellow;
+                 # wavelength approximately 555 nm in vacuum) is where human
+                 # perception is most efficient.
+                 
+K_cd 683 lumen/W # Luminous efficiency at 540e12 Hz (exact)
+
+# Angular Measure
+#
+# The radian and steradian are defined as dimensionless primitive units.
+# The radian is equal to m/m and the steradian to m^2/m^2 so these units are
+# dimensionless.  Retaining them as named units is useful because it allows
+# clarity in expressions and makes the meaning of unit definitions more clear.
+# These units will reduce to 1 in conversions but not for sums of units or for
+# arguments to functions.
+#
+
+radian    !dimensionless   # Plane angle subtended at the center of a circle by
+                           #   an arc equal in length to the radius of the
+                           #   circle.  
+                           #   Dimension: LENGTH (of arc) / DISTANCE (radius)
+
+sr        !dimensionless   # Solid angle which cuts off an area of the surface
+steradian sr               #   of the sphere equal to that of a square with
+                           #   sides of length equal to the radius of the
+                           #   sphere.
+                           #   Dimension: AREA (of surface) / DISTANCE^2
+                           #                                         (radius^2)
+#
+# A primitive non-SI unit
+#
+
+bit       !      # Basic unit of information (entropy).  The entropy in bits
+                 #   of a random variable over a finite alphabet is defined
+                 #   to be the sum of -p(i)*log2(p(i)) over the alphabet where
+                 #   p(i) is the probability that the random variable takes
+                 #   on the value i.
+
+#
+# Currency: the primitive unit of currency is defined in currency.units. 
+# It is usually the US$ or the euro, but it is user selectable.  
+#
+
+#
+# Absolute value
+#
+
+abs(x)                  noerror sqrt(x^2)  
+
+###########################################################################
+#                                                                         #
+# Prefixes (longer names must come first)                                 #
+#                                                                         #
+###########################################################################
+
+quetta-                 1e30     # Allegedly from "q" plus Greek "deka" (ten)
+ronna-                  1e27     # Allegedly from "r" plus Greek "ennea" (nine)
+yotta-                  1e24     # Greek or Latin "octo" (eight)
+zetta-                  1e21     # Latin "septem" (seven)
+exa-                    1e18     # Greek "hex" (six)
+peta-                   1e15     # Greek "pente" (five)
+tera-                   1e12     # Greek "teras" (monster)
+giga-                   1e9      # Greek "gigas" (giant)
+mega-                   1e6      # Greek "megas" (large)
+myria-                  1e4      # Not an official SI prefix
+kilo-                   1e3      # Greek "chilioi" (thousand)
+hecto-                  1e2      # Greek "hekaton" (hundred)
+deca-                   1e1      # Greek "deka" (ten)
+deka-                   deca
+deci-                   1e-1     # Latin "decimus" (tenth)
+centi-                  1e-2     # Latin "centum" (hundred)
+milli-                  1e-3     # Latin "mille" (thousand)
+micro-                  1e-6     # Latin "micro" or Greek "mikros" (small)
+nano-                   1e-9     # Latin "nanus" or Greek "nanos" (dwarf)
+pico-                   1e-12    # Spanish "pico" (a bit)
+femto-                  1e-15    # Danish-Norwegian "femten" (fifteen)
+atto-                   1e-18    # Danish-Norwegian "atten" (eighteen)
+zepto-                  1e-21    # Latin "septem" (seven)
+yocto-                  1e-24    # Greek or Latin "octo" (eight)
+ronto-                  1e-27    # Allegedly "r" plus Latin "novum" (nine)
+quecto-                 1e-30    # Allegedly "q" plus Latin "decim" (ten)
+
+quarter-                1|4
+semi-                   0.5
+demi-                   0.5
+hemi-                   0.5
+half-                   0.5
+double-                 2
+triple-                 3
+treble-                 3
+
+kibi-                   2^10     # In response to the improper and confusing
+mebi-                   2^20     # use of SI prefixes for powers of two,
+gibi-                   2^30     # the International Electrotechnical
+tebi-                   2^40     # Commission aproved these binary prefixes
+pebi-                   2^50     # in IEC 60027-2 Amendment 2 (1999).
+exbi-                   2^60
+zebi-                   2^70     # Zebi- and yobi- were added in the 2005 ed.,
+yobi-                   2^80     # later superseded by ISO/IEC 80000-13:2008.
+robi-                   2^90
+quebi-                  2^100
+Ki-                     kibi
+Mi-                     mebi
+Gi-                     gibi
+Ti-                     tebi
+Pi-                     pebi
+Ei-                     exbi
+Zi-                     zebi
+Yi-                     yobi
+Ri-                     robi
+Qi-                     quebi
+
+Q-                      quetta
+R-                      ronna
+Y-                      yotta
+Z-                      zetta
+E-                      exa
+P-                      peta
+T-                      tera
+G-                      giga
+M-                      mega
+k-                      kilo
+h-                      hecto
+da-                     deka
+d-                      deci
+c-                      centi
+m-                      milli
+u-                      micro   # it should be a mu but u is easy to type
+n-                      nano
+p-                      pico
+f-                      femto
+a-                      atto
+z-                      zepto
+y-                      yocto
+r-                      ronto
+q-                      quecto
+
+#
+# Names of some numbers
+#
+
+one                     1
+two                     2
+double                  2
+couple                  2
+three                   3
+triple                  3
+four                    4
+quadruple               4
+five                    5
+quintuple               5
+six                     6
+seven                   7
+eight                   8
+nine                    9
+ten                     10
+eleven                  11
+twelve                  12
+thirteen                13
+fourteen                14
+fifteen                 15
+sixteen                 16
+seventeen               17
+eighteen                18
+nineteen                19
+twenty                  20
+thirty                  30
+forty                   40
+fifty                   50
+sixty                   60
+seventy                 70
+eighty                  80
+ninety                  90
+hundred                 100
+thousand                1000
+million                 1e6
+
+twoscore                two score
+threescore              three score
+fourscore               four score
+fivescore               five score
+sixscore                six score
+sevenscore              seven score
+eightscore              eight score
+ninescore               nine score
+tenscore                ten score
+twelvescore             twelve score
+
+# These number terms were described by N. Chuquet and De la Roche in the 16th
+# century as being successive powers of a million.  These definitions are still
+# used in most European countries.  The current US definitions for these
+# numbers arose in the 17th century and don't make nearly as much sense.  These
+# numbers are listed in the CRC Concise Encyclopedia of Mathematics by Eric
+# W. Weisstein.
+
+shortbillion               1e9
+shorttrillion              1e12
+shortquadrillion           1e15
+shortquintillion           1e18
+shortsextillion            1e21
+shortseptillion            1e24
+shortoctillion             1e27
+shortnonillion             1e30
+shortnoventillion          shortnonillion
+shortdecillion             1e33
+shortundecillion           1e36
+shortduodecillion          1e39
+shorttredecillion          1e42
+shortquattuordecillion     1e45
+shortquindecillion         1e48
+shortsexdecillion          1e51
+shortseptendecillion       1e54
+shortoctodecillion         1e57
+shortnovemdecillion        1e60
+shortvigintillion          1e63
+
+centillion              1e303
+googol                  1e100
+
+longbillion               million^2
+longtrillion              million^3
+longquadrillion           million^4
+longquintillion           million^5
+longsextillion            million^6
+longseptillion            million^7
+longoctillion             million^8
+longnonillion             million^9
+longnoventillion          longnonillion
+longdecillion             million^10
+longundecillion           million^11
+longduodecillion          million^12
+longtredecillion          million^13
+longquattuordecillion     million^14
+longquindecillion         million^15
+longsexdecillion          million^16
+longseptdecillion         million^17
+longoctodecillion         million^18
+longnovemdecillion        million^19
+longvigintillion          million^20
+
+# These numbers fill the gaps left by the long system above.
+
+milliard                1000 million
+billiard                1000 million^2
+trilliard               1000 million^3
+quadrilliard            1000 million^4
+quintilliard            1000 million^5
+sextilliard             1000 million^6
+septilliard             1000 million^7
+octilliard              1000 million^8
+nonilliard              1000 million^9
+noventilliard           nonilliard
+decilliard              1000 million^10
+
+# For consistency
+
+longmilliard              milliard
+longbilliard              billiard
+longtrilliard             trilliard
+longquadrilliard          quadrilliard
+longquintilliard          quintilliard
+longsextilliard           sextilliard
+longseptilliard           septilliard
+longoctilliard            octilliard
+longnonilliard            nonilliard
+longnoventilliard         noventilliard
+longdecilliard            decilliard
+
+# The long centillion would be 1e600.  The googolplex is another
+# familiar large number equal to 10^googol.  These numbers give overflows.
+
+#
+# The short system prevails in English speaking countries
+#
+
+billion                 shortbillion
+trillion                shorttrillion
+quadrillion             shortquadrillion
+quintillion             shortquintillion
+sextillion              shortsextillion
+septillion              shortseptillion
+octillion               shortoctillion
+nonillion               shortnonillion
+noventillion            shortnoventillion
+decillion               shortdecillion
+undecillion             shortundecillion
+duodecillion            shortduodecillion
+tredecillion            shorttredecillion
+quattuordecillion       shortquattuordecillion
+quindecillion           shortquindecillion
+sexdecillion            shortsexdecillion
+septendecillion         shortseptendecillion
+octodecillion           shortoctodecillion
+novemdecillion          shortnovemdecillion
+vigintillion            shortvigintillion
+
+#
+# Numbers used in India 
+#
+
+lakh                    1e5
+crore                   1e7
+arab                    1e9
+kharab                  1e11
+neel                    1e13
+padm                    1e15
+shankh                  1e17
+
+#############################################################################
+#                                                                           #
+# Derived units which can be reduced to the primitive units                 #
+#                                                                           #
+#############################################################################
+
+
+
+#
+# Named SI derived units (officially accepted)
+#
+
+newton                  kg m / s^2   # force
+N                       newton
+pascal                  N/m^2        # pressure or stress
+Pa                      pascal
+joule                   N m          # energy
+J                       joule
+watt                    J/s          # power
+W                       watt
+coulomb                 A s          # charge
+C                       coulomb
+volt                    W/A          # potential difference
+V                       volt
+ohm                     V/A          # electrical resistance
+siemens                 A/V          # electrical conductance
+S                       siemens
+farad                   C/V          # capacitance
+F                       farad
+weber                   V s          # magnetic flux
+Wb                      weber
+henry                   V s / A      # inductance, also Wb/A, but needs to be
+H                       henry        #   defined this way for CGS units
+tesla                   Wb/m^2       # magnetic flux density
+T                       tesla
+hertz                   /s           # frequency
+Hz                      hertz
+
+#
+# Dimensions.  These are here to help with dimensional analysis and
+# because they will appear in the list produced by hitting '?' at the
+# "You want:" prompt to tell the user the dimension of the unit.
+#
+
+LENGTH                  meter
+AREA                    LENGTH^2
+VOLUME                  LENGTH^3
+MASS                    kilogram
+AMOUNT                  mole
+ANGLE                   radian
+SOLID_ANGLE             steradian
+MONEY                   US$
+FORCE                   newton
+PRESSURE                FORCE / AREA
+STRESS                  FORCE / AREA
+FREQUENCY               hertz
+WAVELENGTH              LENGTH
+WAVENUMBER              1/WAVELENGTH          # number of waves per distance
+VELOCITY                DISPLACEMENT / TIME   # a vector (includes direction)
+SPEED                   DISTANCE / TIME       # a scalar 
+ACCELERATION            VELOCITY / TIME
+MOMENTUM                MASS VELOCITY    # Also ENERGY / VELOCITY or IMPULSE
+IMPULSE                 FORCE TIME
+DISPLACEMENT            LENGTH
+DISTANCE                LENGTH
+ELONGATION              LENGTH
+STRAIN                  ELONGATION / LENGTH
+ENERGY                  joule
+POWER                   watt
+WORK                    FORCE DISTANCE
+DENSITY                 MASS / VOLUME
+LINEAR_DENSITY          MASS / LENGTH
+SPECIFIC_ENERGY         ENERGY / MASS
+VISCOSITY               FORCE TIME / AREA
+KINEMATIC_VISCOSITY     VISCOSITY / DENSITY
+CURRENT                 ampere
+CHARGE                  coulomb
+CAPACITANCE             farad
+RESISTANCE              ohm
+CONDUCTANCE             siemens
+# It may be easier to understand the relationship by considering
+# an object with specified dimensions and resistivity, whose
+# resistance is given by the resistivity * length / area. 
+RESISTIVITY             RESISTANCE AREA / LENGTH
+CONDUCTIVITY            CONDUCTANCE LENGTH / AREA
+INDUCTANCE              henry
+E_FIELD                 ELECTRIC_POTENTIAL / LENGTH
+B_FIELD                 tesla
+# The D and H fields are related to the E and B fields by factors of
+# epsilon and mu respectively, so their units can be found by
+# multiplying/dividing by the epsilon0 and mu0.  The more complex
+# definitions below make it possible to use D_FIELD and E_FIELD to
+# convert between SI and CGS units for these dimensions.
+D_FIELD                 E_FIELD epsilon0 / epsilon0_SI  #   mu0_SI c^2 F / m
+H_FIELD                 B_FIELD / (mu0/mu0_SI)
+ELECTRIC_DIPOLE_MOMENT  C m
+MAGNETIC_DIPOLE_MOMENT  J / T
+POLARIZATION            ELECTRIC_DIPOLE_MOMENT / VOLUME
+MAGNETIZATION           MAGNETIC_DIPOLE_MOMENT / VOLUME
+ELECTRIC_POTENTIAL      ENERGY / CHARGE #volt
+VOLTAGE                 ELECTRIC_POTENTIAL
+E_FLUX                  E_FIELD AREA    
+D_FLUX                  D_FIELD AREA
+B_FLUX                  B_FIELD AREA    
+H_FLUX                  H_FIELD AREA
+
+#
+# units derived easily from SI units
+#
+
+gram                    millikg
+gm                      gram
+g                       gram
+tonne                   1000 kg
+t                       tonne
+metricton               tonne
+sthene                  tonne m / s^2
+funal                   sthene
+pieze                   sthene / m^2
+quintal                 100 kg
+bar                     1e5 Pa     # About 1 atm
+b                       bar
+vac                     millibar
+micron                  micrometer # One millionth of a meter
+bicron                  picometer  # One brbillionth of a meter
+cc                      cm^3
+are                     100 m^2
+a                       are
+liter                   1000 cc       # The liter was defined in 1901 as the
+oldliter                1.000028 dm^3 # space occupied by 1 kg of pure water at
+L                       liter         # the temperature of its maximum density
+l                       liter         # under a pressure of 1 atm.  This was
+                                      # supposed to be 1000 cubic cm, but it
+                                      # was discovered that the original
+                                      # measurement was off.  In 1964, the
+                                      # liter was redefined to be exactly 1000
+                                      # cubic centimeters.
+Ah                      amp hour   # Unit of charge                                      
+mho                     siemens    # Inverse of ohm, hence ohm spelled backward
+galvat                  ampere     # Named after Luigi Galvani
+angstrom                1e-10 m    # Convenient for describing molecular sizes
+xunit                   xunit_cu      # Used for measuring x-ray wavelengths.
+siegbahn                xunit         # Originally defined to be 1|3029.45 of
+xunit_cu             1.00207697e-13 m # the spacing of calcite planes at 18
+xunit_mo             1.00209952e-13 m # degC.  It was intended to be exactly
+                                      # 1e-13 m, but was later found to be
+                                      # slightly off.  Current usage is with
+                                      # reference to common x-ray lines, either
+                                      # the K-alpha 1 line of copper or the
+                                      # same line of molybdenum.
+angstromstar   1.00001495 angstrom # Defined by JA Bearden in 1965 to replace 
+                                   #   the X unit.  The wavelength of the
+                                   #   tungsten K alpha1 line was defined as
+                                   #   exactly 0.20901 angstrom star, with the
+                                   #   value chosen to try to make the new
+                                   #   unit close to the angstrom.  
+silicon_d220     1.920155716e-10 m # Silicon lattice spacing
+siliconlattice sqrt(8) silicon_d220# Silicon lattice parameter, (a), the side
+                                   #   length of the unit cell for the diamond
+                                   #   centered cubic structure of silicon.
+fermi                   1e-15 m    # Convenient for describing nuclear sizes
+                                   #   Nuclear radius is from 1 to 10 fermis
+barn                    1e-28 m^2  # Used to measure cross section for
+                                   #   particle physics collision, said to
+                                   #   have originated in the phrase "big as
+                                   #   a barn".
+shed                    1e-24 barn # Defined to be a smaller companion to the
+                                   #   barn, but it's too small to be of
+                                   #   much use.
+brewster                micron^2/N # measures stress-optical coef
+diopter                 /m         # measures reciprocal of lens focal length
+fresnel                 1e12 Hz    # occasionally used in spectroscopy
+shake                   1e-8 sec
+svedberg                1e-13 s    # Used for measuring the sedimentation
+                                   # coefficient for centrifuging.
+gamma                   microgram  # Also used for 1e-9 tesla
+lambda                  microliter
+spat                    1e12 m     # Rarely used for astronomical measurements
+preece                  1e13 ohm m # resistivity
+planck                  J s        # action of one joule over one second
+sturgeon                /henry     # magnetic reluctance
+daraf                   1/farad    # elastance (farad spelled backwards)
+leo                     10 m/s^2
+poiseuille              N s / m^2  # viscosity
+mayer                   J/g K      # specific heat
+mired                   / microK   # reciprocal color temperature.  The name
+                                   #   abbreviates micro reciprocal degree.
+crocodile               megavolt   # used informally in UK physics labs
+metricounce             25 g
+mounce                  metricounce
+finsenunit              1e5 W/m^2  # Measures intensity of ultraviolet light
+                                   # with wavelength 296.7 nm.
+fluxunit                1e-26 W/m^2 Hz # Used in radio astronomy to measure
+                                       #   the energy incident on the receiving
+                                       #   body across a specified frequency
+                                       #   bandwidth.  [12]
+jansky                  fluxunit   # K. G. Jansky identified radio waves coming
+Jy                      jansky     # from outer space in 1931.
+flick       W / cm^2 sr micrometer # Spectral radiance or irradiance
+pfu                    / cm^2 sr s # particle flux unit -- Used to measure
+                                   #   rate at which particles are received by
+                                   #   a spacecraft as particles per solid
+                                   #   angle per detector area per second. [18]
+pyron            cal_IT / cm^2 min # Measures heat flow from solar radiation,
+                                   #   from Greek work "pyr" for fire.
+katal                   mol/sec    # Measure of the amount of a catalyst.  One
+kat                     katal      #   katal of catalyst enables the reaction
+                                   #   to consume or produce one mol/sec.
+solarluminosity         382.8e24 W # A common yardstick for comparing the
+                                   #   output of different stars.
+                # http://nssdc.gsfc.nasa.gov/planetary/factsheet/sunfact.html
+# at mean Earth-Sun distance
+solarirradiance         solarluminosity / (4 pi sundist^2)
+solarconstant           solarirradiance
+TSI                     solarirradiance         # total solar irradiance
+
+#
+# time
+#
+
+sec                     s
+minute                  60 s
+min                     minute
+hour                    60 min
+hr                      hour
+day                     24 hr
+d                       day
+da                      day
+week                    7 day
+wk                      week
+sennight                7 day
+fortnight               14 day
+blink                   1e-5 day   # Actual human blink takes 1|3 second
+ce                      1e-2 day
+cron                    1e6 years
+watch                   4 hours    # time a sentry stands watch or a ship's
+                                   # crew is on duty.
+bell                    1|8 watch  # Bell would be sounded every 30 minutes.
+
+# French Revolutionary Time or Decimal Time.  It was Proposed during
+# the French Revolution.  A few clocks were made, but it never caught
+# on.  In 1998 Swatch defined a time measurement called ".beat" and
+# sold some watches that displayed time in this unit.
+
+decimalhour             1|10 day            
+decimalminute           1|100 decimalhour   
+decimalsecond           1|100 decimalminute 
+beat                    decimalminute          # Swatch Internet Time
+
+#
+# angular measure
+#
+
+circle                  2 pi radian
+degree                  1|360 circle
+deg                     degree
+arcdeg                  degree
+arcmin                  1|60 degree
+arcminute               arcmin
+'                       arcmin
+arcsec                  1|60 arcmin
+arcsecond               arcsec
+"                       arcsec
+''                      "
+rightangle              90 degrees
+quadrant                1|4 circle
+quintant                1|5 circle
+sextant                 1|6 circle
+
+sign                    1|12 circle # Angular extent of one sign of the zodiac
+turn                    circle
+revolution              turn
+rev                     turn
+pulsatance              radian / sec
+gon                     1|100 rightangle  # measure of grade
+grade                   gon
+centesimalminute        1|100 grade
+centesimalsecond        1|100 centesimalminute
+milangle                1|6400 circle     # Official NIST definition.
+                                          # Another choice is 1e-3 radian.
+pointangle              1|32 circle  # Used for reporting compass readings
+centrad                 0.01 radian  # Used for angular deviation of light
+                                     # through a prism.
+mas                     milli arcsec # Used by astronomers
+seclongitude            circle (seconds/day) # Astronomers measure longitude
+                                     # (which they call right ascension) in
+                                     # time units by dividing the equator into
+                                     # 24 hours instead of 360 degrees.
+#
+# Some geometric formulas
+#
+
+circlearea(r)   units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi)
+spherevolume(r) units=[m;m^3] range=[0,) 4|3 pi r^3 ; \
+                                         cuberoot(spherevolume/4|3 pi)
+spherevol()     spherevolume
+square(x)       range=[0,)          x^2 ; sqrt(square)
+
+#
+# Solid angle measure
+#
+
+sphere                  4 pi sr
+squaredegree            1|180^2 pi^2 sr
+squareminute            1|60^2 squaredegree
+squaresecond            1|60^2 squareminute
+squarearcmin            squareminute
+squarearcsec            squaresecond
+sphericalrightangle     1|8 sphere
+octant                  1|8 sphere
+
+#
+# Concentration measures
+#
+
+percent                 0.01
+%                       percent
+mill                    0.001     # Originally established by Congress in 1791
+                                  # as a unit of money equal to 0.001 dollars,
+                                  # it has come to refer to 0.001 in general.
+                                  # Used by some towns to set their property
+                                  # tax rate, and written with a symbol similar
+                                  # to the % symbol but with two 0's in the
+                                  # denominator.  [18]
+proof                   1|200     # Alcohol content measured by volume at
+                                  # 60 degrees Fahrenheit.  This is a USA
+                                  # measure.  In Europe proof=percent.
+ppm                     1e-6
+partspermillion         ppm
+ppb                     1e-9
+partsperbillion         ppb       # USA billion
+ppt                     1e-12
+partspertrillion        ppt       # USA trillion
+karat                   1|24      # measure of gold purity
+caratgold               karat
+gammil                  mg/l
+basispoint              0.01 %    # Used in finance
+fine                    1|1000    # Measure of gold purity
+
+# The pH scale is used to measure the concentration of hydronium (H3O+) ions in
+# a solution.  A neutral solution has a pH of 7 as a result of dissociated
+# water molecules.
+
+pH(x) units=[1;mol/liter] range=(0,) 10^(-x) mol/liter ; (-log(pH liters/mol))
+
+
+#
+# Temperature
+#
+# Two types of units are defined: units for converting temperature differences
+# and functions for converting absolute temperatures.  Conversions for
+# differences start with "deg" and conversions for absolute temperature start
+# with "temp".
+#
+# If the temperature inside is 72 degrees Fahrenheit and you want to
+# convert this to degrees Celsius then you need absolute temperature:
+#
+# You have: tempF(72)
+# You want: tempC
+#         22.222222
+#
+# If the temperature rose 72 degrees Fahrenheit during the chemical reaction
+# then this is a temperature difference:
+#
+# You have: 72 degF
+# You want: degC
+#        * 40
+#        / 0.025
+#
+
+TEMPERATURE             kelvin
+TEMPERATURE_DIFFERENCE  kelvin
+
+# In 1741 Anders Celsius introduced a temperature scale with water boiling at
+# 0 degrees and freezing at 100 degrees at standard pressure. After his death
+# the fixed points were reversed and the scale was called the centigrade
+# scale.  Due to the difficulty of accurately measuring the temperature of
+# melting ice at standard pressure, the centigrade scale was replaced in 1954
+# by the Celsius scale which is defined by subtracting 273.15 from the
+# temperature in Kelvins.  This definition differed slightly from the old
+# centigrade definition, but the Kelvin scale depends on the triple point of
+# water rather than a melting point, so it can be measured accurately.
+
+tempC(x) units=[1;K] domain=[-273.15,) range=[0,) \
+                             x K + stdtemp ; (tempC +(-stdtemp))/K
+tempcelsius() tempC
+degcelsius              K
+degC                    K
+
+# Fahrenheit defined his temperature scale by setting 0 to the coldest
+# temperature he could produce in his lab with a salt water solution and by
+# setting 96 degrees to body heat.  In Fahrenheit's words:
+#
+#    Placing the thermometer in a mixture of sal ammoniac or sea
+#    salt, ice, and water a point on the scale will be found which
+#    is denoted as zero. A second point is obtained if the same
+#    mixture is used without salt. Denote this position as 30. A
+#    third point, designated as 96, is obtained if the thermometer
+#    is placed in the mouth so as to acquire the heat of a healthy
+#    man."  (D. G. Fahrenheit, Phil. Trans. (London) 33, 78, 1724)
+
+tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \
+                (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32
+tempfahrenheit() tempF
+degfahrenheit           5|9 degC
+degF                    5|9 degC
+
+
+degreesrankine          degF              # The Rankine scale has the
+degrankine              degreesrankine    # Fahrenheit degree, but its zero
+degreerankine           degF              # is at absolute zero.
+degR                    degrankine
+tempR                   degrankine
+temprankine             degrankine
+
+tempreaumur(x)    units=[1;K] domain=[-218.52,) range=[0,) \
+                  x degreaumur+stdtemp ; (tempreaumur+(-stdtemp))/degreaumur
+degreaumur              10|8 degC # The Reaumur scale was used in Europe and
+                                  # particularly in France.  It is defined
+                                  # to be 0 at the freezing point of water
+                                  # and 80 at the boiling point.  Reaumur
+                                  # apparently selected 80 because it is
+                                  # divisible by many numbers.
+
+degK                    K         # "Degrees Kelvin" is forbidden usage.
+tempK                   K         # For consistency
+
+# Gas mark is implemented below but in a terribly ugly way.  There is
+# a simple formula, but it requires a conditional which is not
+# presently supported.
+#
+# The formula to convert to degrees Fahrenheit is:
+#
+# 25 log2(gasmark) + k_f   gasmark<=1
+# 25 (gasmark-1) + k_f     gasmark>=1
+#
+# k_f = 275
+#
+gasmark[degR] \
+  .0625    634.67 \
+  .125     659.67 \
+  .25      684.67 \
+  .5       709.67 \
+  1        734.67 \
+  2        759.67 \
+  3        784.67 \
+  4        809.67 \
+  5        834.67 \
+  6        859.67 \
+  7        884.67 \
+  8        909.67 \
+  9        934.67 \
+  10       959.67
+
+
+# The Beaufort wind force scale was developed from 1805-1807 by Sir Francis
+# Beaufort to categorize wind conditions at sea. It is normally defined from
+# Beaufort 0, also called "Force 0," through Beaufort 12. Beaufort numbers
+# 13-17 were later defined for tropical cyclones but are rarely used. The
+# original Beaufort scale was qualitative and did not relate directly to wind
+# speed. In 1906, George Simpson of the British Met Office fit wind-speed
+# measurements to visual Beaufort estimates made from five coastal and inland
+# stations in Britain. Simpson's formula was adopted by the World Meterological
+# Organization in 1946 to produce a table, known as WMO Code 1100, giving mean
+# (and min/max) wind speed equivalents at a height of 10 meters for each
+# Beaufort number. This is the "operational" Beaufort scale that mariners
+# use. Meterological and climatic researchers typically use a "scientific"
+# Beaufort scale based on more recent and comprehensive fits. See Wallbrink and
+# Cook, Historical Wind Speed Equivalents Of The Beaufort Scale, 1850-1950, at
+# https://icoads.noaa.gov/reclaim/pdf/Hisklim13.pdf
+#
+beaufort_WMO1100(B) units=[1;m/s] domain=[0,17] range=[0,) \
+                    0.836 B^3|2 m/s; (beaufort_WMO1100 s / 0.836 m)^2|3
+
+beaufort(B) units=[1;m/s] domain=[0,17] range=[0,) \
+            beaufort_WMO1100(B); ~beaufort_WMO1100(beaufort)
+
+# Units cannot handle wind chill or heat index because they are two-variable
+# functions, but they are included here for your edification.  Clearly these
+# equations are the result of a model fitting operation.
+#
+# wind chill index (WCI) a measurement of the combined cooling effect of low
+#      air temperature and wind on the human body. The index was first defined
+#      by the American Antarctic explorer Paul Siple in 1939. As currently used
+#      by U.S. meteorologists, the wind chill index is computed from the
+#      temperature T (in  deg F) and wind speed V (in mi/hr) using the formula:
+#          WCI = 0.0817(3.71 sqrt(V) + 5.81 - 0.25V)(T - 91.4) + 91.4.
+#      For very low wind speeds, below 4 mi/hr, the WCI is actually higher than
+#      the air temperature, but for higher wind speeds it is lower than the air
+#      temperature.
+#
+# heat index (HI or HX) a measure of the combined effect of heat and
+#      humidity on the human body. U.S. meteorologists compute the index
+#      from the temperature T (in  deg F) and the relative humidity H (as a
+#      value from 0 to 1).
+#        HI = -42.379 + 2.04901523 T + 1014.333127 H - 22.475541 TH
+#             - .00683783 T^2 - 548.1717 H^2 + 0.122874 T^2 H + 8.5282 T H^2
+#             - 0.0199 T^2 H^2.
+
+#
+# Physical constants
+#
+
+# Basic constants
+
+pi                      3.14159265358979323846
+tau                     2 pi
+phi                     (sqrt(5)+1)/2
+light                   c
+coulombconst          alpha hbar c / e^2 # Coulomb constant          
+k_C                     coulombconst     #   Gets overridden in CGS modes
+k_C_SI       alpha hbar_SI c_SI / e_SI^2 
+epsilon0_SI             1 / 4 pi k_C_SI  # Vacuum electric permittivity
+epsilon0                1 / 4 pi k_C     #   Also overridden in CGS modes
+mu0_SI            1 / epsilon0_SI c_SI^2 # Vacuum magnetic permeability
+mu0                     1 / epsilon0 c^2 #   Also overridden in CGS modes
+Z0                      4 pi k_C / c     # Free space impedance
+energy                  c^2              # Convert mass to energy
+hbar                    h / 2 pi
+hbar_SI                 h_SI / 2 pi
+spin                    hbar
+G_SI            6.67430e-11
+G               6.67430e-11 N m^2 / kg^2 # Newtonian gravitational constant
+
+# Physico-chemical constants
+
+atomicmassunit_SI   1.66053906660e-27    # Unified atomic mass unit, defined as
+atomicmassunit      1.66053906660e-27 kg # Unified atomic mass unit, defined as
+u                       atomicmassunit   #   1|12 of the mass of carbon 12.
+amu                     atomicmassunit   #   The relationship N_A u = 1 g/mol
+dalton                  u                #   is approximately, but not exactly 
+Da                      dalton           #   true (with the 2019 SI).
+                                         #   Previously the mole was defined to
+                                         #   make this relationship exact.
+amu_chem                1.66026e-27 kg   # 1|16 of the weighted average mass of
+                                         #   the 3 naturally occuring neutral
+                                         #   isotopes of oxygen
+amu_phys                1.65981e-27 kg   # 1|16 of the mass of a neutral
+                                         #   oxygen 16 atom
+gasconstant             k N_A            # Molar gas constant (exact)
+R                       gasconstant
+kboltzmann              boltzmann
+molarvolume             R stdtemp / atm  # Volume occupied by one mole of an
+V_m                     molarvolume      #   ideal gas at STP. (exact)
+loschmidt         avogadro / molarvolume # Molecules per cubic meter of an
+n0                      loschmidt        #   ideal gas at STP.  Loschmidt did
+                                         #   work similar to Avogadro.
+molarvolume_si  N_A siliconlattice^3 / 8 # Volume of a mole of crystalline
+                                         #   silicon. The unit cell contains 8
+                                         #   silicon atoms and has a side
+                                         #   length of siliconlattice.
+stefanboltzmann pi^2 k^4 / 60 hbar^3 c^2 # The power per area radiated by a
+sigma                   stefanboltzmann  #   blackbody at temperature T is
+                                         #   given by sigma T^4. (exact)
+wiendisplacement     (h c/k)/4.9651142317442763  # Wien's Displacement Law gives
+                                         #   the frequency at which the
+                                         #   Planck spectrum has maximum
+                                         #   intensity.  The relation is lambda
+                                         #   T = b where lambda is wavelength,
+                                         #   T is temperature and b is the Wien
+                                         #   displacement.  This relation is
+                                         #   used to determine the temperature
+                                         #   of stars.  The constant is the
+                                         #   solution to x=5(1-exp(-x)).
+                                         #   This expression has no experimental
+                                         #   error, and x is defined exactly
+                                         #   by the equation above, so it is
+                                         #   an exact definition.  
+K_J90 483597.9 GHz/V    # Direct measurement of the volt is difficult.  Until
+K_J   2e/h              #   recently, laboratories kept Weston cadmium cells as
+                        #   a reference, but they could drift.  In 1987 the
+                        #   CGPM officially recommended the use of the
+                        #   Josephson effect as a laboratory representation of
+                        #   the volt.  The Josephson effect occurs when two
+                        #   superconductors are separated by a thin insulating
+                        #   layer.  A "supercurrent" flows across the insulator
+                        #   with a frequency that depends on the potential
+                        #   applied across the superconductors.  This frequency
+                        #   can be very accurately measured.  The Josephson
+                        #   constant K_J relates the measured frequency to the
+                        #   potential.  Two values given, the conventional
+                        #   (exact) value from 1990, which was used until the
+                        #   2019 SI revision, and the current exact value.
+R_K90 25812.807 ohm     # Measurement of the ohm also presents difficulties.
+R_K   h/e^2             #   The old approach involved maintaining resistances
+                        #   that were subject to drift.  The new standard is
+                        #   based on the Hall effect.  When a current carrying
+                        #   ribbon is placed in a magnetic field, a potential
+                        #   difference develops across the ribbon.  The ratio
+                        #   of the potential difference to the current is
+                        #   called the Hall resistance.  Klaus von Klitzing
+                        #   discovered in 1980 that the Hall resistance varies
+                        #   in discrete jumps when the magnetic field is very
+                        #   large and the temperature very low.  This enables
+                        #   accurate realization of the resistance h/e^2 in the
+                        #   lab.  The 1990 value was an exact conventional 
+                        #   value used until the SI revision in 2019. This value
+                        #   did not agree with measurements.  The new value
+                        #   is exact.
+
+# The 2019 update to SI gives exact definitions for R_K and K_J.  Previously
+# the electromagnetic units were realized using the 1990 conventional values
+# for these constants, and as a result, the standard definitions were in some
+# sense outside of SI.  The revision corrects this problem.  The definitions
+# below give the 1990 conventional values for the electromagnetic units in
+# terms of 2019 SI.  
+
+ampere90 (K_J90 R_K90 / K_J R_K) A
+coulomb90 (K_J90 R_K90 / K_J R_K) C
+farad90 (R_K90/R_K) F
+henry90 (R_K/R_K90) H
+ohm90 (R_K/R_K90) ohm
+volt90 (K_J90/K_J) V
+watt90 (K_J90^2 R_K90 / K_J^2 R_K) W
+
+# Various conventional values
+
+gravity                 9.80665 m/s^2    # std acceleration of gravity (exact)
+                                         #   Established by the 3rd CGPM in
+                                         #   1901.  This is a nominal midrange
+                                         #   value, originally based on the
+                                         #   acceleration of a body at sea
+                                         #   level at 45 degrees latitude.
+                                         #   The value was actually determined
+                                         #   by measuring at the International
+                                         #   Bureau and correcting the
+                                         #   measurement by a theoretical
+                                         #   cofficient to get the 45 deg
+                                         #   latitude sea level value.
+                                         #   (Wikipedia: Standard gravity)
+force                   gravity          # use to turn masses into forces
+atm                     101325 Pa        # Standard atmospheric pressure
+atmosphere              atm
+Hg             13.5951 gram force / cm^3 # Standard weight of mercury (exact)
+water                   gram force/cm^3  # Standard weight of water (exact)
+waterdensity            gram / cm^3      # Density of water
+H2O                     water
+wc                      water            # water column
+mach                    331.46 m/s       # speed of sound in dry air at STP
+standardtemp            273.15 K         # standard temperature
+stdtemp                 standardtemp
+normaltemp              tempF(70)        # for gas density, from NIST
+normtemp                normaltemp       # Handbook 44
+
+# Weight of mercury and water at different temperatures using the standard
+# force of gravity.
+
+Hg10C         13.5708 force gram / cm^3  # These units, when used to form
+Hg20C         13.5462 force gram / cm^3  # pressure measures, are not accurate
+Hg23C         13.5386 force gram / cm^3  # because of considerations of the
+Hg30C         13.5217 force gram / cm^3  # revised practical temperature scale.
+Hg40C         13.4973 force gram / cm^3
+Hg60F         13.5574 force gram / cm^3
+H2O0C         0.99987 force gram / cm^3
+H2O5C         0.99999 force gram / cm^3
+H2O10C        0.99973 force gram / cm^3
+H2O15C        0.99913 force gram / cm^3
+H2O18C        0.99862 force gram / cm^3
+H2O20C        0.99823 force gram / cm^3
+H2O25C        0.99707 force gram / cm^3
+H2O50C        0.98807 force gram / cm^3
+H2O100C       0.95838 force gram / cm^3
+
+# Atomic constants
+
+hartree            4.3597447222071e-18 J # Approximate electric potential energy
+E_h                     hartree          #   of the hydrogen atom in its ground
+                                         #   state, and approximately twice its
+                                         #   ionization energy.  The hartree
+                                         #   energy is traditionally defined as
+                                         #      coulombconst^2 m_e e^4 / hbar^2,
+                                         #   but it can be measured to greater
+                                         #   precision using the relationship
+                                         #      hartree = 2 h c Rinfinity
+                                         #   because Rinfinity is one of the
+                                         #   most accurately measured physical
+                                         #   constants.  Because h and c are
+                                         #   exact we can choose either hartree
+                                         #   or Rinfinity from CODATA to use as
+                                         #   the primary value without
+                                         #   affecting the precision.  
+Rinfinity               hartree / 2 h c  # The wavelengths of a spectral series
+R_H          Rinfinity m_p / (m_e + m_p) #   can be expressed as
+                                         #     1/lambda = R (1/m^2 - 1/n^2).
+                                         #   where R is a number that various
+                                         #   slightly from element to element.
+                                         #   For hydrogen, R_H is the value,
+                                         #   and for heavy elements, the value
+                                         #   approaches Rinfinity, which can be
+                                         #   computed from
+                                         #      Rinfinity = m_e c alpha^2 / 2 h
+                                         #   with loss of precision. Rinfinity
+                                         #   is one of the most accurately
+                                         #   measured physical constants and is
+                                         #   known to higher precision than m_e
+                                         #   or alpha.
+alpha                    7.2973525693e-3 # The fine structure constant was
+                                         #   introduced to explain fine
+                                         #   structure visible in spectral
+                                         #   lines.  
+bohrradius              hbar / alpha m_e c
+a0                      bohrradius
+prout                   185.5 keV        # nuclear binding energy equal to 1|12
+                                         #   binding energy of the deuteron
+conductancequantum      e^2 / pi hbar
+G0                      conductancequantum
+magneticfluxquantum     pi hbar / e
+Phi0                    magneticfluxquantum
+
+# Particle radius
+
+electronradius    coulombconst e^2 / electronmass c^2   # Classical
+deuteronchargeradius    2.12799e-15 m
+protonchargeradius      0.8751e-15 m
+
+# Masses of elementary particles
+
+electronmass_SI         electronmass_u atomicmassunit_SI
+electronmass_u          5.48579909065e-4
+electronmass            5.48579909065e-4 u
+m_e                     electronmass
+muonmass                0.1134289259 u
+m_mu                    muonmass
+taumass                 1.90754 u
+m_tau                   taumass
+protonmass              1.007276466621 u
+m_p                     protonmass
+neutronmass             1.00866491595 u
+m_n                     neutronmass
+deuteronmass            2.013553212745 u    # Nucleus of deuterium, one
+m_d                     deuteronmass        #   proton and one neutron
+alphaparticlemass       4.001506179127 u    # Nucleus of He, two protons
+m_alpha                 alphaparticlemass   #   and two neutrons
+tritonmass              3.01550071621 u     # Nucleus of H3, one proton
+m_t                     tritonmass          #   and two neutrons
+helionmass              3.014932247175 u    # Nucleus of He3, two protons
+m_h                     helionmass          #   and one neutron
+
+# particle wavelengths: the compton wavelength of a particle is
+# defined as h / m c where m is the mass of the particle.
+
+electronwavelength      h / m_e c
+lambda_C                electronwavelength
+protonwavelength        h / m_p c
+lambda_C,p              protonwavelength
+neutronwavelength       h / m_n c
+lambda_C,n              neutronwavelength
+muonwavelength          h / m_mu c
+lambda_C,mu             muonwavelength
+
+# The g-factor or dimensionless magnetic moment is a quantity that
+# characterizes the magnetic moment of a particle.  The electron g-factor is
+# one of the most precisely measured values in physics, with a relative
+# uncertainty of 1.7e-13.  
+
+g_d                     0.8574382338       # Deuteron g-factor
+g_e                    -2.00231930436256   # Electron g-factor
+g_h                    -4.255250615        # Helion g-factor
+g_mu                   -2.0023318418       # Muon g-factor
+g_n                    -3.82608545         # Neutron g-factor
+g_p                     5.5856946893       # Proton g-factor
+g_t                     5.957924931        # Triton g-factor
+
+fermicoupling           1.1663787e-5 / GeV^2
+
+# Magnetic moments (derived from the more accurate g-factors)
+#
+# The magnetic moment is g * mu_ref * spin where in most cases
+# the reference is the nuclear magneton, and all of the particles
+# except the deuteron have spin 1/2.  
+
+bohrmagneton            e hbar / 2 electronmass  # Reference magnetic moment for
+mu_B                    bohrmagneton             #   the electron
+mu_e                    g_e mu_B / 2             # Electron spin magnet moment
+mu_mu                 g_mu mu_B m_e / 2 muonmass # Muon spin magnetic moment
+nuclearmagneton         mu_B m_e / protonmass    # Convenient reference magnetic
+mu_N                    nuclearmagneton          #   moment for heavy particles
+mu_p                    g_p mu_N / 2             # Proton magnetic moment
+mu_n                    g_n mu_N / 2             # Neutron magnetic moment
+mu_d                    g_d mu_N            # Deuteron magnetic moment, spin 1
+mu_t                    g_t mu_N / 2             # Triton magnetic moment
+mu_h                    g_h mu_N / 2             # Helion magnetic moment
+
+#
+# Units derived from physical constants
+#
+
+kgf                     kg force
+technicalatmosphere     kgf / cm^2
+at                      technicalatmosphere
+hyl                     kgf s^2 / m   # Also gram-force s^2/m according to [15]
+mmHg                    mm Hg
+torr                    atm / 760  # The torr, named after Evangelista
+                                   # Torricelli, and is very close to the mm Hg
+tor                     Pa         # Suggested in 1913 but seldom used [24].
+                                   # Eventually renamed the Pascal.  Don't 
+                                   # confuse the tor with the torr.  
+inHg                    inch Hg    
+inH2O                   inch water
+mmH2O                   mm water
+eV                      e V      # Energy acquired by a particle with charge e
+electronvolt            eV       #   when it is accelerated through 1 V
+lightyear               c julianyear # The 365.25 day year is specified in
+ly                      lightyear    # NIST publication 811
+lightsecond             c s
+lightminute             c min
+parsec                  au / tan(arcsec)    # Unit of length equal to distance
+pc                      parsec              #   from the Sun to a point having
+                                            #   heliocentric parallax of 1
+                                            #   arcsec (derived from parallax
+                                            #   second).  A distant object with
+                                            #   parallax theta will be about
+                                            #   (arcsec/theta) parsecs from the
+                                            #   Sun (using the approximation
+                                            #   that tan(theta) = theta).
+rydberg                 1|2 hartree         # Rydberg energy
+crith                   0.089885 gram       # The crith is the mass of one
+                                            #   liter of hydrogen at standard
+                                            #   temperature and pressure.
+amagat                  N_A / molarvolume   # Used to measure gas as a number
+amagatvolume            mol molarvolume     #   density
+lorentz                 bohrmagneton / h c  # Used to measure the extent
+                                            #   that the frequency of light
+                                            #   is shifted by a magnetic field.
+cminv                   h c / cm            # Unit of energy used in infrared
+invcm                   cminv               #   spectroscopy.
+wavenumber              1/cm                # 
+kcal_mol                kcal_th / mol N_A   # kcal/mol is used as a unit of
+                                            #   energy by physical chemists.
+#
+# CGS system based on centimeter, gram and second
+#
+
+dyne                    cm gram / s^2   # force
+dyn                     dyne
+erg                     cm dyne         # energy
+poise                   gram / cm s     # viscosity, honors Jean Poiseuille
+P                       poise
+rhe                     /poise          # reciprocal viscosity
+stokes                  cm^2 / s        # kinematic viscosity
+St                      stokes
+stoke                   stokes
+lentor                  stokes          # old name
+Gal                     cm / s^2        # acceleration, used in geophysics
+galileo                 Gal             # for Earth's gravitational field
+                                        # (note that "gal" is for gallon
+                                        # but "Gal" is the standard symbol
+                                        # for the gal which is evidently a
+                                        # shortened form of "galileo".)
+barye                   dyne/cm^2       # pressure
+barad                   barye           # old name
+kayser                  1/cm            # Proposed as a unit for wavenumber
+balmer                  kayser          # Even less common name than "kayser"
+kine                    cm/s            # velocity
+bole                    g cm / s        # momentum
+pond                    gram force
+glug                gram force s^2 / cm # Mass which is accelerated at
+                                        #   1 cm/s^2 by 1 gram force
+darcy           centipoise cm^2 / s atm # Measures permeability to fluid flow.
+                                        #   One darcy is the permeability of a
+                                        #   medium that allows a flow of cc/s
+                                        #   of a liquid of centipoise viscosity
+                                        #   under a pressure gradient of
+                                        #   atm/cm.  Named for H. Darcy.
+mobileohm               cm / dyn s      # mobile ohm, measure of mechanical
+                                        #   mobility
+mechanicalohm           dyn s / cm      # mechanical resistance
+acousticalohm           dyn s / cm^5    # ratio of the sound pressure of
+                                        #   1 dyn/cm^2 to a source of strength
+                                        #   1 cm^3/s
+ray                     acousticalohm
+rayl                    dyn s / cm^3    # Specific acoustical resistance
+eotvos                  1e-9 Gal/cm     # Change in gravitational acceleration
+                                        #   over horizontal distance
+#
+# Electromagnetic CGS Units
+# 
+# For measuring electromagnetic quantities in SI, we introduce the new base
+# dimension of current, define the ampere to measure current, and derive the
+# other electromagnetic units from the ampere.  With the CGS units one approach
+# is to use the basic equations of electromagnetism to define units that
+# eliminate constants from those equations.  Coulomb's law has the form
+#
+#          F = k_C q1 q2 / r^2
+#
+# where k_C is the Coulomb constant equal to 1|4 pi epsilon0 in SI units.
+# Ampere's force law takes the form
+#
+#          dF/dl = 2 k_A I1 I2 / r
+#
+# where k_A is the ampere constant.  In the CGS system we force either k_C or
+# k_A to 1 which then defines either a unit for charge or a unit for current.
+# The other unit then becomes a derived unit.  When k_C is 1 the ESU system
+# results.  When k_A is 1 the EMU system results.  Note that these parameters
+# are not independent of each other: Maxwell's equations indicate that
+#         
+#           k_C / k_A = c^2
+#
+# where c is the speed of light. 
+#
+# One more choice is needed to define a complete system.  Using Coulomb's law
+# we define the electric field as the force per unit charge
+#
+#           E = k_C 1 / r^2.
+#
+# But what about the magnetic field?  It is derived from Ampere's law but we
+# have the option of adding a proportionality constant, k_B, that may have
+# dimensions:
+#
+#           B = 2 k_A k_B I / r
+#
+# We can choose k_B = 1, which is done in the SI, ESU and EMU systems.  But if
+# instead we give k_B units of length/time then the magnetic field has
+# the same units as the electric field.  This choice leads to the Gaussian
+# and Heaviside-Lorentz systems.
+#
+# The relations above are used to determine the dimensions, but the units are
+# derived from the base units of CGS, not directly from those formulas.  We
+# will use the notation [unit] to refer to the dimension of the unit in
+# brackets.  This same process gives rise to the SI units such as the tesla, 
+# which is defined by
+#
+#         [tesla] = [2 (1/4 pi c^2 epsilon0) amp / m] = [(mu0 / 2) amp / m]
+#
+# which gives kg / A s^2 as expected.  
+#
+# References:
+#
+# Classical Electrodynamics by John David Jackson, 3rd edition. 
+# Cardarelli, Francois. 1999.  Scientific Unit Conversion. 2nd ed.  Trans.
+#     M.J.  Shields.  London: Springer-Verlag. ISBN 1-85233-043-0
+#
+#
+# All of the CGS systems result in electromagnetic units that involve the square
+# roots of the centimeter and gram.  This requires a change in the primitive
+# units.
+# 
+
+!var UNITS_SYSTEM esu emu gaussian gauss hlu
+sqrt_cm                 ! 
+sqrt_centimeter         sqrt_cm
++m                      100 sqrt_cm^2
+sqrt_g                  !
+sqrt_gram               sqrt_g
++kg                     kilo sqrt_g^2
+!endvar
+
+# Electrostatic CGS (ESU)
+#
+# This system uses the statcoulomb as the fundamental unit of charge, with
+# derived units that parallel the conventional terminology but use the stat-
+# prefix.  The statcoulomb is derived from Coulomb's law based on the dyne
+#
+#                      dyne = statcoulomb^2 / k_C cm^2.
+#
+# and in the EUS system, k_C=1.  The statcoulomb is also called the
+# franklin or esu.
+#
+# The ESU system was specified by a committee report in 1873 and rarely used.
+
+statcoulomb             sqrt(dyne cm^2/k_C)   # Charge such that two charges
+esu                     statcoulomb           # of 1 statC separated by 1 cm
+statcoul                statcoulomb           # exert a force of 1 dyne
+statC                   statcoulomb
+stC                     statcoulomb
+franklin                statcoulomb
+Fr                      franklin
+
+!var UNITS_SYSTEM esu
+!message CGS-ESU units selected
+!prompt (ESU)
++coulombconst           1
++epsilon0               1 / k_C               # SI relation: 1 / 4 pi k_C
++A                      10 c_SI statamp
+!endvar
+
+statampere              statcoulomb / s
+statamp                 statampere
+statA                   statampere
+stA                     statampere
+statvolt                dyne cm / statamp sec
+statV                   statvolt
+stV                     statvolt
+statfarad               statamp sec / statvolt
+statF                   statfarad
+stF                     statfarad
+cmcapacitance           statfarad
+stathenry               statvolt sec / statamp
+statH                   stathenry
+stH                     stathenry
+statohm                 statvolt / statamp
+stohm                   statohm
+statmho                 /statohm
+stmho                   statmho
+statweber               statvolt sec
+statWb                  statweber
+stWb                    statweber
+stattesla               statWb/cm^2   # Defined by analogy with SI; rarely
+statT                   stattesla     #   if ever used
+stT                     stattesla
+debye                   1e-10 statC angstrom # unit of electrical dipole moment
+helmholtz               debye/angstrom^2     # Dipole moment per area
+jar                     1000 statfarad       # approx capacitance of Leyden jar
+
+# Electromagnetic CGS (EMU)
+#
+# The abampere is the fundamental unit of this system, with the derived units
+# using the ab- prefix.  The dimensions of the abampere are defined by assuming
+# that k_A=1, which 
+#
+#            [dyne / cm]  = [2 abampere^2 / cm]
+#
+# where the brackets indicate taking the dimension of the unit in base units
+# and discarding any constant factors.  This results in the definition from
+# base CGS units of:
+#
+#            abampere = sqrt(dyne). 
+#
+# The abampere is also called the biot.  The magnetic field unit (the gauss)
+# follows from the assumption that k_B=1, which means
+#
+#            B = 2 I / r,
+#
+# and hence the dimensions of the gauss are given by
+#
+#            [gauss] = [2 abampere / cm]
+#
+# or rewriting in terms of the base units
+#
+#            gauss = abampere / cm.
+#
+# The definition given below is different because it is in a form that
+# gives a valid reduction for SI and ESU and still gives the correct 
+# result in EMU.  (It can be derived from Faraday's law.)  
+#
+# The EMU system was developed by Gauss and Weber and formalized as a system in
+# a committee report by the British Association for the Advancement of Science
+# in 1873.  
+
+abampere                10 A            # Current which produces a force of
+abamp                   abampere        #   2 dyne/cm between two infinitely
+aA                      abampere        #   long wires that are 1 cm apart
+abA                     abampere
+biot                    abampere
+Bi                      biot
+
+!var UNITS_SYSTEM emu
+!message CGS-EMU units selected
+!prompt (EMU)
++coulombconst           c^2
++epsilon0               1 / k_C        # SI relation: 1 / 4 pi k_C
++abampere               sqrt(dyne)
++A                      0.1 abamp
+!endvar
+
+abcoulomb               abamp sec
+abcoul                  abcoulomb
+abC                     abcoulomb
+abfarad                 abampere sec / abvolt
+abF                     abfarad
+abhenry                 abvolt sec / abamp
+abH                     abhenry
+abvolt                  dyne cm  / abamp sec
+abV                     abvolt
+abohm                   abvolt / abamp
+abmho                   /abohm
+maxwell                 erg / abamp       # Also called the "line"
+Mx                      maxwell
+gauss                   maxwell / cm^2    # The magnetic field 2 cm from a wire
+Gs                      gauss             # carrying a current of 1 abampere
+oersted                 gauss / mu0   # From the relation H = B / mu
+Oe                      oersted      
+gilbert                 gauss cm / mu0
+Gb                      gilbert
+Gi                      gilbert
+unitpole                4 pi maxwell    # unit magnetic pole
+emu                     erg/gauss  # "electro-magnetic unit", a measure of
+                                   # magnetic moment, often used as emu/cm^3
+                                   # to specify magnetic moment density.
+
+# Electromagnetic CGS (Gaussian)
+#
+# The Gaussian system uses the statcoulomb and statamp from the ESU system
+# derived by setting k_C=1, but it defines the magnetic field unit differently
+# by taking k_B=c instead of k_B=1.  As noted above, k_C and k_A are not
+# independent.  With k_C=1 we must have k_A=c^-2.  This results in the magnetic
+# field unit, the gauss, having dimensions give by:
+#
+#         [gauss] = [2 (c^-2) c statamp / cm] = [statamp / c cm]
+#
+# We then define the gauss using base CGS units to obtain
+#
+#         gauss = statamp / ((cm/s) cm) = statcoulomb / cm^2.
+#
+# Note that this definition happens to give the same result as the definition
+# for the EMU system, so the definitions of the gauss are consistent.
+#
+# This definition gives the same dimensions for the E and B fields and was also
+# known as the "symmetric system".  This system was proposed by Hertz in 1888.
+
+!var UNITS_SYSTEM gaussian gauss
+!message CGS-Gaussian units selected
+!prompt (Gaussian)
+!endvar
+!var UNITS_SYSTEM gaussian gauss natural-gauss 
++coulombconst           1
++A                      10 c_SI statamp
+      # Some SI-based definitions need re-scaling
+      # by factors of "c" and/or "4 pi":
++epsilon0               1 / k_C        # SI relation: 1 / 4 pi k_C
++mu0                    1 / epsilon0   # SI relation: 1 / epsilon0 c^2
++bohrmagneton           (e hbar / 2 electronmass) / c
++magneticfluxquantum    c (pi hbar / e)
++maxwell                c (erg / abamp)
++weber                  c (J / A)
+!endvar
+
+# Electromagnetic CGS (Heaviside-Lorentz)
+
+# The Heaviside-Lorentz system is similar to the Gaussian system, but it is
+# "rationalized" so that factors of 4 pi do not appear in Maxwell's equations.
+# The SI system is similarly rationalized, but the other CGS systems are not.
+#
+# The factor of 4 pi appears instead in Coulomb's law, so in this system
+# k_C = 1 / 4 pi, which means the charge unit is defined by
+#
+#                      dyne = (1 / 4 pi) hlu_charge^2 / cm^2.
+# 
+# Since we have the leading constant of (1 / 4pi) the numerical value of the
+# charge number is larger by sqrt(4pi), which in turns means that the HLU
+# charge unit is smaller by this multiple.  But note that the dimensions of the
+# charge unit are the same as the Gaussian system, so both systems measure
+# charge with cm^(3/2) g^(1/2) / s, but the amount of charge for this dimension
+# differs by a factor of sqrt(4pi) between the two systems.
+#
+# Ampere's law for the Heaviside-Lorentz system has the form
+#
+#                B = 1/(2 pi c) * I/r
+
+# The Heaviside-Lorentz system does not appear to have any named units, so we
+# use "hlu" for "Heaviside-Lorentz unit" so we can define values for the basic
+# units in this system.
+
+hlu_charge    statcoulomb / sqrt(4 pi) 
+hlu_current   hlu_charge / sec
+hlu_volt      erg / hlu_charge
+hlu_efield    hlu_volt / cm
+hlu_bfield    sqrt(4 pi) gauss
+
+!var UNITS_SYSTEM hlu
+!message CGS-Heaviside-Lorentz Units selected
+!prompt (HLU)
+!endvar
+!var UNITS_SYSTEM hlu natural planck planck-red
++coulombconst           1 / 4 pi
++A                      10 c_SI statamp 
+        # Some SI-based magnetism definitions
+        # need re-scaling by factors of "c":
++mu0                    1 / epsilon0   # SI relation: 1 / epsilon0 c^2
++bohrmagneton           (e hbar / 2 electronmass) / c
++magneticfluxquantum    c (pi hbar / e)
++weber                  c (J / A)
++maxwell                c (erg / abamp)
+!endvar
+
+# "Natural units" (high energy physics and cosmology)
+#
+# In particle physics "natural units" (which don't seem to have a more specific
+# name) are defined by setting hbar = c = boltzmann = 1.  In this system the
+# electron volt is the only base unit.  The electromagnetic units can be 
+# derived from the rationalized Heaviside-Lorentz units or from Gaussian units.
+# The default form is the rationalized HLU derived version.
+#
+# The basic mechanical and thermodynamic definitions for the natural
+# units are identical in both systems.  These appear below.  The
+# natural-gauss system has additional electromagnetic redefinitions
+# that appear above in the "Electromagnetic CGS (Gaussian)" Section.
+
+# These are the Heaviside-Lorentz natural units
+
+natural_energy          eV
+natural_charge          e / sqrt(4 pi alpha)
+natural_time            hbar / natural_energy
+natural_length          natural_time c
+natural_mass            natural_energy / c^2
+natural_temp            natural_energy / boltzmann
+natural_force           natural_energy / natural_length
+natural_power           natural_energy / natural_time
+natural_volt            natural_energy / natural_charge
+natural_Efield          natural_volt   / natural_length
+natural_Bfield          natural_Efield / c
+natural_current         natural_charge / natural_time
+
+!var UNITS_SYSTEM natural
+!message Natural units selected (Heavyside-Lorentz based)
+!prompt (natural)
+!endvar
+
+!var UNITS_SYSTEM natural-gauss
+!message Natural units selected (Gaussian based)
+!prompt (natgauss)
+!endvar
+
+# These definitions are the same in both natural unit systems
+
+!var UNITS_SYSTEM natural natural-gauss
++eV                     !
++h                      2 pi
++c                      1
++boltzmann              1
++m                      e_SI / hbar_SI c_SI eV
++kg                     (c_SI^2 / e_SI) eV
++s                      e_SI / hbar_SI eV
++K                      (k_SI / e_SI) eV
+!endvar
+
+#
+# Planck units
+#
+# Planck units are a set of "natural" units based on physical constants c, G,
+# hbar, boltzmann's constant, and epsilon0, often used when working with
+# gravitational theory.  In planck units, all quantities are dimensionless.
+# Some variations are possible for exactly how the units are defined.  We
+# provide two variations, the rationalized planck units and the
+# rationalized-reduced planck units.
+#
+# In both forms the units are defined by c = hbar = boltzmann = 1. 
+# But the choice of rationalized and reduced affects how epsilon0 and G
+# are treated.  
+#
+# In the "rationalized" units, factors of 4 pi do not appear in Maxwell's 
+# equation, and Coulomb's law bears a factor of 1/4 pi.  See the section on
+# the Heaviside-Lorentz units for more about this.  The choice of rationalized 
+# units means that epsilon0 = 1.  (In the unrationalized case, which is not
+# supported, 1/(4 pi epsilon0) = 1.)  
+#
+# The "reduced" units similarly are defined to eliminate factors of 8 pi
+# from the Einstein field equations for gravitation.  With reduced units
+# we set 8 pi G = 1 and with the unreduced units, simply G = 1.
+
+# Rationalized, unreduced planck units
+
+planckmass              sqrt(hbar c / G)
+m_P                     planckmass
+planckenergy            planckmass c^2
+E_P                     planckenergy
+plancktime              hbar / planckenergy
+t_P                     plancktime
+plancklength            plancktime c
+l_P                     plancklength
+plancktemperature       planckenergy / k
+T_P                     plancktemperature
+planckforce             planckenergy / plancklength
+planckcharge            sqrt(epsilon0 hbar c)
+planckcurrent           planckcharge / plancktime
+planckvolt              planckenergy / planckcharge
+planckEfield            planckvolt / plancklength
+planckBfield            planckEfield / c
+
+# Rationalized, reduced planck units
+
+planckmass_red          sqrt(hbar c / 8 pi G)
+planckenergy_red        planckmass_red c^2
+plancktime_red          hbar / planckenergy_red
+plancklength_red        plancktime_red c
+plancktemperature_red   planckenergy_red / k
+planckforce_red         planckenergy_red / plancklength_red
+planckcharge_red        sqrt(epsilon0 hbar c)
+planckcurrent_red       planckcharge_red / plancktime_red
+planckvolt_red          planckenergy_red / planckcharge_red
+planckEfield_red        planckvolt_red / plancklength_red
+planckBfield_red        planckEfield_red /c
+
+
+!var UNITS_SYSTEM planck
+!message Planck units selected
+!prompt (planck)
++c 1
++h 2 pi
++G 1
++boltzmann 1
++kg sqrt(G_SI / hbar_SI c_SI)
++s  c_SI^2 / hbar_SI kg 
++m  s / c_SI            
++K  k_SI / hbar_SI s    
+!endvar
+
+
+!var UNITS_SYSTEM planck-red
+!message Reduced planck units selected
+!prompt (planck reduced)
++c 1
++h 2 pi
++G 1/8 pi
++boltzmann 1
++kg sqrt(8 pi G_SI / hbar_SI c_SI)
++s  c_SI^2 / hbar_SI kg
++m  s / c_SI           
++K  k_SI / hbar_SI s   
+!endvar
+
+#
+# Some historical electromagnetic units
+#
+
+intampere               0.999835 A    # Defined as the current which in one
+intamp                  intampere     #   second deposits .001118 gram of
+                                      #   silver from an aqueous solution of
+                                      #   silver nitrate.
+intfarad                0.999505 F
+intvolt                 1.00033 V
+intohm                  1.000495 ohm  # Defined as the resistance of a
+                                      #   uniform column of mercury containing
+                                      #   14.4521 gram in a column 1.063 m
+                                      #   long and maintained at 0 degC.
+daniell                 1.042 V       # Meant to be electromotive force of a
+                                      #   Daniell cell, but in error by .04 V
+faraday                 N_A e mol     # Charge that must flow to deposit or
+faraday_phys            96521.9 C     #   liberate one gram equivalent of any
+faraday_chem            96495.7 C     #   element.  (The chemical and physical
+faradayconst            N_A e         #   values are off slightly from what is
+                                      #   obtained by multiplying by amu_chem
+                                      #   or amu_phys.  These values are from
+                                      #   a 1991 NIST publication.)  Note that
+                                      #   there is also a Faraday constant,
+                                      #   which has units of C/mol.  
+kappline                6000 maxwell  # Named by and for Gisbert Kapp
+siemensunit             0.9534 ohm    # Resistance of a meter long column of
+                                      #   mercury with a 1 mm cross section.
+#
+# Printed circuit board units.  
+#
+# Iowa State University Center for Nondestructive Evaluation
+# Electrical Conductivity and Resistivity
+# https://www.nde-ed.org/Physics/Materials/Physical_Chemical/Electrical.xhtml
+#
+# Conductivity is often expressed as a percentage of IACS.  A copper wire a
+# meter long with a 1 mm^2 cross section has a resistance of 1|58 ohm at 
+# 20 deg C.  Copper density also has a standard IACS value at that temperature.
+#
+
+copperconductivity      58 siemens m / mm^2     # A wire a meter long with
+IACS                    copperconductivity      #   a 1 mm^2 cross section
+copperdensity           8.89 g/cm^3             # The "ounce" measures the     
+ouncecopper             oz / ft^2 copperdensity #   thickness of copper used   
+ozcu                    ouncecopper             #   in circuitboard fabrication
+                                                
+#
+# Photometric units
+#
+
+LUMINOUS_INTENSITY      candela
+LUMINOUS_FLUX           lumen
+LUMINOUS_ENERGY         talbot
+ILLUMINANCE             lux
+EXITANCE                lux
+
+candle                  1.02 candela  # Standard unit for luminous intensity
+hefnerunit              0.9 candle    #   in use before candela
+hefnercandle            hefnerunit    #
+violle                  20.17 cd      # luminous intensity of 1 cm^2 of
+                                      #   platinum at its temperature of
+                                      #   solidification (2045 K)
+
+lumen                   cd sr         # Luminous flux (luminous energy per
+lm                      lumen         #    time unit)
+
+talbot                  lumen s       # Luminous energy
+lumberg                 talbot        # References give these values for
+lumerg                  talbot        #    lumerg and lumberg both.  Note that
+                                      #    a paper from 1948 suggests that
+                                      #    lumerg should be 1e-7 talbots so
+                                      #    that lumergs/erg = talbots/joule.
+                                      #    lumerg = luminous erg
+lux                     lm/m^2        # Illuminance or exitance (luminous
+lx                      lux           #   flux incident on or coming from
+phot                    lumen / cm^2  #   a surface)
+ph                      phot          #
+footcandle              lumen/ft^2    # Illuminance from a 1 candela source
+                                      #    at a distance of one foot
+metercandle             lumen/m^2     # Illuminance from a 1 candela source
+                                      #    at a distance of one meter
+
+mcs                     metercandle s # luminous energy per area, used to
+                                      #    measure photographic exposure
+
+nox                     1e-3 lux      # These two units were proposed for
+skot                    1e-3 apostilb # measurements relating to dark adapted
+                                      # eyes.
+# Luminance measures
+
+LUMINANCE               nit
+
+nit                     cd/m^2        # Luminance: the intensity per projected
+stilb                   cd / cm^2     # area of an extended luminous source.
+sb                      stilb         # (nit is from latin nitere = to shine.)
+
+apostilb                cd/pi m^2
+asb                     apostilb
+blondel                 apostilb      # Named after a French scientist.
+
+# Equivalent luminance measures.  These units are units which measure
+# the luminance of a surface with a specified exitance which obeys
+# Lambert's law.  (Lambert's law specifies that luminous intensity of
+# a perfectly diffuse luminous surface is proportional to the cosine
+# of the angle at which you view the luminous surface.)
+
+equivalentlux           cd / pi m^2   # luminance of a 1 lux surface
+equivalentphot          cd / pi cm^2  # luminance of a 1 phot surface
+lambert                 cd / pi cm^2
+footlambert             cd / pi ft^2
+
+# The bril is used to express "brilliance" of a source of light on a
+# logarithmic scale to correspond to subjective perception.  An increase of 1
+# bril means doubling the luminance.  A luminance of 1 lambert is defined to
+# have a brilliance of 1 bril.
+
+bril(x) units=[1;lambert]  2^(x+-100) lamberts ;log2(bril/lambert)+100
+
+# Some luminance data from the IES Lighting Handbook, 8th ed, 1993
+
+sunlum                  1.6e9 cd/m^2  # at zenith
+sunillum                100e3 lux     # clear sky
+sunillum_o              10e3 lux      # overcast sky
+sunlum_h                6e6 cd/m^2    # value at horizon
+skylum                  8000 cd/m^2   # average, clear sky
+skylum_o                2000 cd/m^2   # average, overcast sky
+moonlum                 2500 cd/m^2
+
+#
+# Photographic Exposure Value
+# This section by Jeff Conrad (jeff_conrad@msn.com)
+#
+# The Additive system of Photographic EXposure (APEX) proposed in ASA
+# PH2.5-1960 was an attempt to simplify exposure determination for people who
+# relied on exposure tables rather than exposure meters.  Shortly thereafter,
+# nearly all cameras incorporated exposure meters, so the APEX system never
+# caught on, but the concept of exposure value remains in use.  Though given as
+# 'Ev' in ASA PH2.5-1960, it is now more commonly indicated by 'EV'.  EV is
+# related to exposure parameters by
+#
+#            A^2   LS   ES
+#     2^EV = --- = -- = --
+#             t    K    C
+#
+# Where
+#     A = Relative aperture (f-number)
+#     t = Exposure time in seconds
+#     L = Scene luminance in cd/m2
+#     E = Scene illuminance in lux
+#     S = Arithmetic ISO speed
+#     K = Reflected-light meter calibration constant
+#     C = Incident-light meter calibration constant
+#
+# Strictly, an exposure value is a combination of aperture and exposure time,
+# but it's also commonly used to indicate luminance (or illuminance).
+# Conversion to luminance or illuminance units depends on the ISO speed and the
+# meter calibration constant.  Common practice is to use an ISO speed of 100.
+# Calibration constants vary among camera and meter manufacturers: Canon,
+# Nikon, and Sekonic use a value of 12.5 for reflected-light meters, while
+# Kenko (formerly Minolta) and Pentax use a value of 14.  Kenko and Sekonic use
+# a value of 250 for incident-light meters with flat receptors.
+#
+# The values for in-camera meters apply only averaging, weighted-averaging, or
+# spot metering--the multi-segment metering incorporated in most current
+# cameras uses proprietary algorithms that evaluate many factors related to the
+# luminance distribution of what is being metered; they are not amenable to
+# simple conversions, and are usually not disclosed by the manufacturers.
+
+s100                    100 / lx s            # ISO 100 speed
+iso100                  s100
+
+# Reflected-light meter calibration constant with ISO 100 speed
+
+k1250                   12.5 (cd/m2) / lx s   # For Canon, Nikon, and Sekonic
+k1400                   14   (cd/m2) / lx s   # For Kenko (Minolta) and Pentax
+
+# Incident-light meter calibration constant with ISO 100 film
+
+c250                    250 lx / lx s         # flat-disc receptor
+
+# Exposure value to scene luminance with ISO 100 imaging media
+
+# For Kenko (Minolta) or Pentax
+#ev100(x) units=[;cd/m^2] range=(0,) 2^x k1400 / s100; log2(ev100 s100/k1400)
+# For Canon, Nikon, or Sekonic
+ev100(x) units=[1;cd/m^2] range=(0,) 2^x k1250 / s100; log2(ev100 s100/k1250)
+EV100()  ev100
+
+# Exposure value to scene illuminance with ISO 100 imaging media
+
+iv100(x) units=[1;lx] range=(0,) 2^x c250 / s100; log2(iv100 s100 / c250)
+
+# Other Photographic Exposure Conversions
+# 
+# As part of APEX, ASA PH2.5-1960 proposed several logarithmic quantities
+# related by
+#
+#    Ev = Av + Tv = Bv + Sv
+#
+# where
+#  Av = log2(A^2)       Aperture value
+#  Tv = log2(1/t)       Time value
+#  Sv = log2(N Sx)      Speed value
+#  Bv = log2(B S / K)   Luminance ("brightness") value
+#  Iv = log2(I S / C)   Illuminance value
+#
+# and
+#  A  = Relative aperture (f-number)
+#  t  = Exposure time in seconds
+#  Sx = Arithmetic ISO speed in 1/lux s
+#  B  = luminance in cd/m2
+#  I  = luminance in lux
+
+# The constant N derives from the arcane relationship between arithmetic
+# and logarithmic speed given in ASA PH2.5-1960.  That relationship
+# apparently was not obvious--so much so that it was thought necessary
+# to explain it in PH2.12-1961.  The constant has had several values
+# over the years, usually without explanation for the changes.  Although
+# APEX had little impact on consumer cameras, it has seen a partial
+# resurrection in the Exif standards published by the Camera & Imaging
+# Products Association of Japan.
+
+#N_apex         2^-1.75 lx s    # precise value implied in ASA PH2.12-1961,
+                                # derived from ASA PH2.5-1960.
+#N_apex         0.30 lx s       # rounded value in ASA PH2.5-1960, 
+                                # ASA PH2.12-1961, and ANSI PH2.7-1986
+#N_apex         0.3162 lx s     # value in ANSI PH2.7-1973
+N_exif          1|3.125 lx s    # value in Exif 2.3 (2010), making Sv(5) = 100
+K_apex1961      11.4 (cd/m2) / lx s    # value in ASA PH2.12-1961
+K_apex1971      12.5 (cd/m2) / lx s    # value in ANSI PH3.49-1971; more common
+C_apex1961      224 lx / lx s   # value in PH2.12-1961 (20.83 for I in 
+                                #   footcandles; flat sensor?)
+C_apex1971      322 lx / lx s   # mean value in PH3.49-1971 (30 +/- 5 for I in
+                                # footcandles; hemispherical sensor?)
+N_speed         N_exif
+K_lum           K_apex1971
+C_illum         C_apex1961
+
+# Units for Photographic Exposure Variables
+#
+# Practical photography sometimes pays scant attention to units for exposure
+# variables.  In particular, the "speed" of the imaging medium is treated as if
+# it were dimensionless when it should have units of reciprocal lux seconds;
+# this practice works only because "speed" is almost invariably given in
+# accordance with international standards (or similar ones used by camera
+# manufacturers)--so the assumed units are invariant.  In calculating
+# logarithmic quantities--especially the time value Tv and the exposure value
+# EV--the units for exposure time ("shutter speed") are often ignored; this
+# practice works only because the units of exposure time are assumed to be in
+# seconds, and the missing units that make the argument to the logarithmic
+# function dimensionless are silently provided.
+#
+# In keeping with common practice, the definitions that follow treat "speeds"
+# as dimensionless, so ISO 100 speed is given simply as '100'.  When
+# calculating the logarithmic APEX quantities Av and Tv, the definitions
+# provide the missing units, so the times can be given with any appropriate
+# units.  For example, giving an exposure time of 1 minute as either '1 min' or
+# '60 s' will result in Tv of -5.9068906.
+#
+# Exposure Value from f-number and Exposure Time
+# 
+# Because nonlinear unit conversions only accept a single quantity,
+# there is no direct conversion from f-number and exposure time to
+# exposure value EV.  But the EV can be obtained from a combination of
+# Av and Tv.  For example, the "sunny 16" rule states that correct
+# exposure for a sunlit scene can achieved by using f/16 and an exposure
+# time equal to the reciprocal of the ISO speed in seconds; this can be
+# calculated as
+#
+#    ~Av(16) + ~Tv(1|100 s),
+#
+# which gives 14.643856.  These conversions may be combined with the
+# ev100 conversion:
+#
+#    ev100(~Av(16) + ~Tv(1|100 s))
+#
+# to yield the assumed average scene luminance of 3200 cd/m^2.
+
+# convert relative aperture (f-number) to aperture value
+Av(A)           units=[1;1] domain=[-2,) range=[0.5,)  2^(A/2); 2 log2(Av)
+# convert exposure time to time value
+Tv(t)           units=[1;s] range=(0,)  2^(-t) s; log2(s / Tv)
+# convert logarithmic speed Sv in ASA PH2.5-1960 to ASA/ISO arithmetic speed;
+# make arithmetic speed dimensionless
+# 'Sv' conflicts with the symbol for sievert; you can uncomment this function
+# definition if you don't need that symbol
+#Sv(S)    units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sv)
+Sval(S)   units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sval)
+
+# convert luminance value Bv in ASA PH2.12-1961 to luminance
+Bv(x)           units=[1;cd/m^2] range=(0,) \
+                2^x K_lum N_speed ; log2(Bv / (K_lum N_speed))
+
+# convert illuminance value Iv in ASA PH2.12-1961 to illuminance
+Iv(x)           units=[1;lx] range=(0,) \
+                2^x C_illum N_speed ; log2(Iv / (C_illum N_speed))
+
+# convert ASA/ISO arithmetic speed Sx to ASA logarithmic speed in 
+# ASA PH2.5-1960; make arithmetic speed dimensionless
+Sx(S)           units=[1;1] domain=(0,) \
+                log2((N_speed/lx s) S); 2^Sx / (N_speed/lx s)
+
+# convert DIN speed/ISO logarithmic speed in ISO 6:1993 to arithmetic speed
+# for convenience, speed is treated here as if it were dimensionless
+Sdeg(S)         units=[1;1] range=(0,) 10^((S - 1) / 10) ; (1 + 10 log(Sdeg))
+Sdin()          Sdeg
+
+# Numerical Aperture and f-Number of a Lens
+#
+# The numerical aperture (NA) is given by
+#
+#   NA = n sin(theta)
+#
+# where n is the index of refraction of the medium and theta is half
+# of the angle subtended by the aperture stop from a point in the image
+# or object plane. For a lens in air, n = 1, and
+#
+#   NA = 0.5 / f-number
+#
+# convert NA to f-number
+numericalaperture(x) units=[1;1] domain=(0,1] range=[0.5,) \
+                     0.5 / x ; 0.5 / numericalaperture
+NA()            numericalaperture
+#
+# convert f-number to itself; restrict values to those possible
+fnumber(x)      units=[1;1] domain=[0.5,) range=[0.5,) x ; fnumber
+
+# Referenced Photographic Standards
+#
+# ASA PH-2.5-1960. USA Standard, Method for Determining (Monochrome,
+#    Continuous-Tone) Speed of Photographic Negative Materials.
+# ASA PH2.12-1961. American Standard, General-Purpose Photographic
+#    Exposure Meters (photoelectric type).
+# ANSI PH3.49-1971. American National Standard for general-purpose
+#    photographic exposure meters (photoelectric type).
+# ANSI PH2.7-1973. American National Standard Photographic Exposure Guide.
+# ANSI PH2.7-1986. American National Standard for Photography --
+#    Photographic Exposure Guide.
+# CIPA DC-008-2010. Exchangeable image file format for digital still
+#    cameras: Exif Version 2.3
+# ISO 6:1993.  International Standard, Photography -- Black-and-white
+#    pictorial still camera negative film/process systems --
+#    Determination of ISO Speed.
+
+
+#
+# Astronomical time measurements
+#
+# Astronomical time measurement is a complicated matter.  The length of the
+# true day at a given place can be 21 seconds less than 24 hours or 30 seconds
+# over 24 hours.  The two main reasons for this are the varying speed of
+# Earth in its elliptical orbit and the fact that the Sun moves on the ecliptic
+# instead of along the celestial equator.  To devise a workable system for time
+# measurement, Simon Newcomb (1835-1909) used a fictitious "mean Sun".
+# Consider a first fictitious Sun traveling along the ecliptic at a constant
+# speed and coinciding with the true Sun at perigee and apogee.  Then
+# considering a second fictitious Sun traveling along the celestial equator at
+# a constant speed and coinciding with the first fictitious Sun at the
+# equinoxes.  The second fictitious Sun is the "mean Sun".  From this equations
+# can be written out to determine the length of the mean day, and the tropical
+# year.  The length of the second was determined based on the tropical year
+# from such a calculation and was officially used from 1960-1967 until atomic
+# clocks replaced astronomical measurements for a standard of time.  All of the
+# values below give the mean time for the specified interval.
+#
+# See "Mathematical Astronomy Morsels" by Jean Meeus for more details
+# and a description of how to compute the correction to mean time.
+#
+
+TIME                    second
+
+anomalisticyear         365.2596 days       # The time between successive
+                                            #   perihelion passages of 
+                                            #   Earth.
+siderealyear            365.256360417 day   # The time for Earth to make
+                                            #   one revolution around the Sun
+                                            #   relative to the stars.
+tropicalyear            365.242198781 day   # The time needed for the mean Sun
+                                            #   as defined above to increase
+                                            #   its longitude by 360 degrees.
+                                            #   Most references defined the
+                                            #   tropical year as the interval
+                                            #   between vernal equinoxes, but
+                                            #   this is misleading.  The length
+                                            #   of the season changes over time
+                                            #   because of the eccentricity of
+                                            #   Earth's orbit.  The time
+                                            #   between vernal equinoxes is
+                                            #   approximately 365.24237 days
+                                            #   around the year 2000.  See
+                                            #   "Mathematical Astronomy
+                                            #   Morsels" for more details.
+eclipseyear             346.62 days         # The line of nodes is the
+                                            #   intersection of the plane of
+                                            #   Earth's orbit around the Sun
+                                            #   with the plane of the Moon's
+                                            #   orbit around Earth.  Eclipses
+                                            #   can only occur when the Moon
+                                            #   and Sun are close to this
+                                            #   line.  The line rotates and
+                                            #   appearances of the Sun on the
+                                            #   line of nodes occur every
+                                            #   eclipse year.
+saros                   223 synodicmonth    # The Earth, Moon and Sun appear in
+                                            #   the same arrangement every
+                                            #   saros, so if an eclipse occurs,
+                                            #   then one saros later, a similar
+                                            #   eclipse will occur.  (The saros
+                                            #   is close to 19 eclipse years.)
+                                            #   The eclipse will occur about
+                                            #   120 degrees west of the
+                                            #   preceding one because the
+                                            #   saros is not an even number of
+                                            #   days.  After 3 saros, an
+                                            #   eclipse will occur at
+                                            #   approximately the same place.
+solarday                day                 # Time from noon to noon
+siderealday             86164.09054 s       # The sidereal day is the interval
+siderealhour            1|24 siderealday    #   between two successive transits
+siderealminute          1|60 siderealhour   #   of a star over the meridian,
+siderealsecond          1|60 siderealminute #   or the time required  for
+                                            #   Earth to make one rotation
+                                            #   relative to the stars.  Another
+                                            #   way to think about it is to
+                                            #   imagine looking down at the
+                                            #   solar system and noting when
+                                            #   Earth has made a rotation.
+                                            #   The more usual solar day is the
+                                            #   time required to make a
+                                            #   rotation relative to the Sun,
+                                            #   which means the same point on
+                                            #   Earth faces the Sun again.
+                                            #   Because Earth moves in its
+                                            #   orbit, it has to rotate a bit
+                                            #   more to face the Sun again,
+                                            #   hence the solar day is slightly
+                                            #   longer than the sidereal day.
+                                            #   The value given here is the
+                                            #   mean day length taken from
+                                            #   ssd.jpl.nasa.gov/astro_par.html
+                                            #   which in turn cites the
+                                            #   "Explanatory Supplement to the
+                                            #   Astronomical Almanac", 1992.
+anomalisticmonth        27.55454977 day     # Time for the Moon to travel from
+                                            #   perigee to perigee
+nodicalmonth            27.2122199 day      # The nodes are the points where
+draconicmonth           nodicalmonth        #   an orbit crosses the ecliptic.
+draconiticmonth         nodicalmonth        #   This is the time required to
+                                            #   travel from the ascending node
+                                            #   to the next ascending node.
+siderealmonth           27.321661 day       # Time required for the Moon to
+                                            #   orbit the Earth
+lunarmonth              29 days + 12 hours + 44 minutes + 2.8 seconds
+                                            # Mean time between full moons.
+synodicmonth            lunarmonth          #   Full moons occur when the Sun
+lunation                synodicmonth        #   and Moon are on opposite sides
+lune                    1|30 lunation       #   of the Earth.  Since the Earth
+lunour                  1|24 lune           #   moves around the Sun, the Moon
+                                            #   has to move a bit further in its
+                                            #   orbit to return to the full moon
+                                            #   configuration.
+year                    tropicalyear
+yr                      year
+month                   1|12 year
+mo                      month
+lustrum                 5 years             # The Lustrum was a Roman
+                                            #   purification ceremony that took
+                                            #   place every five years.
+                                            #   Classically educated Englishmen
+                                            #   used this term.
+decade                  10 years
+century                 100 years
+millennium              1000 years
+millennia               millennium
+solaryear               year
+lunaryear               12 lunarmonth
+calendaryear            365 day
+commonyear              365 day
+leapyear                366 day
+ 
+# The Julian year is The length of an average year over a 4-year cycle in the
+# Julian calendar.  The calendar was proposed by Julius Caesar in 46 BCE and
+# took effect the following year. It has a normal year of 365 days and a leap
+# year of 366 days every four years.  Though this calendar was used in
+# Europe for more than 1600 years, it drifts from the topical year by
+# about 1 day every 128 years, which became noticeable over its period
+# of use.
+
+# This growing discrepancy between the seasons and the calendar was perhaps
+# confusing but was also of concern to the Catholic Church because it led to a
+# shift in the date of Easter.  To correct this discrepancy, Pope Gregory XIII
+# introduced the more accurate Gregorian calendar in 1582.  The Gregorian year
+# is the length of an average year over a 400-year cycle in the Gregorian
+# calendar.  Every year that is exactly divisible by four is a
+# leap year, except for years that are exactly divisible by 100, unless these
+# centurial years are exactly divisible by 400.  This calendar was adopted by
+# many Catholic countries when it was proclaimed, but was not adopted by many
+# other countries until much later; Britain and the British Empire, including
+# what is now the eastern part of the United States, adopted it in 1752.  See
+# https://en.wikipedia.org/wiki/List_of_adoption_dates_of_the_Gregorian_calendar_by_country
+# for additional details.
+
+julianyear              365.25 days
+gregorianyear           365.2425 days
+                                            
+islamicyear             354 day          # A year of 12 lunar months. They
+islamicleapyear         355 day          # began counting on July 16, AD 622
+                                         # when Muhammad emigrated to Medina
+                                         # (the year of the Hegira).  They need
+                                         # 11 leap days in 30 years to stay in
+                                         # sync with the lunar year which is a
+                                         # bit longer than the 29.5 days of the
+                                         # average month.  The months do not
+                                         # keep to the same seasons, but
+                                         # regress through the seasons every
+                                         # 32.5 years.
+islamicmonth            1|12 islamicyear # They have 29 day and 30 day months.
+
+# The Hebrew year is also based on lunar months, but synchronized to the solar
+# calendar.  The months vary irregularly between 29 and 30 days in length, and
+# the years likewise vary.  The regular year is 353, 354, or 355 days long.  To
+# keep up with the solar calendar, a leap month of 30 days is inserted every
+# 3rd, 6th, 8th, 11th, 14th, 17th, and 19th years of a 19 year cycle.  This
+# gives leap years that last 383, 384, or 385 days.
+
+#
+# Planetary data from JPL's planet fact sheets.  Each planet has its
+# own sheet at https://nssdc.gsfc.nasa.gov/planetary/factsheet/<name>fact.html
+# The source for data on the fact sheets is described at
+# https://nssdc.gsfc.nasa.gov/planetary/factsheet/fact_notes.html
+# and they also indicate that the values listed are not "official" values:
+# there is no single set of agreed upon values.  
+
+# Sidereal days.  The sidereal day is the time required for a planet to make a
+# revolution relative to the stars.  This is the default day value.  
+
+mercuryday              mercuryday_sidereal
+venusday                venusday_sidereal
+earthday                earthday_sidereal
+marsday                 marsday_sidereal
+jupiterday              jupiterday_sidereal
+saturnday               saturnday_sidereal
+uranusday               uranusday_sidereal
+neptuneday              neptuneday_sidereal
+plutoday                plutoday_sidereal
+
+mercuryday_sidereal     1407.6 hr   # Mercury is in a 3:2 resonance lock
+                                    # where it makes 3 rotations per 2 orbits
+                                    # so 3 sidereal days = 2 years
+venusday_sidereal       5832.6 hr   # Retrograde
+earthday_sidereal       siderealday
+marsday_sidereal        24.6229 hr
+jupiterday_sidereal     9.9250 hr
+saturnday_sidereal      10.656 hr
+uranusday_sidereal      17.24 hr    # Retrograde
+neptuneday_sidereal     16.11 hr
+plutoday_sidereal       153.2928 hr # Retrograde
+
+# In astronomy, an object's rotation is "prograde" if it rotates in
+# the same direction as the primary object it orbits.  Prograde
+# rotation is the more common case: in Earth's solar system, Mercury,
+# Earth, Mars, Jupiter, Saturn, and Neptune have prograde rotation.
+# When an object rotates opposite the direction of its primary object,
+# the object's rotation is "retrograde".  Venus, Uranus, and Pluto have
+# retrograde rotation.
+#
+# The solar (or synodic) day is the time from noon to noon on a planet.  This
+# is different from the sidereal day because the planet has moved in its orbit,
+# so (if its rotation is prograde) it needs additional rotation to return to
+# the same orientation relative to the Sun.  In one orbital period (a year),
+# this amounts to one additional complete rotation, so the number of sidereal
+# days in a year is one greater than the number of solar days.
+#
+# If the planet's rotation is retrograde, less rotation is needed to return to
+# the same orientation relative to the Sun, and the number of sidereal days in
+# a year is one fewer than the number of solar days.
+#
+# The solar day can be computed from the sidereal day in the typical prograde
+# case by:
+#       solar_day = sidereal_day year / (year - sidereal_day)
+# If the planet's rotation is retrograde like Venus then the formula is
+#       solar_day = sidereal_day year / (year + sidereal_day)
+# If the sidereal day and year are the same length then the same face of the
+# planet faces the Sun and there is no solar day.
+
+mercuryday_solar        4222.6 hr 
+venusday_solar          2802.0 hr
+earthday_solar          24 hr
+marsday_solar           24.6597 hr
+jupiterday_solar        9.9259 hr
+saturnday_solar         10.656 hr
+uranusday_solar         17.24 hr
+neptuneday_solar        16.11 hr
+plutoday_solar          153.2820 hr
+
+# Sidereal years 
+
+mercuryyear             87.969 day
+venusyear               224.701 day
+earthyear               siderealyear
+marsyear                686.980 day
+jupiteryear             4332.589 day
+saturnyear              10759.22 day
+uranusyear              30685.4 day
+neptuneyear             60189 day
+plutoyear               90560 day
+
+# Equatorial radii for the planets from JPL fact sheets
+
+mercuryradius           2440.5 km
+venusradius             6051.8 km
+earthradius             6378.137 km
+marsradius              3396.2 km
+jupiterradius           71492 km   # 1 bar level
+saturnradius            60268 km   # 1 bar level
+uranusradius            25559 km   # 1 bar level
+neptuneradius           24764 km   # 1 bar level
+plutoradius             1188 km
+
+# Volumetric mean radii
+
+mercuryradius_mean      2440.5 km
+venusradius_mean        6051.8 km
+earthradius_mean        6371 km
+marsradius_mean         3389.5 km
+jupiterradius_mean      69911 km
+saturnradius_mean       58232 km
+uranusradius_mean       25362 km
+neptuneradius_mean      24622 km
+plutoradius_mean        1188 km
+
+# Polar radii
+
+mercuryradius_polar      2438.3 km
+venusradius_polar        6051.8 km
+marsradius_polar         3376.2 km
+jupiterradius_polar      66854 km
+saturnradius_polar       54364 km
+uranusradius_polar       24973 km
+neptuneradius_polar      24341 km
+plutoradius_polar        1188 km
+
+mercurysundist_min      46.000 Gm
+mercurysundist_max      69.818 Gm
+venussundist_min        107.480 Gm
+venussundist_max        108.941 Gm
+earthsundist_min        sundist_min
+earthsundist_max        sundist_max
+marssundist_min         206.650 Gm
+marssundist_max         249.261 Gm
+jupitersundist_min      740.595 Gm
+jupitersundist_max      816.363 Gm
+saturnsundist_min       1357.554 Gm
+saturnsundist_max       1506.527 Gm
+uranussundist_min       2732.696 Gm
+uranussundist_max       3001.390 Gm
+neptunesundist_min      4471.050 Gm
+neptunesundist_max      4558.857 Gm
+plutosundist_min        4434.987 Gm
+plutosundist_max        7304.326 Gm
+
+sundist                 1.0000010178 au # mean Earth-Sun distance
+moondist                384400 km       # mean Earth-Moon distance
+sundist_near            147.095 Gm      # Earth-Sun distance at perihelion
+sundist_min             sundist_near
+sundist_far             152.100 Gm      # Earth-Sun distance at aphelion
+sundist_max             sundist_far
+
+# The Earth-Moon distances at perigee and apogee are different for every
+# lunation.  The values here are the extremes for 1500-2500 according to
+# Jean Meeus's Astronomical Algorithms (1991, 332).
+
+moondist_min            356371 km      # minimum distance at perigee 1500-2500
+moondist_max            406720 km      # maximum distance at apogee 1500-2500
+
+# Objects on Earth are charted relative to a perfect ellipsoid whose
+# dimensions are specified by different organizations.  The ellipsoid is
+# specified by an equatorial radius and a flattening value which defines the
+# polar radius.
+
+earthflattening         IERS_earthflattening
+earthradius_equatorial  IERS_earthradius_equatorial
+earthradius_polar       (1-earthflattening) earthradius_equatorial
+
+# The World Geodetic System maintains a standard, WGS84, which is used by the
+# the GPS system.  This system uses a conventional ellipsoid that was fixed in
+# 1984 and has remained constant so that data collected at different times is
+# referenced to the same ellipsoid.   https://epsg.io/4326
+
+WGS84_earthflattening         1|298.257223563
+WGS84_earthradius_equatorial  6378137 m
+WGS84_earthradius_polar   (1-WGS84_earthflattening) WGS84_earthradius_equatorial
+
+# The International Earth Rotation Service (IERS) attempts to
+# maintain an accurate model of Earth, with updates to maintain the highest
+# possible accuracy, even though this makes it more difficult to relate geodetic
+# measurements made at different times.
+# IERS Conventions, Chapter 1, General definitions and numerical standards (16 November 2017)
+# https://iers-conventions.obspm.fr/content/chapter1/icc1.pdf
+
+IERS_earthflattening        1|298.25642
+IERS_earthradius_equatorial 6378136.6 m
+IERS_earthradius_polar      (1-IERS_earthflattening) IERS_earthradius_equatorial
+
+
+landarea                148.847e6 km^2
+oceanarea               361.254e6 km^2
+
+moonradius              1738 km         # mean value
+sunradius               6.96e8 m
+
+# Many astronomical values can be measured most accurately in a system of units
+# using the astronomical unit and the mass of the Sun as base units.  The
+# uncertainty in the gravitational constant makes conversion to SI units
+# significantly less accurate.
+
+# The astronomical unit was defined to be the length of the of the semimajor
+# axis of a massless object with the same year as Earth.  With such a
+# definition in force, and with the mass of the Sun set equal to one, Kepler's
+# third law can be used to solve for the value of the gravitational constant.
+
+# Kepler's third law says that (2 pi / T)^2 a^3 = G M where T is the orbital
+# period, a is the size of the semimajor axis, G is the gravitational constant
+# and M is the mass.  With M = 1 and T and a chosen for Earth's orbit, we
+# find sqrt(G) = (2 pi / T) sqrt(AU^3).  This constant is called the Gaussian
+# gravitational constant, apparently because Gauss originally did the
+# calculations.  However, when the original calculation was done, the value
+# for the length of Earth's year was inaccurate.  The value used is called
+# the Gaussian year.  Changing the astronomical unit to bring it into
+# agreement with more accurate values for the year would have invalidated a
+# lot of previous work, so instead the astronomical unit has been kept equal
+# to this original value.  This is accomplished by using a standard value for
+# the Gaussian gravitational constant.  This constant is called k.
+
+gauss_k                 0.01720209895   # This beast has dimensions of
+                                        # au^(3|2) / day and is exact.
+gaussianyear      (2 pi / gauss_k) days # Year that corresponds to the Gaussian
+                                        # gravitational constant. This is a
+                                        # fictional year, and doesn't
+                                        # correspond to any celestial event.
+astronomicalunit         149597870700 m # IAU definition from 2012, exact
+au                     astronomicalunit # ephemeris for the above described
+                                        # astronomical unit.  (See the NASA
+                                        # site listed above.)
+GMsun    132712440041.279419 km^3 / s^2 # heliocentric gravitational constant
+solarmass                       GMsun/G # is known more accurately than G.
+sunmass                       solarmass # Estimated from DE440
+
+
+# The following are masses for planetary systems, not just the planet itself,
+# except for the case of Earth, where the Moon is excluded.  Masses are
+# relative to G because they are known much more accurately than G.
+#
+# See https://ssd.jpl.nasa.gov/astro_par.html.  Values are from
+# the DE440 Ephemeris: https://ssd.jpl.nasa.gov/doc/Park.2021.AJ.DE440.pdf
+
+mercurymass             22031.868551 km^3 / s^2 G
+venusmass               324858.592000 km^3 / s^2 G
+marsmass                42828.375816 km^3 / s^2 G
+jupitermass             126712764.100000 km^3 / s^2 G
+saturnmass              37940584.841800 km^3 / s^2 G
+uranusmass              5794556.400000 km^3 / s^2 G
+neptunemass             6836527.100580 km^3 / s^2 G
+plutomass               975.500000 km^3 / s^2 G
+ceresmass               62.62890 km^3 / s^2 G
+vestamass               17.288245 km^3 / s^2 G
+
+earthmass               398600.435507 km^3 / s^2 G    # Earth alone
+moonmass                4902.800118 km^3 / s^2 G
+moonearthmassratio      moonmass/earthmass
+earthmoonmass           earthmass+moonmass
+
+moongravity             1.62 m/s^2
+
+# Earth gravity values at the equator and poles.  These values are
+# obtained from the WGS84 model.
+
+gravity_equatorial      9.7803263359 m / s^2
+gravity_polar           9.8321849378 m / s^2
+
+# The Hubble constant gives the speed at which distance galaxies are moving
+# away from Earth according to v = H0*d, where H0 is the hubble constant
+# and d is the distance to the galaxy.
+
+hubble                  70 km/s/Mpc        # approximate
+H0                      hubble
+
+# Parallax is the angular difference between the topocentric (on Earth's
+# surface) and geocentric (at Earth's center) direction toward a celestial body
+# when the body is at a given altitude.  When the body is on the horizon, the
+# parallax is the horizontal parallax; when the body is on the horizon and the
+# observer is on the equator, the parallax is the equatorial horizontal
+# parallax.  When the body is at zenith, the parallax is zero.
+
+lunarparallax  asin(earthradius_equatorial / moondist) # Moon equatorial 
+moonhp         lunarparallax                           # horizontal parallax
+                                                       # at mean distance
+
+# Light from celestial objects is attenuated by passage through Earth's
+# atmosphere.  A body near the horizon passes through much more air than an
+# object at zenith, and is consequently less bright.  Air mass is the ratio of
+# the length of the optical path at a given altitude (angle above the horizon)
+# to the length at zenith.  Air mass at zenith is by definition unity; at the
+# horizon, air mass is approximately 38, though the latter value can vary
+# considerably with atmospheric conditions.  The general formula is # E = E0
+# exp(-c X), where E0 is the value outside Earth's atmosphere, E is the value
+# seen by an observer, X is the air mass and c is the extinction coefficient.
+# A common value for c in reasonably clear air is 0.21, but values can be
+# considerably greater in urban areas.  Apparent altitude is that perceived by
+# an observer; it includes the effect of atmospheric refraction.  There is no
+# shortage of formulas for air mass
+# (https://en.wikipedia.org/wiki/Air_mass_(astronomy)); all are subject to
+# variations in local atmospheric conditions.  The formula used here is simple
+# and is in good agreement with rigorously calculated values under standard
+# conditions.
+#
+# Extraterrestrial illuminance or luminance of an object at a given altitude
+# determined with vmag() or SB_xxx() below can be multiplied by
+# atm_transmission() or atm_transmissionz() to estimate the terrestrial value.
+#
+# Kasten and Young (1989) air mass formula. alt is apparent altitude
+# Reference:
+# Kasten, F., and A.T. Young. 1989. "Revised Optical Air Mass Tables
+#     and Approximation Formula."  Applied Optics.  Vol. 28, 4735-4738.
+#     Bibcode:1989ApOpt..28.4735K. doi:10.1364/AO.28.004735.
+
+airmass(alt) units=[degree;1] domain=[0,90] noerror \
+    1 / (sin(alt) + 0.50572 (alt / degree + 6.07995)^-1.6364)
+
+# zenith is apparent zenith angle (zenith = 90 deg - alt)
+airmassz(zenith) units=[degree;1] domain=[0,90] noerror \
+    1 / (cos(zenith) + 0.50572 (96.07995 - zenith / degree)^-1.6364)
+
+# For reasonably clear air at sea level; values may need adjustment for
+# elevation and local atmospheric conditions
+# for scotopic vision (510 nm), appropriate for the dark-adapted eye
+# extinction_coeff           0.26
+# for photopic vision, appropriate for observing brighter objects such
+# as the full moon
+extinction_coeff        0.21
+
+atm_transmission(alt) units=[degree;1] domain=[0,90] noerror \
+                        exp(-extinction_coeff airmass(alt))
+
+# in terms of zenith angle (zenith = 90 deg - alt)
+atm_transmissionz(zenith) units=[degree;1] domain=[0,90] noerror \
+                        exp(-extinction_coeff airmassz(zenith))
+
+# Moon and Sun data at mean distances
+moonvmag               -12.74  # Moon apparent visual magnitude at mean distance
+sunvmag                -26.74  # Sun apparent visual magnitude at mean distance
+moonsd  asin(moonradius / moondist) # Moon angular semidiameter at mean distance
+sunsd     asin(sunradius / sundist) # Sun angular semidiameter at mean distance
+
+# Visual magnitude of star or other celestial object.  The system of stellar
+# magnitudes, developed in ancient Greece, assigned magnitudes from 1
+# (brightest) to 6 (faintest visible to the naked eye).  In 1856, British
+# astronomer Norman Pogson made the system precise, with a magnitude 1 object
+# 100 times as bright as a magnitude 6 object, and each magnitude differing
+# from the next by a constant ratio; the ratio, sometimes known as Pogson's
+# ratio, is thus 100^0.2, or approximately 2.5119.  The logarithm of 100^0.2 is
+# 0.4, hence the common use of powers of 10 and base-10 logarithms.
+#
+# Reference:
+# Allen, C.W. 1976.  Astrophysical Quantities, 3rd ed. 1973, reprinted
+#     with corrections, 1976.  London: Athlone.
+#
+# The function argument is the (dimensionless) visual magnitude; reference
+# illuminance of 2.54e-6 lx is from Allen (2000, 21), and is for outside
+# Earth's atmosphere.  Illuminance values can be adjusted to terrestrial values
+# by multiplying by one of the atm_transmission functions above.
+
+# Illuminance from apparent visual magnitude
+vmag(mag) units=[1;lx] domain=[,]  range=(0,] \
+                       2.54e-6 lx 10^(-0.4 mag); -2.5 log(vmag / (2.54e-6 lx))
+
+# Surface brightness of a celestial object of a given visual magnitude
+# is a logarithmic measure of the luminance the object would have if its
+# light were emitted by an object of specified solid angle; it is
+# expressed in magnitudes per solid angle.  Surface brightness can be
+# obtained from the visual magnitude by
+#    S = m + 2.5 log(pi pi k a b),
+# where k is the phase (fraction illuminated), a is the equatorial
+# radius, and b is the polar radius.  For 100% illumination (e.g., full
+# moon), this is often simplified to
+#    S = m + 2.5 log(pi k s^2),
+# where s is the object's angular semidiameter; the units of s determine
+# the units of solid angle.  The visual magnitude and semidiameter must
+# be appropriate for the object's distance; for other than 100%
+# illumination, the visual magnitude must be appropriate for the phase.
+# Luminance values are for outside Earth's atmosphere; they can be
+# adjusted to terrestrial values by multiplying by one of the atm_transmission
+# functions above.
+
+# luminance from surface brightness in magnitudes per square degree
+SB_degree(sb) units=[1;cd/m^2] domain=[,] range=(0,] \
+    vmag(sb) / squaredegree ; \
+    ~vmag(SB_degree squaredegree)
+
+# luminance from surface brightness in magnitudes per square minute
+SB_minute(sb) units=[1;cd/m^2] domain=[,] range=(0,] \
+    vmag(sb) / squareminute ; \
+    ~vmag(SB_minute squareminute)
+
+# luminance from surface brightness in magnitudes per square second
+SB_second(sb) units=[1;cd/m^2] domain=[,] range=(0,] \
+    vmag(sb) / squaresecond ; \
+    ~vmag(SB_second squaresecond)
+
+# luminance from surface brightness in magnitudes per steradian
+SB_sr(sb) units=[1;cd/m^2] domain=[,] range=(0,] \
+    vmag(sb) / sr ; \
+    ~vmag(SB_sr sr)
+
+SB()            SB_second
+SB_sec()        SB_second
+SB_min()        SB_minute
+SB_deg()        SB_degree
+
+# The brightness of one tenth-magnitude star per square degree outside
+# Earth's atmosphere; often used for night sky brightness.
+S10     SB_degree(10)
+
+# Examples for magnitude and surface brightness functions
+# Sun illuminance from visual magnitude
+#     You have: sunvmag
+#     You want:
+#           Definition: -26.74 = -26.74
+#     You have: vmag(sunvmag)
+#     You want: lx
+#           * 126134.45
+#           / 7.9280482e-06
+#
+# Moon surface brightness from visual magnitude and semidiameter at 100%
+# illumination (full moon):
+#     You have: moonvmag
+#     You want:
+#           Definition: -12.74 = -12.74
+#     You have: moonsd
+#     You want: arcsec
+#           * 932.59484
+#           / 0.001072277
+#     You have: moonvmag + 2.5 log(pi 932.59484^2)
+#     You want:
+#           Definition: 3.3513397
+#
+# Similar example with specific data obtained from another source (JPL
+# Horizons, https://ssd.jpl.nasa.gov/horizons.cgi); semidiameter is in
+# arcseconds
+#
+#     You have: -12.9 + 2.5 log(pi 2023.201|2^2)
+#     You want:
+#           Definition: 3.3679199
+#     You have: SB_second(-12.9 + 2.5 log(pi 2023.201|2^2))
+#     You want:
+#           Definition: 4858.6547 cd / m^2
+#
+# If surface brightness is provided by another source (e.g., Horizons),
+# it can simply be used directly:
+# You have: SB_second(3.3679199)
+# You want: cd/m^2
+#         * 4858.6546
+#         / 0.0002058183
+# The illuminance and luminance values are extraterrestrial (outside
+# Earth's atmosphere).  The values at Earth's surface are less than these
+# because of atmospheric extinction.  For example, in the last example
+# above, if the Moon were at an altitude of 55 degrees, the terrestrial
+# luminance could be calculated with
+#     You have: SB_second(3.3679199)
+#     You want: cd/m^2
+#           * 4858.6546
+#           / 0.0002058183
+#     You have: _ atm_transmission(55 deg)
+#     You want: cd/m^2
+#           * 3760.6356
+#           / 0.0002659125
+# If desired, photographic exposure can be determined with EV100(),
+# leading to acceptable combinations of aperture and exposure time.
+# For the example above, but with the Moon at 10 degrees,
+#     You have: SB_second(3.3679199) atm_transmission(10 deg)
+#     You want: EV100
+#           13.553962
+
+#
+# The Hartree system of atomic units, derived from fundamental units
+# of mass (of the electron), action (Planck's constant), charge, and
+# the Coulomb constant.  This system is used in the fields of physical
+# chemistry and condensed matter physics.  
+#
+
+# Fundamental units
+
+atomicmass              electronmass
+atomiccharge            e
+atomicaction            hbar
+atomicenergy            hartree
+
+# Derived units
+
+atomicvelocity          sqrt(atomicenergy / atomicmass)
+atomictime              atomicaction / atomicenergy
+atomiclength            atomicvelocity atomictime
+atomicforce             atomicenergy / atomiclength
+atomicmomentum          atomicenergy / atomicvelocity
+atomiccurrent           atomiccharge / atomictime
+atomicpotential         atomicenergy / atomiccharge   # electrical potential
+atomicvolt              atomicpotential
+atomicEfield            atomicpotential / atomiclength
+atomicBfield            atomicEfield / atomicvelocity
+atomictemperature       atomicenergy / boltzmann
+
+#
+# In Hartree units, m_e = hbar = e = coulombconst = bohrradius = alpha*c = 1
+#
+
+!var UNITS_SYSTEM hartree
+!message Hartree units selected
+!prompt (hartree)
++hartree      1
++kg           1/electronmass_SI
++K            k_SI / hbar_SI s 
++m            alpha c_SI electronmass_SI / hbar_SI
++s            alpha c_SI m
++A            1 / s e_SI
+!endvar
+
+#
+# These thermal units treat entropy as charge, from [5]
+#
+
+thermalcoulomb          J/K        # entropy
+thermalampere           W/K        # entropy flow
+thermalfarad            J/K^2
+thermalohm              K^2/W      # thermal resistance
+fourier                 thermalohm
+thermalhenry            J K^2/W^2  # thermal inductance
+thermalvolt             K          # thermal potential difference
+
+
+#
+# United States units
+#
+
+# linear measure
+
+# The US Metric Law of 1866 legalized the metric system in the USA and
+# defined the meter in terms of the British system with the exact
+# 1 meter = 39.37 inches.  On April 5, 1893 Thomas Corwin Mendenhall,
+# Superintendent of Weights and Measures, decided, in what has become
+# known as the "Mendenhall Order" that the meter and kilogram would be the
+# fundamental standards in the USA.  The definition from 1866 was turned
+# around to give an exact definition of the yard as 3600|3937 meters This
+# definition was used until July of 1959 when the definition was changed
+# to bring the US and other English-speaking countries into agreement; the
+# Canadian value of 1 yard = 0.9144 meter (exactly) was chosen because it
+# was approximately halfway between the British and US values; it had the
+# added advantage of making 1 inch = 25.4 mm (exactly).  Since 1959, the
+# "international" foot has been exactly 0.3048 meters.  At the same time,
+# it was decided that any data expressed in feet derived from geodetic
+# surveys within the US would continue to use the old definition and call
+# the old unit the "survey foot."
+#
+# Until 1 January 2023, the US continued to define the statute
+# mile, furlong, chain, rod, link, and fathom in terms of the US survey
+# foot.  Since then, use of the US survey foot has been officially
+# deprecated, with its use limited to historical and legacy applications.
+# These units are now defined in terms of the international foot.
+#
+# Sources:
+# NIST Special Publication 447, Sects. 5, 7, and 8.
+# NIST Handbook 44, 2024 ed., Appendix C.
+# Canadian Journal of Physics, 1959, 37:(1) 84, 10.1139/p59-014.
+
+inch                    2.54 cm          # Exact, international inch (1959)
+in                      inch
+foot                    12 inch
+feet                    foot
+ft                      foot
+yard                    3 ft
+yd                      yard
+mile                    5280 ft          # The mile was enlarged from 5000 ft
+                                         # to this number in order to make
+                                         # it an even number of furlongs.
+                                         # (The Roman mile is 5000 romanfeet.)
+line                    1|12 inch  # Also defined as '.1 in' or as '1e-8 Wb'
+rod                     16.5 ft
+pole                    rod
+perch                   rod
+furlong                 40 rod           # From "furrow long"
+statutemile             mile
+league                  3 mile           # Intended to be an hour's walk
+
+# surveyor's measure
+# The US survey foot is officially deprecated as of 1 January 2023
+US                      1200|3937 m/ft   # These four values will convert
+US-                     US               #   international measures to
+survey-                 US               #   US Survey measures
+geodetic-               US
+int                     3937|1200 ft/m   # Convert US Survey measures to
+int-                    int              #   international measures
+
+# values based on the US survey foot are deprecated as of 1 January 2023
+surveyorschain          66 surveyft
+surveychain             surveyorschain
+surveyorspole           1|4 surveyorschain
+surveyorslink           1|100 surveyorschain
+USacre                  10 surveychain^2
+USacrefoot              USacre surveyfoot
+
+chain                   66 ft
+link                    1|100 chain
+ch                      chain
+intacre                 10 chain^2       # Acre based on international ft
+intacrefoot             acre foot
+acrefoot                intacrefoot
+acre                    intacre
+ac                      acre
+section                 mile^2
+township                36 section
+homestead               160 acre # Area of land granted by the 1862 Homestead
+                                 # Act of the United States Congress
+gunterschain            surveyorschain
+
+engineerschain          100 ft
+engineerslink           1|100 engineerschain
+ramsdenschain           engineerschain
+ramsdenslink            engineerslink
+
+gurleychain             33 feet           # Andrew Ellicott chain is the
+gurleylink              1|50 gurleychain  # same length
+
+wingchain               66 feet           # Chain from 1664, introduced by
+winglink                1|80 wingchain    # Vincent Wing, also found in a
+                                          # 33 foot length with 40 links.
+# early US length standards
+
+# The US has had four standards for the yard: one by Troughton of London
+# (1815); bronze yard #11 (1856); the Mendhall yard (1893), consistent
+# with the definition of the meter in the metric joint resolution of
+# Congress in 1866, but defining the yard in terms of the meter; and the
+# international yard (1959), which standardized definitions for Australia,
+# Canada, New Zealand, South Africa, the UK, and the US.
+# Sources: Pat Naughtin (2009), Which Inch?:
+# https://metricationmatters.org/docs/WhichInch.pdf, 
+# Lewis E.  Barbrow and Lewis V.  Judson (1976).  NBS Special
+# Publication 447, Weights and Measures Standards of the United States: A
+# Brief History.
+
+troughtonyard           914.42190 mm
+bronzeyard11            914.39980 mm
+mendenhallyard          surveyyard
+internationalyard       yard
+
+# nautical measure
+
+fathom                  6 ft     # Originally defined as the distance from
+                                 #   fingertip to fingertip with arms fully
+                                 #   extended.
+nauticalmile            1852 m   # Supposed to be one minute of latitude at
+                                 # the equator.  That value is about 1855 m.
+                                 # Early estimates of Earth's circumference
+                                 # were a bit off.  The value of 1852 m was
+                                 # made the international standard in 1929.
+                                 # The US did not accept this value until
+                                 # 1954.  The UK switched in 1970.
+                                 
+# The cable is used for depth in water and has a wide range of definitions
+
+intcable                1|10 nauticalmile # international cable
+uscable                 120 fathom	  # value after 1 January 2023
+surveycable             120 USfathom	  # value before 1 January 2023
+UScable                 surveycable
+cableslength            cable
+cablelength             cable
+navycablelength         cable
+brcable                 1|10 brnauticalmile   
+admiraltycable          brcable
+
+marineleague            3 nauticalmile
+geographicalmile        brnauticalmile
+knot                    nauticalmile / hr
+click                   km       # US military slang
+klick                   click
+
+# Avoirdupois weight
+
+pound                   0.45359237 kg   # Exact, International Pound (1959)
+lb                      pound           # From the Latin libra
+grain                   1|7000 pound    # The grain is the same in all three
+                                        # weight systems.  It was originally
+                                        # defined as the weight of a barley
+                                        # corn taken from the middle of the
+                                        # ear.
+ounce                   1|16 pound
+oz                      ounce
+dram                    1|16 ounce
+dr                      dram
+ushundredweight         100 pounds
+cwt                     hundredweight
+shorthundredweight      ushundredweight
+uston                   shortton
+shortton                2000 lb
+quarterweight           1|4 uston
+shortquarterweight      1|4 shortton
+shortquarter            shortquarterweight
+
+# Troy Weight.  In 1828 the troy pound was made the first United States
+# standard weight.  It was to be used to regulate coinage.
+
+troypound               5760 grain
+troyounce               1|12 troypound
+ozt                     troyounce
+pennyweight             1|20 troyounce  # Abbreviated "d" in reference to a
+dwt                     pennyweight     #   Frankish coin called the "denier"
+                                        #   minted in the late 700's.  There
+                                        #   were 240 deniers to the pound.
+assayton                mg ton / troyounce  # mg / assayton = troyounce / ton
+usassayton              mg uston / troyounce
+brassayton              mg brton / troyounce
+fineounce               troyounce       # A troy ounce of 99.5% pure gold
+
+# Some other jewelers units
+
+metriccarat             0.2 gram        # Defined in 1907
+metricgrain             50 mg
+carat                   metriccarat
+ct                      carat
+jewelerspoint           1|100 carat
+silversmithpoint        1|4000 inch
+momme                   3.75 grams      # Traditional Japanese unit based
+                                        # on the chinese mace.  It is used for
+                                        # pearls in modern times and also for
+                                        # silk density.  The definition here
+                                        # was adopted in 1891.
+# Apothecaries' weight
+
+appound                 troypound
+apounce                 troyounce
+apdram                  1|8 apounce
+apscruple               1|3 apdram
+
+# Liquid measure
+
+usgallon                231 in^3        # US liquid measure is derived from
+gal                     gallon          # the British wine gallon of 1707.
+quart                   1|4 gallon      # See the "winegallon" entry below
+pint                    1|2 quart       # more historical information.
+gill                    1|4 pint
+usquart                 1|4 usgallon
+uspint                  1|2 usquart
+usgill                  1|4 uspint
+usfluidounce            1|16 uspint
+fluiddram               1|8 usfloz
+minimvolume             1|60 fluiddram
+qt                      quart
+pt                      pint
+floz                    fluidounce
+usfloz                  usfluidounce
+fldr                    fluiddram
+liquidbarrel            31.5 usgallon
+usbeerbarrel            2 beerkegs
+beerkeg                 15.5 usgallon   # Various among brewers
+ponykeg                 1|2 beerkeg
+winekeg                 12 usgallon
+petroleumbarrel         42 usgallon     # Originated in Pennsylvania oil
+barrel                  petroleumbarrel # fields, from the winetierce
+bbl                     barrel
+ushogshead              2 liquidbarrel
+usfirkin                9 usgallon
+
+# Dry measures: The Winchester Bushel was defined by William III in 1702 and
+# legally adopted in the US in 1836.
+
+usbushel                2150.42 in^3  # Volume of 8 inch cylinder with 18.5
+bu                      bushel        # inch diameter (rounded)
+peck                    1|4 bushel
+uspeck                  1|4 usbushel
+brpeck                  1|4 brbushel
+pk                      peck
+drygallon               1|2 uspeck
+dryquart                1|4 drygallon
+drypint                 1|2 dryquart
+drybarrel               7056 in^3     # Used in US for fruits, vegetables,
+                                      #   and other dry commodities except for
+                                      #   cranberries.
+cranberrybarrel         5826 in^3     # US cranberry barrel
+heapedbushel            1.278 usbushel# The following explanation for this
+                                      #   value was provided by Wendy Krieger
+                                      #   <os2fan2@yahoo.com> based on
+                                      #   guesswork.  The cylindrical vessel is
+                                      #   18.5 inches in diameter and 1|2 inch
+                                      #   thick.  A heaped bushel includes the
+                                      #   contents of this cylinder plus a heap
+                                      #   on top.  The heap is a cone 19.5
+                                      #   inches in diameter and 6 inches
+                                      #   high.  With these values, the volume
+                                      #   of the bushel is 684.5 pi in^3 and
+                                      #   the heap occupies 190.125 pi in^3.
+                                      #   Therefore, the heaped bushel is
+                                      #   874.625|684.5 bushels.  This value is
+                                      #   approximately 1.2777575 and it rounds
+                                      #   to the value listed for the size of
+                                      #   the heaped bushel.  Sometimes the
+                                      #   heaped bushel is reported as 1.25
+                                      #   bushels.  This same explanation gives
+                                      #   that value if the heap is taken to
+                                      #   have an 18.5 inch diameter.
+
+# Grain measures.  The bushel as it is used by farmers in the USA is actually
+# a measure of mass which varies for different commodities.  Canada uses the
+# same bushel masses for most commodities, but not for oats.
+
+wheatbushel             60 lb
+soybeanbushel           60 lb
+cornbushel              56 lb
+ryebushel               56 lb
+barleybushel            48 lb
+oatbushel               32 lb
+ricebushel              45 lb
+canada_oatbushel        34 lb
+
+# Wine and Spirits measure
+
+ponyvolume              1 usfloz
+jigger                  1.5 usfloz   # Can vary between 1 and 2 usfloz
+shot                    jigger     # Sometimes 1 usfloz
+eushot                  25 ml      # EU standard spirits measure
+fifth                   1|5 usgallon
+winebottle              750 ml     # US industry standard, 1979
+winesplit               1|4 winebottle
+magnum                  1.5 liter  # Standardized in 1979, but given
+                                   # as 2 qt in some references
+metrictenth             375 ml
+metricfifth             750 ml
+metricquart             1 liter
+
+# Old British bottle size
+
+reputedquart            1|6 brgallon
+reputedpint             1|2 reputedquart
+brwinebottle            reputedquart       # Very close to 1|5 winegallon
+
+# French champagne bottle sizes
+
+split                   200 ml
+jeroboam                2 magnum
+rehoboam                3 magnum
+methuselah              4 magnum
+imperialbottle          4 magnum
+salmanazar              6 magnum
+balthazar               8 magnum
+nebuchadnezzar          10 magnum
+solomon                 12 magnum
+melchior                12 magnum
+sovereign               17.5 magnum
+primat                  18 magnum
+goliath                 18 magnum
+melchizedek             20 magnum
+midas                   20 magnum
+
+# The wine glass doesn't seem to have an official standard, but the same value
+# is suggested by several sources in the US. 
+
+wineglass               150 mL 
+
+# In the UK, serving size offerings legally mandated by The Weights and
+# Measures (Specified Quantities) (Unwrapped Bread and Intoxicating
+# Liquor) Order 2011, effective 1st October 2011.  The quantities--not
+# the names--are mandated.  Lawful size offerings are these or multiples
+# thereof, but other sizes can be provided at the express request of a
+# buyer.
+
+smallwineglass          125 mL
+mediumwineglass         175 mL
+
+# Values vary considerably among countries and even more so in practice.  The
+# "standard" US value gives 5 glasses per standard 750 ml bottle.  Old practice
+# in the UK was 125 ml per glass, or 6 glasses per bottle. Some sources suggest
+# a more recent common value of 250 ml per glass, or 3 glasses per
+# bottle; as a multiple of 125 ml, this would be a lawful serving size offering.
+#
+# The value refers to the size of the serving, not the total volume of the
+# glass, which is typically not filled above the height of its greatest
+# diameter.
+#
+# A unit of alcohol is a specified amount of pure ethyl alcohol, expressed as a
+# mass or volumetric equivalent.  Many countries use the same concept but use
+# different terms. "Alcohol unit" is used officially in the UK; the US, Canada,
+# and Australia use "standard drink."  Values vary considerably among
+# countries.  The UK value of 8 g is nominally the amount of alcohol that a
+# typical adult can metabolize in one hour.
+
+alcoholunitus           14 g   / ethanoldensity
+alcoholunitca           13.6 g / ethanoldensity
+alcoholunituk            8 g   / ethanoldensity
+alcoholunitau           10 g   / ethanoldensity
+
+# Common serving sizes have roughly equivalent amounts of alcohol, as
+# illustrated by US examples for wine (12% Alcohol By Volume), beer (5% ABV),
+# and spirits (80 proof).
+#
+# alcoholunitus / 12% = 147.8 mL, close to the "standard" serving of 150 mL.
+# alcoholunitus / 5% = 11.995346 floz, close to a standard 12 floz bottle or can
+# alcoholunitus / 80 proof = 1.4994182 floz, close to a standard "shot" or jigger
+
+# https://www.rethinkingdrinking.niaaa.nih.gov/
+# https://www.cdc.gov/alcohol/faqs.htm
+# https://www.canada.ca/en/health-canada/services/substance-use/alcohol/low-risk-alcohol-drinking-guidelines
+# https://www.drinkaware.co.uk/
+# https://www.drinkaware.co.uk/facts/alcoholic-drinks-and-units
+# https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/545937/UK_CMOs__report.pdf
+# https://adf.org.au/reducing-risk/alcohol/alcohol-guidelines/
+# https://www.health.gov.au/topics/alcohol/about-alcohol/standard-drinks-guide
+# https://en.wikipedia.org/wiki/Unit_of_alcohol
+# https://en.wikipedia.org/wiki/Standard_drink
+
+# Coffee 
+#
+# The recommended ratio of coffee to water. Values vary considerably;
+# one is from the  Specialty Coffee Association of America: Brewing Best Practices
+# https://sca.coffee/research/protocols-best-practices
+
+coffeeratio             55 g/L  # +/- 10%
+
+# other recommendations are more loose, e.g.,
+# http://www.ncausa.org/About-Coffee/How-to-Brew-Coffee
+
+
+#
+# Water is "hard" if it contains various minerals, especially calcium
+# carbonate.
+#
+
+clarkdegree     grains/brgallon # Content by weigh of calcium carbonate
+gpg             grains/usgallon # Divide by water's density to convert to
+                                #   a dimensionless concentration measure
+#
+# Shoe measures
+#
+
+shoeiron                1|48 inch    # Used to measure leather in soles
+shoeounce               1|64 inch    # Used to measure non-sole shoe leather
+
+# USA shoe sizes.  These express the length of the shoe or the length
+# of the "last", the form that the shoe is made on.  But note that
+# this only captures the length.  It appears that widths change 1/4
+# inch for each letter within the same size, and if you change the
+# length by half a size then the width changes between 1/8 inch and
+# 1/4 inch.  But this may not be standard.  If you know better, please
+# contact me.
+
+shoesize_delta          1|3 inch     # USA shoe sizes differ by this amount
+shoe_men0               8.25 inch
+shoe_women0             (7+11|12) inch
+shoe_boys0              (3+11|12) inch
+shoe_girls0             (3+7|12) inch
+
+shoesize_men(n) units=[1;inch]   shoe_men0 + n shoesize_delta ; \
+                                (shoesize_men+(-shoe_men0))/shoesize_delta
+shoesize_women(n) units=[1;inch] shoe_women0 + n shoesize_delta ; \
+                                (shoesize_women+(-shoe_women0))/shoesize_delta
+shoesize_boys(n) units=[1;inch]  shoe_boys0 + n shoesize_delta ; \
+                                (shoesize_boys+(-shoe_boys0))/shoesize_delta
+shoesize_girls(n) units=[1;inch] shoe_girls0 + n shoesize_delta ; \
+                                (shoesize_girls+(-shoe_girls0))/shoesize_delta
+
+# European shoe size.  According to
+#      http://www.shoeline.com/footnotes/shoeterm.shtml
+# shoe sizes in Europe are measured with Paris points which simply measure
+# the length of the shoe.
+
+europeshoesize          2|3 cm
+
+#
+# USA slang units
+#
+
+buck                    US$
+fin                     5 US$
+sawbuck                 10 US$
+usgrand                 1000 US$
+greenback               US$
+key                     kg           # usually of marijuana, 60's
+lid                     1 oz         # Another 60's weed unit
+footballfield           usfootballfield
+usfootballfield         100 yards
+canadafootballfield     110 yards    # And 65 yards wide
+marathon                26 miles + 385 yards
+
+#
+# British
+#
+
+# The length measure in the UK was defined by a bronze bar manufactured in
+# 1844.  Various conversions were sanctioned for convenience at different
+# times, which makes conversions before 1963 a confusing matter.  Apparently
+# previous conversions were never explicitly revoked.  Four different
+# conversion factors appear below.  Multiply them times an imperial length
+# units as desired.  The Weights and Measures Act of 1963 switched the UK away
+# from their bronze standard and onto a definition of the yard in terms of the
+# meter.  This happened after an international agreement in 1959 to align the
+# world's measurement systems.
+
+UK                      UKlength_SJJ
+UK-                     UK
+british-                UK
+
+UKlength_B            0.9143992 meter / yard  # Benoit found the yard to be
+                                              #   0.9143992 m at a weights and
+                                              #   measures conference around
+                                              #   1896.   Legally sanctioned
+                                              #   in 1898.
+UKlength_SJJ          0.91439841 meter / yard # In 1922, Seers, Jolly and
+                                              #   Johnson found the yard to be
+                                              #   0.91439841 meters.
+                                              #   Used starting in the 1930's.
+UKlength_K              meter / 39.37079 inch # In 1816 Kater found this ratio
+                                              #   for the meter and inch.  This
+                                              #   value was used as the legal
+                                              #   conversion ratio when the
+                                              #   metric system was legalized
+                                              #   for contract in 1864.
+UKlength_C            meter / 1.09362311 yard # In 1866 Clarke found the meter
+                                              #   to be 1.09362311 yards.  This
+                                              #   conversion was legalized
+                                              #   around 1878.
+brnauticalmile          6080 ft               # Used until 1970 when the UK
+brknot                  brnauticalmile / hr   #   switched to the international
+admiraltymile           brnauticalmile        #   nautical mile.
+admiraltyknot           brknot
+seamile                 6000 ft
+shackle                 15 fathoms            # Adopted 1949 by British navy
+
+# British Imperial weight is mostly the same as US weight.  A few extra
+# units are added here.
+
+clove                   7 lb
+stone                   14 lb
+tod                     28 lb
+brquarterweight         1|4 brhundredweight
+brhundredweight         8 stone
+longhundredweight       brhundredweight
+longton                 20 brhundredweight
+brton                   longton
+
+# British Imperial volume measures
+
+brminim                 1|60 brdram
+brscruple               1|3 brdram
+fluidscruple            brscruple
+brdram                  1|8 brfloz
+brfluidounce            1|20 brpint
+brfloz                  brfluidounce
+brgill                  1|4 brpint
+brpint                  1|2 brquart
+brquart                 1|4 brgallon
+brgallon                4.54609 l      # The British Imperial gallon was
+                                       # defined in 1824 to be the volume of
+                                       # water which weighed 10 pounds at 62
+                                       # deg F with a pressure of 30 inHg.
+                                       # It was also defined as 277.274 in^3,
+                                       # Which is slightly in error.  In
+                                       # 1963 it was defined to be the volume
+                                       # occupied by 10 pounds of distilled
+                                       # water of density 0.998859 g/ml weighed
+                                       # in air of density 0.001217 g/ml
+                                       # against weights of density 8.136 g/ml.
+                                       # This gives a value of approximately
+                                       # 4.5459645 liters, but the old liter
+                                       # was in force at this time.  In 1976
+                                       # the definition was changed to exactly
+                                       # 4.54609 liters using the new
+                                       # definition of the liter (1 dm^3).
+brbarrel                36 brgallon    # Used for beer
+brbushel                8 brgallon
+brheapedbushel          1.278 brbushel
+brquarter               8 brbushel
+brchaldron              36 brbushel
+
+# Obscure British volume measures.  These units are generally traditional
+# measures whose definitions have fluctuated over the years.  Often they
+# depended on the quantity being measured.  They are given here in terms of
+# British Imperial measures.  For example, the puncheon may have historically
+# been defined relative to the wine gallon or beer gallon or ale gallon
+# rather than the British Imperial gallon.
+
+bag                     4 brbushel
+bucket                  4 brgallon
+kilderkin               2 brfirkin
+last                    40 brbushel
+noggin                  brgill
+pottle                  0.5 brgallon
+pin                     4.5 brgallon
+puncheon                72 brgallon
+seam                    8 brbushel
+coomb                   4 brbushel
+boll                    6 brbushel
+firlot                  1|4 boll
+brfirkin                9 brgallon     # Used for ale and beer
+cran                    37.5 brgallon  # measures herring, about 750 fish
+brwinehogshead          52.5 brgallon  # This value is approximately equal
+brhogshead              brwinehogshead #   to the old wine hogshead of 63
+                                       #   wine gallons.  This adjustment
+                                       #   is listed in the OED and in
+                                       #   "The Weights and Measures of
+                                       #   England" by R. D. Connor
+brbeerhogshead          54 brgallon
+brbeerbutt              2 brbeerhogshead
+registerton             100 ft^3  # Used for internal capacity of ships
+shippington             40 ft^3   # Used for ship's cargo freight or timber
+brshippington           42 ft^3   #
+freightton            shippington # Both register ton and shipping ton derive
+                                  # from the "tun cask" of wine.
+displacementton         35 ft^3   # Approximate volume of a longton weight of
+                                  # sea water.  Measures water displaced by
+                                  # ships.
+waterton                224 brgallon
+strike                  70.5 l    # 16th century unit, sometimes
+                                  #   defined as .5, 2, or 4 bushels
+                                  #   depending on the location.  It
+                                  #   probably doesn't make a lot of
+                                  #   sense to define in terms of imperial
+                                  #   bushels.  Zupko gives a value of
+                                  #   2 Winchester grain bushels or about
+                                  #   70.5 liters.
+amber                   4 brbushel# Used for dry and liquid capacity [18]
+
+# British volume measures with "imperial"
+
+imperialminim           brminim
+imperialscruple         brscruple
+imperialdram            brdram
+imperialfluidounce      brfluidounce
+imperialfloz            brfloz
+imperialgill            brgill
+imperialpint            brpint
+imperialquart           brquart
+imperialgallon          brgallon
+imperialbarrel          brbarrel
+imperialbushel          brbushel
+imperialheapedbushel    brheapedbushel
+imperialquarter         brquarter
+imperialchaldron        brchaldron
+imperialwinehogshead    brwinehogshead
+imperialhogshead        brhogshead
+imperialbeerhogshead    brbeerhogshead
+imperialbeerbutt        brbeerbutt
+imperialfirkin          brfirkin
+
+# obscure British lengths
+
+barleycorn              1|3 UKinch   # Given in Realm of Measure as the
+                                     # difference between successive shoe sizes
+nail                    1|16 UKyard  # Originally the width of the thumbnail,
+                                     #   or 1|16 ft.  This took on the general
+                                     #   meaning of 1|16 and settled on the
+                                     #   nail of a yard or 1|16 yards as its
+                                     #   final value.  [12]
+UKpole                  16.5 UKft    # This was 15 Saxon feet, the Saxon
+rope                    20 UKft      #   foot (aka northern foot) being longer
+englishell              45 UKinch
+flemishell              27 UKinch
+ell                     englishell   # supposed to be measure from elbow to
+                                     #   fingertips
+span                    9 UKinch     # supposed to be distance from thumb
+                                     #   to pinky with full hand extension
+goad                    4.5 UKft     # used for cloth, possibly named after the
+                                     #   stick used for prodding animals.
+
+# misc obscure British units
+
+hide                    120 acre  # English unit of land area dating to the 7th
+                                  #   century, originally the amount of land
+                                  #   that a single plowman could cultivate,
+                                  #   which varied from 60-180 acres regionally.
+                                  #   Standardized at Normon conquest.
+virgate                 1|4 hide
+nook                    1|2 virgate
+rood                    furlong rod  # Area of a strip a rod by a furlong
+englishcarat            troyounce/151.5 # Originally intended to be 4 grain
+                                        #   but this value ended up being
+                                        #   used in the London diamond market
+mancus                  2 oz
+mast                    2.5 lb
+nailkeg                 100 lbs
+basebox                 31360 in^2      # Used in metal plating
+
+# alternate spellings
+
+gramme                  gram
+litre                   liter
+dioptre                 diopter
+sulphur                 sulfur
+
+#
+# Units derived the human body (may not be very accurate)
+#
+
+geometricpace           5 ft   # distance between points where the same
+                               # foot hits the ground
+pace                    2.5 ft # distance between points where alternate
+                               # feet touch the ground
+USmilitarypace          30 in  # United States official military pace
+USdoubletimepace        36 in  # United States official doubletime pace
+fingerbreadth           7|8 in # The finger is defined as either the width
+fingerlength            4.5 in #   or length of the finger
+finger                  fingerbreadth
+palmwidth               hand   # The palm is a unit defined as either the width
+palmlength              8 in   #   or the length of the hand
+hand                    4 inch # width of hand
+shaftment               6 inch # Distance from tip of outstretched thumb to the
+                               #   opposite side of the palm of the hand.  The
+                               #   ending -ment is from the old English word
+                               #   for hand. [18]
+smoot              5 ft + 7 in # Created as part of an MIT fraternity prank.
+                               #   In 1958 Oliver Smoot was used to measure
+                               #   the length of the Harvard Bridge, which was
+                               #   marked off in Smoot lengths.  These
+                               #   markings have been maintained on the bridge
+                               #   since then and repainted by subsequent
+                               #   incoming fraternity members.  During a
+                               #   bridge renovation the new sidewalk was
+                               #   scored every Smoot rather than at the
+                               #   customary 6 ft spacing.
+tomcruise       5 ft + 7.75 in # Height of Tom Cruise
+
+#
+# Cooking measures
+#
+
+# Common abbreviations
+
+tbl                     tablespoon
+tbsp                    tablespoon
+tblsp                   tablespoon
+Tb                      tablespoon
+tsp                     teaspoon
+saltspoon               1|4 tsp
+
+# US measures
+
+uscup                   8 usfloz
+ustablespoon            1|16 uscup
+usteaspoon              1|3 ustablespoon
+ustbl                   ustablespoon
+ustbsp                  ustablespoon
+ustblsp                 ustablespoon
+ustsp                   usteaspoon
+metriccup               250 ml
+stickbutter             1|4 lb            # Butter in the USA is sold in one
+                                          # pound packages that contain four
+                                          # individually wrapped pieces.  The
+                                          # pieces are marked into tablespoons,
+                                          # making it possible to measure out
+                                          # butter by volume by slicing the
+                                          # butter.
+
+legalcup                240 ml            # The cup used on nutrition labeling
+legaltablespoon         1|16 legalcup
+legaltbsp               legaltablespoon
+
+# Scoop size.  Ice cream scoops in the US are marked with numbers
+# indicating the number of scoops required to fill a US quart.
+
+scoop(n)  units=[1;cup] domain=[4,100] range=[0.04,1] \
+           32 usfloz / n ; 32 usfloz / scoop
+
+
+# US can sizes.
+
+number1can              10 usfloz
+number2can              19 usfloz
+number2.5can            3.5 uscups
+number3can              4 uscups
+number5can              7 uscups
+number10can             105 usfloz
+
+# British measures
+
+brcup                   1|2 brpint
+brteacup                1|3 brpint
+brtablespoon            15 ml             # Also 5|8 brfloz, approx 17.7 ml
+brteaspoon              1|3 brtablespoon  # Also 1|4 brtablespoon
+brdessertspoon          2 brteaspoon
+dessertspoon            brdessertspoon
+dsp                     dessertspoon
+brtsp                   brteaspoon
+brtbl                   brtablespoon
+brtbsp                  brtablespoon
+brtblsp                 brtablespoon
+
+# Australian
+
+australiatablespoon     20 ml
+austbl                  australiatablespoon
+austbsp                 australiatablespoon
+austblsp                australiatablespoon
+australiateaspoon       1|4 australiatablespoon
+austsp                  australiateaspoon
+
+# Italian
+
+etto                    100 g          # Used for buying items like meat and
+etti                    etto           #   cheese.
+
+# Chinese
+
+catty                   0.5 kg
+oldcatty                4|3 lbs        # Before metric conversion.
+tael                    1|16 oldcatty  # Should the tael be defined both ways?
+mace                    0.1 tael
+oldpicul                100 oldcatty
+picul                   100 catty      # Chinese usage
+
+# Indian
+
+seer                    14400 grain    # British Colonial standard
+ser                     seer
+maund                   40 seer
+pakistanseer            1 kg
+pakistanmaund           40 pakistanseer
+chittak                 1|16 seer
+tola                    1|5 chittak
+ollock                  1|4 liter      # Is this right?
+
+# Japanese
+
+japancup                200 ml
+
+# densities of cooking ingredients from The Cake Bible by Rose Levy Beranbaum
+# so you can convert '2 cups sugar' to grams, for example, or in the other
+# direction grams could be converted to 'cup flour_scooped'.
+
+butter                  8 oz/uscup
+butter_clarified        6.8 oz/uscup
+cocoa_butter            9 oz/uscup
+shortening              6.75 oz/uscup   # vegetable shortening
+oil                     7.5 oz/uscup
+cakeflour_sifted        3.5 oz/uscup    # The density of flour depends on the
+cakeflour_spooned       4 oz/uscup      # measuring method.  "Scooped",  or
+cakeflour_scooped       4.5 oz/uscup    # "dip and sweep" refers to dipping a
+flour_sifted            4 oz/uscup      # measure into a bin, and then sweeping
+flour_spooned           4.25 oz/uscup   # the excess off the top.  "Spooned"
+flour_scooped           5 oz/uscup      # means to lightly spoon into a measure
+breadflour_sifted       4.25 oz/uscup   # and then sweep the top.  Sifted means
+breadflour_spooned      4.5 oz/uscup    # sifting the flour directly into a
+breadflour_scooped      5.5 oz/uscup    # measure and then sweeping the top.
+cornstarch              120 grams/uscup
+dutchcocoa_sifted       75 g/uscup      # These are for Dutch processed cocoa
+dutchcocoa_spooned      92 g/uscup
+dutchcocoa_scooped      95 g/uscup
+cocoa_sifted            75 g/uscup      # These are for nonalkalized cocoa
+cocoa_spooned           82 g/uscup
+cocoa_scooped           95 g/uscup
+heavycream              232 g/uscup
+milk                    242 g/uscup
+sourcream               242 g/uscup
+molasses                11.25 oz/uscup
+cornsyrup               11.5 oz/uscup
+honey                   11.75 oz/uscup
+sugar                   200 g/uscup
+powdered_sugar          4 oz/uscup
+brownsugar_light        217 g/uscup     # packed
+brownsugar_dark         239 g/uscup
+
+baking_powder           4.6 grams / ustsp
+salt                    6 g / ustsp
+koshersalt              2.8 g / ustsp   # Diamond Crystal kosher salt
+koshersalt_morton       4.8 g / ustsp   # Morton kosher salt
+                                        # Values are from the nutrition info
+                                        # on the packages
+
+
+# Egg weights and volumes for a USA large egg
+
+egg                     50 grams        # without shell
+eggwhite                30 grams
+eggyolk                 18.6 grams
+eggvolume               3 ustablespoons + 1|2 ustsp
+eggwhitevolume          2 ustablespoons
+eggyolkvolume           3.5 ustsp
+
+# Alcohol density
+
+ethanoldensity          0.7893 g/cm^3   # From CRC Handbook, 91st Edition
+alcoholdensity          ethanoldensity
+
+#
+# Density measures.  Density has traditionally been measured on a variety of
+# bizarre nonlinear scales.
+#
+
+# Density of a sugar syrup is frequently measured in candy making procedures.
+# In the USA the boiling point of the syrup is measured.  Some recipes instead
+# specify the density using degrees Baume.  Conversion between degrees Baume
+# and the boiling point measure has proved elusive.  This table appeared in one
+# text, and provides a fragmentary relationship to the concentration.
+#
+# temp(C)  conc (%)
+#   100      30
+#   101      40
+#   102      50
+#   103      60
+#   106      70
+#   112      80
+#   123      90
+#   140      95
+#   151      97
+#   160      98.2
+#   166      99.5
+#   171      99.6
+#
+# The best source identified to date came from "Boiling point elevation of
+# technical sugarcane solutions and its use in automatic pan boiling" by
+# Michael Saska.  International Sugar Journal, 2002, 104, 1247, pp 500-507.
+#
+# But I'm using equation (3) which is credited to Starzak and Peacock,
+# "Water activity coefficient in aqueous solutions of sucrose--A comprehensive
+# data analysis.  Zuckerindustrie, 122, 380-387.  (I couldn't find this
+# document.)
+#
+# Note that the range of validity is uncertain, but answers are in agreement
+# with the above table all the way to 99.6.
+#
+# The original equation has a parameter for the boiling point of water, which
+# of course varies with altitude.  It also includes various other model
+# parameters.  The input is the molar concentration of sucrose in the solution,
+# (moles sucrose) / (total moles).
+#
+# Bsp 3797.06 degC
+# Csp 226.28 degC
+# QQ -17638 J/mol
+# asp -1.0038
+# bsp -0.24653
+# tbw 100 degC     # boiling point of water
+# sugar_bpe_orig(x) ((1-QQ/R Bsp * x^2 (1+asp x + bsp x^2) (tbw + Csp) \
+#           /(tbw+stdtemp)) /  (1+(tbw + Csp)/Bsp *ln(1-x))-1) * (tbw + Csp)
+#
+# To convert mass concentration (brix) to molar concentration
+#
+# sc(x)  (x / 342.3) / (( x/342.3) + (100-x)/18.02); \
+#        100 sc 342.3|18.02 / (sc (342.3|18.02-1)+1)
+#
+# Here is a simplified version of this equation where the temperature of boiling
+# water has been fixed at 100 degrees Celsius and the argument is now the
+# concentration (brix).
+#
+# sugar_bpe(x) ((1+ 0.48851085 * sc(x)^2 (1+ -1.0038 sc(x) + -0.24653 sc(x)^2)) \
+#                   / (1+0.08592964 ln(1-sc(x)))-1) 326.28 K
+#
+#
+# The formula is not invertible, so to implement it in units we unfortunately
+# must turn it into a table.
+
+# This table gives the boiling point elevation as a function of the sugar syrup
+# concentration expressed as a percentage.
+
+sugar_conc_bpe[K] \
+ 0 0.0000   5 0.0788  10 0.1690  15 0.2729  20 0.3936  25 0.5351  \
+30 0.7027  35 0.9036  40 1.1475  42 1.2599  44 1.3825  46 1.5165  \
+48 1.6634  50 1.8249  52 2.0031  54 2.2005  56 2.4200  58 2.6651  \
+60 2.9400  61 3.0902  62 3.2499  63 3.4198  64 3.6010  65 3.7944  \
+66 4.0012  67 4.2227  68 4.4603  69 4.7156  70 4.9905  71 5.2870  \
+72 5.6075  73 5.9546  74 6.3316  75 6.7417  76 7.1892  77 7.6786  \
+78.0  8.2155  79.0  8.8061  80.0  9.4578  80.5  9.8092  81.0 10.1793  \
+81.5 10.5693  82.0 10.9807  82.5 11.4152  83.0 11.8743  83.5 12.3601  \
+84.0 12.8744  84.5 13.4197  85.0 13.9982  85.5 14.6128  86.0 15.2663  \
+86.5 15.9620  87.0 16.7033  87.5 17.4943  88.0 18.3391  88.5 19.2424  \
+89.0 20.2092  89.5 21.2452  90.0 22.3564  90.5 23.5493  91.0 24.8309  \
+91.5 26.2086  92.0 27.6903  92.5 29.2839  93.0 30.9972  93.5 32.8374  \
+94.0 34.8104  94.5 36.9195  95.0 39.1636  95.5 41.5348  96.0 44.0142  \
+96.5 46.5668  97.0 49.1350  97.5 51.6347  98.0 53.9681  98.1 54.4091  \
+98.2 54.8423  98.3 55.2692  98.4 55.6928  98.5 56.1174  98.6 56.5497  \
+98.7 56.9999  98.8 57.4828  98.9 58.0206  99.0 58.6455  99.1 59.4062  \
+99.2 60.3763  99.3 61.6706  99.4 63.4751  99.5 66.1062  99.6 70.1448  \
+99.7 76.7867
+
+# Using the brix table we can use this to produce a mapping from boiling point
+# to density which makes all of the units interconvertible.  Because the brix
+# table stops at 95 this approach works up to a boiling point elevation of 39 K
+# or a boiling point of 139 C / 282 F, which is the "soft crack" stage in candy
+# making.  The "hard crack" stage continues up to 310 F.
+
+# Boiling point elevation
+sugar_bpe(T) units=[K;g/cm^3] domain=[0,39.1636] range=[0.99717,1.5144619] \
+               brix(~sugar_conc_bpe(T)); sugar_conc_bpe(~brix(sugar_bpe))
+# Absolute boiling point (produces an absolute temperature)
+sugar_bp(T) units=[K;g/cm^3] domain=[373.15,412.3136] \
+                                         range=[0.99717,1.5144619] \
+                        brix(~sugar_conc_bpe(T-tempC(100))) ;\
+                        sugar_conc_bpe(~brix(sugar_bp))+tempC(100)
+
+# In practice dealing with the absolute temperature is annoying because it is
+# not possible to convert to a nested function, so you're stuck retyping the
+# absolute temperature in Kelvins to convert to celsius or Fahrenheit.  To
+# prevent this we supply definitions that build in the temperature conversion
+# and produce results in the Fahrenheit and Celsius scales.  So using these
+# measures, to convert 46 degrees Baume to a Fahrenheit boiling point:
+#
+#      You have: baume(45)
+#      You want: sugar_bpF
+#              239.05647
+#
+sugar_bpF(T) units=[1;g/cm^3] domain=[212,282.49448] range=[0.99717,1.5144619]\
+                        brix(~sugar_conc_bpe(tempF(T)+-tempC(100))) ;\
+                        ~tempF(sugar_conc_bpe(~brix(sugar_bpF))+tempC(100))
+sugar_bpC(T) units=[1;g/cm^3] domain=[100,139.1636] range=[0.99717,1.5144619]\
+                        brix(~sugar_conc_bpe(tempC(T)+-tempC(100))) ;\
+                        ~tempC(sugar_conc_bpe(~brix(sugar_bpC))+tempC(100))
+
+# Degrees Baume is used in European recipes to specify the density of a sugar
+# syrup.  An entirely different definition is used for densities below
+# 1 g/cm^3.  An arbitrary constant appears in the definition.  This value is
+# equal to 145 in the US, but was according to [], the old scale used in
+# Holland had a value of 144, and the new scale or Gerlach scale used 146.78.
+
+baumeconst 145      # US value
+baume(d) units=[1;g/cm^3] domain=[0,145) range=[1,) \
+                          (baumeconst/(baumeconst+-d)) g/cm^3 ; \
+                          (baume+((-g)/cm^3)) baumeconst / baume
+
+# It's not clear if this value was ever used with negative degrees.
+twaddell(x) units=[1;g/cm^3] domain=[-200,) range=[0,) \
+                             (1 + 0.005 x) g / cm^3 ; \
+                             200 (twaddell / (g/cm^3) +- 1)
+
+# The degree quevenne is a unit for measuring the density of milk.
+# Similarly it's unclear if negative values were allowed here.
+quevenne(x) units=[1;g/cm^3] domain=[-1000,) range=[0,) \
+                             (1 + 0.001 x) g / cm^3 ; \
+                             1000 (quevenne / (g/cm^3) +- 1)
+
+# Degrees brix measures sugar concentration by weigh as a percentage, so a
+# solution that is 3 degrees brix is 3% sugar by weight.  This unit was named
+# after Adolf Brix who invented a hydrometer that read this percentage
+# directly.  This data is from Table 114 of NIST Circular 440, "Polarimetry,
+# Saccharimetry and the Sugars".  It gives apparent specific gravity at 20
+# degrees Celsius of various sugar concentrations.  As rendered below this
+# data is converted to apparent density at 20 degrees Celsius using the
+# density figure for water given in the same NIST reference.  They use the
+# word "apparent" to refer to measurements being made in air with brass
+# weights rather than vacuum.
+
+brix[0.99717g/cm^3]\
+    0 1.00000  1 1.00390  2 1.00780  3 1.01173  4 1.01569  5 1.01968 \
+    6 1.02369  7 1.02773  8 1.03180  9 1.03590 10 1.04003 11 1.04418 \
+   12 1.04837 13 1.05259 14 1.05683 15 1.06111 16 1.06542 17 1.06976 \
+   18 1.07413 19 1.07853 20 1.08297 21 1.08744 22 1.09194 23 1.09647 \
+   24 1.10104 25 1.10564 26 1.11027 27 1.11493 28 1.11963 29 1.12436 \
+   30 1.12913 31 1.13394 32 1.13877 33 1.14364 34 1.14855 35 1.15350 \
+   36 1.15847 37 1.16349 38 1.16853 39 1.17362 40 1.17874 41 1.18390 \
+   42 1.18910 43 1.19434 44 1.19961 45 1.20491 46 1.21026 47 1.21564 \
+   48 1.22106 49 1.22652 50 1.23202 51 1.23756 52 1.24313 53 1.24874 \
+   54 1.25439 55 1.26007 56 1.26580 57 1.27156 58 1.27736 59 1.28320 \
+   60 1.28909 61 1.29498 62 1.30093 63 1.30694 64 1.31297 65 1.31905 \
+   66 1.32516 67 1.33129 68 1.33748 69 1.34371 70 1.34997 71 1.35627 \
+   72 1.36261 73 1.36900 74 1.37541 75 1.38187 76 1.38835 77 1.39489 \
+   78 1.40146 79 1.40806 80 1.41471 81 1.42138 82 1.42810 83 1.43486 \
+   84 1.44165 85 1.44848 86 1.45535 87 1.46225 88 1.46919 89 1.47616 \
+   90 1.48317 91 1.49022 92 1.49730 93 1.50442 94 1.51157 95 1.51876
+
+# Density measure invented by the American Petroleum Institute.  Lighter
+# petroleum products are more valuable, and they get a higher API degree.
+#
+# The intervals of range and domain should be open rather than closed.
+#
+apidegree(x) units=[1;g/cm^3] domain=[-131.5,) range=[0,) \
+                              141.5 g/cm^3 / (x+131.5) ; \
+                              141.5 (g/cm^3) / apidegree + (-131.5)
+#
+# Average densities of various woods (dried)
+# Data from The Wood Database https://www.wood-database.com
+#
+
+# North American Hardwoods
+
+wood_cherry             35 lb/ft^3
+wood_redoak             44 lb/ft^3
+wood_whiteoak           47 lb/ft^3
+wood_blackwalnut        38 lb/ft^3
+wood_walnut             wood_blackwalnut
+wood_birch              43 lb/ft^3
+wood_hardmaple          44 lb/ft^3
+
+wood_bigleafmaple       34 lb/ft^3
+wood_boxeldermaple      30 lb/ft^3
+wood_redmaple           38 lb/ft^3
+wood_silvermaple        33 lb/ft^3
+wood_stripedmaple       32 lb/ft^3
+wood_softmaple         (wood_bigleafmaple \
+                      + wood_boxeldermaple \
+                      + wood_redmaple \
+                      + wood_silvermaple \
+                      + wood_stripedmaple) / 5
+wood_poplar             29 lb/ft^3
+wood_beech              45 lb/ft^3
+
+# North American Softwoods
+
+wood_jeffreypine        28 lb/ft^3
+wood_ocotepine          44 lb/ft^3
+wood_ponderosapine      28 lb/ft^3
+
+wood_loblollypine       35 lb/ft^3
+wood_longleafpine       41 lb/ft^3
+wood_shortleafpine      35 lb/ft^3
+wood_slashpine          41 lb/ft^3
+wood_yellowpine        (wood_loblollypine \
+                      + wood_longleafpine \
+                      + wood_shortleafpine \
+                      + wood_slashpine) / 4
+wood_redpine            34 lb/ft^3
+
+wood_easternwhitepine   25 lb/ft^3
+wood_westernwhitepine   27 lb/ft^3
+wood_whitepine         (wood_easternwhitepine + wood_westernwhitepine) / 2
+
+wood_douglasfir         32 lb/ft^3
+
+wood_blackspruce        28 lb/ft^3
+wood_engelmannspruce    24 lb/ft^3
+wood_redspruce          27 lb/ft^3
+wood_sitkaspruce        27 lb/ft^3
+wood_whitespruce        27 lb/ft^3
+wood_spruce            (wood_blackspruce \
+                      + wood_engelmannspruce \
+                      + wood_redspruce \
+                      + wood_sitkaspruce \
+                      + wood_whitespruce) / 5
+
+# Other woods 
+
+wood_basswood           26 lb/ft^3
+wood_balsa               9 lb/ft^3
+wood_ebony_gaboon       60 lb/ft^3
+wood_ebony_macassar     70 lb/ft^3
+wood_mahogany           37 lb/ft^3   # True (Honduran) mahogany,
+                                     # Swietenia macrophylla
+wood_teak               41 lb/ft^3   
+wood_rosewood_brazilian 52 lb/ft^3
+wood_rosewood_honduran  64 lb/ft^3
+wood_rosewood_indian    52 lb/ft^3
+wood_cocobolo           69 lb/ft^3          
+wood_bubinga            56 lb/ft^3
+wood_zebrawood          50 lb/ft^3
+wood_koa                38 lb/ft^3
+wood_snakewood          75.7 lb/ft^3
+wood_lignumvitae        78.5 lb/ft^3
+wood_blackwood          79.3 lb/ft^3
+wood_blackironwood      84.5 lb/ft^3 # Krugiodendron ferreum, listed
+                                     #   in database as the heaviest wood
+
+#
+# Modulus of elasticity of selected woods.
+# Data from The Wood Database https://www.wood-database.com
+#
+
+# North American Hardwoods
+
+wood_mod_beech              1.720e6 lbf/in^2
+wood_mod_birchyellow        2.010e6 lbf/in^2
+wood_mod_birch              wood_mod_birchyellow
+wood_mod_cherry             1.490e6 lbf/in^2
+wood_mod_hardmaple          1.830e6 lbf/in^2
+
+wood_mod_bigleafmaple       1.450e6 lbf/in^2
+wood_mod_boxeldermaple      1.050e6 lbf/in^2
+wood_mod_redmaple           1.640e6 lbf/in^2
+wood_mod_silvermaple        1.140e6 lbf/in^2
+wood_mod_softmaple         (wood_mod_bigleafmaple \
+                          + wood_mod_boxeldermaple \
+                          + wood_mod_redmaple \
+                          + wood_mod_silvermaple) / 4
+
+wood_mod_redoak             1.761e6 lbf/in^2
+wood_mod_whiteoak           1.762e6 lbf/in^2
+wood_mod_poplar             1.580e6 lbf/in^2
+wood_mod_blackwalnut        1.680e6 lbf/in^2
+wood_mod_walnut             wood_mod_blackwalnut
+
+# North American Softwoods
+
+wood_mod_jeffreypine        1.240e6 lbf/in^2
+wood_mod_ocotepine          2.209e6 lbf/in^2
+wood_mod_ponderosapine      1.290e6 lbf/in^2
+
+wood_mod_loblollypine       1.790e6 lbf/in^2
+wood_mod_longleafpine       1.980e6 lbf/in^2
+wood_mod_shortleafpine      1.750e6 lbf/in^2
+wood_mod_slashpine          1.980e6 lbf/in^2
+wood_mod_yellowpine        (wood_mod_loblollypine \
+                          + wood_mod_longleafpine \
+                          + wood_mod_shortleafpine \
+                          + wood_mod_slashpine) / 4
+
+wood_mod_redpine            1.630e6 lbf/in^2
+
+wood_mod_easternwhitepine   1.240e6 lbf/in^2
+wood_mod_westernwhitepine   1.460e6 lbf/in^2
+wood_mod_whitepine         (wood_mod_easternwhitepine + \
+                            wood_mod_westernwhitepine) / 2
+
+wood_mod_douglasfir         1.765e6  lbf/in^2
+
+wood_mod_blackspruce        1.523e6 lbf/in^2
+wood_mod_englemannspruce    1.369e6 lbf/in^2
+wood_mod_redspruce          1.560e6 lbf/in^2
+wood_mod_sitkaspruce        1.600e6 lbf/in^2
+wood_mod_whitespruce        1.315e6 lbf/in^2
+wood_mod_spruce            (wood_mod_blackspruce \
+                          + wood_mod_englemannspruce \
+                          + wood_mod_redspruce + wood_mod_sitkaspruce \
+                          + wood_mod_whitespruce) / 5
+
+# Other woods 
+
+wood_mod_balsa              0.538e6 lbf/in^2
+wood_mod_basswood           1.460e6 lbf/in^2
+wood_mod_blackwood          2.603e6 lbf/in^2  # African, Dalbergia melanoxylon
+wood_mod_bubinga            2.670e6 lbf/in^2
+wood_mod_cocobolo           2.712e6 lbf/in^2
+wood_mod_ebony_gaboon       2.449e6 lbf/in^2
+wood_mod_ebony_macassar     2.515e6 lbf/in^2
+wood_mod_blackironwood      2.966e6 lbf/in^2  # Krugiodendron ferreum
+wood_mod_koa                1.503e6 lbf/in^2
+wood_mod_lignumvitae        2.043e6 lbf/in^2
+wood_mod_mahogany           1.458e6 lbf/in^2  # True (Honduran) mahogany,
+                                              # Swietenia macrophylla
+wood_mod_rosewood_brazilian 2.020e6 lbf/in^2
+wood_mod_rosewood_honduran  3.190e6 lbf/in^2
+wood_mod_rosewood_indian    1.668e6 lbf/in^2
+wood_mod_snakewood          3.364e6 lbf/in^2
+wood_mod_teak               1.781e6 lbf/in^2
+wood_mod_zebrawood          2.374e6 lbf/in^2
+
+#
+# Area of countries and other regions.  This is the "total area" which
+# includes land and water areas within international boundaries and
+# coastlines.  Data from January, 2019.  
+#
+# except as noted, sources are
+# https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area
+# US Central Intelligence Agency: The World Factbook
+# https://www.cia.gov/the-world-factbook/
+
+area_russia              17098246 km^2
+area_antarctica          14000000 km^2
+# area_canada is covered below as sum of province and territory areas
+area_china                9596961 km^2
+# area_unitedstates is covered below as sum of state areas
+# includes only the 50 states and District of Columbia
+area_us                   area_unitedstates
+area_brazil               8515767 km^2
+area_australia            7692024 km^2
+# area_europeanunion is covered below as sum of member areas
+area_india                3287263 km^2
+area_argentina            2780400 km^2
+area_kazakhstan           2724900 km^2
+area_algeria              2381741 km^2
+area_drcongo              2344858 km^2
+area_greenland            2166086 km^2
+area_saudiarabia          2149690 km^2
+area_mexico               1964375 km^2
+area_indonesia            1910931 km^2
+area_sudan                1861484 km^2
+area_libya                1759540 km^2
+area_iran                 1648195 km^2
+area_mongolia             1564110 km^2
+area_peru                 1285216 km^2
+area_chad                 1284000 km^2
+area_niger                1267000 km^2
+area_angola               1246700 km^2
+area_mali                 1240192 km^2
+area_southafrica          1221037 km^2
+area_colombia             1141748 km^2
+area_ethiopia             1104300 km^2
+area_bolivia              1098581 km^2
+area_mauritania           1030700 km^2
+area_egypt                1002450 km^2
+area_tanzania              945087 km^2
+area_nigeria               923768 km^2
+area_venezuela             916445 km^2
+area_pakistan              881912 km^2
+area_namibia               825615 km^2
+area_mozambique            801590 km^2
+area_turkey                783562 km^2
+area_chile                 756102 km^2
+area_zambia                752612 km^2
+area_myanmar               676578 km^2
+area_burma                area_myanmar
+area_afghanistan           652230 km^2
+area_southsudan            644329 km^2
+area_france                640679 km^2
+area_somalia               637657 km^2
+area_centralafrica         622984 km^2
+area_ukraine               603500 km^2
+area_crimea                 27000 km^2  # occupied by Russia; included in
+                                        # (Encyclopedia Britannica)
+area_madagascar            587041 km^2
+area_botswana              581730 km^2
+area_kenya                 580367 km^2
+area_yemen                 527968 km^2
+area_thailand              513120 km^2
+area_spain                 505992 km^2
+area_turkmenistan          488100 km^2
+area_cameroon              475422 km^2
+area_papuanewguinea        462840 km^2
+area_sweden                450295 km^2
+area_uzbekistan            447400 km^2
+area_morocco               446550 km^2
+area_iraq                  438317 km^2
+area_paraguay              406752 km^2
+area_zimbabwe              390757 km^2
+area_japan                 377973 km^2
+area_germany               357114 km^2
+area_congorepublic         342000 km^2
+area_finland               338424 km^2
+area_vietnam               331212 km^2
+area_malaysia              330803 km^2
+area_norway                323802 km^2
+area_ivorycoast            322463 km^2
+area_poland                312696 km^2
+area_oman                  309500 km^2
+area_italy                 301339 km^2
+area_philippines           300000 km^2
+area_ecuador               276841 km^2
+area_burkinafaso           274222 km^2
+area_newzealand            270467 km^2
+area_gabon                 267668 km^2
+area_westernsahara         266000 km^2
+area_guinea                245857 km^2
+# area_unitedkingdom is covered below
+area_uganda                241550 km^2
+area_ghana                 238533 km^2
+area_romania               238397 km^2
+area_laos                  236800 km^2
+area_guyana                214969 km^2
+area_belarus               207600 km^2
+area_kyrgyzstan            199951 km^2
+area_senegal               196722 km^2
+area_syria                 185180 km^2
+area_golanheights            1150 km^2  # occupied by Israel; included in 
+                                        # Syria (Encyclopedia Britannica)
+area_cambodia              181035 km^2
+area_uruguay               176215 km^2
+area_somaliland            176120 km^2
+area_suriname              163820 km^2
+area_tunisia               163610 km^2
+area_bangladesh            147570 km^2
+area_nepal                 147181 km^2
+area_tajikistan            143100 km^2
+area_greece                131990 km^2
+area_nicaragua             130373 km^2
+area_northkorea            120540 km^2
+area_malawi                118484 km^2
+area_eritrea               117600 km^2
+area_benin                 114763 km^2
+area_honduras              112492 km^2
+area_liberia               111369 km^2
+area_bulgaria              110879 km^2
+area_cuba                  109884 km^2
+area_guatemala             108889 km^2
+area_iceland               103000 km^2
+area_southkorea            100210 km^2
+area_hungary                93028 km^2
+area_portugal               92090 km^2
+area_jordan                 89342 km^2
+area_serbia                 88361 km^2
+area_azerbaijan             86600 km^2
+area_austria                83871 km^2
+area_uae                    83600 km^2
+area_czechia                78865 km^2
+area_czechrepublic         area_czechia
+area_panama                 75417 km^2
+area_sierraleone            71740 km^2
+area_ireland                70273 km^2
+area_georgia                69700 km^2
+area_srilanka               65610 km^2
+area_lithuania              65300 km^2
+area_latvia                 64559 km^2
+area_togo                   56785 km^2
+area_croatia                56594 km^2
+area_bosnia                 51209 km^2
+area_costarica              51100 km^2
+area_slovakia               49037 km^2
+area_dominicanrepublic      48671 km^2
+area_estonia                45227 km^2
+area_denmark                43094 km^2
+area_netherlands            41850 km^2
+area_switzerland            41284 km^2
+area_bhutan                 38394 km^2
+area_taiwan                 36193 km^2
+area_guineabissau           36125 km^2
+area_moldova                33846 km^2
+area_belgium                30528 km^2
+area_lesotho                30355 km^2
+area_armenia                29743 km^2
+area_solomonislands         28896 km^2
+area_albania                28748 km^2
+area_equitorialguinea       28051 km^2
+area_burundi                27834 km^2
+area_haiti                  27750 km^2
+area_rwanda                 26338 km^2
+area_northmacedonia         25713 km^2
+area_djibouti               23200 km^2
+area_belize                 22966 km^2
+area_elsalvador             21041 km^2
+area_israel                 20770 km^2
+area_slovenia               20273 km^2
+area_fiji                   18272 km^2
+area_kuwait                 17818 km^2
+area_eswatini               17364 km^2
+area_easttimor              14919 km^2
+area_bahamas                13943 km^2
+area_montenegro             13812 km^2
+area_vanatu                 12189 km^2
+area_qatar                  11586 km^2
+area_gambia                 11295 km^2
+area_jamaica                10991 km^2
+area_kosovo                 10887 km^2
+area_lebanon                10452 km^2
+area_cyprus                  9251 km^2
+area_puertorico              9104 km^2  # United States territory; not included
+                                        #   in United States area
+area_westbank                5860 km^2  # (CIA World Factbook)
+area_hongkong                2755 km^2
+area_luxembourg              2586 km^2
+area_singapore                716 km^2
+area_gazastrip                360 km^2  # (CIA World Factbook)
+area_malta                    316 km^2  # smallest EU country
+area_liechtenstein            160 km^2
+area_monaco                     2.02 km^2
+area_vaticancity                0.44 km^2
+
+# Members as of 1 Feb 2020
+area_europeanunion        area_austria + area_belgium + area_bulgaria \
+                        + area_croatia + area_cyprus + area_czechia + area_denmark \
+                        + area_estonia + area_finland + area_france + area_germany \
+                        + area_greece + area_hungary + area_ireland + area_italy \
+                        + area_latvia + area_lithuania + area_luxembourg \
+                        + area_malta + area_netherlands + area_poland \
+                        + area_portugal + area_romania + area_slovakia \
+                        + area_slovenia + area_spain + area_sweden
+area_eu                   area_europeanunion
+
+#
+# Areas of the individual US states
+#
+# https://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_area
+#
+# United States Summary: 2010, Population and Housing Unit Counts, Table 18, p. 41
+# Issued September 2012
+
+area_alaska               1723336.8 km^2
+area_texas                 695661.6 km^2
+area_california            423967.4 km^2
+area_montana               380831.1 km^2
+area_newmexico             314917.4 km^2
+area_arizona               295233.5 km^2
+area_nevada                286379.7 km^2
+area_colorado              269601.4 km^2
+area_oregon                254799.2 km^2
+area_wyoming               253334.5 km^2
+area_michigan              250486.8 km^2
+area_minnesota             225162.8 km^2
+area_utah                  219881.9 km^2
+area_idaho                 216442.6 km^2
+area_kansas                213100.0 km^2
+area_nebraska              200329.9 km^2
+area_southdakota           199728.7 km^2
+area_washington            184660.8 km^2
+area_northdakota           183107.8 km^2
+area_oklahoma              181037.2 km^2
+area_missouri              180540.3 km^2
+area_florida               170311.7 km^2
+area_wisconsin             169634.8 km^2
+area_georgia_us            153910.4 km^2
+area_illinois              149995.4 km^2
+area_iowa                  145745.9 km^2
+area_newyork               141296.7 km^2
+area_northcarolina         139391.0 km^2
+area_arkansas              137731.8 km^2
+area_alabama               135767.4 km^2
+area_louisiana             135658.7 km^2
+area_mississippi           125437.7 km^2
+area_pennsylvania          119280.2 km^2
+area_ohio                  116097.7 km^2
+area_virginia              110786.6 km^2
+area_tennessee             109153.1 km^2
+area_kentucky              104655.7 km^2
+area_indiana                94326.2 km^2
+area_maine                  91633.1 km^2
+area_southcarolina          82932.7 km^2
+area_westvirginia           62755.5 km^2
+area_maryland               32131.2 km^2
+area_hawaii                 28313.0 km^2
+area_massachusetts          27335.7 km^2
+area_vermont                24906.3 km^2
+area_newhampshire           24214.2 km^2
+area_newjersey              22591.4 km^2
+area_connecticut            14357.4 km^2
+area_delaware                6445.8 km^2
+area_rhodeisland             4001.2 km^2
+area_districtofcolumbia       177.0 km^2
+
+area_unitedstates          area_alabama + area_alaska + area_arizona \
+                         + area_arkansas + area_california + area_colorado \
+                         + area_connecticut + area_delaware \
+                         + area_districtofcolumbia + area_florida \
+                         + area_georgia_us + area_hawaii + area_idaho \
+                         + area_illinois + area_indiana + area_iowa \
+                         + area_kansas + area_kentucky + area_louisiana \
+                         + area_maine + area_maryland + area_massachusetts \
+                         + area_michigan + area_minnesota + area_mississippi \
+                         + area_missouri + area_montana + area_nebraska \
+                         + area_nevada + area_newhampshire + area_newjersey \
+                         + area_newmexico + area_newyork + area_northcarolina \
+                         + area_northdakota + area_ohio + area_oklahoma \
+                         + area_oregon + area_pennsylvania + area_rhodeisland \
+                         + area_southcarolina + area_southdakota \
+                         + area_tennessee + area_texas + area_utah \
+                         + area_vermont + area_virginia + area_washington \
+                         + area_westvirginia + area_wisconsin + area_wyoming
+
+# Total area of Canadian province and territories
+#
+# Statistics Canada, "Land and freshwater area, by province and territory",
+# 2016-10-07:
+#
+# https://www150.statcan.gc.ca/n1/pub/11-402-x/2012000/chap/geo/tbl/tbl06-eng.htm
+
+area_ontario                    1076395 km^2    # confederated 1867-Jul-01
+area_quebec                     1542056 km^2    # confederated 1867-Jul-01
+area_novascotia                 55284 km^2      # confederated 1867-Jul-01
+area_newbrunswick               72908 km^2      # confederated 1867-Jul-01
+area_canada_original            area_ontario + area_quebec + area_novascotia \
+                                             + area_newbrunswick
+area_manitoba                   647797 km^2     # confederated 1870-Jul-15
+area_britishcolumbia            944735 km^2     # confederated 1871-Jul-20
+area_princeedwardisland         5660 km^2       # confederated 1873-Jul-01
+area_canada_additional          area_manitoba + area_britishcolumbia \
+                                              + area_princeedwardisland
+area_alberta                    661848 km^2     # confederated 1905-Sep-01
+area_saskatchewan               651036 km^2     # confederated 1905-Sep-01
+area_newfoundlandandlabrador    405212 km^2     # confederated 1949-Mar-31
+area_canada_recent              area_alberta + area_saskatchewan \
+                                             + area_newfoundlandandlabrador
+area_canada_provinces           area_canada_original + area_canada_additional \
+                                                     + area_canada_recent
+area_northwestterritories       1346106 km^2    # NT confederated 1870-Jul-15
+area_yukon                      482443 km^2     # YT confederated 1898-Jun-13
+area_nunavut                    2093190 km^2    # NU confederated 1999-Apr-01
+area_canada_territories         area_northwestterritories + area_yukon \
+                                              + area_nunavut
+area_canada                     area_canada_provinces + area_canada_territories
+
+# area-uk-countries.units - UK country (/province) total areas
+# https://en.wikipedia.org/wiki/Countries_of_the_United_Kingdom#Statistics
+# GB is official UK country code for some purposes but internally is a Kingdom
+#
+# areas from A Beginners Guide to UK Geography 2019 v1.0, Office for National Statistics
+# England: country; 0927-Jul-12 united; 1603-Mar-24 union of crowns
+area_england            132947.76 km^2
+#
+# Wales: 1282 conquered; 1535 union; principality until 2011
+area_wales              21224.48 km^2
+#
+# England and Wales: nation; 1535 union
+area_englandwales       area_england + area_wales
+#
+# Scotland: country; ~900 united; 1603-Mar-24 union of crowns
+area_scotland           80226.36 km^2
+#
+# Great Britain: kingdom; excludes NI;
+# 1707 Treaty and Acts of Union: union of parliaments
+area_greatbritain       area_england + area_wales + area_scotland
+area_gb                 area_greatbritain
+#
+# Northern Ireland: province; Ireland: 1177 Henry II lordship;
+# 1542 Henry VIII kingdom; 1652 Cromwell commonwealth;
+# 1691 William III kingdom; 1800 Acts of Union: UK of GB & Ireland;
+# 1921 Irish Free State independent of UK
+area_northernireland    14133.38 km^2
+#
+# United Kingdom of GB & NI: 1800 Acts of Union: UK of GB & Ireland;
+# 1921 Irish Free State independent of UK
+area_unitedkingdom      area_greatbritain + area_northernireland
+area_uk                 area_unitedkingdom
+
+#
+# Units derived from imperial system
+#
+
+ouncedal                oz ft / s^2     # force which accelerates an ounce
+                                        #    at 1 ft/s^2
+poundal                 lb ft / s^2     # same thing for a pound
+tondal                  longton ft / s^2    # and for a ton
+pdl                     poundal
+osi                     ounce force / inch^2   # used in aviation
+psi                     pound force / inch^2
+psia                    psi             # absolute pressure
+                                        #   Note that gauge pressure can be given
+                                        #   using the gaugepressure() and
+                                        #   psig() nonlinear unit definitions
+tsi                     ton force / inch^2
+reyn                    psi sec
+slug                    lbf s^2 / ft
+slugf                   slug force
+slinch                  lbf s^2 / inch  # Mass unit derived from inch second
+slinchf                 slinch force    #   pound-force system.  Used in space
+                                        #   applications where in/sec^2 was a
+                                        #   natural acceleration measure.
+geepound                slug
+lbf                     lb force
+tonf                    ton force
+lbm                     lb
+kip                     1000 lbf     # from kilopound
+ksi                     kip / in^2
+mil                     0.001 inch
+thou                    0.001 inch
+tenth                   0.0001 inch  # one tenth of one thousandth of an inch
+millionth               1e-6 inch    # one millionth of an inch
+circularinch            1|4 pi in^2  # area of a one-inch diameter circle
+circleinch              circularinch #    A circle with diameter d inches has
+                                     #    an area of d^2 circularinches
+cylinderinch         circleinch inch # Cylinder h inch tall, d inches diameter
+                                     #    has volume d^2 h cylinder inches
+circularmil             1|4 pi mil^2 # area of one-mil diameter circle
+cmil                    circularmil
+cental                  100 pound
+centner                 cental
+
+# Shotgun gauge measures the inside diameter of the barrel by counting
+# the number of spherical lead balls you can make to fit that barrel
+# using a pound of lead.  Equivalently, this means that an n gauge gun
+# has a bore diameter that fits a ball of lead that weighs 1|n pounds
+ 
+shotgungauge(ga)        units=[1;m] domain=(0,] range=(0,] \
+                        2 ~spherevol(1 pound / ga leaddensity) ; \
+                        1 pound / leaddensity spherevol(shotgungauge/2)
+shotgunga()             shotgungauge
+caliber                 0.01 inch    # for measuring bullets
+
+duty                    ft lbf
+celo                    ft / s^2
+jerk                    ft / s^3
+australiapoint          0.01 inch    # The "point" is used to measure rainfall
+                                     #   in Australia
+sabin                   ft^2         # Measure of sound absorption equal to the
+                                     #   absorbing power of one square foot of
+                                     #   a perfectly absorbing material.  The
+                                     #   sound absorptivity of an object is the
+                                     #   area times a dimensionless
+                                     #   absorptivity coefficient.
+standardgauge          4 ft + 8.5 in # Standard width between railroad track
+flag                   5 ft^2        # Construction term referring to sidewalk.
+rollwallpaper          30 ft^2       # Area of roll of wall paper
+fillpower              in^3 / ounce  # Density of down at standard pressure.
+                                     #   The best down has 750-800 fillpower.
+pinlength              1|16 inch     # A #17 pin is 17/16 in long in the USA.
+buttonline             1|40 inch     # The line was used in 19th century USA
+                                     #   to measure width of buttons.
+beespace               1|4 inch      # Bees will fill any space that is smaller
+                                     #   than the bee space and leave open
+                                     #   spaces that are larger.  The size of
+                                     #   the space varies with species.
+diamond                8|5 ft        # Marking on US tape measures that is
+                                     #   useful to carpenters who wish to place
+                                     #   five studs in an 8 ft distance.  Note
+                                     #   that the numbers appear in red every
+                                     #   16 inches as well, giving six
+                                     #   divisions in 8 feet.
+retmaunit              1.75 in       # Height of rack mountable equipment.
+U                      retmaunit     #   Equipment should be 1|32 inch narrower
+RU                     U             #   than its U measurement indicates to
+                                     #   allow for clearance, so 4U=(6+31|32)in
+                                     #   RETMA stands for the former name of
+                                     #   the standardizing organization, Radio
+                                     #   Electronics Television Manufacturers
+                                     #   Association.  This organization is now
+                                     #   called the Electronic Industries
+                                     #   Alliance (EIA) and the rack standard
+                                     #   is specified in EIA RS-310-D.
+count                  per pound     # For measuring the size of shrimp
+flightlevel            100 ft        # Flight levels are used to ensure safe
+FL                     flightlevel   #   vertical separation between aircraft
+                                     #   despite variations in local air
+                                     #   pressure.  Flight levels define
+                                     #   altitudes based on a standard air
+                                     #   pressure so that altimeter calibration
+                                     #   is not needed.  This means that
+                                     #   aircraft at separated flight levels
+                                     #   are guaranteed to be separated.
+                                     #   Hence the definition of 100 feet is
+                                     #   a nominal, not true, measure.
+                                     #   Customarily written with no space in
+                                     #   the form FL290, which will not work in
+                                     #   units.  But note "FL 290" will work.  
+
+#
+# Other units of work, energy, power, etc
+#
+
+# Calorie: approximate energy to raise a gram of water one degree celsius
+
+calorie                 cal_th       # Default is the thermochemical calorie
+cal                     calorie
+calorie_th              4.184 J      # Thermochemical calorie, defined in 1930
+thermcalorie            calorie_th   #   by Frederick Rossini as 4.1833 J to 
+cal_th                  calorie_th   #   avoid difficulties associated with the 
+                                     #   uncertainty in the heat capacity of 
+                                     #   water.  In 1948 the value of the joule 
+                                     #   was changed, so the thermochemical
+                                     #   calorie was redefined to 4.184 J.
+                                     #   This kept the energy measured by this
+                                     #   unit the same. 
+calorie_IT              4.1868 J     # International (Steam) Table calorie,
+cal_IT                  calorie_IT   #   defined in 1929 as watt-hour/860 or
+                                     #   equivalently 180|43 joules.  At this
+                                     #   time the international joule had a
+                                     #   different value than the modern joule,
+                                     #   and the values were different in the
+                                     #   USA and in Europe.  In 1956 at the
+                                     #   Fifth International Conference on
+                                     #   Properties of Steam the exact
+                                     #   definition given here was adopted. 
+calorie_15              4.18580 J    # Energy to go from 14.5 to 15.5 degC
+cal_15                  calorie_15
+calorie_fifteen         cal_15
+calorie_20              4.18190 J    # Energy to go from 19.5 to 20.5 degC
+cal_20                  calorie_20
+calorie_twenty          calorie_20
+calorie_4               4.204 J      # Energy to go from 3.5 to 4.5 degC
+cal_4                   calorie_4
+calorie_four            calorie_4
+cal_mean                4.19002 J    # 1|100 energy to go from 0 to 100 degC
+Calorie                 kilocalorie  # the food Calorie
+thermie              1e6 cal_15      # Heat required to raise the
+                                     # temperature of a tonne of
+                                     # water from 14.5 to 15.5 degC.
+
+# btu definitions: energy to raise a pound of water 1 degF
+
+btu                     btu_IT       # International Table BTU is the default
+britishthermalunit      btu
+btu_IT                  cal_IT lb degF / gram K
+btu_th                  cal_th lb degF / gram K
+btu_mean                cal_mean lb degF / gram K
+btu_15                  cal_15 lb degF / gram K
+btu_ISO                 1055.06 J    # Exact, rounded ISO definition based
+                                     #    on the IT calorie
+quad                    quadrillion btu
+
+ECtherm                 1e5 btu_ISO    # Exact definition
+UStherm                 1.054804e8 J   # Exact definition
+therm                   UStherm
+
+# Water latent heat from [23]
+
+water_fusion_heat       6.01 kJ/mol / (18.015 g/mol) # At 0 deg C
+water_vaporization_heat 2256.4 J/g  # At saturation, 100 deg C, 101.42 kPa
+
+# Specific heat capacities of various substances
+#
+# SPECFIC_HEAT          ENERGY / MASS / TEMPERATURE_DIFFERENCE
+# SPECFIC_HEAT_CAPACITY ENERGY / MASS / TEMPERATURE_DIFFERENCE
+
+specificheat_water      calorie / g K
+water_specificheat      specificheat_water
+     # Values from www.engineeringtoolbox.com/specific-heat-metals-d_152.html
+specificheat_aluminum   0.91 J/g K
+specificheat_antimony   0.21 J/g K
+specificheat_barium     0.20 J/g K
+specificheat_beryllium  1.83 J/g K
+specificheat_bismuth    0.13 J/g K
+specificheat_cadmium    0.23 J/g K
+specificheat_cesium     0.24 J/g K
+specificheat_chromium   0.46 J/g K
+specificheat_cobalt     0.42 J/g K
+specificheat_copper     0.39 J/g K
+specificheat_gallium    0.37 J/g K
+specificheat_germanium  0.32 J/g K
+specificheat_gold       0.13 J/g K
+specificheat_hafnium    0.14 J/g K
+specificheat_indium     0.24 J/g K
+specificheat_iridium    0.13 J/g K
+specificheat_iron       0.45 J/g K
+specificheat_lanthanum  0.195 J/g K
+specificheat_lead       0.13 J/g K
+specificheat_lithium    3.57 J/g K
+specificheat_lutetium   0.15 J/g K
+specificheat_magnesium  1.05 J/g K
+specificheat_manganese  0.48 J/g K
+specificheat_mercury    0.14 J/g K
+specificheat_molybdenum 0.25 J/g K
+specificheat_nickel     0.44 J/g K
+specificheat_osmium     0.13 J/g K
+specificheat_palladium  0.24 J/g K
+specificheat_platinum   0.13 J/g K
+specificheat_plutonum   0.13 J/g K
+specificheat_potassium  0.75 J/g K
+specificheat_rhenium    0.14 J/g K
+specificheat_rhodium    0.24 J/g K
+specificheat_rubidium   0.36 J/g K
+specificheat_ruthenium  0.24 J/g K
+specificheat_scandium   0.57  J/g K
+specificheat_selenium   0.32 J/g K
+specificheat_silicon    0.71 J/g K
+specificheat_silver     0.23 J/g K
+specificheat_sodium     1.21 J/g K
+specificheat_strontium  0.30 J/g K
+specificheat_tantalum   0.14 J/g K
+specificheat_thallium   0.13 J/g K
+specificheat_thorium    0.13 J/g K
+specificheat_tin        0.21 J/g K
+specificheat_titanium   0.54 J/g K
+specificheat_tungsten   0.13 J/g K
+specificheat_uranium    0.12 J/g K
+specificheat_vanadium   0.39 J/g K
+specificheat_yttrium    0.30 J/g K
+specificheat_zinc       0.39 J/g K
+specificheat_zirconium  0.27 J/g K
+specificheat_ethanol    2.3  J/g K
+specificheat_ammonia    4.6 J/g K
+specificheat_freon      0.91 J/g K   # R-12 at 0 degrees Fahrenheit
+specificheat_gasoline   2.22 J/g K
+specificheat_iodine     2.15 J/g K
+specificheat_oliveoil   1.97 J/g K
+
+#  en.wikipedia.org/wiki/Heat_capacity#Table_of_specific_heat_capacities
+specificheat_hydrogen   14.3 J/g K
+specificheat_helium     5.1932 J/g K
+specificheat_argon      0.5203 J/g K
+specificheat_tissue     3.5 J/g K
+specificheat_diamond    0.5091 J/g K
+specificheat_granite    0.79 J/g K
+specificheat_graphite   0.71 J/g K
+specificheat_ice        2.11 J/g K
+specificheat_asphalt    0.92 J/g K
+specificheat_brick      0.84 J/g K
+specificheat_concrete   0.88 J/g K
+specificheat_glass_silica 0.84 J/g K
+specificheat_glass_flint  0.503 J/g K
+specificheat_glass_pyrex  0.753 J/g K
+specificheat_gypsum     1.09 J/g K
+specificheat_marble     0.88 J/g K
+specificheat_sand       0.835 J/g K
+specificheat_soil       0.835 J/g K
+specificheat_wood       1.7 J/g K
+
+specificheat_sucrose    1.244 J/g K #www.sugartech.co.za/heatcapacity/index.php
+
+
+# Energy densities of various fuels
+#
+# Most of these fuels have varying compositions or qualities and hence their
+# actual energy densities vary.  These numbers are hence only approximate.
+#
+# E1. http://www.aps.org/policy/reports/popa-reports/energy/units.cfm
+# E2. https://web.archive.org/web/20100825042309/http://www.ior.com.au/ecflist.html
+
+tonoil                  1e10 cal_IT    # Ton oil equivalent.  A conventional
+                                       # value for the energy released by
+toe                     tonoil         # burning one metric ton of oil. [18,E1]
+                                       # Note that energy per mass of petroleum
+                                       # products is fairly constant.
+                                       # Variations in volumetric energy
+                                       # density result from variations in the
+                                       # density (kg/m^3) of different fuels.
+                                       # This definition is given by the
+                                       # IEA/OECD.
+toncoal                 7e9 cal_IT     # Energy in metric ton coal from [18].
+                                       # This is a nominal value which
+                                       # is close to the heat content
+                                       # of coal used in the 1950's
+barreloil               5.8 Mbtu       # Conventional value for barrel of crude
+                                       # oil [E1].  Actual range is 5.6 - 6.3.
+naturalgas_HHV          1027 btu/ft3   # Energy content of natural gas.  HHV
+naturalgas_LHV          930 btu/ft3    # is for Higher Heating Value and
+naturalgas              naturalgas_HHV # includes energy from condensation
+                                       # combustion products.  LHV is for Lower
+                                       # Heating Value and excludes these.
+                                       # American publications typically report
+                                       # HHV whereas European ones report LHV.
+charcoal                30 GJ/tonne
+woodenergy_dry          20 GJ/tonne    # HHV, a cord weights about a tonne
+woodenergy_airdry       15 GJ/tonne    # 20% moisture content
+coal_bituminous         27 GJ / tonne
+coal_lignite            15 GJ / tonne
+coal_US                 22 GJ / uston  # Average for US coal (short ton), 1995
+ethanol_HHV         84000 btu/usgallon
+ethanol_LHV         75700 btu/usgallon
+diesel             130500 btu/usgallon
+gasoline_LHV       115000 btu/usgallon
+gasoline_HHV       125000 btu/usgallon
+gasoline                gasoline_HHV
+heating                 37.3 MJ/liter
+fueloil                 39.7 MJ/liter  # low sulphur
+propane                 93.3 MJ/m^3
+butane                  124 MJ/m^3
+
+# The US EPA defines a "miles per gallon equivalent" for alternative
+# energy vehicles:
+
+mpg_e          miles / gallon gasoline_LHV
+MPGe           mpg_e
+
+# These values give total energy from uranium fission.  Actual efficiency
+# of nuclear power plants is around 30%-40%.  Note also that some reactors
+# use enriched uranium around 3% U-235.  Uranium during processing or use
+# may be in a compound of uranium oxide or uranium hexafluoride, in which
+# case the energy density would be lower depending on how much uranium is
+# in the compound.
+
+uranium_pure     200 MeV avogadro / (235.0439299 g/mol)  # Pure U-235
+uranium_natural         0.7% uranium_pure        # Natural uranium: 0.7% U-235
+
+# Celsius heat unit: energy to raise a pound of water 1 degC
+
+celsiusheatunit         cal lb degC / gram K
+chu                     celsiusheatunit
+
+# "Apparent" average power in an AC circuit, the product of rms voltage
+# and rms current, equal to the true power in watts when voltage and
+# current are in phase.  In a DC circuit, always equal to the true power.
+
+VA                      volt ampere
+
+kWh                     kilowatt hour
+
+# The horsepower is supposedly the power of one horse pulling.   Obviously
+# different people had different horses.
+
+horsepower              550 foot pound force / sec    # Invented by James Watt
+mechanicalhorsepower    horsepower
+hp                      horsepower
+metrichorsepower        75 kilogram force meter / sec # PS=Pferdestaerke in
+electrichorsepower      746 W                         # Germany
+boilerhorsepower        9809.50 W
+waterhorsepower         746.043 W
+brhorsepower            horsepower   # Value corrected Dec, 2019.  Was 745.7 W.
+donkeypower             250 W
+chevalvapeur            metrichorsepower
+
+#
+# Heat Transfer
+#
+# Thermal conductivity, K, measures the rate of heat transfer across
+# a material.  The heat transferred is
+#     Q = K dT A t / L
+# where dT is the temperature difference across the material, A is the
+# cross sectional area, t is the time, and L is the length (thickness).
+# Thermal conductivity is a material property.
+
+THERMAL_CONDUCTIVITY    POWER / AREA (TEMPERATURE_DIFFERENCE/LENGTH)
+THERMAL_RESISTIVITY     1/THERMAL_CONDUCTIVITY
+
+# Thermal conductance is the rate at which heat flows across a given
+# object, so the area and thickness have been fixed.  It depends on
+# the size of the object and is hence not a material property.
+
+THERMAL_CONDUCTANCE     POWER / TEMPERATURE_DIFFERENCE
+THERMAL_RESISTANCE      1/THERMAL_CONDUCTANCE
+
+# Thermal admittance is the rate of heat flow per area across an
+# object whose thickness has been fixed.  Its reciprocal, thermal
+# insulation, is used to for measuring the heat transfer per area
+# of sheets of insulation or cloth that are of specified thickness.
+
+THERMAL_ADMITTANCE      THERMAL_CONDUCTIVITY / LENGTH
+THERMAL_INSULANCE       THERMAL_RESISTIVITY LENGTH
+THERMAL_INSULATION      THERMAL_RESISTIVITY LENGTH
+
+Rvalue                  degF ft^2 hr / btu
+Uvalue                  1/Rvalue
+europeanUvalue          watt / m^2 K
+RSI                     degC m^2 / W
+clo                     0.155 degC m^2 / W # Supposed to be the insulance
+                                           # required to keep a resting person
+                                           # comfortable indoors.  The value
+                                           # given is from NIST and the CRC,
+                                           # but [5] gives a slightly different
+                                           # value of 0.875 ft^2 degF hr / btu.
+tog                     0.1 degC m^2 / W   # Also used for clothing.
+
+
+# Thermal Conductivity of a few materials
+
+diamond_natural_thermal_conductivity    2200 W / m K
+diamond_synthetic_thermal_conductivity  3320 W / m K  # 99% pure C12
+silver_thermal_conductivity             406 W / m K
+aluminum_thermal_conductivity           205 W / m K
+copper_thermal_conductivity             385 W / m K
+gold_thermal_conductivity               314 W / m K
+iron_thermal_conductivity               79.5 W / m K
+stainless_304_thermal_conductivity      15.5 W / m K  # average value
+
+# The bel was defined by engineers of Bell Laboratories to describe the
+# reduction in audio level over a length of one mile. It was originally
+# called the transmission unit (TU) but was renamed around 1923 to honor
+# Alexander Graham Bell. The bel proved inconveniently large so the decibel
+# has become more common.  The decibel is dimensionless since it reports a
+# ratio, but it is used in various contexts to report a signal's power
+# relative to some reference level.
+
+bel(x)     units=[1;1] range=(0,) 10^(x);    log(bel)    # Basic bel definition
+decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) # Basic decibel
+dB()       decibel                                           # Abbreviation
+dBW(x)     units=[1;W] range=(0,) dB(x) W ;  ~dB(dBW/W)      # Reference = 1 W
+dBk(x)     units=[1;W] range=(0,) dB(x) kW ; ~dB(dBk/kW)     # Reference = 1 kW
+dBf(x)     units=[1;W] range=(0,) dB(x) fW ; ~dB(dBf/fW)     # Reference = 1 fW
+dBm(x)     units=[1;W] range=(0,) dB(x) mW ; ~dB(dBm/mW)     # Reference = 1 mW
+dBmW(x)    units=[1;W] range=(0,) dBm(x) ;   ~dBm(dBmW)      # Reference = 1 mW
+dBJ(x)     units=[1;J] range=(0,) dB(x) J; ~dB(dBJ/J)        # Energy relative
+                                     # to 1 joule.  Used for power spectral
+                                     # density since W/Hz = J
+
+
+# When used to measure amplitude, voltage, or current the signal is squared
+# because power is proportional to the square of these measures.  The root
+# mean square (RMS) voltage is typically used with these units.
+
+dB_amplitude(x) units=[1;1]  dB(0.5 x) ; ~dB(dB_amplitude^2) 
+dBV(x)  units=[1;V] range=(0,) dB(0.5 x) V;~dB(dBV^2 / V^2) # Reference = 1 V
+dBmV(x) units=[1;V] range=(0,) dB(0.5 x) mV;~dB(dBmV^2/mV^2)# Reference = 1 mV
+dBuV(x) units=[1;V] range=(0,) dB(0.5 x) microV ; ~dB(dBuV^2 / microV^2)
+                                   # Reference = 1 microvolt
+
+# Here are dB measurements for current.  Be aware that dbA is also 
+# a unit for frequency weighted sound pressure.  
+dBA(x)  units=[1;A] range=(0,) dB(0.5 x) A;~dB(dBA^2 / A^2) # Reference = 1 A
+dBmA(x) units=[1;A] range=(0,) dB(0.5 x) mA;~dB(dBmA^2/mA^2)# Reference = 1 mA
+dBuA(x) units=[1;A] range=(0,) dB(0.5 x) microA ; ~dB(dBuA^2 / microA^2)
+                                                    # Reference = 1 microamp
+
+# Referenced to the voltage that causes 1 mW dissipation in a 600 ohm load.
+# Originally defined as dBv but changed to prevent confusion with dBV.
+# The "u" is for unloaded.
+dBu(x) units=[1;V] range=(0,) dB(0.5 x) sqrt(mW 600 ohm) ; \
+                              ~dB(dBu^2 / mW 600 ohm)
+dBv(x) units=[1;V] range=(0,) dBu(x) ; ~dBu(dBv)  # Synonym for dBu
+
+# Measurements for sound in air, referenced to the threshold of human hearing
+# Note that sound in other media typically uses 1 micropascal as a reference
+# for sound pressure.  Units dBA, dBB, dBC, refer to different frequency
+# weightings meant to approximate the human ear's response.
+
+# sound pressure level
+dBSPL(x) units=[1;Pa] range=(0,) dB(0.5 x) 20 microPa ;  \
+                                 ~dB(dBSPL^2 / (20 microPa)^2)
+# sound intensity level
+dBSIL(x) units=[1;W/m^2] range=(0,) dB(x) 1e-12 W/m^2; \
+                                    ~dB(dBSIL / (1e-12 W/m^2))
+# sound power level (The W in SWL is for the reference power, 1 W.)
+dBSWL(x) units=[1;W] range=(0,) dB(x) 1e-12 W; ~dB(dBSWL/1e-12 W)
+
+# The neper is another similar logarithmic unit.  Note that the neper
+# is defined based on the ratio of amplitudes rather than the power
+# ratio like the decibel.  This means that if the data is power, and
+# you convert to nepers you should take the square root of the data
+# to convert to amplitude.  If you want to convert nepers to a power
+# measurement you need to square the resulting output.  
+
+neper(x)       units=[1;1]  range=(0,)  exp(x);      ln(neper)
+centineper(x)  units=[1;1]  range=(0,)  exp(x/100);  100 ln(centineper)
+Np()           neper
+cNp()          centineper
+Np_power(x)    units=[1;1]  Np(2 x) ; ~Np(Np_power)/2
+
+# Misc other measures
+
+ENTROPY                 ENERGY / TEMPERATURE
+clausius                1e3 cal/K       # A unit of physical entropy
+langley                 thermcalorie/cm^2    # Used in radiation theory
+poncelet                100 kg force m / s
+tonrefrigeration        uston 144 btu / lb day # One ton refrigeration is
+                                        # the rate of heat extraction required
+                                        # turn one ton of water to ice in
+                                        # a day.  Ice is defined to have a
+                                        # latent heat of 144 btu/lb.
+tonref                  tonrefrigeration
+refrigeration           tonref / ton
+frigorie                1000 cal_15     # Used in refrigeration engineering.
+airwatt                 8.5 (ft^3/min) inH2O # Measure of vacuum power as
+                                             # pressure times air flow.
+
+# The unit "tnt" is defined so that you can write "tons tnt".  The
+# question of which ton, exactly, is intended.  The answer is that
+# nobody knows: 
+#
+# Quoting the footnote from page 13 of
+# The Effects of Nuclear Weapons, 3rd ed.
+# https://www.fourmilab.ch/etexts/www/effects/eonw_1.pdf
+# 
+#     The majority of the experimental and theoretical values of the
+#     explosive energy released by TNT range from 900 to 1,100 calories per
+#     gram. At one time, there was some uncertainty as to whether the term
+#     "kiloton" of TNT referred to a short kiloton (2*10^6 pounds), a metric
+#     kiloton (2.205*10^6 pounds), or a long kiloton (2.24*10^6 pounds). In
+#     order to avoid ambiguity, it was agreed that the term "kiloton" would
+#     refer to the release of 10^12 calories of explosive energy. This is
+#     equivalent to 1 short kiloton of TNT if the energy release is 1,102
+#     calories per gram or to 1 long kiloton if the energy is 984 calories
+#     per gram of TNT.
+#
+# It is therefore not well-defined how much energy a "gram of tnt" is,
+# though this term does appear in some references.
+
+tnt                     1e9 cal_th / ton   # Defined exact value
+
+# Nuclear weapon yields 
+
+davycrocket             10 ton tnt         # lightest US tactical nuclear weapon
+hiroshima               15.5 kiloton tnt   # Uranium-235 fission bomb
+nagasaki                21 kiloton tnt     # Plutonium-239 fission bomb
+fatman                  nagasaki
+littleboy               hiroshima
+ivyking                 500 kiloton tnt    # most powerful fission bomb
+castlebravo             15 megaton tnt     # most powerful US test
+tsarbomba               50 megaton tnt     # most powerful test ever: USSR,
+                                           # 30 October 1961
+b53bomb                 9 megaton tnt
+                 # http://rarehistoricalphotos.com/gadget-first-atomic-bomb/
+trinity                 18 kiloton tnt     # July 16, 1945
+gadget                  trinity
+
+#
+# Permeability: The permeability or permeance, n, of a substance determines
+# how fast vapor flows through the substance.  The formula W = n A dP
+# holds where W is the rate of flow (in mass/time), n is the permeability,
+# A is the area of the flow path, and dP is the vapor pressure difference.
+#
+
+perm_0C                 grain / hr ft^2 inHg
+perm_zero               perm_0C
+perm_0                  perm_0C
+perm                    perm_0C
+perm_23C                grain / hr ft^2 in Hg23C
+perm_twentythree        perm_23C
+
+#
+# Counting measures
+#
+
+pair                    2
+brace                   2
+nest                    3     # often used for items like bowls that
+                              #   nest together
+hattrick                3     # Used in sports, especially cricket and ice
+                              #   hockey to report the number of goals.
+dicker                  10
+dozen                   12
+bakersdozen             13
+score                   20
+flock                   40
+timer                   40
+shock                   60
+toncount                100   # Used in sports in the UK
+longhundred             120   # From a germanic counting system
+gross                   144
+greatgross              12 gross
+tithe                   1|10  # From Anglo-Saxon word for tenth
+
+# Paper counting measure
+
+shortquire              24
+quire                   25
+shortream               480
+ream                    500
+perfectream             516
+bundle                  2 reams
+bale                    5 bundles
+
+#
+# Paper measures
+#
+
+# USA paper sizes
+
+lettersize              8.5 inch 11 inch
+legalsize               8.5 inch 14 inch
+ledgersize              11 inch 17 inch
+executivesize           7.25 inch 10.5 inch
+Apaper                  8.5 inch 11 inch
+Bpaper                  11 inch 17 inch
+Cpaper                  17 inch 22 inch
+Dpaper                  22 inch 34 inch
+Epaper                  34 inch 44 inch
+
+# Correspondence envelope sizes.  #10 is the standard business
+# envelope in the USA. 
+
+envelope6_25size        3.5 inch 6 inch
+envelope6_75size        3.625 inch 6.5 inch
+envelope7size           3.75 inch 6.75 inch
+envelope7_75size        3.875 inch 7.5 inch
+envelope8_625size       3.625 inch 8.625 inch
+envelope9size           3.875 inch 8.875 inch
+envelope10size          4.125 inch 9.5 inch
+envelope11size          4.5 inch 10.375 inch
+envelope12size          4.75 inch 11 inch
+envelope14size          5 inch 11.5 inch
+envelope16size          6 inch 12 inch
+
+# Announcement envelope sizes (no relation to metric paper sizes like A4)
+
+envelopeA1size          3.625 inch 5.125 inch  # same as 4bar
+envelopeA2size          4.375 inch 5.75 inch
+envelopeA6size          4.75 inch 6.5 inch
+envelopeA7size          5.25 inch 7.25 inch
+envelopeA8size          5.5 inch 8.125 inch   
+envelopeA9size          5.75 inch 8.75 inch
+envelopeA10size         6 inch 9.5 inch
+
+# Baronial envelopes
+
+envelope4bar            3.625 inch 5.125 inch  # same as A1
+envelope5_5bar          4.375 inch 5.75 inch
+envelope6bar            4.75 inch 6.5 inch
+
+# Coin envelopes
+
+envelope1baby           2.25 inch 3.5 inch     # same as #1 coin
+envelope00coin          1.6875 inch 2.75 inch
+envelope1coin           2.25 inch 3.5 inch
+envelope3coin           2.5 inch 4.25 inch
+envelope4coin           3 inch 4.5 inch
+envelope4_5coin         3 inch 4.875 inch
+envelope5coin           2.875 inch 5.25 inch
+envelope5_5coin         3.125 inch 5.5 inch
+envelope6coin           3.375 inch 6 inch
+envelope7coin           3.5 inch 6.5 inch
+
+# The metric paper sizes are defined so that if a sheet is cut in half
+# along the short direction, the result is two sheets which are
+# similar to the original sheet.  This means that for any metric size,
+# the long side is close to sqrt(2) times the length of the short
+# side.  Each series of sizes is generated by repeated cuts in half,
+# with the values rounded down to the nearest millimeter.
+
+A0paper                 841 mm 1189 mm   # The basic size in the A series
+A1paper                 594 mm  841 mm   # is defined to have an area of
+A2paper                 420 mm  594 mm   # one square meter.
+A3paper                 297 mm  420 mm
+A4paper                 210 mm  297 mm
+A5paper                 148 mm  210 mm
+A6paper                 105 mm  148 mm
+A7paper                  74 mm  105 mm
+A8paper                  52 mm   74 mm
+A9paper                  37 mm   52 mm
+A10paper                 26 mm   37 mm
+
+B0paper                1000 mm 1414 mm   # The basic B size has an area
+B1paper                 707 mm 1000 mm   # of sqrt(2) square meters.
+B2paper                 500 mm  707 mm
+B3paper                 353 mm  500 mm
+B4paper                 250 mm  353 mm
+B5paper                 176 mm  250 mm
+B6paper                 125 mm  176 mm
+B7paper                  88 mm  125 mm
+B8paper                  62 mm   88 mm
+B9paper                  44 mm   62 mm
+B10paper                 31 mm   44 mm
+
+C0paper                 917 mm 1297 mm   # The basic C size has an area
+C1paper                 648 mm  917 mm   # of sqrt(sqrt(2)) square meters.
+C2paper                 458 mm  648 mm
+C3paper                 324 mm  458 mm   # Intended for envelope sizes
+C4paper                 229 mm  324 mm
+C5paper                 162 mm  229 mm
+C6paper                 114 mm  162 mm
+C7paper                  81 mm  114 mm
+C8paper                  57 mm   81 mm
+C9paper                  40 mm   57 mm
+C10paper                 28 mm   40 mm
+
+# gsm (Grams per Square Meter), a sane, metric paper weight measure
+
+gsm                     grams / meter^2
+
+# In the USA, a collection of crazy historical paper measures are used.  Paper
+# is measured as a weight of a ream of that particular type of paper.  This is
+# sometimes called the "substance" or "basis" (as in "substance 20" paper).
+# The standard sheet size or "basis size" varies depending on the type of
+# paper.  As a result, 20 pound bond paper and 50 pound text paper are actually
+# about the same weight.  The different sheet sizes were historically the most
+# convenient for printing or folding in the different applications.  These
+# different basis weights are standards maintained by American Society for
+# Testing Materials (ASTM) and the American Forest and Paper Association
+# (AF&PA).
+
+poundbookpaper          lb / 25 inch 38 inch ream
+lbbook                  poundbookpaper
+poundtextpaper          poundbookpaper
+lbtext                  poundtextpaper
+poundoffsetpaper        poundbookpaper    # For offset printing
+lboffset                poundoffsetpaper
+poundbiblepaper         poundbookpaper    # Designed to be lightweight, thin,
+lbbible                 poundbiblepaper   # strong and opaque.
+poundtagpaper           lb / 24 inch 36 inch ream
+lbtag                   poundtagpaper
+poundbagpaper           poundtagpaper
+lbbag                   poundbagpaper
+poundnewsprintpaper     poundtagpaper
+lbnewsprint             poundnewsprintpaper
+poundposterpaper        poundtagpaper
+lbposter                poundposterpaper
+poundtissuepaper        poundtagpaper
+lbtissue                poundtissuepaper
+poundwrappingpaper      poundtagpaper
+lbwrapping              poundwrappingpaper
+poundwaxingpaper        poundtagpaper
+lbwaxing                poundwaxingpaper
+poundglassinepaper      poundtagpaper
+lbglassine              poundglassinepaper
+poundcoverpaper         lb / 20 inch 26 inch ream
+lbcover                 poundcoverpaper
+poundindexpaper         lb / 25.5 inch 30.5 inch ream
+lbindex                 poundindexpaper
+poundindexbristolpaper  poundindexpaper
+lbindexbristol          poundindexpaper
+poundbondpaper          lb / 17 inch 22 inch ream  # Bond paper is stiff and
+lbbond                  poundbondpaper             # durable for repeated
+poundwritingpaper       poundbondpaper             # filing, and it resists
+lbwriting               poundwritingpaper          # ink penetration.
+poundledgerpaper        poundbondpaper
+lbledger                poundledgerpaper
+poundcopypaper          poundbondpaper
+lbcopy                  poundcopypaper
+poundblottingpaper      lb / 19 inch 24 inch ream
+lbblotting              poundblottingpaper
+poundblankspaper        lb / 22 inch 28 inch ream
+lbblanks                poundblankspaper
+poundpostcardpaper      lb / 22.5 inch 28.5 inch ream
+lbpostcard              poundpostcardpaper
+poundweddingbristol     poundpostcardpaper
+lbweddingbristol        poundweddingbristol
+poundbristolpaper       poundweddingbristol
+lbbristol               poundbristolpaper
+poundboxboard           lb / 1000 ft^2
+lbboxboard              poundboxboard
+poundpaperboard         poundboxboard
+lbpaperboard            poundpaperboard
+
+# When paper is marked in units of M, it means the weight of 1000 sheets of the
+# given size of paper.  To convert this to paper weight, divide by the size of
+# the paper in question.
+
+paperM                  lb / 1000
+
+# In addition paper weight is reported in "caliper" which is simply the
+# thickness of one sheet, typically in inches.  Thickness is also reported in
+# "points" where a point is 1|1000 inch.  These conversions are supplied to
+# convert these units roughly (using an approximate density) into the standard
+# paper weight values.
+
+pointthickness          0.001 in
+paperdensity            0.8 g/cm^3        # approximate--paper densities vary!
+papercaliper            in paperdensity
+paperpoint              pointthickness paperdensity
+
+#
+# Printing
+#
+
+fournierpoint           0.1648 inch / 12  # First definition of the printers
+                                          # point made by Pierre Fournier who
+                                          # defined it in 1737 as 1|12 of a
+                                          # cicero which was 0.1648 inches.
+olddidotpoint           1|72 frenchinch   # Francois Ambroise Didot, one of
+                                          # a family of printers, changed
+                                          # Fournier's definition around 1770
+                                          # to fit to the French units then in
+                                          # use.
+bertholdpoint           1|2660 m          # H. Berthold tried to create a
+                                          # metric version of the didot point
+                                          # in 1878.
+INpoint                 0.4 mm            # This point was created by a
+                                          # group directed by Fermin Didot in
+                                          # 1881 and is associated with the
+                                          # imprimerie nationale.  It doesn't
+                                          # seem to have been used much.
+germandidotpoint        0.376065 mm       # Exact definition appears in DIN
+                                          # 16507, a German standards document
+                                          # of 1954.  Adopted more broadly  in
+                                          # 1966 by ???
+metricpoint             3|8 mm            # Proposed in 1977 by Eurograf
+oldpoint                1|72.27 inch      # The American point was invented
+printerspoint           oldpoint          # by Nelson Hawks in 1879 and
+texpoint                oldpoint          # dominates USA publishing.
+                                          # It was standardized by the American
+                                          # Typefounders Association at the
+                                          # value of 0.013837 inches exactly.
+                                          # Knuth uses the approximation given
+                                          # here (which is very close).  The
+                                          # comp.fonts FAQ claims that this
+                                          # value is supposed to be 1|12 of a
+                                          # pica where 83 picas is equal to 35
+                                          # cm.  But this value differs from
+                                          # the standard.
+texscaledpoint          1|65536 texpoint  # The TeX typesetting system uses
+texsp                   texscaledpoint    # this for all computations.
+computerpoint           1|72 inch         # The American point was rounded
+point                   computerpoint
+computerpica            12 computerpoint  # to an even 1|72 inch by computer
+postscriptpoint         computerpoint     # people at some point.
+pspoint                 postscriptpoint
+twip                    1|20 point        # TWentieth of an Imperial Point
+Q                       1|4 mm            # Used in Japanese phototypesetting
+                                          # Q is for quarter
+frenchprinterspoint     olddidotpoint
+didotpoint              germandidotpoint  # This seems to be the dominant value
+europeanpoint           didotpoint        # for the point used in Europe
+cicero                  12 didotpoint
+
+stick                   2 inches
+
+# Type sizes
+
+excelsior               3 oldpoint
+brilliant               3.5 oldpoint
+diamondtype             4 oldpoint
+pearl                   5 oldpoint
+agate                   5.5 oldpoint  # Originally agate type was 14 lines per
+                                      #   inch, giving a value of 1|14 in.
+ruby                    agate         # British
+nonpareil               6 oldpoint
+mignonette              6.5 oldpoint
+emerald                 mignonette    # British
+minion                  7 oldpoint
+brevier                 8 oldpoint
+bourgeois               9 oldpoint
+longprimer              10 oldpoint
+smallpica               11 oldpoint
+pica                    12 oldpoint
+english                 14 oldpoint
+columbian               16 oldpoint
+greatprimer             18 oldpoint
+paragon                 20 oldpoint
+meridian                44 oldpoint
+canon                   48 oldpoint
+
+# German type sizes
+
+nonplusultra            2 didotpoint
+brillant                3 didotpoint
+diamant                 4 didotpoint
+perl                    5 didotpoint
+nonpareille             6 didotpoint
+kolonel                 7 didotpoint
+petit                   8 didotpoint
+borgis                  9 didotpoint
+korpus                  10 didotpoint
+corpus                  korpus
+garamond                korpus
+mittel                  14 didotpoint
+tertia                  16 didotpoint
+text                    18 didotpoint
+kleine_kanon            32 didotpoint
+kanon                   36 didotpoint
+grobe_kanon             42 didotpoint
+missal                  48 didotpoint
+kleine_sabon            72 didotpoint
+grobe_sabon             84 didotpoint
+
+#
+# Information theory units.  Note that the name "entropy" is used both
+# to measure information and as a physical quantity.
+#
+
+INFORMATION             bit
+
+nat                     (1/ln(2)) bits       # Entropy measured base e
+hartley                 log2(10) bits        # Entropy of a uniformly
+ban                     hartley              #   distributed random variable
+                                             #   over 10 symbols.
+dit                     hartley              # from Decimal digIT
+
+#
+# Computer
+#
+
+bps                     bit/sec              # Sometimes the term "baud" is
+                                             #   incorrectly used to refer to
+                                             #   bits per second.  Baud refers
+                                             #   to symbols per second.  Modern
+                                             #   modems transmit several bits
+                                             #   per symbol.
+byte                    8 bit                # Not all machines had 8 bit
+B                       byte                 #   bytes, but these days most of
+                                             #   them do.  But beware: for
+                                             #   transmission over modems, a
+                                             #   few extra bits are used so
+                                             #   there are actually 10 bits per
+                                             #   byte.
+octet                   8 bits               # The octet is always 8 bits
+nybble                  4 bits               # Half of a byte. Sometimes
+                                             #   equal to different lengths
+                                             #   such as 3 bits.
+nibble                  nybble
+nyp                     2 bits               # Donald Knuth asks in an exercise
+                                             #   for a name for a 2 bit
+                                             #   quantity and gives the "nyp"
+                                             #   as a solution due to Gregor
+                                             #   Purdy.  Not in common use.
+meg                     megabyte             # Some people consider these
+                                             # units along with the kilobyte
+gig                     gigabyte             # to be defined according to
+                                             # powers of 2 with the kilobyte
+                                             # equal to 2^10 bytes, the
+                                             # megabyte equal to 2^20 bytes and
+                                             # the gigabyte equal to 2^30 bytes
+                                             # but these usages are forbidden
+                                             # by SI.  Binary prefixes have
+                                             # been defined by IEC to replace
+                                             # the SI prefixes.  Use them to
+                                             # get the binary units KiB, MiB,
+                                             # GiB, etc.
+jiffy                   0.01 sec     # This is defined in the Jargon File
+jiffies                 jiffy        # (http://www.jargon.org) as being the
+                                     # duration of a clock tick for measuring
+                                     # wall-clock time.  Supposedly the value
+                                     # used to be 1|60 sec or 1|50 sec
+                                     # depending on the frequency of AC power,
+                                     # but then 1|100 sec became more common.
+                                     # On linux systems, this term is used and
+                                     # for the Intel based chips, it does have
+                                     # the value of .01 sec.  The Jargon File
+                                     # also lists two other definitions:
+                                     # millisecond, and the time taken for
+                                     # light to travel one foot.
+cdaudiospeed      44.1 kHz 2*16 bits # CD audio data rate at 44.1 kHz with 2
+                                     # samples of sixteen bits each.
+cdromspeed       75 2048 bytes / sec # For data CDs (mode1) 75 sectors are read
+                                     # each second with 2048 bytes per sector.
+                                     # Audio CDs do not have sectors, but
+                                     # people sometimes divide the bit rate by
+                                     # 75 and claim a sector length of 2352.
+                                     # Data CDs have a lower rate due to
+                                     # increased error correction overhead.
+                                     # There is a rarely used mode (mode2) with
+                                     # 2336 bytes per sector that has fewer
+                                     # error correction bits than mode1.
+dvdspeed                 1385 kB/s   # This is the "1x" speed of a DVD using
+                                     # constant linear velocity (CLV) mode.
+                                     # Modern DVDs may vary the linear velocity
+                                     # as they go from the inside to the
+                                     # outside of the disc.
+                       # See http://www.osta.org/technology/dvdqa/dvdqa4.htm
+
+FIT         / 1e9 hour # Failures In Time, number of failures per billion hours
+
+#
+# The IP address space is divided into subnets.  The number of hosts
+# in a subnet depends on the length of the subnet prefix.  This is
+# often written as /N where N is the number of bits in the prefix.
+#
+# https://en.wikipedia.org/wiki/Subnetwork
+#
+# These definitions gives the number of hosts for a subnet whose
+# prefix has the specified length in bits.
+#
+
+ipv4subnetsize(prefix_len) units=[1;1]  domain=[0,32] range=[1,4294967296] \
+                         2^(32-prefix_len) ; 32-log2(ipv4subnetsize)
+ipv4classA               ipv4subnetsize(8)
+ipv4classB               ipv4subnetsize(16)
+ipv4classC               ipv4subnetsize(24)
+
+ipv6subnetsize(prefix_len) units=[1;1] domain=[0,128] \
+                         range=[1,340282366920938463463374607431768211456] \
+                         2^(128-prefix_len) ; 128-log2(ipv6subnetsize)
+
+#
+# Musical measures.  Musical intervals expressed as ratios.  Multiply
+# two intervals together to get the sum of the interval.  The function
+# musicalcent can be used to convert ratios to cents.
+#
+
+# Perfect intervals
+
+octave                  2
+majorsecond             musicalfifth^2 / octave
+majorthird              5|4
+minorthird              6|5
+musicalfourth           4|3
+musicalfifth            3|2
+majorsixth              musicalfourth majorthird
+minorsixth              musicalfourth minorthird
+majorseventh            musicalfifth majorthird
+minorseventh            musicalfifth minorthird
+
+pythagoreanthird        majorsecond musicalfifth^2 / octave
+syntoniccomma           pythagoreanthird / majorthird
+pythagoreancomma        musicalfifth^12 / octave^7
+
+# Equal tempered definitions
+
+semitone                octave^(1|12)
+musicalcent(x) units=[1;1] range=(0,) semitone^(x/100) ; \
+                                      100 log(musicalcent)/log(semitone)
+
+#
+# Musical note lengths.
+#
+
+wholenote               !
+MUSICAL_NOTE_LENGTH     wholenote
+halfnote                1|2 wholenote
+quarternote             1|4 wholenote
+eighthnote              1|8 wholenote
+sixteenthnote           1|16 wholenote
+thirtysecondnote        1|32 wholenote
+sixtyfourthnote         1|64 wholenote
+dotted                  3|2
+doubledotted            7|4
+breve                   doublewholenote
+semibreve               wholenote
+minimnote               halfnote
+crotchet                quarternote
+quaver                  eighthnote
+semiquaver              sixteenthnote
+demisemiquaver          thirtysecondnote
+hemidemisemiquaver      sixtyfourthnote
+semidemisemiquaver      hemidemisemiquaver
+
+#
+# yarn and cloth measures
+#
+
+# yarn linear density
+
+woolyarnrun             1600 yard/pound # 1600 yds of "number 1 yarn" weighs
+                                        # a pound.
+yarncut                 300 yard/pound  # Less common system used in
+                                        # Pennsylvania for wool yarn
+cottonyarncount         840 yard/pound
+linenyarncount          300 yard/pound  # Also used for hemp and ramie
+worstedyarncount        1680 ft/pound
+metricyarncount         meter/gram
+denier                  1|9 tex            # used for silk and rayon
+manchesteryarnnumber    drams/1000 yards   # old system used for silk
+pli                     lb/in
+typp                    1000 yd/lb   # abbreviation for Thousand Yard Per Pound
+asbestoscut             100 yd/lb    # used for glass and asbestos yarn
+
+tex                     gram / km    # rational metric yarn measure, meant
+drex                    0.1 tex      # to be used for any kind of yarn
+poumar                  lb / 1e6 yard
+
+# yarn and cloth length
+
+skeincotton             80*54 inch   # 80 turns of thread on a reel with a
+                                     #  54 in circumference (varies for other
+                                     #  kinds of thread)
+cottonbolt              120 ft       # cloth measurement
+woolbolt                210 ft
+bolt                    cottonbolt
+heer                    600 yards
+cut                     300 yards    # used for wet-spun linen yarn
+lea                     300 yards
+
+sailmakersyard          28.5 in
+sailmakersounce         oz / sailmakersyard 36 inch
+
+silkmomme               momme / 25 yards 1.49 inch  # Traditional silk weight
+silkmm                  silkmomme        # But it is also defined as
+                                         # lb/100 yd 45 inch.  The two
+                                         # definitions are slightly different
+                                         # and neither one seems likely to be
+                                         # the true source definition.
+
+#
+# drug dosage
+#
+
+mcg                     microgram        # Frequently used for vitamins
+iudiptheria             62.8 microgram   # IU is for international unit
+iupenicillin            0.6 microgram
+iuinsulin               41.67 microgram
+drop                    1|20 ml          # The drop was an old "unit" that was
+                                         # replaced by the minim.  But I was
+                                         # told by a pharmacist that in his
+                                         # profession, the conversion of 20
+                                         # drops per ml is actually used.
+bloodunit               450 ml           # For whole blood.  For blood
+                                         # components, a blood unit is the
+                                         # quantity of the component found in a
+                                         # blood unit of whole blood.  The
+                                         # human body contains about 12 blood
+                                         # units of whole blood.
+
+#
+# misc medical measure
+#
+
+frenchcathetersize      1|3 mm           # measure used for the outer diameter
+                                         # of a catheter
+charriere               frenchcathetersize
+
+
+#
+# fixup units for times when prefix handling doesn't do the job
+#
+
+hectare                 hectoare
+megohm                  megaohm
+kilohm                  kiloohm
+microhm                 microohm
+megalerg                megaerg    # 'L' added to make it pronounceable [18].
+
+#
+# Money
+#
+# Note that US$ is the primitive unit so other currencies are
+# generally given in US$.
+#
+
+unitedstatesdollar      US$
+usdollar                US$
+$                       dollar
+mark                    germanymark
+#bolivar                 venezuelabolivar       # Not all databases are 
+#venezuelabolivarfuerte  1e-5 bolivar           #    supplying these
+#bolivarfuerte           1e-5 bolivar           # The currency was revalued 
+#oldbolivar              1|1000 bolivarfuerte   # twice
+peseta                  spainpeseta
+rand                    southafricarand
+escudo                  portugalescudo
+guilder                 netherlandsguilder
+hollandguilder          netherlandsguilder
+peso                    mexicopeso
+yen                     japanyen
+lira                    turkeylira
+rupee                   indiarupee
+drachma                 greecedrachma
+franc                   francefranc
+markka                  finlandmarkka
+britainpound            unitedkingdompound
+greatbritainpound       unitedkingdompound
+unitedkingdompound      ukpound
+poundsterling           britainpound
+yuan                    chinayuan
+
+# Unicode Currency Names
+
+!utf8
+icelandkróna            icelandkrona
+polandzłoty             polandzloty
+tongapa’anga            tongapa'anga
+#venezuelabolívar        venezuelabolivar
+vietnamđồng             vietnamdong
+mongoliatögrög          mongoliatugrik
+sãotomé&príncipedobra   saotome&principedobra
+!endutf8
+
+UKP                     GBP        # Not an ISO code, but looks like one, and
+                                   # sometimes used on usenet.
+
+!include currency.units
+
+# Money on the gold standard, used in the late 19th century and early
+# 20th century.
+
+olddollargold           23.22 grains goldprice  # Used until 1934
+newdollargold           96|7 grains goldprice   # After Jan 31, 1934
+dollargold              newdollargold
+poundgold               113 grains goldprice    # British pound
+
+# Precious metals
+
+goldounce               goldprice troyounce
+silverounce             silverprice troyounce
+platinumounce           platinumprice troyounce
+XAU                     goldounce
+XPT                     platinumounce
+XAG                     silverounce
+
+# Nominal masses of US coins.  Note that dimes, quarters and half dollars
+# have weight proportional to value.  Before 1965 it was $40 / kg.
+
+USpennyweight           2.5 grams         # Since 1982, 48 grains before
+USnickelweight          5 grams
+USdimeweight            US$ 0.10 / (20 US$ / lb)   # Since 1965
+USquarterweight         US$ 0.25 / (20 US$ / lb)   # Since 1965
+UShalfdollarweight      US$ 0.50 / (20 US$ / lb)   # Since 1971
+USdollarweight          8.1 grams         # Weight of Susan B. Anthony and
+                                          #   Sacagawea dollar coins
+
+# British currency
+
+quid                    britainpound        # Slang names
+fiver                   5 quid
+tenner                  10 quid
+monkey                  500 quid
+brgrand                 1000 quid
+bob                     shilling
+
+shilling                1|20 britainpound   # Before decimalisation, there
+oldpence                1|12 shilling       # were 20 shillings to a pound,
+farthing                1|4 oldpence        # each of twelve old pence
+guinea                  21 shilling         # Still used in horse racing
+crown                   5 shilling
+florin                  2 shilling
+groat                   4 oldpence
+tanner                  6 oldpence
+brpenny                 0.01 britainpound
+pence                   brpenny
+tuppence                2 pence
+tuppenny                tuppence
+ha'penny                halfbrpenny
+hapenny                 ha'penny
+oldpenny                oldpence
+oldtuppence             2 oldpence
+oldtuppenny             oldtuppence
+threepence              3 oldpence    # threepence never refers to new money
+threepenny              threepence
+oldthreepence           threepence
+oldthreepenny           threepence
+oldhalfpenny            halfoldpenny
+oldha'penny             oldhalfpenny
+oldhapenny              oldha'penny
+brpony                  25 britainpound
+
+# Canadian currency
+
+loony                   1 canadadollar    # This coin depicts a loon
+toony                   2 canadadollar
+
+# Cryptocurrency
+
+satoshi                 1e-8 bitcoin
+XBT                     bitcoin           # nonstandard code
+
+# Inflation.
+#
+# Currently US inflation as reported by the BLS CPI index is available.
+# The UScpi() table reports the USA consumer price index.  Note that 
+# if you specify a year like 2015, that refers to the CPI reported
+# for December of 2014 (which is released in mid January 2015),
+# so it refers to the point right at the start of the given year. 
+# Months are increments of 1|12 on the year, so the January 2015
+# release will be 2015+1|12 = 2015.08333.  
+
+!include cpi.units
+
+USCPI()            UScpi
+USCPI_now          UScpi_now
+USCPI_lastdate     UScpi_lastdate
+cpi()              UScpi
+CPI()              UScpi
+cpi_now            UScpi_now
+CPI_now            UScpi_now
+cpi_lastdate       UScpi_lastdate
+CPI_lastdate       UScpi_lastdate
+
+# These definitions hide the CPI index and directly convert US dollars
+# from a specified date to current dollars.  You can use this to convert
+# historical dollars to present value or to convert money in the past
+# between two dates.
+
+dollars_in()       USdollars_in
+US$in()            USdollars_in
+$in()              USdollars_in
+
+# This definition gives the dimensionless US inflation factor since the
+# specified date.
+
+inflation_since()  USinflation_since
+
+
+#
+# Units used for measuring volume of wood
+#
+
+cord                    4*4*8 ft^3   # 4 ft by 4 ft by 8 ft bundle of wood
+facecord                1|2 cord
+cordfoot                1|8 cord     # One foot long section of a cord
+cordfeet                cordfoot
+housecord               1|3 cord     # Used to sell firewood for residences,
+                                     #   often confusingly called a "cord"
+boardfoot               ft^2 inch    # Usually 1 inch thick wood
+boardfeet               boardfoot
+fbm                     boardfoot    # feet board measure
+stack                   4 yard^3     # British, used for firewood and coal [18]
+rick                    4 ft 8 ft 16 inches # Stack of firewood, supposedly
+                                     #   sometimes called a face cord, but this
+                                     #   value is equal to 1|3 cord.  Name
+                                     #   comes from an old Norse word for a
+                                     #   stack of wood.
+stere                   m^3
+timberfoot              ft^3         # Used for measuring solid blocks of wood
+standard                120 12 ft 11 in 1.5 in  # This is the St Petersburg or
+                                     #   Pittsburg standard.  Apparently the
+                                     #   term is short for "standard hundred"
+                                     #   which was meant to refer to 100 pieces
+                                     #   of wood (deals).  However, this
+                                     #   particular standard is equal to 120
+                                     #   deals which are 12 ft by 11 in by 1.5
+                                     #   inches (not the standard deal).
+hoppusfoot               (4/pi) ft^3 # Volume calculation suggested in 1736
+hoppusboardfoot      1|12 hoppusfoot #   forestry manual by Edward Hoppus, for
+hoppuston              50 hoppusfoot #   estimating the usable volume of a log.
+                                     #   It results from computing the volume
+                                     #   of a cylindrical log of length, L, and
+                                     #   girth (circumference), G, by V=L(G/4)^2.
+                                     #   The hoppus ton is apparently still in
+                                     #   use for shipments from Southeast Asia.
+
+# In Britain, the deal is apparently any piece of wood over 6 feet long, over
+# 7 wide and 2.5 inches thick.  The OED doesn't give a standard size.  A piece
+# of wood less than 7 inches wide is called a "batten".  This unit is now used
+# exclusively for fir and pine.
+
+deal              12 ft 11 in 2.5 in # The standard North American deal [OED]
+wholedeal        12 ft 11 in 1.25 in # If it's half as thick as the standard
+                                     #   deal it's called a "whole deal"!
+splitdeal         12 ft 11 in 5|8 in # And half again as thick is a split deal.
+
+
+# Used for shellac mixing rate
+
+poundcut            pound / gallon
+lbcut               poundcut
+
+#
+# Gas and Liquid flow units
+#
+
+FLUID_FLOW              VOLUME / TIME
+
+# Some obvious volumetric gas flow units (cu is short for cubic)
+
+cumec                   m^3/s
+cusec                   ft^3/s
+
+# Conventional abbreviations for fluid flow units
+
+gph                     gal/hr
+gpm                     gal/min
+mgd                     megagal/day
+brgph                   brgallon/hr
+brgpm                   brgallon/min
+brmgd                   mega brgallon/day
+usgph                   usgallon/hr
+usgpm                   usgallon/min
+usmgd                   mega usgallon/day
+cfs                     ft^3/s
+cfh                     ft^3/hour
+cfm                     ft^3/min
+lpm                     liter/min
+lfm                     ft/min     # Used to report air flow produced by fans.
+                                   # Multiply by cross sectional area to get a
+                                   # flow in cfm.
+
+pru                     mmHg / (ml/min)  # peripheral resistance unit, used in
+                                         # medicine to assess blood flow in
+                                         # the capillaries.
+
+# Miner's inch:  This is an old historic unit used in the Western  United
+# States.  It is generally defined as the rate of flow through a one square
+# inch hole at a specified depth such as 4 inches.  In the late 19th century,
+# volume of water was sometimes measured in the "24 hour inch".  Values for the
+# miner's inch were fixed by state statues.  (This information is from a web
+# site operated by the Nevada Division of Water Planning:  The Water Words
+# Dictionary at http://water.nv.gov/WaterPlanDictionary.aspx, specifically
+# http://water.nv.gov/programs/planning/dictionary/wwords-M.pdf.  All
+# but minersinchNV are s.v.  Miner's Inch [Western United States])
+
+minersinchAZ            1.5 ft^3/min
+minersinchCA            1.5 ft^3/min
+minersinchMT            1.5 ft^3/min
+minersinchNV            1.5 ft^3/min
+minersinchOR            1.5 ft^3/min
+minersinchID            1.2 ft^3/min
+minersinchKS            1.2 ft^3/min
+minersinchNE            1.2 ft^3/min
+minersinchNM            1.2 ft^3/min
+minersinchND            1.2 ft^3/min
+minersinchSD            1.2 ft^3/min
+minersinchUT            1.2 ft^3/min
+minersinchCO            1 ft^3/sec / 38.4  # 38.4 miner's inches = 1 ft^3/sec
+minersinchBC            1.68 ft^3/min      # British Columbia
+
+# Oceanographic flow
+
+sverdrup                1e6 m^3 / sec   # Used to express flow of ocean
+                                        # currents.  Named after Norwegian
+                                        # oceanographer H. Sverdrup.
+
+# In vacuum science and some other applications, gas flow is measured
+# as the product of volumetric flow and pressure.  This is useful
+# because it makes it easy to compare with the flow at standard
+# pressure (one atmosphere).  It also directly relates to the number
+# of gas molecules per unit time, and hence to the mass flow if the
+# molecular mass is known.
+
+GAS_FLOW                PRESSURE FLUID_FLOW
+
+sccm                    atm cc/min     # 's' is for "standard" to indicate
+sccs                    atm cc/sec     # flow at standard pressure
+scfh                    atm ft^3/hour  #
+scfm                    atm ft^3/min
+slpm                    atm liter/min
+slph                    atm liter/hour
+lusec                   liter micron Hg / s  # Used in vacuum science
+
+# US Standard Atmosphere (1976)
+# Atmospheric temperature and pressure vs. geometric height above sea level
+# This definition covers only the troposphere (the lowest atmospheric
+# layer, up to 11 km), and assumes the layer is polytropic.
+# A polytropic process is one for which PV^k = const, where P is the
+# pressure, V is the volume, and k is the polytropic exponent.  The
+# polytropic index is n = 1 / (k - 1).  As noted in the Wikipedia article
+# https://en.wikipedia.org/wiki/Polytropic_process, some authors reverse
+# the definitions of "exponent" and "index."  The functions below assume
+# the following parameters:
+
+# temperature lapse rate, -dT/dz, in troposphere
+
+lapserate       6.5 K/km        # US Std Atm (1976)
+
+# air molecular weight, including constituent mol wt, given
+# in Table 3, p. 3; CH4 (16.04303) and N2O (44.0128) from
+# Table 15, p. 33. Values for molecular weights are slightly
+# different from current values, so the original numerical
+# values are retained.
+
+air_1976        78.084   %    28.0134 \
+              + 20.9476  %    31.9988 \
+              + 9340     ppm  39.948 \
+              +  314     ppm  44.00995 \
+              +   18.18  ppm  20.183 \
+              +    5.24  ppm   4.0026 \
+              +    1.5   ppm  16.04303 \
+              +    1.14  ppm  83.80 \
+              +    0.5   ppm   2.01594 \
+              +    0.27  ppm  44.0128 \
+              +    0.087 ppm 131.30
+
+# from US Standard Atmosphere, 1962, Table I.2.7, p. 9
+
+air_1962        78.084     %  28.0134 \
+              + 20.9476    %  31.9988 \
+              + 9340     ppm  39.948 \
+              +  314     ppm  44.00995 \
+              +  18.18   ppm  20.183 \
+              +   5.24   ppm   4.0026 \
+              +   2      ppm  16.04303 \
+              +   1.14   ppm  83.80 \
+              +   0.5    ppm   2.01594 \
+              +   0.5    ppm  44.0128 \
+              +   0.087  ppm 131.30
+
+# Average molecular weight of air
+#
+# Concentration of greenhouse gases CO2, CH4, and N20 are from
+# https://gml.noaa.gov/ccgg/trends/global.html (accessed 2023-04-10);
+# others are from NASA Earth Fact Sheet
+# https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html (accessed 2023-04-10)
+# Numbers do not add up to exactly 100% due to roundoff and uncertainty.  Water
+# is highly variable, typically makes up about 1%
+
+air_2023        78.08% nitrogen 2 \
+              + 20.95% oxygen 2 \
+              + 9340 ppm argon \
+              +  419 ppm (carbon + oxygen 2) \
+              +   18.18 ppm neon \
+              +    5.24 ppm helium \
+              +    1.92 ppm (carbon + 4 hydrogen) \
+              +    1.14 ppm krypton \
+              +    0.55 ppm hydrogen 2 \
+              +    0.34 ppm (nitrogen 2 + oxygen)
+
+# from NASA Earth Fact Sheet (accessed 28 August 2015)
+# http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html
+
+air_2015        78.08% nitrogen 2 \
+              + 20.95% oxygen 2 \
+              + 9340 ppm argon \
+              +  400 ppm (carbon + oxygen 2) \
+              +   18.18 ppm neon \
+              +    5.24 ppm helium \
+              +    1.7  ppm (carbon + 4 hydrogen) \
+              +    1.14 ppm krypton \
+              +    0.55 ppm hydrogen 2
+
+air             air_2023
+
+# universal gas constant
+R_1976          8.31432e3 N m/(kmol K)
+
+# polytropic index n
+polyndx_1976    air_1976 (kg/kmol) gravity/(R_1976 lapserate) - 1
+
+# If desired, redefine using current values for air mol wt and R
+
+polyndx         polyndx_1976
+# polyndx       air (kg/kmol) gravity/(R lapserate) - 1
+
+# for comparison with various references
+
+polyexpnt       (polyndx + 1) / polyndx
+
+# The model assumes the following reference values:
+# sea-level temperature and pressure
+
+stdatmT0        288.15 K
+stdatmP0        atm
+
+# "effective radius" for relation of geometric to geopotential height,
+# at a latitude at which g = 9.80665 m/s (approximately 45.543 deg); no
+# relation to actual radius
+
+earthradUSAtm   6356766 m
+
+# Temperature vs. geopotential height h
+# Assumes 15 degC at sea level
+# Based on approx 45 deg latitude
+# Lower limits of domain and upper limits of range are those of the
+# tables in US Standard Atmosphere (NASA 1976)
+
+stdatmTH(h) units=[m;K] domain=[-5000,11e3] range=[217,321] \
+    stdatmT0+(-lapserate h) ; (stdatmT0+(-stdatmTH))/lapserate
+
+# Temperature vs. geometric height z; based on approx 45 deg latitude
+stdatmT(z) units=[m;K] domain=[-5000,11e3] range=[217,321] \
+    stdatmTH(geop_ht(z)) ; ~geop_ht(~stdatmTH(stdatmT))
+
+# Pressure vs. geopotential height h
+# Assumes 15 degC and 101325 Pa at sea level
+# Based on approx 45 deg latitude
+# Lower limits of domain and upper limits of range are those of the
+# tables in US Standard Atmosphere (NASA 1976)
+
+stdatmPH(h) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \
+    atm (1 - (lapserate/stdatmT0) h)^(polyndx + 1) ; \
+    (stdatmT0/lapserate) (1+(-(stdatmPH/stdatmP0)^(1/(polyndx + 1))))
+
+# Pressure vs. geometric height z; based on approx 45 deg latitude
+stdatmP(z) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \
+   stdatmPH(geop_ht(z)); ~geop_ht(~stdatmPH(stdatmP))
+
+# Geopotential height from geometric height
+# Based on approx 45 deg latitude
+# Lower limits of domain and range are somewhat arbitrary; they
+# correspond to the limits in the US Std Atm tables
+
+geop_ht(z) units=[m;m] domain=[-5000,) range=[-5004,) \
+    (earthradUSAtm z) / (earthradUSAtm + z) ; \
+    (earthradUSAtm geop_ht) / (earthradUSAtm + (-geop_ht))
+
+# The standard value for the sea-level acceleration due to gravity is
+# 9.80665 m/s^2, but the actual value varies with latitude (Harrison 1949)
+# R_eff = 2 g_phi / denom
+# g_phi = 978.0356e-2 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2)
+#   or
+# g_phi = 980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2)
+# denom = 3.085462e-6+2.27e-9 cos(2 lat)+(-2e-12) cos(4 lat) (minutes?)
+# There is no inverse function; the standard value applies at a latitude
+# of about 45.543 deg
+
+g_phi(lat) units=[deg;m/s2] domain=[0,90] noerror  \
+    980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2) m/s2
+
+# effective Earth radius for relation of geometric height to
+# geopotential height, as function of latitude (Harrison 1949)
+
+earthradius_eff(lat) units=[deg;m] domain=[0,90] noerror \
+    m 2 9.780356 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2) / \
+    (3.085462e-6 + 2.27e-9 cos(2 lat) + (-2e-12) cos(4 lat))
+
+# References
+# Harrison, L.P. 1949.  Relation Between Geopotential and Geometric
+#   Height.  In Smithsonian Meteorological Tables. List, Robert J., ed.
+#   6th ed., 4th reprint, 1968.  Washington, DC: Smithsonian Institution.
+# NASA.  US National Aeronautics and Space Administration. 1976.
+#   US Standard Atmosphere 1976.  Washington, DC: US Government Printing Office.
+
+# Gauge pressure functions
+#
+# Gauge pressure is measured relative to atmospheric pressure.  In the English
+# system, where pressure is often given in pounds per square inch, gauge
+# pressure is often indicated by 'psig' to distinguish it from absolute
+# pressure, often indicated by 'psia'.  At the standard atmospheric pressure
+# of 14.696 psia, a gauge pressure of 0 psig is an absolute pressure of 14.696
+# psia; an automobile tire inflated to 31 psig has an absolute pressure of
+# 45.696 psia.
+#
+# With gaugepressure(), the units must be specified (e.g., gaugepressure(1.5
+# bar)); with psig(), the units are taken as psi, so the example above of tire
+# pressure could be given as psig(31).
+#
+# If the normal elevation is significantly different from sea level, change
+# Patm appropriately, and adjust the lower domain limit on the gaugepressure
+# definition.
+
+Patm    atm
+
+gaugepressure(x) units=[Pa;Pa] domain=[-101325,) range=[0,) \
+                x + Patm ; gaugepressure+(-Patm)
+
+psig(x) units=[1;Pa] domain=[-14.6959487755135,) range=[0,) \
+    gaugepressure(x psi) ; ~gaugepressure(psig) / psi
+
+
+# Pressure for underwater diving
+
+seawater             0.1 bar / meter
+msw                  meter seawater
+fsw                  foot seawater
+
+#
+# Wire Gauge
+#
+# This area is a nightmare with huge charts of wire gauge diameters
+# that usually have no clear origin.  There are at least 5 competing wire gauge
+# systems to add to the confusion.  The use of wire gauge is related to the
+# manufacturing method: a metal rod is heated and drawn through a hole.  The
+# size change can't be too big.  To get smaller wires, the process is repeated
+# with a series of smaller holes.  Generally larger gauges mean smaller wires.
+# The gauges often have values such as "00" and "000" which are larger sizes
+# than simply "0" gauge.  In the tables that appear below, these gauges must be
+# specified as negative numbers (e.g. "00" is -1, "000" is -2, etc).
+# Alternatively, you can use the following units:
+#
+
+g00                      (-1)
+g000                     (-2)
+g0000                    (-3)
+g00000                   (-4)
+g000000                  (-5)
+g0000000                 (-6)
+
+# American Wire Gauge (AWG) or Brown & Sharpe Gauge appears to be the most
+# important gauge. ASTM B-258 specifies that this gauge is based on geometric
+# interpolation between gauge 0000, which is 0.46 inches exactly, and gauge 36
+# which is 0.005 inches exactly.  Therefore, the diameter in inches of a wire
+# is given by the formula 1|200 92^((36-g)/39).  Note that 92^(1/39) is close
+# to 2^(1/6), so diameter is approximately halved for every 6 gauges.  For the
+# repeated zero values, use negative numbers in the formula.  The same document
+# also specifies rounding rules which seem to be ignored by makers of tables.
+# Gauges up to 44 are to be specified with up to 4 significant figures, but no
+# closer than 0.0001 inch.  Gauges from 44 to 56 are to be rounded to the
+# nearest 0.00001 inch.
+#
+# In addition to being used to measure wire thickness, this gauge is used to
+# measure the thickness of sheets of aluminum, copper, and most metals other
+# than steel, iron and zinc.
+
+wiregauge(g) units=[1;m] range=(0,) \
+             1|200 92^((36+(-g))/39) in; 36+(-39)ln(200 wiregauge/in)/ln(92)
+awg()        wiregauge
+
+# Next we have the SWG, the Imperial or British Standard Wire Gauge.  This one
+# is piecewise linear.  It was used for aluminum sheets but also shows up for
+# wire used in jewelry.  
+
+brwiregauge[in]  \
+       -6 0.5    \
+       -5 0.464  \
+       -3 0.4    \
+       -2 0.372  \
+        3 0.252  \
+        6 0.192  \
+       10 0.128  \
+       14 0.08   \
+       19 0.04   \
+       23 0.024  \
+       26 0.018  \
+       28 0.0148 \
+       30 0.0124 \
+       39 0.0052 \
+       49 0.0012 \
+       50 0.001
+
+swg()        brwiregauge  
+
+# The following is from the Appendix to ASTM B 258
+#
+#    For example, in U.S. gage, the standard for sheet metal is based on the
+#    weight of the metal, not on the thickness. 16-gage is listed as
+#    approximately .0625 inch thick and 40 ounces per square foot (the original
+#    standard was based on wrought iron at .2778 pounds per cubic inch; steel
+#    has almost entirely superseded wrought iron for sheet use, at .2833 pounds
+#    per cubic inch). Smaller numbers refer to greater thickness. There is no
+#    formula for converting gage to thickness or weight.
+#
+# It's rather unclear from the passage above whether the plate gauge values are
+# therefore wrong if steel is being used.  Reference [15] states that steel is
+# in fact measured using this gauge (under the name Manufacturers' Standard
+# Gauge) with a density of 501.84 lb/ft3 = 0.2904 lb/in3 used for steel.
+# But this doesn't seem to be the correct density of steel (.2833 lb/in3 is
+# closer).
+#
+# This gauge was established in 1893 for purposes of taxation.
+
+# Old plate gauge for iron
+
+plategauge[(oz/ft^2)/(480*lb/ft^3)] \
+      -5 300   \
+       1 180   \
+      14  50   \
+      16  40   \
+      17  36   \
+      20  24   \
+      26  12   \
+      31   7   \
+      36   4.5 \
+      38   4
+
+# Manufacturers Standard Gage
+
+stdgauge[(oz/ft^2)/(501.84*lb/ft^3)] \
+      -5 300   \
+       1 180   \
+      14  50   \
+      16  40   \
+      17  36   \
+      20  24   \
+      26  12   \
+      31   7   \
+      36   4.5 \
+      38   4
+
+# A special gauge is used for zinc sheet metal.  Notice that larger gauges
+# indicate thicker sheets.
+
+zincgauge[in]    \
+        1 0.002  \
+       10 0.02   \
+       15 0.04   \
+       19 0.06   \
+       23 0.1    \
+       24 0.125  \
+       27 0.5    \
+       28 1
+
+#
+# Imperial drill bit sizes are reported in inches or in a numerical or
+# letter gauge.
+#
+
+drillgauge[in] \
+       1  0.2280 \
+       2  0.2210 \
+       3  0.2130 \
+       4  0.2090 \
+       5  0.2055 \
+       6  0.2040 \
+       7  0.2010 \
+       8  0.1990 \
+       9  0.1960 \
+      10  0.1935 \
+      11  0.1910 \
+      12  0.1890 \
+      13  0.1850 \
+      14  0.1820 \
+      15  0.1800 \
+      16  0.1770 \
+      17  0.1730 \
+      18  0.1695 \
+      19  0.1660 \
+      20  0.1610 \
+      22  0.1570 \
+      23  0.1540 \
+      24  0.1520 \
+      25  0.1495 \
+      26  0.1470 \
+      27  0.1440 \
+      28  0.1405 \
+      29  0.1360 \
+      30  0.1285 \
+      31  0.1200 \
+      32  0.1160 \
+      33  0.1130 \
+      34  0.1110 \
+      35  0.1100 \
+      36  0.1065 \
+      38  0.1015 \
+      39  0.0995 \
+      40  0.0980 \
+      41  0.0960 \
+      42  0.0935 \
+      43  0.0890 \
+      44  0.0860 \
+      45  0.0820 \
+      46  0.0810 \
+      48  0.0760 \
+      51  0.0670 \
+      52  0.0635 \
+      53  0.0595 \
+      54  0.0550 \
+      55  0.0520 \
+      56  0.0465 \
+      57  0.0430 \
+      65  0.0350 \
+      66  0.0330 \
+      68  0.0310 \
+      69  0.0292 \
+      70  0.0280 \
+      71  0.0260 \
+      73  0.0240 \
+      74  0.0225 \
+      75  0.0210 \
+      76  0.0200 \
+      78  0.0160 \
+      79  0.0145 \
+      80  0.0135 \
+      88  0.0095 \
+      104 0.0031 
+
+drillA    0.234 in
+drillB    0.238 in
+drillC    0.242 in
+drillD    0.246 in
+drillE    0.250 in
+drillF    0.257 in
+drillG    0.261 in
+drillH    0.266 in
+drillI    0.272 in
+drillJ    0.277 in
+drillK    0.281 in
+drillL    0.290 in
+drillM    0.295 in
+drillN    0.302 in
+drillO    0.316 in
+drillP    0.323 in
+drillQ    0.332 in
+drillR    0.339 in
+drillS    0.348 in
+drillT    0.358 in
+drillU    0.368 in
+drillV    0.377 in
+drillW    0.386 in
+drillX    0.397 in
+drillY    0.404 in
+drillZ    0.413 in
+
+#
+# Screw sizes
+#
+# In the USA, screw diameters for both wood screws and machine screws
+# are reported using a gauge number.  Metric machine screws are
+# reported as Mxx where xx is the diameter in mm.
+#
+
+screwgauge(g) units=[1;m] range=[0,) \
+              (.06 + .013 g) in ; (screwgauge/in + (-.06)) / .013
+
+#
+# Abrasive grit size
+#
+# Standards governing abrasive grit sizes are complicated, specifying
+# fractions of particles that are passed or retained by different mesh
+# sizes.  As a result, it is not possible to make precise comparisons
+# of different grit standards.  The tables below allow the
+# determination of rough equivlants by using median particle size.
+#
+# Standards in the USA are determined by the Unified Abrasives
+# Manufacturers' Association (UAMA), which resulted from the merger of
+# several previous organizations.  One of the old organizations was
+# CAMI (Coated Abrasives Manufacturers' Institute).
+#
+# UAMA has a web page with plots showing abrasive particle ranges for
+# various different grits and comparisons between standards.
+#
+# https://uama.org/abrasives-101/
+#
+# Abrasives are grouped into "bonded" abrasives for use with grinding
+# wheels and "coated" abrasives for sandpapers and abrasive films.
+# The industry uses different grit standards for these two
+# categories.
+#
+# Another division is between "macrogrits", grits below 240 and
+# "microgrits", which are above 240.  Standards differ, as do methods
+# for determining particle size.  In the USA, ANSI B74.12 is the
+# standard governing macrogrits.  ANSI B74.10 covers bonded microgrit
+# abrasives, and ANSI B74.18 covers coated microgrit abrasives.  It
+# appears that the coated standard is identical to the bonded standard
+# for grits up through 600 but then diverges significantly.
+#
+# European grit sizes are determined by the Federation of European
+# Producers of Abrasives.  http://www.fepa-abrasives.org
+#
+# They give two standards, the "F" grit for bonded abrasives and the
+# "P" grit for coated abrasives.  This data is taken directly from
+# their web page.
+
+# FEPA P grit for coated abrasives is commonly seen on sandpaper in
+# the USA where the paper will be marked P600, for example.  FEPA P
+# grits are said to be more tightly constrained than comparable ANSI
+# grits so that the particles are more uniform in size and hence give
+# a better finish.
+
+grit_P[micron] \
+        12 1815 \
+        16 1324 \
+        20 1000 \
+        24 764 \
+        30 642 \
+        36 538 \
+        40 425 \
+        50 336 \
+        60 269 \
+        80 201 \
+        100 162 \
+        120 125 \
+        150 100 \
+        180 82 \
+        220 68 \
+        240 58.5 \
+        280 52.2 \
+        320 46.2 \
+        360 40.5 \
+        400 35 \
+        500 30.2 \
+        600 25.8 \
+        800 21.8 \
+        1000 18.3 \
+        1200 15.3 \
+        1500 12.6 \
+        2000 10.3 \
+        2500 8.4
+
+# The F grit is the European standard for bonded abrasives such as
+# grinding wheels
+
+grit_F[micron] \
+        4 4890 \
+        5 4125 \
+        6 3460 \
+        7 2900 \
+        8 2460 \
+        10 2085 \
+        12 1765 \
+        14 1470 \
+        16 1230 \
+        20 1040 \
+        22 885 \
+        24 745 \
+        30 625 \
+        36 525 \
+        40 438 \
+        46 370 \
+        54 310 \
+        60 260 \
+        70 218 \
+        80 185 \
+        90 154 \
+        100 129 \
+        120 109 \
+        150 82 \
+        180 69 \
+        220 58 \
+        230 53 \
+        240 44.5 \
+        280 36.5 \
+        320 29.2 \
+        360 22.8 \
+        400 17.3 \
+        500 12.8 \
+        600 9.3 \
+        800 6.5 \
+        1000 4.5 \
+        1200 3 \
+        1500 2.0 \
+        2000 1.2
+
+# According to the UAMA web page, the ANSI bonded and ANSI coated standards
+# are identical to FEPA F in the macrogrit range (under 240 grit), so these
+# values are taken from the FEPA F table.  The values for 240 and above are
+# from the UAMA web site and represent the average of the "d50" range
+# endpoints listed there.
+
+ansibonded[micron] \
+    4 4890 \
+    5 4125 \
+    6 3460 \
+    7 2900 \
+    8 2460 \
+    10 2085 \
+    12 1765 \
+    14 1470 \
+    16 1230 \
+    20 1040 \
+    22 885 \
+    24 745 \
+    30 625 \
+    36 525 \
+    40 438 \
+    46 370 \
+    54 310 \
+    60 260 \
+    70 218 \
+    80 185 \
+    90 154 \
+    100 129 \
+    120 109 \
+    150 82 \
+    180 69 \
+    220 58 \
+    240 50 \
+    280 39.5 \
+    320 29.5 \
+    360 23 \
+    400 18.25 \
+    500 13.9 \
+    600 10.55 \
+    800 7.65 \
+    1000 5.8 \
+    1200 3.8
+
+grit_ansibonded() ansibonded
+
+# Like the bonded grit, the coated macrogrits below 240 are taken from the
+# FEPA F table.  Data above this is from the UAMA site.  Note that the coated
+# and bonded standards are evidently the same from 240 up to 600 grit, but
+# starting at 800 grit, the coated standard diverges.  The data from UAMA show
+# that 800 grit coated has an average size slightly larger than the average
+# size of 600 grit coated/bonded.  However, the 800 grit has a significantly
+# smaller particle size variation.
+#
+# Because of this non-monotonicity from 600 grit to 800 grit this definition
+# produces a warning about the lack of a unique inverse.
+
+ansicoated[micron] noerror \
+    4 4890 \
+    5 4125 \
+    6 3460 \
+    7 2900 \
+    8 2460 \
+    10 2085 \
+    12 1765 \
+    14 1470 \
+    16 1230 \
+    20 1040 \
+    22 885 \
+    24 745 \
+    30 625 \
+    36 525 \
+    40 438 \
+    46 370 \
+    54 310 \
+    60 260 \
+    70 218 \
+    80 185 \
+    90 154 \
+    100 129 \
+    120 109 \
+    150 82 \
+    180 69 \
+    220 58 \
+    240 50 \
+    280 39.5 \
+    320 29.5 \
+    360 23 \
+    400 18.25 \
+    500 13.9 \
+    600 10.55 \
+    800 11.5 \
+    1000 9.5 \
+    2000 7.2 \
+    2500 5.5 \
+    3000 4 \
+    4000 3 \
+    6000 2 \
+    8000 1.2
+
+grit_ansicoated()  ansicoated
+
+
+#
+# Is this correct?  This is the JIS Japanese standard used on waterstones
+#
+jisgrit[micron] \
+     150 75 \
+     180 63 \
+     220 53 \
+     280 48 \
+     320 40 \
+     360 35 \
+     400 30 \
+     600 20 \
+     700 17 \
+     800 14 \
+     1000 11.5 \
+     1200 9.5 \
+     1500 8 \
+     2000 6.7 \
+     2500 5.5 \
+     3000 4 \
+     4000 3 \
+     6000 2 \
+     8000 1.2
+
+# The "Finishing Scale" marked with an A (e.g. A75).  This information
+# is from the web page of the sand paper manufacturer Klingspor
+# https://www.klingspor.com/ctemplate1.aspx?page=default/html/gritGradingSystems_en-US.html
+#
+# I have no information about what this scale is used for.
+
+grit_A[micron]\
+     16 15.3 \
+     25 21.8 \
+     30 23.6 \
+     35 25.75 \
+     45 35 \
+     60 46.2 \
+     65 53.5 \
+     75 58.5 \
+     90 65 \
+     110 78 \
+     130 93 \
+     160 127 \
+     200 156
+#
+# Grits for DMT brand diamond sharpening stones from
+# https://www.dmtsharp.com/resources/dmt-catalog-product-information.html
+# "DMT Diamond Grits" PDF download
+
+dmtxxcoarse  120 micron    # 120 mesh
+dmtsilver    dmtxxcoarse
+dmtxx        dmtxxcoarse
+dmtxcoarse   60 micron     # 220 mesh
+dmtx         dmtxcoarse
+dmtblack     dmtxcoarse
+dmtcoarse    45 micron     # 325 mesh
+dmtc         dmtcoarse
+dmtblue      dmtcoarse
+dmtfine      25 micron     # 600 mesh
+dmtred       dmtfine
+dmtf         dmtfine
+dmtefine     9 micron      # 1200 mesh
+dmte         dmtefine
+dmtgreen     dmtefine
+dmtceramic   7 micron      # 2200 mesh
+dmtcer       dmtceramic
+dmtwhite     dmtceramic
+dmteefine    3 micron      # 8000 mesh
+dmttan       dmteefine
+dmtee        dmteefine
+
+#
+# The following values come from a page in the Norton Stones catalog,
+# available at their web page, http://www.nortonstones.com.
+#
+
+hardtranslucentarkansas  6 micron     # Natural novaculite (silicon quartz)
+softarkansas             22 micron    #   stones
+
+extrafineindia           22 micron    # India stones are Norton's manufactured
+fineindia                35 micron    #   aluminum oxide product
+mediumindia              53.5 micron
+coarseindia              97 micron
+
+finecrystolon            45 micron    # Crystolon stones are Norton's
+mediumcrystalon          78 micron    #   manufactured silicon carbide product
+coarsecrystalon          127 micron
+
+# The following are not from the Norton catalog
+hardblackarkansas        6 micron
+hardwhitearkansas        11 micron
+washita                  35 micron
+
+#
+# Mesh systems for measuring particle sizes by sifting through a wire
+# mesh or sieve
+#
+
+# The Tyler system and US Sieve system are based on four steps for
+# each factor of 2 change in the size, so each size is 2^1|4 different
+# from the adjacent sizes.  Unfortunately, the mesh numbers are
+# arbitrary, so the sizes cannot be expressed with a functional form.
+# Various references round the values differently.  The mesh numbers
+# are supposed to correspond to the number of holes per inch, but this
+# correspondence is only approximate because it doesn't include the
+# wire size of the mesh.
+
+# The Tyler Mesh system was apparently introduced by the WS Tyler
+# company, but it appears that they no longer use it.  They follow the
+# ASTM E11 standard.
+
+meshtyler[micron] \
+          2.5 8000 \
+          3   6727 \
+          3.5 5657 \
+          4   4757 \
+          5   4000 \
+          6   3364 \
+          7   2828 \
+          8   2378 \
+          9   2000 \
+         10   1682 \
+         12   1414 \
+         14   1189 \
+         16   1000 \
+         20    841 \
+         24    707 \
+         28    595 \
+         32    500 \
+         35    420 \
+         42    354 \
+         48    297 \
+         60    250 \
+         65    210 \
+         80    177 \
+        100    149 \
+        115    125 \
+        150    105 \
+        170     88 \
+        200     74 \
+        250     63 \
+        270     53 \
+        325     44 \
+        400     37 
+
+# US Sieve size, ASTM E11
+#
+# The WS Tyler company prints the list from ASTM E11 in
+# A Calculator for ASTM E11 Standard Sieve Designations
+# https://blog.wstyler.com/particle-analysis/astm-e11-standard-designations
+
+sieve[micron] \
+          3.5   5600 \
+          4     4750 \
+          5     4000 \
+          6     3350 \
+          7     2800 \
+          8     2360 \
+         10     2000 \
+         12     1700 \
+         14     1400 \
+         16     1180 \
+         18     1000 \
+         20      850 \
+         25      710 \
+         30      600 \
+         35      500 \
+         40      425 \
+         45      355 \
+         50      300 \
+         60      250 \
+         70      212 \
+         80      180 \
+        100      150 \
+        120      125 \
+        140      106 \
+        170       90 \
+        200       75 \
+        230       63 \
+        270       53 \
+        325       45 \
+        400       38 \
+        450       32 \
+        500       25 \
+        625       20   # These last two values are not in the standard series
+                       # but were included in the ASTM standard because they
+meshUS()  sieve        # were in common usage.                               
+
+# British Mesh size, BS 410: 1986
+# This system appears to correspond to the Tyler and US system, but
+# with different mesh numbers.
+#
+# http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf
+# 
+
+meshbritish[micron] \
+          3    5657 \
+          3.5  4757 \
+          4    4000 \
+          5    3364 \
+          6    2828 \
+          7    2378 \
+          8    2000 \
+         10    1682 \
+         12    1414 \
+         14    1189 \
+         16    1000 \
+         18     841 \
+         22     707 \
+         25     595 \
+         30     500 \
+         36     420 \
+         44     354 \
+         52     297 \
+         60     250 \
+         72     210 \
+         85     177 \
+        100     149 \
+        120     125 \
+        150     105 \
+        170      88 \
+        200      74 \
+        240      63 \
+        300      53 \
+        350      44 \
+        400      37  
+
+# French system, AFNOR NFX11-501: 1970
+# The system appears to be based on size doubling every 3 mesh
+# numbers, though the values have been aggressively rounded.
+# It's not clear if the unrounded values would be considered
+# incorrect, so this is given as a table rather than a function.
+# Functional form:
+#    meshtamis(mesh) units=[1;m] 5000 2^(1|3 (mesh-38)) micron
+#
+# http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf
+
+meshtamis[micron] \
+        17   40 \
+        18   50 \
+        19   63 \
+        20   80 \
+        21  100 \
+        22  125 \
+        23  160 \
+        24  200 \
+        25  250 \
+        26  315 \
+        27  400 \
+        28  500 \
+        29  630 \
+        30  800 \
+        31 1000 \
+        32 1250 \
+        33 1600 \
+        34 2000 \
+        35 2500 \
+        36 3150 \
+        37 4000 \
+        38 5000 
+
+#
+# Ring size. All ring sizes are given as the circumference of the ring.
+#
+
+# USA ring sizes.  Several slightly different definitions seem to be in
+# circulation.  According to [15], the interior diameter of size n ring in
+# inches is 0.32 n + 0.458 for n ranging from 3 to 13.5 by steps of 0.5.  The
+# size 2 ring is inconsistently 0.538in and no 2.5 size is listed.
+#
+# However, other sources list 0.455 + 0.0326 n and 0.4525 + 0.0324 n as the
+# diameter and list no special case for size 2.  (Or alternatively they are
+# 1.43 + .102 n and 1.4216+.1018 n for measuring circumference in inches.)  One
+# reference claimed that the original system was that each size was 1|10 inch
+# circumference, but that source doesn't have an explanation for the modern
+# system which is somewhat different.
+
+ringsize(n) units=[1;in] domain=[2,) range=[1.6252,) \
+            (1.4216+.1018 n) in ; (ringsize/in + (-1.4216))/.1018
+
+# Old practice in the UK measured rings using the "Wheatsheaf gauge" with sizes
+# specified alphabetically and based on the ring inside diameter in steps of
+# 1|64 inch.  This system was replaced in 1987 by British Standard 6820 which
+# specifies sizes based on circumference.  Each size is 1.25 mm different from
+# the preceding size.  The baseline is size C which is 40 mm circumference.
+# The new sizes are close to the old ones.  Sometimes it's necessary to go
+# beyond size Z to Z+1, Z+2, etc.
+
+sizeAring               37.50 mm
+sizeBring               38.75 mm
+sizeCring               40.00 mm
+sizeDring               41.25 mm
+sizeEring               42.50 mm
+sizeFring               43.75 mm
+sizeGring               45.00 mm
+sizeHring               46.25 mm
+sizeIring               47.50 mm
+sizeJring               48.75 mm
+sizeKring               50.00 mm
+sizeLring               51.25 mm
+sizeMring               52.50 mm
+sizeNring               53.75 mm
+sizeOring               55.00 mm
+sizePring               56.25 mm
+sizeQring               57.50 mm
+sizeRring               58.75 mm
+sizeSring               60.00 mm
+sizeTring               61.25 mm
+sizeUring               62.50 mm
+sizeVring               63.75 mm
+sizeWring               65.00 mm
+sizeXring               66.25 mm
+sizeYring               67.50 mm
+sizeZring               68.75 mm
+
+# Japanese sizes start with size 1 at a 13mm inside diameter and each size is
+# 1|3 mm larger in diameter than the previous one.  They are multiplied by pi
+# to give circumference.
+
+jpringsize(n)  units=[1;mm] domain=[1,) range=[0.040840704,) \
+               (38|3 + n/3) pi mm ; 3 jpringsize/ pi mm + (-38)
+
+# The European ring sizes are the length of the circumference in mm minus 40.
+
+euringsize(n)  units=[1;mm] (n+40) mm ; euringsize/mm + (-40)
+
+#
+# Abbreviations
+#
+
+mph                     mile/hr
+brmpg                   mile/brgallon
+usmpg                   mile/usgallon
+mpg                     mile/gal
+kph                     km/hr
+fL                      footlambert
+fpm                     ft/min
+fps                     ft/s
+rpm                     rev/min
+rps                     rev/sec
+mi                      mile
+smi                     mile
+nmi                     nauticalmile
+mbh                     1e3 btu/hour
+mcm                     1e3 circularmil
+ipy                     inch/year    # used for corrosion rates
+ccf                     100 ft^3     # used for selling water [18]
+Mcf                     1000 ft^3    # not million cubic feet [18]
+kp                      kilopond
+kpm                     kp meter
+Wh                      W hour
+hph                     hp hour
+plf                     lb / foot    # pounds per linear foot
+
+#
+# Compatibility units with Unix version
+#
+
+pa                      Pa
+ev                      eV
+hg                      Hg
+oe                      Oe
+mh                      mH
+rd                      rod
+pf                      pF
+gr                      grain
+nt                      N
+hz                      Hz
+hd                      hogshead
+dry                     drygallon/gallon
+nmile                   nauticalmile
+beV                     GeV
+bev                     beV
+coul                    C
+
+#
+# Radioactivity units
+#
+event !dimensionless
+becquerel    event           /s           # Activity of radioactive source
+Bq                      becquerel    #
+curie                   3.7e10 Bq    # Defined in 1910 as the radioactivity
+Ci                      curie        # emitted by the amount of radon that is
+                                     # in equilibrium with 1 gram of radium.
+rutherford              1e6 Bq       #
+
+RADIATION_DOSE          gray
+gray                    J/kg         # Absorbed dose of radiation
+Gy                      gray         #
+rad                     1e-2 Gy      # From Radiation Absorbed Dose
+rep                     8.38 mGy     # Roentgen Equivalent Physical, the amount
+                                     #   of radiation which , absorbed in the
+                                     #   body, would liberate the same amount
+                                     #   of energy as 1 roentgen of X rays
+                                     #   would, or 97 ergs.
+
+sievert                 J/kg         # Dose equivalent:  dosage that has the
+Sv                      sievert      #   same effect on human tissues as 200
+rem                     1e-2 Sv      #   keV X-rays.  Different types of
+                                     #   radiation are weighted by the
+                                     #   Relative Biological Effectiveness
+                                     #   (RBE).
+                                     #
+                                     #      Radiation type       RBE
+                                     #       X-ray, gamma ray     1
+                                     #       beta rays, > 1 MeV   1
+                                     #       beta rays, < 1 MeV  1.08
+                                     #       neutrons, < 1 MeV   4-5
+                                     #       neutrons, 1-10 MeV   10
+                                     #       protons, 1 MeV      8.5
+                                     #       protons, .1 MeV      10
+                                     #       alpha, 5 MeV         15
+                                     #       alpha, 1 MeV         20
+                                     #
+                                     #   The energies are the kinetic energy
+                                     #   of the particles.  Slower particles
+                                     #   interact more, so they are more
+                                     #   effective ionizers, and hence have
+                                     #   higher RBE values.
+                                     #
+                                     # rem stands for Roentgen Equivalent
+                                     # Mammal
+banana_dose           0.1e-6 sievert # Informal measure of the dose due to 
+                                     #   eating one average sized banana
+roentgen              2.58e-4 C / kg # Ionizing radiation that produces
+                                     #   1 statcoulomb of charge in 1 cc of
+                                     #   dry air at stp.
+rontgen                 roentgen     # Sometimes it appears spelled this way
+sievertunit             8.38 rontgen # Unit of gamma ray dose delivered in one
+                                     #   hour at a distance of 1 cm from a
+                                     #   point source of 1 mg of radium
+                                     #   enclosed in platinum .5 mm thick.
+
+eman                    1e-7 Ci/m^3  # radioactive concentration
+mache                   3.7e-7 Ci/m^3
+
+#
+# Atomic weights.  The atomic weight of an element is the ratio of the mass of
+# a mole of the element to 1|12 of a mole of Carbon 12.  For each element, we
+# list the atomic weights of all of the isotopes.  The Standard Atomic Weights
+# apply to the elements in the isotopic composition that occurs naturally on
+# Earth.  These are computed values based on the isotopic distribution, and
+# may vary for specific samples.  Elements which do not occur naturally do
+# not have Standard Atomic Weights.  For these elements, if data on the most
+# stable isotope is available, is given.  Otherwise, the user must specify the
+# desired isotope.  
+
+!include elements.units
+
+# Density of the elements
+#
+# Note some elements occur in multiple forms (allotropes) with different
+# densities, and they are accordingly listed multiple times.  
+
+# Density of gas phase elements at STP
+
+hydrogendensity            0.08988 g/l    
+heliumdensity              0.1786 g/l     
+neondensity                0.9002 g/l     
+nitrogendensity            1.2506 g/l     
+oxygendensity              1.429 g/l      
+fluorinedensity            1.696 g/l      
+argondensity               1.784 g/l      
+chlorinedensity            3.2 g/l        
+kryptondensity             3.749 g/l      
+xenondensity               5.894 g/l      
+radondensity               9.73 g/l       
+
+# Density of liquid phase elements near room temperature
+
+brominedensity             3.1028 g/cm^3  
+mercurydensity            13.534 g/cm^3  
+
+# Density of solid elements near room temperature
+
+lithiumdensity             0.534 g/cm^3  
+potassiumdensity           0.862 g/cm^3  
+sodiumdensity              0.968 g/cm^3  
+rubidiumdensity            1.532 g/cm^3  
+calciumdensity             1.55 g/cm^3   
+magnesiumdensity           1.738 g/cm^3  
+phosphorus_white_density   1.823 g/cm^3  
+berylliumdensity           1.85 g/cm^3   
+sulfur_gamma_density       1.92 g/cm^3   
+cesiumdensity              1.93 g/cm^3
+carbon_amorphous_density   1.95 g/cm^3   # average value
+sulfur_betadensity         1.96 g/cm^3   
+sulfur_alpha_density       2.07 g/cm^3   
+carbon_graphite_density    2.267 g/cm^3  
+phosphorus_red_density     2.27 g/cm^3   # average value
+silicondensity             2.3290 g/cm^3 
+phosphorus_violet_density  2.36 g/cm^3   
+borondensity               2.37 g/cm^3   
+strontiumdensity           2.64 g/cm^3   
+phosphorus_black_density   2.69 g/cm^3   
+aluminumdensity            2.7 g/cm^3    
+bariumdensity              3.51 g/cm^3   
+carbon_diamond_density     3.515 g/cm^3  
+scandiumdensity            3.985 g/cm^3  
+selenium_vitreous_density  4.28 g/cm^3   
+selenium_alpha_density     4.39 g/cm^3   
+titaniumdensity            4.406 g/cm^3  
+yttriumdensity             4.472 g/cm^3  
+selenium_gray_density      4.81 g/cm^3   
+iodinedensity              4.933 g/cm^3  
+europiumdensity            5.264 g/cm^3  
+germaniumdensity           5.323 g/cm^3  
+radiumdensity              5.5 g/cm^3    
+arsenicdensity             5.727 g/cm^3  
+tin_alpha_density          5.769 g/cm^3  
+galliumdensity             5.91 g/cm^3   
+vanadiumdensity            6.11 g/cm^3   
+lanthanumdensity           6.162 g/cm^3  
+telluriumdensity           6.24 g/cm^3   
+zirconiumdensity           6.52 g/cm^3   
+antimonydensity            6.697 g/cm^3  
+ceriumdensity              6.77 g/cm^3   
+praseodymiumdensity        6.77 g/cm^3   
+ytterbiumdensity           6.9 g/cm^3    
+neodymiumdensity           7.01 g/cm^3   
+zincdensity                7.14 g/cm^3   
+chromiumdensity            7.19 g/cm^3   
+manganesedensity           7.21 g/cm^3   
+promethiumdensity          7.26 g/cm^3   
+tin_beta_density           7.265 g/cm^3  
+indiumdensity              7.31 g/cm^3   
+samariumdensity            7.52 g/cm^3   
+irondensity                7.874 g/cm^3  
+gadoliniumdensity          7.9 g/cm^3    
+terbiumdensity             8.23 g/cm^3   
+dysprosiumdensity          8.54 g/cm^3   
+niobiumdensity             8.57 g/cm^3   
+cadmiumdensity             8.65 g/cm^3   
+holmiumdensity             8.79 g/cm^3   
+cobaltdensity              8.9 g/cm^3    
+nickeldensity              8.908 g/cm^3  
+erbiumdensity              9.066 g/cm^3  
+polonium_alpha_density     9.196 g/cm^3  
+thuliumdensity             9.32 g/cm^3   
+polonium_beta_density      9.398 g/cm^3  
+bismuthdensity             9.78 g/cm^3   
+lutetiumdensity            9.841 g/cm^3  
+actiniumdensity           10 g/cm^3      
+molybdenumdensity         10.28 g/cm^3   
+silverdensity             10.49 g/cm^3   
+technetiumdensity         11 g/cm^3      
+leaddensity               11.34 g/cm^3   
+thoriumdensity            11.7 g/cm^3    
+thalliumdensity           11.85 g/cm^3   
+americiumdensity          12 g/cm^3      
+palladiumdensity          12.023 g/cm^3  
+rhodiumdensity            12.41 g/cm^3   
+rutheniumdensity          12.45 g/cm^3   
+berkelium_beta_density    13.25 g/cm^3   
+hafniumdensity            13.31 g/cm^3   
+curiumdensity             13.51 g/cm^3   
+berkelium_alphadensity    14.78 g/cm^3   
+californiumdensity        15.1 g/cm^3    
+protactiniumdensity       15.37 g/cm^3   
+tantalumdensity           16.69 g/cm^3   
+uraniumdensity            19.1 g/cm^3    
+tungstendensity           19.3 g/cm^3    
+golddensity               19.30 g/cm^3   
+plutoniumdensity          19.816 g/cm^3  
+neptuniumdensity          20.45 g/cm^3 # alpha form, only one at room temp
+rheniumdensity            21.02 g/cm^3   
+platinumdensity           21.45 g/cm^3   
+iridiumdensity            22.56 g/cm^3   
+osmiumdensity             22.59 g/cm^3
+
+# A few alternate names
+
+tin_gray tin_alpha_density
+tin_white tin_beta_density
+graphitedensity carbon_graphite_density
+diamonddensity carbon_diamond_density
+
+# Predicted density of elements that have not been made in sufficient
+# quantities for measurement.  
+
+franciumdensity            2.48 g/cm^3 # liquid, predicted melting point 8 degC
+astatinedensity            6.35 g/cm^3    
+einsteiniumdensity         8.84 g/cm^3    
+fermiumdensity             9.7 g/cm^3     
+nobeliumdensity            9.9 g/cm^3     
+mendeleviumdensity        10.3 g/cm^3    
+lawrenciumdensity         16 g/cm^3      
+rutherfordiumdensity      23.2 g/cm^3
+roentgeniumdensity        28.7 g/cm^3    
+dubniumdensity            29.3 g/cm^3    
+darmstadtiumdensity       34.8 g/cm^3    
+seaborgiumdensity         35 g/cm^3      
+bohriumdensity            37.1 g/cm^3    
+meitneriumdensity         37.4 g/cm^3    
+hassiumdensity            41 g/cm^3      
+
+#
+# population units
+#
+
+people                  1
+person                  people
+death                   people
+capita                  people
+percapita               per capita
+
+# TGM dozen based unit system listed on the "dozenal" forum
+# http://www.dozenalsociety.org.uk/apps/tgm.htm.  These units are
+# proposed as an allegedly more rational alternative to the SI system.
+
+Tim                     12^-4 hour         # Time 
+Grafut                  gravity Tim^2      # Length based on gravity
+Surf                    Grafut^2           # area
+Volm                    Grafut^3           # volume
+Vlos                    Grafut/Tim         # speed
+Denz                    Maz/Volm           # density
+Mag                     Maz gravity        # force
+Maz                     Volm kg / oldliter # mass based on water
+
+# Abbreviations
+
+# Tm                      Tim              # Conflicts with Tm = Terameter
+Gf                      Grafut
+Sf                      Surf
+Vm                      Volm
+Vl                      Vlos
+Mz                      Maz
+Dz                      Denz
+
+# Dozen based unit prefixes
+
+Zena-                   12
+Duna-                   12^2
+Trina-                  12^3
+Quedra-                 12^4
+Quena-                  12^5
+Hesa-                   12^6
+Seva-                   12^7
+Aka-                    12^8
+Neena-                  12^9
+Dexa-                   12^10
+Lefa-                   12^11
+Zennila-                12^12
+
+Zeni-                   12^-1
+Duni-                   12^-2
+Trini-                  12^-3
+Quedri-                 12^-4
+Queni-                  12^-5
+Hesi-                   12^-6
+Sevi-                   12^-7
+Aki-                    12^-8
+Neeni-                  12^-9
+Dexi-                   12^-10
+Lefi-                   12^-11
+Zennili-                12^-12
+
+#
+# Traditional Japanese units (shakkanhou)
+#
+# The traditional system of weights and measures is called shakkanhou from the
+# shaku and the ken.  Japan accepted SI units in 1891 and legalized conversions
+# to the traditional system.  In 1909 the inch-pound system was also legalized,
+# so Japan had three legally approved systems.  A change to the metric system
+# started in 1921 but there was a lot of resistance.  The Measurement Law of
+# October 1999 prohibits sales in anything but SI units.  However, the old
+# units still live on in construction and as the basis for paper sizes of books
+# and tools used for handicrafts.
+#
+# Note that units below use the Hepburn romanization system.  Some other
+# systems would render "mou", "jou", and "chou" as "mo", "jo" and "cho".
+#
+#
+# http://hiramatu-hifuka.com/onyak/onyindx.html
+
+# Japanese Proportions.  These are still in everyday use.  They also
+# get used as units to represent the proportion of the standard unit.
+
+wari_proportion      1|10
+wari                 wari_proportion
+bu_proportion        1|100    # The character bu can also be read fun or bun
+                              # but usually "bu" is used for units.
+rin_proportion       1|1000
+mou_proportion       1|10000
+
+
+# Japanese Length Measures
+#
+# The length system is called kanejaku or
+# square and originated in China.  It was
+# adopted as Japan's official measure in 701
+# by the Taiho Code.  This system is still in
+# common use in architecture and clothing.
+
+shaku              1|3.3 m
+mou                1|10000 shaku
+rin                1|1000 shaku
+bu_distance        1|100 shaku
+sun                1|10 shaku
+jou_distance       10 shaku
+jou                jou_distance
+
+kanejakusun        sun      # Alias to emphasize architectural name
+kanejaku           shaku
+kanejakujou        jou
+
+# http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement
+taichi             shaku   # http://zh.wikipedia.org/wiki/台尺
+taicun             sun     # http://zh.wikipedia.org/wiki/台制
+!utf8
+台尺               taichi  # via Hanyu Pinyin romanizations
+台寸               taicun
+!endutf8
+
+# In context of clothing, shaku is different from architecture
+
+kujirajaku         10|8 shaku
+kujirajakusun      1|10 kujirajaku
+kujirajakubu       1|100 kujirajaku
+kujirajakujou      10 kujirajaku
+tan_distance       3 kujirajakujou
+
+ken                6 shaku  # Also sometimes 6.3, 6.5, or 6.6
+                            # http://www.homarewood.co.jp/syakusun.htm
+
+# mostly unused
+chou_distance      60 ken
+chou               chou_distance
+ri                 36 chou
+
+# Japanese Area Measures
+
+# Tsubo is still used for land size, though the others are more
+# recognized by their homonyms in the other measurements.
+
+gou_area             1|10 tsubo
+tsubo                36 shaku^2    # Size of two tatami = ken^2 ??
+se                   30 tsubo
+tan_area             10 se
+chou_area            10 tan_area
+
+# http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement
+ping                 tsubo     # http://zh.wikipedia.org/wiki/坪
+jia                  2934 ping # http://zh.wikipedia.org/wiki/甲_(单位)
+fen                  1|10 jia  # http://zh.wikipedia.org/wiki/分
+fen_area             1|10 jia  # Protection against future collisions
+!utf8
+坪                   ping      # via Hanyu Pinyin romanizations
+甲                   jia
+分                   fen
+分地                 fen_area  # Protection against future collisions
+!endutf8
+
+# Japanese architecture is based on a "standard" size of tatami mat.
+# Room sizes today are given in number of tatami, and this number
+# determines the spacing between colums and hence sizes of sliding
+# doors and paper screens.  However, every region has its own slightly
+# different tatami size.  Edoma, used in and around Tokyo and
+# Hokkaido, is becoming a nationwide standard.  Kyouma is used around
+# Kyoto, Osaka and Kyuushu, and Chuukyouma is used around Nagoya.
+# Note that the tatami all have the aspect ratio 2:1 so that the mats
+# can tile the room with some of them turned 90 degrees.
+#
+# http://www.moon2.net/tatami/infotatami/structure.html
+
+edoma                (5.8*2.9) shaku^2
+kyouma               (6.3*3.15) shaku^2
+chuukyouma           (6*3) shaku^2
+jou_area             edoma
+tatami               jou_area
+
+# Japanese Volume Measures
+
+# The "shou" is still used for such things as alcohol and seasonings.
+# Large quantities of paint are still purchased in terms of "to".
+
+shaku_volume         1|10 gou_volume
+gou_volume           1|10 shou
+gou                  gou_volume
+shou                 (4.9*4.9*2.7) sun^3   # The character shou which is
+                                           # the same as masu refers to a
+                                           # rectangular wooden cup used to
+                                           # measure liquids and cereal.
+                                           # Sake is sometimes served in a masu
+                                           # Note that it happens to be
+                                           # EXACTLY 7^4/11^3 liters.
+to                   10 shou
+koku                 10 to  # No longer used; historically a measure of rice
+
+# Japanese Weight Measures
+#
+# https://web.archive.org/web/20040927115452/http://wyoming.hp.infoseek.co.jp/zatugaku/zamoney.html
+# https://en.wikipedia.org/wiki/Japanese_units_of_measurement
+
+# Not really used anymore.
+
+rin_weight           1|10 bu_weight
+bu_weight            1|10 monme
+fun                  1|10 monme
+monme                momme
+kin                  160 monme
+kan                  1000 monme
+kwan                 kan         # This was the old pronunciation of the unit.
+                                 # The old spelling persisted a few centuries
+                                 # longer and was not changed until around
+                                 # 1950.
+
+# http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement
+# says: "Volume measure in Taiwan is largely metric".
+taijin               kin      # http://zh.wikipedia.org/wiki/台斤
+tailiang             10 monme # http://zh.wikipedia.org/wiki/台斤
+taiqian              monme    # http://zh.wikipedia.org/wiki/台制
+!utf8
+台斤                 taijin # via Hanyu Pinyin romanizations
+台兩                 tailiang
+台錢                 taiqian
+!endutf8
+
+#
+# Australian unit
+#
+
+australiasquare         (10 ft)^2   # Used for house area
+
+
+#
+# A few German units as currently in use.
+#
+
+zentner                 50 kg
+doppelzentner           2 zentner
+pfund                   500 g
+
+# The klafter, which was used in central Europe, was derived from the span of
+# outstretched arms.
+#
+# https://en.wikipedia.org/wiki/Obsolete_Austrian_units_of_measurement
+# https://www.llv.li/files/abi/klafter-m2-en.pdf
+
+austriaklafter          1.89648384 m    # Exact definition, 23 July 1871 
+austriafoot             1|6 austriaklafter
+prussiaklafter          1.88 m
+prussiafoot             1|6 prussiaklafter
+bavariaklafter          1.751155 m
+bavariafoot             1|6 bavariaklafter
+hesseklafter            2.5 m
+hessefoot               1|6 hesseklafter
+switzerlandklafter      metricklafter
+switzerlandfoot         1|6 switzerlandklafter
+swissklafter            switzerlandklafter
+swissfoot               1|6 swissklafter
+metricklafter           1.8 m
+
+austriayoke             8 austriaklafter * 200 austriaklafter
+
+liechtensteinsquareklafter 3.596652 m^2 # Used until 2017 to measure land area 
+liechtensteinklafter  sqrt(liechtensteinsquareklafter)
+
+# The klafter was also used to measure volume of wood, generally being a stack
+# of wood one klafter wide, one klafter long, with logs 3 feet (half a klafter)
+# in length
+
+prussiawoodklafter      0.5 prussiaklafter^3
+austriawoodklafter      0.5 austriaklafter^3
+festmeter               m^3             # modern measure of wood, solid cube
+raummeter               0.7 festmeter   # Air space between the logs, stacked
+schuettraummeter        0.65 raummeter  # A cubic meter volume of split and cut
+                                        #   firewood in a loose, unordered
+                                        #   pile, not stacked.  This is called
+                                        #   "tipped".
+!utf8
+schüttraummeter         schuettraummeter
+!endutf8
+
+
+#
+# Swedish (Sweden) pre-metric units of 1739.
+# The metric system was adopted in 1878.
+# https://sv.wikipedia.org/wiki/Verkm%C3%A5tt
+#
+
+verklinje               2.0618125 mm
+verktum                 12 verklinje
+kvarter                 6 verktum
+fot                     2 kvarter
+aln                     2 fot
+famn                    3 aln
+
+#
+# Some traditional Russian measures
+#
+# If you would like to help expand this section and understand
+# cyrillic transliteration, let me know.  These measures are meant to
+# reflect common usage, e.g. in translated literature.  
+#
+
+dessiatine              2400 sazhen^2    # Land measure
+dessjatine              dessiatine
+
+funt                    409.51718 grams  # similar to pound
+zolotnik                1|96 funt        # used for precious metal measure
+pood                    40 funt          # common in agricultural measure
+
+arshin                  (2 + 1|3) feet
+sazhen                  3 arshin         # analogous to fathom
+verst                   500 sazhen       # of similar use to mile
+versta                  verst
+borderverst             1000 sazhen
+russianmile             7 verst
+
+
+
+
+#
+# Old French distance measures, from French Weights and Measures
+# Before the Revolution by Zupko
+#
+
+frenchfoot              144|443.296 m     # pied de roi, the standard of Paris.
+pied                    frenchfoot        #   Half of the hashimicubit,
+frenchfeet              frenchfoot        #   instituted by Charlemagne.
+frenchinch              1|12 frenchfoot   #   This exact definition comes from
+frenchthumb             frenchinch        #   a law passed on 10 Dec 1799 which
+pouce                   frenchthumb       #   fixed the meter at
+                                          #   3 frenchfeet + 11.296 lignes.
+frenchline              1|12 frenchinch   # This is supposed to be the size
+ligne                   frenchline        #   of the average barleycorn
+frenchpoint             1|12 frenchline
+toise                   6 frenchfeet
+arpent                  180^2 pied^2      # The arpent is 100 square perches,
+                                          # but the perche seems to vary a lot
+                                          # and can be 18 feet, 20 feet, or 22
+                                          # feet.  This measure was described
+                                          # as being in common use in Canada in
+                                          # 1934 (Websters 2nd).  The value
+                                          # given here is the Paris standard
+                                          # arpent.
+frenchgrain             1|18827.15 kg     # Weight of a wheat grain, hence
+                                          # smaller than the British grain.
+frenchpound             9216 frenchgrain
+
+#
+# Before the Imperial Weights and Measures Act of 1824, various different
+# weights and measures were in use in different places.
+#
+
+# Scots linear measure
+
+scotsinch        1.00540054 UKinch
+scotslink        1|100 scotschain
+scotsfoot        12 scotsinch
+scotsfeet        scotsfoot
+scotsell         37 scotsinch
+scotsfall        6 scotsell
+scotschain       4 scotsfall
+scotsfurlong     10 scotschain
+scotsmile        8 scotsfurlong
+
+# Scots area measure
+
+scotsrood        40 scotsfall^2
+scotsacre        4 scotsrood
+
+# Irish linear measure
+
+irishinch       UKinch
+irishpalm       3 irishinch
+irishspan       3 irishpalm
+irishfoot       12 irishinch
+irishfeet       irishfoot
+irishcubit      18 irishinch
+irishyard       3 irishfeet
+irishpace       5 irishfeet
+irishfathom     6 irishfeet
+irishpole       7 irishyard      # Only these values
+irishperch      irishpole        # are different from
+irishchain      4 irishperch     # the British Imperial
+irishlink       1|100 irishchain # or English values for
+irishfurlong    10 irishchain    # these lengths.
+irishmile       8 irishfurlong   #
+
+#  Irish area measure
+
+irishrood       40 irishpole^2
+irishacre       4 irishrood
+
+# English wine capacity measures (Winchester measures)
+
+winepint       1|2 winequart
+winequart      1|4 winegallon
+winegallon     231 UKinch^3   # Sometimes called the Winchester Wine Gallon,
+                              # it was legalized in 1707 by Queen Anne, and
+                              # given the definition of 231 cubic inches.  It
+                              # had been in use for a while as 8 pounds of wine
+                              # using a merchant's pound, but the definition of
+                              # the merchant's pound had become uncertain.  A
+                              # pound of 15 tower ounces (6750 grains) had been
+                              # common, but then a pound of 15 troy ounces
+                              # (7200 grains) gained popularity.  Because of
+                              # the switch in the value of the merchants pound,
+                              # the size of the wine gallon was uncertain in
+                              # the market, hence the official act in 1707.
+                              # The act allowed that a six inch tall cylinder
+                              # with a 7 inch diameter was a lawful wine
+                              # gallon.  (This comes out to 230.9 in^3.)
+                              # Note also that in Britain a legal conversion
+                              # was established to the 1824 Imperial gallon
+                              # then taken as 277.274 in^3 so that the wine
+                              # gallon was 0.8331 imperial gallons.  This is
+                              # 231.1 cubic inches (using the international
+                              # inch).
+winerundlet    18 winegallon
+winebarrel     31.5 winegallon
+winetierce     42 winegallon
+winehogshead   2 winebarrel
+winepuncheon   2 winetierce
+winebutt       2 winehogshead
+winepipe       winebutt
+winetun        2 winebutt
+
+# English beer and ale measures used 1803-1824 and used for beer before 1688
+
+beerpint       1|2 beerquart
+beerquart      1|4 beergallon
+beergallon     282 UKinch^3
+beerbarrel     36 beergallon
+beerhogshead   1.5 beerbarrel
+
+# English ale measures used from 1688-1803 for both ale and beer
+
+alepint        1|2 alequart
+alequart       1|4 alegallon
+alegallon      beergallon
+alebarrel      34 alegallon
+alehogshead    1.5 alebarrel
+
+# Scots capacity measure
+
+scotsgill      1|4 mutchkin
+mutchkin       1|2 choppin
+choppin        1|2 scotspint
+scotspint      1|2 scotsquart
+scotsquart     1|4 scotsgallon
+scotsgallon    827.232 UKinch^3
+scotsbarrel    8 scotsgallon
+jug            scotspint
+
+# Scots dry capacity measure
+
+scotswheatlippy   137.333 UKinch^3    # Also used for peas, beans, rye, salt
+scotswheatlippies scotswheatlippy
+scotswheatpeck    4 scotswheatlippy
+scotswheatfirlot  4 scotswheatpeck
+scotswheatboll    4 scotswheatfirlot
+scotswheatchalder 16 scotswheatboll
+
+scotsoatlippy     200.345 UKinch^3    # Also used for barley and malt
+scotsoatlippies   scotsoatlippy
+scotsoatpeck      4 scotsoatlippy
+scotsoatfirlot    4 scotsoatpeck
+scotsoatboll      4 scotsoatfirlot
+scotsoatchalder   16 scotsoatboll
+
+# Scots Tron weight
+
+trondrop       1|16 tronounce
+tronounce      1|20 tronpound
+tronpound      9520 grain
+tronstone      16 tronpound
+
+# Irish liquid capacity measure
+
+irishnoggin    1|4 irishpint
+irishpint      1|2 irishquart
+irishquart     1|2 irishpottle
+irishpottle    1|2 irishgallon
+irishgallon    217.6 UKinch^3
+irishrundlet   18 irishgallon
+irishbarrel    31.5 irishgallon
+irishtierce    42 irishgallon
+irishhogshead  2 irishbarrel
+irishpuncheon  2 irishtierce
+irishpipe      2 irishhogshead
+irishtun       2 irishpipe
+
+# Irish dry capacity measure
+
+irishpeck      2 irishgallon
+irishbushel    4 irishpeck
+irishstrike    2 irishbushel
+irishdrybarrel 2 irishstrike
+irishquarter   2 irishbarrel
+
+# English Tower weights, abolished in 1528
+
+towerpound       5400 grain
+towerounce       1|12 towerpound
+towerpennyweight 1|20 towerounce
+towergrain       1|32 towerpennyweight
+
+# English Mercantile weights, used since the late 12th century
+
+mercpound      6750 grain
+mercounce      1|15 mercpound
+mercpennyweight 1|20 mercounce
+
+# English weights for lead
+
+leadstone     12.5 lb
+fotmal        70 lb
+leadwey       14 leadstone
+fothers       12 leadwey
+
+# English Hay measure
+
+newhaytruss 60 lb             # New and old here seem to refer to "new"
+newhayload  36 newhaytruss    # hay and "old" hay rather than a new unit
+oldhaytruss 56 lb             # and an old unit.
+oldhayload  36 oldhaytruss
+
+# English wool measure
+
+woolclove   7 lb
+woolstone   2 woolclove
+wooltod     2 woolstone
+woolwey     13 woolstone
+woolsack    2 woolwey
+woolsarpler 2 woolsack
+woollast    6 woolsarpler
+
+#
+# Ancient history units:  There tends to be uncertainty in the definitions
+#                         of the units in this section
+# These units are from [11]
+
+# Roman measure.  The Romans had a well defined distance measure, but their
+# measures of weight were poor.  They adopted local weights in different
+# regions without distinguishing among them so that there are half a dozen
+# different Roman "standard" weight systems.
+
+romanfoot    296 mm          # There is some uncertainty in this definition
+romanfeet    romanfoot       # from which all the other units are derived.
+pes          romanfoot       # This value appears in numerous sources. In "The
+pedes        romanfoot       # Roman Land Surveyors", Dilke gives 295.7 mm.
+romaninch    1|12 romanfoot  # The subdivisions of the Roman foot have the
+romandigit   1|16 romanfoot  #   same names as the subdivisions of the pound,
+romanpalm    1|4 romanfoot   #   but we can't have the names for different
+romancubit   18 romaninch    #   units.
+romanpace    5 romanfeet     # Roman double pace (basic military unit)
+passus       romanpace
+romanperch   10 romanfeet
+stade        125 romanpaces
+stadia       stade
+stadium      stade
+romanmile    8 stadia        # 1000 paces
+romanleague  1.5 romanmile
+schoenus     4 romanmile
+
+# Other values for the Roman foot (from Dilke)
+
+earlyromanfoot    29.73 cm
+pesdrusianus      33.3 cm    # or 33.35 cm, used in Gaul & Germany in 1st c BC
+lateromanfoot     29.42 cm
+
+# Roman areas
+
+actuslength  120 romanfeet     # length of a Roman furrow
+actus        120*4 romanfeet^2 # area of the furrow
+squareactus  120^2 romanfeet^2 # actus quadratus
+acnua        squareactus
+iugerum      2 squareactus
+iugera       iugerum
+jugerum      iugerum
+jugera       iugerum
+heredium     2 iugera          # heritable plot
+heredia      heredium
+centuria     100 heredia
+centurium    centuria
+
+# Roman volumes
+
+sextarius       35.4 in^3      # Basic unit of Roman volume.  As always,
+sextarii        sextarius      # there is uncertainty.  Six large Roman
+                               # measures survive with volumes ranging from
+                               # 34.4 in^3 to 39.55 in^3.  Three of them
+                               # cluster around the size given here.
+                               #
+                               # But the values for this unit vary wildly
+                               # in other sources.  One reference  gives 0.547
+                               # liters, but then says the amphora is a
+                               # cubic Roman foot.  This gives a value for the
+                               # sextarius of 0.540 liters.  And the
+                               # encyclopedia Britannica lists 0.53 liters for
+                               # this unit.  Both [7] and [11], which were
+                               # written by scholars of weights and measures,
+                               # give the value of 35.4 cubic inches.
+cochlearia      1|48 sextarius
+cyathi          1|12 sextarius
+acetabula       1|8 sextarius
+quartaria       1|4 sextarius
+quartarius      quartaria
+heminae         1|2 sextarius
+hemina          heminae
+cheonix         1.5 sextarii
+
+# Dry volume measures (usually)
+
+semodius        8 sextarius
+semodii         semodius
+modius          16 sextarius
+modii           modius
+
+# Liquid volume measures (usually)
+
+congius         12 heminae
+congii          congius
+amphora         8 congii
+amphorae        amphora      # Also a dry volume measure
+culleus         20 amphorae
+quadrantal      amphora
+
+# Roman weights
+
+libra           5052 grain   # The Roman pound varied significantly
+librae          libra        # from 4210 grains to 5232 grains.  Most of
+romanpound      libra        # the standards were obtained from the weight
+uncia           1|12 libra   # of particular coins.  The one given here is
+unciae          uncia        # based on the Gold Aureus of Augustus which
+romanounce      uncia        # was in use from BC 27 to AD 296.
+deunx           11 uncia
+dextans         10 uncia
+dodrans         9 uncia
+bes             8 uncia
+seprunx         7 uncia
+semis           6 uncia
+quincunx        5 uncia
+triens          4 uncia
+quadrans        3 uncia
+sextans         2 uncia
+sescuncia       1.5 uncia
+semuncia        1|2 uncia
+siscilius       1|4 uncia
+sextula         1|6 uncia
+semisextula     1|12 uncia
+scriptulum      1|24 uncia
+scrupula        scriptulum
+romanobol       1|2 scrupula
+
+romanaspound    4210 grain    # Old pound based on bronze coinage, the
+                              # earliest money of Rome BC 338 to BC 268.
+
+# Egyptian length measure
+
+egyptianroyalcubit      20.63 in    # plus or minus .2 in
+egyptianpalm            1|7 egyptianroyalcubit
+egyptiandigit           1|4 egyptianpalm
+egyptianshortcubit      6 egyptianpalm
+
+doubleremen             29.16 in  # Length of the diagonal of a square with
+remendigit       1|40 doubleremen # side length of 1 royal egyptian cubit.
+                                  # This is divided into 40 digits which are
+                                  # not the same size as the digits based on
+                                  # the royal cubit.
+
+# Greek length measures
+
+greekfoot               12.45 in      # Listed as being derived from the
+greekfeet               greekfoot     # Egyptian Royal cubit in [11].  It is
+greekcubit              1.5 greekfoot # said to be 3|5 of a 20.75 in cubit.
+pous                    greekfoot
+podes                   greekfoot
+orguia                  6 greekfoot
+greekfathom             orguia
+stadion                 100 orguia
+akaina                  10 greekfeet
+plethron                10 akaina
+greekfinger             1|16 greekfoot
+homericcubit            20 greekfingers  # Elbow to end of knuckles.
+shortgreekcubit         18 greekfingers  # Elbow to start of fingers.
+
+ionicfoot               296 mm
+doricfoot               326 mm
+
+olympiccubit            25 remendigit    # These olympic measures were not as
+olympicfoot             2|3 olympiccubit # common as the other greek measures.
+olympicfinger           1|16 olympicfoot # They were used in agriculture.
+olympicfeet             olympicfoot
+olympicdakylos          olympicfinger
+olympicpalm             1|4 olympicfoot
+olympicpalestra         olympicpalm
+olympicspithame         3|4 foot
+olympicspan             olympicspithame
+olympicbema             2.5 olympicfeet
+olympicpace             olympicbema
+olympicorguia           6 olympicfeet
+olympicfathom           olympicorguia
+olympiccord             60 olympicfeet
+olympicamma             olympiccord
+olympicplethron         100 olympicfeet
+olympicstadion          600 olympicfeet
+
+# Greek capacity measure
+
+greekkotyle             270 ml           # This approximate value is obtained
+xestes                  2 greekkotyle    # from two earthenware vessels that
+khous                   12 greekkotyle   # were reconstructed from fragments.
+metretes                12 khous         # The kotyle is a day's corn ration
+choinix                 4 greekkotyle    # for one man.
+hekteos                 8 choinix
+medimnos                6 hekteos
+
+# Greek weight.  Two weight standards were used, an Aegina standard based
+# on the Beqa shekel and an Athens (attic) standard.
+
+aeginastater            192 grain        # Varies up to 199 grain
+aeginadrachmae          1|2 aeginastater
+aeginaobol              1|6 aeginadrachmae
+aeginamina              50 aeginastaters
+aeginatalent            60 aeginamina    # Supposedly the mass of a cubic foot
+                                         # of water (whichever foot was in use)
+
+atticstater             135 grain        # Varies 134-138 grain
+atticdrachmae           1|2 atticstater
+atticobol               1|6 atticdrachmae
+atticmina               50 atticstaters
+attictalent             60 atticmina     # Supposedly the mass of a cubic foot
+                                         # of water (whichever foot was in use)
+
+# "Northern" cubit and foot.  This was used by the pre-Aryan civilization in
+# the Indus valley.  It was used in Mesopotamia, Egypt, North Africa, China,
+# central and Western Europe until modern times when it was displaced by
+# the metric system.
+
+northerncubit           26.6 in           # plus/minus .2 in
+northernfoot            1|2 northerncubit
+
+sumeriancubit           495 mm
+kus                     sumeriancubit
+sumerianfoot            2|3 sumeriancubit
+
+assyriancubit           21.6 in
+assyrianfoot            1|2 assyriancubit
+assyrianpalm            1|3 assyrianfoot
+assyriansusi            1|20 assyrianpalm
+susi                    assyriansusi
+persianroyalcubit       7 assyrianpalm
+
+
+# Arabic measures.  The arabic standards were meticulously kept.  Glass weights
+# accurate to .2 grains were made during AD 714-900.
+
+hashimicubit            25.56 in          # Standard of linear measure used
+                                          # in Persian dominions of the Arabic
+                                          # empire 7-8th cent.  Is equal to two
+                                          # French feet.
+
+blackcubit              21.28 in
+arabicfeet              1|2 blackcubit
+arabicfoot              arabicfeet
+arabicinch              1|12 arabicfoot
+arabicmile              4000 blackcubit
+
+silverdirhem            45 grain  # The weights were derived from these two
+tradedirhem             48 grain  # units with two identically named systems
+                                  # used for silver and used for trade purposes
+
+silverkirat             1|16 silverdirhem
+silverwukiyeh           10 silverdirhem
+silverrotl              12 silverwukiyeh
+arabicsilverpound       silverrotl
+
+tradekirat              1|16 tradedirhem
+tradewukiyeh            10 tradedirhem
+traderotl               12 tradewukiyeh
+arabictradepound        traderotl
+
+# Miscellaneous ancient units
+
+parasang                3.5 mile # Persian unit of length usually thought
+                                 # to be between 3 and 3.5 miles
+biblicalcubit           21.8 in
+hebrewcubit             17.58 in
+li                      10|27.8 mile  # Chinese unit of length
+                                      #   100 li is considered a day's march
+liang                   11|3 oz       # Chinese weight unit
+
+
+# Medieval time units.  According to the OED, these appear in Du Cange
+# by Papias.
+
+timepoint               1|5 hour  # also given as 1|4
+timeminute              1|10 hour
+timeostent              1|60 hour
+timeounce               1|8 timeostent
+timeatom                1|47 timeounce
+
+# Given in [15], these subdivisions of the grain were supposedly used
+# by jewelers.  The mite may have been used but the blanc could not
+# have been accurately measured.
+
+mite                    1|20 grain
+droit                   1|24 mite
+periot                  1|20 droit
+blanc                   1|24 periot
+
+#
+# Localization
+#
+
+!var UNITS_ENGLISH US
+hundredweight           ushundredweight
+ton                     uston
+scruple                 apscruple
+fluidounce              usfluidounce
+gallon                  usgallon
+bushel                  usbushel
+quarter                 quarterweight
+cup                     uscup
+tablespoon              ustablespoon
+teaspoon                usteaspoon
+dollar                  US$
+cent                    $ 0.01
+penny                   cent
+minim                   minimvolume
+pony                    ponyvolume
+grand                   usgrand
+firkin                  usfirkin
+hogshead                ushogshead
+cable                   uscable
+!endvar
+
+!var UNITS_ENGLISH GB
+hundredweight           brhundredweight
+ton                     brton
+scruple                 brscruple
+fluidounce              brfluidounce
+gallon                  brgallon
+bushel                  brbushel
+quarter                 brquarter
+chaldron                brchaldron
+cup                     brcup
+teacup                  brteacup
+tablespoon              brtablespoon
+teaspoon                brteaspoon
+dollar                  US$
+cent                    $ 0.01
+penny                   brpenny
+minim                   minimnote
+pony                    brpony
+grand                   brgrand
+firkin                  brfirkin
+hogshead                brhogshead
+cable                   brcable
+!endvar
+
+!varnot UNITS_ENGLISH GB US
+!message Unknown value for environment variable UNITS_ENGLISH.  Should be GB or US.
+!endvar
+
+
+!utf8
+⅛-                      1|8
+¼-                      1|4
+⅜-                      3|8
+½-                      1|2
+⅝-                      5|8
+¾-                      3|4
+⅞-                      7|8
+⅙-                      1|6
+⅓-                      1|3
+⅔-                      2|3
+⅚-                      5|6
+⅕-                      1|5
+⅖-                      2|5
+⅗-                      3|5
+⅘-                      4|5
+# U+2150-               1|7  For some reason these characters are getting
+# U+2151-               1|9  flagged as invalid UTF8.
+# U+2152-               1|10
+#⅐-               1|7   # fails under MacOS
+#⅑-               1|9   # fails under MacOS
+#⅒-               1|10  # fails under MacOS
+ℯ                       exp(1)      # U+212F, base of natural log
+µ-                      micro       # micro sign U+00B5
+μ-                      micro       # small mu U+03BC
+ångström                angstrom
+Å                       angstrom    # angstrom symbol U+212B
+Å                       angstrom    # A with ring U+00C5
+röntgen                 roentgen
+°C                      degC
+°F                      degF
+°K                      K           # °K is incorrect notation
+°R                      degR
+°                       degree
+℃                       degC
+℉                       degF
+K                       K          # Kelvin symbol, U+212A
+ℓ                       liter      # unofficial abbreviation used in some places
+Ω                       ohm       # Ohm symbol U+2126
+Ω                       ohm       # Greek capital omega U+03A9
+℧                       mho
+G₀                      G0
+H₀                      H0              
+Z₀                      Z0
+a₀                      a0
+n₀                      n0
+ε₀                      epsilon0
+μ₀                      mu0
+Φ₀                      Phi0
+R∞                      Rinfinity
+R_∞                     Rinfinity
+λ_C                     lambda_C
+μ_B                     mu_B
+ν_133Cs                 nu_133Cs  
+ʒ                        dram     # U+0292
+℈                       scruple
+℥                       ounce
+℔                       lb
+ℎ                       h
+ℏ                       hbar
+τ                       tau    
+π                       pi      # Greek letter pi
+𝜋                       pi      # mathematical italic small pi
+α                       alpha  
+σ                       sigma  
+‰                       1|1000
+‱                       1|10000
+′                       '        # U+2032
+″                       "        # U+2033
+
+#
+# Unicode currency symbols
+#
+
+¢                       cent
+£                       britainpound
+¥                       japanyen
+€                       euro
+₩                       southkoreawon
+₪                       israelnewshekel
+₤                       lira
+# ₺                       turkeylira  # fails under MacOS
+₨                       rupee           # unofficial legacy rupee sign
+# ₹                       indiarupee      # official rupee sign # MacOS fail
+#؋                       afghanafghani    # fails under MacOS
+฿                       thailandbaht
+₡                       costaricacolon
+₣                       francefranc
+₦                       nigerianaira
+₧                       spainpeseta
+₫                       vietnamdong
+₭                       laokip 
+₮                       mongoliatugrik
+₯                       greecedrachma
+₱                       philippinepeso
+# ₲                       paraguayguarani # fails under MacOS
+#₴                       ukrainehryvnia   # fails under MacOS
+#₵                       ghanacedi        # fails under MacOS
+#₸                       kazakhstantenge  # fails under MacOS
+#₼                       azerbaijanmanat # fails under MacOS
+#₽                       russiaruble     # fails under MacOS
+#₾                       georgialari     # fails under MacOS
+﷼                       iranrial
+﹩                      $
+￠                      ¢
+￡                      £
+￥                      ¥
+￦                      ₩
+
+#
+# Square Unicode symbols starting at U+3371
+#
+
+㍱                      hPa
+㍲                      da
+㍳                      au
+㍴                      bar
+# ㍵                          oV???
+㍶                      pc
+#㍷                      dm      invalid on Mac
+#㍸                      dm^2    invalid on Mac
+#㍹                      dm^3    invalid on Mac
+㎀                      pA
+㎁                      nA
+㎂                      µA
+㎃                      mA
+㎄                      kA
+㎅                      kB
+㎆                      MB
+㎇                      GB
+㎈                      cal
+㎉                      kcal
+㎊                      pF
+㎋                      nF
+㎌                      µF
+㎍                      µg
+㎎                      mg
+㎏                      kg
+㎐                      Hz
+㎑                      kHz
+㎒                      MHz
+㎓                      GHz
+㎔                      THz
+㎕                      µL
+㎖                      mL
+㎗                      dL
+㎘                      kL
+㎙                      fm
+㎚                      nm
+㎛                      µm
+㎜                      mm
+㎝                      cm
+㎞                      km
+㎟                      mm^2
+㎠                      cm^2
+㎡                      m^2
+㎢                      km^2
+㎣                      mm^3
+㎤                      cm^3
+㎥                      m^3
+㎦                      km^3
+㎧                      m/s
+㎨                      m/s^2
+㎩                      Pa
+㎪                      kPa
+㎫                      MPa
+㎬                      GPa
+㎭                      rad
+㎮                      rad/s
+㎯                      rad/s^2
+㎰                      ps
+㎱                      ns
+㎲                      µs
+㎳                      ms
+㎴                      pV
+㎵                      nV
+㎶                      µV
+㎷                      mV
+㎸                      kV
+㎹                      MV
+㎺                      pW
+㎻                      nW
+㎼                      µW
+㎽                      mW
+㎾                      kW
+㎿                      MW
+㏀                      kΩ
+㏁                      MΩ
+㏃                      Bq
+㏄                      cc
+㏅                      cd
+㏆                      C/kg
+㏈()                    dB
+㏉                      Gy
+㏊                      ha
+# ㏋  HP??
+㏌                      in
+# ㏍                      KK??
+# ㏎                      KM???
+㏏                      kt
+㏐                      lm
+# ㏑                      ln
+# ㏒                      log
+㏓                      lx
+㏔                      mb
+㏕                      mil
+㏖                      mol
+㏗()                    pH
+㏙                      ppm
+#   ㏚     PR???
+㏛                      sr
+㏜                      Sv
+㏝                      Wb
+#㏞                      V/m     Invalid on Mac
+#㏟                      A/m     Invalid on Mac
+#㏿                      gal     Invalid on Mac
+
+!endutf8
+
+############################################################################
+#
+# Unit list aliases
+#
+# These provide a shorthand for conversions to unit lists.
+#
+############################################################################
+
+!unitlist uswt lb;oz
+!unitlist hms hr;min;sec
+!unitlist time year;day;hr;min;sec
+!unitlist dms deg;arcmin;arcsec
+!unitlist ftin ft;in;1|8 in
+!unitlist inchfine in;1|8 in;1|16 in;1|32 in;1|64 in
+!unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\
+                tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp
+
+############################################################################
+#
+# The following units were in the Unix units database but do not appear in
+# this file:
+#
+#      wey        used for cheese, salt and other goods.  Measured mass or
+#      waymass    volume depending on what was measured and where the measuring
+#                 took place.  A wey of cheese ranged from 200 to 324 pounds.
+#
+#      sack       No precise definition
+#
+#      spindle    The length depends on the type of yarn
+#
+#      block      Defined variously on different computer systems
+#
+#      erlang     A unit of telephone traffic defined variously.
+#                 Omitted because there are no other units for this
+#                 dimension.  Is this true?  What about CCS = 1/36 erlang?
+#                 Erlang is supposed to be dimensionless.  One erlang means
+#                 a single channel occupied for one hour.
+#
+############################################################################
+#
+# The following have been suggested or considered and deemed out of scope.
+# They will not be added to GNU units.  
+#
+# Conversions between different calendar systems used in different countries or
+# different historical periods are out of scope for units and will not be added.
+#
+# Wind chill and heat index cannot be handled because they are bivarite,
+# with dependence on both the temperature and wind speed or humidity.  
+#
+# Plain english text output like "one hectare is equivalent to one hundred
+# million square centimeters" is out of scope.  
+#
diff --git a/Units.app/Contents/MacOS/elements.units b/Units.app/Contents/MacOS/elements.units
new file mode 100644
index 0000000..a18169b
--- /dev/null
+++ b/Units.app/Contents/MacOS/elements.units
@@ -0,0 +1,4011 @@
+# This file is the elements database for use with GNU units, a units
+# conversion program by Adrian Mariano adrianm@gnu.org
+#
+# January 2024 Version 1.0
+#
+# Copyright (C) 2024
+# Free Software Foundation, Inc
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This data is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA  02110-1301  USA
+
+# From https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions-relative-atomic-masses
+
+#   For several elements, the standard atomic weight A_r is given as an
+#   atomic-weight interval with the symbol [a,b] to denote the set of
+#   atomic-weight values in normal materials; thus, [a <= A_r(E) <= b].
+#   The symbols a and b denote the lower and upper bounds of the
+#   interval [a,b], respectively.  The values in parentheses, following
+#   the last significant digit to which they are attributed, are
+#   uncertainties.
+#
+#   Brackets [ ] enclosing a single value indicate the mass number of
+#   the most stable isotope.  For radioactive elements with atomic
+#   numbers 95 or greater, the mass number of the most stable isotope is
+#   not specified, as the list of studied isotopes is still
+#   incomplete.
+
+# When composition mole fractions of isotopes are given, the atomic mass
+# of an element is given as the sum of the product(s) of mole
+# fraction(s) and the atomic masses of the relevant isotopes.  When composition
+# mole fractions are not given, the atomic mass is given as
+#
+#   * the mass of the most stable isotope, if available, or
+#   * the standard atomic mass of the element, if available.
+#
+# If neither the most stable isotope nore a standard atomic mass is
+# available, no atomic mass for the element is given; the user must
+# select the isotope most suitable for their purposes.
+#
+# If the standard atomic mass is a range, the value given is the
+# midpoint of that range, which may differ from the value determined
+# from the sum of the products of composition mole fraction and isotope
+# atomic mass.
+
+# hydrogen: H (1)  std atomic weight: [1.00784,1.00811]
+hydrogen_1              1.0078250322   # 0.99988500
+hydrogen_2              2.0141017781   # 0.00011500
+hydrogen_3              3.0160492779
+hydrogen_4              4.0264300000
+hydrogen_5              5.0353110000
+hydrogen_6              6.0449600000
+hydrogen_7              7.0527000000
+hydrogen          0.99988500 hydrogen_1 \
+                + 0.00011500 hydrogen_2
+
+# helium: He (2)  std atomic weight: 4.002602(2)
+helium_3                3.0160293201   # 0.00000134
+helium_4                4.0026032541   # 0.99999866
+helium_5                5.0120570000
+helium_6                6.0188858910
+helium_7                7.0279907000
+helium_8                8.0339343900
+helium_9                9.0439460000
+helium_10              10.0527900000
+helium            0.00000134 helium_3 \
+                + 0.99999866 helium_4
+
+# lithium: Li (3)  std atomic weight: [6.938,6.997]
+lithium_3               3.0308000000
+lithium_4               4.0271900000
+lithium_5               5.0125380000
+lithium_6               6.0151228874   # 0.07590000
+lithium_7               7.0160034366   # 0.92410000
+lithium_8               8.0224862460
+lithium_9               9.0267901900
+lithium_10             10.0354830000
+lithium_11             11.0437235800
+lithium_12             12.0525170000
+lithium_13             13.0626300000
+lithium           0.07590000 lithium_6 \
+                + 0.92410000 lithium_7
+
+# beryllium: Be (4)  std atomic weight: 9.0121831(5)
+beryllium_5             5.0399000000
+beryllium_6             6.0197264000
+beryllium_7             7.0169287170
+beryllium_8             8.0053051020
+beryllium_9             9.0121830650   # 1.00000000
+beryllium_10           10.0135346950
+beryllium_11           11.0216610800
+beryllium_12           12.0269221000
+beryllium_13           13.0361350000
+beryllium_14           14.0428900000
+beryllium_15           15.0534200000
+beryllium_16           16.0616700000
+beryllium              beryllium_9
+
+# boron: B (5)  std atomic weight: [10.806,10.821]
+boron_6                 6.0508000000
+boron_7                 7.0297120000
+boron_8                 8.0246073000
+boron_9                 9.0133296500
+boron_10               10.0129369500   # 0.19900000
+boron_11               11.0093053600   # 0.80100000
+boron_12               12.0143527000
+boron_13               13.0177802000
+boron_14               14.0254040000
+boron_15               15.0310880000
+boron_16               16.0398420000
+boron_17               17.0469900000
+boron_18               18.0556600000
+boron_19               19.0631000000
+boron_20               20.0720700000
+boron_21               21.0812900000
+boron             0.19900000 boron_10 \
+                + 0.80100000 boron_11
+
+# carbon: C (6)  std atomic weight: [12.0096,12.0116]
+carbon_8                8.0376430000
+carbon_9                9.0310372000
+carbon_10              10.0168533100
+carbon_11              11.0114336000
+carbon_12              12.0000000000   # 0.98930000
+carbon_13              13.0033548351   # 0.01070000
+carbon_14              14.0032419884
+carbon_15              15.0105992600
+carbon_16              16.0147013000
+carbon_17              17.0225770000
+carbon_18              18.0267510000
+carbon_19              19.0348000000
+carbon_20              20.0403200000
+carbon_21              21.0490000000
+carbon_22              22.0575300000
+carbon_23              23.0689000000
+carbon            0.98930000 carbon_12 \
+                + 0.01070000 carbon_13
+
+# nitrogen: N (7)  std atomic weight: [14.00643,14.00728]
+nitrogen_10            10.0416500000
+nitrogen_11            11.0260910000
+nitrogen_12            12.0186132000
+nitrogen_13            13.0057386100
+nitrogen_14            14.0030740044   # 0.99636000
+nitrogen_15            15.0001088989   # 0.00364000
+nitrogen_16            16.0061019000
+nitrogen_17            17.0084490000
+nitrogen_18            18.0140780000
+nitrogen_19            19.0170220000
+nitrogen_20            20.0233660000
+nitrogen_21            21.0271100000
+nitrogen_22            22.0343900000
+nitrogen_23            23.0411400000
+nitrogen_24            24.0503900000
+nitrogen_25            25.0601000000
+nitrogen          0.99636000 nitrogen_14 \
+                + 0.00364000 nitrogen_15
+
+# oxygen: O (8)  std atomic weight: [15.99903,15.99977]
+oxygen_12              12.0342620000
+oxygen_13              13.0248150000
+oxygen_14              14.0085963600
+oxygen_15              15.0030656200
+oxygen_16              15.9949146196   # 0.99757000
+oxygen_17              16.9991317565   # 0.00038000
+oxygen_18              17.9991596129   # 0.00205000
+oxygen_19              19.0035780000
+oxygen_20              20.0040753500
+oxygen_21              21.0086550000
+oxygen_22              22.0099660000
+oxygen_23              23.0156960000
+oxygen_24              24.0198600000
+oxygen_25              25.0293600000
+oxygen_26              26.0372900000
+oxygen_27              27.0477200000
+oxygen_28              28.0559100000
+oxygen            0.99757000 oxygen_16 \
+                + 0.00038000 oxygen_17 \
+                + 0.00205000 oxygen_18
+
+# fluorine: F (9)  std atomic weight: 18.998403163(6)
+fluorine_14            14.0343150000
+fluorine_15            15.0180430000
+fluorine_16            16.0114657000
+fluorine_17            17.0020952400
+fluorine_18            18.0009373300
+fluorine_19            18.9984031627   # 1.00000000
+fluorine_20            19.9999812520
+fluorine_21            20.9999489000
+fluorine_22            22.0029990000
+fluorine_23            23.0035570000
+fluorine_24            24.0081150000
+fluorine_25            25.0121990000
+fluorine_26            26.0200380000
+fluorine_27            27.0264400000
+fluorine_28            28.0353400000
+fluorine_29            29.0425400000
+fluorine_30            30.0516500000
+fluorine_31            31.0597100000
+fluorine               fluorine_19
+
+# neon: Ne (10)  std atomic weight: 20.1797(6)
+neon_16                16.0257500000
+neon_17                17.0177139600
+neon_18                18.0057087000
+neon_19                19.0018809100
+neon_20                19.9924401762   # 0.90480000
+neon_21                20.9938466850   # 0.00270000
+neon_22                21.9913851140   # 0.09250000
+neon_23                22.9944669100
+neon_24                23.9936106500
+neon_25                24.9977890000
+neon_26                26.0005150000
+neon_27                27.0075530000
+neon_28                28.0121200000
+neon_29                29.0197500000
+neon_30                30.0247300000
+neon_31                31.0331000000
+neon_32                32.0397200000
+neon_33                33.0493800000
+neon_34                34.0567300000
+neon              0.90480000 neon_20 \
+                + 0.00270000 neon_21 \
+                + 0.09250000 neon_22
+
+# sodium: Na (11)  std atomic weight: 22.98976928(2)
+sodium_18              18.0268800000
+sodium_19              19.0138800000
+sodium_20              20.0073544000
+sodium_21              20.9976546900
+sodium_22              21.9944374100
+sodium_23              22.9897692820   # 1.00000000
+sodium_24              23.9909629500
+sodium_25              24.9899540000
+sodium_26              25.9926346000
+sodium_27              26.9940765000
+sodium_28              27.9989390000
+sodium_29              29.0028771000
+sodium_30              30.0090979000
+sodium_31              31.0131630000
+sodium_32              32.0201900000
+sodium_33              33.0257300000
+sodium_34              34.0335900000
+sodium_35              35.0406200000
+sodium_36              36.0492900000
+sodium_37              37.0570500000
+sodium                 sodium_23
+
+# magnesium: Mg (12)  std atomic weight: [24.304,24.307]
+magnesium_19           19.0341690000
+magnesium_20           20.0188500000
+magnesium_21           21.0117160000
+magnesium_22           21.9995706500
+magnesium_23           22.9941242100
+magnesium_24           23.9850416970   # 0.78990000
+magnesium_25           24.9858369760   # 0.10000000
+magnesium_26           25.9825929680   # 0.11010000
+magnesium_27           26.9843406240
+magnesium_28           27.9838767000
+magnesium_29           28.9886170000
+magnesium_30           29.9904629000
+magnesium_31           30.9966480000
+magnesium_32           31.9991102000
+magnesium_33           33.0053271000
+magnesium_34           34.0089350000
+magnesium_35           35.0167900000
+magnesium_36           36.0218800000
+magnesium_37           37.0303700000
+magnesium_38           38.0365800000
+magnesium_39           39.0453800000
+magnesium_40           40.0521800000
+magnesium         0.78990000 magnesium_24 \
+                + 0.10000000 magnesium_25 \
+                + 0.11010000 magnesium_26
+
+# aluminium: Al (13)  std atomic weight: 26.9815385(7)
+# IUPAC spelling
+aluminium_21           21.0289700000
+aluminium_22           22.0195400000
+aluminium_23           23.0072443500
+aluminium_24           23.9999489000
+aluminium_25           24.9904281000
+aluminium_26           25.9868919040
+aluminium_27           26.9815385300   # 1.00000000
+aluminium_28           27.9819102100
+aluminium_29           28.9804565000
+aluminium_30           29.9829600000
+aluminium_31           30.9839450000
+aluminium_32           31.9880850000
+aluminium_33           32.9909090000
+aluminium_34           33.9967050000
+aluminium_35           34.9997640000
+aluminium_36           36.0063900000
+aluminium_37           37.0105300000
+aluminium_38           38.0174000000
+aluminium_39           39.0225400000
+aluminium_40           40.0300300000
+aluminium_41           41.0363800000
+aluminium_42           42.0438400000
+aluminium_43           43.0514700000
+aluminium              aluminium_27
+# American spelling
+aluminum_21            21.0289700000
+aluminum_22            22.0195400000
+aluminum_23            23.0072443500
+aluminum_24            23.9999489000
+aluminum_25            24.9904281000
+aluminum_26            25.9868919040
+aluminum_27            26.9815385300   # 1.00000000
+aluminum_28            27.9819102100
+aluminum_29            28.9804565000
+aluminum_30            29.9829600000
+aluminum_31            30.9839450000
+aluminum_32            31.9880850000
+aluminum_33            32.9909090000
+aluminum_34            33.9967050000
+aluminum_35            34.9997640000
+aluminum_36            36.0063900000
+aluminum_37            37.0105300000
+aluminum_38            38.0174000000
+aluminum_39            39.0225400000
+aluminum_40            40.0300300000
+aluminum_41            41.0363800000
+aluminum_42            42.0438400000
+aluminum_43            43.0514700000
+aluminum               aluminum_27
+
+# silicon: Si (14)  std atomic weight: [28.084,28.086]
+silicon_22             22.0357900000
+silicon_23             23.0254400000
+silicon_24             24.0115350000
+silicon_25             25.0041090000
+silicon_26             25.9923338400
+silicon_27             26.9867048100
+silicon_28             27.9769265347   # 0.92223000
+silicon_29             28.9764946649   # 0.04685000
+silicon_30             29.9737701360   # 0.03092000
+silicon_31             30.9753631940
+silicon_32             31.9741515400
+silicon_33             32.9779769600
+silicon_34             33.9785760000
+silicon_35             34.9845830000
+silicon_36             35.9866950000
+silicon_37             36.9929210000
+silicon_38             37.9955230000
+silicon_39             39.0024910000
+silicon_40             40.0058300000
+silicon_41             41.0130100000
+silicon_42             42.0177800000
+silicon_43             43.0248000000
+silicon_44             44.0306100000
+silicon_45             45.0399500000
+silicon           0.92223000 silicon_28 \
+                + 0.04685000 silicon_29 \
+                + 0.03092000 silicon_30
+
+# phosphorus: P (15)  std atomic weight: 30.973761998(5)
+phosphorus_24          24.0357700000
+phosphorus_25          25.0211900000
+phosphorus_26          26.0117800000
+phosphorus_27          26.9992240000
+phosphorus_28          27.9923266000
+phosphorus_29          28.9818007900
+phosphorus_30          29.9783137500
+phosphorus_31          30.9737619984   # 1.00000000
+phosphorus_32          31.9739076430
+phosphorus_33          32.9717257000
+phosphorus_34          33.9736458900
+phosphorus_35          34.9733141000
+phosphorus_36          35.9782600000
+phosphorus_37          36.9796070000
+phosphorus_38          37.9842520000
+phosphorus_39          38.9862270000
+phosphorus_40          39.9913300000
+phosphorus_41          40.9946540000
+phosphorus_42          42.0010800000
+phosphorus_43          43.0050200000
+phosphorus_44          44.0112100000
+phosphorus_45          45.0164500000
+phosphorus_46          46.0244600000
+phosphorus_47          47.0313900000
+phosphorus             phosphorus_31
+
+# sulfur: S (16)  std atomic weight: [32.059,32.076]
+sulfur_26              26.0290700000
+sulfur_27              27.0182800000
+sulfur_28              28.0043700000
+sulfur_29              28.9966110000
+sulfur_30              29.9849070300
+sulfur_31              30.9795570100
+sulfur_32              31.9720711744   # 0.94990000
+sulfur_33              32.9714589098   # 0.00750000
+sulfur_34              33.9678670040   # 0.04250000
+sulfur_35              34.9690323100
+sulfur_36              35.9670807100   # 0.00010000
+sulfur_37              36.9711255100
+sulfur_38              37.9711633000
+sulfur_39              38.9751340000
+sulfur_40              39.9754826000
+sulfur_41              40.9795935000
+sulfur_42              41.9810651000
+sulfur_43              42.9869076000
+sulfur_44              43.9901188000
+sulfur_45              44.9957200000
+sulfur_46              46.0000400000
+sulfur_47              47.0079500000
+sulfur_48              48.0137000000
+sulfur_49              49.0227600000
+sulfur            0.94990000 sulfur_32 \
+                + 0.00750000 sulfur_33 \
+                + 0.04250000 sulfur_34 \
+                + 0.00010000 sulfur_36
+
+# chlorine: Cl (17)  std atomic weight: [35.446,35.457]
+chlorine_28            28.0295400000
+chlorine_29            29.0147800000
+chlorine_30            30.0047700000
+chlorine_31            30.9924140000
+chlorine_32            31.9856846400
+chlorine_33            32.9774519900
+chlorine_34            33.9737624850
+chlorine_35            34.9688526820   # 0.75760000
+chlorine_36            35.9683068090
+chlorine_37            36.9659026020   # 0.24240000
+chlorine_38            37.9680104400
+chlorine_39            38.9680082000
+chlorine_40            39.9704150000
+chlorine_41            40.9706850000
+chlorine_42            41.9732500000
+chlorine_43            42.9738900000
+chlorine_44            43.9778700000
+chlorine_45            44.9802900000
+chlorine_46            45.9851700000
+chlorine_47            46.9891600000
+chlorine_48            47.9956400000
+chlorine_49            49.0012300000
+chlorine_50            50.0090500000
+chlorine_51            51.0155400000
+chlorine          0.75760000 chlorine_35 \
+                + 0.24240000 chlorine_37
+
+# argon: Ar (18)  std atomic weight: 39.948(1)
+argon_30               30.0230700000
+argon_31               31.0121200000
+argon_32               31.9976378000
+argon_33               32.9899255500
+argon_34               33.9802700900
+argon_35               34.9752575900
+argon_36               35.9675451050   # 0.00333600
+argon_37               36.9667763300
+argon_38               37.9627321100   # 0.00062900
+argon_39               38.9643130000
+argon_40               39.9623831237   # 0.99603500
+argon_41               40.9645005700
+argon_42               41.9630457000
+argon_43               42.9656361000
+argon_44               43.9649238000
+argon_45               44.9680397300
+argon_46               45.9680830000
+argon_47               46.9729350000
+argon_48               47.9759100000
+argon_49               48.9819000000
+argon_50               49.9861300000
+argon_51               50.9937000000
+argon_52               51.9989600000
+argon_53               53.0072900000
+argon             0.00333600 argon_36 \
+                + 0.00062900 argon_38 \
+                + 0.99603500 argon_40
+
+# potassium: K (19)  std atomic weight: 39.0983(1)
+potassium_32           32.0226500000
+potassium_33           33.0075600000
+potassium_34           33.9986900000
+potassium_35           34.9880054100
+potassium_36           35.9813020100
+potassium_37           36.9733758900
+potassium_38           37.9690811200
+potassium_39           38.9637064864   # 0.93258100
+potassium_40           39.9639981660   # 0.00011700
+potassium_41           40.9618252579   # 0.06730200
+potassium_42           41.9624023100
+potassium_43           42.9607347000
+potassium_44           43.9615869900
+potassium_45           44.9606914900
+potassium_46           45.9619815900
+potassium_47           46.9616616000
+potassium_48           47.9653411900
+potassium_49           48.9682107500
+potassium_50           49.9723800000
+potassium_51           50.9758280000
+potassium_52           51.9822400000
+potassium_53           52.9874600000
+potassium_54           53.9946300000
+potassium_55           55.0007600000
+potassium_56           56.0085100000
+potassium         0.93258100 potassium_39 \
+                + 0.00011700 potassium_40 \
+                + 0.06730200 potassium_41
+
+# calcium: Ca (20)  std atomic weight: 40.078(4)
+calcium_34             34.0148700000
+calcium_35             35.0051400000
+calcium_36             35.9930740000
+calcium_37             36.9858978500
+calcium_38             37.9763192200
+calcium_39             38.9707108100
+calcium_40             39.9625908630   # 0.96941000
+calcium_41             40.9622779200
+calcium_42             41.9586178300   # 0.00647000
+calcium_43             42.9587664400   # 0.00135000
+calcium_44             43.9554815600   # 0.02086000
+calcium_45             44.9561863500
+calcium_46             45.9536890000   # 0.00004000
+calcium_47             46.9545424000
+calcium_48             47.9525227600   # 0.00187000
+calcium_49             48.9556627400
+calcium_50             49.9574992000
+calcium_51             50.9609890000
+calcium_52             51.9632170000
+calcium_53             52.9694500000
+calcium_54             53.9734000000
+calcium_55             54.9803000000
+calcium_56             55.9850800000
+calcium_57             56.9926200000
+calcium_58             57.9979400000
+calcium           0.96941000 calcium_40 \
+                + 0.00647000 calcium_42 \
+                + 0.00135000 calcium_43 \
+                + 0.02086000 calcium_44 \
+                + 0.00004000 calcium_46 \
+                + 0.00187000 calcium_48
+
+# scandium: Sc (21)  std atomic weight: 44.955908(5)
+scandium_36            36.0164800000
+scandium_37            37.0037400000
+scandium_38            37.9951200000
+scandium_39            38.9847850000
+scandium_40            39.9779673000
+scandium_41            40.9692511050
+scandium_42            41.9655165300
+scandium_43            42.9611505000
+scandium_44            43.9594029000
+scandium_45            44.9559082800   # 1.00000000
+scandium_46            45.9551682600
+scandium_47            46.9524037000
+scandium_48            47.9522236000
+scandium_49            48.9500146000
+scandium_50            49.9521760000
+scandium_51            50.9535920000
+scandium_52            51.9568800000
+scandium_53            52.9590900000
+scandium_54            53.9639300000
+scandium_55            54.9678200000
+scandium_56            55.9734500000
+scandium_57            56.9777700000
+scandium_58            57.9840300000
+scandium_59            58.9889400000
+scandium_60            59.9956500000
+scandium_61            61.0010000000
+scandium               scandium_45
+
+# titanium: Ti (22)  std atomic weight: 47.867(1)
+titanium_38            38.0114500000
+titanium_39            39.0023600000
+titanium_40            39.9905000000
+titanium_41            40.9831480000
+titanium_42            41.9730490300
+titanium_43            42.9685225000
+titanium_44            43.9596899500
+titanium_45            44.9581219800
+titanium_46            45.9526277200   # 0.08250000
+titanium_47            46.9517587900   # 0.07440000
+titanium_48            47.9479419800   # 0.73720000
+titanium_49            48.9478656800   # 0.05410000
+titanium_50            49.9447868900   # 0.05180000
+titanium_51            50.9466106500
+titanium_52            51.9468930000
+titanium_53            52.9497300000
+titanium_54            53.9510500000
+titanium_55            54.9552700000
+titanium_56            55.9579100000
+titanium_57            56.9636400000
+titanium_58            57.9666000000
+titanium_59            58.9724700000
+titanium_60            59.9760300000
+titanium_61            60.9824500000
+titanium_62            61.9865100000
+titanium_63            62.9937500000
+titanium          0.08250000 titanium_46 \
+                + 0.07440000 titanium_47 \
+                + 0.73720000 titanium_48 \
+                + 0.05410000 titanium_49 \
+                + 0.05180000 titanium_50
+
+# vanadium: V (23)  std atomic weight: 50.9415(1)
+vanadium_40            40.0127600000
+vanadium_41            41.0002100000
+vanadium_42            41.9918200000
+vanadium_43            42.9807660000
+vanadium_44            43.9741100000
+vanadium_45            44.9657748000
+vanadium_46            45.9601987800
+vanadium_47            46.9549049100
+vanadium_48            47.9522522000
+vanadium_49            48.9485118000
+vanadium_50            49.9471560100   # 0.00250000
+vanadium_51            50.9439570400   # 0.99750000
+vanadium_52            51.9447730100
+vanadium_53            52.9443367000
+vanadium_54            53.9464390000
+vanadium_55            54.9472400000
+vanadium_56            55.9504800000
+vanadium_57            56.9525200000
+vanadium_58            57.9567200000
+vanadium_59            58.9593900000
+vanadium_60            59.9643100000
+vanadium_61            60.9672500000
+vanadium_62            61.9726500000
+vanadium_63            62.9763900000
+vanadium_64            63.9826400000
+vanadium_65            64.9875000000
+vanadium_66            65.9939800000
+vanadium          0.00250000 vanadium_50 \
+                + 0.99750000 vanadium_51
+
+# chromium: Cr (24)  std atomic weight: 51.9961(6)
+chromium_42            42.0067000000
+chromium_43            42.9975300000
+chromium_44            43.9853600000
+chromium_45            44.9790500000
+chromium_46            45.9683590000
+chromium_47            46.9628974000
+chromium_48            47.9540291000
+chromium_49            48.9513333000
+chromium_50            49.9460418300   # 0.04345000
+chromium_51            50.9447650200
+chromium_52            51.9405062300   # 0.83789000
+chromium_53            52.9406481500   # 0.09501000
+chromium_54            53.9388791600   # 0.02365000
+chromium_55            54.9408384300
+chromium_56            55.9406531000
+chromium_57            56.9436130000
+chromium_58            57.9443500000
+chromium_59            58.9485900000
+chromium_60            59.9500800000
+chromium_61            60.9544200000
+chromium_62            61.9561000000
+chromium_63            62.9616500000
+chromium_64            63.9640800000
+chromium_65            64.9699600000
+chromium_66            65.9736600000
+chromium_67            66.9801600000
+chromium_68            67.9840300000
+chromium          0.04345000 chromium_50 \
+                + 0.83789000 chromium_52 \
+                + 0.09501000 chromium_53 \
+                + 0.02365000 chromium_54
+
+# manganese: Mn (25)  std atomic weight: 54.938044(3)
+manganese_44           44.0071500000
+manganese_45           44.9944900000
+manganese_46           45.9860900000
+manganese_47           46.9757750000
+manganese_48           47.9685200000
+manganese_49           48.9595950000
+manganese_50           49.9542377800
+manganese_51           50.9482084700
+manganese_52           51.9455639000
+manganese_53           52.9412888900
+manganese_54           53.9403576000
+manganese_55           54.9380439100   # 1.00000000
+manganese_56           55.9389036900
+manganese_57           56.9382861000
+manganese_58           57.9400666000
+manganese_59           58.9403911000
+manganese_60           59.9431366000
+manganese_61           60.9444525000
+manganese_62           61.9479500000
+manganese_63           62.9496647000
+manganese_64           63.9538494000
+manganese_65           64.9560198000
+manganese_66           65.9605470000
+manganese_67           66.9642400000
+manganese_68           67.9696200000
+manganese_69           68.9736600000
+manganese_70           69.9793700000
+manganese_71           70.9836800000
+manganese              manganese_55
+
+# iron: Fe (26)  std atomic weight: 55.845(2)
+iron_45                45.0144200000
+iron_46                46.0006300000
+iron_47                46.9918500000
+iron_48                47.9802300000
+iron_49                48.9734290000
+iron_50                49.9629750000
+iron_51                50.9568410000
+iron_52                51.9481131000
+iron_53                52.9453064000
+iron_54                53.9396089900   # 0.05845000
+iron_55                54.9382919900
+iron_56                55.9349363300   # 0.91754000
+iron_57                56.9353928400   # 0.02119000
+iron_58                57.9332744300   # 0.00282000
+iron_59                58.9348743400
+iron_60                59.9340711000
+iron_61                60.9367462000
+iron_62                61.9367918000
+iron_63                62.9402727000
+iron_64                63.9409878000
+iron_65                64.9450115000
+iron_66                65.9462500000
+iron_67                66.9505400000
+iron_68                67.9529500000
+iron_69                68.9580700000
+iron_70                69.9610200000
+iron_71                70.9667200000
+iron_72                71.9698300000
+iron_73                72.9757200000
+iron_74                73.9793500000
+iron              0.05845000 iron_54 \
+                + 0.91754000 iron_56 \
+                + 0.02119000 iron_57 \
+                + 0.00282000 iron_58
+
+# cobalt: Co (27)  std atomic weight: 58.933194(4)
+cobalt_47              47.0105700000
+cobalt_48              48.0009300000
+cobalt_49              48.9889100000
+cobalt_50              49.9809100000
+cobalt_51              50.9706470000
+cobalt_52              51.9635100000
+cobalt_53              52.9542041000
+cobalt_54              53.9484598700
+cobalt_55              54.9419972000
+cobalt_56              55.9398388000
+cobalt_57              56.9362905700
+cobalt_58              57.9357521000
+cobalt_59              58.9331942900   # 1.00000000
+cobalt_60              59.9338163000
+cobalt_61              60.9324766200
+cobalt_62              61.9340590000
+cobalt_63              62.9336000000
+cobalt_64              63.9358110000
+cobalt_65              64.9364621000
+cobalt_66              65.9394430000
+cobalt_67              66.9406096000
+cobalt_68              67.9442600000
+cobalt_69              68.9461400000
+cobalt_70              69.9496300000
+cobalt_71              70.9523700000
+cobalt_72              71.9572900000
+cobalt_73              72.9603900000
+cobalt_74              73.9651500000
+cobalt_75              74.9687600000
+cobalt_76              75.9741300000
+cobalt                 cobalt_59
+
+# nickel: Ni (28)  std atomic weight: 58.6934(4)
+nickel_48              48.0176900000
+nickel_49              49.0077000000
+nickel_50              49.9947400000
+nickel_51              50.9861100000
+nickel_52              51.9748000000
+nickel_53              52.9681900000
+nickel_54              53.9578920000
+nickel_55              54.9513306300
+nickel_56              55.9421285500
+nickel_57              56.9397921800
+nickel_58              57.9353424100   # 0.68077000
+nickel_59              58.9343462000
+nickel_60              59.9307858800   # 0.26223000
+nickel_61              60.9310555700   # 0.01139900
+nickel_62              61.9283453700   # 0.03634600
+nickel_63              62.9296696300
+nickel_64              63.9279668200   # 0.00925500
+nickel_65              64.9300851700
+nickel_66              65.9291393000
+nickel_67              66.9315694000
+nickel_68              67.9318688000
+nickel_69              68.9356103000
+nickel_70              69.9364313000
+nickel_71              70.9405190000
+nickel_72              71.9417859000
+nickel_73              72.9462067000
+nickel_74              73.9479800000
+nickel_75              74.9525000000
+nickel_76              75.9553300000
+nickel_77              76.9605500000
+nickel_78              77.9633600000
+nickel_79              78.9702500000
+nickel            0.68077000 nickel_58 \
+                + 0.26223000 nickel_60 \
+                + 0.01139900 nickel_61 \
+                + 0.03634600 nickel_62 \
+                + 0.00925500 nickel_64
+
+# copper: Cu (29)  std atomic weight: 63.546(3)
+copper_52              51.9967100000
+copper_53              52.9845900000
+copper_54              53.9766600000
+copper_55              54.9660400000
+copper_56              55.9589500000
+copper_57              56.9492125000
+copper_58              57.9445330500
+copper_59              58.9394974800
+copper_60              59.9373645000
+copper_61              60.9334576000
+copper_62              61.9325954100
+copper_63              62.9295977200   # 0.69150000
+copper_64              63.9297643400
+copper_65              64.9277897000   # 0.30850000
+copper_66              65.9288690300
+copper_67              66.9277303000
+copper_68              67.9296109000
+copper_69              68.9294293000
+copper_70              69.9323921000
+copper_71              70.9326768000
+copper_72              71.9358203000
+copper_73              72.9366744000
+copper_74              73.9398749000
+copper_75              74.9415226000
+copper_76              75.9452750000
+copper_77              76.9479200000
+copper_78              77.9522300000
+copper_79              78.9550200000
+copper_80              79.9608900000
+copper_81              80.9658700000
+copper_82              81.9724400000
+copper            0.69150000 copper_63 \
+                + 0.30850000 copper_65
+
+# zinc: Zn (30)  std atomic weight: 65.38(2)
+zinc_54                53.9920400000
+zinc_55                54.9839800000
+zinc_56                55.9725400000
+zinc_57                56.9650600000
+zinc_58                57.9545910000
+zinc_59                58.9493126600
+zinc_60                59.9418421000
+zinc_61                60.9395070000
+zinc_62                61.9343339700
+zinc_63                62.9332115000
+zinc_64                63.9291420100   # 0.49170000
+zinc_65                64.9292407700
+zinc_66                65.9260338100   # 0.27730000
+zinc_67                66.9271277500   # 0.04040000
+zinc_68                67.9248445500   # 0.18450000
+zinc_69                68.9265507000
+zinc_70                69.9253192000   # 0.00610000
+zinc_71                70.9277196000
+zinc_72                71.9268428000
+zinc_73                72.9295826000
+zinc_74                73.9294073000
+zinc_75                74.9328402000
+zinc_76                75.9331150000
+zinc_77                76.9368872000
+zinc_78                77.9382892000
+zinc_79                78.9426381000
+zinc_80                79.9445529000
+zinc_81                80.9504026000
+zinc_82                81.9542600000
+zinc_83                82.9605600000
+zinc_84                83.9652100000
+zinc_85                84.9722600000
+zinc              0.49170000 zinc_64 \
+                + 0.27730000 zinc_66 \
+                + 0.04040000 zinc_67 \
+                + 0.18450000 zinc_68 \
+                + 0.00610000 zinc_70
+
+# gallium: Ga (31)  std atomic weight: 69.723(1)
+gallium_56             55.9953600000
+gallium_57             56.9832000000
+gallium_58             57.9747800000
+gallium_59             58.9635300000
+gallium_60             59.9572900000
+gallium_61             60.9493990000
+gallium_62             61.9441902500
+gallium_63             62.9392942000
+gallium_64             63.9368404000
+gallium_65             64.9327345900
+gallium_66             65.9315894000
+gallium_67             66.9282025000
+gallium_68             67.9279805000
+gallium_69             68.9255735000   # 0.60108000
+gallium_70             69.9260219000
+gallium_71             70.9247025800   # 0.39892000
+gallium_72             71.9263674700
+gallium_73             72.9251747000
+gallium_74             73.9269457000
+gallium_75             74.9265002000
+gallium_76             75.9288276000
+gallium_77             76.9291543000
+gallium_78             77.9316088000
+gallium_79             78.9328523000
+gallium_80             79.9364208000
+gallium_81             80.9381338000
+gallium_82             81.9431765000
+gallium_83             82.9471203000
+gallium_84             83.9524600000
+gallium_85             84.9569900000
+gallium_86             85.9630100000
+gallium_87             86.9682400000
+gallium           0.60108000 gallium_69 \
+                + 0.39892000 gallium_71
+
+# germanium: Ge (32)  std atomic weight: 72.630(8)
+germanium_58           57.9917200000
+germanium_59           58.9824900000
+germanium_60           59.9703600000
+germanium_61           60.9637900000
+germanium_62           61.9550200000
+germanium_63           62.9496280000
+germanium_64           63.9416899000
+germanium_65           64.9393681000
+germanium_66           65.9338621000
+germanium_67           66.9327339000
+germanium_68           67.9280953000
+germanium_69           68.9279645000
+germanium_70           69.9242487500   # 0.20570000
+germanium_71           70.9249523300
+germanium_72           71.9220758260   # 0.27450000
+germanium_73           72.9234589560   # 0.07750000
+germanium_74           73.9211777610   # 0.36500000
+germanium_75           74.9228583700
+germanium_76           75.9214027260   # 0.07730000
+germanium_77           76.9235498430
+germanium_78           77.9228529000
+germanium_79           78.9253600000
+germanium_80           79.9253508000
+germanium_81           80.9288329000
+germanium_82           81.9297740000
+germanium_83           82.9345391000
+germanium_84           83.9375751000
+germanium_85           84.9429697000
+germanium_86           85.9465800000
+germanium_87           86.9526800000
+germanium_88           87.9569100000
+germanium_89           88.9637900000
+germanium_90           89.9686300000
+germanium         0.20570000 germanium_70 \
+                + 0.27450000 germanium_72 \
+                + 0.07750000 germanium_73 \
+                + 0.36500000 germanium_74 \
+                + 0.07730000 germanium_76
+
+# arsenic: As (33)  std atomic weight: 74.921595(6)
+arsenic_60             59.9938800000
+arsenic_61             60.9811200000
+arsenic_62             61.9736100000
+arsenic_63             62.9639000000
+arsenic_64             63.9574300000
+arsenic_65             64.9496110000
+arsenic_66             65.9441488000
+arsenic_67             66.9392511100
+arsenic_68             67.9367741000
+arsenic_69             68.9322460000
+arsenic_70             69.9309260000
+arsenic_71             70.9271138000
+arsenic_72             71.9267523000
+arsenic_73             72.9238291000
+arsenic_74             73.9239286000
+arsenic_75             74.9215945700   # 1.00000000
+arsenic_76             75.9223920200
+arsenic_77             76.9206476000
+arsenic_78             77.9218280000
+arsenic_79             78.9209484000
+arsenic_80             79.9224746000
+arsenic_81             80.9221323000
+arsenic_82             81.9247412000
+arsenic_83             82.9252069000
+arsenic_84             83.9293033000
+arsenic_85             84.9321637000
+arsenic_86             85.9367015000
+arsenic_87             86.9402917000
+arsenic_88             87.9455500000
+arsenic_89             88.9497600000
+arsenic_90             89.9556300000
+arsenic_91             90.9603900000
+arsenic_92             91.9667400000
+arsenic                arsenic_75
+
+# selenium: Se (34)  std atomic weight: 78.971(8)
+selenium_64            63.9710900000
+selenium_65            64.9644000000
+selenium_66            65.9555900000
+selenium_67            66.9499940000
+selenium_68            67.9418252400
+selenium_69            68.9394148000
+selenium_70            69.9335155000
+selenium_71            70.9322094000
+selenium_72            71.9271405000
+selenium_73            72.9267549000
+selenium_74            73.9224759340   # 0.00890000
+selenium_75            74.9225228700
+selenium_76            75.9192137040   # 0.09370000
+selenium_77            76.9199141540   # 0.07630000
+selenium_78            77.9173092800   # 0.23770000
+selenium_79            78.9184992900
+selenium_80            79.9165218000   # 0.49610000
+selenium_81            80.9179930000
+selenium_82            81.9166995000   # 0.08730000
+selenium_83            82.9191186000
+selenium_84            83.9184668000
+selenium_85            84.9222608000
+selenium_86            85.9243117000
+selenium_87            86.9286886000
+selenium_88            87.9314175000
+selenium_89            88.9366691000
+selenium_90            89.9401000000
+selenium_91            90.9459600000
+selenium_92            91.9498400000
+selenium_93            92.9562900000
+selenium_94            93.9604900000
+selenium_95            94.9673000000
+selenium          0.00890000 selenium_74 \
+                + 0.09370000 selenium_76 \
+                + 0.07630000 selenium_77 \
+                + 0.23770000 selenium_78 \
+                + 0.49610000 selenium_80 \
+                + 0.08730000 selenium_82
+
+# bromine: Br (35)  std atomic weight: [79.901,79.907]
+bromine_67             66.9646500000
+bromine_68             67.9587300000
+bromine_69             68.9504970000
+bromine_70             69.9447920000
+bromine_71             70.9393422000
+bromine_72             71.9365886000
+bromine_73             72.9316715000
+bromine_74             73.9299102000
+bromine_75             74.9258105000
+bromine_76             75.9245420000
+bromine_77             76.9213792000
+bromine_78             77.9211459000
+bromine_79             78.9183376000   # 0.50690000
+bromine_80             79.9185298000
+bromine_81             80.9162897000   # 0.49310000
+bromine_82             81.9168032000
+bromine_83             82.9151756000
+bromine_84             83.9164960000
+bromine_85             84.9156458000
+bromine_86             85.9188054000
+bromine_87             86.9206740000
+bromine_88             87.9240833000
+bromine_89             88.9267046000
+bromine_90             89.9312928000
+bromine_91             90.9343986000
+bromine_92             91.9396316000
+bromine_93             92.9431300000
+bromine_94             93.9489000000
+bromine_95             94.9530100000
+bromine_96             95.9590300000
+bromine_97             96.9634400000
+bromine_98             97.9694600000
+bromine           0.50690000 bromine_79 \
+                + 0.49310000 bromine_81
+
+# krypton: Kr (36)  std atomic weight: 83.798(2)
+krypton_69             68.9651800000
+krypton_70             69.9560400000
+krypton_71             70.9502700000
+krypton_72             71.9420924000
+krypton_73             72.9392892000
+krypton_74             73.9330840000
+krypton_75             74.9309457000
+krypton_76             75.9259103000
+krypton_77             76.9246700000
+krypton_78             77.9203649400   # 0.00355000
+krypton_79             78.9200829000
+krypton_80             79.9163780800   # 0.02286000
+krypton_81             80.9165912000
+krypton_82             81.9134827300   # 0.11593000
+krypton_83             82.9141271600   # 0.11500000
+krypton_84             83.9114977282   # 0.56987000
+krypton_85             84.9125273000
+krypton_86             85.9106106269   # 0.17279000
+krypton_87             86.9133547600
+krypton_88             87.9144479000
+krypton_89             88.9178355000
+krypton_90             89.9195279000
+krypton_91             90.9238063000
+krypton_92             91.9261731000
+krypton_93             92.9311472000
+krypton_94             93.9341400000
+krypton_95             94.9397110000
+krypton_96             95.9430170000
+krypton_97             96.9490900000
+krypton_98             97.9524300000
+krypton_99             98.9583900000
+krypton_100            99.9623700000
+krypton_101           100.9687300000
+krypton           0.00355000 krypton_78 \
+                + 0.02286000 krypton_80 \
+                + 0.11593000 krypton_82 \
+                + 0.11500000 krypton_83 \
+                + 0.56987000 krypton_84 \
+                + 0.17279000 krypton_86
+
+# rubidium: Rb (37)  std atomic weight: 85.4678(3)
+rubidium_71            70.9653200000
+rubidium_72            71.9590800000
+rubidium_73            72.9505300000
+rubidium_74            73.9442659000
+rubidium_75            74.9385732000
+rubidium_76            75.9350730000
+rubidium_77            76.9304016000
+rubidium_78            77.9281419000
+rubidium_79            78.9239899000
+rubidium_80            79.9225164000
+rubidium_81            80.9189939000
+rubidium_82            81.9182090000
+rubidium_83            82.9151142000
+rubidium_84            83.9143752000
+rubidium_85            84.9117897379   # 0.72170000
+rubidium_86            85.9111674300
+rubidium_87            86.9091805310   # 0.27830000
+rubidium_88            87.9113155900
+rubidium_89            88.9122783000
+rubidium_90            89.9147985000
+rubidium_91            90.9165372000
+rubidium_92            91.9197284000
+rubidium_93            92.9220393000
+rubidium_94            93.9263948000
+rubidium_95            94.9292600000
+rubidium_96            95.9341334000
+rubidium_97            96.9371771000
+rubidium_98            97.9416869000
+rubidium_99            98.9450300000
+rubidium_100           99.9500300000
+rubidium_101          100.9540400000
+rubidium_102          101.9595200000
+rubidium_103          102.9639200000
+rubidium          0.72170000 rubidium_85 \
+                + 0.27830000 rubidium_87
+
+# strontium: Sr (38)  std atomic weight: 87.62(1)
+strontium_73           72.9657000000
+strontium_74           73.9561700000
+strontium_75           74.9499500000
+strontium_76           75.9417630000
+strontium_77           76.9379455000
+strontium_78           77.9321800000
+strontium_79           78.9297077000
+strontium_80           79.9245175000
+strontium_81           80.9232114000
+strontium_82           81.9183999000
+strontium_83           82.9175544000
+strontium_84           83.9134191000   # 0.00560000
+strontium_85           84.9129320000
+strontium_86           85.9092606000   # 0.09860000
+strontium_87           86.9088775000   # 0.07000000
+strontium_88           87.9056125000   # 0.82580000
+strontium_89           88.9074511000
+strontium_90           89.9077300000
+strontium_91           90.9101954000
+strontium_92           91.9110382000
+strontium_93           92.9140242000
+strontium_94           93.9153556000
+strontium_95           94.9193529000
+strontium_96           95.9217066000
+strontium_97           96.9263740000
+strontium_98           97.9286888000
+strontium_99           98.9328907000
+strontium_100          99.9357700000
+strontium_101         100.9403520000
+strontium_102         101.9437910000
+strontium_103         102.9490900000
+strontium_104         103.9526500000
+strontium_105         104.9585500000
+strontium_106         105.9626500000
+strontium_107         106.9689700000
+strontium         0.00560000 strontium_84 \
+                + 0.09860000 strontium_86 \
+                + 0.07000000 strontium_87 \
+                + 0.82580000 strontium_88
+
+# yttrium: Y (39)  std atomic weight: 88.90584(2)
+yttrium_76             75.9585600000
+yttrium_77             76.9497810000
+yttrium_78             77.9436100000
+yttrium_79             78.9373500000
+yttrium_80             79.9343561000
+yttrium_81             80.9294556000
+yttrium_82             81.9269314000
+yttrium_83             82.9224850000
+yttrium_84             83.9206721000
+yttrium_85             84.9164330000
+yttrium_86             85.9148860000
+yttrium_87             86.9108761000
+yttrium_88             87.9095016000
+yttrium_89             88.9058403000   # 1.00000000
+yttrium_90             89.9071439000
+yttrium_91             90.9072974000
+yttrium_92             91.9089451000
+yttrium_93             92.9095780000
+yttrium_94             93.9115906000
+yttrium_95             94.9128161000
+yttrium_96             95.9158968000
+yttrium_97             96.9182741000
+yttrium_98             97.9223821000
+yttrium_99             98.9241480000
+yttrium_100            99.9277150000
+yttrium_101           100.9301477000
+yttrium_102           101.9343277000
+yttrium_103           102.9372430000
+yttrium_104           103.9419600000
+yttrium_105           104.9454400000
+yttrium_106           105.9505600000
+yttrium_107           106.9545200000
+yttrium_108           107.9599600000
+yttrium_109           108.9643600000
+yttrium               yttrium_89
+
+# zirconium: Zr (40)  std atomic weight: 91.224(2)
+zirconium_78           77.9556600000
+zirconium_79           78.9494800000
+zirconium_80           79.9404000000
+zirconium_81           80.9373100000
+zirconium_82           81.9313500000
+zirconium_83           82.9292421000
+zirconium_84           83.9233269000
+zirconium_85           84.9214444000
+zirconium_86           85.9162972000
+zirconium_87           86.9148180000
+zirconium_88           87.9102213000
+zirconium_89           88.9088814000
+zirconium_90           89.9046977000   # 0.51450000
+zirconium_91           90.9056396000   # 0.11220000
+zirconium_92           91.9050347000   # 0.17150000
+zirconium_93           92.9064699000
+zirconium_94           93.9063108000   # 0.17380000
+zirconium_95           94.9080385000
+zirconium_96           95.9082714000   # 0.02800000
+zirconium_97           96.9109512000
+zirconium_98           97.9127289000
+zirconium_99           98.9166670000
+zirconium_100          99.9180006000
+zirconium_101         100.9214480000
+zirconium_102         101.9231409000
+zirconium_103         102.9271910000
+zirconium_104         103.9294360000
+zirconium_105         104.9340080000
+zirconium_106         105.9367600000
+zirconium_107         106.9417400000
+zirconium_108         107.9448700000
+zirconium_109         108.9504100000
+zirconium_110         109.9539600000
+zirconium_111         110.9596800000
+zirconium_112         111.9637000000
+zirconium         0.51450000 zirconium_90 \
+                + 0.11220000 zirconium_91 \
+                + 0.17150000 zirconium_92 \
+                + 0.17380000 zirconium_94 \
+                + 0.02800000 zirconium_96
+
+# niobium: Nb (41)  std atomic weight: 92.90637(2)
+niobium_81             80.9496000000
+niobium_82             81.9439600000
+niobium_83             82.9372900000
+niobium_84             83.9344900000
+niobium_85             84.9288458000
+niobium_86             85.9257828000
+niobium_87             86.9206937000
+niobium_88             87.9182220000
+niobium_89             88.9134450000
+niobium_90             89.9112584000
+niobium_91             90.9069897000
+niobium_92             91.9071881000
+niobium_93             92.9063730000   # 1.00000000
+niobium_94             93.9072788000
+niobium_95             94.9068324000
+niobium_96             95.9080973000
+niobium_97             96.9080959000
+niobium_98             97.9103265000
+niobium_99             98.9116130000
+niobium_100            99.9143276000
+niobium_101           100.9153103000
+niobium_102           101.9180772000
+niobium_103           102.9194572000
+niobium_104           103.9228925000
+niobium_105           104.9249465000
+niobium_106           105.9289317000
+niobium_107           106.9315937000
+niobium_108           107.9360748000
+niobium_109           108.9392200000
+niobium_110           109.9440300000
+niobium_111           110.9475300000
+niobium_112           111.9524700000
+niobium_113           112.9565100000
+niobium_114           113.9620100000
+niobium_115           114.9663400000
+niobium               niobium_93
+
+# molybdenum: Mo (42)  std atomic weight: 95.95(1)
+molybdenum_83          82.9498800000
+molybdenum_84          83.9414900000
+molybdenum_85          84.9382610000
+molybdenum_86          85.9311748000
+molybdenum_87          86.9281962000
+molybdenum_88          87.9219678000
+molybdenum_89          88.9194682000
+molybdenum_90          89.9139309000
+molybdenum_91          90.9117453000
+molybdenum_92          91.9068079600   # 0.14530000
+molybdenum_93          92.9068095800
+molybdenum_94          93.9050849000   # 0.09150000
+molybdenum_95          94.9058387700   # 0.15840000
+molybdenum_96          95.9046761200   # 0.16670000
+molybdenum_97          96.9060181200   # 0.09600000
+molybdenum_98          97.9054048200   # 0.24390000
+molybdenum_99          98.9077085100
+molybdenum_100         99.9074718000   # 0.09820000
+molybdenum_101        100.9103414000
+molybdenum_102        101.9102834000
+molybdenum_103        102.9130790000
+molybdenum_104        103.9137344000
+molybdenum_105        104.9169690000
+molybdenum_106        105.9182590000
+molybdenum_107        106.9221060000
+molybdenum_108        107.9240330000
+molybdenum_109        108.9284240000
+molybdenum_110        109.9307040000
+molybdenum_111        110.9356540000
+molybdenum_112        111.9383100000
+molybdenum_113        112.9433500000
+molybdenum_114        113.9465300000
+molybdenum_115        114.9519600000
+molybdenum_116        115.9554500000
+molybdenum_117        116.9611700000
+molybdenum        0.14530000 molybdenum_92 \
+                + 0.09150000 molybdenum_94 \
+                + 0.15840000 molybdenum_95 \
+                + 0.16670000 molybdenum_96 \
+                + 0.09600000 molybdenum_97 \
+                + 0.24390000 molybdenum_98 \
+                + 0.09820000 molybdenum_100
+
+# technetium: Tc (43)  std atomic weight: [98]
+technetium_85          84.9505800000
+technetium_86          85.9449300000
+technetium_87          86.9380672000
+technetium_88          87.9337800000
+technetium_89          88.9276487000
+technetium_90          89.9240739000
+technetium_91          90.9184254000
+technetium_92          91.9152698000
+technetium_93          92.9102460000
+technetium_94          93.9096536000
+technetium_95          94.9076536000
+technetium_96          95.9078680000
+technetium_97          96.9063667000
+technetium_98          97.9072124000
+technetium_99          98.9062508000
+technetium_100         99.9076539000
+technetium_101        100.9073090000
+technetium_102        101.9092097000
+technetium_103        102.9091760000
+technetium_104        103.9114250000
+technetium_105        104.9116550000
+technetium_106        105.9143580000
+technetium_107        106.9154606000
+technetium_108        107.9184957000
+technetium_109        108.9202560000
+technetium_110        109.9237440000
+technetium_111        110.9259010000
+technetium_112        111.9299458000
+technetium_113        112.9325690000
+technetium_114        113.9369100000
+technetium_115        114.9399800000
+technetium_116        115.9447600000
+technetium_117        116.9480600000
+technetium_118        117.9529900000
+technetium_119        118.9566600000
+technetium_120        119.9618700000
+technetium            technetium_98    # most stable
+
+# ruthenium: Ru (44)  std atomic weight: 101.07(2)
+ruthenium_87           86.9506900000
+ruthenium_88           87.9416000000
+ruthenium_89           88.9376200000
+ruthenium_90           89.9303444000
+ruthenium_91           90.9267419000
+ruthenium_92           91.9202344000
+ruthenium_93           92.9171044000
+ruthenium_94           93.9113429000
+ruthenium_95           94.9104060000
+ruthenium_96           95.9075902500   # 0.05540000
+ruthenium_97           96.9075471000
+ruthenium_98           97.9052868000   # 0.01870000
+ruthenium_99           98.9059341000   # 0.12760000
+ruthenium_100          99.9042143000   # 0.12600000
+ruthenium_101         100.9055769000   # 0.17060000
+ruthenium_102         101.9043441000   # 0.31550000
+ruthenium_103         102.9063186000
+ruthenium_104         103.9054275000   # 0.18620000
+ruthenium_105         104.9077476000
+ruthenium_106         105.9073291000
+ruthenium_107         106.9099720000
+ruthenium_108         107.9101880000
+ruthenium_109         108.9133260000
+ruthenium_110         109.9140407000
+ruthenium_111         110.9175700000
+ruthenium_112         111.9188090000
+ruthenium_113         112.9228440000
+ruthenium_114         113.9246136000
+ruthenium_115         114.9288200000
+ruthenium_116         115.9312192000
+ruthenium_117         116.9361000000
+ruthenium_118         117.9385300000
+ruthenium_119         118.9435700000
+ruthenium_120         119.9463100000
+ruthenium_121         120.9516400000
+ruthenium_122         121.9544700000
+ruthenium_123         122.9598900000
+ruthenium_124         123.9630500000
+ruthenium         0.05540000 ruthenium_96 \
+                + 0.01870000 ruthenium_98 \
+                + 0.12760000 ruthenium_99 \
+                + 0.12600000 ruthenium_100 \
+                + 0.17060000 ruthenium_101 \
+                + 0.31550000 ruthenium_102 \
+                + 0.18620000 ruthenium_104
+
+# rhodium: Rh (45)  std atomic weight: 102.90550(2)
+rhodium_89             88.9505800000
+rhodium_90             89.9442200000
+rhodium_91             90.9368800000
+rhodium_92             91.9323677000
+rhodium_93             92.9259128000
+rhodium_94             93.9217305000
+rhodium_95             94.9158979000
+rhodium_96             95.9144530000
+rhodium_97             96.9113290000
+rhodium_98             97.9107080000
+rhodium_99             98.9081282000
+rhodium_100            99.9081170000
+rhodium_101           100.9061606000
+rhodium_102           101.9068374000
+rhodium_103           102.9054980000   # 1.00000000
+rhodium_104           103.9066492000
+rhodium_105           104.9056885000
+rhodium_106           105.9072868000
+rhodium_107           106.9067480000
+rhodium_108           107.9087140000
+rhodium_109           108.9087488000
+rhodium_110           109.9110790000
+rhodium_111           110.9116423000
+rhodium_112           111.9144030000
+rhodium_113           112.9154393000
+rhodium_114           113.9187180000
+rhodium_115           114.9203116000
+rhodium_116           115.9240590000
+rhodium_117           116.9260354000
+rhodium_118           117.9303400000
+rhodium_119           118.9325570000
+rhodium_120           119.9368600000
+rhodium_121           120.9394200000
+rhodium_122           121.9439900000
+rhodium_123           122.9468500000
+rhodium_124           123.9515100000
+rhodium_125           124.9546900000
+rhodium_126           125.9594600000
+rhodium               rhodium_103
+
+# palladium: Pd (46)  std atomic weight: 106.42(1)
+palladium_91           90.9503200000
+palladium_92           91.9408800000
+palladium_93           92.9365100000
+palladium_94           93.9290376000
+palladium_95           94.9248898000
+palladium_96           95.9182151000
+palladium_97           96.9164720000
+palladium_98           97.9126983000
+palladium_99           98.9117748000
+palladium_100          99.9085050000
+palladium_101         100.9082864000
+palladium_102         101.9056022000   # 0.01020000
+palladium_103         102.9060809000
+palladium_104         103.9040305000   # 0.11140000
+palladium_105         104.9050796000   # 0.22330000
+palladium_106         105.9034804000   # 0.27330000
+palladium_107         106.9051282000
+palladium_108         107.9038916000   # 0.26460000
+palladium_109         108.9059504000
+palladium_110         109.9051722000   # 0.11720000
+palladium_111         110.9076896800
+palladium_112         111.9073297000
+palladium_113         112.9102610000
+palladium_114         113.9103686000
+palladium_115         114.9136590000
+palladium_116         115.9142970000
+palladium_117         116.9179547000
+palladium_118         117.9190667000
+palladium_119         118.9233402000
+palladium_120         119.9245511000
+palladium_121         120.9289503000
+palladium_122         121.9306320000
+palladium_123         122.9351400000
+palladium_124         123.9371400000
+palladium_125         124.9417900000
+palladium_126         125.9441600000
+palladium_127         126.9490700000
+palladium_128         127.9518300000
+palladium         0.01020000 palladium_102 \
+                + 0.11140000 palladium_104 \
+                + 0.22330000 palladium_105 \
+                + 0.27330000 palladium_106 \
+                + 0.26460000 palladium_108 \
+                + 0.11720000 palladium_110
+
+# silver: Ag (47)  std atomic weight: 107.8682(2)
+silver_93              92.9503300000
+silver_94              93.9437300000
+silver_95              94.9360200000
+silver_96              95.9307440000
+silver_97              96.9239700000
+silver_98              97.9215600000
+silver_99              98.9176458000
+silver_100             99.9161154000
+silver_101            100.9126840000
+silver_102            101.9117047000
+silver_103            102.9089631000
+silver_104            103.9086239000
+silver_105            104.9065256000
+silver_106            105.9066636000
+silver_107            106.9050916000   # 0.51839000
+silver_108            107.9059503000
+silver_109            108.9047553000   # 0.48161000
+silver_110            109.9061102000
+silver_111            110.9052959000
+silver_112            111.9070486000
+silver_113            112.9065730000
+silver_114            113.9088230000
+silver_115            114.9087670000
+silver_116            115.9113868000
+silver_117            116.9117740000
+silver_118            117.9145955000
+silver_119            118.9155700000
+silver_120            119.9187848000
+silver_121            120.9201250000
+silver_122            121.9236640000
+silver_123            122.9253370000
+silver_124            123.9289300000
+silver_125            124.9310500000
+silver_126            125.9347500000
+silver_127            126.9371100000
+silver_128            127.9410600000
+silver_129            128.9439500000
+silver_130            129.9507000000
+silver            0.51839000 silver_107 \
+                + 0.48161000 silver_109
+
+# cadmium: Cd (48)  std atomic weight: 112.414(4)
+cadmium_95             94.9499400000
+cadmium_96             95.9403400000
+cadmium_97             96.9351000000
+cadmium_98             97.9273890000
+cadmium_99             98.9249258000
+cadmium_100            99.9203488000
+cadmium_101           100.9185862000
+cadmium_102           101.9144820000
+cadmium_103           102.9134165000
+cadmium_104           103.9098564000
+cadmium_105           104.9094639000
+cadmium_106           105.9064599000   # 0.01250000
+cadmium_107           106.9066121000
+cadmium_108           107.9041834000   # 0.00890000
+cadmium_109           108.9049867000
+cadmium_110           109.9030066100   # 0.12490000
+cadmium_111           110.9041828700   # 0.12800000
+cadmium_112           111.9027628700   # 0.24130000
+cadmium_113           112.9044081300   # 0.12220000
+cadmium_114           113.9033650900   # 0.28730000
+cadmium_115           114.9054375100
+cadmium_116           115.9047631500   # 0.07490000
+cadmium_117           116.9072260000
+cadmium_118           117.9069220000
+cadmium_119           118.9098470000
+cadmium_120           119.9098681000
+cadmium_121           120.9129637000
+cadmium_122           121.9134591000
+cadmium_123           122.9168925000
+cadmium_124           123.9176574000
+cadmium_125           124.9212576000
+cadmium_126           125.9224291000
+cadmium_127           126.9264720000
+cadmium_128           127.9278129000
+cadmium_129           128.9318200000
+cadmium_130           129.9339400000
+cadmium_131           130.9406000000
+cadmium_132           131.9460400000
+cadmium_133           132.9528500000
+cadmium           0.01250000 cadmium_106 \
+                + 0.00890000 cadmium_108 \
+                + 0.12490000 cadmium_110 \
+                + 0.12800000 cadmium_111 \
+                + 0.24130000 cadmium_112 \
+                + 0.12220000 cadmium_113 \
+                + 0.28730000 cadmium_114 \
+                + 0.07490000 cadmium_116
+
+# indium: In (49)  std atomic weight: 114.818(1)
+indium_97              96.9493400000
+indium_98              97.9421400000
+indium_99              98.9341100000
+indium_100             99.9309600000
+indium_101            100.9263400000
+indium_102            101.9241071000
+indium_103            102.9198819000
+indium_104            103.9182145000
+indium_105            104.9145020000
+indium_106            105.9134640000
+indium_107            106.9102900000
+indium_108            107.9096935000
+indium_109            108.9071514000
+indium_110            109.9071700000
+indium_111            110.9051085000
+indium_112            111.9055377000
+indium_113            112.9040618400   # 0.04290000
+indium_114            113.9049179100
+indium_115            114.9038787760   # 0.95710000
+indium_116            115.9052599900
+indium_117            116.9045157000
+indium_118            117.9063566000
+indium_119            118.9058507000
+indium_120            119.9079670000
+indium_121            120.9078510000
+indium_122            121.9102810000
+indium_123            122.9104340000
+indium_124            123.9131820000
+indium_125            124.9136050000
+indium_126            125.9165070000
+indium_127            126.9174460000
+indium_128            127.9204000000
+indium_129            128.9218053000
+indium_130            129.9249770000
+indium_131            130.9269715000
+indium_132            131.9330010000
+indium_133            132.9383100000
+indium_134            133.9445400000
+indium_135            134.9500500000
+indium            0.04290000 indium_113 \
+                + 0.95710000 indium_115
+
+# tin: Sn (50)  std atomic weight: 118.710(7)
+tin_99                 98.9485300000
+tin_100                99.9385000000
+tin_101               100.9352600000
+tin_102               101.9302900000
+tin_103               102.9281050000
+tin_104               103.9231052000
+tin_105               104.9212684000
+tin_106               105.9169574000
+tin_107               106.9157137000
+tin_108               107.9118943000
+tin_109               108.9112921000
+tin_110               109.9078450000
+tin_111               110.9077401000
+tin_112               111.9048238700   # 0.00970000
+tin_113               112.9051757000
+tin_114               113.9027827000   # 0.00660000
+tin_115               114.9033446990   # 0.00340000
+tin_116               115.9017428000   # 0.14540000
+tin_117               116.9029539800   # 0.07680000
+tin_118               117.9016065700   # 0.24220000
+tin_119               118.9033111700   # 0.08590000
+tin_120               119.9022016300   # 0.32580000
+tin_121               120.9042426000
+tin_122               121.9034438000   # 0.04630000
+tin_123               122.9057252000
+tin_124               123.9052766000   # 0.05790000
+tin_125               124.9077864000
+tin_126               125.9076590000
+tin_127               126.9103900000
+tin_128               127.9105070000
+tin_129               128.9134650000
+tin_130               129.9139738000
+tin_131               130.9170450000
+tin_132               131.9178267000
+tin_133               132.9239134000
+tin_134               133.9286821000
+tin_135               134.9349086000
+tin_136               135.9399900000
+tin_137               136.9465500000
+tin_138               137.9518400000
+tin               0.00970000 tin_112 \
+                + 0.00660000 tin_114 \
+                + 0.00340000 tin_115 \
+                + 0.14540000 tin_116 \
+                + 0.07680000 tin_117 \
+                + 0.24220000 tin_118 \
+                + 0.08590000 tin_119 \
+                + 0.32580000 tin_120 \
+                + 0.04630000 tin_122 \
+                + 0.05790000 tin_124
+
+# antimony: Sb (51)  std atomic weight: 121.760(1)
+antimony_103          102.9396900000
+antimony_104          103.9364800000
+antimony_105          104.9312760000
+antimony_106          105.9286380000
+antimony_107          106.9241506000
+antimony_108          107.9222267000
+antimony_109          108.9181411000
+antimony_110          109.9168543000
+antimony_111          110.9132182000
+antimony_112          111.9124000000
+antimony_113          112.9093750000
+antimony_114          113.9092900000
+antimony_115          114.9065980000
+antimony_116          115.9067931000
+antimony_117          116.9048415000
+antimony_118          117.9055321000
+antimony_119          118.9039455000
+antimony_120          119.9050794000
+antimony_121          120.9038120000   # 0.57210000
+antimony_122          121.9051699000
+antimony_123          122.9042132000   # 0.42790000
+antimony_124          123.9059350000
+antimony_125          124.9052530000
+antimony_126          125.9072530000
+antimony_127          126.9069243000
+antimony_128          127.9091460000
+antimony_129          128.9091470000
+antimony_130          129.9116620000
+antimony_131          130.9119888000
+antimony_132          131.9145077000
+antimony_133          132.9152732000
+antimony_134          133.9205357000
+antimony_135          134.9251851000
+antimony_136          135.9307459000
+antimony_137          136.9355500000
+antimony_138          137.9414500000
+antimony_139          138.9465500000
+antimony_140          139.9528300000
+antimony          0.57210000 antimony_121 \
+                + 0.42790000 antimony_123
+
+# tellurium: Te (52)  std atomic weight: 127.60(3)
+tellurium_105         104.9433000000
+tellurium_106         105.9375000000
+tellurium_107         106.9350120000
+tellurium_108         107.9293805000
+tellurium_109         108.9273045000
+tellurium_110         109.9224581000
+tellurium_111         110.9210006000
+tellurium_112         111.9167279000
+tellurium_113         112.9158910000
+tellurium_114         113.9120890000
+tellurium_115         114.9119020000
+tellurium_116         115.9084600000
+tellurium_117         116.9086460000
+tellurium_118         117.9058540000
+tellurium_119         118.9064071000
+tellurium_120         119.9040593000   # 0.00090000
+tellurium_121         120.9049440000
+tellurium_122         121.9030435000   # 0.02550000
+tellurium_123         122.9042698000   # 0.00890000
+tellurium_124         123.9028171000   # 0.04740000
+tellurium_125         124.9044299000   # 0.07070000
+tellurium_126         125.9033109000   # 0.18840000
+tellurium_127         126.9052257000
+tellurium_128         127.9044612800   # 0.31740000
+tellurium_129         128.9065964600
+tellurium_130         129.9062227480   # 0.34080000
+tellurium_131         130.9085222130
+tellurium_132         131.9085467000
+tellurium_133         132.9109688000
+tellurium_134         133.9113940000
+tellurium_135         134.9165557000
+tellurium_136         135.9201006000
+tellurium_137         136.9255989000
+tellurium_138         137.9294722000
+tellurium_139         138.9353672000
+tellurium_140         139.9394990000
+tellurium_141         140.9458000000
+tellurium_142         141.9502200000
+tellurium_143         142.9567600000
+tellurium         0.00090000 tellurium_120 \
+                + 0.02550000 tellurium_122 \
+                + 0.00890000 tellurium_123 \
+                + 0.04740000 tellurium_124 \
+                + 0.07070000 tellurium_125 \
+                + 0.18840000 tellurium_126 \
+                + 0.31740000 tellurium_128 \
+                + 0.34080000 tellurium_130
+
+# iodine: I (53)  std atomic weight: 126.90447(3)
+iodine_107            106.9467800000
+iodine_108            107.9434800000
+iodine_109            108.9380853000
+iodine_110            109.9350890000
+iodine_111            110.9302692000
+iodine_112            111.9280050000
+iodine_113            112.9236501000
+iodine_114            113.9218500000
+iodine_115            114.9180480000
+iodine_116            115.9168100000
+iodine_117            116.9136480000
+iodine_118            117.9130740000
+iodine_119            118.9100740000
+iodine_120            119.9100870000
+iodine_121            120.9074051000
+iodine_122            121.9075888000
+iodine_123            122.9055885000
+iodine_124            123.9062090000
+iodine_125            124.9046294000
+iodine_126            125.9056233000
+iodine_127            126.9044719000   # 1.00000000
+iodine_128            127.9058086000
+iodine_129            128.9049837000
+iodine_130            129.9066702000
+iodine_131            130.9061263000
+iodine_132            131.9079935000
+iodine_133            132.9077970000
+iodine_134            133.9097588000
+iodine_135            134.9100488000
+iodine_136            135.9146040000
+iodine_137            136.9180282000
+iodine_138            137.9227264000
+iodine_139            138.9265060000
+iodine_140            139.9317300000
+iodine_141            140.9356900000
+iodine_142            141.9412000000
+iodine_143            142.9456500000
+iodine_144            143.9513900000
+iodine_145            144.9560500000
+iodine                iodine_127
+
+# xenon: Xe (54)  std atomic weight: 131.293(6)
+xenon_109             108.9504300000
+xenon_110             109.9442600000
+xenon_111             110.9416070000
+xenon_112             111.9355590000
+xenon_113             112.9332217000
+xenon_114             113.9279800000
+xenon_115             114.9262940000
+xenon_116             115.9215810000
+xenon_117             116.9203590000
+xenon_118             117.9161790000
+xenon_119             118.9154110000
+xenon_120             119.9117840000
+xenon_121             120.9114530000
+xenon_122             121.9083680000
+xenon_123             122.9084820000
+xenon_124             123.9058920000   # 0.00095200
+xenon_125             124.9063944000
+xenon_126             125.9042983000   # 0.00089000
+xenon_127             126.9051829000
+xenon_128             127.9035310000   # 0.01910200
+xenon_129             128.9047808611   # 0.26400600
+xenon_130             129.9035093490   # 0.04071000
+xenon_131             130.9050840600   # 0.21232400
+xenon_132             131.9041550856   # 0.26908600
+xenon_133             132.9059108000
+xenon_134             133.9053946600   # 0.10435700
+xenon_135             134.9072278000
+xenon_136             135.9072144840   # 0.08857300
+xenon_137             136.9115577800
+xenon_138             137.9141463000
+xenon_139             138.9187922000
+xenon_140             139.9216458000
+xenon_141             140.9267872000
+xenon_142             141.9299731000
+xenon_143             142.9353696000
+xenon_144             143.9389451000
+xenon_145             144.9447200000
+xenon_146             145.9485180000
+xenon_147             146.9542600000
+xenon_148             147.9581300000
+xenon             0.00095200 xenon_124 \
+                + 0.00089000 xenon_126 \
+                + 0.01910200 xenon_128 \
+                + 0.26400600 xenon_129 \
+                + 0.04071000 xenon_130 \
+                + 0.21232400 xenon_131 \
+                + 0.26908600 xenon_132 \
+                + 0.10435700 xenon_134 \
+                + 0.08857300 xenon_136
+
+# caesium: Cs (55)  std atomic weight: 132.90545196(6)
+# IUPAC spelling
+caesium_112           111.9503090000
+caesium_113           112.9444291000
+caesium_114           113.9412960000
+caesium_115           114.9359100000
+caesium_116           115.9333700000
+caesium_117           116.9286170000
+caesium_118           117.9265600000
+caesium_119           118.9223770000
+caesium_120           119.9206770000
+caesium_121           120.9172270000
+caesium_122           121.9161080000
+caesium_123           122.9129960000
+caesium_124           123.9122578000
+caesium_125           124.9097280000
+caesium_126           125.9094460000
+caesium_127           126.9074174000
+caesium_128           127.9077487000
+caesium_129           128.9060657000
+caesium_130           129.9067093000
+caesium_131           130.9054649000
+caesium_132           131.9064339000
+caesium_133           132.9054519610   # 1.00000000
+caesium_134           133.9067185030
+caesium_135           134.9059770000
+caesium_136           135.9073114000
+caesium_137           136.9070892300
+caesium_138           137.9110171000
+caesium_139           138.9133638000
+caesium_140           139.9172831000
+caesium_141           140.9200455000
+caesium_142           141.9242960000
+caesium_143           142.9273490000
+caesium_144           143.9320760000
+caesium_145           144.9355270000
+caesium_146           145.9403440000
+caesium_147           146.9441560000
+caesium_148           147.9492300000
+caesium_149           148.9530200000
+caesium_150           149.9583300000
+caesium_151           150.9625800000
+caesium               caesium_133
+# American spelling
+cesium_112            111.9503090000
+cesium_113            112.9444291000
+cesium_114            113.9412960000
+cesium_115            114.9359100000
+cesium_116            115.9333700000
+cesium_117            116.9286170000
+cesium_118            117.9265600000
+cesium_119            118.9223770000
+cesium_120            119.9206770000
+cesium_121            120.9172270000
+cesium_122            121.9161080000
+cesium_123            122.9129960000
+cesium_124            123.9122578000
+cesium_125            124.9097280000
+cesium_126            125.9094460000
+cesium_127            126.9074174000
+cesium_128            127.9077487000
+cesium_129            128.9060657000
+cesium_130            129.9067093000
+cesium_131            130.9054649000
+cesium_132            131.9064339000
+cesium_133            132.9054519610   # 1.00000000
+cesium_134            133.9067185030
+cesium_135            134.9059770000
+cesium_136            135.9073114000
+cesium_137            136.9070892300
+cesium_138            137.9110171000
+cesium_139            138.9133638000
+cesium_140            139.9172831000
+cesium_141            140.9200455000
+cesium_142            141.9242960000
+cesium_143            142.9273490000
+cesium_144            143.9320760000
+cesium_145            144.9355270000
+cesium_146            145.9403440000
+cesium_147            146.9441560000
+cesium_148            147.9492300000
+cesium_149            148.9530200000
+cesium_150            149.9583300000
+cesium_151            150.9625800000
+cesium                cesium_133
+
+# barium: Ba (56)  std atomic weight: 137.327(7)
+barium_114            113.9506600000
+barium_115            114.9473700000
+barium_116            115.9412800000
+barium_117            116.9381400000
+barium_118            117.9330600000
+barium_119            118.9306600000
+barium_120            119.9260500000
+barium_121            120.9240500000
+barium_122            121.9199040000
+barium_123            122.9187810000
+barium_124            123.9150940000
+barium_125            124.9144720000
+barium_126            125.9112500000
+barium_127            126.9110910000
+barium_128            127.9083420000
+barium_129            128.9086810000
+barium_130            129.9063207000   # 0.00106000
+barium_131            130.9069410000
+barium_132            131.9050611000   # 0.00101000
+barium_133            132.9060074000
+barium_134            133.9045081800   # 0.02417000
+barium_135            134.9056883800   # 0.06592000
+barium_136            135.9045757300   # 0.07854000
+barium_137            136.9058271400   # 0.11232000
+barium_138            137.9052470000   # 0.71698000
+barium_139            138.9088411000
+barium_140            139.9106057000
+barium_141            140.9144033000
+barium_142            141.9164324000
+barium_143            142.9206253000
+barium_144            143.9229549000
+barium_145            144.9275184000
+barium_146            145.9302840000
+barium_147            146.9353040000
+barium_148            147.9381710000
+barium_149            148.9430800000
+barium_150            149.9460500000
+barium_151            150.9512700000
+barium_152            151.9548100000
+barium_153            152.9603600000
+barium            0.00106000 barium_130 \
+                + 0.00101000 barium_132 \
+                + 0.02417000 barium_134 \
+                + 0.06592000 barium_135 \
+                + 0.07854000 barium_136 \
+                + 0.11232000 barium_137 \
+                + 0.71698000 barium_138
+
+# lanthanum: La (57)  std atomic weight: 138.90547(7)
+lanthanum_116         115.9563000000
+lanthanum_117         116.9499900000
+lanthanum_118         117.9467300000
+lanthanum_119         118.9409900000
+lanthanum_120         119.9380700000
+lanthanum_121         120.9331500000
+lanthanum_122         121.9307100000
+lanthanum_123         122.9263000000
+lanthanum_124         123.9245740000
+lanthanum_125         124.9208160000
+lanthanum_126         125.9195130000
+lanthanum_127         126.9163750000
+lanthanum_128         127.9155920000
+lanthanum_129         128.9126940000
+lanthanum_130         129.9123690000
+lanthanum_131         130.9100700000
+lanthanum_132         131.9101190000
+lanthanum_133         132.9082180000
+lanthanum_134         133.9085140000
+lanthanum_135         134.9069840000
+lanthanum_136         135.9076350000
+lanthanum_137         136.9064504000
+lanthanum_138         137.9071149000   # 0.00088810
+lanthanum_139         138.9063563000   # 0.99911190
+lanthanum_140         139.9094806000
+lanthanum_141         140.9109660000
+lanthanum_142         141.9140909000
+lanthanum_143         142.9160795000
+lanthanum_144         143.9196460000
+lanthanum_145         144.9218080000
+lanthanum_146         145.9258750000
+lanthanum_147         146.9284180000
+lanthanum_148         147.9326790000
+lanthanum_149         148.9353500000
+lanthanum_150         149.9394700000
+lanthanum_151         150.9423200000
+lanthanum_152         151.9468200000
+lanthanum_153         152.9503600000
+lanthanum_154         153.9551700000
+lanthanum_155         154.9590100000
+lanthanum         0.00088810 lanthanum_138 \
+                + 0.99911190 lanthanum_139
+
+# cerium: Ce (58)  std atomic weight: 140.116(1)
+cerium_119            118.9527100000
+cerium_120            119.9465400000
+cerium_121            120.9433500000
+cerium_122            121.9378700000
+cerium_123            122.9352800000
+cerium_124            123.9303100000
+cerium_125            124.9284400000
+cerium_126            125.9239710000
+cerium_127            126.9227270000
+cerium_128            127.9189110000
+cerium_129            128.9181020000
+cerium_130            129.9147360000
+cerium_131            130.9144290000
+cerium_132            131.9114640000
+cerium_133            132.9115200000
+cerium_134            133.9089280000
+cerium_135            134.9091610000
+cerium_136            135.9071292100   # 0.00185000
+cerium_137            136.9077623600
+cerium_138            137.9059910000   # 0.00251000
+cerium_139            138.9066551000
+cerium_140            139.9054431000   # 0.88450000
+cerium_141            140.9082807000
+cerium_142            141.9092504000   # 0.11114000
+cerium_143            142.9123921000
+cerium_144            143.9136529000
+cerium_145            144.9172650000
+cerium_146            145.9188020000
+cerium_147            146.9226899000
+cerium_148            147.9244240000
+cerium_149            148.9284270000
+cerium_150            149.9303840000
+cerium_151            150.9342720000
+cerium_152            151.9366000000
+cerium_153            152.9409300000
+cerium_154            153.9438000000
+cerium_155            154.9485500000
+cerium_156            155.9518300000
+cerium_157            156.9570500000
+cerium            0.00185000 cerium_136 \
+                + 0.00251000 cerium_138 \
+                + 0.88450000 cerium_140 \
+                + 0.11114000 cerium_142
+
+# praseodymium: Pr (59)  std atomic weight: 140.90766(2)
+praseodymium_121      120.9553200000
+praseodymium_122      121.9517500000
+praseodymium_123      122.9459600000
+praseodymium_124      123.9429400000
+praseodymium_125      124.9377000000
+praseodymium_126      125.9352400000
+praseodymium_127      126.9307100000
+praseodymium_128      127.9287910000
+praseodymium_129      128.9250950000
+praseodymium_130      129.9235900000
+praseodymium_131      130.9202350000
+praseodymium_132      131.9192550000
+praseodymium_133      132.9163310000
+praseodymium_134      133.9156970000
+praseodymium_135      134.9131120000
+praseodymium_136      135.9126770000
+praseodymium_137      136.9106792000
+praseodymium_138      137.9107540000
+praseodymium_139      138.9089408000
+praseodymium_140      139.9090803000
+praseodymium_141      140.9076576000   # 1.00000000
+praseodymium_142      141.9100496000
+praseodymium_143      142.9108228000
+praseodymium_144      143.9133109000
+praseodymium_145      144.9145182000
+praseodymium_146      145.9176800000
+praseodymium_147      146.9190080000
+praseodymium_148      147.9221300000
+praseodymium_149      148.9237360000
+praseodymium_150      149.9266765000
+praseodymium_151      150.9283090000
+praseodymium_152      151.9315530000
+praseodymium_153      152.9339040000
+praseodymium_154      153.9375300000
+praseodymium_155      154.9405090000
+praseodymium_156      155.9446400000
+praseodymium_157      156.9478900000
+praseodymium_158      157.9524100000
+praseodymium_159      158.9558900000
+praseodymium          praseodymium_141
+
+# neodymium: Nd (60)  std atomic weight: 144.242(3)
+neodymium_124         123.9522000000
+neodymium_125         124.9489000000
+neodymium_126         125.9431100000
+neodymium_127         126.9403800000
+neodymium_128         127.9352500000
+neodymium_129         128.9331000000
+neodymium_130         129.9285060000
+neodymium_131         130.9272480000
+neodymium_132         131.9233210000
+neodymium_133         132.9223480000
+neodymium_134         133.9187900000
+neodymium_135         134.9181810000
+neodymium_136         135.9149760000
+neodymium_137         136.9145620000
+neodymium_138         137.9119500000
+neodymium_139         138.9119540000
+neodymium_140         139.9095500000
+neodymium_141         140.9096147000
+neodymium_142         141.9077290000   # 0.27152000
+neodymium_143         142.9098200000   # 0.12174000
+neodymium_144         143.9100930000   # 0.23798000
+neodymium_145         144.9125793000   # 0.08293000
+neodymium_146         145.9131226000   # 0.17189000
+neodymium_147         146.9161061000
+neodymium_148         147.9168993000   # 0.05756000
+neodymium_149         148.9201548000
+neodymium_150         149.9209022000   # 0.05638000
+neodymium_151         150.9238403000
+neodymium_152         151.9246920000
+neodymium_153         152.9277180000
+neodymium_154         153.9294800000
+neodymium_155         154.9331357000
+neodymium_156         155.9350800000
+neodymium_157         156.9393860000
+neodymium_158         157.9419700000
+neodymium_159         158.9465300000
+neodymium_160         159.9494000000
+neodymium_161         160.9542800000
+neodymium         0.27152000 neodymium_142 \
+                + 0.12174000 neodymium_143 \
+                + 0.23798000 neodymium_144 \
+                + 0.08293000 neodymium_145 \
+                + 0.17189000 neodymium_146 \
+                + 0.05756000 neodymium_148 \
+                + 0.05638000 neodymium_150
+
+# promethium: Pm (61)  std atomic weight: [145]
+promethium_126        125.9579200000
+promethium_127        126.9519200000
+promethium_128        127.9487000000
+promethium_129        128.9432300000
+promethium_130        129.9405300000
+promethium_131        130.9356700000
+promethium_132        131.9338400000
+promethium_133        132.9297820000
+promethium_134        133.9283530000
+promethium_135        134.9248230000
+promethium_136        135.9235850000
+promethium_137        136.9204800000
+promethium_138        137.9195480000
+promethium_139        138.9168000000
+promethium_140        139.9160400000
+promethium_141        140.9135550000
+promethium_142        141.9128900000
+promethium_143        142.9109383000
+promethium_144        143.9125964000
+promethium_145        144.9127559000
+promethium_146        145.9147024000
+promethium_147        146.9151450000
+promethium_148        147.9174819000
+promethium_149        148.9183423000
+promethium_150        149.9209910000
+promethium_151        150.9212175000
+promethium_152        151.9235060000
+promethium_153        152.9241567000
+promethium_154        153.9264720000
+promethium_155        154.9281370000
+promethium_156        155.9311175000
+promethium_157        156.9331214000
+promethium_158        157.9365650000
+promethium_159        158.9392870000
+promethium_160        159.9431000000
+promethium_161        160.9460700000
+promethium_162        161.9502200000
+promethium_163        162.9535700000
+promethium            promethium_145   # most stable
+
+# samarium: Sm (62)  std atomic weight: 150.36(2)
+samarium_128          127.9584200000
+samarium_129          128.9547600000
+samarium_130          129.9490000000
+samarium_131          130.9461800000
+samarium_132          131.9408700000
+samarium_133          132.9385600000
+samarium_134          133.9341100000
+samarium_135          134.9325200000
+samarium_136          135.9282760000
+samarium_137          136.9269710000
+samarium_138          137.9232440000
+samarium_139          138.9222970000
+samarium_140          139.9189950000
+samarium_141          140.9184816000
+samarium_142          141.9152044000
+samarium_143          142.9146353000
+samarium_144          143.9120065000   # 0.03070000
+samarium_145          144.9134173000
+samarium_146          145.9130470000
+samarium_147          146.9149044000   # 0.14990000
+samarium_148          147.9148292000   # 0.11240000
+samarium_149          148.9171921000   # 0.13820000
+samarium_150          149.9172829000   # 0.07380000
+samarium_151          150.9199398000
+samarium_152          151.9197397000   # 0.26750000
+samarium_153          152.9221047000
+samarium_154          153.9222169000   # 0.22750000
+samarium_155          154.9246477000
+samarium_156          155.9255360000
+samarium_157          156.9284187000
+samarium_158          157.9299510000
+samarium_159          158.9332172000
+samarium_160          159.9353353000
+samarium_161          160.9391602000
+samarium_162          161.9414600000
+samarium_163          162.9455500000
+samarium_164          163.9483600000
+samarium_165          164.9529700000
+samarium          0.03070000 samarium_144 \
+                + 0.14990000 samarium_147 \
+                + 0.11240000 samarium_148 \
+                + 0.13820000 samarium_149 \
+                + 0.07380000 samarium_150 \
+                + 0.26750000 samarium_152 \
+                + 0.22750000 samarium_154
+
+# europium: Eu (63)  std atomic weight: 151.964(1)
+europium_130          129.9636900000
+europium_131          130.9578400000
+europium_132          131.9546700000
+europium_133          132.9492900000
+europium_134          133.9464000000
+europium_135          134.9418700000
+europium_136          135.9396200000
+europium_137          136.9354600000
+europium_138          137.9337090000
+europium_139          138.9297920000
+europium_140          139.9280880000
+europium_141          140.9249320000
+europium_142          141.9234420000
+europium_143          142.9202990000
+europium_144          143.9188200000
+europium_145          144.9162726000
+europium_146          145.9172110000
+europium_147          146.9167527000
+europium_148          147.9180890000
+europium_149          148.9179378000
+europium_150          149.9197077000
+europium_151          150.9198578000   # 0.47810000
+europium_152          151.9217522000
+europium_153          152.9212380000   # 0.52190000
+europium_154          153.9229870000
+europium_155          154.9229011000
+europium_156          155.9247605000
+europium_157          156.9254334000
+europium_158          157.9277990000
+europium_159          158.9291001000
+europium_160          159.9318510000
+europium_161          160.9336640000
+europium_162          161.9369890000
+europium_163          162.9391960000
+europium_164          163.9427400000
+europium_165          164.9455900000
+europium_166          165.9496200000
+europium_167          166.9528900000
+europium          0.47810000 europium_151 \
+                + 0.52190000 europium_153
+
+# gadolinium: Gd (64)  std atomic weight: 157.25(3)
+gadolinium_133        132.9613300000
+gadolinium_134        133.9556600000
+gadolinium_135        134.9524500000
+gadolinium_136        135.9473000000
+gadolinium_137        136.9450200000
+gadolinium_138        137.9402500000
+gadolinium_139        138.9381300000
+gadolinium_140        139.9336740000
+gadolinium_141        140.9321260000
+gadolinium_142        141.9281160000
+gadolinium_143        142.9267500000
+gadolinium_144        143.9229630000
+gadolinium_145        144.9217130000
+gadolinium_146        145.9183188000
+gadolinium_147        146.9191014000
+gadolinium_148        147.9181215000
+gadolinium_149        148.9193481000
+gadolinium_150        149.9186644000
+gadolinium_151        150.9203560000
+gadolinium_152        151.9197995000   # 0.00200000
+gadolinium_153        152.9217580000
+gadolinium_154        153.9208741000   # 0.02180000
+gadolinium_155        154.9226305000   # 0.14800000
+gadolinium_156        155.9221312000   # 0.20470000
+gadolinium_157        156.9239686000   # 0.15650000
+gadolinium_158        157.9241123000   # 0.24840000
+gadolinium_159        158.9263970000
+gadolinium_160        159.9270624000   # 0.21860000
+gadolinium_161        160.9296775000
+gadolinium_162        161.9309930000
+gadolinium_163        162.9341769000
+gadolinium_164        163.9358300000
+gadolinium_165        164.9393600000
+gadolinium_166        165.9414600000
+gadolinium_167        166.9454500000
+gadolinium_168        167.9480800000
+gadolinium_169        168.9526000000
+gadolinium        0.00200000 gadolinium_152 \
+                + 0.02180000 gadolinium_154 \
+                + 0.14800000 gadolinium_155 \
+                + 0.20470000 gadolinium_156 \
+                + 0.15650000 gadolinium_157 \
+                + 0.24840000 gadolinium_158 \
+                + 0.21860000 gadolinium_160
+
+# terbium: Tb (65)  std atomic weight: 158.92535(2)
+terbium_135           134.9647600000
+terbium_136           135.9612900000
+terbium_137           136.9560200000
+terbium_138           137.9531200000
+terbium_139           138.9483300000
+terbium_140           139.9458100000
+terbium_141           140.9414500000
+terbium_142           141.9392800000
+terbium_143           142.9351370000
+terbium_144           143.9330450000
+terbium_145           144.9288200000
+terbium_146           145.9272530000
+terbium_147           146.9240548000
+terbium_148           147.9242820000
+terbium_149           148.9232535000
+terbium_150           149.9236649000
+terbium_151           150.9231096000
+terbium_152           151.9240830000
+terbium_153           152.9234424000
+terbium_154           153.9246850000
+terbium_155           154.9235110000
+terbium_156           155.9247552000
+terbium_157           156.9240330000
+terbium_158           157.9254209000
+terbium_159           158.9253547000   # 1.00000000
+terbium_160           159.9271756000
+terbium_161           160.9275778000
+terbium_162           161.9294950000
+terbium_163           162.9306547000
+terbium_164           163.9333600000
+terbium_165           164.9349800000
+terbium_166           165.9378600000
+terbium_167           166.9399600000
+terbium_168           167.9434000000
+terbium_169           168.9459700000
+terbium_170           169.9498400000
+terbium_171           170.9527300000
+terbium               terbium_159
+
+# dysprosium: Dy (66)  std atomic weight: 162.500(1)
+dysprosium_138        137.9625000000
+dysprosium_139        138.9595900000
+dysprosium_140        139.9540200000
+dysprosium_141        140.9512800000
+dysprosium_142        141.9461900000
+dysprosium_143        142.9439940000
+dysprosium_144        143.9392695000
+dysprosium_145        144.9374740000
+dysprosium_146        145.9328445000
+dysprosium_147        146.9310827000
+dysprosium_148        147.9271570000
+dysprosium_149        148.9273220000
+dysprosium_150        149.9255933000
+dysprosium_151        150.9261916000
+dysprosium_152        151.9247253000
+dysprosium_153        152.9257724000
+dysprosium_154        153.9244293000
+dysprosium_155        154.9257590000
+dysprosium_156        155.9242847000   # 0.00056000
+dysprosium_157        156.9254707000
+dysprosium_158        157.9244159000   # 0.00095000
+dysprosium_159        158.9257470000
+dysprosium_160        159.9252046000   # 0.02329000
+dysprosium_161        160.9269405000   # 0.18889000
+dysprosium_162        161.9268056000   # 0.25475000
+dysprosium_163        162.9287383000   # 0.24896000
+dysprosium_164        163.9291819000   # 0.28260000
+dysprosium_165        164.9317105000
+dysprosium_166        165.9328139000
+dysprosium_167        166.9356610000
+dysprosium_168        167.9371300000
+dysprosium_169        168.9403100000
+dysprosium_170        169.9423900000
+dysprosium_171        170.9461200000
+dysprosium_172        171.9484600000
+dysprosium_173        172.9528300000
+dysprosium        0.00056000 dysprosium_156 \
+                + 0.00095000 dysprosium_158 \
+                + 0.02329000 dysprosium_160 \
+                + 0.18889000 dysprosium_161 \
+                + 0.25475000 dysprosium_162 \
+                + 0.24896000 dysprosium_163 \
+                + 0.28260000 dysprosium_164
+
+# holmium: Ho (67)  std atomic weight: 164.93033(2)
+holmium_140           139.9685900000
+holmium_141           140.9631100000
+holmium_142           141.9600100000
+holmium_143           142.9548600000
+holmium_144           143.9521097000
+holmium_145           144.9472674000
+holmium_146           145.9449935000
+holmium_147           146.9401423000
+holmium_148           147.9377440000
+holmium_149           148.9338030000
+holmium_150           149.9334980000
+holmium_151           150.9316983000
+holmium_152           151.9317240000
+holmium_153           152.9302064000
+holmium_154           153.9306068000
+holmium_155           154.9291040000
+holmium_156           155.9297060000
+holmium_157           156.9282540000
+holmium_158           157.9289460000
+holmium_159           158.9277197000
+holmium_160           159.9287370000
+holmium_161           160.9278615000
+holmium_162           161.9291023000
+holmium_163           162.9287410000
+holmium_164           163.9302403000
+holmium_165           164.9303288000   # 1.00000000
+holmium_166           165.9322909000
+holmium_167           166.9331385000
+holmium_168           167.9355220000
+holmium_169           168.9368780000
+holmium_170           169.9396250000
+holmium_171           170.9414700000
+holmium_172           171.9447300000
+holmium_173           172.9470200000
+holmium_174           173.9509500000
+holmium_175           174.9536200000
+holmium               holmium_165
+
+# erbium: Er (68)  std atomic weight: 167.259(3)
+erbium_142            141.9701000000
+erbium_143            142.9666200000
+erbium_144            143.9607000000
+erbium_145            144.9580500000
+erbium_146            145.9524184000
+erbium_147            146.9499640000
+erbium_148            147.9447350000
+erbium_149            148.9423060000
+erbium_150            149.9379160000
+erbium_151            150.9374490000
+erbium_152            151.9350570000
+erbium_153            152.9350800000
+erbium_154            153.9327908000
+erbium_155            154.9332159000
+erbium_156            155.9310670000
+erbium_157            156.9319490000
+erbium_158            157.9298930000
+erbium_159            158.9306918000
+erbium_160            159.9290770000
+erbium_161            160.9300046000
+erbium_162            161.9287884000   # 0.00139000
+erbium_163            162.9300408000
+erbium_164            163.9292088000   # 0.01601000
+erbium_165            164.9307345000
+erbium_166            165.9302995000   # 0.33503000
+erbium_167            166.9320546000   # 0.22869000
+erbium_168            167.9323767000   # 0.26978000
+erbium_169            168.9345968000
+erbium_170            169.9354702000   # 0.14910000
+erbium_171            170.9380357000
+erbium_172            171.9393619000
+erbium_173            172.9424000000
+erbium_174            173.9442300000
+erbium_175            174.9477700000
+erbium_176            175.9499400000
+erbium_177            176.9539900000
+erbium            0.00139000 erbium_162 \
+                + 0.01601000 erbium_164 \
+                + 0.33503000 erbium_166 \
+                + 0.22869000 erbium_167 \
+                + 0.26978000 erbium_168 \
+                + 0.14910000 erbium_170
+
+# thulium: Tm (69)  std atomic weight: 168.93422(2)
+thulium_144           143.9762800000
+thulium_145           144.9703900000
+thulium_146           145.9668400000
+thulium_147           146.9613799000
+thulium_148           147.9583840000
+thulium_149           148.9528900000
+thulium_150           149.9500900000
+thulium_151           150.9454880000
+thulium_152           151.9444220000
+thulium_153           152.9420400000
+thulium_154           153.9415700000
+thulium_155           154.9392100000
+thulium_156           155.9389920000
+thulium_157           156.9369440000
+thulium_158           157.9369800000
+thulium_159           158.9349750000
+thulium_160           159.9352630000
+thulium_161           160.9335490000
+thulium_162           161.9340020000
+thulium_163           162.9326592000
+thulium_164           163.9335440000
+thulium_165           164.9324431000
+thulium_166           165.9335610000
+thulium_167           166.9328562000
+thulium_168           167.9341774000
+thulium_169           168.9342179000   # 1.00000000
+thulium_170           169.9358060000
+thulium_171           170.9364339000
+thulium_172           171.9384055000
+thulium_173           172.9396084000
+thulium_174           173.9421730000
+thulium_175           174.9438410000
+thulium_176           175.9470000000
+thulium_177           176.9490400000
+thulium_178           177.9526400000
+thulium_179           178.9553400000
+thulium               thulium_169
+
+# ytterbium: Yb (70)  std atomic weight: 173.054(5)
+ytterbium_148         147.9675800000
+ytterbium_149         148.9643600000
+ytterbium_150         149.9585200000
+ytterbium_151         150.9554000000
+ytterbium_152         151.9502700000
+ytterbium_153         152.9493200000
+ytterbium_154         153.9463960000
+ytterbium_155         154.9457830000
+ytterbium_156         155.9428250000
+ytterbium_157         156.9426450000
+ytterbium_158         157.9398705000
+ytterbium_159         158.9400550000
+ytterbium_160         159.9375570000
+ytterbium_161         160.9379070000
+ytterbium_162         161.9357740000
+ytterbium_163         162.9363400000
+ytterbium_164         163.9344950000
+ytterbium_165         164.9352700000
+ytterbium_166         165.9338747000
+ytterbium_167         166.9349530000
+ytterbium_168         167.9338896000   # 0.00123000
+ytterbium_169         168.9351825000
+ytterbium_170         169.9347664000   # 0.02982000
+ytterbium_171         170.9363302000   # 0.14090000
+ytterbium_172         171.9363859000   # 0.21680000
+ytterbium_173         172.9382151000   # 0.16103000
+ytterbium_174         173.9388664000   # 0.32026000
+ytterbium_175         174.9412808000
+ytterbium_176         175.9425764000   # 0.12996000
+ytterbium_177         176.9452656000
+ytterbium_178         177.9466510000
+ytterbium_179         178.9500400000
+ytterbium_180         179.9521200000
+ytterbium_181         180.9558900000
+ytterbium         0.00123000 ytterbium_168 \
+                + 0.02982000 ytterbium_170 \
+                + 0.14090000 ytterbium_171 \
+                + 0.21680000 ytterbium_172 \
+                + 0.16103000 ytterbium_173 \
+                + 0.32026000 ytterbium_174 \
+                + 0.12996000 ytterbium_176
+
+# lutetium: Lu (71)  std atomic weight: 174.9668(1)
+lutetium_150          149.9735500000
+lutetium_151          150.9676800000
+lutetium_152          151.9641200000
+lutetium_153          152.9587500000
+lutetium_154          153.9573600000
+lutetium_155          154.9543210000
+lutetium_156          155.9530330000
+lutetium_157          156.9501270000
+lutetium_158          157.9493160000
+lutetium_159          158.9466360000
+lutetium_160          159.9460330000
+lutetium_161          160.9435720000
+lutetium_162          161.9432830000
+lutetium_163          162.9411790000
+lutetium_164          163.9413390000
+lutetium_165          164.9394070000
+lutetium_166          165.9398590000
+lutetium_167          166.9382700000
+lutetium_168          167.9387360000
+lutetium_169          168.9376441000
+lutetium_170          169.9384780000
+lutetium_171          170.9379170000
+lutetium_172          171.9390891000
+lutetium_173          172.9389340000
+lutetium_174          173.9403409000
+lutetium_175          174.9407752000   # 0.97401000
+lutetium_176          175.9426897000   # 0.02599000
+lutetium_177          176.9437615000
+lutetium_178          177.9459580000
+lutetium_179          178.9473309000
+lutetium_180          179.9498880000
+lutetium_181          180.9519100000
+lutetium_182          181.9550400000
+lutetium_183          182.9573630000
+lutetium_184          183.9609100000
+lutetium_185          184.9636200000
+lutetium          0.97401000 lutetium_175 \
+                + 0.02599000 lutetium_176
+
+# hafnium: Hf (72)  std atomic weight: 178.49(2)
+hafnium_153           152.9706900000
+hafnium_154           153.9648600000
+hafnium_155           154.9631100000
+hafnium_156           155.9593500000
+hafnium_157           156.9582400000
+hafnium_158           157.9548010000
+hafnium_159           158.9539960000
+hafnium_160           159.9506910000
+hafnium_161           160.9502780000
+hafnium_162           161.9472148000
+hafnium_163           162.9471130000
+hafnium_164           163.9443710000
+hafnium_165           164.9445670000
+hafnium_166           165.9421800000
+hafnium_167           166.9426000000
+hafnium_168           167.9405680000
+hafnium_169           168.9412590000
+hafnium_170           169.9396090000
+hafnium_171           170.9404920000
+hafnium_172           171.9394500000
+hafnium_173           172.9405130000
+hafnium_174           173.9400461000   # 0.00160000
+hafnium_175           174.9415092000
+hafnium_176           175.9414076000   # 0.05260000
+hafnium_177           176.9432277000   # 0.18600000
+hafnium_178           177.9437058000   # 0.27280000
+hafnium_179           178.9458232000   # 0.13620000
+hafnium_180           179.9465570000   # 0.35080000
+hafnium_181           180.9491083000
+hafnium_182           181.9505612000
+hafnium_183           182.9535300000
+hafnium_184           183.9554460000
+hafnium_185           184.9588620000
+hafnium_186           185.9608970000
+hafnium_187           186.9647700000
+hafnium_188           187.9668500000
+hafnium_189           188.9708400000
+hafnium           0.00160000 hafnium_174 \
+                + 0.05260000 hafnium_176 \
+                + 0.18600000 hafnium_177 \
+                + 0.27280000 hafnium_178 \
+                + 0.13620000 hafnium_179 \
+                + 0.35080000 hafnium_180
+
+# tantalum: Ta (73)  std atomic weight: 180.94788(2)
+tantalum_155          154.9742400000
+tantalum_156          155.9720300000
+tantalum_157          156.9681800000
+tantalum_158          157.9665400000
+tantalum_159          158.9630230000
+tantalum_160          159.9614880000
+tantalum_161          160.9584520000
+tantalum_162          161.9572940000
+tantalum_163          162.9543370000
+tantalum_164          163.9535340000
+tantalum_165          164.9507810000
+tantalum_166          165.9505120000
+tantalum_167          166.9480930000
+tantalum_168          167.9480470000
+tantalum_169          168.9460110000
+tantalum_170          169.9461750000
+tantalum_171          170.9444760000
+tantalum_172          171.9448950000
+tantalum_173          172.9437500000
+tantalum_174          173.9444540000
+tantalum_175          174.9437370000
+tantalum_176          175.9448570000
+tantalum_177          176.9444795000
+tantalum_178          177.9456780000
+tantalum_179          178.9459366000
+tantalum_180          179.9474648000   # 0.00012010
+tantalum_181          180.9479958000   # 0.99987990
+tantalum_182          181.9501519000
+tantalum_183          182.9513726000
+tantalum_184          183.9540080000
+tantalum_185          184.9555590000
+tantalum_186          185.9585510000
+tantalum_187          186.9603860000
+tantalum_188          187.9639160000
+tantalum_189          188.9658300000
+tantalum_190          189.9693900000
+tantalum_191          190.9715600000
+tantalum_192          191.9751400000
+tantalum          0.00012010 tantalum_180 \
+                + 0.99987990 tantalum_181
+
+# tungsten: W (74)  std atomic weight: 183.84(1)
+tungsten_157          156.9788400000
+tungsten_158          157.9745600000
+tungsten_159          158.9726400000
+tungsten_160          159.9684600000
+tungsten_161          160.9672000000
+tungsten_162          161.9634990000
+tungsten_163          162.9625240000
+tungsten_164          163.9589610000
+tungsten_165          164.9582810000
+tungsten_166          165.9550310000
+tungsten_167          166.9548050000
+tungsten_168          167.9518060000
+tungsten_169          168.9517790000
+tungsten_170          169.9492320000
+tungsten_171          170.9494510000
+tungsten_172          171.9472920000
+tungsten_173          172.9476890000
+tungsten_174          173.9460790000
+tungsten_175          174.9467170000
+tungsten_176          175.9456340000
+tungsten_177          176.9466430000
+tungsten_178          177.9458830000
+tungsten_179          178.9470770000
+tungsten_180          179.9467108000   # 0.00120000
+tungsten_181          180.9481978000
+tungsten_182          181.9482039400   # 0.26500000
+tungsten_183          182.9502227500   # 0.14310000
+tungsten_184          183.9509309200   # 0.30640000
+tungsten_185          184.9534189700
+tungsten_186          185.9543628000   # 0.28430000
+tungsten_187          186.9571588000
+tungsten_188          187.9584862000
+tungsten_189          188.9617630000
+tungsten_190          189.9630910000
+tungsten_191          190.9665310000
+tungsten_192          191.9681700000
+tungsten_193          192.9717800000
+tungsten_194          193.9736700000
+tungsten          0.00120000 tungsten_180 \
+                + 0.26500000 tungsten_182 \
+                + 0.14310000 tungsten_183 \
+                + 0.30640000 tungsten_184 \
+                + 0.28430000 tungsten_186
+
+# rhenium: Re (75)  std atomic weight: 186.207(1)
+rhenium_159           158.9841800000
+rhenium_160           159.9818200000
+rhenium_161           160.9775700000
+rhenium_162           161.9758400000
+rhenium_163           162.9720800000
+rhenium_164           163.9704530000
+rhenium_165           164.9671030000
+rhenium_166           165.9657610000
+rhenium_167           166.9625950000
+rhenium_168           167.9615730000
+rhenium_169           168.9587660000
+rhenium_170           169.9582200000
+rhenium_171           170.9557160000
+rhenium_172           171.9554200000
+rhenium_173           172.9532430000
+rhenium_174           173.9531150000
+rhenium_175           174.9513810000
+rhenium_176           175.9516230000
+rhenium_177           176.9503280000
+rhenium_178           177.9509890000
+rhenium_179           178.9499890000
+rhenium_180           179.9507920000
+rhenium_181           180.9500580000
+rhenium_182           181.9512100000
+rhenium_183           182.9508196000
+rhenium_184           183.9525228000
+rhenium_185           184.9529545000   # 0.37400000
+rhenium_186           185.9549856000
+rhenium_187           186.9557501000   # 0.62600000
+rhenium_188           187.9581115000
+rhenium_189           188.9592260000
+rhenium_190           189.9617440000
+rhenium_191           190.9631220000
+rhenium_192           191.9660880000
+rhenium_193           192.9675410000
+rhenium_194           193.9707600000
+rhenium_195           194.9725400000
+rhenium_196           195.9758000000
+rhenium_197           196.9779900000
+rhenium_198           197.9816000000
+rhenium           0.37400000 rhenium_185 \
+                + 0.62600000 rhenium_187
+
+# osmium: Os (76)  std atomic weight: 190.23(3)
+osmium_161            160.9890300000
+osmium_162            161.9844300000
+osmium_163            162.9824100000
+osmium_164            163.9780200000
+osmium_165            164.9766000000
+osmium_166            165.9726920000
+osmium_167            166.9715490000
+osmium_168            167.9678080000
+osmium_169            168.9670180000
+osmium_170            169.9635780000
+osmium_171            170.9631740000
+osmium_172            171.9600170000
+osmium_173            172.9598080000
+osmium_174            173.9570640000
+osmium_175            174.9569450000
+osmium_176            175.9548060000
+osmium_177            176.9549660000
+osmium_178            177.9532540000
+osmium_179            178.9538170000
+osmium_180            179.9523750000
+osmium_181            180.9532470000
+osmium_182            181.9521100000
+osmium_183            182.9531250000
+osmium_184            183.9524885000   # 0.00020000
+osmium_185            184.9540417000
+osmium_186            185.9538350000   # 0.01590000
+osmium_187            186.9557474000   # 0.01960000
+osmium_188            187.9558352000   # 0.13240000
+osmium_189            188.9581442000   # 0.16150000
+osmium_190            189.9584437000   # 0.26260000
+osmium_191            190.9609264000
+osmium_192            191.9614770000   # 0.40780000
+osmium_193            192.9641479000
+osmium_194            193.9651772000
+osmium_195            194.9683180000
+osmium_196            195.9696410000
+osmium_197            196.9728300000
+osmium_198            197.9744100000
+osmium_199            198.9780100000
+osmium_200            199.9798400000
+osmium_201            200.9836400000
+osmium_202            201.9859500000
+osmium            0.00020000 osmium_184 \
+                + 0.01590000 osmium_186 \
+                + 0.01960000 osmium_187 \
+                + 0.13240000 osmium_188 \
+                + 0.16150000 osmium_189 \
+                + 0.26260000 osmium_190 \
+                + 0.40780000 osmium_192
+
+# iridium: Ir (77)  std atomic weight: 192.217(3)
+iridium_164           163.9919100000
+iridium_165           164.9875000000
+iridium_166           165.9856600000
+iridium_167           166.9816660000
+iridium_168           167.9799070000
+iridium_169           168.9762980000
+iridium_170           169.9749220000
+iridium_171           170.9716400000
+iridium_172           171.9706070000
+iridium_173           172.9675060000
+iridium_174           173.9668610000
+iridium_175           174.9641500000
+iridium_176           175.9636500000
+iridium_177           176.9613010000
+iridium_178           177.9610820000
+iridium_179           178.9591200000
+iridium_180           179.9592290000
+iridium_181           180.9576250000
+iridium_182           181.9580760000
+iridium_183           182.9568400000
+iridium_184           183.9574760000
+iridium_185           184.9566980000
+iridium_186           185.9579440000
+iridium_187           186.9575420000
+iridium_188           187.9588280000
+iridium_189           188.9587150000
+iridium_190           189.9605412000
+iridium_191           190.9605893000   # 0.37300000
+iridium_192           191.9626002000
+iridium_193           192.9629216000   # 0.62700000
+iridium_194           193.9650735000
+iridium_195           194.9659747000
+iridium_196           195.9683970000
+iridium_197           196.9696550000
+iridium_198           197.9722800000
+iridium_199           198.9738050000
+iridium_200           199.9768000000
+iridium_201           200.9786400000
+iridium_202           201.9819900000
+iridium_203           202.9842300000
+iridium_204           203.9896000000
+iridium           0.37300000 iridium_191 \
+                + 0.62700000 iridium_193
+
+# platinum: Pt (78)  std atomic weight: 195.084(9)
+platinum_166          165.9948600000
+platinum_167          166.9926900000
+platinum_168          167.9881300000
+platinum_169          168.9865700000
+platinum_170          169.9824960000
+platinum_171          170.9812450000
+platinum_172          171.9773510000
+platinum_173          172.9764430000
+platinum_174          173.9728200000
+platinum_175          174.9724100000
+platinum_176          175.9689380000
+platinum_177          176.9684700000
+platinum_178          177.9656500000
+platinum_179          178.9653590000
+platinum_180          179.9630320000
+platinum_181          180.9630980000
+platinum_182          181.9611720000
+platinum_183          182.9615970000
+platinum_184          183.9599150000
+platinum_185          184.9606140000
+platinum_186          185.9593510000
+platinum_187          186.9606170000
+platinum_188          187.9593889000
+platinum_189          188.9608310000
+platinum_190          189.9599297000   # 0.00012000
+platinum_191          190.9616729000
+platinum_192          191.9610387000   # 0.00782000
+platinum_193          192.9629824000
+platinum_194          193.9626809000   # 0.32860000
+platinum_195          194.9647917000   # 0.33780000
+platinum_196          195.9649520900   # 0.25210000
+platinum_197          196.9673406900
+platinum_198          197.9678949000   # 0.07356000
+platinum_199          198.9705952000
+platinum_200          199.9714430000
+platinum_201          200.9745130000
+platinum_202          201.9756390000
+platinum_203          202.9789300000
+platinum_204          203.9807600000
+platinum_205          204.9860800000
+platinum_206          205.9896600000
+platinum          0.00012000 platinum_190 \
+                + 0.00782000 platinum_192 \
+                + 0.32860000 platinum_194 \
+                + 0.33780000 platinum_195 \
+                + 0.25210000 platinum_196 \
+                + 0.07356000 platinum_198
+
+# gold: Au (79)  std atomic weight: 196.966569(5)
+gold_169              168.9980800000
+gold_170              169.9959700000
+gold_171              170.9918760000
+gold_172              171.9899420000
+gold_173              172.9862410000
+gold_174              173.9847170000
+gold_175              174.9813040000
+gold_176              175.9802500000
+gold_177              176.9768700000
+gold_178              177.9760320000
+gold_179              178.9731740000
+gold_180              179.9725230000
+gold_181              180.9700790000
+gold_182              181.9696180000
+gold_183              182.9675910000
+gold_184              183.9674520000
+gold_185              184.9657900000
+gold_186              185.9659530000
+gold_187              186.9645430000
+gold_188              187.9653490000
+gold_189              188.9639480000
+gold_190              189.9646980000
+gold_191              190.9637020000
+gold_192              191.9648140000
+gold_193              192.9641373000
+gold_194              193.9654178000
+gold_195              194.9650352000
+gold_196              195.9665699000
+gold_197              196.9665687900   # 1.00000000
+gold_198              197.9682424200
+gold_199              198.9687652800
+gold_200              199.9707560000
+gold_201              200.9716575000
+gold_202              201.9738560000
+gold_203              202.9751544000
+gold_204              203.9778300000
+gold_205              204.9798500000
+gold_206              205.9847400000
+gold_207              206.9884000000
+gold_208              207.9934500000
+gold_209              208.9973500000
+gold_210              210.0025000000
+gold                  gold_197
+
+# mercury: Hg (80)  std atomic weight: 200.592(3)
+mercury_171           171.0035300000
+mercury_172           171.9988100000
+mercury_173           172.9970900000
+mercury_174           173.9928650000
+mercury_175           174.9914410000
+mercury_176           175.9873610000
+mercury_177           176.9862770000
+mercury_178           177.9824840000
+mercury_179           178.9818310000
+mercury_180           179.9782600000
+mercury_181           180.9778190000
+mercury_182           181.9746890000
+mercury_183           182.9744448000
+mercury_184           183.9717140000
+mercury_185           184.9718990000
+mercury_186           185.9693620000
+mercury_187           186.9698140000
+mercury_188           187.9675670000
+mercury_189           188.9681950000
+mercury_190           189.9663230000
+mercury_191           190.9671570000
+mercury_192           191.9656350000
+mercury_193           192.9666530000
+mercury_194           193.9654491000
+mercury_195           194.9667210000
+mercury_196           195.9658326000   # 0.00150000
+mercury_197           196.9672128000
+mercury_198           197.9667686000   # 0.09970000
+mercury_199           198.9682806400   # 0.16870000
+mercury_200           199.9683265900   # 0.23100000
+mercury_201           200.9703028400   # 0.13180000
+mercury_202           201.9706434000   # 0.29860000
+mercury_203           202.9728728000
+mercury_204           203.9734939800   # 0.06870000
+mercury_205           204.9760734000
+mercury_206           205.9775140000
+mercury_207           206.9823000000
+mercury_208           207.9857590000
+mercury_209           208.9907200000
+mercury_210           209.9942400000
+mercury_211           210.9993300000
+mercury_212           212.0029600000
+mercury_213           213.0082300000
+mercury_214           214.0120000000
+mercury_215           215.0174000000
+mercury_216           216.0213200000
+mercury           0.00150000 mercury_196 \
+                + 0.09970000 mercury_198 \
+                + 0.16870000 mercury_199 \
+                + 0.23100000 mercury_200 \
+                + 0.13180000 mercury_201 \
+                + 0.29860000 mercury_202 \
+                + 0.06870000 mercury_204
+
+# thallium: Tl (81)  std atomic weight: [204.382,204.385]
+thallium_176          176.0006240000
+thallium_177          176.9964310000
+thallium_178          177.9948500000
+thallium_179          178.9911110000
+thallium_180          179.9900570000
+thallium_181          180.9862600000
+thallium_182          181.9857130000
+thallium_183          182.9821930000
+thallium_184          183.9818860000
+thallium_185          184.9787890000
+thallium_186          185.9786510000
+thallium_187          186.9759063000
+thallium_188          187.9760210000
+thallium_189          188.9735880000
+thallium_190          189.9738280000
+thallium_191          190.9717842000
+thallium_192          191.9722250000
+thallium_193          192.9705020000
+thallium_194          193.9710810000
+thallium_195          194.9697740000
+thallium_196          195.9704810000
+thallium_197          196.9695760000
+thallium_198          197.9704830000
+thallium_199          198.9698770000
+thallium_200          199.9709633000
+thallium_201          200.9708220000
+thallium_202          201.9721020000
+thallium_203          202.9723446000   # 0.29520000
+thallium_204          203.9738639000
+thallium_205          204.9744278000   # 0.70480000
+thallium_206          205.9761106000
+thallium_207          206.9774197000
+thallium_208          207.9820190000
+thallium_209          208.9853594000
+thallium_210          209.9900740000
+thallium_211          210.9934750000
+thallium_212          211.9983400000
+thallium_213          213.0019150000
+thallium_214          214.0069400000
+thallium_215          215.0106400000
+thallium_216          216.0158000000
+thallium_217          217.0196600000
+thallium_218          218.0247900000
+thallium          0.29520000 thallium_203 \
+                + 0.70480000 thallium_205
+
+# lead: Pb (82)  std atomic weight: 207.2(1)
+lead_178              178.0038310000
+lead_179              179.0022010000
+lead_180              179.9979280000
+lead_181              180.9966530000
+lead_182              181.9926720000
+lead_183              182.9918720000
+lead_184              183.9881360000
+lead_185              184.9876100000
+lead_186              185.9842380000
+lead_187              186.9839109000
+lead_188              187.9808750000
+lead_189              188.9808070000
+lead_190              189.9780820000
+lead_191              190.9782760000
+lead_192              191.9757750000
+lead_193              192.9761730000
+lead_194              193.9740120000
+lead_195              194.9745430000
+lead_196              195.9727740000
+lead_197              196.9734312000
+lead_198              197.9720340000
+lead_199              198.9729130000
+lead_200              199.9718190000
+lead_201              200.9728830000
+lead_202              201.9721520000
+lead_203              202.9733911000
+lead_204              203.9730440000   # 0.01400000
+lead_205              204.9744822000
+lead_206              205.9744657000   # 0.24100000
+lead_207              206.9758973000   # 0.22100000
+lead_208              207.9766525000   # 0.52400000
+lead_209              208.9810905000
+lead_210              209.9841889000
+lead_211              210.9887371000
+lead_212              211.9918977000
+lead_213              212.9965629000
+lead_214              213.9998059000
+lead_215              215.0047400000
+lead_216              216.0080300000
+lead_217              217.0131400000
+lead_218              218.0165900000
+lead_219              219.0217700000
+lead_220              220.0254100000
+lead              0.01400000 lead_204 \
+                + 0.24100000 lead_206 \
+                + 0.22100000 lead_207 \
+                + 0.52400000 lead_208
+
+# bismuth: Bi (83)  std atomic weight: 208.98040(1)
+bismuth_184           184.0012750000
+bismuth_185           184.9976000000
+bismuth_186           185.9966440000
+bismuth_187           186.9931470000
+bismuth_188           187.9922870000
+bismuth_189           188.9891950000
+bismuth_190           189.9886220000
+bismuth_191           190.9857866000
+bismuth_192           191.9854690000
+bismuth_193           192.9829600000
+bismuth_194           193.9827850000
+bismuth_195           194.9806488000
+bismuth_196           195.9806670000
+bismuth_197           196.9788651000
+bismuth_198           197.9792060000
+bismuth_199           198.9776730000
+bismuth_200           199.9781310000
+bismuth_201           200.9770100000
+bismuth_202           201.9777340000
+bismuth_203           202.9768930000
+bismuth_204           203.9778361000
+bismuth_205           204.9773867000
+bismuth_206           205.9784993000
+bismuth_207           206.9784710000
+bismuth_208           207.9797425000
+bismuth_209           208.9803991000   # 1.00000000
+bismuth_210           209.9841207000
+bismuth_211           210.9872697000
+bismuth_212           211.9912860000
+bismuth_213           212.9943851000
+bismuth_214           213.9987120000
+bismuth_215           215.0017700000
+bismuth_216           216.0063060000
+bismuth_217           217.0093720000
+bismuth_218           218.0141880000
+bismuth_219           219.0174800000
+bismuth_220           220.0223500000
+bismuth_221           221.0258700000
+bismuth_222           222.0307800000
+bismuth_223           223.0345000000
+bismuth_224           224.0394700000
+bismuth               bismuth_209
+
+# polonium: Po (84)  std atomic weight: [209]
+polonium_186          186.0043930000
+polonium_187          187.0030410000
+polonium_188          187.9994160000
+polonium_189          188.9984730000
+polonium_190          189.9951010000
+polonium_191          190.9945585000
+polonium_192          191.9913360000
+polonium_193          192.9910260000
+polonium_194          193.9881860000
+polonium_195          194.9881260000
+polonium_196          195.9855260000
+polonium_197          196.9856600000
+polonium_198          197.9833890000
+polonium_199          198.9836670000
+polonium_200          199.9817990000
+polonium_201          200.9822598000
+polonium_202          201.9807580000
+polonium_203          202.9814161000
+polonium_204          203.9803100000
+polonium_205          204.9812030000
+polonium_206          205.9804740000
+polonium_207          206.9815938000
+polonium_208          207.9812461000
+polonium_209          208.9824308000
+polonium_210          209.9828741000
+polonium_211          210.9866536000
+polonium_212          211.9888684000
+polonium_213          212.9928576000
+polonium_214          213.9952017000
+polonium_215          214.9994201000
+polonium_216          216.0019152000
+polonium_217          217.0063182000
+polonium_218          218.0089735000
+polonium_219          219.0136140000
+polonium_220          220.0163860000
+polonium_221          221.0212280000
+polonium_222          222.0241400000
+polonium_223          223.0290700000
+polonium_224          224.0321100000
+polonium_225          225.0370700000
+polonium_226          226.0403100000
+polonium_227          227.0453900000
+polonium              polonium_209     # most stable
+
+# astatine: At (85)  std atomic weight: [210]
+astatine_191          191.0041480000
+astatine_192          192.0031520000
+astatine_193          192.9999270000
+astatine_194          193.9992360000
+astatine_195          194.9962685000
+astatine_196          195.9958000000
+astatine_197          196.9931890000
+astatine_198          197.9927840000
+astatine_199          198.9905277000
+astatine_200          199.9903510000
+astatine_201          200.9884171000
+astatine_202          201.9886300000
+astatine_203          202.9869430000
+astatine_204          203.9872510000
+astatine_205          204.9860760000
+astatine_206          205.9866570000
+astatine_207          206.9858000000
+astatine_208          207.9866133000
+astatine_209          208.9861702000
+astatine_210          209.9871479000
+astatine_211          210.9874966000
+astatine_212          211.9907377000
+astatine_213          212.9929370000
+astatine_214          213.9963721000
+astatine_215          214.9986528000
+astatine_216          216.0024236000
+astatine_217          217.0047192000
+astatine_218          218.0086950000
+astatine_219          219.0111618000
+astatine_220          220.0154330000
+astatine_221          221.0180170000
+astatine_222          222.0224940000
+astatine_223          223.0251510000
+astatine_224          224.0297490000
+astatine_225          225.0326300000
+astatine_226          226.0371600000
+astatine_227          227.0402400000
+astatine_228          228.0447500000
+astatine_229          229.0481200000
+astatine              astatine_210     # most stable
+
+# radon: Rn (86)  std atomic weight: [222]
+radon_193             193.0097080000
+radon_194             194.0061440000
+radon_195             195.0054220000
+radon_196             196.0021160000
+radon_197             197.0015850000
+radon_198             197.9986790000
+radon_199             198.9983900000
+radon_200             199.9956900000
+radon_201             200.9956280000
+radon_202             201.9932640000
+radon_203             202.9933880000
+radon_204             203.9914300000
+radon_205             204.9917190000
+radon_206             205.9902140000
+radon_207             206.9907303000
+radon_208             207.9896350000
+radon_209             208.9904150000
+radon_210             209.9896891000
+radon_211             210.9906011000
+radon_212             211.9907039000
+radon_213             212.9938831000
+radon_214             213.9953630000
+radon_215             214.9987459000
+radon_216             216.0002719000
+radon_217             217.0039280000
+radon_218             218.0056016000
+radon_219             219.0094804000
+radon_220             220.0113941000
+radon_221             221.0155371000
+radon_222             222.0175782000
+radon_223             223.0218893000
+radon_224             224.0240960000
+radon_225             225.0284860000
+radon_226             226.0308610000
+radon_227             227.0353040000
+radon_228             228.0378350000
+radon_229             229.0422570000
+radon_230             230.0451400000
+radon_231             231.0498700000
+radon                 radon_222        # most stable
+
+# francium: Fr (87)  std atomic weight: [223]
+francium_199          199.0072590000
+francium_200          200.0065860000
+francium_201          201.0038670000
+francium_202          202.0033200000
+francium_203          203.0009407000
+francium_204          204.0006520000
+francium_205          204.9985939000
+francium_206          205.9986660000
+francium_207          206.9969460000
+francium_208          207.9971380000
+francium_209          208.9959550000
+francium_210          209.9964220000
+francium_211          210.9955560000
+francium_212          211.9962257000
+francium_213          212.9961860000
+francium_214          213.9989713000
+francium_215          215.0003418000
+francium_216          216.0031899000
+francium_217          217.0046323000
+francium_218          218.0075787000
+francium_219          219.0092524000
+francium_220          220.0123277000
+francium_221          221.0142552000
+francium_222          222.0175520000
+francium_223          223.0197360000
+francium_224          224.0233980000
+francium_225          225.0255730000
+francium_226          226.0295660000
+francium_227          227.0318690000
+francium_228          228.0358230000
+francium_229          229.0382980000
+francium_230          230.0424160000
+francium_231          231.0451580000
+francium_232          232.0493700000
+francium_233          233.0526400000
+francium              francium_223     # most stable
+
+# radium: Ra (88)  std atomic weight: [226]
+radium_201            201.0127100000
+radium_202            202.0097600000
+radium_203            203.0093040000
+radium_204            204.0064920000
+radium_205            205.0062680000
+radium_206            206.0038280000
+radium_207            207.0037990000
+radium_208            208.0018410000
+radium_209            209.0019900000
+radium_210            210.0004940000
+radium_211            211.0008932000
+radium_212            211.9997870000
+radium_213            213.0003840000
+radium_214            214.0000997000
+radium_215            215.0027204000
+radium_216            216.0035334000
+radium_217            217.0063207000
+radium_218            218.0071410000
+radium_219            219.0100855000
+radium_220            220.0110259000
+radium_221            221.0139177000
+radium_222            222.0153748000
+radium_223            223.0185023000
+radium_224            224.0202120000
+radium_225            225.0236119000
+radium_226            226.0254103000
+radium_227            227.0291783000
+radium_228            228.0310707000
+radium_229            229.0349420000
+radium_230            230.0370550000
+radium_231            231.0410270000
+radium_232            232.0434753000
+radium_233            233.0475820000
+radium_234            234.0503420000
+radium_235            235.0549700000
+radium                radium_226       # most stable
+
+# actinium: Ac (89)  std atomic weight: [227]
+actinium_206          206.0144520000
+actinium_207          207.0119660000
+actinium_208          208.0115500000
+actinium_209          209.0094950000
+actinium_210          210.0094360000
+actinium_211          211.0077320000
+actinium_212          212.0078130000
+actinium_213          213.0066090000
+actinium_214          214.0069180000
+actinium_215          215.0064750000
+actinium_216          216.0087430000
+actinium_217          217.0093440000
+actinium_218          218.0116420000
+actinium_219          219.0124210000
+actinium_220          220.0147549000
+actinium_221          221.0155920000
+actinium_222          222.0178442000
+actinium_223          223.0191377000
+actinium_224          224.0217232000
+actinium_225          225.0232300000
+actinium_226          226.0260984000
+actinium_227          227.0277523000
+actinium_228          228.0310215000
+actinium_229          229.0329560000
+actinium_230          230.0363270000
+actinium_231          231.0383930000
+actinium_232          232.0420340000
+actinium_233          233.0443460000
+actinium_234          234.0481390000
+actinium_235          235.0508400000
+actinium_236          236.0549880000
+actinium_237          237.0582700000
+actinium              actinium_227     # most stable
+
+# thorium: Th (90)  std atomic weight: 232.0377(4)
+thorium_208           208.0179000000
+thorium_209           209.0177530000
+thorium_210           210.0150940000
+thorium_211           211.0149290000
+thorium_212           212.0129880000
+thorium_213           213.0130090000
+thorium_214           214.0115000000
+thorium_215           215.0117248000
+thorium_216           216.0110560000
+thorium_217           217.0131170000
+thorium_218           218.0132760000
+thorium_219           219.0155370000
+thorium_220           220.0157480000
+thorium_221           221.0181840000
+thorium_222           222.0184690000
+thorium_223           223.0208119000
+thorium_224           224.0214640000
+thorium_225           225.0239514000
+thorium_226           226.0249034000
+thorium_227           227.0277042000
+thorium_228           228.0287413000
+thorium_229           229.0317627000
+thorium_230           230.0331341000
+thorium_231           231.0363046000
+thorium_232           232.0380558000   # 1.00000000
+thorium_233           233.0415823000
+thorium_234           234.0436014000
+thorium_235           235.0472550000
+thorium_236           236.0496570000
+thorium_237           237.0536290000
+thorium_238           238.0565000000
+thorium_239           239.0607700000
+thorium               thorium_232
+
+# protactinium: Pa (91)  std atomic weight: 231.03588(2)
+protactinium_212      212.0232030000
+protactinium_213      213.0211090000
+protactinium_214      214.0209180000
+protactinium_215      215.0191830000
+protactinium_216      216.0191090000
+protactinium_217      217.0183250000
+protactinium_218      218.0200590000
+protactinium_219      219.0199040000
+protactinium_220      220.0217050000
+protactinium_221      221.0218750000
+protactinium_222      222.0237840000
+protactinium_223      223.0239630000
+protactinium_224      224.0256176000
+protactinium_225      225.0261310000
+protactinium_226      226.0279480000
+protactinium_227      227.0288054000
+protactinium_228      228.0310517000
+protactinium_229      229.0320972000
+protactinium_230      230.0345410000
+protactinium_231      231.0358842000   # 1.00000000
+protactinium_232      232.0385917000
+protactinium_233      233.0402472000
+protactinium_234      234.0433072000
+protactinium_235      235.0453990000
+protactinium_236      236.0486680000
+protactinium_237      237.0510230000
+protactinium_238      238.0546370000
+protactinium_239      239.0572600000
+protactinium_240      240.0609800000
+protactinium_241      241.0640800000
+protactinium          protactinium_231
+
+# uranium: U (92)  std atomic weight: 238.02891(3)
+uranium_217           217.0246600000
+uranium_218           218.0235230000
+uranium_219           219.0249990000
+uranium_220           220.0246200000
+uranium_221           221.0262800000
+uranium_222           222.0260000000
+uranium_223           223.0277390000
+uranium_224           224.0276050000
+uranium_225           225.0293910000
+uranium_226           226.0293390000
+uranium_227           227.0311570000
+uranium_228           228.0313710000
+uranium_229           229.0335063000
+uranium_230           230.0339401000
+uranium_231           231.0362939000
+uranium_232           232.0371563000
+uranium_233           233.0396355000
+uranium_234           234.0409523000   # 0.00005400
+uranium_235           235.0439301000   # 0.00720400
+uranium_236           236.0455682000
+uranium_237           237.0487304000
+uranium_238           238.0507884000   # 0.99274200
+uranium_239           239.0542935000
+uranium_240           240.0565934000
+uranium_241           241.0603300000
+uranium_242           242.0629300000
+uranium_243           243.0669900000
+uranium           0.00005400 uranium_234 \
+                + 0.00720400 uranium_235 \
+                + 0.99274200 uranium_238
+
+# neptunium: Np (93)  std atomic weight: [237]
+neptunium_219         219.0314300000
+neptunium_220         220.0325400000
+neptunium_221         221.0320400000
+neptunium_222         222.0333000000
+neptunium_223         223.0328500000
+neptunium_224         224.0342200000
+neptunium_225         225.0339110000
+neptunium_226         226.0351880000
+neptunium_227         227.0349570000
+neptunium_228         228.0360670000
+neptunium_229         229.0362640000
+neptunium_230         230.0378280000
+neptunium_231         231.0382450000
+neptunium_232         232.0401100000
+neptunium_233         233.0407410000
+neptunium_234         234.0428953000
+neptunium_235         235.0440635000
+neptunium_236         236.0465700000
+neptunium_237         237.0481736000
+neptunium_238         238.0509466000
+neptunium_239         239.0529392000
+neptunium_240         240.0561650000
+neptunium_241         241.0582530000
+neptunium_242         242.0616400000
+neptunium_243         243.0642800000
+neptunium_244         244.0678500000
+neptunium_245         245.0708000000
+neptunium             neptunium_237    # most stable
+
+# plutonium: Pu (94)  std atomic weight: [244]
+plutonium_228         228.0387320000
+plutonium_229         229.0401440000
+plutonium_230         230.0396500000
+plutonium_231         231.0411020000
+plutonium_232         232.0411850000
+plutonium_233         233.0429980000
+plutonium_234         234.0433174000
+plutonium_235         235.0452860000
+plutonium_236         236.0460581000
+plutonium_237         237.0484098000
+plutonium_238         238.0495601000
+plutonium_239         239.0521636000
+plutonium_240         240.0538138000
+plutonium_241         241.0568517000
+plutonium_242         242.0587428000
+plutonium_243         243.0620036000
+plutonium_244         244.0642053000
+plutonium_245         245.0678260000
+plutonium_246         246.0702050000
+plutonium_247         247.0741900000
+plutonium             plutonium_244    # most stable
+
+# americium: Am (95)
+americium_230         230.0460900000
+americium_231         231.0455600000
+americium_232         232.0464500000
+americium_233         233.0464400000
+americium_234         234.0477300000
+americium_235         235.0479080000
+americium_236         236.0494300000
+americium_237         237.0499960000
+americium_238         238.0519850000
+americium_239         239.0530247000
+americium_240         240.0553000000
+americium_241         241.0568293000
+americium_242         242.0595494000
+americium_243         243.0613813000
+americium_244         244.0642851000
+americium_245         245.0664548000
+americium_246         246.0697750000
+americium_247         247.0720900000
+americium_248         248.0757500000
+americium_249         249.0784800000
+
+# curium: Cm (96)
+curium_232            232.0498200000
+curium_233            233.0507700000
+curium_234            234.0501600000
+curium_235            235.0515400000
+curium_236            236.0513740000
+curium_237            237.0528690000
+curium_238            238.0530810000
+curium_239            239.0549100000
+curium_240            240.0555297000
+curium_241            241.0576532000
+curium_242            242.0588360000
+curium_243            243.0613893000
+curium_244            244.0627528000
+curium_245            245.0654915000
+curium_246            246.0672238000
+curium_247            247.0703541000
+curium_248            248.0723499000
+curium_249            249.0759548000
+curium_250            250.0783580000
+curium_251            251.0822860000
+curium_252            252.0848700000
+
+# berkelium: Bk (97)
+berkelium_234         234.0572700000
+berkelium_235         235.0565800000
+berkelium_236         236.0574800000
+berkelium_237         237.0571000000
+berkelium_238         238.0582000000
+berkelium_239         239.0582400000
+berkelium_240         240.0597600000
+berkelium_241         241.0601600000
+berkelium_242         242.0619800000
+berkelium_243         243.0630078000
+berkelium_244         244.0651810000
+berkelium_245         245.0663618000
+berkelium_246         246.0686730000
+berkelium_247         247.0703073000
+berkelium_248         248.0730880000
+berkelium_249         249.0749877000
+berkelium_250         250.0783167000
+berkelium_251         251.0807620000
+berkelium_252         252.0843100000
+berkelium_253         253.0868800000
+berkelium_254         254.0906000000
+
+# californium: Cf (98)
+californium_237       237.0621980000
+californium_238       238.0614900000
+californium_239       239.0625300000
+californium_240       240.0622560000
+californium_241       241.0636900000
+californium_242       242.0637540000
+californium_243       243.0654800000
+californium_244       244.0660008000
+californium_245       245.0680487000
+californium_246       246.0688055000
+californium_247       247.0709650000
+californium_248       248.0721851000
+californium_249       249.0748539000
+californium_250       250.0764062000
+californium_251       251.0795886000
+californium_252       252.0816272000
+californium_253       253.0851345000
+californium_254       254.0873240000
+californium_255       255.0910500000
+californium_256       256.0934400000
+
+# einsteinium: Es (99)
+einsteinium_239       239.0682300000
+einsteinium_240       240.0689200000
+einsteinium_241       241.0685600000
+einsteinium_242       242.0695700000
+einsteinium_243       243.0695100000
+einsteinium_244       244.0708800000
+einsteinium_245       245.0712500000
+einsteinium_246       246.0729000000
+einsteinium_247       247.0736220000
+einsteinium_248       248.0754710000
+einsteinium_249       249.0764110000
+einsteinium_250       250.0786100000
+einsteinium_251       251.0799936000
+einsteinium_252       252.0829800000
+einsteinium_253       253.0848257000
+einsteinium_254       254.0880222000
+einsteinium_255       255.0902750000
+einsteinium_256       256.0936000000
+einsteinium_257       257.0959800000
+einsteinium_258       258.0995200000
+
+# fermium: Fm (100)
+fermium_241           241.0742100000
+fermium_242           242.0734300000
+fermium_243           243.0744600000
+fermium_244           244.0740400000
+fermium_245           245.0753500000
+fermium_246           246.0753500000
+fermium_247           247.0769400000
+fermium_248           248.0771865000
+fermium_249           249.0789275000
+fermium_250           250.0795210000
+fermium_251           251.0815400000
+fermium_252           252.0824671000
+fermium_253           253.0851846000
+fermium_254           254.0868544000
+fermium_255           255.0899640000
+fermium_256           256.0917745000
+fermium_257           257.0951061000
+fermium_258           258.0970800000
+fermium_259           259.1006000000
+fermium_260           260.1028100000
+
+# mendelevium: Md (101)
+mendelevium_245       245.0808100000
+mendelevium_246       246.0817100000
+mendelevium_247       247.0815200000
+mendelevium_248       248.0828200000
+mendelevium_249       249.0829100000
+mendelevium_250       250.0844100000
+mendelevium_251       251.0847740000
+mendelevium_252       252.0864300000
+mendelevium_253       253.0871440000
+mendelevium_254       254.0895900000
+mendelevium_255       255.0910841000
+mendelevium_256       256.0938900000
+mendelevium_257       257.0955424000
+mendelevium_258       258.0984315000
+mendelevium_259       259.1005100000
+mendelevium_260       260.1036500000
+mendelevium_261       261.1058300000
+mendelevium_262       262.1091000000
+
+# nobelium: No (102)
+nobelium_248          248.0865500000
+nobelium_249          249.0878000000
+nobelium_250          250.0875600000
+nobelium_251          251.0889400000
+nobelium_252          252.0889670000
+nobelium_253          253.0905641000
+nobelium_254          254.0909560000
+nobelium_255          255.0931910000
+nobelium_256          256.0942829000
+nobelium_257          257.0968878000
+nobelium_258          258.0982100000
+nobelium_259          259.1010300000
+nobelium_260          260.1026400000
+nobelium_261          261.1057000000
+nobelium_262          262.1074600000
+nobelium_263          263.1107100000
+nobelium_264          264.1127300000
+
+# lawrencium: Lr (103)
+lawrencium_251        251.0941800000
+lawrencium_252        252.0952600000
+lawrencium_253        253.0950900000
+lawrencium_254        254.0964800000
+lawrencium_255        255.0965620000
+lawrencium_256        256.0984940000
+lawrencium_257        257.0994180000
+lawrencium_258        258.1017600000
+lawrencium_259        259.1029020000
+lawrencium_260        260.1055000000
+lawrencium_261        261.1068800000
+lawrencium_262        262.1096100000
+lawrencium_263        263.1113600000
+lawrencium_264        264.1142000000
+lawrencium_265        265.1161900000
+lawrencium_266        266.1198300000
+
+# rutherfordium: Rf (104)
+rutherfordium_253     253.1004400000
+rutherfordium_254     254.1000500000
+rutherfordium_255     255.1012700000
+rutherfordium_256     256.1011520000
+rutherfordium_257     257.1029180000
+rutherfordium_258     258.1034280000
+rutherfordium_259     259.1055960000
+rutherfordium_260     260.1064400000
+rutherfordium_261     261.1087730000
+rutherfordium_262     262.1099200000
+rutherfordium_263     263.1124900000
+rutherfordium_264     264.1138800000
+rutherfordium_265     265.1166800000
+rutherfordium_266     266.1181700000
+rutherfordium_267     267.1217900000
+rutherfordium_268     268.1239700000
+
+# dubnium: Db (105)
+dubnium_255           255.1070700000
+dubnium_256           256.1078900000
+dubnium_257           257.1075800000
+dubnium_258           258.1092800000
+dubnium_259           259.1094920000
+dubnium_260           260.1113000000
+dubnium_261           261.1119200000
+dubnium_262           262.1140700000
+dubnium_263           263.1149900000
+dubnium_264           264.1174100000
+dubnium_265           265.1186100000
+dubnium_266           266.1210300000
+dubnium_267           267.1224700000
+dubnium_268           268.1256700000
+dubnium_269           269.1279100000
+dubnium_270           270.1313600000
+
+# seaborgium: Sg (106)
+seaborgium_258        258.1129800000
+seaborgium_259        259.1144000000
+seaborgium_260        260.1143840000
+seaborgium_261        261.1159490000
+seaborgium_262        262.1163370000
+seaborgium_263        263.1182900000
+seaborgium_264        264.1189300000
+seaborgium_265        265.1210900000
+seaborgium_266        266.1219800000
+seaborgium_267        267.1243600000
+seaborgium_268        268.1253900000
+seaborgium_269        269.1286300000
+seaborgium_270        270.1304300000
+seaborgium_271        271.1339300000
+seaborgium_272        272.1358900000
+seaborgium_273        273.1395800000
+
+# bohrium: Bh (107)
+bohrium_260           260.1216600000
+bohrium_261           261.1214500000
+bohrium_262           262.1229700000
+bohrium_263           263.1229200000
+bohrium_264           264.1245900000
+bohrium_265           265.1249100000
+bohrium_266           266.1267900000
+bohrium_267           267.1275000000
+bohrium_268           268.1296900000
+bohrium_269           269.1304200000
+bohrium_270           270.1333600000
+bohrium_271           271.1352600000
+bohrium_272           272.1382600000
+bohrium_273           273.1402400000
+bohrium_274           274.1435500000
+bohrium_275           275.1456700000
+
+# hassium: Hs (108)
+hassium_263           263.1285200000
+hassium_264           264.1283570000
+hassium_265           265.1297930000
+hassium_266           266.1300460000
+hassium_267           267.1316700000
+hassium_268           268.1318600000
+hassium_269           269.1337500000
+hassium_270           270.1342900000
+hassium_271           271.1371700000
+hassium_272           272.1385000000
+hassium_273           273.1416800000
+hassium_274           274.1433000000
+hassium_275           275.1466700000
+hassium_276           276.1484600000
+hassium_277           277.1519000000
+
+# meitnerium: Mt (109)
+meitnerium_265        265.1360000000
+meitnerium_266        266.1373700000
+meitnerium_267        267.1371900000
+meitnerium_268        268.1386500000
+meitnerium_269        269.1388200000
+meitnerium_270        270.1403300000
+meitnerium_271        271.1407400000
+meitnerium_272        272.1434100000
+meitnerium_273        273.1444000000
+meitnerium_274        274.1472400000
+meitnerium_275        275.1488200000
+meitnerium_276        276.1515900000
+meitnerium_277        277.1532700000
+meitnerium_278        278.1563100000
+meitnerium_279        279.1580800000
+
+# darmstadtium: Ds (110)
+darmstadtium_267      267.1437700000
+darmstadtium_268      268.1434800000
+darmstadtium_269      269.1447520000
+darmstadtium_270      270.1445840000
+darmstadtium_271      271.1459500000
+darmstadtium_272      272.1460200000
+darmstadtium_273      273.1485600000
+darmstadtium_274      274.1494100000
+darmstadtium_275      275.1520300000
+darmstadtium_276      276.1530300000
+darmstadtium_277      277.1559100000
+darmstadtium_278      278.1570400000
+darmstadtium_279      279.1601000000
+darmstadtium_280      280.1613100000
+darmstadtium_281      281.1645100000
+
+# roentgenium: Rg (111)
+roentgenium_272       272.1532700000
+roentgenium_273       273.1531300000
+roentgenium_274       274.1552500000
+roentgenium_275       275.1559400000
+roentgenium_276       276.1583300000
+roentgenium_277       277.1590700000
+roentgenium_278       278.1614900000
+roentgenium_279       279.1627200000
+roentgenium_280       280.1651400000
+roentgenium_281       281.1663600000
+roentgenium_282       282.1691200000
+roentgenium_283       283.1705400000
+
+# copernicium: Cn (112)
+copernicium_276       276.1614100000
+copernicium_277       277.1636400000
+copernicium_278       278.1641600000
+copernicium_279       279.1665400000
+copernicium_280       280.1671500000
+copernicium_281       281.1697500000
+copernicium_282       282.1705000000
+copernicium_283       283.1732700000
+copernicium_284       284.1741600000
+copernicium_285       285.1771200000
+
+# nihonium: Nh (113)
+nihonium_278          278.1705800000
+nihonium_279          279.1709500000
+nihonium_280          280.1729300000
+nihonium_281          281.1734800000
+nihonium_282          282.1756700000
+nihonium_283          283.1765700000
+nihonium_284          284.1787300000
+nihonium_285          285.1797300000
+nihonium_286          286.1822100000
+nihonium_287          287.1833900000
+
+# flerovium: Fl (114)
+flerovium_285         285.1836400000
+flerovium_286         286.1842300000
+flerovium_287         287.1867800000
+flerovium_288         288.1875700000
+flerovium_289         289.1904200000
+
+# moscovium: Uup (115)
+moscovium_287         287.1907000000
+moscovium_288         288.1927400000
+moscovium_289         289.1936300000
+moscovium_290         290.1959800000
+moscovium_291         291.1970700000
+
+# livermorium: Lv (116)
+livermorium_289       289.1981600000
+livermorium_290       290.1986400000
+livermorium_291       291.2010800000
+livermorium_292       292.2017400000
+livermorium_293       293.2044900000
+
+# tennessine: Uus (117)
+tennessine_291        291.2055300000
+tennessine_292        292.2074600000
+tennessine_293        293.2082400000
+tennessine_294        294.2104600000
+
+# oganesson: Og (118)
+oganesson_293         293.2135600000
+oganesson_294         294.2139200000
+oganesson_295         295.2162400000
+
diff --git a/Units.app/Contents/Resources/Units.icns b/Units.app/Contents/Resources/Units.icns
new file mode 100644
index 0000000..ffc4fff
--- /dev/null
+++ b/Units.app/Contents/Resources/Units.icns
Binary files differ
diff --git a/clip b/clip
new file mode 160000
index 0000000..4e9eeea
--- /dev/null
+++ b/clip
@@ -0,0 +1 @@
+Subproject commit 4e9eeea9293c6f35a1ebac0fd66db7463890f143
diff --git a/frontend-impl.js b/frontend-impl.js
index 9c7b07c..737a92f 100644
--- a/frontend-impl.js
+++ b/frontend-impl.js
@@ -24,14 +24,20 @@
     setTo('');
   }
 
+  function afterEquals(str) {
+    let parts = str.split('=');
+    return parts[parts.length - 1];
+  }
+
   return (
     <>
-      <form class="query-row" onSubmit={doConversion}>
+      <form class="query-row noselect" onSubmit={doConversion}>
         <input
           type="text"
           id="query"
           value={query}
           placeholder="From"
+          class="noselect"
           onChange={(val) => setQuery(val.target.value)}
         ></input>
         <input
@@ -39,6 +45,7 @@
           id="to"
           value={to}
           placeholder="To"
+          class="noselect"
           onChange={(val) => setTo(val.target.value)}
         ></input>
 
@@ -46,18 +53,26 @@
       </form>
 
       <div class="table-container">
-        <table>
-          <thead>
-            <tr><td style="width: 30%">From</td><td style="width: 15%">To</td><td style="width: 55%">Result</td></tr>
-          </thead>
+        <div class="table-title">
+          <span>Calculation</span>
+          <span>Result</span>
+        </div>
+        <div class="history">
           {hist.map((entry) => (
-            <tr>{entry.map(t => <td>{t}</td>)}</tr>
-          ))}
-          <tr><td></td></tr>
-        </table>
+              <div class="entry">
+                <span class="from">{entry[0]}</span>
+                { entry[1] !== "" ? <span class="to"> {entry[1]}</span> : <span />}
+                <span class="filler">
+                <span class="equals noselect">=</span>
+                <span class="res">{afterEquals(entry[2])}</span>
+                </span>
+              </div>
+            ))
+          }
+        </div>
       </div>
 
-      <div class="bottom-menu">
+      <div class="bottom-menu noselect">
         <span>
           Units: &nbsp;
           <select onChange={val => setUnitSystem(val.target.value)}>
diff --git a/icons/.DS_Store b/icons/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/icons/.DS_Store
Binary files differ
diff --git a/icons/Units.icns b/icons/Units.icns
new file mode 100644
index 0000000..07e2f95
--- /dev/null
+++ b/icons/Units.icns
Binary files differ
diff --git a/icons/Units.png b/icons/Units.png
new file mode 100644
index 0000000..2733b48
--- /dev/null
+++ b/icons/Units.png
Binary files differ
diff --git a/icons/Units.svg b/icons/Units.svg
new file mode 100644
index 0000000..965d589
--- /dev/null
+++ b/icons/Units.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<svg version="1.1" width="64" height="64" color-interpolation="linearRGB" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <path style="fill:#010101; fill-opacity:0.4941" d="M30 54H34L62 25L58 24L30 54z"/>
+  <path style="fill:none; stroke:#010000; stroke-width:4" d="M2 34V38L30 52L58 24V20L32 10L2 34z"/>
+  <linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="13.84" y1="-38.14" x2="58.34" y2="-27.7">
+   <stop offset="0" stop-color="#ffffff"/>
+   <stop offset="1" stop-color="#d3d3d3"/>
+  </linearGradient>
+  <path style="fill:url(#gradient0)" d="M2 34L30 46L58 20L32 10L2 34z"/>
+  <linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="6.95" y1="-50.95" x2="76.9" y2="-40.97">
+   <stop offset="0" stop-color="#1d1e2c"/>
+   <stop offset="0.2424" stop-color="#454658"/>
+   <stop offset="1" stop-color="#010101"/>
+  </linearGradient>
+  <path style="fill:url(#gradient1)" d="M54.5 20L46.22 27.68L23.99 19L33 12L54.5 20z"/>
+  <linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="8.55" y1="-65.3" x2="42.49" y2="-63.35">
+   <stop offset="0" stop-color="#78d905"/>
+   <stop offset="0.5075" stop-color="#8cff05"/>
+   <stop offset="1" stop-color="#7add05"/>
+  </linearGradient>
+  <path style="fill:none; stroke:url(#gradient2); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round" d="M45 25L42.5 23.75L44.5 21.75L47 23L49 21L46.5 19.75            M41 17L39 19L41 20            M43.5 18.25L39.5 22.25"/>
+  <linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="40.61" y1="-4.89" x2="77.77" y2="1.75">
+   <stop offset="0" stop-color="#474747"/>
+   <stop offset="1" stop-color="#a5a0a0"/>
+  </linearGradient>
+  <path style="fill:url(#gradient3)" d="M30 46V52L58 24V20L30 46z"/>
+  <linearGradient id="gradient4" gradientUnits="userSpaceOnUse" x1="11.3" y1="82.69" x2="-25.59" y2="46.62">
+   <stop offset="0" stop-color="#909090"/>
+   <stop offset="1" stop-color="#d4d4d4"/>
+  </linearGradient>
+  <path style="fill:url(#gradient4)" d="M2 34V38L30 52V46L2 34z"/>
+  <path style="fill:none; stroke:#ffffff; stroke-width:1" d="M8 30L34 42            M13 27L38 38            M18 24L42 34            M22 20L46 30            M28.5 22.5L10.75 37.25            M39 27L22 42"/>
+  <path style="fill:none; stroke:#b3b3b3; stroke-width:1" d="M28.5 22.5L10.75 37.25            M39 27L22 42" transform="matrix(1,0,0,1,-1,0)"/>
+  <path style="fill:none; stroke:#b3b3b3; stroke-width:1" d="M13 27L38 38            M18 24L42 34            M22 20L46 30            M8 30L34 42" transform="matrix(1,0,0,1,0.75,-0.75)"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/styles.css b/styles.css
index 73d891b..2982d5d 100644
--- a/styles.css
+++ b/styles.css
@@ -31,9 +31,25 @@
 .table-container {
     overflow-y: scroll;
     margin-top: 8px;
+    display: flex;
+    flex-direction: column;
 /*    border: 1px solid gray;*/
+    font-size: 0.85rem!important;
+
 }
 
+.table-title {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    background: rgb(242,242,247);
+    color: rgb(72,72,74);
+    position: sticky;
+    top: 0;
+    padding: 3px;
+}
+
+
 .bottom-menu {
     font-size: 0.85rem!important;
     display: grid;
@@ -41,25 +57,56 @@
     margin-top: 8px;
 }
 
-table {
-    width: 100%;
-    border-collapse: collapse;
-    margin: 0;
-    background: white;
-    table-layout: fixed;
-    font-size: 0.85rem!important;
-}
-td {
-    padding: 2px 4px;
+.to {
+    border: 1px solid #59ACFF;
+    background: #F6FBFF;
+    border-radius: 4px;
+    padding: 3px;
+    margin-left: 8px;
+    justify-self: flex-end;
 }
 
-thead {
-    background: rgb(242,242,247);
-    color: rgb(72,72,74);
-    position: sticky;
-    top: 0;
+.to::before {
+    content: "in ";
 }
 
-td:last-child {
-    text-align: right;
-}
\ No newline at end of file
+
+.res {
+    border: 1px solid #FFCC00;
+    background: #FFF8DA;
+    border-radius: 4px;
+    padding: 3px;
+    margin-left: 8px;
+}
+
+.equals {
+    content: "= ";
+    color: #FF7700;
+/*    font-weight: bold;*/
+}
+
+.filler {
+    flex: 1;
+    display: flex;
+    align-items: baseline;
+    justify-content: flex-end;
+}
+
+.entry {
+    margin: 4px 0;
+    display: flex;
+    flex-direction: row;
+    align-items: baseline;
+    flex-wrap: wrap;
+}
+
+.noselect {
+    -webkit-user-select: none; /* Safari */
+    -ms-user-select: none; /* IE 10 and IE 11 */
+    user-select: none; /* Standard syntax */
+    cursor: default;
+}
+
+.noselect input[type=text], .noselect textarea {
+    cursor: auto;
+}
diff --git a/units-impl-wasm.js b/units-impl-wasm.js
index bf562e1..105f51e 100644
--- a/units-impl-wasm.js
+++ b/units-impl-wasm.js
@@ -1,6 +1,12 @@
-const units = require("./units.js");
+const units = require("./units.lib.js");
 
-units().then((Module) => {
+globalThis.printBuffer = "";
+
+units({
+  "print": function(out) {
+    globalThis.printBuffer += out + "\n";
+  }
+}).then((Module) => {
   let _do_a_conversion = Module.cwrap("do_a_conversion", "number", [
     "number",
     "number",
@@ -17,4 +23,4 @@
   }
 
   window.convert = convert;
-});
\ No newline at end of file
+});
diff --git a/units.c b/units.c
index 9bc6c39..0b58a21 100644
--- a/units.c
+++ b/units.c
@@ -6250,7 +6250,7 @@
     return a + b;
 }
 
-char *g_argv_0 = NULL;
+char g_argv_0[128] = "./units";
 
 
 void conversion_setup();
@@ -6396,16 +6396,11 @@
     }
 }
 
-
 void
 do_a_conversion(char *input, char *output, char *system)
 {
     char *inp, *out;
 
-    char units[] = "./units";
-
-    g_argv_0 = units;
-
     checklocale();
 
     num_format.format = NULL;
@@ -6420,21 +6415,12 @@
         setnumformat();
 
     setenv("UNITS_SYSTEM", system, 1);
-    printf("units system %s\n", getenv("UNITS_SYSTEM"));
+    // printf("units system %s\n", getenv("UNITS_SYSTEM"));
 
     conversion_worker(input, output);
 }
 
 
-int test_main()
-{
-    char a[] = "pi", b[] = "";
-    do_a_conversion(a, b, "si");
-    do_a_conversion(a, b, "si");
-    do_a_conversion(a, b, "si");
-}
-
-
 int
 old_main(int argc, char **argv)
 {
diff --git a/units.js b/units.js
index 513ccd4..626ff70 100644
--- a/units.js
+++ b/units.js
@@ -1,23 +1,42 @@
 var createMyModule = (() => {
-    var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
-    if (typeof __filename !== 'undefined') _scriptDir ||= __filename;
+    var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
+    if (typeof __filename != 'undefined') _scriptName ||= __filename;
     return (
         function(moduleArg = {}) {
-            function require(name) {}
-            
+            var moduleRtn;
+
             var Module = moduleArg;
             var readyPromiseResolve, readyPromiseReject;
-            Module["ready"] = new Promise((resolve, reject) => {
+            var readyPromise = new Promise((resolve, reject) => {
                 readyPromiseResolve = resolve;
                 readyPromiseReject = reject
             });
-            if (!Module.expectedDataFileDownloads) {
-                Module.expectedDataFileDownloads = 0
+            ["_test_int", "_do_a_conversion", "_memory", "___indirect_function_table", "onRuntimeInitialized"].forEach(prop => {
+                if (!Object.getOwnPropertyDescriptor(readyPromise, prop)) {
+                    Object.defineProperty(readyPromise, prop, {
+                        get: () => abort("You are getting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),
+                        set: () => abort("You are setting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")
+                    })
+                }
+            });
+            var ENVIRONMENT_IS_WEB = typeof window == "object";
+            var ENVIRONMENT_IS_WORKER = typeof importScripts == "function";
+            var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string";
+            var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
+            if (Module["ENVIRONMENT"]) {
+                throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")
             }
-            Module.expectedDataFileDownloads++;
-            (function() {
-                if (Module["ENVIRONMENT_IS_PTHREAD"] || Module["$ww"]) return;
-                var loadPackage = function(metadata) {
+            if (ENVIRONMENT_IS_NODE) {}
+            if (!Module["expectedDataFileDownloads"]) {
+                Module["expectedDataFileDownloads"] = 0
+            }
+            Module["expectedDataFileDownloads"]++;
+            (() => {
+                var isPthread = typeof ENVIRONMENT_IS_PTHREAD != "undefined" && ENVIRONMENT_IS_PTHREAD;
+                var isWasmWorker = typeof ENVIRONMENT_IS_WASM_WORKER != "undefined" && ENVIRONMENT_IS_WASM_WORKER;
+                if (isPthread || isWasmWorker) return;
+
+                function loadPackage(metadata) {
                     var PACKAGE_PATH = "";
                     if (typeof window === "object") {
                         PACKAGE_PATH = window["encodeURIComponent"](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/")
@@ -35,7 +54,7 @@
 
                     function fetchRemotePackage(packageName, packageSize, callback, errback) {
                         if (typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string") {
-                            require("fs").readFile(packageName, function(err, contents) {
+                            require("fs").readFile(packageName, (err, contents) => {
                                 if (err) {
                                     errback(err)
                                 } else {
@@ -47,40 +66,40 @@
                         var xhr = new XMLHttpRequest;
                         xhr.open("GET", packageName, true);
                         xhr.responseType = "arraybuffer";
-                        xhr.onprogress = function(event) {
+                        xhr.onprogress = event => {
                             var url = packageName;
                             var size = packageSize;
                             if (event.total) size = event.total;
                             if (event.loaded) {
                                 if (!xhr.addedTotal) {
                                     xhr.addedTotal = true;
-                                    if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
-                                    Module.dataFileDownloads[url] = {
+                                    if (!Module["dataFileDownloads"]) Module["dataFileDownloads"] = {};
+                                    Module["dataFileDownloads"][url] = {
                                         loaded: event.loaded,
                                         total: size
                                     }
                                 } else {
-                                    Module.dataFileDownloads[url].loaded = event.loaded
+                                    Module["dataFileDownloads"][url].loaded = event.loaded
                                 }
                                 var total = 0;
                                 var loaded = 0;
                                 var num = 0;
-                                for (var download in Module.dataFileDownloads) {
-                                    var data = Module.dataFileDownloads[download];
+                                for (var download in Module["dataFileDownloads"]) {
+                                    var data = Module["dataFileDownloads"][download];
                                     total += data.total;
                                     loaded += data.loaded;
                                     num++
                                 }
-                                total = Math.ceil(total * Module.expectedDataFileDownloads / num);
-                                if (Module["setStatus"]) Module["setStatus"](`Downloading data... (${loaded}/${total})`)
-                            } else if (!Module.dataFileDownloads) {
-                                if (Module["setStatus"]) Module["setStatus"]("Downloading data...")
+                                total = Math.ceil(total * Module["expectedDataFileDownloads"] / num);
+                                Module["setStatus"]?.(`Downloading data... (${loaded}/${total})`)
+                            } else if (!Module["dataFileDownloads"]) {
+                                Module["setStatus"]?.("Downloading data...")
                             }
                         };
-                        xhr.onerror = function(event) {
+                        xhr.onerror = event => {
                             throw new Error("NetworkError for: " + packageName)
                         };
-                        xhr.onload = function(event) {
+                        xhr.onload = event => {
                             if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || xhr.status == 0 && xhr.response) {
                                 var packageData = xhr.response;
                                 callback(packageData)
@@ -96,7 +115,7 @@
                     }
                     var fetchedCallback = null;
                     var fetched = Module["getPreloadedPackage"] ? Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
-                    if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
+                    if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, data => {
                         if (fetchedCallback) {
                             fetchedCallback(data);
                             fetchedCallback = null
@@ -105,7 +124,7 @@
                         }
                     }, handleError);
 
-                    function runWithFS() {
+                    function runWithFS(Module) {
                         function assert(check, msg) {
                             if (!check) throw msg + (new Error).stack
                         }
@@ -151,8 +170,8 @@
                             Module["removeRunDependency"]("datafile_units.lib.data")
                         }
                         Module["addRunDependency"]("datafile_units.lib.data");
-                        if (!Module.preloadResults) Module.preloadResults = {};
-                        Module.preloadResults[PACKAGE_NAME] = {
+                        if (!Module["preloadResults"]) Module["preloadResults"] = {};
+                        Module["preloadResults"][PACKAGE_NAME] = {
                             fromCache: false
                         };
                         if (fetched) {
@@ -163,46 +182,45 @@
                         }
                     }
                     if (Module["calledRun"]) {
-                        runWithFS()
+                        runWithFS(Module)
                     } else {
                         if (!Module["preRun"]) Module["preRun"] = [];
                         Module["preRun"].push(runWithFS)
                     }
-                };
+                }
                 loadPackage({
-                    "files": [{
-                        "filename": "/cpi.units",
-                        "start": 0,
-                        "end": 44458
+                    files: [{
+                        filename: "/cpi.units",
+                        start: 0,
+                        end: 44458
                     }, {
-                        "filename": "/currency.units",
-                        "start": 44458,
-                        "end": 59060
+                        filename: "/currency.units",
+                        start: 44458,
+                        end: 59060
                     }, {
-                        "filename": "/definitions.units",
-                        "start": 59060,
-                        "end": 419653
+                        filename: "/definitions.units",
+                        start: 59060,
+                        end: 419653
                     }, {
-                        "filename": "/elements.units",
-                        "start": 419653,
-                        "end": 571034
+                        filename: "/elements.units",
+                        start: 419653,
+                        end: 571034
                     }],
-                    "remote_package_size": 571034
+                    remote_package_size: 571034
                 })
             })();
-            globalThis.printBuffer = "";
-            Module["print"] = function(out) {
-                globalThis.printBuffer += out + "\n"
-            };
+            if (Module["$ww"] || typeof ENVIRONMENT_IS_PTHREAD != "undefined" && ENVIRONMENT_IS_PTHREAD) Module["preRun"] = [];
+            var necessaryPreJSTasks = Module["preRun"].slice();
+            if (!Module["preRun"]) throw "Module.preRun should exist because file support used it; did a pre-js delete it?";
+            necessaryPreJSTasks.forEach(task => {
+                if (Module["preRun"].indexOf(task) < 0) throw "All preRun tasks that exist before user pre-js code should remain after; did you replace Module or modify Module.preRun?"
+            });
             var moduleOverrides = Object.assign({}, Module);
             var arguments_ = [];
             var thisProgram = "./this.program";
             var quit_ = (status, toThrow) => {
                 throw toThrow
             };
-            var ENVIRONMENT_IS_WEB = typeof window == "object";
-            var ENVIRONMENT_IS_WORKER = typeof importScripts == "function";
-            var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string";
             var scriptDirectory = "";
 
             function locateFile(path) {
@@ -211,31 +229,31 @@
                 }
                 return scriptDirectory + path
             }
-            var read_, readAsync, readBinary;
+            var readAsync, readBinary;
             if (ENVIRONMENT_IS_NODE) {
+                if (typeof process == "undefined" || !process.release || process.release.name !== "node") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
+                var nodeVersion = process.versions.node;
+                var numericVersion = nodeVersion.split(".").slice(0, 3);
+                numericVersion = numericVersion[0] * 1e4 + numericVersion[1] * 100 + numericVersion[2].split("-")[0] * 1;
+                if (numericVersion < 16e4) {
+                    throw new Error("This emscripten-generated code requires node v16.0.0 (detected v" + nodeVersion + ")")
+                }
                 var fs = require("fs");
                 var nodePath = require("path");
-                if (ENVIRONMENT_IS_WORKER) {
-                    scriptDirectory = nodePath.dirname(scriptDirectory) + "/"
-                } else {
-                    scriptDirectory = __dirname + "/"
-                }
-                read_ = (filename, binary) => {
-                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
-                    return fs.readFileSync(filename, binary ? undefined : "utf8")
-                };
+                scriptDirectory = __dirname + "/";
                 readBinary = filename => {
-                    var ret = read_(filename, true);
-                    if (!ret.buffer) {
-                        ret = new Uint8Array(ret)
-                    }
+                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
+                    var ret = fs.readFileSync(filename);
+                    assert(ret.buffer);
                     return ret
                 };
-                readAsync = (filename, onload, onerror, binary = true) => {
+                readAsync = (filename, binary = true) => {
                     filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
-                    fs.readFile(filename, binary ? undefined : "utf8", (err, data) => {
-                        if (err) onerror(err);
-                        else onload(binary ? data.buffer : data)
+                    return new Promise((resolve, reject) => {
+                        fs.readFile(filename, binary ? undefined : "utf8", (err, data) => {
+                            if (err) reject(err);
+                            else resolve(binary ? data.buffer : data)
+                        })
                     })
                 };
                 if (!Module["thisProgram"] && process.argv.length > 1) {
@@ -246,26 +264,24 @@
                     process.exitCode = status;
                     throw toThrow
                 }
+            } else if (ENVIRONMENT_IS_SHELL) {
+                if (typeof process == "object" && typeof require === "function" || typeof window == "object" || typeof importScripts == "function") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")
             } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
                 if (ENVIRONMENT_IS_WORKER) {
                     scriptDirectory = self.location.href
                 } else if (typeof document != "undefined" && document.currentScript) {
                     scriptDirectory = document.currentScript.src
                 }
-                if (_scriptDir) {
-                    scriptDirectory = _scriptDir
+                if (_scriptName) {
+                    scriptDirectory = _scriptName
                 }
                 if (scriptDirectory.startsWith("blob:")) {
                     scriptDirectory = ""
                 } else {
                     scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1)
-                } {
-                    read_ = url => {
-                        var xhr = new XMLHttpRequest;
-                        xhr.open("GET", url, false);
-                        xhr.send(null);
-                        return xhr.responseText
-                    };
+                }
+                if (!(typeof window == "object" || typeof importScripts == "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
+                {
                     if (ENVIRONMENT_IS_WORKER) {
                         readBinary = url => {
                             var xhr = new XMLHttpRequest;
@@ -275,37 +291,86 @@
                             return new Uint8Array(xhr.response)
                         }
                     }
-                    readAsync = (url, onload, onerror) => {
-                        var xhr = new XMLHttpRequest;
-                        xhr.open("GET", url, true);
-                        xhr.responseType = "arraybuffer";
-                        xhr.onload = () => {
-                            if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
-                                onload(xhr.response);
-                                return
+                    readAsync = url => {
+                        if (isFileURI(url)) {
+                            return new Promise((resolve, reject) => {
+                                var xhr = new XMLHttpRequest;
+                                xhr.open("GET", url, true);
+                                xhr.responseType = "arraybuffer";
+                                xhr.onload = () => {
+                                    if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
+                                        resolve(xhr.response);
+                                        return
+                                    }
+                                    reject(xhr.status)
+                                };
+                                xhr.onerror = reject;
+                                xhr.send(null)
+                            })
+                        }
+                        return fetch(url, {
+                            credentials: "same-origin"
+                        }).then(response => {
+                            if (response.ok) {
+                                return response.arrayBuffer()
                             }
-                            onerror()
-                        };
-                        xhr.onerror = onerror;
-                        xhr.send(null)
+                            return Promise.reject(new Error(response.status + " : " + response.url))
+                        })
                     }
                 }
-            } else {}
+            } else {
+                throw new Error("environment detection error")
+            }
             var out = Module["print"] || console.log.bind(console);
             var err = Module["printErr"] || console.error.bind(console);
             Object.assign(Module, moduleOverrides);
             moduleOverrides = null;
+            checkIncomingModuleAPI();
             if (Module["arguments"]) arguments_ = Module["arguments"];
+            legacyModuleProp("arguments", "arguments_");
             if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
-            if (Module["quit"]) quit_ = Module["quit"];
-            var wasmBinary;
-            if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
+            legacyModuleProp("thisProgram", "thisProgram");
+            assert(typeof Module["memoryInitializerPrefixURL"] == "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");
+            assert(typeof Module["pthreadMainPrefixURL"] == "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");
+            assert(typeof Module["cdInitializerPrefixURL"] == "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");
+            assert(typeof Module["filePackagePrefixURL"] == "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead");
+            assert(typeof Module["read"] == "undefined", "Module.read option was removed");
+            assert(typeof Module["readAsync"] == "undefined", "Module.readAsync option was removed (modify readAsync in JS)");
+            assert(typeof Module["readBinary"] == "undefined", "Module.readBinary option was removed (modify readBinary in JS)");
+            assert(typeof Module["setWindowTitle"] == "undefined", "Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");
+            assert(typeof Module["TOTAL_MEMORY"] == "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");
+            legacyModuleProp("asm", "wasmExports");
+            legacyModuleProp("readAsync", "readAsync");
+            legacyModuleProp("readBinary", "readBinary");
+            legacyModuleProp("setWindowTitle", "setWindowTitle");
+            assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable.");
+            var wasmBinary = Module["wasmBinary"];
+            legacyModuleProp("wasmBinary", "wasmBinary");
             if (typeof WebAssembly != "object") {
-                abort("no native wasm support detected")
+                err("no native wasm support detected")
+            }
+
+            function intArrayFromBase64(s) {
+                if (typeof ENVIRONMENT_IS_NODE != "undefined" && ENVIRONMENT_IS_NODE) {
+                    var buf = Buffer.from(s, "base64");
+                    return new Uint8Array(buf.buffer, buf.byteOffset, buf.length)
+                }
+                var decoded = atob(s);
+                var bytes = new Uint8Array(decoded.length);
+                for (var i = 0; i < decoded.length; ++i) {
+                    bytes[i] = decoded.charCodeAt(i)
+                }
+                return bytes
             }
             var wasmMemory;
             var ABORT = false;
             var EXITSTATUS;
+
+            function assert(condition, text) {
+                if (!condition) {
+                    abort("Assertion failed" + (text ? ": " + text : ""))
+                }
+            }
             var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
 
             function updateMemoryViews() {
@@ -319,6 +384,37 @@
                 Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
                 Module["HEAPF64"] = HEAPF64 = new Float64Array(b)
             }
+            assert(!Module["STACK_SIZE"], "STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time");
+            assert(typeof Int32Array != "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, "JS engine does not provide full typed array support");
+            assert(!Module["wasmMemory"], "Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally");
+            assert(!Module["INITIAL_MEMORY"], "Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically");
+
+            function writeStackCookie() {
+                var max = _emscripten_stack_get_end();
+                assert((max & 3) == 0);
+                if (max == 0) {
+                    max += 4
+                }
+                HEAPU32[max >> 2] = 34821223;
+                HEAPU32[max + 4 >> 2] = 2310721022;
+                HEAPU32[0 >> 2] = 1668509029
+            }
+
+            function checkStackCookie() {
+                if (ABORT) return;
+                var max = _emscripten_stack_get_end();
+                if (max == 0) {
+                    max += 4
+                }
+                var cookie1 = HEAPU32[max >> 2];
+                var cookie2 = HEAPU32[max + 4 >> 2];
+                if (cookie1 != 34821223 || cookie2 != 2310721022) {
+                    abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)
+                }
+                if (HEAPU32[0 >> 2] != 1668509029) {
+                    abort("Runtime error: The application has corrupted its heap memory area (address zero)!")
+                }
+            }
             var __ATPRERUN__ = [];
             var __ATINIT__ = [];
             var __ATPOSTRUN__ = [];
@@ -335,14 +431,17 @@
             }
 
             function initRuntime() {
+                assert(!runtimeInitialized);
                 runtimeInitialized = true;
-                if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
+                checkStackCookie();
+                if (!Module["noFSInit"] && !FS.initialized) FS.init();
                 FS.ignorePermissions = false;
                 TTY.init();
                 callRuntimeCallbacks(__ATINIT__)
             }
 
             function postRun() {
+                checkStackCookie();
                 if (Module["postRun"]) {
                     if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
                     while (Module["postRun"].length) {
@@ -363,22 +462,63 @@
             function addOnPostRun(cb) {
                 __ATPOSTRUN__.unshift(cb)
             }
+            assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+            assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+            assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+            assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
             var runDependencies = 0;
             var runDependencyWatcher = null;
             var dependenciesFulfilled = null;
+            var runDependencyTracking = {};
 
             function getUniqueRunDependency(id) {
-                return id
+                var orig = id;
+                while (1) {
+                    if (!runDependencyTracking[id]) return id;
+                    id = orig + Math.random()
+                }
             }
 
             function addRunDependency(id) {
                 runDependencies++;
-                Module["monitorRunDependencies"]?.(runDependencies)
+                Module["monitorRunDependencies"]?.(runDependencies);
+                if (id) {
+                    assert(!runDependencyTracking[id]);
+                    runDependencyTracking[id] = 1;
+                    if (runDependencyWatcher === null && typeof setInterval != "undefined") {
+                        runDependencyWatcher = setInterval(() => {
+                            if (ABORT) {
+                                clearInterval(runDependencyWatcher);
+                                runDependencyWatcher = null;
+                                return
+                            }
+                            var shown = false;
+                            for (var dep in runDependencyTracking) {
+                                if (!shown) {
+                                    shown = true;
+                                    err("still waiting on run dependencies:")
+                                }
+                                err(`dependency: ${dep}`)
+                            }
+                            if (shown) {
+                                err("(end of list)")
+                            }
+                        }, 1e4)
+                    }
+                } else {
+                    err("warning: run dependency added without ID")
+                }
             }
 
             function removeRunDependency(id) {
                 runDependencies--;
                 Module["monitorRunDependencies"]?.(runDependencies);
+                if (id) {
+                    assert(runDependencyTracking[id]);
+                    delete runDependencyTracking[id]
+                } else {
+                    err("warning: run dependency removed without ID")
+                }
                 if (runDependencies == 0) {
                     if (runDependencyWatcher !== null) {
                         clearInterval(runDependencyWatcher);
@@ -398,7 +538,9 @@
                 err(what);
                 ABORT = true;
                 EXITSTATUS = 1;
-                what += ". Build with -sASSERTIONS for more info.";
+                if (what.indexOf("RuntimeError: unreachable") >= 0) {
+                    what += '. "unreachable" may be due to ASYNCIFY_STACK_SIZE not being large enough (try increasing it)'
+                }
                 var e = new WebAssembly.RuntimeError(what);
                 readyPromiseReject(e);
                 throw e
@@ -406,12 +548,26 @@
             var dataURIPrefix = "data:application/octet-stream;base64,";
             var isDataURI = filename => filename.startsWith(dataURIPrefix);
             var isFileURI = filename => filename.startsWith("file://");
-            var wasmBinaryFile;
-            wasmBinaryFile = "units.lib.wasm";
-            if (!isDataURI(wasmBinaryFile)) {
-                wasmBinaryFile = locateFile(wasmBinaryFile)
+
+            function createExportWrapper(name, nargs) {
+                return (...args) => {
+                    assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`);
+                    var f = wasmExports[name];
+                    assert(f, `exported native function \`${name}\` not found`);
+                    assert(args.length <= nargs, `native function \`${name}\` called with ${args.length} args but expects ${nargs}`);
+                    return f(...args)
+                }
             }
 
+            function findWasmBinary() {
+                var f = "units.lib.wasm";
+                if (!isDataURI(f)) {
+                    return locateFile(f)
+                }
+                return f
+            }
+            var wasmBinaryFile;
+
             function getBinarySync(file) {
                 if (file == wasmBinaryFile && wasmBinary) {
                     return new Uint8Array(wasmBinary)
@@ -423,21 +579,8 @@
             }
 
             function getBinaryPromise(binaryFile) {
-                if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
-                    if (typeof fetch == "function" && !isFileURI(binaryFile)) {
-                        return fetch(binaryFile, {
-                            credentials: "same-origin"
-                        }).then(response => {
-                            if (!response["ok"]) {
-                                throw `failed to load wasm binary file at '${binaryFile}'`
-                            }
-                            return response["arrayBuffer"]()
-                        }).catch(() => getBinarySync(binaryFile))
-                    } else if (readAsync) {
-                        return new Promise((resolve, reject) => {
-                            readAsync(binaryFile, response => resolve(new Uint8Array(response)), reject)
-                        })
-                    }
+                if (!wasmBinary) {
+                    return readAsync(binaryFile).then(response => new Uint8Array(response), () => getBinarySync(binaryFile))
                 }
                 return Promise.resolve().then(() => getBinarySync(binaryFile))
             }
@@ -445,6 +588,9 @@
             function instantiateArrayBuffer(binaryFile, imports, receiver) {
                 return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {
                     err(`failed to asynchronously prepare wasm: ${reason}`);
+                    if (isFileURI(wasmBinaryFile)) {
+                        err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)
+                    }
                     abort(reason)
                 })
             }
@@ -465,23 +611,33 @@
                 return instantiateArrayBuffer(binaryFile, imports, callback)
             }
 
+            function getWasmImports() {
+                Asyncify.instrumentWasmImports(wasmImports);
+                return {
+                    env: wasmImports,
+                    wasi_snapshot_preview1: wasmImports
+                }
+            }
+
             function createWasm() {
-                var info = {
-                    "a": wasmImports
-                };
+                var info = getWasmImports();
 
                 function receiveInstance(instance, module) {
                     wasmExports = instance.exports;
                     wasmExports = Asyncify.instrumentWasmExports(wasmExports);
-                    wasmMemory = wasmExports["o"];
+                    wasmMemory = wasmExports["memory"];
+                    assert(wasmMemory, "memory not found in wasm exports");
                     updateMemoryViews();
-                    addOnInit(wasmExports["p"]);
+                    addOnInit(wasmExports["__wasm_call_ctors"]);
                     removeRunDependency("wasm-instantiate");
                     return wasmExports
                 }
                 addRunDependency("wasm-instantiate");
+                var trueModule = Module;
 
                 function receiveInstantiationResult(result) {
+                    assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");
+                    trueModule = null;
                     receiveInstance(result["instance"])
                 }
                 if (Module["instantiateWasm"]) {
@@ -492,11 +648,91 @@
                         readyPromiseReject(e)
                     }
                 }
+                if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();
                 instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
                 return {}
             }
             var tempDouble;
             var tempI64;
+            (function() {
+                var h16 = new Int16Array(1);
+                var h8 = new Int8Array(h16.buffer);
+                h16[0] = 25459;
+                if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"
+            })();
+
+            function legacyModuleProp(prop, newName, incoming = true) {
+                if (!Object.getOwnPropertyDescriptor(Module, prop)) {
+                    Object.defineProperty(Module, prop, {
+                        configurable: true,
+                        get() {
+                            let extra = incoming ? " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" : "";
+                            abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra)
+                        }
+                    })
+                }
+            }
+
+            function ignoredModuleProp(prop) {
+                if (Object.getOwnPropertyDescriptor(Module, prop)) {
+                    abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)
+                }
+            }
+
+            function isExportedByForceFilesystem(name) {
+                return name === "FS_createPath" || name === "FS_createDataFile" || name === "FS_createPreloadedFile" || name === "FS_unlink" || name === "addRunDependency" || name === "FS_createLazyFile" || name === "FS_createDevice" || name === "removeRunDependency"
+            }
+
+            function missingGlobal(sym, msg) {
+                if (typeof globalThis != "undefined") {
+                    Object.defineProperty(globalThis, sym, {
+                        configurable: true,
+                        get() {
+                            warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`);
+                            return undefined
+                        }
+                    })
+                }
+            }
+            missingGlobal("buffer", "Please use HEAP8.buffer or wasmMemory.buffer");
+            missingGlobal("asm", "Please use wasmExports instead");
+
+            function missingLibrarySymbol(sym) {
+                if (typeof globalThis != "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) {
+                    Object.defineProperty(globalThis, sym, {
+                        configurable: true,
+                        get() {
+                            var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;
+                            var librarySymbol = sym;
+                            if (!librarySymbol.startsWith("_")) {
+                                librarySymbol = "$" + sym
+                            }
+                            msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;
+                            if (isExportedByForceFilesystem(sym)) {
+                                msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
+                            }
+                            warnOnce(msg);
+                            return undefined
+                        }
+                    })
+                }
+                unexportedRuntimeSymbol(sym)
+            }
+
+            function unexportedRuntimeSymbol(sym) {
+                if (!Object.getOwnPropertyDescriptor(Module, sym)) {
+                    Object.defineProperty(Module, sym, {
+                        configurable: true,
+                        get() {
+                            var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;
+                            if (isExportedByForceFilesystem(sym)) {
+                                msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
+                            }
+                            abort(msg)
+                        }
+                    })
+                }
+            }
 
             function ExitStatus(status) {
                 this.name = "ExitStatus";
@@ -509,6 +745,29 @@
                 }
             };
             var noExitRuntime = Module["noExitRuntime"] || true;
+            var ptrToString = ptr => {
+                assert(typeof ptr === "number");
+                ptr >>>= 0;
+                return "0x" + ptr.toString(16).padStart(8, "0")
+            };
+            var stackRestore = val => __emscripten_stack_restore(val);
+            var stackSave = () => _emscripten_stack_get_current();
+            var warnOnce = text => {
+                warnOnce.shown ||= {};
+                if (!warnOnce.shown[text]) {
+                    warnOnce.shown[text] = 1;
+                    if (ENVIRONMENT_IS_NODE) text = "warning: " + text;
+                    err(text)
+                }
+            };
+
+            function syscallGetVarargI() {
+                assert(SYSCALLS.varargs != undefined);
+                var ret = HEAP32[+SYSCALLS.varargs >> 2];
+                SYSCALLS.varargs += 4;
+                return ret
+            }
+            var syscallGetVarargP = syscallGetVarargI;
             var PATH = {
                 isAbs: path => path.charAt(0) === "/",
                 splitPath: filename => {
@@ -585,7 +844,7 @@
                         return view => (view.set(randomBytes(view.byteLength)), view)
                     } catch (e) {}
                 }
-                abort("initRandomDevice")
+                abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")
             };
             var randomFill = view => (randomFill = initRandomFill())(view);
             var PATH_FS = {
@@ -639,7 +898,7 @@
                     return outputParts.join("/")
                 }
             };
-            var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
+            var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
             var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
                 var endIdx = idx + maxBytesToRead;
                 var endPtr = idx;
@@ -663,6 +922,7 @@
                     if ((u0 & 240) == 224) {
                         u0 = (u0 & 15) << 12 | u1 << 6 | u2
                     } else {
+                        if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte " + ptrToString(u0) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!");
                         u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63
                     }
                     if (u0 < 65536) {
@@ -693,6 +953,7 @@
                 return len
             };
             var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
+                assert(typeof str === "string", `stringToUTF8Array expects a string (got ${typeof str})`);
                 if (!(maxBytesToWrite > 0)) return 0;
                 var startIdx = outIdx;
                 var endIdx = outIdx + maxBytesToWrite - 1;
@@ -716,6 +977,7 @@
                         heap[outIdx++] = 128 | u & 63
                     } else {
                         if (outIdx + 3 >= endIdx) break;
+                        if (u > 1114111) warnOnce("Invalid Unicode code point " + ptrToString(u) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");
                         heap[outIdx++] = 240 | u >> 18;
                         heap[outIdx++] = 128 | u >> 12 & 63;
                         heap[outIdx++] = 128 | u >> 6 & 63;
@@ -742,27 +1004,20 @@
                         var bytesRead = 0;
                         var fd = process.stdin.fd;
                         try {
-                            bytesRead = fs.readSync(fd, buf)
+                            bytesRead = fs.readSync(fd, buf, 0, BUFSIZE)
                         } catch (e) {
                             if (e.toString().includes("EOF")) bytesRead = 0;
                             else throw e
                         }
                         if (bytesRead > 0) {
                             result = buf.slice(0, bytesRead).toString("utf-8")
-                        } else {
-                            result = null
                         }
                     } else if (typeof window != "undefined" && typeof window.prompt == "function") {
                         result = window.prompt("Input: ");
                         if (result !== null) {
                             result += "\n"
                         }
-                    } else if (typeof readline == "function") {
-                        result = readline();
-                        if (result !== null) {
-                            result += "\n"
-                        }
-                    }
+                    } else {}
                     if (!result) {
                         return null
                     }
@@ -890,7 +1145,7 @@
                 }
             };
             var mmapAlloc = size => {
-                abort()
+                abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")
             };
             var MEMFS = {
                 ops_table: null,
@@ -1060,8 +1315,7 @@
                         old_node.parent.timestamp = Date.now();
                         old_node.name = new_name;
                         new_dir.contents[new_name] = old_node;
-                        new_dir.timestamp = old_node.parent.timestamp;
-                        old_node.parent = new_dir
+                        new_dir.timestamp = old_node.parent.timestamp
                     },
                     unlink(parent, name) {
                         delete parent.contents[name];
@@ -1099,6 +1353,7 @@
                         var contents = stream.node.contents;
                         if (position >= stream.node.usedBytes) return 0;
                         var size = Math.min(stream.node.usedBytes - position, length);
+                        assert(size >= 0);
                         if (size > 8 && contents.subarray) {
                             buffer.set(contents.subarray(position, position + size), offset)
                         } else {
@@ -1107,11 +1362,13 @@
                         return size
                     },
                     write(stream, buffer, offset, length, position, canOwn) {
+                        assert(!(buffer instanceof ArrayBuffer));
                         if (!length) return 0;
                         var node = stream.node;
                         node.timestamp = Date.now();
                         if (buffer.subarray && (!node.contents || node.contents.subarray)) {
                             if (canOwn) {
+                                assert(position === 0, "canOwn must imply no weird position inside the file");
                                 node.contents = buffer.subarray(offset, offset + length);
                                 node.usedBytes = length;
                                 return length
@@ -1160,23 +1417,25 @@
                         var ptr;
                         var allocated;
                         var contents = stream.node.contents;
-                        if (!(flags & 2) && contents.buffer === HEAP8.buffer) {
+                        if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {
                             allocated = false;
                             ptr = contents.byteOffset
                         } else {
-                            if (position > 0 || position + length < contents.length) {
-                                if (contents.subarray) {
-                                    contents = contents.subarray(position, position + length)
-                                } else {
-                                    contents = Array.prototype.slice.call(contents, position, position + length)
-                                }
-                            }
                             allocated = true;
                             ptr = mmapAlloc(length);
                             if (!ptr) {
                                 throw new FS.ErrnoError(48)
                             }
-                            HEAP8.set(contents, ptr)
+                            if (contents) {
+                                if (position > 0 || position + length < contents.length) {
+                                    if (contents.subarray) {
+                                        contents = contents.subarray(position, position + length)
+                                    } else {
+                                        contents = Array.prototype.slice.call(contents, position, position + length)
+                                    }
+                                }
+                                HEAP8.set(contents, ptr)
+                            }
                         }
                         return {
                             ptr: ptr,
@@ -1191,10 +1450,11 @@
             };
             var asyncLoad = (url, onload, onerror, noRunDep) => {
                 var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
-                readAsync(url, arrayBuffer => {
+                readAsync(url).then(arrayBuffer => {
+                    assert(arrayBuffer, `Loading data file "${url}" failed (no arrayBuffer).`);
                     onload(new Uint8Array(arrayBuffer));
                     if (dep) removeRunDependency(dep)
-                }, event => {
+                }, err => {
                     if (onerror) {
                         onerror()
                     } else {
@@ -1249,11 +1509,11 @@
             };
             var FS_modeStringToFlags = str => {
                 var flagModes = {
-                    "r": 0,
+                    r: 0,
                     "r+": 2,
-                    "w": 512 | 64 | 1,
+                    w: 512 | 64 | 1,
                     "w+": 512 | 64 | 2,
-                    "a": 1024 | 64 | 1,
+                    a: 1024 | 64 | 1,
                     "a+": 1024 | 64 | 2
                 };
                 var flags = flagModes[str];
@@ -1268,6 +1528,134 @@
                 if (canWrite) mode |= 146;
                 return mode
             };
+            var UTF8ToString = (ptr, maxBytesToRead) => {
+                assert(typeof ptr == "number", `UTF8ToString expects a number (got ${typeof ptr})`);
+                return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""
+            };
+            var strError = errno => UTF8ToString(_strerror(errno));
+            var ERRNO_CODES = {
+                EPERM: 63,
+                ENOENT: 44,
+                ESRCH: 71,
+                EINTR: 27,
+                EIO: 29,
+                ENXIO: 60,
+                E2BIG: 1,
+                ENOEXEC: 45,
+                EBADF: 8,
+                ECHILD: 12,
+                EAGAIN: 6,
+                EWOULDBLOCK: 6,
+                ENOMEM: 48,
+                EACCES: 2,
+                EFAULT: 21,
+                ENOTBLK: 105,
+                EBUSY: 10,
+                EEXIST: 20,
+                EXDEV: 75,
+                ENODEV: 43,
+                ENOTDIR: 54,
+                EISDIR: 31,
+                EINVAL: 28,
+                ENFILE: 41,
+                EMFILE: 33,
+                ENOTTY: 59,
+                ETXTBSY: 74,
+                EFBIG: 22,
+                ENOSPC: 51,
+                ESPIPE: 70,
+                EROFS: 69,
+                EMLINK: 34,
+                EPIPE: 64,
+                EDOM: 18,
+                ERANGE: 68,
+                ENOMSG: 49,
+                EIDRM: 24,
+                ECHRNG: 106,
+                EL2NSYNC: 156,
+                EL3HLT: 107,
+                EL3RST: 108,
+                ELNRNG: 109,
+                EUNATCH: 110,
+                ENOCSI: 111,
+                EL2HLT: 112,
+                EDEADLK: 16,
+                ENOLCK: 46,
+                EBADE: 113,
+                EBADR: 114,
+                EXFULL: 115,
+                ENOANO: 104,
+                EBADRQC: 103,
+                EBADSLT: 102,
+                EDEADLOCK: 16,
+                EBFONT: 101,
+                ENOSTR: 100,
+                ENODATA: 116,
+                ETIME: 117,
+                ENOSR: 118,
+                ENONET: 119,
+                ENOPKG: 120,
+                EREMOTE: 121,
+                ENOLINK: 47,
+                EADV: 122,
+                ESRMNT: 123,
+                ECOMM: 124,
+                EPROTO: 65,
+                EMULTIHOP: 36,
+                EDOTDOT: 125,
+                EBADMSG: 9,
+                ENOTUNIQ: 126,
+                EBADFD: 127,
+                EREMCHG: 128,
+                ELIBACC: 129,
+                ELIBBAD: 130,
+                ELIBSCN: 131,
+                ELIBMAX: 132,
+                ELIBEXEC: 133,
+                ENOSYS: 52,
+                ENOTEMPTY: 55,
+                ENAMETOOLONG: 37,
+                ELOOP: 32,
+                EOPNOTSUPP: 138,
+                EPFNOSUPPORT: 139,
+                ECONNRESET: 15,
+                ENOBUFS: 42,
+                EAFNOSUPPORT: 5,
+                EPROTOTYPE: 67,
+                ENOTSOCK: 57,
+                ENOPROTOOPT: 50,
+                ESHUTDOWN: 140,
+                ECONNREFUSED: 14,
+                EADDRINUSE: 3,
+                ECONNABORTED: 13,
+                ENETUNREACH: 40,
+                ENETDOWN: 38,
+                ETIMEDOUT: 73,
+                EHOSTDOWN: 142,
+                EHOSTUNREACH: 23,
+                EINPROGRESS: 26,
+                EALREADY: 7,
+                EDESTADDRREQ: 17,
+                EMSGSIZE: 35,
+                EPROTONOSUPPORT: 66,
+                ESOCKTNOSUPPORT: 137,
+                EADDRNOTAVAIL: 4,
+                ENETRESET: 39,
+                EISCONN: 30,
+                ENOTCONN: 53,
+                ETOOMANYREFS: 141,
+                EUSERS: 136,
+                EDQUOT: 19,
+                ESTALE: 72,
+                ENOTSUP: 138,
+                ENOMEDIUM: 148,
+                EILSEQ: 25,
+                EOVERFLOW: 61,
+                ECANCELED: 11,
+                ENOTRECOVERABLE: 56,
+                EOWNERDEAD: 62,
+                ESTRPIPE: 135
+            };
             var FS = {
                 root: null,
                 mounts: [],
@@ -1278,15 +1666,90 @@
                 currentPath: "/",
                 initialized: false,
                 ignorePermissions: true,
-                ErrnoError: class {
+                ErrnoError: class extends Error {
                     constructor(errno) {
+                        super(runtimeInitialized ? strError(errno) : "");
                         this.name = "ErrnoError";
-                        this.errno = errno
+                        this.errno = errno;
+                        for (var key in ERRNO_CODES) {
+                            if (ERRNO_CODES[key] === errno) {
+                                this.code = key;
+                                break
+                            }
+                        }
                     }
                 },
                 genericErrors: {},
                 filesystems: null,
                 syncFSRequests: 0,
+                FSStream: class {
+                    constructor() {
+                        this.shared = {}
+                    }
+                    get object() {
+                        return this.node
+                    }
+                    set object(val) {
+                        this.node = val
+                    }
+                    get isRead() {
+                        return (this.flags & 2097155) !== 1
+                    }
+                    get isWrite() {
+                        return (this.flags & 2097155) !== 0
+                    }
+                    get isAppend() {
+                        return this.flags & 1024
+                    }
+                    get flags() {
+                        return this.shared.flags
+                    }
+                    set flags(val) {
+                        this.shared.flags = val
+                    }
+                    get position() {
+                        return this.shared.position
+                    }
+                    set position(val) {
+                        this.shared.position = val
+                    }
+                },
+                FSNode: class {
+                    constructor(parent, name, mode, rdev) {
+                        if (!parent) {
+                            parent = this
+                        }
+                        this.parent = parent;
+                        this.mount = parent.mount;
+                        this.mounted = null;
+                        this.id = FS.nextInode++;
+                        this.name = name;
+                        this.mode = mode;
+                        this.node_ops = {};
+                        this.stream_ops = {};
+                        this.rdev = rdev;
+                        this.readMode = 292 | 73;
+                        this.writeMode = 146
+                    }
+                    get read() {
+                        return (this.mode & this.readMode) === this.readMode
+                    }
+                    set read(val) {
+                        val ? this.mode |= this.readMode : this.mode &= ~this.readMode
+                    }
+                    get write() {
+                        return (this.mode & this.writeMode) === this.writeMode
+                    }
+                    set write(val) {
+                        val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode
+                    }
+                    get isFolder() {
+                        return FS.isDir(this.mode)
+                    }
+                    get isDevice() {
+                        return FS.isChrdev(this.mode)
+                    }
+                },
                 lookupPath(path, opts = {}) {
                     path = PATH_FS.resolve(path);
                     if (!path) return {
@@ -1390,6 +1853,7 @@
                     return FS.lookup(parent, name)
                 },
                 createNode(parent, name, mode, rdev) {
+                    assert(typeof parent == "object");
                     var node = new FS.FSNode(parent, name, mode, rdev);
                     FS.hashAddNode(node);
                     return node
@@ -1514,53 +1978,7 @@
                 },
                 getStream: fd => FS.streams[fd],
                 createStream(stream, fd = -1) {
-                    if (!FS.FSStream) {
-                        FS.FSStream = function() {
-                            this.shared = {}
-                        };
-                        FS.FSStream.prototype = {};
-                        Object.defineProperties(FS.FSStream.prototype, {
-                            object: {
-                                get() {
-                                    return this.node
-                                },
-                                set(val) {
-                                    this.node = val
-                                }
-                            },
-                            isRead: {
-                                get() {
-                                    return (this.flags & 2097155) !== 1
-                                }
-                            },
-                            isWrite: {
-                                get() {
-                                    return (this.flags & 2097155) !== 0
-                                }
-                            },
-                            isAppend: {
-                                get() {
-                                    return this.flags & 1024
-                                }
-                            },
-                            flags: {
-                                get() {
-                                    return this.shared.flags
-                                },
-                                set(val) {
-                                    this.shared.flags = val
-                                }
-                            },
-                            position: {
-                                get() {
-                                    return this.shared.position
-                                },
-                                set(val) {
-                                    this.shared.position = val
-                                }
-                            }
-                        })
-                    }
+                    assert(fd >= -1);
                     stream = Object.assign(new FS.FSStream, stream);
                     if (fd == -1) {
                         fd = FS.nextfd()
@@ -1572,6 +1990,11 @@
                 closeStream(fd) {
                     FS.streams[fd] = null
                 },
+                dupStream(origStream, fd = -1) {
+                    var stream = FS.createStream(origStream, fd);
+                    stream.stream_ops?.dup?.(stream);
+                    return stream
+                },
                 chrdev_stream_ops: {
                     open(stream) {
                         var device = FS.getDevice(stream.node.rdev);
@@ -1614,6 +2037,7 @@
                     var completed = 0;
 
                     function doCallback(errCode) {
+                        assert(FS.syncFSRequests > 0);
                         FS.syncFSRequests--;
                         return callback(errCode)
                     }
@@ -1638,6 +2062,9 @@
                     })
                 },
                 mount(type, opts, mountpoint) {
+                    if (typeof type == "string") {
+                        throw type
+                    }
                     var root = mountpoint === "/";
                     var pseudo = !mountpoint;
                     var node;
@@ -1697,6 +2124,7 @@
                     });
                     node.mounted = null;
                     var idx = node.mount.mounts.indexOf(mount);
+                    assert(idx !== -1);
                     node.mount.mounts.splice(idx, 1)
                 },
                 lookup(parent, name) {
@@ -1831,7 +2259,8 @@
                     }
                     FS.hashRemoveNode(old_node);
                     try {
-                        old_dir.node_ops.rename(old_node, new_dir, new_name)
+                        old_dir.node_ops.rename(old_node, new_dir, new_name);
+                        old_node.parent = new_dir
                     } catch (e) {
                         throw e
                     } finally {
@@ -2019,8 +2448,8 @@
                         throw new FS.ErrnoError(44)
                     }
                     flags = typeof flags == "string" ? FS_modeStringToFlags(flags) : flags;
-                    mode = typeof mode == "undefined" ? 438 : mode;
                     if (flags & 64) {
+                        mode = typeof mode == "undefined" ? 438 : mode;
                         mode = mode & 4095 | 32768
                     } else {
                         mode = 0
@@ -2122,6 +2551,7 @@
                     return stream.position
                 },
                 read(stream, buffer, offset, length, position) {
+                    assert(offset >= 0);
                     if (length < 0 || position < 0) {
                         throw new FS.ErrnoError(28)
                     }
@@ -2148,6 +2578,7 @@
                     return bytesRead
                 },
                 write(stream, buffer, offset, length, position, canOwn) {
+                    assert(offset >= 0);
                     if (length < 0 || position < 0) {
                         throw new FS.ErrnoError(28)
                     }
@@ -2204,15 +2635,18 @@
                     if (!stream.stream_ops.mmap) {
                         throw new FS.ErrnoError(43)
                     }
+                    if (!length) {
+                        throw new FS.ErrnoError(28)
+                    }
                     return stream.stream_ops.mmap(stream, length, position, prot, flags)
                 },
                 msync(stream, buffer, offset, length, mmapFlags) {
+                    assert(offset >= 0);
                     if (!stream.stream_ops.msync) {
                         return 0
                     }
                     return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)
                 },
-                munmap: stream => 0,
                 ioctl(stream, cmd, arg) {
                     if (!stream.stream_ops.ioctl) {
                         throw new FS.ErrnoError(59)
@@ -2327,25 +2761,28 @@
                         }
                     }, {}, "/proc/self/fd")
                 },
-                createStandardStreams() {
-                    if (Module["stdin"]) {
-                        FS.createDevice("/dev", "stdin", Module["stdin"])
+                createStandardStreams(input, output, error) {
+                    if (input) {
+                        FS.createDevice("/dev", "stdin", input)
                     } else {
                         FS.symlink("/dev/tty", "/dev/stdin")
                     }
-                    if (Module["stdout"]) {
-                        FS.createDevice("/dev", "stdout", null, Module["stdout"])
+                    if (output) {
+                        FS.createDevice("/dev", "stdout", null, output)
                     } else {
                         FS.symlink("/dev/tty", "/dev/stdout")
                     }
-                    if (Module["stderr"]) {
-                        FS.createDevice("/dev", "stderr", null, Module["stderr"])
+                    if (error) {
+                        FS.createDevice("/dev", "stderr", null, error)
                     } else {
                         FS.symlink("/dev/tty1", "/dev/stderr")
                     }
                     var stdin = FS.open("/dev/stdin", 0);
                     var stdout = FS.open("/dev/stdout", 1);
-                    var stderr = FS.open("/dev/stderr", 1)
+                    var stderr = FS.open("/dev/stderr", 1);
+                    assert(stdin.fd === 0, `invalid handle for stdin (${stdin.fd})`);
+                    assert(stdout.fd === 1, `invalid handle for stdout (${stdout.fd})`);
+                    assert(stderr.fd === 2, `invalid handle for stderr (${stderr.fd})`)
                 },
                 staticInit() {
                     [44].forEach(code => {
@@ -2358,18 +2795,20 @@
                     FS.createDefaultDevices();
                     FS.createSpecialDirectories();
                     FS.filesystems = {
-                        "MEMFS": MEMFS
+                        MEMFS: MEMFS
                     }
                 },
                 init(input, output, error) {
-                    FS.init.initialized = true;
-                    Module["stdin"] = input || Module["stdin"];
-                    Module["stdout"] = output || Module["stdout"];
-                    Module["stderr"] = error || Module["stderr"];
-                    FS.createStandardStreams()
+                    assert(!FS.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
+                    FS.initialized = true;
+                    input ??= Module["stdin"];
+                    output ??= Module["stdout"];
+                    error ??= Module["stderr"];
+                    FS.createStandardStreams(input, output, error)
                 },
                 quit() {
-                    FS.init.initialized = false;
+                    FS.initialized = false;
+                    _fflush(0);
                     for (var i = 0; i < FS.streams.length; i++) {
                         var stream = FS.streams[i];
                         if (!stream) {
@@ -2519,103 +2958,97 @@
                     if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
                     if (typeof XMLHttpRequest != "undefined") {
                         throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")
-                    } else if (read_) {
+                    } else {
                         try {
-                            obj.contents = intArrayFromString(read_(obj.url), true);
+                            obj.contents = readBinary(obj.url);
                             obj.usedBytes = obj.contents.length
                         } catch (e) {
                             throw new FS.ErrnoError(29)
                         }
-                    } else {
-                        throw new Error("Cannot load without read() or XMLHttpRequest.")
                     }
                 },
                 createLazyFile(parent, name, url, canRead, canWrite) {
-                    function LazyUint8Array() {
-                        this.lengthKnown = false;
-                        this.chunks = []
-                    }
-                    LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
-                        if (idx > this.length - 1 || idx < 0) {
-                            return undefined
+                    class LazyUint8Array {
+                        constructor() {
+                            this.lengthKnown = false;
+                            this.chunks = []
                         }
-                        var chunkOffset = idx % this.chunkSize;
-                        var chunkNum = idx / this.chunkSize | 0;
-                        return this.getter(chunkNum)[chunkOffset]
-                    };
-                    LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
-                        this.getter = getter
-                    };
-                    LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
-                        var xhr = new XMLHttpRequest;
-                        xhr.open("HEAD", url, false);
-                        xhr.send(null);
-                        if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
-                        var datalength = Number(xhr.getResponseHeader("Content-length"));
-                        var header;
-                        var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
-                        var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
-                        var chunkSize = 1024 * 1024;
-                        if (!hasByteServing) chunkSize = datalength;
-                        var doXHR = (from, to) => {
-                            if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
-                            if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
-                            var xhr = new XMLHttpRequest;
-                            xhr.open("GET", url, false);
-                            if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
-                            xhr.responseType = "arraybuffer";
-                            if (xhr.overrideMimeType) {
-                                xhr.overrideMimeType("text/plain; charset=x-user-defined")
+                        get(idx) {
+                            if (idx > this.length - 1 || idx < 0) {
+                                return undefined
                             }
+                            var chunkOffset = idx % this.chunkSize;
+                            var chunkNum = idx / this.chunkSize | 0;
+                            return this.getter(chunkNum)[chunkOffset]
+                        }
+                        setDataGetter(getter) {
+                            this.getter = getter
+                        }
+                        cacheLength() {
+                            var xhr = new XMLHttpRequest;
+                            xhr.open("HEAD", url, false);
                             xhr.send(null);
                             if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
-                            if (xhr.response !== undefined) {
-                                return new Uint8Array(xhr.response || [])
+                            var datalength = Number(xhr.getResponseHeader("Content-length"));
+                            var header;
+                            var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+                            var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+                            var chunkSize = 1024 * 1024;
+                            if (!hasByteServing) chunkSize = datalength;
+                            var doXHR = (from, to) => {
+                                if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+                                if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
+                                var xhr = new XMLHttpRequest;
+                                xhr.open("GET", url, false);
+                                if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+                                xhr.responseType = "arraybuffer";
+                                if (xhr.overrideMimeType) {
+                                    xhr.overrideMimeType("text/plain; charset=x-user-defined")
+                                }
+                                xhr.send(null);
+                                if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+                                if (xhr.response !== undefined) {
+                                    return new Uint8Array(xhr.response || [])
+                                }
+                                return intArrayFromString(xhr.responseText || "", true)
+                            };
+                            var lazyArray = this;
+                            lazyArray.setDataGetter(chunkNum => {
+                                var start = chunkNum * chunkSize;
+                                var end = (chunkNum + 1) * chunkSize - 1;
+                                end = Math.min(end, datalength - 1);
+                                if (typeof lazyArray.chunks[chunkNum] == "undefined") {
+                                    lazyArray.chunks[chunkNum] = doXHR(start, end)
+                                }
+                                if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!");
+                                return lazyArray.chunks[chunkNum]
+                            });
+                            if (usesGzip || !datalength) {
+                                chunkSize = datalength = 1;
+                                datalength = this.getter(0).length;
+                                chunkSize = datalength;
+                                out("LazyFiles on gzip forces download of the whole file when length is accessed")
                             }
-                            return intArrayFromString(xhr.responseText || "", true)
-                        };
-                        var lazyArray = this;
-                        lazyArray.setDataGetter(chunkNum => {
-                            var start = chunkNum * chunkSize;
-                            var end = (chunkNum + 1) * chunkSize - 1;
-                            end = Math.min(end, datalength - 1);
-                            if (typeof lazyArray.chunks[chunkNum] == "undefined") {
-                                lazyArray.chunks[chunkNum] = doXHR(start, end)
-                            }
-                            if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!");
-                            return lazyArray.chunks[chunkNum]
-                        });
-                        if (usesGzip || !datalength) {
-                            chunkSize = datalength = 1;
-                            datalength = this.getter(0).length;
-                            chunkSize = datalength;
-                            out("LazyFiles on gzip forces download of the whole file when length is accessed")
+                            this._length = datalength;
+                            this._chunkSize = chunkSize;
+                            this.lengthKnown = true
                         }
-                        this._length = datalength;
-                        this._chunkSize = chunkSize;
-                        this.lengthKnown = true
-                    };
+                        get length() {
+                            if (!this.lengthKnown) {
+                                this.cacheLength()
+                            }
+                            return this._length
+                        }
+                        get chunkSize() {
+                            if (!this.lengthKnown) {
+                                this.cacheLength()
+                            }
+                            return this._chunkSize
+                        }
+                    }
                     if (typeof XMLHttpRequest != "undefined") {
                         if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
                         var lazyArray = new LazyUint8Array;
-                        Object.defineProperties(lazyArray, {
-                            length: {
-                                get: function() {
-                                    if (!this.lengthKnown) {
-                                        this.cacheLength()
-                                    }
-                                    return this._length
-                                }
-                            },
-                            chunkSize: {
-                                get: function() {
-                                    if (!this.lengthKnown) {
-                                        this.cacheLength()
-                                    }
-                                    return this._chunkSize
-                                }
-                            }
-                        });
                         var properties = {
                             isDevice: false,
                             contents: lazyArray
@@ -2654,6 +3087,7 @@
                         var contents = stream.node.contents;
                         if (position >= contents.length) return 0;
                         var size = Math.min(contents.length - position, length);
+                        assert(size >= 0);
                         if (contents.slice) {
                             for (var i = 0; i < size; i++) {
                                 buffer[offset + i] = contents[position + i]
@@ -2683,9 +3117,26 @@
                     };
                     node.stream_ops = stream_ops;
                     return node
+                },
+                absolutePath() {
+                    abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")
+                },
+                createFolder() {
+                    abort("FS.createFolder has been removed; use FS.mkdir instead")
+                },
+                createLink() {
+                    abort("FS.createLink has been removed; use FS.symlink instead")
+                },
+                joinPath() {
+                    abort("FS.joinPath has been removed; use PATH.join instead")
+                },
+                mmapAlloc() {
+                    abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")
+                },
+                standardizePath() {
+                    abort("FS.standardizePath has been removed; use PATH.normalize instead")
                 }
             };
-            var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
             var SYSCALLS = {
                 DEFAULT_POLLMASK: 5,
                 calculateAt(dirfd, path, allowEmpty) {
@@ -2740,22 +3191,14 @@
                     var buffer = HEAPU8.slice(addr, addr + len);
                     FS.msync(stream, buffer, offset, len, flags)
                 },
-                varargs: undefined,
-                get() {
-                    var ret = HEAP32[+SYSCALLS.varargs >> 2];
-                    SYSCALLS.varargs += 4;
-                    return ret
-                },
-                getp() {
-                    return SYSCALLS.get()
-                },
-                getStr(ptr) {
-                    var ret = UTF8ToString(ptr);
-                    return ret
-                },
                 getStreamFromFD(fd) {
                     var stream = FS.getStreamChecked(fd);
                     return stream
+                },
+                varargs: undefined,
+                getStr(ptr) {
+                    var ret = UTF8ToString(ptr);
+                    return ret
                 }
             };
 
@@ -2765,7 +3208,7 @@
                     var stream = SYSCALLS.getStreamFromFD(fd);
                     switch (cmd) {
                         case 0: {
-                            var arg = SYSCALLS.get();
+                            var arg = syscallGetVarargI();
                             if (arg < 0) {
                                 return -28
                             }
@@ -2773,7 +3216,7 @@
                                 arg++
                             }
                             var newStream;
-                            newStream = FS.createStream(stream, arg);
+                            newStream = FS.dupStream(stream, arg);
                             return newStream.fd
                         }
                         case 1:
@@ -2782,12 +3225,12 @@
                         case 3:
                             return stream.flags;
                         case 4: {
-                            var arg = SYSCALLS.get();
+                            var arg = syscallGetVarargI();
                             stream.flags |= arg;
                             return 0
                         }
                         case 12: {
-                            var arg = SYSCALLS.getp();
+                            var arg = syscallGetVarargP();
                             var offset = 0;
                             HEAP16[arg + offset >> 1] = 2;
                             return 0
@@ -2803,6 +3246,16 @@
                 }
             }
 
+            function ___syscall_fstat64(fd, buf) {
+                try {
+                    var stream = SYSCALLS.getStreamFromFD(fd);
+                    return SYSCALLS.doStat(FS.stat, stream.path, buf)
+                } catch (e) {
+                    if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+                    return -e.errno
+                }
+            }
+
             function ___syscall_ioctl(fd, op, varargs) {
                 SYSCALLS.varargs = varargs;
                 try {
@@ -2816,7 +3269,7 @@
                             if (!stream.tty) return -59;
                             if (stream.tty.ops.ioctl_tcgets) {
                                 var termios = stream.tty.ops.ioctl_tcgets(stream);
-                                var argp = SYSCALLS.getp();
+                                var argp = syscallGetVarargP();
                                 HEAP32[argp >> 2] = termios.c_iflag || 0;
                                 HEAP32[argp + 4 >> 2] = termios.c_oflag || 0;
                                 HEAP32[argp + 8 >> 2] = termios.c_cflag || 0;
@@ -2839,7 +3292,7 @@
                         case 21508: {
                             if (!stream.tty) return -59;
                             if (stream.tty.ops.ioctl_tcsets) {
-                                var argp = SYSCALLS.getp();
+                                var argp = syscallGetVarargP();
                                 var c_iflag = HEAP32[argp >> 2];
                                 var c_oflag = HEAP32[argp + 4 >> 2];
                                 var c_cflag = HEAP32[argp + 8 >> 2];
@@ -2860,7 +3313,7 @@
                         }
                         case 21519: {
                             if (!stream.tty) return -59;
-                            var argp = SYSCALLS.getp();
+                            var argp = syscallGetVarargP();
                             HEAP32[argp >> 2] = 0;
                             return 0
                         }
@@ -2869,14 +3322,14 @@
                             return -28
                         }
                         case 21531: {
-                            var argp = SYSCALLS.getp();
+                            var argp = syscallGetVarargP();
                             return FS.ioctl(stream, op, argp)
                         }
                         case 21523: {
                             if (!stream.tty) return -59;
                             if (stream.tty.ops.ioctl_tiocgwinsz) {
                                 var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);
-                                var argp = SYSCALLS.getp();
+                                var argp = syscallGetVarargP();
                                 HEAP16[argp >> 1] = winsize[0];
                                 HEAP16[argp + 2 >> 1] = winsize[1]
                             }
@@ -2899,12 +3352,37 @@
                 }
             }
 
+            function ___syscall_lstat64(path, buf) {
+                try {
+                    path = SYSCALLS.getStr(path);
+                    return SYSCALLS.doStat(FS.lstat, path, buf)
+                } catch (e) {
+                    if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+                    return -e.errno
+                }
+            }
+
+            function ___syscall_newfstatat(dirfd, path, buf, flags) {
+                try {
+                    path = SYSCALLS.getStr(path);
+                    var nofollow = flags & 256;
+                    var allowEmpty = flags & 4096;
+                    flags = flags & ~6400;
+                    assert(!flags, `unknown flags in __syscall_newfstatat: ${flags}`);
+                    path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);
+                    return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf)
+                } catch (e) {
+                    if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+                    return -e.errno
+                }
+            }
+
             function ___syscall_openat(dirfd, path, flags, varargs) {
                 SYSCALLS.varargs = varargs;
                 try {
                     path = SYSCALLS.getStr(path);
                     path = SYSCALLS.calculateAt(dirfd, path);
-                    var mode = varargs ? SYSCALLS.get() : 0;
+                    var mode = varargs ? syscallGetVarargI() : 0;
                     return FS.open(path, flags, mode).fd
                 } catch (e) {
                     if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
@@ -2921,9 +3399,90 @@
                     return -e.errno
                 }
             }
-            var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
+            var __abort_js = () => {
+                abort("native code called abort()")
+            };
+            var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
+            var __emscripten_runtime_keepalive_clear = () => {
+                noExitRuntime = false;
+                runtimeKeepaliveCounter = 0
+            };
+            var timers = {};
+            var handleException = e => {
+                if (e instanceof ExitStatus || e == "unwind") {
+                    return EXITSTATUS
+                }
+                checkStackCookie();
+                if (e instanceof WebAssembly.RuntimeError) {
+                    if (_emscripten_stack_get_current() <= 0) {
+                        err("Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)")
+                    }
+                }
+                quit_(1, e)
+            };
+            var runtimeKeepaliveCounter = 0;
+            var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
+            var _proc_exit = code => {
+                EXITSTATUS = code;
+                if (!keepRuntimeAlive()) {
+                    Module["onExit"]?.(code);
+                    ABORT = true
+                }
+                quit_(code, new ExitStatus(code))
+            };
+            var exitJS = (status, implicit) => {
+                EXITSTATUS = status;
+                checkUnflushedContent();
+                if (keepRuntimeAlive() && !implicit) {
+                    var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;
+                    readyPromiseReject(msg);
+                    err(msg)
+                }
+                _proc_exit(status)
+            };
+            var _exit = exitJS;
+            var maybeExit = () => {
+                if (!keepRuntimeAlive()) {
+                    try {
+                        _exit(EXITSTATUS)
+                    } catch (e) {
+                        handleException(e)
+                    }
+                }
+            };
+            var callUserCallback = func => {
+                if (ABORT) {
+                    err("user callback triggered after runtime exited or application aborted.  Ignoring.");
+                    return
+                }
+                try {
+                    func();
+                    maybeExit()
+                } catch (e) {
+                    handleException(e)
+                }
+            };
+            var _emscripten_get_now;
+            _emscripten_get_now = () => performance.now();
+            var __setitimer_js = (which, timeout_ms) => {
+                if (timers[which]) {
+                    clearTimeout(timers[which].id);
+                    delete timers[which]
+                }
+                if (!timeout_ms) return 0;
+                var id = setTimeout(() => {
+                    assert(which in timers);
+                    delete timers[which];
+                    callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()))
+                }, timeout_ms);
+                timers[which] = {
+                    id: id,
+                    timeout_ms: timeout_ms
+                };
+                return 0
+            };
             var abortOnCannotGrowMemory = requestedSize => {
-                abort("OOM")
+                abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`)
             };
             var _emscripten_resize_heap = requestedSize => {
                 var oldSize = HEAPU8.length;
@@ -2936,13 +3495,13 @@
                 if (!getEnvStrings.strings) {
                     var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8";
                     var env = {
-                        "USER": "web_user",
-                        "LOGNAME": "web_user",
-                        "PATH": "/",
-                        "PWD": "/",
-                        "HOME": "/home/web_user",
-                        "LANG": lang,
-                        "_": getExecutableName()
+                        USER: "web_user",
+                        LOGNAME: "web_user",
+                        PATH: "/",
+                        PWD: "/",
+                        HOME: "/home/web_user",
+                        LANG: lang,
+                        _: getExecutableName()
                     };
                     for (var x in ENV) {
                         if (ENV[x] === undefined) delete env[x];
@@ -2958,6 +3517,7 @@
             };
             var stringToAscii = (str, buffer) => {
                 for (var i = 0; i < str.length; ++i) {
+                    assert(str.charCodeAt(i) === (str.charCodeAt(i) & 255));
                     HEAP8[buffer++] = str.charCodeAt(i)
                 }
                 HEAP8[buffer] = 0
@@ -2980,21 +3540,6 @@
                 HEAPU32[penviron_buf_size >> 2] = bufSize;
                 return 0
             };
-            var runtimeKeepaliveCounter = 0;
-            var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
-            var _proc_exit = code => {
-                EXITSTATUS = code;
-                if (!keepRuntimeAlive()) {
-                    Module["onExit"]?.(code);
-                    ABORT = true
-                }
-                quit_(code, new ExitStatus(code))
-            };
-            var exitJS = (status, implicit) => {
-                EXITSTATUS = status;
-                _proc_exit(status)
-            };
-            var _exit = exitJS;
 
             function _fd_close(fd) {
                 try {
@@ -3006,26 +3551,6 @@
                     return e.errno
                 }
             }
-
-            function _fd_fdstat_get(fd, pbuf) {
-                try {
-                    var rightsBase = 0;
-                    var rightsInheriting = 0;
-                    var flags = 0;
-                    {
-                        var stream = SYSCALLS.getStreamFromFD(fd);
-                        var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4
-                    }
-                    HEAP8[pbuf] = type;
-                    HEAP16[pbuf + 2 >> 1] = flags;
-                    tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 8 >> 2] = tempI64[0], HEAP32[pbuf + 12 >> 2] = tempI64[1];
-                    tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 16 >> 2] = tempI64[0], HEAP32[pbuf + 20 >> 2] = tempI64[1];
-                    return 0
-                } catch (e) {
-                    if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
-                    return e.errno
-                }
-            }
             var doReadv = (stream, iov, iovcnt, offset) => {
                 var ret = 0;
                 for (var i = 0; i < iovcnt; i++) {
@@ -3036,7 +3561,7 @@
                     if (curr < 0) return -1;
                     ret += curr;
                     if (curr < len) break;
-                    if (typeof offset !== "undefined") {
+                    if (typeof offset != "undefined") {
                         offset += curr
                     }
                 }
@@ -3054,7 +3579,11 @@
                     return e.errno
                 }
             }
-            var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;
+            var convertI32PairToI53Checked = (lo, hi) => {
+                assert(lo == lo >>> 0 || lo == (lo | 0));
+                assert(hi === (hi | 0));
+                return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN
+            };
 
             function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
                 var offset = convertI32PairToI53Checked(offset_low, offset_high);
@@ -3079,7 +3608,10 @@
                     var curr = FS.write(stream, HEAP8, ptr, len, offset);
                     if (curr < 0) return -1;
                     ret += curr;
-                    if (typeof offset !== "undefined") {
+                    if (curr < len) {
+                        break
+                    }
+                    if (typeof offset != "undefined") {
                         offset += curr
                     }
                 }
@@ -3104,45 +3636,31 @@
                     abort(e)
                 }
             };
-            var handleException = e => {
-                if (e instanceof ExitStatus || e == "unwind") {
-                    return EXITSTATUS
-                }
-                quit_(1, e)
-            };
-            var maybeExit = () => {
-                if (!keepRuntimeAlive()) {
-                    try {
-                        _exit(EXITSTATUS)
-                    } catch (e) {
-                        handleException(e)
-                    }
-                }
-            };
-            var callUserCallback = func => {
-                if (ABORT) {
-                    return
-                }
-                try {
-                    func();
-                    maybeExit()
-                } catch (e) {
-                    handleException(e)
-                }
-            };
             var runtimeKeepalivePush = () => {
                 runtimeKeepaliveCounter += 1
             };
             var runtimeKeepalivePop = () => {
+                assert(runtimeKeepaliveCounter > 0);
                 runtimeKeepaliveCounter -= 1
             };
             var Asyncify = {
                 instrumentWasmImports(imports) {
                     var importPattern = /^(invoke_.*|__asyncjs__.*)$/;
                     for (let [x, original] of Object.entries(imports)) {
-                        let sig = original.sig;
                         if (typeof original == "function") {
-                            let isAsyncifyImport = original.isAsync || importPattern.test(x)
+                            let isAsyncifyImport = original.isAsync || importPattern.test(x);
+                            imports[x] = (...args) => {
+                                var originalAsyncifyState = Asyncify.state;
+                                try {
+                                    return original(...args)
+                                } finally {
+                                    var changedToDisabled = originalAsyncifyState === Asyncify.State.Normal && Asyncify.state === Asyncify.State.Disabled;
+                                    var ignoredInvoke = x.startsWith("invoke_") && true;
+                                    if (Asyncify.state !== originalAsyncifyState && !isAsyncifyImport && !changedToDisabled && !ignoredInvoke) {
+                                        throw new Error(`import ${x} was not in ASYNCIFY_IMPORTS, but changed the state`)
+                                    }
+                                }
+                            }
                         }
                     }
                 },
@@ -3157,6 +3675,7 @@
                                 } finally {
                                     if (!ABORT) {
                                         var y = Asyncify.exportCallStack.pop();
+                                        assert(y === x);
                                         Asyncify.maybeStopUnwind()
                                     }
                                 }
@@ -3202,6 +3721,8 @@
                     }
                 },
                 whenDone() {
+                    assert(Asyncify.currData, "Tried to wait for an async operation when none is in progress.");
+                    assert(!Asyncify.asyncPromiseHandlers, "Cannot have multiple async operations in flight at once");
                     return new Promise((resolve, reject) => {
                         Asyncify.asyncPromiseHandlers = {
                             resolve: resolve,
@@ -3224,28 +3745,35 @@
                     var rewindId = Asyncify.getCallStackId(bottomOfCallStack);
                     HEAP32[ptr + 8 >> 2] = rewindId
                 },
-                getDataRewindFunc(ptr) {
+                getDataRewindFuncName(ptr) {
                     var id = HEAP32[ptr + 8 >> 2];
                     var name = Asyncify.callStackIdToName[id];
+                    return name
+                },
+                getDataRewindFunc(name) {
                     var func = wasmExports[name];
                     return func
                 },
                 doRewind(ptr) {
-                    var start = Asyncify.getDataRewindFunc(ptr);
-                    return start()
+                    var name = Asyncify.getDataRewindFuncName(ptr);
+                    var func = Asyncify.getDataRewindFunc(name);
+                    return func()
                 },
                 handleSleep(startAsync) {
+                    assert(Asyncify.state !== Asyncify.State.Disabled, "Asyncify cannot be done during or after the runtime exits");
                     if (ABORT) return;
                     if (Asyncify.state === Asyncify.State.Normal) {
                         var reachedCallback = false;
                         var reachedAfterCallback = false;
                         startAsync((handleSleepReturnValue = 0) => {
+                            assert(!handleSleepReturnValue || typeof handleSleepReturnValue == "number" || typeof handleSleepReturnValue == "boolean");
                             if (ABORT) return;
                             Asyncify.handleSleepReturnValue = handleSleepReturnValue;
                             reachedCallback = true;
                             if (!reachedAfterCallback) {
                                 return
                             }
+                            assert(!Asyncify.exportCallStack.length, "Waking up (starting to rewind) must be done from JS, without compiled code on the stack.");
                             Asyncify.state = Asyncify.State.Rewinding;
                             runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));
                             if (typeof Browser != "undefined" && Browser.mainLoop.func) {
@@ -3299,12 +3827,18 @@
             };
             var getCFunc = ident => {
                 var func = Module["_" + ident];
+                assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");
                 return func
             };
             var writeArrayToMemory = (array, buffer) => {
+                assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)");
                 HEAP8.set(array, buffer)
             };
-            var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
+            var stringToUTF8 = (str, outPtr, maxBytesToWrite) => {
+                assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
+                return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
+            };
+            var stackAlloc = sz => __emscripten_stack_alloc(sz);
             var stringToUTF8OnStack = str => {
                 var size = lengthBytesUTF8(str) + 1;
                 var ret = stackAlloc(size);
@@ -3313,14 +3847,14 @@
             };
             var ccall = (ident, returnType, argTypes, args, opts) => {
                 var toC = {
-                    "string": str => {
+                    string: str => {
                         var ret = 0;
                         if (str !== null && str !== undefined && str !== 0) {
                             ret = stringToUTF8OnStack(str)
                         }
                         return ret
                     },
-                    "array": arr => {
+                    array: arr => {
                         var ret = stackAlloc(arr.length);
                         writeArrayToMemory(arr, ret);
                         return ret
@@ -3337,6 +3871,7 @@
                 var func = getCFunc(ident);
                 var cArgs = [];
                 var stack = 0;
+                assert(returnType !== "array", 'Return type should not be "array".');
                 if (args) {
                     for (var i = 0; i < args.length; i++) {
                         var converter = toC[argTypes[i]];
@@ -3359,71 +3894,26 @@
                 var asyncMode = opts?.async;
                 runtimeKeepalivePush();
                 if (Asyncify.currData != previousAsync) {
+                    assert(!(previousAsync && Asyncify.currData), "We cannot start an async operation when one is already flight");
+                    assert(!(previousAsync && !Asyncify.currData), "We cannot stop an async operation in flight");
+                    assert(asyncMode, "The call to " + ident + " is running asynchronously. If this was intended, add the async option to the ccall/cwrap call.");
                     return Asyncify.whenDone().then(onDone)
                 }
                 ret = onDone(ret);
                 if (asyncMode) return Promise.resolve(ret);
                 return ret
             };
-            var cwrap = (ident, returnType, argTypes, opts) => {
-                var numericArgs = !argTypes || argTypes.every(type => type === "number" || type === "boolean");
-                var numericRet = returnType !== "string";
-                if (numericRet && numericArgs && !opts) {
-                    return getCFunc(ident)
-                }
-                return (...args) => ccall(ident, returnType, argTypes, args, opts)
-            };
+            var cwrap = (ident, returnType, argTypes, opts) => (...args) => ccall(ident, returnType, argTypes, args, opts);
             var stringToNewUTF8 = str => {
                 var size = lengthBytesUTF8(str) + 1;
                 var ret = _malloc(size);
                 if (ret) stringToUTF8(str, ret, size);
                 return ret
             };
-            var FSNode = function(parent, name, mode, rdev) {
-                if (!parent) {
-                    parent = this
-                }
-                this.parent = parent;
-                this.mount = parent.mount;
-                this.mounted = null;
-                this.id = FS.nextInode++;
-                this.name = name;
-                this.mode = mode;
-                this.node_ops = {};
-                this.stream_ops = {};
-                this.rdev = rdev
-            };
-            var readMode = 292 | 73;
-            var writeMode = 146;
-            Object.defineProperties(FSNode.prototype, {
-                read: {
-                    get: function() {
-                        return (this.mode & readMode) === readMode
-                    },
-                    set: function(val) {
-                        val ? this.mode |= readMode : this.mode &= ~readMode
-                    }
-                },
-                write: {
-                    get: function() {
-                        return (this.mode & writeMode) === writeMode
-                    },
-                    set: function(val) {
-                        val ? this.mode |= writeMode : this.mode &= ~writeMode
-                    }
-                },
-                isFolder: {
-                    get: function() {
-                        return FS.isDir(this.mode)
-                    }
-                },
-                isDevice: {
-                    get: function() {
-                        return FS.isChrdev(this.mode)
-                    }
-                }
-            });
-            FS.FSNode = FSNode;
+            var FS_createPath = FS.createPath;
+            var FS_unlink = path => FS.unlink(path);
+            var FS_createLazyFile = FS.createLazyFile;
+            var FS_createDevice = FS.createDevice;
             FS.createPreloadedFile = FS_createPreloadedFile;
             FS.staticInit();
             Module["FS_createPath"] = FS.createPath;
@@ -3432,56 +3922,94 @@
             Module["FS_unlink"] = FS.unlink;
             Module["FS_createLazyFile"] = FS.createLazyFile;
             Module["FS_createDevice"] = FS.createDevice;
+
+            function checkIncomingModuleAPI() {
+                ignoredModuleProp("fetchSettings")
+            }
             var wasmImports = {
-                d: ___syscall_fcntl64,
-                h: ___syscall_ioctl,
-                i: ___syscall_openat,
-                l: ___syscall_stat64,
-                n: _emscripten_memcpy_js,
-                k: _emscripten_resize_heap,
-                e: _environ_get,
-                f: _environ_sizes_get,
-                a: _exit,
-                b: _fd_close,
-                m: _fd_fdstat_get,
-                g: _fd_read,
-                j: _fd_seek,
-                c: _fd_write
+                __syscall_fcntl64: ___syscall_fcntl64,
+                __syscall_fstat64: ___syscall_fstat64,
+                __syscall_ioctl: ___syscall_ioctl,
+                __syscall_lstat64: ___syscall_lstat64,
+                __syscall_newfstatat: ___syscall_newfstatat,
+                __syscall_openat: ___syscall_openat,
+                __syscall_stat64: ___syscall_stat64,
+                _abort_js: __abort_js,
+                _emscripten_memcpy_js: __emscripten_memcpy_js,
+                _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear,
+                _setitimer_js: __setitimer_js,
+                emscripten_resize_heap: _emscripten_resize_heap,
+                environ_get: _environ_get,
+                environ_sizes_get: _environ_sizes_get,
+                exit: _exit,
+                fd_close: _fd_close,
+                fd_read: _fd_read,
+                fd_seek: _fd_seek,
+                fd_write: _fd_write,
+                proc_exit: _proc_exit
             };
             var wasmExports = createWasm();
-            var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["p"])();
-            var _free = a0 => (_free = wasmExports["q"])(a0);
-            var _malloc = a0 => (_malloc = wasmExports["r"])(a0);
-            var _test_int = Module["_test_int"] = (a0, a1) => (_test_int = Module["_test_int"] = wasmExports["t"])(a0, a1);
-            var _do_a_conversion = Module["_do_a_conversion"] = (a0, a1) => (_do_a_conversion = Module["_do_a_conversion"] = wasmExports["u"])(a0, a1);
-            var stackSave = () => (stackSave = wasmExports["v"])();
-            var stackRestore = a0 => (stackRestore = wasmExports["w"])(a0);
-            var stackAlloc = a0 => (stackAlloc = wasmExports["x"])(a0);
-            var _asyncify_start_unwind = a0 => (_asyncify_start_unwind = wasmExports["y"])(a0);
-            var _asyncify_stop_unwind = () => (_asyncify_stop_unwind = wasmExports["z"])();
-            var _asyncify_start_rewind = a0 => (_asyncify_start_rewind = wasmExports["A"])(a0);
-            var _asyncify_stop_rewind = () => (_asyncify_stop_rewind = wasmExports["B"])();
+            var ___wasm_call_ctors = createExportWrapper("__wasm_call_ctors", 0);
+            var _free = createExportWrapper("free", 1);
+            var _malloc = createExportWrapper("malloc", 1);
+            var _strerror = createExportWrapper("strerror", 1);
+            var _test_int = Module["_test_int"] = createExportWrapper("test_int", 2);
+            var _do_a_conversion = Module["_do_a_conversion"] = createExportWrapper("do_a_conversion", 3);
+            var _fflush = createExportWrapper("fflush", 1);
+            var __emscripten_timeout = createExportWrapper("_emscripten_timeout", 2);
+            var __emscripten_tempret_set = createExportWrapper("_emscripten_tempret_set", 1);
+            var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports["emscripten_stack_init"])();
+            var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports["emscripten_stack_get_free"])();
+            var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports["emscripten_stack_get_base"])();
+            var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports["emscripten_stack_get_end"])();
+            var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports["_emscripten_stack_restore"])(a0);
+            var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports["_emscripten_stack_alloc"])(a0);
+            var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])();
+            var ___cxa_increment_exception_refcount = createExportWrapper("__cxa_increment_exception_refcount", 1);
+            var dynCall_ii = Module["dynCall_ii"] = createExportWrapper("dynCall_ii", 2);
+            var dynCall_iiii = Module["dynCall_iiii"] = createExportWrapper("dynCall_iiii", 4);
+            var dynCall_iii = Module["dynCall_iii"] = createExportWrapper("dynCall_iii", 3);
+            var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji", 5);
+            var dynCall_iidiiii = Module["dynCall_iidiiii"] = createExportWrapper("dynCall_iidiiii", 7);
+            var dynCall_vii = Module["dynCall_vii"] = createExportWrapper("dynCall_vii", 3);
+            var dynCall_v = Module["dynCall_v"] = createExportWrapper("dynCall_v", 1);
+            var dynCall_dd = Module["dynCall_dd"] = createExportWrapper("dynCall_dd", 2);
+            var dynCall_vi = Module["dynCall_vi"] = createExportWrapper("dynCall_vi", 2);
+            var _asyncify_start_unwind = createExportWrapper("asyncify_start_unwind", 1);
+            var _asyncify_stop_unwind = createExportWrapper("asyncify_stop_unwind", 0);
+            var _asyncify_start_rewind = createExportWrapper("asyncify_start_rewind", 1);
+            var _asyncify_stop_rewind = createExportWrapper("asyncify_stop_rewind", 0);
             Module["addRunDependency"] = addRunDependency;
             Module["removeRunDependency"] = removeRunDependency;
-            Module["FS_createPath"] = FS.createPath;
-            Module["FS_createLazyFile"] = FS.createLazyFile;
-            Module["FS_createDevice"] = FS.createDevice;
             Module["ccall"] = ccall;
             Module["cwrap"] = cwrap;
             Module["stringToNewUTF8"] = stringToNewUTF8;
-            Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
-            Module["FS_createDataFile"] = FS.createDataFile;
-            Module["FS_unlink"] = FS.unlink;
+            Module["FS_createPreloadedFile"] = FS_createPreloadedFile;
+            Module["FS_unlink"] = FS_unlink;
+            Module["FS_createPath"] = FS_createPath;
+            Module["FS_createDevice"] = FS_createDevice;
+            Module["FS_createDataFile"] = FS_createDataFile;
+            Module["FS_createLazyFile"] = FS_createLazyFile;
+            var missingLibrarySymbols = ["writeI53ToI64", "writeI53ToI64Clamped", "writeI53ToI64Signaling", "writeI53ToU64Clamped", "writeI53ToU64Signaling", "readI53FromI64", "readI53FromU64", "convertI32PairToI53", "convertU32PairToI53", "getTempRet0", "setTempRet0", "growMemory", "inetPton4", "inetNtop4", "inetPton6", "inetNtop6", "readSockaddr", "writeSockaddr", "emscriptenLog", "readEmAsmArgs", "jstoi_q", "listenOnce", "autoResumeAudioContext", "dynCallLegacy", "getDynCaller", "dynCall", "setWasmTableEntry", "getWasmTableEntry", "asmjsMangle", "HandleAllocator", "getNativeTypeSize", "STACK_SIZE", "STACK_ALIGN", "POINTER_SIZE", "ASSERTIONS", "uleb128Encode", "generateFuncType", "convertJsFunctionToWasm", "getEmptyTableSlot", "updateTableMap", "getFunctionAddress", "addFunction", "removeFunction", "reallyNegative", "unSign", "strLen", "reSign", "formatString", "intArrayToString", "AsciiToString", "UTF16ToString", "stringToUTF16", "lengthBytesUTF16", "UTF32ToString", "stringToUTF32", "lengthBytesUTF32", "registerKeyEventCallback", "maybeCStringToJsString", "findEventTarget", "getBoundingClientRect", "fillMouseEventData", "registerMouseEventCallback", "registerWheelEventCallback", "registerUiEventCallback", "registerFocusEventCallback", "fillDeviceOrientationEventData", "registerDeviceOrientationEventCallback", "fillDeviceMotionEventData", "registerDeviceMotionEventCallback", "screenOrientation", "fillOrientationChangeEventData", "registerOrientationChangeEventCallback", "fillFullscreenChangeEventData", "registerFullscreenChangeEventCallback", "JSEvents_requestFullscreen", "JSEvents_resizeCanvasForFullscreen", "registerRestoreOldStyle", "hideEverythingExceptGivenElement", "restoreHiddenElements", "setLetterbox", "softFullscreenResizeWebGLRenderTarget", "doRequestFullscreen", "fillPointerlockChangeEventData", "registerPointerlockChangeEventCallback", "registerPointerlockErrorEventCallback", "requestPointerLock", "fillVisibilityChangeEventData", "registerVisibilityChangeEventCallback", "registerTouchEventCallback", "fillGamepadEventData", "registerGamepadEventCallback", "registerBeforeUnloadEventCallback", "fillBatteryEventData", "battery", "registerBatteryEventCallback", "setCanvasElementSize", "getCanvasElementSize", "jsStackTrace", "getCallstack", "convertPCtoSourceLocation", "checkWasiClock", "wasiRightsToMuslOFlags", "wasiOFlagsToMuslOFlags", "createDyncallWrapper", "safeSetTimeout", "setImmediateWrapped", "clearImmediateWrapped", "polyfillSetImmediate", "getPromise", "makePromise", "idsToPromises", "makePromiseCallback", "ExceptionInfo", "findMatchingCatch", "Browser_asyncPrepareDataCounter", "setMainLoop", "isLeapYear", "ydayFromDate", "arraySum", "addDays", "getSocketFromFD", "getSocketAddress", "FS_mkdirTree", "_setNetworkCallback", "heapObjectForWebGLType", "toTypedArrayIndex", "webgl_enable_ANGLE_instanced_arrays", "webgl_enable_OES_vertex_array_object", "webgl_enable_WEBGL_draw_buffers", "webgl_enable_WEBGL_multi_draw", "emscriptenWebGLGet", "computeUnpackAlignedImageSize", "colorChannelsInGlTextureFormat", "emscriptenWebGLGetTexPixelData", "emscriptenWebGLGetUniform", "webglGetUniformLocation", "webglPrepareUniformLocationsBeforeFirstUse", "webglGetLeftBracePos", "emscriptenWebGLGetVertexAttrib", "__glGetActiveAttribOrUniform", "writeGLArray", "registerWebGlEventCallback", "ALLOC_NORMAL", "ALLOC_STACK", "allocate", "writeStringToMemory", "writeAsciiToMemory", "setErrNo", "demangle", "stackTrace"];
+            missingLibrarySymbols.forEach(missingLibrarySymbol);
+            var unexportedSymbols = ["run", "addOnPreRun", "addOnInit", "addOnPreMain", "addOnExit", "addOnPostRun", "out", "err", "callMain", "abort", "wasmMemory", "wasmExports", "writeStackCookie", "checkStackCookie", "convertI32PairToI53Checked", "stackSave", "stackRestore", "stackAlloc", "ptrToString", "zeroMemory", "exitJS", "getHeapMax", "abortOnCannotGrowMemory", "ENV", "ERRNO_CODES", "strError", "DNS", "Protocols", "Sockets", "initRandomFill", "randomFill", "timers", "warnOnce", "readEmAsmArgsArray", "jstoi_s", "getExecutableName", "handleException", "keepRuntimeAlive", "runtimeKeepalivePush", "runtimeKeepalivePop", "callUserCallback", "maybeExit", "asyncLoad", "alignMemory", "mmapAlloc", "wasmTable", "noExitRuntime", "getCFunc", "sigToWasmTypes", "freeTableIndexes", "functionsInTableMap", "setValue", "getValue", "PATH", "PATH_FS", "UTF8Decoder", "UTF8ArrayToString", "UTF8ToString", "stringToUTF8Array", "stringToUTF8", "lengthBytesUTF8", "intArrayFromString", "stringToAscii", "UTF16Decoder", "stringToUTF8OnStack", "writeArrayToMemory", "JSEvents", "specialHTMLTargets", "findCanvasEventTarget", "currentFullscreenStrategy", "restoreOldWindowedStyle", "UNWIND_CACHE", "ExitStatus", "getEnvStrings", "doReadv", "doWritev", "promiseMap", "uncaughtExceptionCount", "exceptionLast", "exceptionCaught", "Browser", "getPreloadedImageData__data", "wget", "MONTH_DAYS_REGULAR", "MONTH_DAYS_LEAP", "MONTH_DAYS_REGULAR_CUMULATIVE", "MONTH_DAYS_LEAP_CUMULATIVE", "SYSCALLS", "preloadPlugins", "FS_modeStringToFlags", "FS_getMode", "FS_stdin_getChar_buffer", "FS_stdin_getChar", "FS_readFile", "FS", "MEMFS", "TTY", "PIPEFS", "SOCKFS", "tempFixedLengthArray", "miniTempWebGLFloatBuffers", "miniTempWebGLIntBuffers", "GL", "AL", "GLUT", "EGL", "GLEW", "IDBStore", "runAndAbortIfError", "Asyncify", "Fibers", "SDL", "SDL_gfx", "allocateUTF8", "allocateUTF8OnStack", "print", "printErr"];
+            unexportedSymbols.forEach(unexportedRuntimeSymbol);
             var calledRun;
             dependenciesFulfilled = function runCaller() {
                 if (!calledRun) run();
                 if (!calledRun) dependenciesFulfilled = runCaller
             };
 
+            function stackCheckInit() {
+                _emscripten_stack_init();
+                writeStackCookie()
+            }
+
             function run() {
                 if (runDependencies > 0) {
                     return
                 }
+                stackCheckInit();
                 preRun();
                 if (runDependencies > 0) {
                     return
@@ -3494,7 +4022,8 @@
                     if (ABORT) return;
                     initRuntime();
                     readyPromiseResolve(Module);
-                    if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
+                    Module["onRuntimeInitialized"]?.();
+                    assert(!Module["_main"], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');
                     postRun()
                 }
                 if (Module["setStatus"]) {
@@ -3508,6 +4037,34 @@
                 } else {
                     doRun()
                 }
+                checkStackCookie()
+            }
+
+            function checkUnflushedContent() {
+                var oldOut = out;
+                var oldErr = err;
+                var has = false;
+                out = err = x => {
+                    has = true
+                };
+                try {
+                    _fflush(0);
+                    ["stdout", "stderr"].forEach(function(name) {
+                        var info = FS.analyzePath("/dev/" + name);
+                        if (!info) return;
+                        var stream = info.object;
+                        var rdev = stream.rdev;
+                        var tty = TTY.ttys[rdev];
+                        if (tty?.output?.length) {
+                            has = true
+                        }
+                    })
+                } catch (e) {}
+                out = oldOut;
+                err = oldErr;
+                if (has) {
+                    warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.")
+                }
             }
             if (Module["preInit"]) {
                 if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
@@ -3516,7 +4073,20 @@
                 }
             }
             run();
-            return moduleArg.ready
+            moduleRtn = readyPromise;
+            for (const prop of Object.keys(Module)) {
+                if (!(prop in moduleArg)) {
+                    Object.defineProperty(moduleArg, prop, {
+                        configurable: true,
+                        get() {
+                            abort(`Access to module property ('${prop}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)
+                        }
+                    })
+                }
+            }
+
+
+            return moduleRtn;
         }
     );
 })();
diff --git a/unitsfile.icns b/unitsfile.icns
new file mode 100644
index 0000000..e8d9a24
--- /dev/null
+++ b/unitsfile.icns
Binary files differ
diff --git a/webview-frontend.cpp b/webview-frontend.cpp
index ac2fc90..67c7b0a 100644
--- a/webview-frontend.cpp
+++ b/webview-frontend.cpp
@@ -1,8 +1,10 @@
 #include <iostream>
 #include <stdio.h>
+#include <string.h>
 #include "webview/webview.h"
 #include "nlohmann/json.hpp"
 #include "bundle-webview-js.h"
+#include "webview/menu.h"
 
 using json = nlohmann::json;
 
@@ -13,6 +15,7 @@
 extern char log_buffer[4096];
 extern char *log_buffer_ptr;
 
+webview::webview *wp;
 
 std::string convert(std::string arg) {
 	std::cout << "Params: " << arg << std::endl;
@@ -35,24 +38,72 @@
     return std::string("<div id=app></div><script>") + std::string((const char *)bundle_webview_js, bundle_webview_js_len) + std::string("</script>");
 }
 
-#ifdef WIN32
-int WINAPI WinMain(HINSTANCE hInt, HINSTANCE hPrevInst, LPSTR lpCmdLine,
-                   int nCmdShow) {
-#else
-int main() {
-#endif
+std::string copy(std::string j) {
+	std::cout << "copy called " << j << '\n';
+	return "undefined";
+}
+
+void callback(const char *ev) {
+	std::cout << "menu event " << ev << "\n";
+	std::string_view str = ev;
+
+    if (str == "copy") {
+		wp->eval("document.execCommand('copy');");
+	} else if (str == "cut") {
+		wp->eval("document.execCommand('cut');");
+	} else if (str == "paste") {
+		wp->eval("document.execCommand('paste');");
+	} else if (str == "close") {
+		exit(0);
+	} else if (str == "undo") {
+		wp->eval("document.execCommand('undo');");
+	} else if (str == "redo") {
+		wp->eval("document.execCommand('redo');");
+	} else if (str == "select_all") {
+		wp->eval("document.execCommand('selectAll');");
+	}
+}
+
+
+extern char g_argv_0[128];
+
+int main(int argc, char **argv) {
+    strlcpy(g_argv_0, argv[0], 128);
     // cookie_io_functions_t iofns = {NULL};
     // iofns.cookie_write_function_t = writer;
     //
     // stdout = fopencookie(NULL, "r", iofns);
     
     try {
-        webview::webview w(false, nullptr);
+        webview::webview w(true, nullptr);
+		wp = &w;
         w.set_title("Units");
-        w.set_size(480, 320, WEBVIEW_HINT_NONE);
+        w.set_size(480, 320, WEBVIEW_HINT_MIN);
         w.bind("convert", convert);
+		w.bind("copy", copy);
+		w.eval("window.webview = {};");
         w.set_html(get_html());
         // w.navigate("http://localhost:8000/index-webview.html");
+
+		webview_menu_item menu[] = {
+				{0, "File", "", ""},
+				{1, "Open", "C-o", "open"},
+				{1, "Save", "C-s", "save"},
+				{1, "New", "C-n", "new"},
+				{1, "-"},
+				{1, "Close Window", "C-w", "close"},
+				{0, "Edit", "", ""},
+                {1, "Undo", "C-z", "undo"},
+                {1, "Redo", "CS-z", "redo"},
+                {1, "-"},
+				{1, "Cut", "C-x", "cut"},
+				{1, "Copy", "C-c", "copy"},
+                {1, "Paste", "C-v", "paste"},
+                {1, "Select All", "C-a", "select_all"},
+		};
+
+		webview_set_menu(sizeof(menu) / sizeof(menu[0]), menu, callback);
+
         w.run();
     } catch (const webview::exception &e) {
         std::cerr << e.what() << std::endl;
