Cubic equation solver

By Sigh_ on Dec 26, 2004

;; Solution to cubic equations by Sigh_

;;

;; Solves equations of the type ax^3 + bx^2 +cx + d = 0 (a != 0)

;;

;; Usage:

;; $cubic(a,b,c,d)

;; or

;; /cubic a b c d

alias cubic {
  var %i = $calc((3*$3 /$1 -$2 ^2/$1 ^2)/3),%x = $calc((2*$2 ^3 /$1 ^3-9*$2 $&
    *$3 /$1 ^2+27*$4 /$1)/27),%n = $calc(%x ^2 /4+%i ^3/27),%r = $iif($isid,return,echo -a)
  if (%n > 0) {
    var %s = $cbrt($calc($sqrt(%n)-%x /2)),%u = $cbrt($calc(-$sqrt(%n)-%x /2)), $&
      %p = $x($calc($2 /-3/$1 -(%s +%u)/2)),%t = $iif($calc(3^0.5*(%s -%u)/2) != 1,$x($v1))
    %r $x($calc(%s +%u -$2 /3/$1)) , %p + %t $+ i , %p - %t $+ i
    return
  }
  var %k = $calc((%x ^2/4-%n)^0.5),%j = -1 * $cbrt(%k),%t = $acos($calc(%x $&
    /-2/%k)) / 3,%m = $cos(%t),%b = $sqrt(3) * $sin(%t),%p = $calc($2 /-3/$1))
  %r $x($calc(-2*%j *%m -$2 /3/$1)) , $x($calc(%j *(%m +%b)+%p)) , $x($calc(%j *(%m -%b)+%p))
}

alias -l cbrt return $iif($1 < 0,-) $+ $calc($abs($1)^(1/3))

alias -l x return $round($1,3)

Comments

Sign in to comment.
atom_man   -  Nov 02, 2006

nice scripted.

 Respond  
QuickStep   -  Dec 31, 2004

what can i say? you did a good job on making it look very complicated. Good coding, i like it

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.