All pastes #331134 Raw Edit

Someone

public text v1 · immutable
#331134 ·published 2007-01-28 16:16 UTC
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
  }
}