All pastes #289390 Raw Edit

Untitled

public text v1 · immutable
#289390 ·published 2006-12-23 03:25 UTC
rendered paste body
## 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]
	}
}