Tcl Library Source Code

Check-in [4c651a5ee7]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Solve a small problem with the math::stats proc (it did not correctly calculate the mean if the given numbers were all integers; now in the correct branch)
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 4c651a5ee73b5265d34611fd019e1d3bd516f6deefc64635b523fa6c79fc88fd
User & Date: arjenmarkus 2019-04-23 18:52:36
Context
2019-04-23
19:46
Add a new package "quasirandom" for generating quasirandom numbers check-in: 8fdd9b5200 user: arjenmarkus tags: trunk
18:52
Solve a small problem with the math::stats proc (it did not correctly calculate the mean if the given numbers were all integers; now in the correct branch) check-in: 4c651a5ee7 user: arjenmarkus tags: trunk
2019-04-19
17:03
Package consolidation, deprecation, and movement. Tkt [31868eeaff] New: - fileutil::paths Tcl 8.4+ Version 1 - struct::map Tcl 8.4+ Version 1 Deprecated Replacement - configuration struct::map - doctools::config struct::map - doctools::paths fileutil::paths - paths fileutil::paths Updated all packages within Tcllib using the deprecated packages to now use the replacements instead. - doctools::idx::export 0.2.1 (I) - doctools::idx::import 0.2.1 (I) - doctools::toc::export 0.2.1 (I) - doctools::toc::import 0.2.1 (I) - pt::peg::export 1.0.1 (I) - pt::peg::import 1.0.1 (I) For external users reworked the internals of the deprecated packages to be plain wrappers redirecting to their replacements, deprecation stage D1. check-in: 788d248407 user: aku tags: trunk
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to modules/math/ChangeLog.





1
2
3
4
5
6
7



2018-08-04  Arjen Markus <[email protected]>
	* statistics.tcl: Source stat_wasserstein.tcl and stat_logit.tcl - for new commands
	* statistics.test: Add corresponding tests
	* statistics.man: Add description of these commands
	* pkgIndex.tcl: Bump the version to 1.3.0

2018-07-22  Arjen Markus <[email protected]>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
2019-04-18  Arjen Markus <[email protected]>
	* misc.tcl: Add double() to calculation of mean and standard deviation in proc stats (ticket 0a030f850d4e3fc05da98aa954a6ec1b16e655d9)
	* math.test: Correct the outcome of the test for stats (consequence of ticket 0a030f850d4e3fc05da98aa954a6ec1b16e655d9)

2018-08-04  Arjen Markus <[email protected]>
	* statistics.tcl: Source stat_wasserstein.tcl and stat_logit.tcl - for new commands
	* statistics.test: Add corresponding tests
	* statistics.man: Add description of these commands
	* pkgIndex.tcl: Bump the version to 1.3.0

2018-07-22  Arjen Markus <[email protected]>

Changes to modules/math/math.test.

214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
} [tcltest::wrongNumArgs math::stats {val1 val2 args} 1]
test math-8.3 { simple math::stats } {
     foreach {a b c} [ math::stats 100 100 100 110 ] { break }
     set a [ expr round($a) ]
     set b [ expr round($b) ]
     set c [ expr round($c) ]
     list $a $b $c
} {102 5 5}

test math-9.1 { math::integrate, insufficient data points } {
     catch { math::integrate {1 10 2 20 3 30 4 40} } msg
     set msg
} "at least 5 x,y pairs must be given"
test math-9.2 { simple math::integrate } {
     math::integrate {1 10 2 20 3 30 4 40 5 50 6 60 7 70 8 80 9 90 10 100}






|







214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
} [tcltest::wrongNumArgs math::stats {val1 val2 args} 1]
test math-8.3 { simple math::stats } {
     foreach {a b c} [ math::stats 100 100 100 110 ] { break }
     set a [ expr round($a) ]
     set b [ expr round($b) ]
     set c [ expr round($c) ]
     list $a $b $c
} {103 5 5}

test math-9.1 { math::integrate, insufficient data points } {
     catch { math::integrate {1 10 2 20 3 30 4 40} } msg
     set msg
} "at least 5 x,y pairs must be given"
test math-9.2 { simple math::integrate } {
     math::integrate {1 10 2 20 3 30 4 40 5 50 6 60 7 70 8 80 9 90 10 100}

Changes to modules/math/misc.tcl.

305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
proc ::math::stats {val1 val2 args} {
     set sum [ expr { $val1+$val2 } ]
     set N [ expr { [ llength $args ] + 2 } ]
     foreach val $args {
        set sum [ expr { $sum+$val } ]
     }
     set mean [ expr { $sum/$N } ]
     set sigma_sq 0
     foreach val [ concat $val1 $val2 $args ] {
        set sigma_sq [ expr { $sigma_sq+pow(($val-$mean),2) } ]
     }
     set sigma_sq [ expr { $sigma_sq/($N-1) } ] 
     set sigma [ expr { sqrt($sigma_sq) } ]
     set cov [ expr { ($sigma/$mean)*100 } ]
     return [ list $mean $sigma $cov ]
}

# ::math::sum --
#






|




|







305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
proc ::math::stats {val1 val2 args} {
     set sum [ expr { $val1+$val2 } ]
     set N [ expr { [ llength $args ] + 2 } ]
     foreach val $args {
        set sum [ expr { $sum+$val } ]
     }
     set mean [ expr { $sum/double($N) } ]
     set sigma_sq 0
     foreach val [ concat $val1 $val2 $args ] {
        set sigma_sq [ expr { $sigma_sq+pow(($val-$mean),2) } ]
     }
     set sigma_sq [ expr { $sigma_sq/double($N-1) } ]
     set sigma [ expr { sqrt($sigma_sq) } ]
     set cov [ expr { ($sigma/$mean)*100 } ]
     return [ list $mean $sigma $cov ]
}

# ::math::sum --
#