Yuko Development Notes

* Purpose 

To replace Cora Phyco with unit conversion system using primarily
integer arithmetic.

* Style 

Instead of Cora Phyco-style
conversion-constants-with-universal-converter, use more conventional
function-per-unit-pair style. Results not prnted but left on top of
stack for user to print or use in further calculation.

Reduce supported units to minimum necessary to reduce number of
functions to program.

Reduce all ratios to lowest terms to reduce chance of overflow.

* Conversion Ratios

The statement "The ratio of unit A to unit B is x:y" means that for a
given quantity, the magnitude of the quantity measured in unit A and
the magnitude of the same quantity measured in unit B are in the
ratio x:y. (NOT the ratio of the quantities of 1 unit of A and 1 unit
of B.)

** Linear measure

Units: mm, in, ft, m, km, mi

*** Defined ratios

| in:mm | 10:254 = 5:127 |

| m:mm | 1:1000 |
| km:m | 1:1000 |

| ft:in |   1:12 |
| mi:ft | 1:5280 |

*** Derived ratios

| km:mm | 1:1000000 |
| mi:in |   1:63360 |

| ft:mm |          5:1524 |
| mi:mm |       1:1609344 |
| m:in  |        127:5000 |
| km:in |     127:5000000 |
| m:ft  |        381:1250 |
| km:ft |     381:1250000 |
| mi:m  |    5000:8047863 |
| mi:km | 5000000:8047863 |




** Time

Units: s, min, hr, day, yr

| 60 s = 1 min      | 60/1       | min>s   | 60 *       |
|                   |            | s>min   | 60 /       |
| 3600 s = 1 hr     | 3600/1     | hr>s    | 3600 *     |
|                   |            | s>hr    | 3600 /     |
| 86400 s = 1 day   | 86400/1    | day>s   | 86400 *    |
|                   |            | s>day   | 86400 /    |
| 30780000 s = 1 yr | 30780000/1 | yr>s    | 30780000 * |
|                   |            | s>yr    | 30780000 / |
| 60 min = 1 hr     | 60/1       | hr>min  | 60 *       |
|                   |            | min>hr  | 60 /       |
| 1440 min = 1 day  | 1440/1     | day>min | 1440 *     |
|                   |            | min>day | 1440 /     |
| 24 hr = 1 day     | 24/1       | day>hr  | 24 *       |
|                   |            | hr>day  | 24 /       |
| 513000 min = 1 yr | 513000/1   | yr>min  | 513000 *   |
|                   |            | min>yr  | 513000 /   |
| 4 yr = 1425 day   |            |         |            |

|     |       s |      min |     hr |     day |       yr |
|-----+---------+----------+--------+---------+----------|
| s   |       - |     60:1 | 3600:1 | 86400:1 |        X |
| min |    1:60 |        - |   60:1 |  1440:1 | 525960:1 |
| hr  |  1:3600 |     1:60 |      - |    24:1 |   8766:1 |
| day | 1:86400 |   1:1440 |   1:24 |       - |   1461:4 |
| yr  |       X | 1:525960 | 1:8766 |  4:1461 |        - |

| s>min   | 60 /      |   | min>s   | 60 *      |
| s>hr    | 3600 /    |   | hr>s    | 3600 *    |
| s>day   | 86400 /   |   | day>s   | 86400 *   |
| min>hr  | 60 /      |   | hr>min  | 60 *      |
| min>day | 1440 /    |   | day>min | 1440 *    |
| min>yr  | 525960 /  |   | yr>min  | 525960 *  |
| hr>day  | 24 /      |   | day>hr  | 24 *      |
| hr>yr   | 8766 /    |   | yr>hr   | 8766 *    |
| day>yr  | 4 1461 */ |   | yr>day  | 1461 4 */ |

** Volume

ML milliliter  L liter
TSP teaspoon  TBSP tablespoon  CUP  FLOZ fluid ounce  
PT pint  QT quart  GAL gallon

| 1000 ml = 1 l         |           1000:1 |
| 3 tsp = 1 tbsp        |              3:1 |
| 2 tbsp = 1 fl oz      |              2:1 |
| 48 tsp = 1 cup        |             48:1 |
| 8 fl oz = 1 cup       |              8:1 |
| 2 cup = 1 pt          |              2:1 |
| 2 pt = 1 qt           |              2:1 |
| 4 qt = 1 gal          |              4:1 |
| 3785.41784 ml = 1 gal | 378541784:100000 |
|                       |   47317723:12500 |
| (4.93 ml = 1 tsp)     |                  |

|       |       ml |        tsp |       tbsp |      fl oz |       cup |        pt |        qt |          l |       gal |
| ml    |        - |   47317723 |   47317723 |   47317723 |  47317723 |  47317723 |  47317723 |     1000:1 |  47317723 |
|       |          |   :9600000 |   :3200000 |   :1600000 |   :200000 |   :100000 |    :50000 |            |    :12500 |
| tsp   | 9600000: |          - |        3:1 |        6:1 |      48:1 |      96:1 |     192:1 | 9600000000 |     768:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| tbsp  | 3200000: |        1:3 |          - |        2:1 |      16:1 |      32:1 |      64:1 | 3200000000 |     256:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| fl oz | 1600000: |        1:6 |        1:2 |          - |       8:1 |      16:1 |      32:1 | 1600000000 |     128:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| cup   |  200000: |       1:48 |       1:16 |        1:8 |         - |       2:1 |       4:1 |  200000000 |      16:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| pt    |  100000: |       1:96 |       1:32 |       1:16 |       1:2 |         - |       2:1 |  100000000 |       8:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| qt    |   50000: |      1:192 |       1:64 |       1:32 |       1:4 |       1:2 |         - |   50000000 |       4:1 |
|       | 47317723 |            |            |            |           |           |           |  :47317723 |           |
| l     |   1:1000 |  47317723: |  47317723: |  47317723: | 47317723: | 47317723: | 47317723: |          - | 47317723: |
|       |          | 9600000000 | 3200000000 | 1600000000 | 200000000 | 100000000 |  50000000 |            |  12500000 |
| gal   |   12500: |      1:768 |      1:256 |      1:128 |      1:16 |       1:8 |       1:4 |  12500000: |         - |
|       | 47317723 |            |            |            |           |           |           |   47317723 |           |





* Double-precision division

dn = nl + m*nh

dn / d = (nl + m*nh)/d
        = nl/d + m*nh/d

: dn/ ( d n1 -- n2 ) tuck / rot rot / swap d>s ;

(Thought I would need this for converting between seconds and years,
but not so.)