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.)