rendered paste body;Koolknight_5's Quadratic Equation Solver
;Copyright Koolknight_5 2007
;Ex Eq: !algqd 2x^2+5x+3
on *:TEXT:!algqd*:#:{
if ( $2 != * $+ x^2 $+ [+|-] $+ * $+ x $+ [+|-] $+ * ) {
{ notice $nick You must put the equation in the form of a positive "a" term } {
halt } {
else {
if ( "-" isin $2- ) { goto 1 } {
else
;Following Section is for all positive numbers.
var %algqd.prestrip.allpos.axsq = $gettok($2,1,$asc(+))
var %algqd.prestrip.allpos.bx = $gettok($2,2,$asc(+))
var %algqd.prestrip.allpos.c = $gettok($2,3,$asc(+))
var %algqd.poststrip.allpos.avar = $gettok( $+ %algqd.prestrip.allpos.axsq $+ ,1,$asc(x))
var %algqd.poststrip.allpos.bvar = $gettok( $+ %algqd.prestrip.allpos.bx $+ ,1,$asc(x))
var %algqd.poststrip.allpos.cvar = %algqd.prestrip.allpos.c
var %algqd.startansw.allpos.bsq = $eval( %algqd.poststrip.allpos.bvar $+ ^2 )
var %algqd.startansw.allpos.4ac = $eval(4* $+ %algqd.poststrip.allpos.avar $+ * $+ %algqd.poststrop.allpos.cvar )
var %algqd.startansw.allpos.negb = $calc( $+ %algqd.poststrip.allpos.bvar $+ * $+ -1 $+ )
var %algqd.startansw.allpos.2a = $eval( $+ %algqd.poststrip.allpos.avar $+ * $+ 2 $+ )
var %algqd.startansw.allpos.undrad = $calc( $+ %algqd.startansw.allpos.bsq $+ - $+ %algqd.startansw.allpos.4ac $+ )
var %algqd.startansw.allpos.possqrt = $calc( $+ %algqd.startansw.allpos.undrad $+ ^.5 $+ )
var %algqd.startansw.allpos.negsqrt = $calc( $+ %algqd.startansw.allpos.possqrt $+ * $+ -1 $+ )
var %algqd.midansw.allpos.topoffracpos = $calc( $+ %algqd.startansw.allpos.negb $+ + $+ %algqd.startansw.allpos.possqrt $+ )
var %algqd.midansw.allpos.topoffracneg = $calc( $+ %algqd.startansw.allpos.negb $+ + $+ %algqd.startansw.allpos.negsqrt $+ )
var %algqd.finalansw.allpos.answer1pos = $calc( $+ %algqd.midansw.allpos.topoffracpos $+ / $+ %algqd.startansw.allpos.2a $+ )
var %algqd.finalansw.allpos.answer2neg = $calc( $+ %algqd.midansw.allpos.topoffracneg $+ / $+ %algqd.startansw.allpos.2a $+ )
notice $nick The Answer To $2 Is: X= $+ %algqd.finalansw.allpos.answer1pos 4OR X= $+ %algqd.finalansw.pnp.answer2neg }
unset %algqd.prestrip.allpos.axsq
unset %algqd.prestrip.allpos.bx
unset %algqd.prestrip.allpos.c
unset %algqd.poststrip.allpos.avar
unset %algqd.poststrip.allpos.bvar
unset %algqd.poststrip.allpos.cvar
unset %algqd.startansw.allpos.bsq
unset %algqd.startansw.allpos.4ac
unset %algqd.startansw.allpos.negb
unset %algqd.startansw.allpos.2a
unset %algqd.startansw.allpos.undrad
unset %algqd.startansw.allpos.possqrt
unset %algqd.startansw.allpos.negsqrt
unset %algqd.midansw.allpos.topoffracpos
unset %algqd.midansw.allpos.topoffracneg
unset %algqd.finalansw.allpos.answer2neg
halt
}
part1:
;part1 splits the negatives into diff categories.
if ( $2- == * $+ x^2 $+ - $+ * $+ x $+ + $+ * ) { goto 2 }
if ( $2- == * $+ x^2 $+ + $+ * $+ x $+ - $+ * ) { goto 3 }
if ( $2- == * $+ x^2 $+ - $+ * $+ x $+ - $+ * ) { goto 4 }
part2:
;Ex eg:!algqd 2x^2-5x+3
{
var %algqd.prestrip.pnp.axsq = $gettok($2,1,$asc(-))
var %algqd.prestrip.pnp.bxplchlf = $gettok($2,2,$asc(-))
var %algqd.prestrip.pnp.bx = $gettok(%algqd.prestrip.posnegpos.bxplchlf $+ ,1,$asc(+))
var %algqd.prestrip.pnp.c = $gettok(%algqd.prestrip.posnegpos.bxplchlf $+ ,2,$asc(+))
var %algqd.poststrip.pnp.avar = $gettok(%algqd.prestrip.pnp.axsq $+ ,1,$asc(x))
var %algqd.poststrip.pnp.bvar = $gettok(%algqd.prestrip.pnp.bx $+ ,1,4asc(x))
var %algqd.poststrip.pnp.cvar = %algqd.prestrip.pnp.c
var %algqd.startansw.pnp.bsq = $eval(%algqd.poststrip.pnp.bvar $+ ^2 $+ )
var %algqd.startansw.pnp.4ac = $eval(4* $+ %algqd.poststrip.pnp.avar $+ * $+ %algqd.poststrip.pnp.cvar $+ )
var %algqd.startansw.pnp.negb = $calc(%algqd.poststrip.pnp.bvar $+ * $+ -1 $+ )
var %algqd.startansw.pnp.2a = $eval(2* $+ %algqd.poststrip.pnp.avar $+ )
var %algqd.startansw.pnp.undrad = $calc(%algqd.startansw.pnp.bsq $+ - $+ %algqd.startansw.pnp.4ac $+ )
var %algqd.startansw.pnp.possqrt = $calc(%algqd.startansw.pnp.undrad $+ ^.5 $+ )
var %algqd.startansw.pnp.negsqrt = $calc(%algqd.startansw.pnp.possqrt $+ * $+ -1 $+ )
var %algqd.midansw.pnp.topoffracpos = $calc(%algqd.startansw.pnp.negb $+ + $+ %algqd.startansw.pnp.possqrt $+ )
var %algqd.midansw.pnp.topoffracneg = $calc(%algqd.startansw.pnp.negb $+ + $+ %algqd.startansw.pnp.negsqrt $+ )
var %algqd.finalansw.pnp.answer3pos = $calc(%algqd.midansw.pnp.topoffracpos $+ / $+ %algqd.startansw.pnp.2a $+ )
var %algqd.finalansw.pnp.answer4neg = $calc(%algqd.midansw.pnp.topoffracneg $+ / $+ %algqd.startansw.pnp.2a $+ )
{ notice $nick The Answer To $2 Is: X= $+ %algqd.finalansw.pnp.answer3pos 4OR X= $+ %algqd.finalansw.pnp.answer4neg }
unset %algqd.prestrip.pnp.axsq
unset %algqd.prestrip.pnp.bxplchlf
unset %algqd.prestrip.pnp.bx
unset %algqd.prestrip.pnp.c
unset %algqd.poststrip.pnp.avar
unset %algqd.poststrip.pnp.bvar
unset %algqd.poststrip.pnp.cvar
unset %algqd.startansw.pnp.bsq
unset %algqd.startansw.pnp.4ac
unset %algqd.startansw.pnp.negb
unset %algqd.startansw.pnp.2a
unset %algqd.startansw.pnp.undrad
unset %algqd.startansw.pnp.negsqrt
unset %algqd.midansw.pnp.topoffracpos
unset %algqd.midansw.pnp.topoffracneg
unset %algqd.finalansw.pnp.answer3pos
unset %algqd.finalansw.pnp.answer4neg
halt
}
}
part3:
;Ex eg:!algqd 2x^2+5x-3
{
var %algqd.prestrip.ppn.axsq = $gettok($2,1,$asc(+))
var %algqd.prestrip.ppn.bxplchlf = $gettok($2,2,$asc(+))
var %algqd.prestrip.ppn.bx = $gettok(%algqd.prestrip.posnegpos.bxplchlf $+ ,1,$asc(-))
var %algqd.prestrip.ppn.c = $gettok(%algqd.prestrip.posnegpos.bxplchlf $+ ,2,$asc(-))
var %algqd.poststrip.ppn.avar = $gettok(%algqd.prestrip.ppn.axsq $+ ,1,$asc(x))
var %algqd.poststrip.ppn.bvar = $gettok(%algqd.prestrip.ppn.bx $+ ,1,4asc(x))
var %algqd.poststrip.ppn.cvar = %algqd.prestrip.ppn.c
var %algqd.startansw.ppn.bsq = $eval(%algqd.poststrip.ppn.bvar $+ ^2 $+ )
var %algqd.startansw.ppn.4ac = $eval(4* $+ %algqd.poststrip.ppn.avar $+ * $+ %algqd.poststrip.ppn.cvar $+ )
var %algqd.startansw.ppn.negb = $calc(%algqd.poststrip.ppn.bvar $+ * $+ -1 $+ )
var %algqd.startansw.ppn.2a = $eval(2* $+ %algqd.poststrip.ppn.avar $+ )
var %algqd.startansw.ppn.undrad = $calc(%algqd.startansw.ppn.bsq $+ - $+ %algqd.startansw.ppn.4ac $+ )
var %algqd.startansw.ppn.possqrt = $calc(%algqd.startansw.ppn.undrad $+ ^.5 $+ )
var %algqd.startansw.ppn.negsqrt = $calc(%algqd.startansw.ppn.possqrt $+ * $+ -1 $+ )
var %algqd.midansw.ppn.topoffracpos = $calc(%algqd.startansw.ppn.negb $+ + $+ %algqd.startansw.ppn.possqrt $+ )
var %algqd.midansw.ppn.topoffracneg = $calc(%algqd.startansw.ppn.negb $+ + $+ %algqd.startansw.ppn.negsqrt $+ )
var %algqd.finalansw.ppn.answer5pos = $calc(%algqd.midansw.ppn.topoffracpos $+ / $+ %algqd.startansw.ppn.2a $+ )
var %algqd.finalansw.ppn.answer6neg = $calc(%algqd.midansw.ppn.topoffracneg $+ / $+ %algqd.startansw.ppn.2a $+ )
{ notice $nick The Answer To $2 Is: X= $+ %algqd.finalansw.ppn.answer5pos 4OR X= $+ %algqd.finalansw.ppn.answer6neg }
unset %algqd.prestrip.ppn.axsq
unset %algqd.prestrip.ppn.bxplchlf
unset %algqd.prestrip.ppn.bx
unset %algqd.prestrip.ppn.c
unset %algqd.poststrip.ppn.avar
unset %algqd.poststrip.ppn.bvar
unset %algqd.poststrip.ppn.cvar
unset %algqd.startansw.ppn.bsq
unset %algqd.startansw.ppn.4ac
unset %algqd.startansw.ppn.negb
unset %algqd.startansw.ppn.2a
unset %algqd.startansw.ppn.undrad
unset %algqd.startansw.ppn.negsqrt
unset %algqd.midansw.ppn.topoffracpos
unset %algqd.midansw.ppn.topoffracneg
unset %algqd.finalansw.ppn.answer5pos
unset %algqd.finalansw.ppn.answer6neg
halt
}
}
part4:
;Ex Eq: !algqd 2x^2-5x-3
{
var %algqd.prestrip.pnn.axsq = $gettok($2,1,$asc(-))
var %algqd.prestrip.pnn.bx = $gettok($2 $+ ,2,$asc(-))
var %algqd.prestrip.pnn.c = $gettok($2 $+ ,3,$asc(-))
var %algqd.poststrip.pnn.avar = $gettok(%algqd.prestrip.pnn.axsq $+ ,1,$asc(x))
var %algqd.poststrip.pnn.bvarbb = $gettok(%algqd.prestrip.pnn.bx $+ ,1,$asc(x))
var %algqd.poststrip.pnn.bvar = $calc(%algqd.poststrip.pnn.bvarbb $+ * $+ -1 $+ )
var %algqd.poststrip.pnn.cvar = $calc(%algqd.prestrip.pnn.c $+ * $+ -1 $+ )
var %algqd.startansw.pnn.bsq = $eval(%algqd.poststrip.pnn.bvar $+ ^2 $+ )
var %algqd.startansw.pnn.4ac = $eval(4* $+ %algqd.poststrip.pnn.avar $+ * $+ %algqd.poststrip.pnn.cvar $+ )
var %algqd.startansw.pnn.negb = $calc(%algqd.poststrip.pnn.bvar $+ * $+ -1 $+ )
var %algqd.startansw.pnn.2a = $eval(2* $+ %algqd.poststrip.pnn.avar $+ )
var %algqd.startansw.pnn.undrad = $calc(%algqd.startansw.pnn.bsq $+ - $+ %algqd.startansw.pnn.4ac $+ )
var %algqd.startansw.pnn.possqrt = $calc(%algqd.startansw.pnn.undrad $+ ^.5 $+ )
var %algqd.startansw.pnn.negsqrt = $calc(%algqd.startansw.pnn.possqrt $+ * $+ -1 $+ )
var %algqd.midansw.pnn.topoffracpos = $calc(%algqd.startansw.pnn.negb $+ + $+ %algqd.startansw.pnn.possqrt $+ )
var %algqd.midansw.pnn.topoffracneg = $calc(%algqd.startansw.pnn.negb $+ + $+ %algqd.startansw.pnn.negsqrt $+ )
var %algqd.finalansw.pnn.answer7pos = $calc(%algqd.midansw.pnn.topoffracpos $+ / $+ %algqd.startansw.pnn.2a $+ )
var %algqd.finalansw.pnn.answer8neg = $calc(%algqd.midansw.pnn.topoffracneg $+ / $+ %algqd.startansw.pnn.2a $+ )
{ notice $nick The Answer To $2 Is: X= $+ %algqd.finalansw.pnn.answer7pos 4OR X= $+ %algqd.finalansw.pnp.answer8neg }
unset %algqd.prestrip.pnn.axsq
unset %algqd.prestrip.pnn.bxplchlf
unset %algqd.prestrip.pnn.bx
unset %algqd.prestrip.pnn.c
unset %algqd.poststrip.pnn.avar
unset %algqd.poststrip.pnn.bvar
unset %algqd.poststrip.pnn.cvar
unset %algqd.startansw.pnn.bsq
unset %algqd.startansw.pnn.4ac
unset %algqd.startansw.pnn.negb
unset %algqd.startansw.pnn.2a
unset %algqd.startansw.pnn.undrad
unset %algqd.startansw.pnn.negsqrt
unset %algqd.midansw.pnn.topoffracpos
unset %algqd.midansw.pnn.topoffracneg
unset %algqd.finalansw.pnn.answer5pos
unset %algqd.finalansw.pnn.answer6neg
halt
}
}