forth/yuko-notes.org

6.2 KiB
Executable File

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