Long multiplication: Difference between revisions

Content added Content deleted
m (→‎{{header|Python}} (Trans Haskell): Foregrounded main function)
Line 592: Line 592:
=={{header|Aime}}==
=={{header|Aime}}==
<lang aime>data b, c, v;
<lang aime>data b, c, v;
integer d, i, j, s;
integer d, e, i, j, s;


b = argv(1);
b = 1.argv;
v = argv(2);
b.dump(',');
v = 2.argv;
v.dump(',');


b_run(c, b_length(b) + b_length(v) + 1, 0);
c.run(~b + ~v + 1, 0);


for (i, d in b) {
i = -b_length(b);
b[i] = d - '0';
while (i) {
b[i] = b[i] - '0';
i += 1;
}
}


for (j, d of v) {
j = -1;
while (-b_length(v) <= j) {
d = v[j] - '0';
d = v[j] - '0';


i = -1;
s = 0;
s = 0;
while (-b_length(b) <= i) {
for (i, e of b) {
s += b[i] * d + c[i + j];
s += e * d + c[i + j];
c[i + j] = s % 10;
c[i + j] = s % 10;
s /= 10;
s /= 10;
i -= 1;
}
}
while (s) {
while (s) {
Line 623: Line 620:
i -= 1;
i -= 1;
}
}

j -= 1;
}
}


b_delete(c, -1);
c.delete(-1);
c.bf_drop0("");
if (!c[0]) {
b_delete(c, 0);
}


for (i, d in c) {
i = -b_length(c);
c[i] = d + '0';
while (i) {
c[i] = c[i] + '0';
i += 1;
}
}