## Returns the negative of any decimal number passed to it.
proc negate {number} {
if {![regexp {^[+-]?(\d)+$} $number]} {
return "fail"
} else {
return [expr {0 - $number}] }
}
}
## Converts a decimal number to a binary number
proc toBinary {number} {
set value 0; set power 0; set theList [list]
while {$value < $myNumb} {
incr power; set value [expr {pow(2,$power)}]
}
for {set i $power} {$i != -1} {incr i -1} {
set value [expr {pow(2,$i)}]
if {$myNumb >= $value} { lappend theList 1; set myNumb [expr {$myNumb - $value}]
} else { lappend theList 0 }
}
return $theList
}
## Works out the the factorial of a number
## i.e n * (n-1) * (n-2) * ( n-3)... * 1
proc factorial {number} {
if {$number > 14} { set return 1.0 } else { set return 1 }
while {$number > 0} {
set return [expr {$return * $number}]
incr number -1
}
return $return
}
## Works out the number of possible arrangements of a list (where the order does NOT matter)
proc combinations {number selection} {
set numerator [factorial $number]
set denominator [expr {[factorial $selection] * [factorial [expr {$number - $selection}]]}]
return [expr {$numerator / $denominator}]
}
## Works out the number of possible arrangements of a list (where the order DOES matter)
proc permutations {number selection} {
set numerator [factorial $number]
set denominator [factorial [expr {$number - $selection}]]
return [expr {$numerator / $denominator}]
}
## NOT YET COMPLETE
proc iterative {formula dp {startvalue 1}} {
set answers [list]
while {1} {
set current [expr {}]
lappend answers [format %.${dp}f $current]
}
}