;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 } }