rendered paste bodyon $*:TEXT:/^[@!.]calc/Si:#: {
if (!$enabled($chan,calc)) { halt }
var %show = $iif($left($1,1) == @,msg $chan,notice $nick)
var %string = 1
set %orig $2-
/tokenize 38 $replace($remove($replace($2-,pi,3.1415),$chr(32),!,@,#,$,a,c,d,e,f,g,h,i,j,l,n,o,p,q,r,s,u,v,w,x,y,z),*,$chr(38) $+ * $+ $chr(38),+,$chr(38) $+ + $+ $chr(38),/,$chr(38) $+ / $+ $chr(38),-,$chr(38) $+ - $+ $chr(38),^,$chr(38) $+ ^ $+ $chr(38))
var %one = $replace($1-,m,kk,b,kkk,t,kkkk)
if $count(%one,k) > 20 { %show Error: Number Too Large | halt }
while ([ $chr(36) $+ [ %string ] ]) {
var %stringcurrent = $replace([ $chr(36) $+ [ %string ] ],m,kk,b,kkk,t,kkkk)
var %stringmult = $calc(1000^$count(%stringcurrent,k))
if $count(%stringcurrent,$chr(46)) > 1 { %show Error: Multiple Deciamals | halt }
if (($remove(%stringcurrent,k,m,b,t) !isnum) && ($chr(38) !isin $replace(%stringcurrent,*,&,/,&,-,&,+,&,^,&,.,&))) { %show Error: Missing Coefficient | halt }
if $mid(%stringcurrent,$calc($pos(%stringcurrent,$chr(46))+1),1) == k { %show Error: Invalid Format | halt }
if k isin %stringcurrent { var %one = $replace(%one,%stringcurrent,[ $calc($remove(%stringcurrent,k) * %stringmult) ]) }
inc %string
}
$iif(((%orig = 0) && ($calc(%one) = 0)),%show Error: Number Too Small,%show [Calc]: %orig $chr(61) $bytes($calc(%one),db))
}