Perl: Umprogrammieren von "Hypercalc"

29/01/2011 - 22:07 von Ivan Panchenko | Report spam
Hallo!

Robert Munafo hat ein Programm (in Perl) geschrieben, das mit extrem
großen Zahlen rechnen kann. Es nennt sich "Hypercalc":
http://mrob.com/pub/perl/hypercalc.txt

Hier sind ein paar Namen vordefiniert, nàmlich "e", "pi" und "phi".
Nun wollte ich weitere hinzufügen, jedoch erhalte ich ab dem Namen
"billiard", den ich als "1000000000000000" definiert habe, eine
Fehlermeldung: normalize <s1>: Cannot parse '1E'

Gesamter Abschnitt aus dem Skript:

# substitute function names, variables and predefined constants
# e, pi and phi
while ($e =~ m|^(.*$p_nonvar)($p_var)($p_nonvar.*)$|) {
$pre = $1; $v = $2; $post = $3;
&dbg1("substvar |$pre|$v|$post|", 1);
if ($v eq "e") {
$s = $s_e;
} elsif ($v eq "pi") {
$s = $s_pi;
} elsif ($v eq "phi") {
$s = $s_phi;
} elsif ($v eq "million") {
$s = 1000000
...
} elsif ($v eq "billiard") {
$s = 1000000000000000 //diese Definition wird nicht akzeptiert//
} elsif ($g_function_symbols =~ m|\:$v\.(.)\:|)
{
$s = $1;
} elsif ($v =~ m|^r([0-9]+)$|) {
# result history item -- leave it alone
$s = "R" . $1;
} elsif ($vars_pt{$v} ne "") {
$s = &define_ir($vars_pt{$v}, $vars_val{$v});
} else {
print "Unrecognized variable/function name $v";
$s = " 0 "
}
$e = $pre . $s . $post;
}

Was muss ich tun?

Anmerkung: Ich habe keine Ahnung von Perl. Ich habe bloß nach dem
Abschnitt mit den Definitionen gesucht und es analog mit meinen
eigenen fortgesetzt. Ohne weiteren Schnickschnack hat es geklappt, nur
ab "billiard" kommt die blöde Fehlermeldung. Woran liegt das?

Danke im Voraus!

Mit freundlichen Grüßen
Ivan Panchenko
 

Lesen sie die antworten

#1 ram
29/01/2011 - 22:19 | Warnen spam
Ivan Panchenko writes:
$s = 1000000000000000 //diese Definition wird nicht akzeptiert//



Vage Vermutung:

$s = '1000000000000000';

Ähnliche fragen