## Sheep and Herd Animal Calculator and eTCL Slot Calculator Demo Example, numerical analysis edit

This page is under development. Comments are welcome, but please load any comments in the comments section at the bottom of the page. Please include your wiki MONIKER in your comment with the same courtesy that I will give you. Its very hard to reply intelligibly without some background of the correspondent. Thanks,goldPage contents

gold Here is some eTCL starter code for calculating sheep, cattle, and herd animals from Sumerian texts and excavations. The impetus for these calculations was checking prices in some cuneiform texts and modern replicas. Most of the testcases involve replicas or models, using assumptions and rules of thumb.### Ratios and increases

There are several tablet fragments that were problems or model documents dealing with sheep increase, which have to be compiled together to form a coherent math solution. The gist of the analysis was taking bare numbers from sheep counting and assumptions in base 60 to develop pseudocode or base 10 algorithms for an eTCL calculator. Notation here was convertible to eTCL pseudocode. A tur of adult sheep was 1*60+40 in base 60 or decimal 100, as defined here. The adult sheep and juvenile sheep (called lambs here) are counted separately according to custom. For the two sheep herds on tablet Yale YBC7326, the increase was 80 lambs in the first herd and 70 lambs in the second herd, ref. translations from Mathematical Cuneiform Texts. On the same YBC7326 tablet face with unreadable portions, there are higher numbers as 8*60+20 (decimal 500) and 10*60+50, decimal 650 (if the powers of base 60 are correct). In modern terms, the increase in the first herd was 80 lambs /100 sheep, 80/100, 0.8, converting 80 percent. The increase in the second herd was 70 lambs /100 sheep, 70/100, 0.7, converting 70 percent.Continuing with the math problems on sheep, there were different or higher numbers which were rescaled from the original herd numbers. In another math problem, tablet YBC8522 had numbers similar to the first herd with the calculation {(1*60+20)/(1*60+40)}*{16*60+40} for {13*60+20}. Converting to decimal, { 80 lambs/100 sheep} * 1000. = 800. <lambs?>. The 800. lambs could be interpreted as an upscaling the herd increase as either the proportional increase in a herd of 1000 sheep or the (somewhat) proportional increase over time of ten years. In some math problems of covering area with material like mud plaster, silver plate, and bitumen, the procedure was to state an initial proportion (ratio) for a small area and apply the same proportion for a larger area. While not overtly stated, the intent may have been to compare the increase of two herds of sheep and rescale or recombine rates for a larger herd.The model problem for two sheep herds includes rules of thumb and modern assumptions.Additional significant figures are used to check the eTCL calculator, not to infer the accuracy of ancient texts. The adult sheep and juvenile sheep are counted separately according to Sumerian custom. The first herd was 100 sheep which showed an increase of 80 lambs over the season. The Sumerians did not use percentages; the percentages are calculated for the modern user. For the first herd, the percentage of lambs was (80/100)*100, 80 percent. The second herd was 10 sheep which showed an increase of 4 lambs over the season. For the second herd, the percentage of lambs was (4/10)*100, 40 percent. For the combined first and second herds, the combined percentage of lambs was ((80+4)/(100+10))*100, 76.363 percent. Both herds of adult sheep were fattened for a period of 10 days at a rate of 2 barley liters per animal. For the first herd, the total of fattening barley feed was sheep*days*feed_rate, 100*10*2, 2000 liters of barley. The second total of barley was 10*10*2, 200 liters of barley. The silver value for the total lambs in both herds was (lambs1 and lambs2)*silver_price, (80+4)*(1/2), 42 silver pieces. The tax rate in kind was one animal in ten. For the adult sheep, the tax rates were 100*(1/10) and 10*(1/10) animals for the first and second herds, respectively.For the model problem of two sheep herds, an example formula could consider the first herd as the prior year and the second herd as the current year. In that case, the formula should be $total_herd = $sheep1 + $lambs1+$sheep2+$lambs2,100+80+10+4,194 animals. Meaning, the maximum of the herd in the second year (after spring lambs) is before animals are withdrawn to be sold, gifted to priests, or paid to herdsmen. Assuming 3 lambs withdrawn in the second year, the total $current_herd should be 100+80+10+4-3, 191 animals. In some later Neo-Babylonian texts, some animals in large herds were noted as not seen or inspected. Given 30 sheep in a far mountain pasture, a trial formula for sheep missing in inspection might be $inspected_herd = $current_herd - $uninspected. The inspected herd or available herd was 191 -30, 161 animals.For the eTCL calculator, taxes, probable feed rates, and prices for sheep were used from Sumeria, UrIII (2300BCE). From the trial calculations, the prices were transferred correctly to silver pieces (shekles or gin). However, the trade values or price ratios were undoubtedly different in different eras, countries, and texts. The eTCL user can certainly change the prices, feed rates, and taxes in kind on his own program copy, saved from the TCL_WIKI website.### Pseudocode and Equations

set increase1 {/ $lambs1 $sheep1 } set increase2 {/ $lambs2 $sheep2 } set percent {* {/ $lambs $sheep } 100.} set delta {abs {- $increase2 $increase1}} set scaleupx1 {* {/ $lambs1 $sheep1 } 1000.}} set scaleupx2 {* {/ $lambs2 $sheep2 } 1000.}} text substitute { and } to eTCL expressions fattening barley feed = sheep*days*feed_rate, set taxinkind1 {* $sheep1 {/ 1. 10. } } Sumerian price in silver = [/ liters 300.] Sumerian price in liters grain = [* silver 300.] # 1 silver piece = 1 gur = 300 liters of grain liters = [* volume_in_cubic_cm .001] price? = raw materials + labor + profit price? = raw materials + heat process price? = raw materials + labor average price per unit = revenue / units sold

### Testcases Section

In planning any software, it is advisable to gather a number of testcases to check the results of the program. The math for the testcases can be checked by pasting statements in the TCL console. Aside from the TCL calculator display, when one presses the report button on the calculator, one will have console show access to the capacity functions (subroutines).#### Testcase 1

table 1 | printed in | tcl wiki format |
---|---|---|

quantity | value | comment, if any |

testcase number: | 1 | |

100.0 : | sheep1 | 100.0 |

80.0 : | lambs1 | 80.0 |

100.0 : | sheep2 | 100.0 |

70.0 : | lambs2 | 70.0 |

15.0 : | days time period | 15.0 |

80.0 : | percent1 | 80.0 |

70.0 : | percent2 | 70.0 |

3000.0 : | liters fattening barley feed 1st flock | 3000.0 |

3000.0 : | liters fattening barley feed 2nd flock | 3000.0 |

10.0 : | tax1 in kind | 10.0 |

10.0 : | tax2 in kind | 10.0 |

75.0 : | total lambs in silver pieces | 75.0 |

800.0 : | scale up 1 | 800.0 |

700.0 : | scale up 2 | 700.0 |

10.0 : | delta1 in abs | 10.0 |

#### Testcase 2

table 2 | printed in | tcl wiki format |
---|---|---|

quantity | value | comment, if any |

testcase number: | 2 | |

100.0 : | sheep1 | 100.0 |

70.0 : | lambs1 | 70.0 |

100.0 : | sheep2 | 100.0 |

60.0 : | lambs2 | 60.0 |

30.0 : | days time period | 30.0 |

70.0 : | percent1 | 70.0 |

60.0 : | percent2 | 60.0 |

6000.0 : | liters fattening barley feed 1st flock | 6000.0 |

6000.0 : | liters fattening barley feed 2nd flock | 6000.0 |

10.0 : | tax1 in kind | 10.0 |

10.0 : | tax2 in kind | 10.0 |

65.0 : | total lambs in silver pieces | 65.0 |

700.0 : | scale up 1 | 700.0 |

600.0 : | scale up 2 | 600.0 |

10.0 : | delta1 in abs | 10.0 |

#### Testcase 3

table 3 | printed in | tcl wiki format |
---|---|---|

quantity | value | comment, if any |

testcase number: | 3 | |

100.0 : | sheep1 | 100.0 |

80.0 : | lambs1 | 80.0 |

100.0 : | sheep2 | 100.0 |

40.0 : | lambs2 | 40.0 |

60.0 : | days time period | 60.0 |

80.0 : | percent1 | 80.0 |

40.0 : | percent2 | 40.0 |

12000.0 : | liters fattening barley feed 1st flock | 12000.0 |

12000.0 : | liters fattening barley feed 2nd flock | 12000.0 |

10.0 : | tax1 in kind | 10.0 |

10.0 : | tax2 in kind | 10.0 |

60.0 : | total lambs in silver pieces | 60.0 |

800.0 : | scale up 1 | 800.0 |

400.0 : | scale up 2 | 400.0 |

40.0 : | delta1 in abs | 40.0 |

#### Testcase 4

table 4 | printed in | tcl wiki format |
---|---|---|

quantity | value | comment, if any |

testcase number: | 4 | stats on 2 sheep herds |

100.0 : | sheep1 | includes rams and ewes |

80.0 : | lambs1 | all immature |

10.0 : | sheep2 | includes rams and ewes |

4.0 : | lambs2 | all immature |

10.0 : | days time period | typical 1 month |

80.0 : | percent1 | 100.*lambs1/sheep1, not used by ancients |

40.0 : | percent2 | 100.*lambs2/sheep2,not used by ancients |

2000.0 : | liters fattening barley feed 1st flock | 1 sila vol = 1 liter |

200.0 : | liters fattening barley feed 2nd flock | 1 sila vol = 1 liter |

10.0 : | tax1 in kind | on 1st herd |

1.0 : | tax2 in kind | on 2nd herd |

42.0 : | total lambs in silver pieces | shekles or gin |

76.363 : | combined percentage for 2 herds | 100.*lambs/sheep percentage |

below are test formulas | for | >balanced accounts< |

assumes | 1st herd is prior year | 2nd herd is current year |

800.0 : | scale up 1 | test factor, 1st herd |

400.0 : | scale up 2 | test factor, 2nd herd |

76.0 : | delta lambs in abs | abs(lambs1-lambs2) |

3. : | animals withdrawn in current year | sold or given to priests |

30. : | animals not inspected | possible far pasture |

194.0 : | total herd maximum | includes 1st and 2nd years, after 2nd spring lambs |

191.0 : | total herd less withdrawn in 2nd year | withdrawn, sold, gifted |

161.0 : | total herd inspected 2nd year | less uninspected animals and withdrawn |

### References:

- Growth of a
- Herd of Cattle in Ten Years Ignace Gelb, JCS 21 (1967): 64-69
- On Dairy Productivity at Ur in the Late
- Ur III Period, JESHO 23 (1980): 1-42. Tohru Gomi
- Birmingham Cuneiform Texts - Translations
- Part 1: Neo-Sumerian,Phil Watson
- Late Uruk Pigs and other Herded Animals, Robert K. Englund,1995
- Late Uruk Period Cattle and Dairy Products, Robert K. Englund,1995
- Relating Dairy Productivity in the UrIII Period, Robert K. Englund,1995
- Robert Englund, UCLA [1]
- Ur III Tablets in the Valdosta State University, search on cdli
- Cuneiform Digital Library Journal, search on Equivalency Values
- Ur III Equivalency Values[2]
- Especially, the Ur III Equivalency Values and library texts for sheep (udu) keyword.
- The Sumerian keywords search on the cdli
- are very effective, but major size files to download

## Appendix Code edit

### appendix TCL programs and scripts

# pretty print from autoindent and ased editor # Sumerian Sheep and Herd animals calculator # written on Windows XP on eTCL # working under TCL version 8.5.6 and eTCL 1.0.1 # gold on TCL WIKI, 7oct2014 package require Tk namespace path {::tcl::mathop ::tcl::mathfunc} frame .frame -relief flat -bg aquamarine4 pack .frame -side top -fill y -anchor center set names {{} {sheep1:} } lappend names {lambs2:} lappend names {sheep2: } lappend names {lambs2:} lappend names {accounting period days (typical 60 days) :} lappend names {percentage 1: } lappend names {percentage 2 : } lappend names {total lambs in silver pieces:} foreach i {1 2 3 4 5 6 7 8} { label .frame.label$i -text [lindex $names $i] -anchor e entry .frame.entry$i -width 35 -textvariable side$i grid .frame.label$i .frame.entry$i -sticky ew -pady 2 -padx 1 } proc about {} { set msg "Calculator for Sumerian Sheep and Herd Animals from TCL WIKI, written on eTCL " tk_messageBox -title "About" -message $msg } proc calculate { } { global answer2 global side1 side2 side3 side4 side5 global side6 side7 side8 global testcase_number global scaleupx1 scaleupx2 delta1 global sheepbarley1 sheepbarley2 global taxinkind1 taxinkind2 combined_percent global animals_withdrawn un_inspected global total_herd inspected_herd global total_herd_withdrawn incr testcase_number set side1 [* $side1 1. ] set side2 [* $side2 1. ] set side3 [* $side3 1. ] set side4 [* $side4 1. ] set side5 [* $side5 1. ] set sheep1 [* $side1 1. ] set lambs1 [* $side2 1. ] set sheep2 [* $side3 1. ] set lambs2 [* $side4 1. ] set workdays2 [* $side5 1. ] set fraction1 [/ $lambs1 $sheep1 ] set fraction2 [/ $lambs2 $sheep2 ] set percent1 [* [/ $lambs1 $sheep1 ] 100.] set percent2 [* [/ $lambs2 $sheep2 ] 100.] set delta1 [abs [- $lambs2 $lambs1] ] set scaleupx1 [* [/ $lambs1 $sheep1 ] 1000. ] set scaleupx2 [* [/ $lambs2 $sheep2 ] 1000. ] set sheepbarley1 [* $sheep1 $workdays2 2. ] set sheepbarley2 [* $sheep2 $workdays2 2. ] set taxinkind1 [* $sheep1 [/ 1. 10. ] ] set taxinkind2 [* $sheep2 [/ 1. 10. ] ] set sheep_add [+ $sheep1 $sheep2 ] set lambs_add [+ $lambs1 $lambs2 ] set combined_percent [* [/ $lambs_add $sheep_add ] 100. ] set animals_withdrawn 3. set un_inspected 30. set total_herd [+ $sheep1 $lambs1 $sheep2 $lambs2 ] set total_herd_withdrawn [- $total_herd $animals_withdrawn ] set inspected_herd [- $total_herd_withdrawn $un_inspected ] set side5 [* $side5 1. ] set side6 $percent1 set side7 $percent2 set side8 [* [+ $lambs1 $lambs2 ] [/ 1. 2.] ] } proc fillup {aa bb cc dd ee ff gg hh} { .frame.entry1 insert 0 "$aa" .frame.entry2 insert 0 "$bb" .frame.entry3 insert 0 "$cc" .frame.entry4 insert 0 "$dd" .frame.entry5 insert 0 "$ee" .frame.entry6 insert 0 "$ff" .frame.entry7 insert 0 "$gg" .frame.entry8 insert 0 "$hh" } proc clearx {} { foreach i {1 2 3 4 5 6 7 8 } { .frame.entry$i delete 0 end } } proc reportx {} { global side1 side2 side3 side4 side5 global side6 side7 side8 global testcase_number global scaleupx1 scaleupx2 delta1 global sheepbarley1 sheepbarley2 global taxinkind1 taxinkind2 combined_percent global animals_withdrawn un_inspected global total_herd inspected_herd global total_herd_withdrawn console show; puts "%|table $testcase_number|printed in| tcl wiki format|% " puts "&| quantity| value| comment, if any|& " puts "&| testcase number:| $testcase_number| |&" puts "&| $side1 :|sheep1|includes rams and ewes |&" puts "&| $side2 :|lambs1| all immature |& " puts "&| $side3 :|sheep2|includes rams and ewes |& " puts "&| $side4 :|lambs2 | all immature |&" puts "&| $side5 :|days time period|typical 1 month |&" puts "&| $side6 :|percent1|100.*lambs1/sheep1, not used by ancients |&" puts "&| $side7 :|percent2 |100.*lambs2/sheep2,not used by ancients |&" puts "&| $sheepbarley1 :| liters fattening barley feed 1st flock |1 sila vol = 1 liter |&" puts "&| $sheepbarley2 :| liters fattening barley feed 2nd flock |1 sila vol = 1 liter |&" puts "&| $taxinkind1 :|tax1 in kind| on 1st herd |&" puts "&| $taxinkind2 :|tax2 in kind|on 2nd herd |&" puts "&| $side8 :|total lambs in silver pieces|shekles or gin |&" puts "&| $combined_percent :|combined percentage for 2 herds | 100.*lambs/sheep percentage |&" puts "&| below are test formulas |for |>balanced accounts< |&" puts "&| assumes |1st herd is prior year | 2nd herd is current year |&" puts "&| $scaleupx1 :|scale up 1 |test factor, 1st herd |&" puts "&| $scaleupx2 :|scale up 2 |test factor, 2nd herd |&" puts "&| $delta1 :|delta lambs in abs |abs(lambs1-lambs2) |&" puts "&| $animals_withdrawn :|animals withdrawn in current year | sold or given to priests |& " puts "&| $un_inspected :|animals not inspected |possible far pasture |&" puts "&| $total_herd :|total herd maximum |includes 1st and 2nd years, after 2nd spring lambs |&" puts "&| $total_herd_withdrawn :|total herd less withdrawn in 2nd year|withdrawn, sold, gifted |&" puts "&| $inspected_herd :|total herd inspected 2nd year | less uninspected animals and withdrawn|&" } frame .buttons -bg aquamarine4 ::ttk::button .calculator -text "Solve" -command { calculate } ::ttk::button .test2 -text "Testcase1" -command {clearx;fillup 100.0 80. 100.0 70. 15. 80. 70. 75.} ::ttk::button .test3 -text "Testcase2" -command {clearx;fillup 100.0 70. 100.0 60. 30. 70. 60. 65. } ::ttk::button .test4 -text "Testcase3" -command {clearx;fillup 100.0 80 100.0 40. 60.0 80. 40. 60. } ::ttk::button .clearallx -text clear -command {clearx } ::ttk::button .about -text about -command about ::ttk::button .cons -text report -command { reportx } ::ttk::button .exit -text exit -command {exit} pack .calculator -in .buttons -side top -padx 10 -pady 5 pack .clearallx .cons .about .exit .test4 .test3 .test2 -side bottom -in .buttons grid .frame .buttons -sticky ns -pady {0 10} . configure -background aquamarine4 -highlightcolor brown -relief raised -border 30 wm title . "Sumerian Sheep and Herd Animals Calculator "

### Pushbutton Operation

For the push buttons, the recommended procedure is push testcase and fill frame, change first three entries etc, push solve, and then push report. Report allows copy and paste from console.For testcases in a computer session, the eTCL calculator increments a new testcase number internally, eg. TC(1), TC(2) , TC(3) , TC(N). The testcase number is internal to the calculator and will not be printed until the report button is pushed for the current result numbers. The current result numbers will be cleared on the next solve button. The command { calculate; reportx } or { calculate ; reportx; clearx } can be added or changed to report automatically. Another wrinkle would be to print out the current text, delimiters, and numbers in a TCL wiki style table asputs " %| testcase $testcase_number | value| units |comment |%" puts " &| volume| $volume| cubic meters |based on length $side1 and width $side2 |&"

gold This page is copyrighted under the TCL/TK license terms, this license.

## Comments Section edit

Please place any comments here, Thanks.