А что, без функций, когда всё в main(), gp2c не может?
Нет смысла. Как это запускать потом?
Попробовал сейчас транслировать код
Код:
{print();t0=getwalltime();
b=n=kpod=0;
for(x=2,10^7,
if(numdiv(x)==4,
if(n==0, b=x); n++ ,
if(n>2, kpod++); n=0); );
print(kpod);
print;print(strtime(getwalltime()-t0));print;
}
Получилось следующее:
- /*-*- compile-command: "aarch64-linux-android-clang -c -o ya-t.gp.o -O3 -Wall -fno-strict-aliasing -fstack-protector-strong -Oz -isystem/data
- /data/com.termux/files/usr/include/c++/v1 -isystem/data/data/com.termux/files/usr/include -fPIC -I\"/data/data/com.termux/files/usr/include\"
- ya-t.gp.c && -o ya-t.gp.so ya-t.gp.o -Wl,-rpath,/data/data/com.termux/files/usr/lib "; -*-*/
- #include <pari/pari.h>
- /*
- GP;install("init_ya_t","v","init_ya_t","./ya-t.gp.so");
- */
- void init_ya_t(void);
- /*End of prototype*/
-
- static GEN t0;
- static GEN b;
- static GEN n;
- static GEN kpod;
- /*End of global vars*/
-
- void
- init_ya_t(void) /* void */
- {
- GEN p1;
- t0 = pol_x(fetch_user_var("t0"));
- b = pol_x(fetch_user_var("b"));
- n = pol_x(fetch_user_var("n"));
- kpod = pol_x(fetch_user_var("kpod"));
- pari_printf("\n");
- t0 = getwalltime();
- b = n = kpod = gen_0;
- p1 = powis(stoi(10), 7);
- {
- GEN x;
- for (x = gen_2; gcmp(x, p1) <= 0; x = gaddgs(x, 1))
- {
- if (equalis(numdiv(x), 4))
- {
- if (gequal0(n))
- b = x;
- n = gaddgs(n, 1);
- }
- else
- {
- if (gcmpgs(n, 2) > 0)
- kpod = gaddgs(kpod, 1);
- n = gen_0;
- }
- }
- }
- pari_printf("%Ps\n", kpod);
- pari_printf("\n");
- pari_printf("%Ps\n", strtime(gtos(gsub(getwalltime(), t0))));
- pari_printf("\n");
- return;
- }
Так что в общем можно и просто текст.
Тогда оно оборачивается в фукцию
init_{filename}() само. В этом случае имя файла было
ya-t.gp но минус стал подчеркиванием в тексте на
CЗапуск:
Код:
? init_ya_t()
*** init_ya_t: Warning: increasing stack size to 800000000.
15197
4,427 ms
time = 4,219 ms.
?